Hacker News new | past | comments | ask | show | jobs | submit login

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.





Although I really like elixir, I thought he asked for something with static typing?


elixir 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.


> 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?


You 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.


https://nim-lang.org/

I would consider Nim. Maybe the ecosystem is not there yet but they are getting many things right.


For limited side effect support in Haskell see: https://wiki.haskell.org/IO_inside


Basically F#


MS 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.


The 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.


F# 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.


Scala is exactly what you're looking for.


> 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.


I am glad you are enjoying Ruby and OOP, but this is not a place to be rude to others.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: