Какова добавленная ценность для обучения F #, когда вы уже знакомы с LISP?
Если вы уже знаете LISP, почему вы также хотите узнать F #?
Ответ 1
- Статическая типизация (с типом вывода)
- Алгебраические типы данных
- Соответствие шаблону
- Расширяемое сопоставление шаблонов с активными шаблонами.
- Currying (с хорошим синтаксисом)
- Монадическое программирование, называемое "рабочими потоками", обеспечивает хороший способ выполнения асинхронного программирования.
Многие из них являются относительно недавними событиями в мире языков программирования. Это то, что вы увидите в F #, что вы не будете в Lisp, особенно Common Lisp, потому что стандарт F # все еще находится в разработке. В результате вы обнаружите, что есть чему поучиться. Конечно, такие вещи, как ADT, сопоставление образцов, монады и currying, могут быть построены как библиотека в Lisp, но лучше узнать, как их использовать на языке, на котором они удобно встроены.
Самым большим преимуществом обучения F # для реального использования является интеграция с .NET.
Ответ 2
Сравнение Lisp напрямую с F # не очень справедливо, потому что в конце дня с достаточным временем вы можете написать одно и то же приложение на любом языке.
Однако вы должны изучить F # по тем же причинам, что и разработчик С# или Java, потому что он позволяет выполнять функциональное программирование на платформе .NET. Я не на 100% знаком с Lisp, но я предполагаю, что у него есть те же проблемы, что и OCaml, в том, что поддержка библиотеки не существует. Как вы выполняете доступ к базе данных в Lisp? Как насчет высокопроизводительной графики?
Если вы хотите узнать больше о "Почему .NET", ознакомьтесь с этим вопросом SO.
Ответ 3
Если вы знали F # и Lisp, вы могли бы задать довольно странный вопрос.
Как указывали другие, Lisp динамически типизирован. Что еще более важно, уникальной особенностью Lisp является то, что он homoiconic: Lisp код является фундаментальным Lisp типом данных (список). Макросистема использует это, позволяя вам писать код , который выполняется во время компиляции и изменяет другой код.
F # не имеет ничего подобного: это статически типизированный язык, который заимствует много идей от ML и Haskell и запускает его на .NET.
То, что вы просите, сродни "Почему мне нужно научиться использовать ложку, если я знаю, как использовать вилку?"
Ответ 4
Учитывая, что LISP динамически типизирован и F # статически типизирован, я нахожу такие сравнения странными.
Ответ 5
Если бы я переключился с Lisp на F #, это было бы исключительно потому, что у меня была задача на моих руках, которая очень помогла мне в какой-то .NET-библиотеке.
Но я этого не делаю, поэтому нет.
Ответ 6
Деньги. Код F # уже более ценен, чем код Lisp, и этот разрыв будет расширяться очень быстро, поскольку F # видит широкое распространение.
Другими словами, у вас гораздо больше шансов заработать стабильный доход с помощью F #, чем с помощью Lisp.
Cheers, Джон Харроп.
Ответ 7
F # - это совсем другой язык по сравнению с большинством диалектов Lisp. Таким образом, F # дает вам совсем другой угол программирования - угол, который вы не узнаете из Lisp. Большинство диалектов Lisp лучше всего использовать для инкрементной интерактивной разработки символического программного обеспечения. В то же время большинство диалектов Lisp не являются языками функционального программирования, а скорее похожими на языки с несколькими парадигмами - с разными диалектами, различающими вес по поддерживающим функциям FPL (без побочных эффектов, неизменяемых структур данных, алгебраических типов данных,...). Таким образом, большинство диалогов Lisp либо не имеют статического набора текста, либо не уделяют ему особого внимания.
Итак, если вы знаете какой-то диалект Lisp, то изучение F # может иметь большой смысл. Просто не думайте, что большая часть вашего знания Lisp относится к F #, так как F # - это совсем другой язык. Насколько важно, чтобы императивное программирование, используемое для C или Java, должно было отучивать некоторые идеи при изучении Lisp, также необходимо отучить привычки Lisp (без типов, побочных эффектов, макросов,...) при использовании F #. F # также управляется Microsoft и использует инфраструктуру .net.
Ответ 8
F # имеет то преимущество, что разработка .NET(в целом) очень широко используется, легко доступна и больше массового рынка.
Если вы хотите скомпоновать F #, вы можете получить Visual Studio, что многие разработчики уже имеют... в отличие от того, чтобы среда LISP работала.
Кроме того, существующие разработчики .NET гораздо чаще смотрят на F #, чем LISP, если это что-то для вас значит.
(Это происходит от разработчика .NET, который кодировал и любил LISP, в то время как в колледже).
Ответ 9
Я не уверен, что бы вы сделали? Если вы найдете F # интересным, это будет причиной. Если вы это делаете, это будет причиной. Если вы считаете, что это сделает вас более продуктивными или принесет вам дополнительную ценность по сравнению с вашими текущими знаниями, это будет причиной.
Но если вы не найдете F # интересным, ваша работа не требует его, и вы не думаете, что это сделает вас более продуктивным или принесет вам дополнительную ценность, тогда зачем вам?
Если вопрос, с другой стороны, заключается в том, что F # дает, что lisp нет, тогда следует учитывать тип вывода, сопоставление шаблонов и интеграцию с остальной частью платформы .NET.
Ответ 10
Я знаю, что эта ветка устарела, но поскольку я наткнулся на это, я просто хотел прокомментировать мои причины. Я изучаю F # просто для профессиональных возможностей, поскольку .NET несет в себе большой вес в категории компаний, которые доминируют в моей области. Функциональная парадигма растет среди более количественных и ориентированных на данные компаний, и я хотел бы стать одним из первых участников этой тенденции. В настоящее время не существует сильного функционального языка, который полностью и безопасно интегрируется с библиотекой .NET. Я фактически попытался перенести некоторый .NET из кода Lisp, и это действительно боль b/c, FFI поддерживает только примитивы C, а для интероперабельности .NET требуется конструкция "интерфейса", и хотя я знаю, как это сделать на C, это действительно огромная боль. Было бы действительно, действительно, хорошо, если бы Lisp прошел лишнюю милю в следующем стандарте и потребовал класс С++ (включая виртуальные функции w/vtables) и тип интерфейса стиля С# в нем FFI. Возможно, даже введите стиль стиля интерфейса Java. Это позволило бы полностью взаимодействовать с библиотекой .NET и сделать Lisp сильным соперником как крупномасштабный язык. Однако с учетом сказанного, исходя из фона Lisp, обучение F # было довольно простым. И мне нравится, как F # переместил лишнюю милю, чтобы предоставить типы, которые вы обычно увидите в количественном типе. Я считаю, что F # был создан с учетом математической работы и сам по себе имеет значение над Lisp.
Ответ 11
Один из способов взглянуть на это (исходный вопрос) - сопоставить язык (и связанные с ним инструменты и платформы) с ближайшей задачей. Если задача требует подавляющего процента от .NET-кода, и для этого потребуется меньше ботинок для обуви на одном языке, чем другой, чтобы выполнить задачу, затем перейдите на путь наименьшего сопротивления (F #). Если вам не нужны возможности .NET, и вам удобнее работать с LISP, и нет отгибания руки, чтобы отойти от него, продолжайте использовать его.
Не очень сильно отличается от сравнения молота с гаечным ключом. Выберите инструмент, который наиболее эффективно подходит для работы. Попытка выбрать инструмент, объективно "лучший" - это вздор. И в любом случае, через 20 лет все горячие языки могут быть устаревшими.