Обновить
59

Пользователь

22
Подписчики
Отправить сообщение
я хочу программировать, используя разные парадигмы, и все — одинаково легко

А зачем?
Ну D-то недалеко от C++ ушёл. Если действительно интересуют современные языки, можно посмотреть на Nemerle, Haskell, Coq, Agda2.
Писал один. Большим плюсом стоит отметить произвольный порядок определений, благодаря чему математические формулы (f =… x… y, где x = ..., y = ...) переписываются напрямую, в связи с чем есть основание полагать, что он достаточно понятен будет любому мало-мальски знакомому с Haskell программисту. Я вообще люблю писать именно в таком стиле, потому что после foo = пишется самое основное, а после where постепенно определяется всё остальное в порядке важности.

Производительность никогда не мерил (хотя, безусловно, было бы интересно попробовать), так как этот прототип был для уверенности, что я нигде не напортачил. Т.е. я написал, отладил, а потом большую часть времени переписывал это на C++, в основном занимаясь переводом всяких map и foldr.

Чтобы не лукавить, в целом настолько разительное отличие (аж 6 крат) в кол-ве строк встречается не так часто, это зависит как от задачи, так и от умения программиста пользоваться обобщённым кодом. Т.е. если сразу сесть после C++ на Haskell, то, например IO, скорее всего будет занимать столько же, так как по привычке будет переписано в лоб.
Ну не обязательно всё вносить с таблицу. Человек, много писавший на Си++, а затем попробовавший достаточно много писать на Хаскеле, чисто субъективно заметит разницу.
Если интересуют измерения, то код со сплайновой геометрией на Haskell занял у меня 500 строк, на C++ 3к+. Ошибки и добавление функциональности сравнивать, к сожалению, конкретно в этом примере смысла нет, так как на Haskell был написан и отлажен прототип. И хотя доказательств для данного случая привести не могу, чисто субъективно REPL на порядок ускорил написание кода — можно было код исправлять почти на ходу и смотреть работоспособность.

Я неоднократно слышал от различных людей, что если код на Haskell компилируется, то он работает (это, конечно, явное преувеличение, но имеется в виду эффект в сравнении с другим языком, обычно C++). Так что можно сделать примерный вывод о времени, потраченном на исправление багов.
Вы их перечислили ;)
С кодировками сейчас проблем нет.
encodeString CP1251 . decodeString UTF8
Спасибо за статью. При переходе на Хаскель я постепенно я всё больше убеждался, что некоторые якобы недостатки на самом деле лишь достоинства: отсутствие перегрузки; разделение именования типов, конструкторов и функций; неизменяемые значения.
А эффект «компилируется значит работает» производит неизгладимое впечатление даже сейчас.
Для меня, например, было адом понять что такое «функция» и что означает что функция «возвращает» значение, и нафига нужны функции которые возвращают «пустое» значение — это взрывало мой тринадцатилетний моск.

Вот именно, императивное понятие «функция» взрывает мозг.
А по алгебре в 13 лет вполне себе проходят преобразования математических функций. Т.е. понятие о функциях в ФП у них уже есть.
В Small Basic этот т.н. знак «равенства» несёт совсем другую смысловую нагрузку.
Тринадцатилетний пацан изучает СЛАУ и преобразования (растяжение, сжатие, ...) функций, но не знает, что это такое?
Императивный стиль он навязывает ещё как.
По поводу того, хорошо ли «отступы делай как хочешь» и «типов нет» — это ещё можно поспорить.
Какой-то надуманный пример. А вот это
string GetInfo( int personId );
что возвращает? Имя, фамилию или номер паспорта? Не в кортежах дело. В ФП их используют повсеместно и неудобств больших не имеют.
Количество одновременно удерживаемых в быстрой памяти объектов крайне сильно влияют на интеллект. При превышении определённого числа становится доступна для понимания рекурсия.
Известен опыт над обезьянами, у которых в стае такой параметр у одних обезьян 2, у других 3 (он не меняется в течение жизни), так вот первые всю жизнь не могли научиться держать камень, удерживать на нем кокос и лупить сверху камнем.
Я вот не припомню никакой путаницы
Желаю вам большего энтузиазма, чем хватило мне :)
Вот Вам и противоречие: у программистов есть гордость, а у дворецких её быть не должно.

Дело тут не в гордости. Эта особенность не имеет целенаправленности, просто об этих мелочах думать надо, а до этого надо их ещё и придумать, и многие из них не так тривиально реализуются, поэтому и не делают, потому что сил тратится много, лучше потратить его на некий офигенный функционал, чем задрачивать до блеска текущий. Так что, имхо, не делают, потому что «и так работает, ты лучше экспорт прикрути», а вывести окошко куда проще, чем продумывать архитектуру.
Я как-то сделал загрузку фоновым режимом, т.е. интерфейс не подвисает ни при изначальной загрузке, ни при открытии файла, всегда можно закрыть программу или отменить открытие, но разве это кто заметил? Но тем не менее, я за это горд.
Поведение хрома — одна из самых приятных мелочей, что я встречал. Ещё одна: при выделении курсором IE выделяет слово, однако если немного поводить курсором, намекнув, что нужен кусок слова, — он так и сделает. Некоторые это считали даже багом, однако в других браузерах этого дико не хватает, особенно когда слово на границе экрана.
Отличные картинки :)
47 инструментов, одновременно может быть использовано 4.

У программистов есть 3 числа: 0, 1 и много.

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность