4 ms·
Never used Ruby really, apart from some Rails programming here and there, but I completely agree: dynamic typing + side effect + OO patterns => technical debt.
by noncoml 9y ago
Never used Ruby really, apart from some Rails programming here and there, but I completely agree: dynamic typing + side effect + OO patterns => technical debt.
On the other hand I think pure languages, like Haskell, take it too far.
My ideal language would be something like Haskell + limited side effect support(for IO) + ecosystem of something like Python or Java or Golang.
- tigershark 9y agoBasically F#
- tluyben2 9y agoMS still gets a lot of flack, but F# is nice imho (as is F* for the crazies like me by the way) and is getting better and better with the open source, Core etc. But for 'normal' environment, C# also just works a lot better for teams in my experience than something like Ruby. It might be just taste, but I did large projects in both and C# (also F#) make me sleep at night, while somehow the RoR stuff always needed constant attention (lot of breakage after security related gem updates etc). Nice if you have the people and need for that kind of thing, but a lot of what we do is set-and-forget (at least for a few years) which .NET allows generally. The only thing I don't like yet about the .NET dev experience is the lack of tooling, especially on Linux. But that's rapidly getting there, and is open source under a good license for the most part.
- pjmlp 9y agoF# has become a second class citizen on .NET with the team catching up with what the official .NET team (C# and VB.NET) is doing across all supported platforms. Even C++ has more tooling love than what F# currently has. Anyone that wants to be sure their code will run in whatever platform Microsoft might think of supporting next, should not focus too much on it, unless the wind changes again.
- pythonaut_16 9y agoThe thing that frustrates me about F# is it seems to be a bit of a frontier language on .NET. Theoretically you can use it anywhere you would use C#, but there's not a ton of examples or documentation out there. Googling ".NET MVC F#" returns an article from 2010 as its top result, for example.
- gtirloni 9y agoFor limited side effect support in Haskell see: https://wiki.haskell.org/IO_inside https://wiki.haskell.org/IO_inside
- halotrope 9y agoCheck out https://elixir-lang.org https://elixir-lang.org
- tigershark 9y agoAlthough I really like elixir, I thought he asked for something with static typing?
- dnautics 9y agoelixir is sufficiently close. It's reasonably strongly typed under the hood and although the spec syntax is a bit awkward, it can give you compile time assurances of correctness in a majority of cases if that's what you want static typing for. There is an argument for performance, but static typing really gets the performance benefit when you have fixed size data type arrays. Elixir has powerful bit and byte manipulation in the standard library for many such operations, and if you're really looking to do mathematical transformations of arrays and matrices, you shouldn't choose elixir.
- dinduks 9y ago> It's _reasonably_ strongly typed > time assurances of correctness _in a majority of cases_ So basically, let's do it and pray it works, maybe?
- dnautics 9y agoYou don't have to pray. In elixir/erlang the motto is let it fail. If it fails, it crashes, and you have supervisors that are nearly free, and your service will resume itself noncatastrophically. You're generally free to code the happy path.
- jaco8 9y agohttps://nim-lang.org/ https://nim-lang.org/ I would consider Nim. Maybe the ecosystem is not there yet but they are getting many things right.
- meesterdude 9y ago> dynamic typing + side effect + OO patterns = technical debt I love ruby, and agree it's not perfect, but thats not what technical debt is. And blanket including all "OO patterns" in your equation, and never having really used ruby, leads me to believe you don't know what you're talking about.
- noncoml 9y agoI am glad you are enjoying Ruby and OOP, but this is not a place to be rude to others.
- dinduks 9y agoScala is exactly what you're looking for.