
Ask HN: I want to learn a new language, tell me why I should use your language - DiabloD3
Since a lot of language pimping gets to the front page on HN, it is obvious there is a wide, diverse, and eclectic assortment of favorites out there.<p>I have a new project I want to work on, but I&#x27;m not sure what language I want to use. So, I&#x27;m asking all of you, tell me why I should use your favorite language.<p>Languages I know and have had favorable experiences with:
C
Perl
Erlang
sh
Java<p>Languages I know and am not a fan of:
Ruby
Python<p>Languages that I would not mind doing a full scale project in the future with:
Rust
C#
Lisp implementations like Racket or Chicken
======
coreyp_1
JavaScript. People love to hate it, but I believe that that's just because
they never actually bothered to learn it properly. That being said, I have
developed a great deal of respect for it for its capabilities and flexibility.
I assume that you probably already "know" it like most devs do, but I
encourage you to go back and build something big with it. You might be
surprised.

In terms of flexibility, you can use most of the major programming styles with
it (Procedural, OO, Prototypical, Functional), as well as Synchronous and
aSynchronous (evented) flow. You can mix them as needed. There is an IDE,
debugger, and execution engine on every OS. It has matured over time (and is
still being refined). It is high-level enough to make programming grunt-work
bearable, but still feels intuitive for those of us who love the low-level
stuff (C++ and Assembly are actually my favorites). It has closures. And
websockets!!!!

Drawbacks: lack of threads and pointers. Yes, I miss them.

~~~
thomasfoster96
Clarification: WebSockets aren't part of JavaScript. But you can sort-of
simulate pointers with Typed Array views.

------
AnimalMuppet
Do you want to do the project to learn a language, or do you want to learn a
language to do the project? Which is the real goal, doing the project or
learning the language?

If the real goal is to do the project, then pick the language that makes it
the easiest to do the project. "Already know it" is one part of "makes it
easiest", but the other part is "stuff I don't have to write because the
language and/or libraries do it for me".

If the real goal is to learn a language, do you want to learn it to expand
your professional experience, or to grow your knowledge of programming? Do you
want money, or knowledge?

If you want the professional experience, then you need to pick a language that
you have a realistic probability of getting paid to use (unless your project
becomes a product, but then you want to pick the language that makes it
easiest to create _and maintain_ that product).

If you want to expand your knowledge, pick a language that is fairly distant
from what you know, but still is a realistic implementation language for your
project.

I know, I didn't actually answer the question...

------
sidcool
Scala. Because it combines the best of OO and Functional worlds. Martin
Odersky has done something amazing. He has managed to create a language that
strikes a balance between academic purism and the needs of practical business.

Haskell, Idris, Erlang, Lisp etc. are excellent languages as well. This is
just my opinion.

