W pewnych kręgach F# jest stosowany - było nawet na tym forum.
Ale ogólnie jest to bardzo niszowy język - o wiele częściej słyszę o Haskelu czy Erlang / Elixir.
To że nie słychać o F# na forach, nie znaczy że nie jest stosowany tu i ówdzie w przemyśle ;) Ja mówię
tutaj akturat o rozwiązaniach dużych firm, bo w takich albo pracowałem, albo z takimi obecnie (jako kontraktowiec)
współpracuje.
F# do data miningu? To chyba dla fascynatów tego języka, Python, R czy Java pewnie prześcigają F# w popularności w tej dziedzinie już na rozbiegu.
Gdybyś wiedział o jak dużym systemie piszę i dla jakiego klienta był tworzony (a obecnie jest utrzymywany i rozwijany), pewnie nie użyłbyś określenia "fascynaci języka" :)
Dzisiaj na rynku język i technologię dobiera się na potrzeby danego problemu, a nie odwrotnie - a soft za który klient płaci grube miliony i który ma
8-letni okres gwarancji, ma działać wg restrykcyjnych wymagań i spełniać SLA, przecież nie jest robiony na zasadzie "weźmy język X, do Stasio mówił że to fajny język". Moduł do ETL'a i data miningu wytworzony w F# obsługuje w tym systemie (reszta jest w Java EE) specyficzną hurtownie danych w architelturze MOLAP, gdzie po testach pilotażowych z Javą i komercyjnymi bibliotekami do ETL'a / data miningu - po prostu Java okazała się słabo wydajna a kod kosmicznie skomplikowany i "nie utrzymywalny". Głównie chodziło o złożone przetwarzanie i buforowanie bardzo skomplikowanych struktur zasilanych do hurtowni i później bardzo złożone, równoległe zapytania (z mocno wyżyłowanym 'queries per minute'). F# ze swoim Async.Parallel i mechanizmem agentów (bardzo wydajna współbieżność wykorzystująca przekazywanie komunikatów) - okazał się wygodniejszy, szybszy, a kod kilkanaście razy krótszy niż nieoptymalny odpowiednik w Javie...
A Python??? :)) Python ze swoją "wydajnością" to do zaawansowanego ETL (przewalającego po 800 GB danych do jednej kostki MOLAP) i data miningu nadaje się jak Bash do tworzenia sieci neuronowych :D
Decyzja o zastosowaniu F# była podjęta przez PM'a po kilkumiesięcznych testach, ewaluacji, rozmowach z firmą, która robiła w F# podobne rozwiązanie itd...
Statystyka z dziś z Googla:
F# data mining: 101 000 wyników
C# data mining: 647 000 wyników
Python data mining: 1 100 000 wyników
java data mining: 1 500 000 wyników
R data mining: 69 600 000 wyników
Błagam :-) Wyniki z Google nie świadczą jeszcze o stosowaniu pewnych technologii w krytycznych rozwiązaniach :-) Ja nie piszę o startupach, czy ilości projektów i projekcików na githubie przecież, ani o tym co jest popularne na StackOverflow. Dam Ci taki przykład. W poprzedniej firmie, w której ja odpowiadałem za kawałki związane z Dockerem, duży zespół "wojował" z bardzo skomplikowanym silnikiem reguł, który "gadał" z resztą systemu poprzez webserwisy. Reguły były tak złożone, że ani Jess, ani Droolsy, ani żadne CLIPSy nie nadawały się do tego nawet w 10%. Co więcej reguły musiały kontrolować kilkuetapowy, zautomatyzowany proces przetwarzania dużych komunikatów z dziesiątkami załączników.. No i koniec końców NAJLEPSZY w tym zastosowaniu okazał się komercyjny (i genialnie skalowalny) Sicstus Prolog z mechanizmam CLP (Constraint Logic Programming). Nawet nie będę wspominał o tym ILE zarabiali programiści Prologa którzy zbudowali to rozwiązanie versus np. starsi projektanci Javy w tym samym projekcie :) Żeby było ciekawiej rozwiązanie okazało się tak dobre i wydajne - że ci sami kolesie (wcześniej podkupieni przez moją firmę) rozwijają coś podobnego w kolejnym projekcie (tyle że to już projekt NATO'wski i nieco inna domena biznesowa).
Tymczasem jak wpiszesz w google Prolog, albo sprawdzisz popularność Prologa w porównaniu z Javą, to jak sądzisz? Jakie otrzymasz wyniki? ;-)
MZ