avva: (Default)
[personal profile] avva
Много лет назад я заметил, что есть языки программирования, поклонники которых часто считают их не просто продуктивными, а волшебно-продуктивными - позволяющими им писать, скажем, на порядок больше полезного кода, чем за то же время на других языках, которые они хорошо знают.

У меня нет устойчивого мнения о том, насколько эти утверждения верны; и даже в случае, когда они верны, я подозреваю, что они не универсальны. Наверное, разным людям лучше подходят разные языки.

Тем не менее, само существование такого рода утверждений интересно и заслуживает внимания. У практически каждого языка найдутся поклонники, но далеко не в каждом случае они будут хвалить именно невероятную, волшебную продуктивность этого языка в сравнении с другими. Среди языков, о которых именно так говорят, мне попадались Forth, SmallTalk, Lisp... может быть, еще Хаскель, но на самом деле в этом последнем не уверен (он все же слишком академичен еще, так что информация о его продуктивности в реальном мире слишком шумная).

Я обратил внимание на то, что языки, о которых так говорят, оказываются как раз языками "одной идеи", доведенной до абсолюта, одной центральной парадигмы, которой все остальное подчиняется.

* SmallTalk доводит идею "все - объект" до абсолюта;
* Forth доводит идею "все - макро" до абсолюта;
* Lisp доводит идею "все - список, а код == данным" до абсолюта.

По-моему, это совпадение не случайно.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

Date: 2009-03-28 05:29 pm (UTC)
From: [identity profile] gaus.livejournal.com
По-моему, это совпадение не случайно.

Не случайно, тоталитарные языки, и поклонники - тоталитарные сектанты.

:)

Date: 2009-03-28 05:43 pm (UTC)
From: [identity profile] vaggie.livejournal.com
поклонники - язычники :)

Date: 2009-03-28 05:46 pm (UTC)
From: [identity profile] cmm.livejournal.com
в каждой шутке.

Date: 2009-03-28 06:06 pm (UTC)
From: [identity profile] ltwood.livejournal.com
Да, согласен. И еще у них есть тенденция записывать мультипарадигменные языки в разряд «говноязыков для быдлокодеров».

Date: 2009-03-28 06:13 pm (UTC)
From: [identity profile] gaz-v-pol.livejournal.com
Вообще-то, самый лучший язык - это Maple (http://en.wikipedia.org/wiki/Maple_(software))... Поскольку доводит идею "всё, даже приближённое, может быть описано "в буковках" - до абсолюта!!

Date: 2009-03-28 06:37 pm (UTC)
From: [identity profile] raindog-2.livejournal.com
Еще одна деталь - при том, что у каждого языка небольшая группа ярых сторонников, ни один из них не стал мейнстримовым. В частности, почему так (не) получилось со Смолтоком - мне не совсем понятно. Вроде бы, были все предпосылки. Я спрашивал об этом у Василия Б., он говорит, из за политики лицензирования и других "социальных факторов".

Возможно, идеология Perl более здоровая. Мир вокруг нас (и задачи, которые нужно рещать) - это mess, в нем нет "главной идеи", поэтому и язык должен быть messy :)

***

Кстати, еще один "одно-концептый" язык: Tcl - "everything is a string". Ну, почти everything. В начале-середине 90-х Tcl - это было круто, особенно в связке с Tk.

Date: 2009-03-28 06:41 pm (UTC)
From: [identity profile] lee-bey.livejournal.com
Э-э-э-э... а Perl ???

Date: 2009-03-28 06:43 pm (UTC)
From: [identity profile] shurz.livejournal.com
tcl - "все строка" до абсолюта, но мне не попадались подобные утверждения про него =)

Date: 2009-03-28 07:25 pm (UTC)
From: [identity profile] cema.livejournal.com
Только что я был на конференции по лиспу. Народ там горевал, что не все ещё поняли, какой лисп замечательный язык. Но при этом вполне себе говорили и о хаскеле, и о том, чего можно позаимствовать из "практических" языков, даже из джавы (скорее из JVM, но неважно).

В лиспе, обрати внимание, ты перечислил две идеи: 1. все список; 2. код имеет вид данных. Из второй, кстати, получаются замечательные лисповые макросы. Как бы язык преобразования синтаксических деревьев.

Я на лисп смотрю как на язык, позволяющий удобно написать программу в терминах описания проблемной области. Конечно, любой современный язык обладает механизмами для этого.

Мелкая придирка. Если в лиспе "всё список", то в форте тогда "всё в стеке". Макро уже отсюда вытекает (как и в лиспе из "код имеет формат данных").

Date: 2009-03-28 07:26 pm (UTC)
From: [identity profile] cema.livejournal.com
Ну как бы и не без оснований.

В то же время, Guy Steele Jr. работал и над лиспом и над джавой, так что...

Date: 2009-03-28 07:28 pm (UTC)
From: [identity profile] janatem.livejournal.com
У меня дежа-вю: совсем недавно я читал (или думал?!) в точности про это.

Но вообще "экстремальные" языки -- это правильно. Если есть задачи (пусть даже этих задач 1% или меньше), которые очень продуктивно и/или эффективно решаются каким-то особым языком, то такой язык, очевидно, имеет право на существование. Что, впрочем, не отменяет потребности в "универсальном" языке.

Удобно дома иметь набор отверток разного размера. Однако в походных условиях лучше одна со сменными насадками.

re: Matlab...

Date: 2009-03-28 07:28 pm (UTC)

Date: 2009-03-28 07:35 pm (UTC)
From: [identity profile] onodera.livejournal.com
Тикль из-за своей концепции и пострадал. Пока от неё в восьмой, кажется, версии не отказались на уровне реализации, он заметно уступал по скорости работы другим скриптовым языкам.

Date: 2009-03-28 07:37 pm (UTC)
From: [identity profile] baramin.livejournal.com
Простите за off-top. На аватаре проходные дворы около Сенной? :)

Date: 2009-03-28 07:52 pm (UTC)
From: [identity profile] baramin.livejournal.com
Особое извращение - все есть boost и template. Эти опаснее всех :)

Re: Matlab...

Date: 2009-03-28 07:54 pm (UTC)
From: [identity profile] ltwood.livejournal.com
Все на свете — матрицы комплексных чисел? ;))

Date: 2009-03-28 07:57 pm (UTC)
From: [identity profile] javax-slr.livejournal.com
Что такое продуктивный язык? Быстро писать целый продукт? Фичер в готовом продукте?
Алгоритм? Веб сайт? Бизнес логику? Инфраструктуру?
Быстро только писать или добавлять код в готовый продукт?

ИМХО все эти штуки (ну кроме, может смолтока) - от лукавого. От академии.
Производтсву нужен простой язык, расчитанный на то, что бы средний программист мог понять то, что написал другой средний программист.

Date: 2009-03-28 07:58 pm (UTC)
From: [identity profile] ltwood.livejournal.com
Лично я интересуюсь в основном своей предметной областью, активно использую два «говноязыка» (C++ и Lua) и меня очень слабо вдохновляет пафос фразы «уже тогла работали на lisp'ом». Как-то плохо у языковых идеалистов с осознанием того, что сферические кони в вакууме отличаются плохой жизнеспособностью.

Re: Matlab...

Date: 2009-03-28 07:58 pm (UTC)
From: [identity profile] avva.livejournal.com
Вполне достойная точка зрения, кстати :)

Date: 2009-03-28 07:59 pm (UTC)
From: [identity profile] avva.livejournal.com
Луа, кстати, отличный язык, я бы его ни за что не обозвал говно-.

Date: 2009-03-28 08:07 pm (UTC)
From: [identity profile] trurle.livejournal.com
Производтсву нужен простой язык, расчитанный на то, что бы средний программист мог понять то, что написал другой средний программист.
Зато у программистов есть другие интересы: job security и skill scarcity.

Date: 2009-03-28 08:08 pm (UTC)
From: [identity profile] avva.livejournal.com
1. Упомянутые мной языки позволяют по мнению их поклонников исключительно быстро и эффективно планировать и одновременно писать новые продукты, итерировать существующий дизайн в нетривиальных направлениях, изменять существующий код, и отлаживать систему как по мере ее написания, так и в дальнейшем.

2. Я не думаю, что "от лукавого". Просто им действительно не стать столь же распостраненными, как той же Джаве. Но это не значит, что у них нет права на существование. Не все обязано быть написано средненькими программистами, особенно если усреднять по достаточно большой популяции, включаюшей в себя всех VB-профессионалов и PHP-мастеров.

[поклонников VB и PHP нижайше прошу не принимать это на свой счет, вы все хорошие, это я не о вас, а о других...]

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


Date: 2009-03-28 08:09 pm (UTC)
From: [identity profile] pingva.livejournal.com
есть еще как минимум три языка, про которые я такое часто слышу: perl, erlang и ruby.

и если perl вписывается в твою теорию, то руби вписывается в нее разве что на мета-уровне -- можно сказать, что "руби доводит мультипарадигменность до абсолюта" =)

у меня нет сомнений, что для определенных задач некоторые языки могут быть в разы (поостерегусь говорить "на порядки" =)) эффективнее "универсальных" "индустриальных" языков.

Date: 2009-03-28 08:12 pm (UTC)
From: [identity profile] avva.livejournal.com
перл как раз не вписывается по-моему - пишу об этом выше; а руби разве не "смоллток в процедуральной записи для бедных"? *ducks* :-)

Date: 2009-03-28 08:13 pm (UTC)
From: [identity profile] avva.livejournal.com
Пять лет назад я бы в этот список добавил и Perl, и назвал бы его интересным исключением, в том смысле, что он не язык одной идеи, но вместе с тем тоже исключительно продуктивен.

Сейчас мне кажется, что такое ощущение от перла 10 и даже еще 5 лет назад было во многом вызвано тем, что его знатоки сравнивали его в основном с C++/Java, от которых к нему "убежали". Сейчас, когда динамические языки отвоевали свою нишу, Питон с Руби заматерели и широко используются наряду с Перлом, Lua напирает вслед за ними, да и JS стал серьезным языком - мне кажется, трудно утверждать, что Перл на порядок их продуктивнее; все равно можно считать что лучше, но не на порядок.

Page 1 of 5 << [1] [2] [3] [4] [5] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 04:19 pm
Powered by Dreamwidth Studios