Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

* Functional is generally better but don't be crazy about it.

* Have tests but don't be crazy about it.

* Keep your development process as streamlined as possible.

* New languages generally aren't as hard as you might think and they might be the right tool.

* The right tool for the right job can make a huge difference.



I would have upvoted you if it wasn't for your last sentence which is the most hyped in our industry. WRT this sometime ago I wrote this in a S.E. answer:

I'm a hater of the sentence "use the right tool for the job". Nowadays, any language can do pretty much anything you want to do with it (except if the language has recently been created and is still in the early stages, e.g.: Elm?).

So then IMO these days what you have to do to choose your programming language is not ask what you're going to do, but know what you want to avoid.

So I use this rule of thumb:

    Do I want to avoid paying licenses (or resorting to piracy if I'm in the early days of a startup and I don't want to spend money), then I choose a language and a set of tools which have open source implementations (compiler and class libraries) (i.e.: C++11 vs MS Managed C++)
    Do I want to avoid chasing memory leaks for the rest of my life? Yes, therefore I use a language which has garbage collection (i.e. Java vs C).
    Do I want to avoid painful evolution of my project, especially when it's getting larger (wrt easy refactoring and maintainability)? Then I use a statically typed language instead of a dynamically typed one (i.e. TypeScript vs JavaScript).
    Do I want to avoid recent headaches I've had with other software projects in which concurrency was very hard (read: race conditions), then I choose a functional language (to achieve immutability, avoid side-effects, etc.) (i.e: F# vs C#).
And it's not that I ran out of questions, there are many more...

But, did you guess it? The questions above are the most important ones you should ask yourself when choosing the next language to use/learn, in my opinion. And, did you guess it? This is why my current favorite programming language is F#: because you can avoid most of the pitfalls that you find in other programming languages in the industry, and you still can do pretty much anything with it.


Cool :)

I use Python for anything related to text processing or webscraping. I use Haxe for when I'm doing cross platform game programming. I use React for web UI / front end work. Erlang for distributed stuff. In each of those cases I've tried other tools and the ones I prefer now seem much more effective ...

I've never done anything in F#


You can do text processing and webscraping easily with F#. React is a framework, not a language (you can still use React with F# if you transpile it to Javascript). You can do cross platform game programming in F# too. And distributed programming of course.




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

Search: