Re[12]: Перевод статьи Страуструпа
От: LaptevVV Россия  
Дата: 15.01.10 17:56
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Здравствуйте, LaptevVV, Вы писали:


LVV>>Здравствуйте, Mr.Cat, Вы писали:


MC>>>Здравствуйте, LaptevVV, Вы писали:

LVV>>>>>>мощном
LVV>>>>>>Паскаль и С
MC>>>>>Что-то меня смущает в этом сочетании.
LVV>>>>Языки одного уровня...
MC>>>Мне кажется, все три слова вместе как-то не смотрятся.
LVV>>Я не вижу обоснования ни от вас, ни от Шахтера.

Ш>А какие нужны обоснования? То что мерседес лучше жигулей, неужели нужно обосновывать?

А Паскаль или С вы считаете Мерседесом? Или наоборот — жигулями?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[13]: Перевод статьи Страуструпа
От: Mr.Cat  
Дата: 15.01.10 18:59
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:
I>переход к польской записи создает на ровном месте довольно высокий барьер
Инфиксная запись мало кому и мало когда нужна. Например, в жаве есть горстка предопределенных операторов и переопределять для своих классов их нельзя. В c# переопределять можно — только этим мало кто пользуется. По правде говоря, в c++ можно и порой даже пользуются, а в хаскеле так вообще рай для операторолюбов — вот только про последние два ты даже не вспомнил. Сказать почему? Потому что ты инфиксной записью пользуешься раз в сто лет, чтобы дай бог переписать готовую формулу из справочника — а большинство так вообще не пишет ничего сложнее, чем i=i+1. Также не надо забывать, что в природе существуют (никому не нужные) макросы, позволяющие писать инфиксно. И нет, все равно надо плакать и кричать про польскую бяку. Ду да ладно, дело твое. Кстати, по моим ощущениям многие выражения становятся наоборот более читабельными при переходе к префиксной нотации. Например, сложные логические выражения.

Есть еще один момент, о котором я хотел бы упомянуть, но сделаю это позже (если не забуду) — и так дел куча, а я уже задолжал в этой теме нашему коллеге LaptevVV комментарии к "наезду" на C c Паскалем.
Re[13]: Перевод статьи Страуструпа
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.10 19:11
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

VD>>Это чушь. Не удобне, возможно. Но более чем пригоден.

VD>>Что непонятного в:
VD>>
VD>;> (my-func (+ 1 2) (* 3 4))
VD>;>


I>"непригоден для восприятия человеком" польская запись и скобки.


Для справки. Это не польская нотация. В польской нотации как раз скобок нет за ненадобностью. Там операторы идут после операндов.

Что до скобок, то это дело привычки. Я сам их плохо воспринимаю, но понимаю, что ХМЛ читать не проще.
Скорее в Лиспе проблематичным является отсутствие инфиксной нотации и соответственно приоритетов с ассоциативностью.

I>К тому моменту, когда люди начинают учить программирование, они уже имеют за спиной не менее 10 лет использования математики-арифметики, где все записывается вот так — sin(x) + cos(x)


Есть такое дело, но тем не менее при желании привычки можно изменить. Научиться писать десятипальцевым методом тоже не просто, особенно когда за спиной 20 лет тыканья пальцем и возюкания ручкой, но все же это возможно и дает огромные преимущества.

I>переход к польской записи создает на ровном месте довольно высокий барьер


Ну, про "польской записи" я уже сказал.

I>Откуда берется этот барьер ?


I>Из за того, что люди десять лет привыкают к определенной форме записи, способности к чтению выражений, что называется "автоматизированы", т.е. доведены до уровня рефлексов, т.е. если человек увидит такую запись, он прочтет её раньше, чем сможет

I>принять решение читать или не читать.

Люди за 10 лет еще привыкают к алогичном мышлению и много чему еще. Программирование все же к матиматике имеет очень отдаленное отношение. Так что участь программировать можно и немного поменять привычки.

I>если взять чтото посложнее, то сразу возникает проблема


I>(+1 (* 4 3))


I>это выражение человек будет не читать, а преобразовывать в знакомую запись.


А выражение на Хаскеле или ОКамле тоже читать невозможно?
Не, я согласен, что это действительно проблема, но как раз на начальном этапе обучения она ничтожно мала, по сравнению с тем что дает изучение этого языка. Я вот очень жалею, что не изучил его в ранней молодости.

I>Вот по прошествии тех же 10 лет он сможет читать такое так же легко как и 1+4*3 и никак не раньше. Но, вобщем то, родным способом это все равно не станет даже после 20 лет.


Думаю, что полугода будет достаточно.

Проблема в том, что Вузы выпускают совершенно не подготовленных к реальному программированию людей которые быстро и легко прерващаются в серые массы быдлокодеров.

Уж лучше пусть люди ломают привычки, чем терпеть такую ситуацию.

I>Кроме этого нужно еще и бороться со скобками,


Их не больше чем в любой С-программе. Только тип скобок один а не 3. Так что это домыслы.

I>Это другой момент — десять лет люди привыкают читать текст и выражения слева направо сверху вниз и здесь то же самое — текст, записаный как то иначе читать крайне тяжело.


Что?

I>С программами все точно так же, при этом кол.во конструкций на строку должно стремиться к минимуму.


Тебе и не снилось насколько Лисп минималистичен. Это еще один миф.

I>Скобки этот порядок нарушают. Что бы выделить подвыражение, нужно ориентироваться сначала по скобкам, а потом уже прочесть выделенное и все это делается в уме.


Человек владеющий лиспом читает код не хуже того кто читает С. Привычка, да нужна. Но скобки Лиспа — это не просто причуда. Это базис минималистичности и мощьности. За неудобства ты получаешь тандем функционального программирования и метапрограммирования. И это в языке с пятидясителетней историей!!! Только языки последнего десятилетия (Темплэйт-Хаскель и Немерле) подошли к его возможностям (причем все равно есть аспекты по кторым Лисп и сейчас первый).

I>Итого получается слишком много для человека и дальше синтаксиса люди как правило не идут. Потому все достоинства лиспа остаются невостребоваными.


Для обучения — в самый раз. Обучение — это в первую очередь развитие мозга. Уж лучше человек будет ломать голову над непривычным синтаксисом, чем учиться быдлокодить.

I>Т.е. лисп рубит на корню идею распростренения, следовательно его нельзя просто и ненавязчиво показать, передать. Лисп требует подготовленой аудитории, которая

I>1. умеет польскую запись на раз
I>2. имеет опыт чтения программ

Изучение и должно дать этот опыт чтения. При этом оно еще должно дать много полезных навыков. Эти навыки не получить изучая Паскаль или Си.

В общем, то я практически на твоей стороне. Я тоже считаю Лисп не привычным. Более того он динамически типизированный, что несет еще ряд проблем. Потому лично я развиваю Nemerle. Это как раз симбиоз Си, ООП и Лиспа лишенный недостатков Лиспа, но обладающие его достоинствами. Проблема только в том что, он очень молод и за ним не стоит какая-то крупная известная контора.

I>Например заинтересовать какого школьника каким нибудь Питоном очень и очень просто — достаточно показать ему как простецкая строчка решает не конкретное уравнение, а любое уравнение.(разумеется я тут говорю не про дифуры или системы уравнений)


Программист не школьник. Его не нужно заинтересовыать. Он уже выбрал проффеисию и обязан стать проффесионалом в ней. И Лисп (или его более современный аналог) — это неотъемлемая часть арсенала которым должен овладеть хороший программист. Вот без Обероно он переживет (есть масса аналогов). Без Паскля — легко. А без Лиспа и Пролога получится недоучка. По этому хотя бы на базовом уровне (уровне концепций) их нужно преподавать везде.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Перевод статьи Страуструпа
От: Курилка Россия http://kirya.narod.ru/
Дата: 15.01.10 19:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Ikemefula, Вы писали:


VD>>>Это чушь. Не удобне, возможно. Но более чем пригоден.

VD>>>Что непонятного в:
VD>>>
VD>;>> (my-func (+ 1 2) (* 3 4))
VD>;>>


I>>"непригоден для восприятия человеком" польская запись и скобки.


VD>Для справки. Это не польская нотация. В польской нотации как раз скобок нет за ненадобностью. Там операторы идут после операндов.


На самом деле это как раз скорее польская запись, а ты имеешь в виду, судя по всему, обратную польскую запись.
Хотя, в оригинальной польской записи скобок не было, а операторы все бинарные, тогда как для обратной записи можно использовать операторы с произвольной арностью.
Re[15]: Перевод статьи Страуструпа
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.10 22:54
Оценка:
Здравствуйте, Курилка, Вы писали:

К>На самом деле это как раз скорее польская запись, а ты имеешь в виду, судя по всему, обратную польскую запись.


Возможно я путаю прямую и обратную, но польская нотация тем и отличается, что в ней не нужны скобки. Это по сути стек. Так что скобки ему не нужны.

К>Хотя, в оригинальной польской записи скобок не было, а операторы все бинарные, тогда как для обратной записи можно использовать операторы с произвольной арностью.


Ну, да. Потому ее и применяют для описания стеков вычислений.

Лисп же — это немного другое. Лисп использует списки. По идее их можно было бы выражать и в традиционной форме функций:
(f a b)         ->; f(a, b) 
(a (a b) (c d)) ->; a(a(b), c(d))

Может и правда это упростило бы восприятие. Правда, от реальной беды — отсутствия привычной нам записи выражений с приоритетами и ассоциативностью — это все равно не спасло бы. Плюс когда такая запись выражает именно список, то список выглядел бы более чем странно. В прочем можно было бы писать:
list(a, b, c)
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Перевод статьи Страуструпа
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.10 22:57
Оценка:
Здравствуйте, igna, Вы писали:

I>Как же, он предложил сертификацию программ и некоторых программистов.


И сразу же сам признал, что в настоящих условиях — это чушь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Перевод статьи Страуструпа
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.01.10 23:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Для справки. Это не польская нотация. В польской нотации как раз скобок нет за ненадобностью. Там операторы идут после операндов.


Я слегка перепутал. Разницы никакой, все равно это неестественный порядок.

VD>Что до скобок, то это дело привычки. Я сам их плохо воспринимаю, но понимаю, что ХМЛ читать не проще.


В большинстве случаев в XML не нужно вчитываться.

VD>Есть такое дело, но тем не менее при желании привычки можно изменить.


Это желание как то возникает у крайне малого кол.ва людей.

VD>Люди за 10 лет еще привыкают к алогичном мышлению и много чему еще. Программирование все же к матиматике имеет очень отдаленное отношение. Так что участь программировать можно и немного поменять привычки.


Не получится немного поменять, нужно те же 10 лет и это никакой не парадокс.

I>>это выражение человек будет не читать, а преобразовывать в знакомую запись.

VD>А выражение на Хаскеле или ОКамле тоже читать невозможно?

Возможно. Эти языки, кстати, не далеко от лиспа ушли.

VD>Не, я согласен, что это действительно проблема, но как раз на начальном этапе обучения она ничтожно мала, по сравнению с тем что дает изучение этого языка. Я вот очень жалею, что не изучил его в ранней молодости.


Наоборот, на начальном этапе это сильная нагрузка для программиста.

I>>Вот по прошествии тех же 10 лет он сможет читать такое так же легко как и 1+4*3 и никак не раньше. Но, вобщем то, родным способом это все равно не станет даже после 20 лет.


VD>Думаю, что полугода будет достаточно.


Читать так же легко, как обычную запись за полгода не получится. 10 лет практики нельзя ничем заменить и нечем скомпенсировать. Черз полгода все равно будешь переводить в более привычную форму, только этот перевод будет даваться гораздо проще, чем в начале, но до скорости чтения обычной записи будет как до небес.

1+2+3+4+5+6+7+8+9

вот это выражение читается мгновенно, результат чуть дольше. А вот запиши ты это в префиксной и попробуй правильно прочесть.

И другое момент — все книги используют такую запись.

Человек, использующий префиксную запись будет постоянно находиться в ситуации алкоголика-дегустатора, который не хочет бросать работу, но хочет бросить пить

VD>Проблема в том, что Вузы выпускают совершенно не подготовленных к реальному программированию людей которые быстро и легко прерващаются в серые массы быдлокодеров.


Ну с этим я и не спорю, я про лисп говорил.

VD>Их не больше чем в любой С-программе. Только тип скобок один а не 3. Так что это домыслы.


Наоборот, гораздо больше. Простое выражение записать и уже нужны скобки.
Все претензии к лиспу в основном из за префиксной записи и скобок.

I>>Это другой момент — десять лет люди привыкают читать текст и выражения слева направо сверху вниз и здесь то же самое — текст, записаный как то иначе читать крайне тяжело.


VD>Что?


??? Там дальше вроде как разъяснения были.

I>>С программами все точно так же, при этом кол.во конструкций на строку должно стремиться к минимуму.

VD>Тебе и не снилось насколько Лисп минималистичен. Это еще один миф.

Минималистичность должна читаться на раз.

VD>Человек владеющий лиспом читает код не хуже того кто читает С. Привычка, да нужна. Но скобки Лиспа — это не просто причуда. Это базис минималистичности и мощьности.


Я понимаю, для чего они нужны. Но дело в том, что для обучения это пожнимает входной барьер помимо префиксной записи.

>За неудобства ты получаешь тандем функционального программирования и метапрограммирования. И это в языке с пятидясителетней историей!!!


Эта пятидесятилетняя история показывает, что люди не готовы в массе ломать привычки. Т.е. нужно принять как условие этот фактор. Лисперы это почемуто упорно игнорируют.

>Только языки последнего десятилетия (Темплэйт-Хаскель и Немерле) подошли к его возможностям (причем все равно есть аспекты по кторым Лисп и сейчас первый).


Это показывает, что мощность языка не сильно то и востребована.

I>>Итого получается слишком много для человека и дальше синтаксиса люди как правило не идут. Потому все достоинства лиспа остаются невостребоваными.


VD>Для обучения — в самый раз. Обучение — это в первую очередь развитие мозга. Уж лучше человек будет ломать голову над непривычным синтаксисом, чем учиться быдлокодить.


Это уже устаревший подход. Сейчс отказываются, во первых, от лиспа. Во вторых, функциональное программирование сдвигается с начальных курсов на старшие и даже предвыпускные семестры.

VD>Изучение и должно дать этот опыт чтения. При этом оно еще должно дать много полезных навыков. Эти навыки не получить изучая Паскаль или Си.


Для чего нужен паскаль, не знаю. Си нужен для понимания виртуальной машины. Это одна из причин по которой в стенфорде перешли недавно на обучение программированию на языке Си.
Каково ?

VD>В общем, то я практически на твоей стороне. Я тоже считаю Лисп не привычным. Более того он динамически типизированный, что несет еще ряд проблем. Потому лично я развиваю Nemerle. Это как раз симбиоз Си, ООП и Лиспа лишенный недостатков Лиспа, но обладающие его достоинствами.


С Немерле этот самый симбиоз есть палка о двух концах. Известно из психологии, что похожесть может вызывать не только притяжение, но и сильное отторжение в зависимости от того, какие именно нестыковки.

VD>Программист не школьник. Его не нужно заинтересовыать. Он уже выбрал проффеисию и обязан стать проффесионалом в ней. И Лисп (или его более современный аналог) — это неотъемлемая часть арсенала которым должен овладеть хороший программист. Вот без Обероно он переживет (есть масса аналогов). Без Паскля — легко. А без Лиспа и Пролога получится недоучка. По этому хотя бы на базовом уровне (уровне концепций) их нужно преподавать везде.


На уровне концепций он преподается, но вот позиции утрачивает, глядя например на смену курса в мит и стенфорде.
Re[14]: Перевод статьи Страуструпа
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.01.10 23:27
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, Ikemefula, Вы писали:

I>>переход к польской записи создает на ровном месте довольно высокий барьер
MC>Инфиксная запись мало кому и мало когда нужна.

Открой книгу по математике да посмотри. Вообще любую книгу где есть мало мальски формул разных.

>В c# переопределять можно — только этим мало кто пользуется.


Пользуются там, где это действительно требуется.

>Потому что ты инфиксной записью пользуешься раз в сто лет, чтобы дай бог переписать готовую формулу из справочника — а большинство так вообще не пишет ничего сложнее, чем i=i+1.


Не раз в сто лет, а примерно каждый рабочий день. Ты эту инфиксную запись видишь так же часто просто не замечаешь этого.

>Также не надо забывать, что в природе существуют (никому не нужные) макросы, позволяющие писать инфиксно. И нет, все равно надо плакать и кричать про польскую бяку. Ду да ладно, дело твое. Кстати, по моим ощущениям многие выражения становятся наоборот более читабельными при переходе к префиксной нотации. Например, сложные логические выражения.


Это и ежу понятно, только пока ты получишь этот бонус, нужно взять и поломать привычки. На это способны крайне малое кол.во людей, при чем с возрастом это дело ухудшается.

Что бы в корне сломить ситуацию, нужно лисп давать детям, чем раньше, тем лучше. ВОзможно даже и не лисп. а нечто для вычисления всяких выражений в виде с префиксной записью.
Но здесь нужны преподаватели, а где их взять ? получается, замкнутый круг. И средств разорвать его нет, нужны или мега-энтузиасты или решения министерства, которое некму будет убедить.

Вот с питоном все проще — школьник сам легко заинтересуется.
Re[15]: Перевод статьи Страуструпа
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.10 23:42
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Я слегка перепутал. Разницы никакой, все равно это неестественный порядок.


Это порядок вызова функции и описания списков. Для 90% задач он самый что ни на ест привычный. Просто ты не привык смотреть на него как на код.

I>В большинстве случаев в XML не нужно вчитываться.


Да ну? А зачем он тогда нужен?

VD>>Есть такое дело, но тем не менее при желании привычки можно изменить.


I>Это желание как то возникает у крайне малого кол.ва людей.


Ну, вот программировать на С++ приходится многим. При этом уродства в языке выше крыши. Но многие даже хвалят их. Почему? Да потому, что это модный тренд и его всюду суют. А лисп по иронии судьбы всю жизнь считали языком ИИ. А зачем нам ИИ?

I>Не получится немного поменять, нужно те же 10 лет и это никакой не парадокс.


10 лет не так много.

I>1+2+3+4+5+6+7+8+9


I>вот это выражение читается мгновенно, результат чуть дольше. А вот запиши ты это в префиксной и попробуй правильно прочесть.


(+ 1 2 3 4 5 6 7 8 9)

VD>>Проблема в том, что Вузы выпускают совершенно не подготовленных к реальному программированию людей которые быстро и легко прерващаются в серые массы быдлокодеров.


I>Ну с этим я и не спорю, я про лисп говорил.


Человек серьезно освоивший Лисп быдлокодить уже не будет.
Это лучший экзамен на соответствие профессии.

I>Наоборот, гораздо больше. Простое выражение записать и уже нужны скобки.

I>Все претензии к лиспу в основном из за префиксной записи и скобок.

Это заблуждение. Люди не понимаю лисп по соврешенно другим причинам. В нем нужно по другому думать. Это куда сложнее чем просто синтаксис выучить.

I>>>С программами все точно так же, при этом кол.во конструкций на строку должно стремиться к минимуму.

VD>>Тебе и не снилось насколько Лисп минималистичен. Это еще один миф.

I>Минималистичность должна читаться на раз.


Чушь. Отличный пример — Брэйнфак.

I>Я понимаю, для чего они нужны. Но дело в том, что для обучения это пожнимает входной барьер помимо префиксной записи.


Поднимает? Ну, и здорово. Все быдло сразу будет отсеяно и пойдет заниматься своими прямыми обязанностями — мести пол.

I>Эта пятидесятилетняя история показывает, что люди не готовы в массе ломать привычки. Т.е. нужно принять как условие этот фактор. Лисперы это почемуто упорно игнорируют.


Я согласен, что люди не готовы ломать привычки. Но есть разные факторы. Вот скажем Nemerle в разы мощнее F#-а, так как имеет макросистему. Кроме того у Nemerle так самая привычная С-шная нотация. Но МС вложил смешные деньги в F# и многие уже бегают и подроливают "зачем нужен Nemerle если есть F#?...".

Теория с синтаксисом 100%-но не сработала на этом примере. По крайней мере для ряда товарищей.

>>Только языки последнего десятилетия (Темплэйт-Хаскель и Немерле) подошли к его возможностям (причем все равно есть аспекты по кторым Лисп и сейчас первый).


I>Это показывает, что мощность языка не сильно то и востребована.


Ага! Вот это и есть нонсенс! В то время когда рядом есть шагающие экскаваторы и белазы люди с упорством достойным лучшего применения роют котлованы лопатами.

Беда отрасли в том, что она сама отбрасывает хорошее и выбирает дерьмо. А уж почему это происходит — вопрос десятый.

VD>>Для обучения — в самый раз. Обучение — это в первую очередь развитие мозга. Уж лучше человек будет ломать голову над непривычным синтаксисом, чем учиться быдлокодить.


I>Это уже устаревший подход. Сейчс отказываются, во первых, от лиспа. Во вторых, функциональное программирование сдвигается с начальных курсов на старшие и даже предвыпускные семестры.


Сейчас? Акстись. Сейчас у нас учат программировать на Паскале начала 90-ых годов. А мир заваливается индусами (по сути, а не по крови).

I>Для чего нужен паскаль, не знаю. Си нужен для понимания виртуальной машины. Это одна из причин по которой в стенфорде перешли недавно на обучение программированию на языке Си.

I>Каково ?

Какой еще виртуальной машине?
Что до стенфорда, то через 10 лет посмотрим имеет ли в этом смысл.

I>С Немерле этот самый симбиоз есть палка о двух концах. Известно из психологии, что похожесть может вызывать не только притяжение, но и сильное отторжение в зависимости от того, какие именно нестыковки.


А задача не в том, чтобы создать что-то на что-то похожее. А создать что-то удобное на практике. На мой взгляд это почти удалось. Хотя развиваться еще есть куда.

I>На уровне концепций он преподается, но вот позиции утрачивает, глядя например на смену курса в мит и стенфорде.


Меня стенфорд и МИТ мало интресуют. Они и сотой доли программистов не выпускают. Проблемы в отрасли не в этих элитных вузах. Проблемы в общем уровне преподавания и учеников.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Перевод статьи Страуструпа
От: Mr.Cat  
Дата: 15.01.10 23:44
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:
I>ВОзможно даже и не лисп. а нечто для вычисления всяких выражений в виде с префиксной записью.
Ты слишком много значения придаешь синтаксису, причем не в самой значительной части (префиксность/инфиксность — причем никто не мешает в лиспах пользоваться макрами для инфиксной записи).
Вот у apl (ну или j) — да, девиантный синтаксис, а все эти лиспы с питонами — они больше парадигмами различаются, чем синтаксисом.
Re[16]: Перевод статьи Страуструпа
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.01.10 00:48
Оценка:
Здравствуйте, VladD2, Вы писали:

I>>Я слегка перепутал. Разницы никакой, все равно это неестественный порядок.


VD>Это порядок вызова функции и описания списков. Для 90% задач он самый что ни на ест привычный. Просто ты не привык смотреть на него как на код.


С функциями гораздо проще

I>>В большинстве случаев в XML не нужно вчитываться.


VD>Да ну? А зачем он тогда нужен?


Читать нужно, но во первых, практически всегда есть средства которые избавляют от основной нагрузки.

VD>Ну, вот программировать на С++ приходится многим. При этом уродства в языке выше крыши. Но многие даже хвалят их. Почему? Да потому, что это модный тренд и его всюду суют. А лисп по иронии судьбы всю жизнь считали языком ИИ. А зачем нам ИИ?


Уродство замечаешь только поработав на нем хотя бы год-другой.На входе С++ достаточно легок, сужу по студентам с которыми имею дело. Если хорошая сишная база, то, как правило, нужно объяснять только контейнеры, итераторы, потоки и тд.

I>>Не получится немного поменять, нужно те же 10 лет и это никакой не парадокс.

VD>10 лет не так много.

За это время многие успевают поработать программистами и уйти в другую область или уйти повыше в должности.
Т.е. распространение хромает очень сильно.

I>>вот это выражение читается мгновенно, результат чуть дольше. А вот запиши ты это в префиксной и попробуй правильно прочесть.


VD>(+ 1 2 3 4 5 6 7 8 9)


Я там пропустил знаки, хотел + и — чередовать, но поспешил

VD>Человек серьезно освоивший Лисп быдлокодить уже не будет.


Быдлокодер это тот, кто вообще несерьезно относится к работе. Такие в лисп никогда не попадут. Потому это заслуга не лиспа. Барьер в Лисп берут именно серьезные люди.

VD>Это лучший экзамен на соответствие профессии.


А толку то ?

Из за высокого потолка резко сужается количество людей, которые 1 могут учить других людей
2 могут привлекать людей

т.е. преподаватели и евангелисты. А это значит

Вот, например, хороший пример, когда банда Грэхема ушла из Яхи. Яхе пришлось переписать код Грэхема.
Что это значит ? Это значит, что Грэхем написал одноразовый код. Формально это не быдлокод, но поступить с ним иначе, как с быдлокодом, нельзя было.

Потому в тестировании на соответсвтие профессии нужно обязательно учитывать способность создавать результат, который будет жизнеспособен и при смене разработчкиа.

I>>Все претензии к лиспу в основном из за префиксной записи и скобок.


VD>Это заблуждение. Люди не понимаю лисп по соврешенно другим причинам. В нем нужно по другому думать. Это куда сложнее чем просто синтаксис выучить.


Большинство срубается уже на синтаксисе. Без синтаксиса, который читается на раз, можно забыть про все преимущетсва языка.

I>>Минималистичность должна читаться на раз.

VD>Чушь. Отличный пример — Брэйнфак.

А помоему это птичий язык

VD>Поднимает? Ну, и здорово. Все быдло сразу будет отсеяно и пойдет заниматься своими прямыми обязанностями — мести пол.


Это значит, что будет меньше тех, кто сможет учить языку, будет меньше тех, кто сможет распространять язык и это значит, что индустрия все равно возьмет под свои нужны отсеяный контингент.
Для чего отсеивать, если индустрия все равно его хавает ?

VD>Я согласен, что люди не готовы ломать привычки. Но есть разные факторы. Вот скажем Nemerle в разы мощнее F#-а, так как имеет макросистему. Кроме того у Nemerle так самая привычная С-шная нотация. Но МС вложил смешные деньги в F# и многие уже бегают и подроливают "зачем нужен Nemerle если есть F#?...".


Микрософт никогда не вложится в Немерле, на мой взгляд, по крайней мере, пока будет жив C#, потому что такой язык создаст внутреннюю конкуренцию из за синтакиса.
А вот F# от этого недостатка избавлен.

VD>Теория с синтаксисом 100%-но не сработала на этом примере. По крайней мере для ряда товарищей.


Ну еще рано говорить. Я помню где то лет пять лет(могу ошибиться) назад ктото говрил, что через пять лет Немерле будет ого-го как круто распространет.
Что имеем на данный момент ? Историй успеха вобщем то почти и не прибавилось.

>>>Только языки последнего десятилетия (Темплэйт-Хаскель и Немерле) подошли к его возможностям (причем все равно есть аспекты по кторым Лисп и сейчас первый).


VD>Ага! Вот это и есть нонсенс! В то время когда рядом есть шагающие экскаваторы и белазы люди с упорством достойным лучшего применения роют котлованы лопатами.


Где то востребована. Но если посмотреть, то окажется, что бОльшая часть программистов С++ даже шаблонов не знает, а в C# многие до фич даже 2.0 как то недобрались.

VD>Беда отрасли в том, что она сама отбрасывает хорошее и выбирает дерьмо. А уж почему это происходит — вопрос десятый.


Как часто водится — хорошие герои никак дерьмо побороть не могут.

Если ты хочешь, что бы через год кол.во Немерлистов прибавилось на n тыщ человек, нужно сделать так, что бы языком можно было заинтересовать на раз.

Например так — бродил по инету, увидел решение задачи, начал читать пример, разобрался и только потом понял, что язык это другой. У меня, например, так было с языком си и питоном. Я их не учил специально. Попробовал один пример, попробовал другой и как то само пошло дальше, правда от питона я отошел позже.

А если все будет по коммунистически "ребята, вот отличный иснтурмент, называется Немерле, в нем можно писать как на C# но с макросами и функциональщиной"...
Вобщем здесь выбор не велик а макросами обмануть людей не получится.

I>>Это уже устаревший подход. Сейчс отказываются, во первых, от лиспа. Во вторых, функциональное программирование сдвигается с начальных курсов на старшие и даже предвыпускные семестры.


VD>Сейчас? Акстись. Сейчас у нас учат программировать на Паскале начала 90-ых годов. А мир заваливается индусами (по сути, а не по крови).


Именно что сейчас. Посмотри например на Мит и Стенфорд те же.

I>>Каково ?


VD>Какой еще виртуальной машине?


Имеется ввиду компьютер.

VD>А задача не в том, чтобы создать что-то на что-то похожее. А создать что-то удобное

на практике. На мой взгляд это почти удалось. Хотя развиваться еще есть куда.

Твой взгляд тут наименее ценный. Дай студентам второго-третьего курса немерле и питон. Пообещай каждому, кто хоть чтото напишет за два-три часа хучь на чем хучь чтото например 1000 баксов
Если не дай бог Немерле сольет питону, ждать бОльшей доли просто смысла не имеет.

Конечно, давать деньги идея дикая, но как то нужно замерить, какой из двух инструментов изберет контингент при наличии свободы выбора.
Re[16]: Перевод статьи Страуструпа
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.01.10 00:55
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Ты слишком много значения придаешь синтаксису, причем не в самой значительной части (префиксность/инфиксность — причем никто не мешает в лиспах пользоваться макрами для инфиксной записи).


Не я придаю. 50 лет истории лиспа демонстрируют важность синтаксиса. Пока ты не начнешь читать постиксную запись так же легко, как и инфиксную, про лисп можешь забыть.

могу показать тебе на твоем же примере, но только за деньги, что бы более предметно.

Ошибки в инфиксной записли оплачиваю я, ошибки в постфиксной оплачиваешь ты. разницу во времени тоже придется оплатить аналогичным образом.

нужно найти хорошего подопытного кролика и его заинтересовать материально.

MC>Вот у apl (ну или j) — да, девиантный синтаксис, а все эти лиспы с питонами — они больше парадигмами различаются, чем синтаксисом.


лисп от питона отличается как табуретка от бегемота.
Re[17]: Перевод статьи Страуструпа
От: Mr.Cat  
Дата: 16.01.10 02:02
Оценка: 1 (1) +1 -1
Здравствуйте, Ikemefula, Вы писали:
I>Не я придаю. 50 лет истории лиспа демонстрируют важность синтаксиса.
I>лисп от питона отличается как табуретка от бегемота.
Синтаксис синтаксисом, но префиксность/инфиксность тут совершенно побоку.
Мне вдруг подумалось, что то, что тебе кажется господством префиксной записи — на самом деле — нечто иное, а именно — вот что:
1. Программа на лиспе должа быть записана в виде т.н. внешенего представления структуры данных ("external representation" — т.е. текстовое представление структуры данных, пригодное для чтения и машиной, и человеком) — как правило — списка.
2. Ридер (часть компилятора/интерпретатора, считывающая текст и превражающая его в структуру данных) минималистичен и часто нерасширяем.
3. Lisp way считается придерживаться концепции "(операция операнды)".

Таким образом, для работы над семантикой кода используются макросы — а стиль синтаксиса остается простым, как пробка. Можно спорить, что усложнение синтаксиса ведет повышению выразительности языка. Но усложнение синтаксиса — не есть lisp way. Lisp way — это повышение выразительности за счет повышения "семанитической емкости" простых синтаксических конструкций, если так можно выразиться.

Для тех, кто продолжает спорить насчет повышения выразительности за счет усложнения синтаксиса — приведу несколько примеров.
Первое — дизайн конструкций языка. Вот как выглядит условный оператор:
(if condition
    then-branch
    else-branch)

Вот оно самое первое правило синтаксиса — (операция операнды). Как видим, нет ключевого слова "else" между альтернативными ветками. Аналогичным образам дизайнятся и другие контрукции языка. Вот, например, паттерн-матчинг:
(match expr
       (pattern branch)
       (pattern branch)
       ...)

Тут впору обратить внимание на второе правило синтаксиса — иерархия и группировка выражений. Матчинг состоит из списка (верхний уровень иерархии) пар (группировка) выражений — паттерна и его "ветки (или клоза, как пишут в fprog.ru)" (нижний уровень иерархии). Исходя из этого, условный оператор можно воспринимать как группу из трех выражений.
Понятное дело, что все это должно быть читаемым в отсутствии избыточной пунктцации — поэтому третье правило синтаксиса — индентируй. Существуют простые общепринятые правила расстановки отступов, со следованием которым прекрасно справляется любой редактор кода. Например, в сложной конструкции выражения одного уровня иерархии стоит располагать друг под другом.

С этой точки зрения, синтаксис лиспа уже можно считать непривычным, согласен. Но дело никак не в префиксности. Ну просто никаким боком.

I>могу показать тебе на твоем же примере, но только за деньги

О как тебя понесло-то.
Re[15]: Перевод статьи Страуструпа
От: FR  
Дата: 16.01.10 06:51
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:


VD>>А выражение на Хаскеле или ОКамле тоже читать невозможно?


I>Возможно. Эти языки, кстати, не далеко от лиспа ушли.


Эти языки гораздо ближе к рекламируемой тобой привычной математической нотации чем
сиобразные или паскаль.
Re[4]: Перевод статьи Страуструпа
От: igna Россия  
Дата: 16.01.10 09:03
Оценка: 1 (1) +2
Здравствуйте, VladD2, Вы писали:

VD>И сразу же сам признал, что в настоящих условиях — это чушь.


Так скорее всего Страуструп и не собирался ничего предлагать, а просто хотел вывести C++ из-под обвинения в том, что на последнем слишком часто, чаще чем на других языках, пишут плохой код. Мол, с языком все в порядке, это программы и программисты у вас несертифицированные. К сожалению Страуструп оказался одним из тех, кто не может критично относиться к результатам своего труда, и жизнь его похоже давно уже превратилась ожесточенную в борьбу за C++. Невзирая и несмотря.
Re[16]: Перевод статьи Страуструпа
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.01.10 09:54
Оценка:
Здравствуйте, FR, Вы писали:

VD>>>А выражение на Хаскеле или ОКамле тоже читать невозможно?


I>>Возможно. Эти языки, кстати, не далеко от лиспа ушли.


FR>Эти языки гораздо ближе к рекламируемой тобой привычной математической нотации чем

FR>сиобразные или паскаль.

Ну и что ? У них другие проблемы.
Re[18]: Перевод статьи Страуструпа
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.01.10 10:27
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Синтаксис синтаксисом, но префиксность/инфиксность тут совершенно побоку.


Как ты собираешься распространять знания о лиспе, мне не ясно.
Питоном, например, очень легко заинтересовать — ткнуть пальцем в небольшой кусочек кода и человек уже начинает чтото понимать.

В лиспе такого не может быть в принципе и как раз из за префиксной записи.


MC>Мне вдруг подумалось, что то, что тебе кажется господством префиксной записи — на самом деле — нечто иное, а именно — вот что:


А мне вдруг подумалось что бы говоришь про чтото свое, наболевшее.

MC>Таким образом, для работы над семантикой кода используются макросы — а стиль синтаксиса остается простым, как пробка.


Простой это не значит что правила простые. Простой это значит для восприятия, с учетом человеческой психологии. А если там вариантов скобок мало, это не значит, что простой.

>Можно спорить, что усложнение синтаксиса ведет повышению выразительности языка. Но усложнение синтаксиса — не есть lisp way. Lisp way — это повышение выразительности за счет повышения "семанитической емкости" простых синтаксических конструкций, если так можно выразиться.


Для начала язык должен гарантировать, что его конструкции легко, привычно читаемы, а уже потом нужно думать про повышение сементической емкости.

MC>Для тех, кто продолжает спорить насчет повышения выразительности за счет усложнения синтаксиса — приведу несколько примеров.


эти примеры не к месту.
...
MC>С этой точки зрения, синтаксис лиспа уже можно считать непривычным, согласен. Но дело никак не в префиксности. Ну просто никаким боком.

Синтаксис питона становится привычным в первый же день. Вот и все.

Если ты знаешь/пишешь на лиспе и сам считаешь синтаксис непривычным, это значт, что синтаксис этот просто дерьмо и для восприятия человеком непригоден.

Речь про префиксную запись была в конкретном контексте, ты его упустил а теперь чего то сам себе доказываешь.

Если школьник, студент, начинающий разработчик, которые никогда не видели лиспа увидят код для решения знакомой задачи, они вряд ли заинтересуются.

С питоном тем же все обстоит ровно наоборот.

И эта разница обеспечивается префиксной записью и скобками. Потому что про более сложное говорить уже не приходится.

Все что дальше уже неважно. А вот с опытными разработчиками дело обстоит совсем иначе, они уже ищут мощный инструмент и хорошо понимают, что им может деть синтаксис. Это не спасает, такой массы хватает лишь на поддержание лиспа на плаву.

I>>могу показать тебе на твоем же примере, но только за деньги

MC>О как тебя понесло-то.

Нормальная вещь — находим кролика, тестируем и оплачиваем эту работу. Большой бюджет не нужен, хватит например 100-150$ с проигравшего. Можно и без денег, но тебе придется хорошо поработать и не обманывать в тесте Поскольку ты заинтересованое лицо я полностью доверять не могу, если ты будешь тестируемым.
Re[17]: Перевод статьи Страуструпа
От: FR  
Дата: 16.01.10 10:46
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Ну и что ? У них другие проблемы.


С читабельностью у них проблем нет, не хуже питона.
Re[18]: Перевод статьи Страуструпа
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.01.10 10:49
Оценка:
Здравствуйте, FR, Вы писали:

I>>Ну и что ? У них другие проблемы.


FR>С читабельностью у них проблем нет, не хуже питона.


Я с этим сильно не согласен. Кроме того, у хаскеля кривая входа слишком крутая.
Re[19]: Перевод статьи Страуструпа
От: FR  
Дата: 16.01.10 11:09
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Я с этим сильно не согласен. Кроме того, у хаскеля кривая входа слишком крутая.


Обоснуй первое предложение, хаскель согласен крутоват.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.