В своей заметке Райан Бэйкер делает интересное, хотя очень спорное замечание:
В лиспе код есть данные и данные есть код, но в итоге в лиспе нет синтаксиса, только скобки, тогда как в техже сиподобных языках есть скобки для вызова функции, фигурные — для блоков кода, квадратные — для массивов. Всё это и многое другое делает код более легко делимым на разные смысловые "куски".
Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
P.S. Данный вопрос выглядит интересным, к примеру в свете соседнего обсуждения Смолтолка с его тоже не очень "общепринятым" синтаксисом.
P.P.S. С данным мнением лично я не совсем согласен и меня не пугают горы скобок, да и синтаксис в лиспе присутствует (см. комментарии к заметке), "просто вы не умеете их готовить"
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
К>>"просто вы не умеете их готовить"
VD>Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.
Так никтож не заставляет
Ответь тогда на вопрос — что хотите? 35 лет?
К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
А что, для вас это всё ещё не очевидно? ГРОМАДНОЕ значение.
К>P.P.S. С данным мнением лично я не совсем согласен и меня не пугают горы скобок, да и синтаксис в лиспе присутствует (см. комментарии к заметке), "просто вы не умеете их готовить"
Ключевое слово — "не пугают". А инструмент должен ПОМОГАТЬ, а не "не пугать".
Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".
Здравствуйте, quadrochups, Вы писали:
Q>Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".
Т.е. вы считаете любителей Smalltalk ненормальными? Как вы оценили собственную нормальность?
Q>Ключевое слово — "не пугают". А инструмент должен ПОМОГАТЬ, а не "не пугать".
Q>Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".
Китайский
wo shi xiansheng
Я есть учитель
Японский
watakutsi wa sensei des.
я (указание на то, что я — тема предложения) учителем являюсь
Английский
I am teacher.
Я есть учитель.
Русский
Я учитель.
Какой из приведенных вариантов "нормальный" ?
И если какой-то из них ненормальный, то как может туева хуча людей им пользоваться ?
Здравствуйте, Курилка, Вы писали:
К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
Это ЕДИНСТВЕННОЕ что действительно отличает один язык от другого.
Все остальные отличия, имхо, есть лиш особенности конкретных сред разработки,
как это ни странно звучит.
зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?
Здравствуйте, Mirrorer, Вы писали:
M>Какой из приведенных вариантов "нормальный" ? M>И если какой-то из них ненормальный, то как может туева хуча людей им пользоваться ?
начнем с того, что подавляющее большинство языков программирования базируется на английском языке
Поэтому "нормальный" вариант вроде бы достаточно очевиден — это тот, который соответствует принципу наименьшей неожиданности. Никогда не понимал любителей "птичьей" нотации Ну или китайской, если угодно
Здравствуйте, Курилка, Вы писали:
К>>>"просто вы не умеете их готовить" VD>>Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.
К>Так никтож не заставляет К>Ответь тогда на вопрос — что хотите? 35 лет?
Они 35 лет нехотят Lisp. Это йога такая — нехотеть Lisp. (заговорщически) Слышал, наверное, про "не думать о белой обезьяне"? Так вот, это почти оно.
<< Под музыку: Blackmoore's Night — Play, Minstrel, play >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Дарней, Вы писали:
Д>начнем с того, что подавляющее большинство языков программирования базируется на английском языке Д>Поэтому "нормальный" вариант вроде бы достаточно очевиден — это тот, который соответствует принципу наименьшей неожиданности. Никогда не понимал любителей "птичьей" нотации Ну или китайской, если угодно
Здравствуйте, azzx, Вы писали:
A>Здравствуйте, Курилка, Вы писали:
К>>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
A>Это ЕДИНСТВЕННОЕ что действительно отличает один язык от другого. A>Все остальные отличия, имхо, есть лиш особенности конкретных сред разработки, A>как это ни странно звучит.
Нисколько не единственное, покажи мне замыкания и континьюэйшны на лого?
Конечно в итоге всё к машинным кодам сводится, но программист оперирует понятиями/возможностями конкретного языка, на котором пишет
A>зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?
Может всё любой полный по тьюрингу язык — а толку? Давайте все будем писать на брейнфаке?
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Mirrorer, Вы писали:
M>>Какой из приведенных вариантов "нормальный" ? M>>И если какой-то из них ненормальный, то как может туева хуча людей им пользоваться ?
Д>начнем с того, что подавляющее большинство языков программирования базируется на английском языке Д>Поэтому "нормальный" вариант вроде бы достаточно очевиден — это тот, который соответствует принципу наименьшей неожиданности. Никогда не понимал любителей "птичьей" нотации Ну или китайской, если угодно
А то что русский, на котором ты говоришь, есть далеко не один из простейших языков тебя не смущает?
Вопрос стоит не в пороге вхождения (который может быть немаленьким), а именно удобство использования.
Вот скажи — регулярные выражения с их "птичьим" языком ты используешь?
Здравствуйте, Дарней, Вы писали:
Д>Поэтому "нормальный" вариант вроде бы достаточно очевиден — это тот, который соответствует принципу наименьшей неожиданности.
Оно то конечно да, но почему во все мейнстримовые языки добавили поддержку регулярных выражений ?
Куда уж более птичья вещь, но наверное более понятная и менее подверженная ошибкам чем ручная реализация ДКА ?
Д>Никогда не понимал любителей "птичьей" нотации
Любителей тоже не понимал никогда. не говоря уже о профессионалах [птичьей нотации] .
Но в некоторых случаях птичьи фишки бывают полезными.=
Программу любой сложности можно написать на
Asm, C, C++, J, Lisp, Prolog, Haskell, Forth
Но целесообразно ли каждую задачу решать на одном и том же языке ?
Для общения с китайцами лучше подходит китайский, для общения с русскими — русский.
Конечно, в некоторых случаях есть общий знаменатель (английский, CORBA), но всегда ли он применим ?
Целесообразно ли все болезни лечить при помощи скальпеля ?
Конечно подготовка врачей при этом значительно упрощается. Достаточно 2-хмесячных курсов и специалист готов И такие специалисты будут абсолютно уверены что скальпель наше все ! А прочие инструменты и методики — от лукавого.
[Цитата]
Послушайте!
Ведь, если звезды зажигают —
значит — это кому-нибудь нужно?
Значит — кто-то хочет, чтобы они были?
Значит — кто-то называет эти плевочки
жемчужиной?
(С)
[/Цитата]
Д>Ну или китайской, если угодно
Тем не менее около миллиарда людей вполне довольны
ЗЫ. Disclaimer.
Я НЕ функциональщик.
Мой основной язык по работе — C#.
Но мне нравится смотреть на мир с различных точек зрения.
И если при этом приходится немного вывихнуть мозги — что ж, это делает жизнь только интереснее. Будь то изучение Lisp, Haskell, J или китайского
Здравствуйте, Курилка, Вы писали:
К>В своей заметке Райан Бэйкер делает интересное, хотя очень спорное замечание: К>В лиспе код есть данные и данные есть код, но в итоге в лиспе нет синтаксиса, только скобки, тогда как в техже сиподобных языках есть скобки для вызова функции, фигурные — для блоков кода, квадратные — для массивов. Всё это и многое другое делает код более легко делимым на разные смысловые "куски". К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования? К>P.S. Данный вопрос выглядит интересным, к примеру в свете соседнего обсуждения Смолтолка с его тоже не очень "общепринятым" синтаксисом. К>P.P.S. С данным мнением лично я не совсем согласен и меня не пугают горы скобок, да и синтаксис в лиспе присутствует (см. комментарии к заметке), "просто вы не умеете их готовить"
1. Синтаксис важен тем, что к нему надо привыкать. Так что чем более знакомый синтаксис, тем лучше
2. Синтаксис важет тем, что его нужно помнить и выражать на нём свои мысли: чем более лёгкий синтаксис и чем ближе он к естественным объектам, тем лучше (не в ущерб языку). В частности это значит, что синтаксис должен позволять как можно меньше задумываться над написанием программы, что для lisp несправедливо (судя по вышесказанному, сам на lisp не программировал)
3. Синтаксис может раздражать. Например тем, что от него рябит в глазах и он вообще нечитаемый.
Типа $#tree^&{free-==return new SuperObject&^$*"&@"#^$"*(@^$} (это я просто что попало набрал)
Или, напрмер, разражать тем, что при появлении новой функции нужно лезть в другой файл и объявлять её и там, и в модуле, где она реализуется
4. Чем больше отношений реальных объектов можно выразить посредством читаемой нотации, тем лучше
В общем, синтаксис важен, но ещё более важно, как написаны под язык стандартные библиотеки.
Всё это важно в первую очередь тем, что синтаксис языка непосредственно влияет на мышление программиста и чем меньше он должен сопротивляться этому влиянию (т.е. влиянию мыслить на языке программирования или адаптировать свои мысли под него), тем лучше
Здравствуйте, Курилка, Вы писали:
К>А то что русский, на котором ты говоришь, есть далеко не один из простейших языков тебя не смущает?
А я и не говорил о простоте. Я говорил о привычности.
К>Вопрос стоит не в пороге вхождения (который может быть немаленьким), а именно удобство использования.
Верно. Но не нужно делать порог выше без всякой необходимости.
Если кому-нибудь взбредет в голову создать язык C-Soft, заменив все ключевые слова в C# на наречие племени мумбо-юмбо, а все числа записывая только в тринадцатеричной системе, удобства от этого отнюдь не прибавится. А вот порог вхождения повысится, да еще как
К>Вот скажи — регулярные выражения с их "птичьим" языком ты используешь?
Использую — достойных альтернатив пока нет. Очень хороший пример, кстати.
Писать их очень легко, но читать любые мало-мальски нетривиальные выражения без специальных средств практически невозможно.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Курилка, Вы писали:
К>>А то что русский, на котором ты говоришь, есть далеко не один из простейших языков тебя не смущает?
Д>А я и не говорил о простоте. Я говорил о привычности.
Сишные конструкции тоже не сразу становятся привычными
К>>Вопрос стоит не в пороге вхождения (который может быть немаленьким), а именно удобство использования.
Д>Верно. Но не нужно делать порог выше без всякой необходимости. Д>Если кому-нибудь взбредет в голову создать язык C-Soft, заменив все ключевые слова в C# на наречие племени мумбо-юмбо, а все числа записывая только в тринадцатеричной системе, удобства от этого отнюдь не прибавится. А вот порог вхождения повысится, да еще как
Я говорил о разнице в синтаксисе, которая имеет смысл из каких-либо соображений, из того же удобства каких-то операций и т.п. В том же лиспе скобки из-за единства данных и кода, в форте — из-за стековой организации вычислений. Зачем наречие мумбо-юмбо тебе нужно, я не улавливаю
К>>Вот скажи — регулярные выражения с их "птичьим" языком ты используешь?
Д>Использую — достойных альтернатив пока нет. Очень хороший пример, кстати. Д>Писать их очень легко, но читать любые мало-мальски нетривиальные выражения без специальных средств практически невозможно.
Вот видишь — ты сам себе противоречишь. Привычность в рег. выражениях чуть ли не отрицательная, но удобство на лицо.
Здравствуйте, quadrochups, Вы писали:
Q>Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".
В корне не верно! Читать нужно не "условие :ЕслиДа делать то-то", а "если получатель захочет, то выполнить один код, если что-то другое — другой код, третье — третий". Когда получатель сообщения простой Boolean это частный случай. Подобный подход используется в ST, например, так:
value := aDictionary at: aKey ifAbsent: [...обрабатываем ситуацию...].
сравни с традиционной Java:
V value = aMap.get(key);
if (value == null) {...обрабатываем ситуацию...}
Первый вариант и более короткий и более понятный!
Техника, когда в функцию передаётся продолжение, получающее управление, вместо возврата из функции называется Continuation-passing style (CPS). Так что, за синтаксисом очень часто скрывается некая идея, и говоря "я не считаю нужным приспосабливать мозги под этот синтаксис" ты фактически говоришь "я не желаю ничего знать об этих техниках, и не желаю изучать где они могут применятся, зачем они придуманы". В результате ты не сможеш ни распознать подобные техники в коде, если их кто применит, не сможеш применить их самостоятельно.
Здравствуйте, Mirrorer, Вы писали:
M>Целесообразно ли все болезни лечить при помощи скальпеля ?
Нет, конечно. Но нет смысла делать непривычные рукоятки для скальпеля только для того, чтобы отличиться от конкурентов.
Д>>Ну или китайской, если угодно
M>Тем не менее около миллиарда людей вполне довольны
А это ты зря так думаешь. В китайском огромное количество диалектов, и нередки случаи, когда жители двух соседних областей просто не понимают друг друга. Выручает только письменность, которая унифицирована. Но тут проблема в другом — запоминание всех этих бесчисленных иероглифов требует охренительных затрат времени и сил, так что грамотных людей там не так уж и много.
M>И если при этом приходится немного вывихнуть мозги — что ж, это делает жизнь только интереснее. Будь то изучение Lisp, Haskell, J или китайского
Главное — не синтаксис, главное — идеи. Так что повывихивать мозги над монадами наверно имеет смысл, хотя бы для того, чтобы быть в курсе. А вот вывихивать мозги над 1001-ой инкарнацией оператора if — просто дурь полнейшая.