?

Log in

No account? Create an account
черепахи всю дорогу - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

черепахи всю дорогу [мар. 28, 2009|07:45 pm]
Anatoly Vorobey
Много лет назад я заметил, что есть языки программирования, поклонники которых часто считают их не просто продуктивными, а волшебно-продуктивными - позволяющими им писать, скажем, на порядок больше полезного кода, чем за то же время на других языках, которые они хорошо знают.

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

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

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

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

По-моему, это совпадение не случайно.
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: gaus
2009-03-28 05:29 pm
По-моему, это совпадение не случайно.

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

:)
(Ответить) (Thread)
[User Picture]From: cmm
2009-03-28 05:46 pm
в каждой шутке.
(Ответить) (Parent) (Thread)
[User Picture]From: gaz_v_pol
2009-03-28 06:13 pm
Вообще-то, самый лучший язык - это Maple... Поскольку доводит идею "всё, даже приближённое, может быть описано "в буковках" - до абсолюта!!
(Ответить) (Thread)
From: (Anonymous)
2009-03-29 07:04 am
20 лет назад я не мог заслать 1.0 как параметр в фортрановскую подпрогамму, потому что она меняла внутри соответствующий параметр (в фортране все передается как ссылка) без того, чтобы 1.0 не превращался в 2.0.

Если уж не все, то по крайней мере, "все что передается как параметр"
(Ответить) (Parent) (Thread)
[User Picture]From: raindog_2
2009-03-28 06:37 pm
Еще одна деталь - при том, что у каждого языка небольшая группа ярых сторонников, ни один из них не стал мейнстримовым. В частности, почему так (не) получилось со Смолтоком - мне не совсем понятно. Вроде бы, были все предпосылки. Я спрашивал об этом у Василия Б., он говорит, из за политики лицензирования и других "социальных факторов".

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

***

Кстати, еще один "одно-концептый" язык: Tcl - "everything is a string". Ну, почти everything. В начале-середине 90-х Tcl - это было круто, особенно в связке с Tk.
(Ответить) (Thread)
[User Picture]From: onodera
2009-03-28 07:35 pm
Тикль из-за своей концепции и пострадал. Пока от неё в восьмой, кажется, версии не отказались на уровне реализации, он заметно уступал по скорости работы другим скриптовым языкам.
(Ответить) (Parent) (Thread)
[User Picture]From: lee_bey
2009-03-28 06:41 pm
Э-э-э-э... а Perl ???
(Ответить) (Thread)
[User Picture]From: avva
2009-03-28 08:13 pm
Пять лет назад я бы в этот список добавил и Perl, и назвал бы его интересным исключением, в том смысле, что он не язык одной идеи, но вместе с тем тоже исключительно продуктивен.

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

(Ответить) (Parent) (Thread) (Развернуть)
(Удалённый комментарий)
[User Picture]From: shurz
2009-03-28 06:43 pm
tcl - "все строка" до абсолюта, но мне не попадались подобные утверждения про него =)
(Ответить) (Thread)
[User Picture]From: baramin
2009-03-28 07:37 pm
Простите за off-top. На аватаре проходные дворы около Сенной? :)
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: cema
2009-03-28 07:25 pm
Только что я был на конференции по лиспу. Народ там горевал, что не все ещё поняли, какой лисп замечательный язык. Но при этом вполне себе говорили и о хаскеле, и о том, чего можно позаимствовать из "практических" языков, даже из джавы (скорее из JVM, но неважно).

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

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

Мелкая придирка. Если в лиспе "всё список", то в форте тогда "всё в стеке". Макро уже отсюда вытекает (как и в лиспе из "код имеет формат данных").
(Ответить) (Thread)
[User Picture]From: smilga
2009-03-28 08:31 pm
«Всё список» — это попросту неверно, на самом деле. В Смолтоке действительно «всё объект», т. е. штука, которой можно послать сообщение. В Лиспе есть дофига неатомарных объектов, недопустимых в качестве аргументов CAR и CDR.

Мне кажется, у Лиспа основных идей три: синтаксическая абстракция (с кодом можно работать как с данными), функции как объекты первого класса (лямбда) и интерактивная среда. Если вытащить первое, то получится, например, Смолток, если второе — ТеХ. Без интерактивной среды бывают всякие штуки типа WCL или Stalin-а, которые скорее Лисп, но не совсем.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: janatem
2009-03-28 07:28 pm
У меня дежа-вю: совсем недавно я читал (или думал?!) в точности про это.

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

Удобно дома иметь набор отверток разного размера. Однако в походных условиях лучше одна со сменными насадками.
(Ответить) (Thread)
[User Picture]From: roman_kr
2009-03-28 07:28 pm

re: Matlab...

Matlab!
(Ответить) (Thread)
[User Picture]From: ltwood
2009-03-28 07:54 pm

Re: Matlab...

Все на свете — матрицы комплексных чисел? ;))
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: baramin
2009-03-28 07:52 pm
Особое извращение - все есть boost и template. Эти опаснее всех :)
(Ответить) (Thread)
[User Picture]From: javax_slr
2009-03-28 07:57 pm
Что такое продуктивный язык? Быстро писать целый продукт? Фичер в готовом продукте?
Алгоритм? Веб сайт? Бизнес логику? Инфраструктуру?
Быстро только писать или добавлять код в готовый продукт?

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

(Ответить) (Thread)
[User Picture]From: trurle
2009-03-28 08:07 pm

Производтсву нужен простой язык, расчитанный на то, что бы средний программист мог понять то, что написал другой средний программист.
Зато у программистов есть другие интересы: job security и skill scarcity.
(Ответить) (Parent) (Thread)
[User Picture]From: pingva
2009-03-28 08:09 pm
есть еще как минимум три языка, про которые я такое часто слышу: perl, erlang и ruby.

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

у меня нет сомнений, что для определенных задач некоторые языки могут быть в разы (поостерегусь говорить "на порядки" =)) эффективнее "универсальных" "индустриальных" языков.
(Ответить) (Thread)
[User Picture]From: avva
2009-03-28 08:12 pm
перл как раз не вписывается по-моему - пишу об этом выше; а руби разве не "смоллток в процедуральной записи для бедных"? *ducks* :-)

(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: iratus
2009-03-28 10:08 pm
Единственный продуктивный язык, который я знаю - это чистый С. Ну или с извращениями, то Objective C. Все остальные - это так...
(Ответить) (Thread)
[User Picture]From: kouzdra
2009-03-28 10:17 pm
Довольно продуктивный язык это ML (в инкарнации OCaml) - но в нем нет вообще никакой парадингмы. Просто набор удачно найденных конструкций и неплохой дизайн (в Haskell на самом деле "парадигмы" тоже нет - но это менее очевидно - в него проще вчитать какую-нибудь "концепцию")
(Ответить) (Thread)
From: captain_tylor
2009-03-29 01:39 am
"Все функция". Он как раз самый монопарадигмальный.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: eterevsky
2009-03-28 11:08 pm
(Ответить) (Thread)
[User Picture]From: cema
2009-03-30 03:44 am
(Ответить) (Parent) (Thread)
[User Picture]From: pigmeich
2009-03-28 11:28 pm
Кстати, есть мнение, что это продуктивность относится к throw-away коду. То есть всякя документация, архитектура и вылавливание в них багов занимают столько, что от языка мало что зависит.

А Питон прикольный, ага.
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>