Има смисъл да се учи functional programming, а обикновено се използва Scheme. Scheme е най-лесният възможен език, но доста хора не могат да свикнат с него, поради така наречените "Java schools". Една от причините да се ползва prefix notation е това, че операторите са функции. Тъй като във всички LISP езици нотацията е 'everything is an expression' + 'special forms', Scheme практически няма синтаксис - имаш expressions и special forms (define, cond, let). Въпреки че езикът е страшно simple (да не казвам прост), той предоставя един от най-силните модели за абстракция. Предишните курсове в MIT са били водени на Scheme и иммено оттам идва и една от библиите в програмирането:
http://mitpress.mit.edu/sicp/ .
Тази книга и курсът SICP променя начина на мислене на всеки програмист. Всеки който е вземал този курс го смята като най-полезното нещо от цялата студентска програма. Създаването на сложни системи не се състои в това да знаеш къде да сложиш ; или }, затова синтаксиса на езика не е от значение. Това което е от значение е инструментите с които може да създаваш абстракция, тъй като най-сложното нещо в една голяма система е 'fighting complexity'.
Functional езиците още така предоставят един много добър модел за днешните процесори. Тъй като там нямаш variables, а само values, ти всъщност създаваш name, който сочи към някакво value. Всички типове са immutable, това води до много лесен parallelism в бъдещ период без side effects. Също така functional програмите имат много по-малко (понякога никакъв) global state, обикновено са по-кратки и много по-лесни за разбиране.