Вопрос

В чем польза от изучения F#, если вы уже знакомы с LISP?

Это было полезно?

Решение

Многие из них являются относительно недавними разработками в мире языков программирования.Это то, что вы увидите в F#, но не увидите в Lisp, особенно в Common Lisp, поскольку стандарт F# все еще находится в стадии разработки.В результате вы обнаружите, что вам есть чему поучиться.Конечно, такие вещи, как ADT, сопоставление с образцом, монады и каррирование, можно создать в Lisp как библиотеку, но лучше научиться использовать их на языке, в котором они удобно встроены.

Самым большим преимуществом изучения F# для практического использования является его интеграция с .NET.

Другие советы

Сравнивать Lisp напрямую с F# не совсем корректно, потому что в конце концов, если у вас будет достаточно времени, вы сможете написать одно и то же приложение на любом языке.

Однако, вам следует изучать F# по тем же причинам, по которым его должен изучать разработчик C# или Java — потому что он позволяет функциональное программирование на платформе .NET..Я не на 100% знаком с Lisp, но предполагаю, что у него те же проблемы, что и у OCaml, поскольку нет поддержки звездных библиотек.Как вы осуществляете доступ к базе данных в Lisp?А как насчет высокопроизводительной графики?

Если вы хотите узнать больше о том, «Почему .NET», ознакомьтесь с этим ТАК вопрос.

Если бы вы знали F# и Lisp, вы бы нашли этот вопрос довольно странным.

Как отмечали другие, Лисп динамически типизированный.Что еще более важно, уникальной особенностью Лиспа является то, что он гомоиконен: Код Lisp — это фундаментальный тип данных Lisp. (список).Макросистема пользуется этим, позволяя вам писать код, который выполняется во время компиляции и изменяет другой код.

В F# нет ничего подобного — это статически типизированный язык, который заимствует множество идей из ML и Haskell и запускает его на .NET.

То, что вы спрашиваете, похоже на вопрос: «Зачем мне учиться пользоваться ложкой, если я умею пользоваться вилкой?»

Учитывая, что LISP является динамически типизированным, а F# — статическим, я нахожу такие сравнения странными.

Если бы я перешел с Lisp на F#, то это было бы исключительно потому, что у меня была задача, которую можно было бы получить с помощью какой-нибудь библиотеки, предназначенной только для .NET.

Но я этого не делаю, поэтому я не такой.

Деньги.Код F# уже более ценен, чем код Lisp, и этот разрыв будет очень быстро увеличиваться по мере широкого распространения F#.

Другими словами, у вас гораздо больше шансов получить стабильный доход, используя F#, чем используя Lisp.

Ура, Джон Харроп.

F# — это совершенно другой язык по сравнению с большинством диалектов Лиспа.Таким образом, F# дает вам совершенно другой взгляд на программирование — угол, которому вы не научитесь у Lisp.Большинство диалектов Лиспа лучше всего использовать для поэтапной интерактивной разработки символьного программного обеспечения.В то же время большинство диалектов Lisp не являются языками функционального программирования, а больше похожи на мультипарадигмальные языки - с разными диалектами, придающими разный вес поддержке функций FPL (без побочных эффектов, неизменяемых структур данных, алгебраических типов данных и т. д.).Таким образом, в большинстве диалектов Лиспа либо отсутствует статическая типизация, либо ей не уделяется особого внимания.

Итак, если вы знаете какой-либо диалект Лиспа, то изучение F# может иметь большой смысл.Только не думайте, что большая часть ваших знаний Lisp применима к F#, поскольку F# — это совсем другой язык.Точно так же, как императивное программирование, используемое на C или Java, требует отвыкания от некоторых идей при изучении Lisp, также необходимо отучиться от привычек Lisp (без типов, побочных эффектов, макросов и т. д.) при использовании F#.F# также поддерживается Microsoft и использует преимущества платформы .net.

Преимущество F # состоит в том, что разработка .NET (в целом) очень широко распространена, легко доступна и более массовая.

Если вы хотите писать код на F#, вы можете получить Visual Studio, которая уже есть у многих разработчиков... вместо того, чтобы запускать среду LISP.

Кроме того, существующие разработчики .NET гораздо чаще будут смотреть на F#, чем на LISP, если это что-то для вас значит.

(Это слова разработчика .NET, который кодировал LISP и любил его, когда учился в колледже).

Я не уверен, что ты бы это сделал?Если вы находите F # интересным, это будет причиной.Если работа требует этого, то это будет повод.Если вы думаете, что это повысит вашу продуктивность или принесет вам дополнительную ценность по сравнению с вашими текущими знаниями, это будет причиной.

Но если вы не находите F# интересным, ваша работа не требует его и вы не думаете, что это сделает вас более продуктивным или принесет вам дополнительную ценность, тогда зачем вам это нужно?

С другой стороны, если вопрос заключается в том, что F # дает, чего нет в lisp, то следует рассмотреть вывод типа, сопоставление шаблонов и интеграцию с остальной частью .NET Framework.

Я знаю, что эта тема старая, но, поскольку я наткнулся на нее, я просто хотел прокомментировать свои причины.Я изучаю F# просто ради профессиональных возможностей, поскольку .NET имеет большой вес в категории компаний, которые доминируют в моей области.Функциональная парадигма становится все более популярной среди компаний, ориентированных на количественные показатели и данные, и я хотел бы быть одним из первых, кто присоединился к этой тенденции.В настоящее время не существует сильного функционального языка, который полностью и безопасно интегрируется с библиотекой .NET.На самом деле я пытался портировать некоторый .NET из кода Lisp, и это действительно проблема, потому что FFI поддерживает только примитивы C, а совместимость .NET требует конструкции «интерфейса», и хотя я знаю, как это сделать на C, это действительно огромная задача. боль.Было бы очень, очень хорошо, если бы Lisp приложил дополнительные усилия в своем следующем стандарте и потребовал бы класс C++ (включая виртуальные функции с виртуальными таблицами) и тип интерфейса в стиле C# в своем FFI.Может быть, даже добавить тип стиля интерфейса Java.Это обеспечит полную совместимость с библиотекой .NET и сделает Lisp сильным соперником в качестве крупномасштабного языка.Однако, несмотря на все вышесказанное, опыт работы с Lisp облегчил изучение F#.И мне нравится, как F# приложил дополнительные усилия, чтобы предоставить типы, которые обычно работают с количественными типами.Я считаю, что F# был создан с расчетом на математическую работу, и это само по себе имеет ценность по сравнению с Lisp.

Один из способов взглянуть на это (исходный вопрос) — сопоставить язык (и связанные с ним инструменты и платформы) с непосредственной задачей.Если задача требует огромного количества кода .NET и для решения задачи потребуется меньше усилий на одном языке, чем на другом, тогда идите по пути наименьшего сопротивления (F#).Если вам не нужны возможности .NET, вам комфортно работать с LISP и нет необходимости отказываться от него, продолжайте использовать его.

На самом деле это не сильно отличается от сравнения молотка с гаечным ключом.Выберите инструмент, который наиболее эффективно подходит для работы.Попытка выбрать объективно «лучший» инструмент — нонсенс.Да и в любом случае через 20 лет все «горячие» сейчас языки все равно могут устареть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top