?

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 ]

о эстетике языков программирования, Форте и Смолтоке: интроспекция [апр. 20, 2002|10:44 pm]
Anatoly Vorobey
Мини-опрос: назовите три, с вашей точки зрения, самых красивых (своей эстетикой, своим устройством, своей структурой и т.п.) языка программирования. Ответы в комментах приветствуются.

Мои ответы:
1. Форт
2. Смолток
3. Не знаю - много разных претендентов на это место.


Видимо, учитывая первые два места в моём ответе, мне нравятся языки с таким свойствами:
  • очень простая концептуальная база;
  • практически неограниченные способности к расширению языка самим программистом в нём, включая самые фундаментальные его структуры;
  • прозрачность каждого действия на атомном уровне, переходящая в управляемую сложность на глобальном уровне, вытекающую из структуры, сотканной программистом.
  • мощная интегрированная среда, включающая в себя компилятор, интерпретатор и т.п., и всё это написано на самом языке за исключением крошечного ядра.

Последнее свойство, правда, имеет и свои отрицательные стороны: изоляцию языка внутри интегрированной среды, сложности с написанием отдельных программ, призванных функционировать отдельно от среды, внутри других систем.

Форт: дистилляция до прозрачной, и вместе с тем неимоверно мощной простоты базовой идеи макроса: кода, который только и делает, что вызывает в последовательности один за другим другие макросы. Плюс к этому постфиксная нотация и раздельные стэки для данных и контроля выполнения. Всё.

Смолток: дистилляция до прозрачной, и вместе с тем неимоверно мощной простоты базовой идеи объекта: набора данных, который определяет и воплощает протокол коммуникации с ним других объектов.

Оба языка - вне "мейнстрима", у обоих - своя ниша (Форт - embedded software, Смолток - financial systems). Оба мне бы хотелось видеть в мейнстриме, но этого никогда не случится.

Оба я сделал бы (вместе ещё с пятью-шестью другими языками) обязательными для преподавания в программе компьютерного факультета. Оба не являются обязательными для преподавания ни на одном известном мне факультете.
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: levg
2002-04-20 01:03 pm
Прочитал, задумался... и понял, что не чувствую никакой красоты ни в одном из известных мне языков программирования. Более или менее грамотно реализованные, подходящие для той или иной цели, те, что я знаю лучше или хуже, но красивые, пожалуй что нет...

Видимо дело в том, что я ремесленник, а не художник. Я почти пятнадцать лет живу исключительно на то, что зарабатываю программированием, но практически никогда не писал код только ради удовольствия, и поэтому языки для меня - что метлы для дворника: инструмент надо знать и беречь, но красоту предпочитаю искать не на рабочем месте.
(Ответить) (Thread)
[User Picture]From: avva
2002-04-20 01:10 pm

Re:

Понимаю, да. У меня наоборот: во всём, что делаю, пытаюсь, иногда мучительно, найти красоту. Но не ощущаю себя при этом "художником", это другое.
(Ответить) (Parent) (Thread)
[User Picture]From: angerona
2002-04-20 01:15 pm
Scheme
(Ответить) (Thread)
[User Picture]From: dhr_eigen
2002-04-20 01:18 pm
Python
Haskell
(Ответить) (Thread)
[User Picture]From: avva
2002-04-20 01:21 pm

Re:

А объяснить? ;)

У меня Хаскел один из претендентов на третье место. Питон... не, не потянет.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: cmm
2002-04-20 01:24 pm
Scheme: лямбда-исчисление с латентными типами, абстракция контроля (в виде "продолжений").

Haskell: типированное лямбда-исчисление, lazy evaluation.

ML: по сути Scheme - скобки + типы.

Cecil: generic programming, квинтессенция своего рода. все функции generic, parametric multiple dispatch, etc.

помню вот ещё Icon был очень красивый и интересный, только вот не упомню чем именно.
(Ответить) (Thread)
(Удалённый комментарий)
[User Picture]From: avva
2002-04-20 01:57 pm

Наверное, Вы меня убедили почитать о Схеме, я с ней никогда дела не имел как-то.
(Ответить) (Parent) (Thread)
[User Picture]From: fima
2002-04-20 03:11 pm
Назову C++ как самый жизнеспособный (моё представление о прекрасном в программировании).
Языки, перечисленные выше (в комментариях других), обладают иными типами красоты. Я бы сравнил красоту С++ с красотой урбанистического пейзажа (Дефанс или Эйфелева башня, например), Smalltalk - с видом на лес из окна, Форт - с росписями Рублёва, Схему - со звездным небом (с Хаскелем дело не имел).
Ещё могу предложить Пролог как Саграда Фамилия.
(Ответить) (Thread)
[User Picture]From: gong
2002-04-20 03:32 pm

ответ на каверзный вопрос

1. Деньги.

2. Власть.

3. Паскаль.

Первый - за универсальность. Второй - за неумолимость. Третий - за те милые недостатки, которые подходят именно мне.

(Ответить) (Thread)
[User Picture]From: catpad
2002-04-20 04:01 pm
Думаю, на первом месте Лисп (может и Схема, только о ней не знаю ничего).
Потом, сравнивать несравнимое трудно: хочется и ML и Prolog поставить на второе.
Prolog, конечно, не за удобство программирования, а за ощущение "чуда", которое всегда присутствует при его работе.
А за среду и usability - Java.
А вообще, вопрос классный, только ответить на него невозможно. Ты вот про человеческие языки спроси - интересно будет !
(Ответить) (Thread)
[User Picture]From: avva
2002-04-20 07:40 pm

Re:

Про ощущение чуда с Прологом - это ты очень верно высказался.

Я в какой-то момент, очень давно (лет 9 назад), изучая Пролог, испытал это. У меня была программа (взятая из книги), я понимал каждый отдельную строку, понимал принцип работы Пролога, всё понимал - а как у программы получалось работать, не понимал. Запускал её снова и снова с почти религиозным восторгом.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: 37
2002-04-20 04:08 pm
Может, это не ответ на вопрос, или ответ, но на другой вопрос... Как старику Карамазову было все равно, какая женщина - хоть мовешка, хоть вьельфилька, так и для меня всегда хорош был тот язык, на котором я в тот момент писал. Иногда даже: чем хуже, тем лучше. Костный диалект вызывает к жизни чудеса изобретательности. В конце концов, я иногда вообще забываю, на каком языке я пишу и могу непроизвольно смешать конструкции :-)). Тем более, что, по крайней мере, в моей практике, язык почти никогда выбирать не приходилось. В конце концов, язык - это гвозди и молоток. Им сбиваешь конструкцию из стоящих над ним алгоритмов и интерфейсов.
Пожалуй лищь одно: в объектном мире я чувствую себя гораздо уютнее.
(Ответить) (Thread)
From: ex_ilyavinar899
2002-04-20 04:10 pm
1. Scheme - самый практичный из лиспов, широко применяющийся в педагогике.

2. ML.

3. Не знаю.
(Ответить) (Thread)
[User Picture]From: cmm
2002-04-20 04:59 pm
> Scheme - самый практичный из лиспов.

ой. оёёй. оёёёёй.

в каком это смысле "практичный", не говоря уже о "самый"?
(Ответить) (Parent) (Thread)
[User Picture]From: catpad
2002-04-20 04:12 pm

Дополнение:

1. То, что ты написал про Форт, верно также и для никому не известного языка Trac. Очень симпатичное изобретение: здесь.
2. Есть такая книжка Дэвида Гелернтера (не помню названия), где он призывает на компьютерных факультетах преподавать курсы по эстетике, искусству, дизайну и т.п.
Как это было бы здорово и правильно !
Тогда бы не было программистов на Visual Basice и не возник бы JavaScript.
(Ответить) (Thread)
[User Picture]From: avva
2002-04-20 07:25 pm

Re: Дополнение:

1. Спасибо, обязательно посмотрю.
2. Мечты, мечты. Это тот самый Гелернтер, который стал инвалидом из-за бомбы Унабомбера, верно?

Может быть, если бы Унабомберу на его факультете математики преподавали эстетику, искусство и дизайн... ;)
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: catpad
2002-04-20 11:45 pm
А вот ещё забыл. Есть совершенно замечательный язык APL. Он, конечно, ужасен, но всё же, всё же... Я его люблю.
Его, кстати, преподавали в Технионе много лет и отменили года три назад. Я был последним ассистентом на этом курсе - грустно.
(Ответить) (Thread)
[User Picture]From: cmm
2002-04-21 12:20 am
дa-да-да! про APL-то и забыли.

[ а я и не знал, что отменили. жалко. впрочем, Технион начинал неумолимо опопсевать ещё на моих глазах... ]
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]From: alexcohn
2002-04-21 04:57 am
Мне в детстве довелось изучать Рефал, который придумал изгнанный отовсюду за диссиду Турчин. Ощущение чуда несравнимо острее, чем в Прологе.

Потом был Алгол 68, замечательный в первую очередь своим стандартным описанием, которое было двуязычным ребусом высокой пробы.

Позже меня очаровал REXX, на котором можно было сделать абсолютно все, потому что он интерпретировался до тех пор, пока не превращался в команду OC.
(Ответить) (Thread)
From: ex_ilyavinar899
2002-04-21 04:40 pm
Sue Graham из Беркли говорит, что двухуровневая грамматика настолько кошмарно сложна, что сами создатели языка так ее толком до ума и не довели.

Алгол-68 прекрасен своей ортогональностью, но если я правильно помню, в язык включено очень многое (напр. семафоры), и поэтому он не подходит под критерии Аввы: ни простой концептуальной базой, ни расширяемостью. Вот, кстати, нашел определение языка.

А что есть в Рефале такое, чего нету в Лиспе?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: lvalien
2002-04-21 08:36 am

"Антилехенты. Красиво идуть..." (С)

Уважаемый Авва. Нельзя ли чуть-чуть усложнить задачку?

Пусть будет необходимо выбрать три языка, уже имеющие как минимум один принятый ANSI стандарт. Можно даже упростить - пусть не ANSI, пусть - уровня ANSI. Паскаль, насколько я помню, там не проканал пока, а вот где-то в Европе (Британии?)...
(Ответить) (Thread)
[User Picture]From: lvalien
2002-04-21 08:41 am

Re: И по теме

Алгол - хоть я его никогда уже не увижу опричь "в пробирке"
REXX - хоть он и принадлежит с потрохами одной мегакорпорации
Пролог - хоть под него необходимо создавать совсем другие процессоры, а без поддержки на уровне проца это всего лишь красивая игрушка.
(Ответить) (Parent) (Thread)
From: 9000
2002-04-22 08:46 am
Тройка -- это мало :-)
Forth и Smalltalk -- согласен. Ещё ML за невероятную красоту хитрой типизации, проверяемую в compile time (которой, afair, нет в Scheme), и lazy evaluation. Конечно, Prolog.
REXX чудесен своей сковозной интерпретируемостью (как на нём сделаны массивы -- это песня :-)).
Кстати, не забыть бы и Eiffel.

Ветку Trac успешно продолжил ужасный, хотя концептуально остроумный brainf*ck. Упоминавшийся тут APL разве обладает малой и изящной базой концепций? На нём one-liner-ы хорошо писать. В ту же категорию ужасных в своей концептуальности -- perl ('it works the way you expect, unless you expect consistency') и С++ c Algol-68.

Если б раздавать ещё и призы за попытку красиво реализовать практически потребное сложное, что нельзя свести к минимализму в духе smalltalk / lisp / forth, то тут бы упомянуть Simula-67 (сопрограммы) и Ada (модули, рандеву), и python (удачная попытка совместить в одном языке кучу подходов, оставив его предельно понятным и непротиворечивым).
(Ответить) (Thread)
[User Picture]From: muchandr
2004-01-06 01:26 pm

APL, unlambda

Не силен в оригинальном APL, но судя по K, такая концепция еще как есть, а именно то что код должен полностью убираться в "визуальный буфер" программиста. Компактность любой ценой. Например однажды я заменил 2.5K линий кода на Jave на всего 4 линии K. Есть еше более экстремальный чем brainfuck язык unlabda, из двух что ли всего операторов. Он такой странный, что для него даже квайн никто долго написать не мог.
(Ответить) (Parent) (Thread)
Страница 1 из 2
<<[1] [2] >>