Ostatnio czytałem wiele wątków na temat funkcjonalnych języków programowania (prawie w ubiegłym roku). Naprawdę chciałbym wybrać jedną i dokładnie się jej nauczyć.
W ostatnim [kursie] semestrze zapoznałem się ze schematem. Kocham to. Uwielbiałem ekstremalną prostotę składni, zasadę homoikoniczności , makra ( higieniczne i niehigieniczne), n-arność procedur itp.
Problem ze schematem polega na tym, że jest to język akademicki. Nie sądzę, że jest tak naprawdę używany w środowiskach produkcyjnych. Nie wierzę też, że szczególnie dobrze jest mieć w naszym CV. Rozglądałem się za alternatywami. Jest ich wiele i wszystkie wydają się mieć podobny poziom popularności.
Kilka przemyśleń na temat innych języków funkcjonalnych, które rozważałem:
- Clojure: Brzmi świetnie, ponieważ może uzyskać dostęp do świata Java, jest zorientowany na skalowalność i współbieżność, ale czy świat Java nie jest teraz na krawędzi? Znam już całkiem dobrze Javę, ale czy byłoby mądrzej dodać jeszcze więcej energii w zależności od JVM?
- Haskell: Wygląda na bardzo doceniany język, ale z tego, co przeczytałem, jest to również język akademicki.
- Lisp: Istnieje od zawsze. Wygląda na to, że ma większość tego, co lubię ze Scheme. Ma dużą społeczność. Z tego, co [myślę, że wiem], jest to prawdopodobnie najczęściej używany funkcjonalny język programowania w przemyśle (?).
- F #: Naprawdę tego nie rozważałem. Nie jestem wielkim fanem stwardnienia rozsianego. Nie mam pieniędzy, aby zapłacić za ich oprogramowanie (mógłbym uwolnić je od sojuszy uniwersyteckich, ale jestem bardziej skłonny do korzystania z rozwiązań opartych na społeczności). Chociaż ... Myślę, że byłby to najlepszy wybór zorientowany na karierę.
Dzisiaj pochylam się w kierunku Lispa. Tydzień temu był to Haskell. Wcześniej była to Clojure. W ubiegłym roku robiłem trochę Schematu dla zabawy, nie pchając go z tego powodu, o którym wiesz. Teraz chciałbym poważnie potraktować (nauczyć się jednego, robić z nim prawdziwe projekty, być może w końcu profesjonalnie z nim pracować). Mój problem polega na tym, że musiałbym nauczyć się ich wszystkich dogłębnie, zanim będę mógł wybrać jeden.