Главное Авторские колонки Вакансии Образование
😼
Выбор
редакции
arrow-right Created with Sketch. Дмитрий Дементий 4 481 2 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Зачем изучать Racket

По запросу программист JavaScript на HH.ru можно найти тысячи вакансий, а вот по запросу программист Racket предложений работы нет. Тем не менее язык Racket заслуживает внимания. Давайте разберёмся, почему.
Мнение автора может не совпадать с мнением редакции

Что такое Racket: язык семейства Lisp

На платформе Code Basics большая часть курсов предназначена для новичков. На них изучаются основы программирования, которые уже знают более или менее опытные программисты. Курс по Racket стоит особняком. Он в первую очередь заинтересует тех разработчиков, которые уже работают с одним или несколькими языками программирования, но хотят развиваться.

Racket — язык программирования, который входит в семейство Lisp. Это мультипарадигменный язык общего назначения. То есть программист может работать с Racket, не ограничиваясь каким-то одним стилем программирования. Синтаксис Racket простой и читабельный. Этим язык напоминает Python.

Одно из основных назначений Racket — создание языков программирования. Это нашло отражение в трёх принципах языка, которые изложены в манифесте Racket:

  1. Racket разработан для создания языков программирования. С его помощью можно написать и быстро выпустить новый язык.
  2. Racket предоставляет строительные блоки для создания прочных защитных механизмов. Благодаря этому программисты могут защищать компоненты от клиентов, которые являются пользователями компонентов.
  3. Racket превращает экстралингвистические механизмы в лингвистические конструкции. Благодаря этому программисты избегают необходимости использовать экстралингвистические механизмы.

Ядро Racket включает модули, макросы, лексические замыкания, хвостовую рекурсию и другие возможности. Это высокоуровневый язык программирования. Он редко используется в практической разработке, но изучение этого языка очень полезно для программистов.

Почему изучение Racket прокачивает разработчика: это способ преодолеть ограничения одного языка

Руководитель Хекслета Кирилл Мокевнин коснулся темы изучения Racket в стриме на YouTube. По словам Кирилла, когда специалист изучает один язык и работает с одним языком, его мышление трансформируется или даже деформируется под соответствующий язык. Программист начинает смотреть на задачи через призму своего языка.

Одно из решений этой проблемы — обучение программированию не на том языке, на котором специалист планирует работать. Например, программисту на JavaScript будет полезно потратить время и сначала изучить Python, а потом перейти к JS.

Ещё одно возможное решение — изучение второго языка программирования, который концептуально отличается от основного языка, с которым работает специалист.

На роль второго языка в данном случае отлично подходит всё семейство Lisp в общем и Racket в частности. Языки группы Lisp сильно отличаются от других языков программирования. Благодаря этому программист учится смотреть на проблему с разных сторон. Он становится универсальным специалистом, преодолевает ограничения одного языка.

Почему ещё стоит познакомиться с Racket: этот язык быстрее и удобнее Python, JavaScript и Java

На этот вопрос отвечает Мэттью Баттерик в статье Why Racket? Why Lisp?, основные тезисы которой приводятся ниже.

Racket — потомок Scheme. Это один из самых популярных диалектов Lisp. То есть Racket, как отмечалось выше, входит в семейство Lisp. Мэттью Баттерик обратил внимание на редкое использование Racket и других языков семейства Lisp в практических проектах. Поэтому он решил понять ценность этой группы инструментов.

Баттерик прочитал несколько книг, включая Хакеры и художники Пола Грэма. Также он читал блоги и форумы. Мэтью нашёл много восторженных отзывов о Lisp в целом и о Racket в частности от тех, кто уже пользуется данными языками. Также он нашёл много негативных отзывов от тех, кому Lisp не нравится. По словам Баттерика, он не нашёл ясных и убедительных аргументов в пользу изучения и использования Lisp, поэтому решил разобраться с вопросом самостоятельно.

Мэтью Баттерик никогда официально не работал программистом. Он скорее использует программирование как вспомогательный инструмент в веб-дизайне, которым занимается профессионально. В основном он пишет код на Racket. По словам Мэттью, программирование приносит ему деньги, поэтому он считает себя в том числе профессиональным программистом. Тем не менее Баттерик чувствует себя зелёным новичком в сообществе Racket, так как в этом комьюнити много людей со степенями PhD в computer science.

Справка: PhD или доктор философии в computer science или другой дисциплине — аналог степеней кандидат наук или доктор наук на постсоветском пространстве.

По словам Мэттью, с помощью Racket он превращает свои идеи в программы быстрее и с меньшим количеством ошибок, чем с помощью других языков, с которыми когда-то работал. А это, ни много ни мало, BASIC, C, C++, Perl, Java, JavaScript, Python и ещё несколько языков.

Обратите внимание ещё раз: по мнению Баттерика, Racket позволяет писать код быстрее и с меньшим количеством ошибок, чем такие популярные и востребованные языки, как JavaScript, Python, Java и другие.

Что же даёт Racket программисту: выразительность

Большинство опытных программистов знает о Lisp. Во-первых, это один из старейших языков программирования. Его используют с 1958 года. Во-вторых, за Lisp закрепилась репутация языка для гиков или для элиты программирования. Одна из причин — в знаменитой книге и курсе Массачусетского технологического института Структура и интерпретация компьютерных программ (СИКП) используется Scheme, один из диалектов LISP.

Кстати, бесплатный курс по СИКП есть на Хекслете, нашей основной обучающей платформе.

Тем не менее Racket и другие языки семейства Lisp не входят в число самых востребованных среди практических разработчиков. В этом можно убедиться, если сравнить количество репозиториев Racket с количеством репозиторием JavaScript или PHP на GitHub. Разница исчисляется несколькими порядками, и она не в пользу Racket.

Что же в таком случае получает программист, который знакомится с этим языком? Мэттью Баттерик говорит, что это выразительность. Например, знаменитое Hello World на Racket выглядит так:

Сравните это с другим, менее выразительным языком:

Выразительность определяет другие характеристики Racket: точность, читабельность, гибкость, способность к обобщениям.

По сравнению с другими языками, языки семейства Lisp очень выразительные. Баттерик сравнивает это с мощным спортивным мотоциклом, которым можно легко управлять с помощью незаметных движений.

___

Бесплатный курс по Racket на Code Basics будет полезным как для начинающих, так и для продолжающих программистов. Когда пройдёте его, поделитесь пожалуйста впечатлениями в комментариях к этой статье.

+1
В избр. Сохранено
Авторизуйтесь
Вход с паролем