Эсперанто
Как-то утомляет уже слушать восхваления до небес тех языков программирования, с которыми работают люди, их восхваляющие (а зачастую — и не знающих других языков). Складывается ощущение, что задача начинает зависеть от инструмента ее выполнения. И это недалеко от истины, если за дело берется такой фанатик, не признающий никаких альтернатив.
А мне всегда нравилось копать языки и просто сравнивать их возможности в решении разных классов задач. Там, где одно представляется сложным, легко решается другое. Где-то строгость ограничивает, но зато не допускает вольностей в коде — зато гибкость, например, типизации, или стиль прототипного программирования радует своими выкрутасами. Даже искусственные языки, недавно родившиеся, где абсолютно каждая функция следует правилам наименования в самой лучшей форме — даже они прекрасны.
Да даже черт с тем, что знание нескольких языков разработки дает возможность поработать в разных отраслях и помогает лучше понять, чем же ты занимаешься на самом деле. Некоторые языки — просто клевое развлечение (вроде Ook), хотя бывают и довольно серьезные штуки (но такие же непрактичные — хотя я так и не понял, как в этот список записался в меру полезный в учебных целях Delphi).
Хотя, конечно, «клевое» оно только для программиста. Я не думаю, например, что моя страсть к Лиспу (вот наткнулся на куцую полупустую страничку и разрыдался) будет понятна всем. Да она и мне не до конца понятна.
(defun sortmax (l)
(cond
((not (listp l)) nil)
((null l) nil)
(T (cons (car (maxlist l)) (sortmax (cdr (maxlist l))) ) )
)
)
Писал в универе, а за душу до сих пор берет.
(defun prohod (lst obj)
(cond
((null lst) nil)
((atom (car lst)) (append
(when (equal (car lst) obj) (list (cdr lst)))
(prohod (cdr lst) obj)
)
)
(T (append (prohod (car lst) obj) (prohod (cdr lst) obj)))
)
)
(defun prohod (lst obj &OPTIONAL flag)
(let ( (i 0) (j 0) (result nil) )
(loop
(cond
((and (= i (length lst)) (null flag))
(return
(let ((vrem result) (s 0) (real-result (make-array (length result))))
(loop
(cond ((= s (length result)) (return real-result)))
(setf (aref real-result s) (car vrem))
(setq vrem (cdr vrem))
(setq s (1+ s))
)
)
)
)
((and (= i (length lst)) flag) (return result))
)
(if (arrayp (aref lst i))
(setq result (append result (prohod (aref lst i) obj T)))
(and (equal (aref lst i) obj)
(setq result
(append result (list
(let ((k (1+ i)) (l 0) (result2 nil))
(loop
(cond ((= k (length lst)) (return result2))
((= l 0) (setq result2 (make-array (- (length lst) i 1))))
)
(setf (aref result2 l) (aref lst k))
(setq l (1+ l))
(setq k (1+ k))
))
)
)
)
(setq j (1+ j))
)
)
(setq i (1+ i))
)
)
)
А больше всего возбуждает то, что, чем ближе задача к решению списками — тем меньше кода, усилий и шире радостная улыбка идиота на лице.
Впрочем, я думаю, что точно так же не смогу ощутить оргазм от найденных 52 копеек в отчете или даже самолично проданного фена.
А вот этой самой энциклопедии языков программирования можно прочить большое будущее — если она вызывает столько ностальгии и радости. Хотя не хватает подробных описаний синтаксиса и всего-всего, что для программиста как красная тряпка.




Статья по ссылке (12 языков, на которых невозможно программировать) — ересь :)
Говорить, что дельфи убило появление вижуал бейсика и .Net...
Или что там про PowerBuilder...
Языки правда есть подходящие для каждой конкретной задачи. Я вот на Prolog, Delphi, C++, C#, PHP, Perl пишу... Ну, и на бейсике приходилось — его пропустить было бы сложно в жизни ^^
И PowerBuilder тоже в той же кучке... Есть решения, которые им можно мгновенно реализовать.
Ой, забыл ещё COOL и G2 — тоже ковырялся ^^
Из этого НЕНАВИСТЬ вызывает C# и Perl (из-за кривизны), любовь — PHP (из-за синтаксиса и библиотек), сожаление — Delphi (чудные были продуманные компоненты, лучшая среда разработки, только паскальный синтаксис — не фонтан. Жалко, что умерла.)
А вот некроязыки вроде пролога или лиспа действительно вызывают некий священный трепет... Хочется встать на колени пред священной распечаткой кода, и попытаться — не понять, но ПОВЕРИТЬ в этот код...
Вспомнил в тему
==
топик: Нужны ли программисту на Java/C++/C# хорошие знания матана/дискретки/диффуров?
Если вы захотите написать движок для трехмерной игры, скажем, на php, то вам обязательно потребуется знания математики.
Если вы захотите написать движок для трехмерной игры, скажем, на php, то для начала вам потребуется психиатр.
@Jehy: да, последнюю цитату я где-то видел %)
Полный бред по ссылке о 12ти языках.
Автор не смог осилить Хаскель, что неудивительно, и теперь пишет, о непригодности этого языка, хотя на нем существуют реальные работающие приложения.
Что касается лиспа, то, если интересно, советую посмотреть Common Lisp, один из самых распространенных и богатых на библиотеки диалектов или Scheme.
Прочитать
Structure and Interpretation of Computer Programs