К вопросу о синтаксисе
От: Mamut Швеция http://dmitriid.com
Дата: 22.11.05 11:48
Оценка: 126 (12) +6 :)
Найдено здесь

Now, the same people who criticize the Lisp syntax accept without objection the syntax of the C programming language and similar or worse syntaxes such as those of C++, Java, Perl, etc. These syntaxes are presented as something one just has to learn and get used to, to be part of the elite of real programmers. Any criticism of these syntaxes gets the condescending reply to "get over it" and to accept the possibly admitted quirks the relevance of which is dismissed. Double standard? Certainly. The reproach concerning the syntax of Lisp is usually made by people who have seen it but never tried to use Lisp for anything meaningful. Those who have actually tried Lisp never criticize its syntax; if they try hard enough, they will soon have many valid reproaches to make to Lisp, but these reproaches all concern its semantics.

In the end, when people attack the syntax of Lisp, it is most usually but a rationalization without any technical merit regarding the syntax itself. This rationalization serves to cover up a defense mechanism against a foreign culture. It's a protective reflex against the cost of having to actually learn something new and different.


В цитате вверху заменяем Lisp на С++, Java, Perl, Python, Ruby (и даже Oberon! ) и смысл ее все равно не изменится. Имхо, синтаксис того или иного языка может повлиять только на выбор "а чтобы мне такое изучить" начинающего программиста. Дальше этим языком просто пользуешься, используя все возможности на полную катушку (или не полную — зависит от того, что именно тебе от этого языка надо и от твоих способностей).

Здесь, кстати, как ни странно, прослеживается прямая аналогия с "натуральными" языками. Для многих из нас первым иностранным языком стал английский/французский/немецкий. Да хотя бы и не иностранный, а просто русский в школе. Помните, как плевались на "синтаксис" и все эти мудреные правила? Зато при постоянном использовании вся эта кривая грамматика и семантика и синтаксис и прочая ерунда используется — и ничего. Если надо, и послать можем туда, куда Макар телят не гонял (скажем, шаблоны в С++), а можем и нежно напевать колыбельную ребенку (эээ, делегаты в C#? ). И все это у нас там внутри и, при желании, друг другу не мешает (ага, те самые модули в Обероне )

Зато при попытке выучить очень далекий от германской и романской групп язык (как в моем случае — турецкий), вызывает дикие ломки в организме. Те самые судороги по поводу "синтаксических оверхедов" и "ненужных конструкций" (ага, типа "а зачем нам исключения?") Зато, когда его наконец-то выучишь, понимаешь, что не синтаксис — проблема этого языка, а, например, бедный словарный запас. И начинаешь пользовать этот язык, не отвлекаясь на абстрактные вопросы, типа "зачем во фразе te-am vazut pe tine (рум. я тебя увидел, дословно — 'тебя я увидел тебя') такой синтаксический оверхед " Да потому что так надо Потому что язык так работает. И, раз поняв, как работает тот или иной язык, вопросы о написании такого языка отпадают автоматом.

Язык (любой) — это, имхо, всего лишь средство, "тулза" со своими "инструкциями пользователя" и использовать их надо по назначению. А если несколько средств применимы в той или иной ситуации, то выбирать надо наиболее подходящую. Так как серебрянной отвертки, как и пули, как и ложки, не бывает. Конечно, можно попытаться вкрутить гвоздь, но молоток в этом случае подойдет лучше. Хороший мастер — этот не тот, кто может топором настругать идеальную заготовку из титанового сплава, а тот, кто возьмет станок, прокатный стан и проч. и проч.

ИМХО.
... << RSDN@Home 1.2.0 alpha rev. 619>>


dmitriid.comGitHubLinkedIn
Язык всего лишь одна из граней культуры
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.11.05 14:27
Оценка: 143 (11) +5
Здравствуйте, Mamut, Вы писали:

M>Язык (любой) — это, имхо, всего лишь средство, "тулза" со своими "инструкциями пользователя" и использовать их надо по назначению.


Родной язык -- это не тот язык, на котором ты говоришь. Это язык, на котором ты думаешь. ((С) не помню кто)

Можно выучить турецкий язык. Настолько, чтобы спросить "Который час?". Можно выучить настолько, чтобы суметь поддержать беседу в кофейне. Но на это потребуется уже больше времени. Можно выучить настолько, чтобы сойти за своего. Но... Здесь нужен будет не только язык. Нужно будет еще и раствориться в культуре, в истории, в обычаях, в образе жизни. Сможет ли такой человек писать статьи для местных газет так, чтобы они не выглядели "чужеродными" для местных читателей? Сможет ли он думать на турецком языке, в конце-концов?

Сколько на это уйдет времени? Как много людей смогут сделать это? Смогут ли они достичь такого же уровня, скажем, во французком языке во Франции? А во французком языке в Алжире?

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

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


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

По аналогии с реальными языками, изучение синтаксиса языка программирования -- это всего лишь начало приобщения к культуре программирования на этом языке. Может быть даже самая простая часть этого процесса. Более сложная -- стать своим в чужой среде. Настолько, чтобы твой код не выглядел "чужеродным". На это может потребоваться гораздо больше времени.

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

ИМХО
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.