Предлагаю не переходить на личности Вы, Мы, Ты, иначе это рано или поздно закончится очередным писькомером.Ни одна фича языка не является обязательной, однако именно они позволяют с минимальными суммарными затратами создавать программный продукт. Язык, который сможет грамотно сочетать множество концепций программирования, будет являться наиболее мощным [1]. Функциональное программирование постепенно становится стандартом для новых языков программирования (хотя чаще всего из всего функционального программирования используются лишь лямбда-функции, замыкания и функции высшего порядка), но нельзя недооценивать и другие концепции как, например, автоматное программирование, которое позволяет легко расширять и гибко описывать механизмы сложного поведения, реализованных на конечных автоматах [2]. Аналогично и для множественного наследования.
Одно дело, что фича может быть совсем не реализована, а другое, когда она реализована с ошибкой и не исправляется от релиза к релизу. Для того чтобы убедиться в неверной реализации альфа-редукции, можно выполнить следующий код:
p n=[1]*3
n.each { |n| p n }
p n
Язык программирования должен быть простым и лёгким в освоении, иначе его ждёт судьба ассемблера или кобола. Чем меньший барьер в языке существует для того, чтобы начать на нём программировать тем лучше. В этом случае идеалом может являться естественный язык. Его можно считать асимптотой для всех языков программирования.
Кроме того совершенно неприемлемо, чтобы переход на новую версию языка требовал переписывания до 40% существующего кода [3].
--
[1] Paul Graham. Beating the Avereges. http://www.paulgraham.com/avg.html. Проверено 14.08.2008.
[2] Automata-based programming (Shalyto's approach). http://en.wikipedia.org/wiki/Automata-based_programming_(pro.... Проверено 14.08.2008
[3] Ruby Makes Me Want to Rant On My Blog. http://jfm3-repl.blogspot.com/2008/08/ruby-makes-me-want-to-.... Проверено 14.08.2008