Является ли Lisp недооцененным и классическим вариантом для науки о данных, или его использование для науки о данных создаст больше проблем, чем решит?

Lisp - второй язык программирования высокого уровня, и, что более важно, он представил множество замечательных концепций, которые до сих пор используются во многих научных вычислительных приложениях. Хотя Lisp определенно относится к высокоуровневым, различия между Lisp-подобным языком и сотнями других языков программирования ощущаются повсеместно. Любопытно, что Lisp был связан с машинным обучением еще до того, как появились R или Python, но в наши дни он невероятно редко встречается в какой-либо дисциплине.

Итак, имея это в виду, почему мы не используем Lisp для науки о данных? Это не означает, что удивительный Python не должен быть лучшим языком программирования для научных вычислений, потому что он, безусловно, заслуживает этого места, но какие преимущества может дать добавление такого языка, как Common Lisp, в ваш арсенал Data Science?

Синтаксис

Очевидно, синтаксис Лиспа невероятно странный. Хотя он следует типичному функциональному вводу метода, затем параметров, он, безусловно, меняет ситуацию, вовлекая операторов с той же концепцией. Вдобавок пробелы - огромная часть синтаксиса Common Lisp. Это одна из главных причин, по которой я считаю, что Lisp не используется в Data Science. Хотя это может показаться идеальным с точки зрения парадигмы и набора текста, синтаксис может стать довольно запутанным и довольно быстро трудным для чтения. Написание или чтение Lisp часто может превратиться в игру, в которой вам постоянно нужно считать скобки. С помощью сложных алгоритмов, таких как модели машинного обучения, легко понять, почему Lisp может быть менее доступным языком, чем языки, которые в настоящее время используются в этой области.

Помимо странного синтаксиса, Лисп - невероятно специфический язык. Синтаксически намного меньше права на ошибку, и язык гораздо менее прощающий, чем что-то вроде Python, Julia или R. считаю, что самое главное, что удерживает его от этого, - это синтаксис, который гораздо менее разборчив, чем решение высокого уровня, подобное тому, что мы используем сегодня.

Мета-программирование

Несмотря на свой синтаксис, который со временем легче читать, у Lisp есть несколько ключевых преимуществ, которые делают его серьезным соперником в том или ином отношении. С точки зрения метапрограммирования Lisp, вероятно, является языком программирования с лучшей реализацией. Я уже продемонстрировал ранее, как мета может потенциально помочь в дисциплине Data Science, и если она будет настолько хорошо сделана и интегрирована, как в Lisp, это, безусловно, будет полезно.

Хотя Lisp, безусловно, отличный язык для мета, я думаю, что Джулия наверняка превзойдет его. Джулия обладает схожими способностями к метапрограммированию, а также входит в пакет, очень похожий на Python, что делает его понятным и легким для чтения разработчиками. Это основная причина того, что мы тоже так любим Python. Один из важнейших столпов независимых исследований - воспроизводимость. Вытянутый и более сложный код, особенно с точки зрения синтаксиса, определенно менее желателен для работы, которая требует рецензирования и изучения многими другими людьми. Так что, несмотря на фантастические качества метапрограммирования Лиспа, трудно спорить с тем, что лучших решений уже не существует. Даже Python имеет форму метапрограммирования, в которой используются декораторы классов, хотя реализация, безусловно, не идет ни в какое сравнение с чем-то вроде Julia или Lisp.

Общая простота использования

На самом деле Lisp терпит неудачу в том, насколько сложно использовать его в качестве основного языка. Чтобы было ясно - это определенно не вина Lisp. Важно помнить, что Lisp был выпущен как программное обеспечение с открытым исходным кодом в то время, когда не существовало Интернета и у большинства людей не было компьютера дома. Имея это в виду, использование пакетов далеко не так легко, как в Python или Julia. В Lisp пакеты необходимо загружать непосредственно из файлов, чтобы их можно было использовать, что, конечно, не очень хорошо для любого типа развертывания, записной книжки или анализа данных.

Есть еще несколько современных вариантов, которые противодействуют этому, например QuickLisp. QuickLisp позволяет вам иметь очень легкий менеджер пакетов, работающий вместе с вашей установкой Lisp. Это, конечно, при условии, что вы используете компилятор, поддерживающий QuickLisp, например компилятор Steel Bank.

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

Авто-код

В Лиспе есть одна фантастическая вещь, которую часто упускают из виду и которая действительно может быть отличной причиной использовать язык для машинного обучения:

Язык простой.

Хотя на первый взгляд синтаксис языка может показаться немного сложным и запутанным, сам язык на самом деле невероятно прост. Этот язык можно с легкостью переписать на большинстве языков, обычно это менее 1000 строк кода, что весьма впечатляет. Простота - это волшебство, когда дело касается метакода и автоматизации, и Lisp, безусловно, попадает в цель в этом отношении. Lisp давно известен своим простым, но точным синтаксисом, которым можно легко манипулировать и автоматически использовать для метапрограмм.

Заключение

Итак, Лисп, безусловно, действительно крутой язык, который, я думаю, большинству программистов стоит хотя бы попробовать. На этом языке не только весело работать, но я лично считаю, что он сделает вас гораздо лучшим программистом, особенно с точки зрения функционального программирования. Хотя Lisp действительно отличный классический язык для изучения, отсутствие в нем приложений Data Science имеет смысл. Этот язык труднее читать, чем большинство языков, которые мы используем сегодня в Data Science. Это большое дело в научном сообществе из-за экспертных оценок и воспроизводимых исследований. В результате, язык, который труднее читать, определенно станет большим шагом, о котором стоит спросить большинство специалистов по анализу данных.

Хотя этот язык отлично подходит для метапрограммирования, есть много других отличных вариантов, таких как язык программирования Julia. Эти языки более удобочитаемы и имеют гораздо более современные функции, такие как подлинный менеджер пакетов. Излишне говорить, что наличие менеджера пакетов и возможность легко управлять зависимостями - это очень хорошая вещь для специалиста по данным, и почти наверняка это то, чего не хватает в Common Lisp. Хотя есть такие варианты, как, например, QuickLisp, они действительно несравнимы с красотой и простотой использования менеджеров пакетов Python, Julia или R.

Самым большим преимуществом Lisp для дисциплины Data Science является его способность легко автоматизировать и использовать для самого метапрограммирования. Мета-программирование - отличная вещь, которая определенно может принести пользу науке о данных, но, на мой взгляд, заставит ли это вас усвоить Lisp полностью зависит от того, сколько вы используете мета в своей повседневной жизни программирования.