Saturday, November 27, 2010

Почему не следует изучать OCaml.

Ответ простой: потому что этот язык — полное дерьмо! Подробно о том, почему это так, можете почитать в статье "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(длина_массива), разумеется). П***ец, одним словом.

Tuesday, November 23, 2010

Нумерология

Недавно заметил одну забавную штуку.

(Пояснение для нематмеховцев)
Единственный некоммерческий автобус, на котором можно доехать от студгородка до метро без пересадок — 210-й. Ходит он, между прочим, от Кировского завода (тут ещё такое совпадение, что я родом из Кирова, но это не особо удивляет, ибо от коммуняг чёртова уйма одинаковых названий осталась).

Так вот, типичный путь от зданий универа на Ваське до этого самого Кировского завода таков: 1 станция по 3-й линии, потом 2 станции по 2-й линии и 3 станции по 1-й линии. Адовая симметрия. А потом в идеале оттуда на 210-м до общаги (тоже: 2-1-0), но это редко получается, чаще приходится на 200-м и 359-м ездить =(

Sunday, November 21, 2010

Theorems graph.

Now that almost everybody's heard about the mind map concept, it seems a little weird to me that I wasn't able to find via Google anything like that:
In my opinion, it's really fucking convenient to be able to answer the question "for what the hell do I need this theorem?!" at a glance (In fact, this question is just a rephrasing of "why the hell should I know its proof?!": you know about the lazy evaluation concept, don't you?). It's especially helpful right before exams (and especially for me 'cause I've got the damn habit to devote no more than three days to an exam preparation ^____^).

By the way, GraphViz tools were used to plot this graph. If you wanna look at the source or modify it, you can download it from here.

And yeah, for the sake of showing you how devilishly horrible automatically generated graphs might be: http://llvm.org/docs/UsingLibraries.html