Недавно мне пришло очередное письмо от одного из читателей блога. Автор письма сетовал, что на кафедре, на которой он учится, мало внимания уделяется программированию, а также интересовался, не знаю ли я каких-нибудь приемов, способствующих изучению нового языка программирования. Вот, что я думаю по этом поводу.
Недавно я получил от читателей блога несколько похожих вопросов. Дескать, я хочу стать программистом, и мне интересно исключительно функциональное программирование. С какого языка вы бы посоветовали начать и где найти материалы по нему? Так вот, по моему убеждению, суровая действительность такова, что ни один из функциональных языков не подходит на роль первого.
Так ли плоха динамическая типизация?
10 апреля 2013
В последнее время наблюдается большой интерес к языкам программирования со статической типизацией. Зачастую тот факт, что в неком языке (Scala, Haskell, OCaml, …) используется статическая типизация, преподносится в качестве неоспоримого преимущества этого языка над языками программирования с динамической типизацией (Erlang, Clojure и другие лиспы, Perl, Python, Ruby, …). Здесь имеет место явная подмена понятий, манипуляция неокрепшим сознанием неопытных программистов, троллинг, пропаганда и другие нехорошие вещи.
Моя первая программа… в этот раз на Scala
11 марта 2013
Перепробовав странные и никому на практике ненужные Haskell, OCaml, Perl 6, Common Lisp, Vala, Go, а также немного D, что, впрочем, не было отражено в этом блоге, я решил обратить свое внимание на Scala. Этот язык заинтересовал меня тем, что он отдаленно напоминает OCaml, только без этих ужасных параметризованных модулей, зато с разными плюшками и под JVM, что в последнее время я не склонен считать за недостаток. К тому же, достоверно известно, что на Scala уже сегодня пишут вполне себе реальные проекты, и в их число входит далеко не один только Twitter.
Пытаюсь изучать Objective Caml
6 февраля 2013
Все-таки есть основания полагать, что Haskell местами излишне сложен и несколько оторван от действительности. Когда речь заходит о реальной разработке, возникает желание писать на языке попроще, где по умолчанию не используются ленивые вычисления, где при необходимости можно прибегнуть к ссылкам, наследованию, побочным эффектам и тп. И чтобы никаких матанов типа монад, аппликативных функторов, iteratees и застежек. Примерно как в OCaml.
Первые впечатления от Common Lisp
7 января 2013
Некоторое время назад я наконец-то дочитал книжку «ANSI Common Lisp». В действительности, это уже мой второй подход к CL. До этого я пытался читать «Practical Common Lisp», но как-то не пошло. Теперь же я осилил книгу полностью (ну почти, там приложений на 100 страниц…) и даже написал какую-никакую программку.
В закладки — язык программирования Vala
27 ноября 2012
Что будет, если взять некое подмножество языка C++ и попытаться избавиться от различных его недостатков? Java? Хорошо, теперь выкидываем виртуальную машину и добавляем пару элементов функционального программирования. То, что мы получим в итоге, и есть Vala.
Обзор механизмов сборки мусора
15 октября 2012
Ни одна достаточно сложная современная программа не обходится без сборки мусора, ручной или автоматической. Тут уж ничего не поделаешь — оперативная память до сих пор остается дорогим ресурсом и мы не можем не освобождать ее по мере возможности. Так какие же существуют подходы к сборке мусора?
Изучаем Perl 6: установка Rakudo Star и первый скрипт
4 сентября 2012
Вы, бесспорно, уже наслышаны о Perl 6. Многие ошибочно полагают, что этот язык находится в ранней стадии разработки и появится только лет через пять. Но в действительности попробовать Perl 6 можно уже сегодня и, более того, он уже вполне пригоден для написания реальных программ.
Написал свой первый простенький скрипт на Erlang
25 июля 2012
Что не говори, а изучение новых языков программирования редко оказывается пустой тратой времени. Даже если изучаемый язык не придется использовать на практике, в процессе изучения вы скорее всего в той или иной мере сломаете себе мозг (в хорошем смысле), то есть, откроете для себя новые подходы к решению неких проблем. В дальнейшем эти подходы могут быть использованы вами независимо от языка программирования.