Re[2]: Потерялся, ищу совета
От: Klapaucius  
Дата: 03.02.08 21:17
Оценка: 79 (7) +2 :)
Здравствуйте, Niovol, Вы писали:

N>Интересно мнение обитателей форума на то, какие языки являются наиболее мощными.


Вообще, "мощность языка" понятие довольно невнятное, для которого у каждого может быть свое интуитивное понимание. Лично я оцениваю мощность языка по сопротивлению, которое он оказывает при попытках думать и говорить на нем. Собственно, из самой статьи про парадокс Блаба следует, что мощность языка субъективна, ведь для того, кто думает на Блабе все языки не мощнее Блаба (в данном случае для Грэма все языки не мощнее LISPа). Статью я читал довольно давно, а перечитывать мне ее лень, но, если мне не изменяет память, ясного представления о том, что автор подразумевает под мощностью у меня не сложилось.

Эпиграф:

-- Да, я огнедышащий кратер. Из меня так и пышет пламя, а внутри
клокочут слова и комбинации слов, которые требуют выхода. Миллионы синонимов
и частей речи так и прут из меня на простор, и я не успокоюсь, пока не
произнесу какую-нибудь этакую речь.<...>
-- Нет ничего хуже

О.Генри

Можно ли выразить эту мощность в отрыве от мозговых тараканов? Попробовать можно, но, вернее всего, ничего не получится.
Если же все-таки попробовать, то я бы разделил одно большое зло на три малых — это уже прогресс.
То, что я понимаю под мощностью состоит из трех компанентов: выразительность, декларативность и легковесность.
1) Выразительность (по моему, наиболее туманное понятие из всех трех) дается большим количеством сущностей.
Предположим, у нас есть уравнения Максвелла записанные покомпонентно — т.е. неохватное нагромождение элементарных вещей.
Зная что такое трехмерные векторы и дифференциальные операторы можно записать более компактно и красиво, а использовав четырехвекторы и оператор Даламбера — еще компактнее и красивее. Цена успеха — необходимость знать все эти сущности. Про такое обычно говорят "более высокий уровень". Реакция человека от сохи: "посмотрел я ваше Тряляля — ничего не понял".
Считается, что безусловный переход проще, чем лексическое замыкание — первое я изучал в школе, а второе — нет.
2) Декларативность, по счастью, тривиальна. Есть мнение, что формулировка задачи
def ngt5 = numbers.Filter(_ > 5)

предпочтительнее описания пошагового решения
list<int> ngt5 = new list<int>();
for(int i = 0; i < numbers.Count; i++)
    if(numbers[i] > 5) ngt5.Add(numbers[i]);

3) Легковесный синтаксис это то, что позволяет пользоваться возможностями языка.
Если синтаксис монструозен, (классический пример:
delegate(int a, int b){ return a + b; }

) то полезное средство легко может оказаться непригодным для использования.
Некоторое облегчение вроде
(a, b) => a + b

уже позволяет дышать, но хочется чего-то вроде (+) или _ + _
Упрощенно: громоздкий синтаксис тяготеет к литературному языку и доступен после окончания первого класса; легковесный — тяготеет к математической нотации, с понятными проблемами — первого класса уже недостаточно!
"Вчера посмотрел Траляля — одни закорючки" — примерно так я реагирую, например, на язык k.

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


Надеюсь, что лень спасет форум.
... << RSDN@Home 1.2.0 alpha rev. 726>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.