Если вы уже знаете LISP, зачем вам изучать F #? - PullRequest
7 голосов
/ 24 сентября 2008

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

Ответы [ 11 ]

19 голосов
/ 24 сентября 2008

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

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

6 голосов
/ 26 февраля 2009

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

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

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

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

6 голосов
/ 24 сентября 2008

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

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

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

5 голосов
/ 24 сентября 2008

Учитывая, что LISP динамически типизирован, а F # статически типизирован, я считаю такие сравнения странными.

3 голосов
/ 26 февраля 2009

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

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

3 голосов
/ 19 октября 2008

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

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

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

3 голосов
/ 24 сентября 2008

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

Но я не знаю, так что нет.

2 голосов
/ 26 февраля 2009

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

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

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

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

1 голос
/ 24 сентября 2008

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

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

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

0 голосов
/ 16 марта 2015

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

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

...