Вопрос

Будучи разработчиком C # начиная с версии 1.0, F # захватил мое свободное время за последние несколько недель.Компьютеры сейчас продаются с 2, 4 ..Ядра и многопоточность не всегда просты в исполнении.

На данный момент я вижу, что F # обладает большим потенциалом для сложных и / или тяжелых рабочих нагрузок.Считаете ли вы, что F # (как только RTM) станет важным игроком на рынке корпоративного программного обеспечения?

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

Решение

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

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

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

Я думаю, что у F # есть отличная возможность проникнуть в некоторые нишевые области корпоративных приложений, такие как математическое моделирование (напримердля банковских / торговых приложений).Устранение побочных эффектов из функций также открывает большие возможности для параллелизма и запоминания.Трудно сказать, появятся ли когда-нибудь эти языки для массового развития, но, на мой взгляд, проблемы, скорее всего, будут ориентированы на человека (т.е.отсутствие навыков и высокая обучаемость для людей, знакомых с более типичными языками, такими как c # / java / c ++), а не с техническими.

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

C # / VB всегда будут основными языками, но F # лучше справляется со сложными задачами.C # имеет более общее назначение, в то время как F # лучше разбирается в IA, статистике, естественных науках (например, поиске лекарства от рака) и т.д.F # никогда не заменит C #, но это позволит .NET, чтобы конкурировать в большем количестве областей компьютерных наук.Что касается интеллектуального анализа данных и обработки больших объемов данных, вам лучше разрабатывать непосредственно в базе данных - например, SQL Server или oracle.

Что касается того, что F # трудно выучить, то это только потому, что мы были "испорчены" императивным образом мышления в большинстве других языков.Трудно разучиться тому, чем занимаешься 5 лет!Кроме того, по моему опыту, использовать ocaml и F # одно удовольствие.Единственная жалоба, которую я имею на F # / Ocaml, заключается в том, что большую часть времени люди злоупотребляют выводом типов, что делает код нечитаемым.Я бы предпочел объявлять типы переменных, чтобы упростить их обслуживание.

Я думаю, что F # всегда будет нишевым языком по сравнению с VB / C # / Java, потому что для него требуется больше знаний в области математики или компьютерных наук.Однако сам факт того, что это язык CLR, означает, что он будет иметь гораздо больший доступ, чем более ранние функциональные языки.

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

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