Ответ простой: потому что этот язык — полное дерьмо! Подробно о том, почему это так, можете почитать в статье "OCaml Language Sucks". Я же отмечу здесь лишь то, что внушает особое отвращение лично мне:
1) отсутствие ad-hoc полиморфизма. Если вы (вдруг) не понимаете сути этого словосочетания, поясняю: представьте себе, что vkontakte.ru писался бы изначально на OCaml-е. И был бы там какой-нибудь счётчик типа int — а хер ли, любительский же проект, каким фигом он там зашкалит за два миллиарда? А вот когда он приблизится к своему пределу, окажется, что просто int на int64 не поменяешь: надо рефакторить всё к чёртовой матери, потому что конструкция a := !a + 1 уже не будет работать, надо писать a := Int64.add !a 1L — потому что функция (+) определена только для int.
2) примерно такие же пироги с массивами и строками: обращение к элементу массива — a.(i), к элементу строки — s.[i] — то бишь по гибкости OCaml даже C++ уступает, в котором хоть шаблоны есть. Для моей функции может быть неважно, массив ей дают или строку: один хер последовательность ведь! Мне что, два варианта писать, что ли?
3) из отсутствия нормального полиморфизма напрямую следует убогость всей стандартной библиотеки: скажем, String.concat для List-ов существует, а для Array-ев — чёрта с два, либо свой велосипед пиши, либо перегоняй Array в List (за O(длина_массива), разумеется). П***ец, одним словом.
Saturday, November 27, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment