avva: (Default)
[personal profile] avva
Мини-опрос: назовите три, с вашей точки зрения, самых красивых (своей эстетикой, своим устройством, своей структурой и т.п.) языка программирования. Ответы в комментах приветствуются.

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


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

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

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

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

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

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

Date: 2002-04-20 01:03 pm (UTC)
From: [identity profile] levg.livejournal.com
Прочитал, задумался... и понял, что не чувствую никакой красоты ни в одном из известных мне языков программирования. Более или менее грамотно реализованные, подходящие для той или иной цели, те, что я знаю лучше или хуже, но красивые, пожалуй что нет...

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

Re:

Date: 2002-04-20 01:10 pm (UTC)
From: [identity profile] avva.livejournal.com
Понимаю, да. У меня наоборот: во всём, что делаю, пытаюсь, иногда мучительно, найти красоту. Но не ощущаю себя при этом "художником", это другое.

Date: 2004-01-06 10:41 am (UTC)
From: [identity profile] muchandr.livejournal.com
нельзя так. я вот предпочел выйти в отставку, чем стать ремесленником.

(no subject)

From: [identity profile] levg.livejournal.com - Date: 2004-01-07 01:56 am (UTC) - Expand

Date: 2002-04-20 01:15 pm (UTC)

Date: 2002-04-20 01:18 pm (UTC)
From: [identity profile] dhr-eigen.livejournal.com
Python
Haskell

Re:

Date: 2002-04-20 01:21 pm (UTC)
From: [identity profile] avva.livejournal.com
А объяснить? ;)

У меня Хаскел один из претендентов на третье место. Питон... не, не потянет.

(no subject)

From: [identity profile] dhr-eigen.livejournal.com - Date: 2002-04-20 01:32 pm (UTC) - Expand

(no subject)

From: [identity profile] simuran.livejournal.com - Date: 2002-04-20 01:54 pm (UTC) - Expand

Date: 2002-04-20 01:33 pm (UTC)
From: [identity profile] simuran.livejournal.com
I'll second that :)

Date: 2002-04-20 01:24 pm (UTC)
From: [identity profile] cmm.livejournal.com
Scheme: лямбда-исчисление с латентными типами, абстракция контроля (в виде "продолжений").

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

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

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

помню вот ещё Icon был очень красивый и интересный, только вот не упомню чем именно.

Date: 2002-04-20 01:50 pm (UTC)
From: [identity profile] hotgiraffe.livejournal.com
Моя тройка: Haskell, Scheme, Smalltalk.
То есть, на самом деле (естессно, всё IMHO):

- Haskell, как самый правильный "чистый" функциональный язык (non-strict evaluation, симпатичные структуры, проработанная концепция взаимодействия с "императивным миром" через монады)
- Scheme, как самый правильный Лисп (лексическое связывание, continuations)
- Smalltalk, как самый правильный class-based ОО-язык (правильное соотношение статики и динамики, чистота подхода)

Причём все три а) могут быть весьма эффективно реализованы, б) достаточно удобны в преподавании CS и в) приятны в использовании.

Кандидаты (оба ОО), не вошедшие в тройку: Self и Cecil - первый за чистоту prototype-based ОО подхода, второй - за практичные мультиметоды.
Впрочем, ни одним ни другим я активно не пользовался (в отличии от тройки призёров).

Date: 2002-04-20 01:57 pm (UTC)
From: [identity profile] avva.livejournal.com
Наверное, Вы меня убедили почитать о Схеме, я с ней никогда дела не имел как-то.

Date: 2002-04-20 04:22 pm (UTC)
From: [identity profile] ex-ilyavinar899.livejournal.com
Только что нашел смешное Эволюция программиста на Хаскеле (http://www.willamette.edu/~fruehr/haskell/evolution.html)

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

2. Власть.

3. Паскаль.

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

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

Re:

Date: 2002-04-20 07:40 pm (UTC)
From: [identity profile] avva.livejournal.com
Про ощущение чуда с Прологом - это ты очень верно высказался.

Я в какой-то момент, очень давно (лет 9 назад), изучая Пролог, испытал это. У меня была программа (взятая из книги), я понимал каждый отдельную строку, понимал принцип работы Пролога, всё понимал - а как у программы получалось работать, не понимал. Запускал её снова и снова с почти религиозным восторгом.

(no subject)

From: [identity profile] catpad.livejournal.com - Date: 2002-04-20 08:11 pm (UTC) - Expand

Re:

From: [identity profile] avva.livejournal.com - Date: 2002-04-20 08:17 pm (UTC) - Expand

(no subject)

From: [identity profile] catpad.livejournal.com - Date: 2002-04-20 08:26 pm (UTC) - Expand

Date: 2002-04-20 04:08 pm (UTC)
From: [identity profile] 37.livejournal.com
Может, это не ответ на вопрос, или ответ, но на другой вопрос... Как старику Карамазову было все равно, какая женщина - хоть мовешка, хоть вьельфилька, так и для меня всегда хорош был тот язык, на котором я в тот момент писал. Иногда даже: чем хуже, тем лучше. Костный диалект вызывает к жизни чудеса изобретательности. В конце концов, я иногда вообще забываю, на каком языке я пишу и могу непроизвольно смешать конструкции :-)). Тем более, что, по крайней мере, в моей практике, язык почти никогда выбирать не приходилось. В конце концов, язык - это гвозди и молоток. Им сбиваешь конструкцию из стоящих над ним алгоритмов и интерфейсов.
Пожалуй лищь одно: в объектном мире я чувствую себя гораздо уютнее.

Date: 2002-04-20 04:10 pm (UTC)
From: [identity profile] ex-ilyavinar899.livejournal.com
1. Scheme - самый практичный из лиспов, широко применяющийся в педагогике.

2. ML.

3. Не знаю.

Date: 2002-04-20 04:59 pm (UTC)
From: [identity profile] cmm.livejournal.com
> Scheme - самый практичный из лиспов.

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

в каком это смысле "практичный", не говоря уже о "самый"?

Дополнение:

Date: 2002-04-20 04:12 pm (UTC)
From: [identity profile] catpad.livejournal.com
1. То, что ты написал про Форт, верно также и для никому не известного языка Trac. Очень симпатичное изобретение: здесь.
2. Есть такая книжка Дэвида Гелернтера (не помню названия), где он призывает на компьютерных факультетах преподавать курсы по эстетике, искусству, дизайну и т.п.
Как это было бы здорово и правильно !
Тогда бы не было программистов на Visual Basice и не возник бы JavaScript.

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

Date: 2002-04-20 07:25 pm (UTC)
From: [identity profile] avva.livejournal.com
1. Спасибо, обязательно посмотрю.
2. Мечты, мечты. Это тот самый Гелернтер, который стал инвалидом из-за бомбы Унабомбера, верно?

Может быть, если бы Унабомберу на его факультете математики преподавали эстетику, искусство и дизайн... ;)

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

From: [personal profile] stas - Date: 2002-04-20 11:12 pm (UTC) - Expand

Date: 2002-04-20 11:45 pm (UTC)
From: [identity profile] catpad.livejournal.com
А вот ещё забыл. Есть совершенно замечательный язык APL. Он, конечно, ужасен, но всё же, всё же... Я его люблю.
Его, кстати, преподавали в Технионе много лет и отменили года три назад. Я был последним ассистентом на этом курсе - грустно.

Date: 2002-04-21 12:20 am (UTC)
From: [identity profile] cmm.livejournal.com
дa-да-да! про APL-то и забыли.

[ а я и не знал, что отменили. жалко. впрочем, Технион начинал неумолимо опопсевать ещё на моих глазах... ]

(no subject)

From: [identity profile] hotgiraffe.livejournal.com - Date: 2002-04-21 02:03 am (UTC) - Expand

K

From: [identity profile] muchandr.livejournal.com - Date: 2004-01-06 01:18 pm (UTC) - Expand

Date: 2002-04-21 04:57 am (UTC)
ext_454496: (Default)
From: [identity profile] alexcohn.livejournal.com
Мне в детстве довелось изучать Рефал, который придумал изгнанный отовсюду за диссиду Турчин. Ощущение чуда несравнимо острее, чем в Прологе.

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

Позже меня очаровал REXX, на котором можно было сделать абсолютно все, потому что он интерпретировался до тех пор, пока не превращался в команду OC.

Date: 2002-04-21 04:40 pm (UTC)
From: [identity profile] ex-ilyavinar899.livejournal.com
Sue Graham из Беркли говорит, что двухуровневая грамматика настолько кошмарно сложна, что сами создатели языка так ее толком до ума и не довели.

Алгол-68 прекрасен своей ортогональностью, но если я правильно помню, в язык включено очень многое (напр. семафоры), и поэтому он не подходит под критерии Аввы: ни простой концептуальной базой, ни расширяемостью. Вот (http://vestein.arb-phys.uni-dortmund.de/~wb/RR/rrTOC.html), кстати, нашел определение языка.

А что есть в Рефале такое, чего нету в Лиспе?

(no subject)

From: [identity profile] alexcohn.livejournal.com - Date: 2002-04-22 03:16 am (UTC) - Expand
From: [identity profile] lvalien.livejournal.com
Уважаемый Авва. Нельзя ли чуть-чуть усложнить задачку?

Пусть будет необходимо выбрать три языка, уже имеющие как минимум один принятый ANSI стандарт. Можно даже упростить - пусть не ANSI, пусть - уровня ANSI. Паскаль, насколько я помню, там не проканал пока, а вот где-то в Европе (Британии?)...

Re: И по теме

Date: 2002-04-21 08:41 am (UTC)
From: [identity profile] lvalien.livejournal.com
Алгол - хоть я его никогда уже не увижу опричь "в пробирке"
REXX - хоть он и принадлежит с потрохами одной мегакорпорации
Пролог - хоть под него необходимо создавать совсем другие процессоры, а без поддержки на уровне проца это всего лишь красивая игрушка.

Date: 2002-04-22 08:46 am (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Тройка -- это мало :-)
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 (удачная попытка совместить в одном языке кучу подходов, оставив его предельно понятным и непротиворечивым).

APL, unlambda

Date: 2004-01-06 01:26 pm (UTC)
From: [identity profile] muchandr.livejournal.com
Не силен в оригинальном APL, но судя по K, такая концепция еще как есть, а именно то что код должен полностью убираться в "визуальный буфер" программиста. Компактность любой ценой. Например однажды я заменил 2.5K линий кода на Jave на всего 4 линии K. Есть еше более экстремальный чем brainfuck язык unlabda, из двух что ли всего операторов. Он такой странный, что для него даже квайн никто долго написать не мог.

Date: 2002-04-29 10:27 pm (UTC)
From: [identity profile] nslu.livejournal.com
что за...
ФОРТРАН!

Date: 2002-04-29 10:30 pm (UTC)
From: [identity profile] nslu.livejournal.com
http://valeo.ncport.ru:8106/ANEKDOTY/non_pas.txt

Re:

From: [identity profile] avva.livejournal.com - Date: 2002-04-30 03:47 am (UTC) - Expand

Forth + smalltalk

Date: 2003-10-14 12:43 am (UTC)
From: (Anonymous)
Гибкость обоих позволяет (особенно форт) создать любую парадигму внутри себя в сети немало реализаций lisp и prolog как расширений форта Также пролог легче реализовать как класс в смолтолке чем пристыковывать программы на нем к др программам (в принципе пролог легко реализуется в любой ООП системе) Но все таки любую парадигму качественно реализовать можно только в Форте

Py

Date: 2004-02-23 10:05 am (UTC)
From: (Anonymous)
** Python
@ красивый
@ живой
@ перспективный,
считаю что он "равен" Java и C#
**

one word comment

Date: 2004-05-24 09:37 am (UTC)
From: (Anonymous)
Python

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 05:17 am
Powered by Dreamwidth Studios