StackOverflow’s 2018 developer survey revealed the startling fact that F# is the world’s most highly paid language, and the 8th highest paid language in the US. Is this because F# is the most sought-after language? Not exactly…
This thread was posted by one of our members via one of our news source trackers.
Coming from Elixir, I’ve found the F# in the book Domain Modeling Made Functional almost absurdly easy to read. The book was recommended by a friend to help with thinking about a project in Elixir and Phoenix.
But I have a question: how much stuff other than F# do you need to learn in order to really use F#? Do you need to learn the whole .Net universe, and do you need a good grasp of C# to actually use F# in a real project? How tough is that stuff?
Sadly my personal life struggles and work load have made me severely reduce my exploratory walks on the internet for such an underrated pieces of tech.
But from some months ago I still remember The Unison language. Having the language itself find and cache common sub-structures inside it as content-addressable DB definitely sounds like the future to me.
Plus the older I get the more cranky I get about “language X is best! no, language Y is better!” stuff. Fact is, I haven’t found an excellent language, ever, and believe me I tried.
Another thought while we’re on this: I believe in the near future language syntax and runtime implementation will get separated. One example in how this is already happening are all languages that use LLVM for their compiler backend – Rust, Gerbil Scheme, and many others.
So if there’s an underrated language / tech out there, it should emphasize on a few key elements – mostly ability to mutate the code easily with tooling.
Classic programming will die in the next few decades. There’s a huge pressure to be able to issue commands like “remove this route” or “add this REST API endpoint” or “add a property test for module X with limitations A, B and C”. And I’d love to work on that but hey, nobody is paying for it so for now it’s just a hobby… hobby for which I scarcely have the time. sigh
Another language that is underestimated is Fortran (I mean modern Fortran 2003 and up). Despite its age Fortran is really powerful language and if used well quite modern - it has modules, pure functions, interfaces, OOP, operator overloading, direct interoperability with C, native multidimensional array operations (like Matlab or NumPy). Also speed, for numerical calculations nothing beats Fortran.
I’ve been confused about how to structure an app, and Scott Wlaschin’s book helped a good deal with thinking about how to organize contexts, modules, how to think about them communicating with each other.
Unlike Elixir, F# is statically typed, and Domain Modeling Made Functional turns the custom types knob up to 11 to match the way non-programming stakeholders in a project might think and talk (no strings or ints or floats). It’s awesome, actually. I’m guessing that similar moves might possibly work in Elixir with embedded Ecto schemas or module structs made just so. But I haven’t tried anything there yet, but it certainly helps to have in my mind while I’m setting up a schema for example.
That was primarily because of no memory aliasing in the older versions (and hence why most BLAS libs are made in it). Other languages with no aliasing issues either, like rust, can theoretically compile to the same speed as fortran for pure number work (these are often the cases when rust outperforms C/C++ for otherwise identical code).
F# is quite nice, basically it’s just a .NET OCaml (you can even copy/paste most OCaml code in and it will just work, that don’t use higher typed modules that is, it bugs me that F# lacks those as they are so crazy useful, instead F# going the .NET style of ugly dynamic dispatch instead) with extra features on top since then too (F# moves faster than OCaml, though it is also less uniformly designed than OCaml, some questionable things added, where OCaml drills it to pieces before they add in something new to make sure it’s the best it can be nowadays).