F# и корпоративное программное обеспечение

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
835
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

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

Неизменяемые характеристики определенно отлично подходят для параллельного выполнения. Я должен признать, что к этому мне нужно немного привыкнуть.

Alexandre Brisebois 20.09.2008 01:08

Да, к этому определенно нужно привыкнуть, но в то же время можно довольно свободно решать проблему, описывая саму проблему, а не описывая шаги, которые вы предпримете для ее решения.

fryguybob 20.09.2008 01:15

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

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

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

Alexandre Brisebois 24.09.2008 11:16

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

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

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

Alexandre Brisebois 23.09.2008 17:14

Я не согласен с тем, что для этого требуется знание математики / CS. Для понимания таких вещей требуется, чтобы емкость. Но опять же, этого, вероятно, достаточно, чтобы ограничиться «нишей».

MichaelGG 27.01.2009 23:12

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

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

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