Хочу все знать. Язык Scheme
У каждого языка программирования своё назначение. Одни прекрасно подходят для веба, другие для десктопных приложений, в третьих нуждается Data Science, а есть языки, которые идеально подходят для знакомства с программированием. Мы уже говорили про Logo, про Scratch, пришло время перейти на более высокую ступень образования и познакомить вас с Scheme.
Краткая справка
В конце 60-х годов 20 века ученые Массачусетского технологического института Гай Стил (Guy Steele) и Джеральд Сассмен (Gerald Sussman) приступили к разработке очередного диалекта языка Lisp. Они хотели лишь его ограничений, в том числе сложности синтаксиса и не до конца проработанных алгоритмов функционального программирования.
В итоге ученые опубликовали целую серию заметок, выходивших вплоть до 1980 года, в которых описывались идеи лямбда-вычислений, хвостовой рекурсии и итеративного подхода. Позднее они получили название Lambda Papers и стали одним из катализаторов запуска функционального программирования в массы.
На основе описанных концепций и появился язык Scheme, который с небольшими доработками дожил до сегодняшнего дня.
Синтаксис
Прежде, чем мы рассмотрим синтаксис, рекомендую почитать Викиучебник по Scheme. Здесь просто и на конкретных примерах показано, как выглядят функции, конструкции и собственно сам код. Мастером Scheme с викиучебником вы не станете, но вряд ли это нужно.
Для тех, кому лень переходить по ссылке и читать объёмную статью, несколько базовых принципов языка.
-
Круглые скобки. Любое законченное выражение должно быть заключено в них. Это отпугивает тех, кто видит код впервые, но впоследствии на практике не вызывает сложностей.
-
Никаких дополнительных служебных символов. Хватит скобок. Точка с запятой, кстати, отделяет от кода комментарии.
-
Построение конструкций по типу «действие-предмет». В языке программирования это смотрится необычно, но в переводе на естественный язык вполне понятно.
В остальном, с точки зрения синтаксиса — классический упрощённый язык программирования. Взгляните на простой пример вычисления факториала:
(define (factorial n)
(if (= n 0)
1
(* n (factorial (- n 1)))))
Как видите, кроме порядка записи и большого количества скобок, ничего необычного.
Где применяется
Scheme изучается в американских школах и вузах. С его помощью студенты познают азы как процедурного программирования, так и функционального. Ни с каким другим базовым языком такой фокус проделать не получится.
А вот в жизни после учебы Scheme не имеет конкретной области применения. Как правило это продолжения студенческих проектов, небольшие куски кода и пробные релизы. Причин непопулярности несколько:
- большой объём кода;
- сложность отладки и поиска ошибок;
- отсутствие функциональных преимуществ в сравнении с Common Lisp, Haskell, Clojure и пр.
В общем, зарабатывать деньги языком Scheme весьма проблематично.
Однако для желающих применить знания на практике были разработаны интерпретаторы: Racket и Bigloo. Они расширяют стандартные возможности Scheme, в том числе синтаксис, а также открывают новый функционал: визуализация, работа с матрицами и массивами, прямое взаимодействие с другими языками.
Перспективы
Несмотря на то, что Scheme нашёл себя только в образовании, он входит в топ-50 рейтинга TIOBE. Но есть негативная тенденция — язык ежегодно теряет 0,05% популярности. Вызвано это появлением конкурентов, пригодных для функционального программирования, имеющих больше возможностей для применения в жизни, и при этом простых.
Таким образом, велика вероятность, что через 5-10 лет язык пропадёт с радаров, а его место займёт какой-нибудь Scratch. Но пока этого не произошло, давайте уделим несколько минут своей жизни знакомству с Scheme. Своей 47-летней историей он это заслужил.
Освоить востребованную профессию в Data Science можно всего за полтора года на курсах GeekBrains. После учёбы вы сможете работать по специальностям Data Scientist, Data Analyst, Machine Learning, Engineer Computer Vision-специалист или NLP-специалист.