Monday, December 13, 2010

И ещё чуть-чуть о программизме.

Ну вот, за две недели нарешал сотню задач на projecteuler.net на Common LISP-е. Вообще говоря, таким способом изучить все возможности языка оказалось совершенно нереально. Может быть, стоит попробовать pythonchallenge попроходить. Оно, конечно, для питонеров, ну да и то лучше. Потому как для projecteuler не требуется ничего, кроме массивов, стеков, хэшей и соображающей головы, набитой уймой математических знаний. К программированию это имеет мало отношения.

Вот. Теперь немного о самом LISP. При исключительно императивном программировании код выглядит... эм... не то чтобы ужасно, но непомерно раздуто. Скажем, доступ к i-му элементу вектора vec записывается как (aref vec i) , а присваивание ему значения a — (setf (aref vec i) a). Однако не стоит думать, что это сказывается на скорости программирования. Отнюдь! Дело в том, что в си-подобных языках при стандартной постановке пальцев очень много работы отводится мизинцу: доступ к элементу массива — [ ], блок кода — {}, присваивание — =, разделение операторов — ; . Поэтому я всегда использую нечто нестандартное, и скорость печати вследствие этого снижается. В LISP же в основном используются только латинские буквы, дефис и чёртова уйма скобочек, так что никакой особой распальцовки не требуется.

А может, я отстал от жизни, и у сегодняшних "программистов" (да-да, в кавычках) наипопулярнейшей комбинацией клавиш является Ctrl-Space. (Об этом меня заставил задуматься тот факт, что вчера на турнире по программированию я решил задачу на Java, не писав на ней до этого ни разу и пользуясь лишь автодополнением, предоставляемым Eclipse.)
Помнится, как-то раз попал в плацкартном вагоне в одно купе с одним
90;аким "программистом". Тот кодил в какой-то конторе уже лет 5 (на C#, ЕМНИП) и тем не менее, как выяснилось, не знал о существовании Python, который сейчас, в общем-то, весьма активно используется в веб-разработке. И при этом (NB!) жаловался, что наскучила ему разработка, понимаешь. Как будто втемяшили себе в голову, что окромя мейнстримовых языков (то бишь "святой троицы" C++, C#, Java) и не существует ничего =/ Брр.