February 2nd, 2007

(no subject)

В связи с одной частью вот этого поста avva...
Что такое понимание программирования ? Для меня, например, программирование - это прежде всего понятие эстетическое. Тут мы полностью сходимся с Гелернтером, он об этом даже целую книжку написал. Вот, что он говорит в Mirror Worlds: "The software revolution balances ultimately on a fine point of aesthetics."
Так вот, мне кажется, что грань между человеком, способным понять программирование и тем, кто воспринимает программирование как ремесло и способ всегда найти работу, лежит не в способности понять указатели и рекурсию, а в понимании того, что рекурсия - это красиво и эстетично, хотя и не всегда практично, что Лисп красивей, чем С, что ядро ОС писать приятней, чем GUI для Excel'a, что сложный и при этом работающий multithreading - это явление эстетическое, а не просто тяжело отлаживаемая программа. И вот - самое главное сейчас скажу!!! Настоящий программист это тот, кто понимает, что когда из APL убрали все его символы и сделали язык J - это самое отвратительное издевательство, которое только можно себе представить. Вот такой тест на понимание программирования я бы давал в университете.
Да и не надо далеко ходить. Я когда-то даже вёл в Технионе курс APL. Там как раз одни студенты считали, что это очень полезный и интересный курс, а другие говорили - зачем мы тратим своё время на ерунду, лучше будем учить С++ и Джаву, чтобы потом зарабатывать много денег. Но можете не сомневаться, что сегодня первые как раз зарабатывают гораздо больше денег, чем вторые.

Или вот когда в source code в условии if одна скобка с пробелом, а вторая без пробела, или когда вокруг = с одной стороны есть пробел, а с другой нет, или (однажды рассказали - вот он где ужас-то) некий человек называл свои переменные русскими словами в транслите - вот это всё (процитируем Ольшанского) - мерзота и дантовый ад.