Scala — весьма перспективный язык программирования, работающий на виртуальной машине Java. Он появился в 2003 году, но уже успел завоевать солидную репутацию. Достаточно сказать, что Twitter частично перешёл на Scala, чтобы справиться с возросшими нагрузками.
Курс «Функциональное программирование на языке Scala» ведёт Мартин Одерски, создатель языка Scala. Он работает в EPFL (Швейцария), одном из самых известных технических вузов мира. Для того, чтобы понимать материалы курса, надо быть знакомым с программированием и знать основы Java.
Все задания на программирование надо будет писать на Scala, но сам курс достаточно фундаментальный. Он основан на классическом учебнике «Структура и интерпретация компьютерных программ» (SICP) Харольда Абельсона и Джеральда Сассмана. В курсе пойдёт речь о функциональном программировании и о том, как его эффективно сочетать с объектно-ориентированным программированием.
План занятий
Курс начался 18 сентября 2013 и рассчитан на 7 недель. Темы каждой из семи недель:
Этот курс — отличное введение в функциональное программирование. Если до этого вы работали только с процедурным программированием, то здесь вы найдёте принципиально новые подходы к решению задач. По отзыву одного из прошлых студентов, многие функции в этом курсе занимают одну-две строчки, но додуматься до них не так просто.
Слабые стороны курса
Многие студенты потратили на курс намного больше времени, чем заявленные 5-7 часов в неделю. Задания проверяются досконально, пусть и автоматически. На сдачу даётся всего пять попыток, поэтому студентам придётся внимательно отнестись к отладке своего кода и написанию дополнительных тестов. Кроме того, в самом начале курса следует настроить среду программирования и разобраться, как отправлять задания.
Что изучать дальше?
Если вам понравилось «Функциональное программирование», то обратите внимание на два следующих курса:
«Языки программирования». Основы языков программирования с уклоном в функциональное программирование. Используются языки ML, Racket и Ruby. Повтор курса намечен на 3 октября.