Язык программирования --- это на 90% его библиотеки |
[Jul. 1st, 2008|10:11 pm] |
И это, на самом деле, ужасно.
Вот, например, очень хочется написать что-нибудь на Scheme, чтобы получше узнать этот замечательный язык — но, например, приличной библиотеки для создания GUI к этому языку нет ни одной, работа с сетью и тредами, а также интеграция в C-шный код нормально сделана, afaik, только в Guile, который знатоки и ценители ругают последними словами, со средствами веб-программирования тоже беда... и это сильно усугубляется несовместимостью библиотек для различных интерпретаторов, конечно. В итоге для решения любой реальной задачи куда проще схватиться за "индустриальные стандарты": C++/Qt4, JavaScript, Python или Erlang.
Единственная, кажется, нужная на практике софтина, которая не требует почти никаких внешних библиотек и при этом просто создана для Scheme, уже написана. На Scheme, что интересно. И написана настолько хорошо, что человек моей квалификации вряд ли способен что-то хорошее и действительно полезное в неё добавить: это LilyPond.
Нет, конечно, от Схемы и так большая польза: например, в JavaScript очень тяжело жить без замыканий, но вряд ли бы я научился использовать их в JavaScript, не познакомься я с этим приёмом сначала в Схеме с её фантастически прозрачным синтаксисом. Возможности питоновской lambda я бы тоже вряд ли увидел без знания Схемы, наверное. Но хочется-то большего.
Например, участие в большом проекте на Scheme, скорее всего, избавило бы меня от иллюзий. Я не мог нарадоваться на Питон, пока не пропробовал написать на нём действительно большую программу и не уткнулся носом в ряд уродливых неочевидностей и нелогичностей. Я думал, что знаю C++, пока не вынужден был влезть в разработку проекта на C++ в несколько десятков тысяч строк кода (с короткой, но бурной историей, н-да), после чего мне пришлось, по сути, заново учить этот язык. И, кстати, на собственной шкуре убеждаться в истинности утверждений, которые умные люди твердят не первый десяток лет: "явное управление памятью — для красноглазых подростков, человек, которому нужна программа, а не процесс её написания, с самого начала будет использовать язык с автоматической сборкой мусора", "объектный язык без развитой метаобъектной системы можно сразу выбрасывать в помойку", "шаблоны проектирования (design patterns) — маразм и бюрократия, но в ООП без них нельзя", "шаблоны (templates) рулят", "юзайте средства автодокументирования", "юзайте системы контроля версий", "убивайте тех, кто не использует средства автодокументирования и системы контроля версий", "C годится только для написания операционных систем, C++ не годится вообще ни для чего"… о десятом правиле Гринспуна я уже не говорю (наблюдательный человек уже заметил, что перечисленный мной набор мудростей состоит из следствий десятого правила Гринспуна чуть более, чем наполовину). Так что вполне возможно, что более плотное взаимодействие со Scheme тоже уравновесило бы восхищение должной долей раздражения.
А пока остаётся только кусать локти: почти любой код на Scheme кажется мне чудом логичности, изящества и читабельности; программирование небольших задач на Scheme это действительно удовольствие. Совсем обидно будет, если на самом деле больших — тоже. |
|
|