Ask HN: I want to learn a new language, tell me why I should use your language
3 comments
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.
Haskell, Idris, Erlang, Lisp etc. are excellent languages as well. This is just my opinion.
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...
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...
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.
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.
Clarification: WebSockets aren't part of JavaScript. But you can sort-of simulate pointers with Typed Array views.
I have a new project I want to work on, but I'm not sure what language I want to use. So, I'm asking all of you, tell me why I should use your favorite language.
Languages I know and have had favorable experiences with: C Perl Erlang sh Java
Languages I know and am not a fan of: Ruby Python
Languages that I would not mind doing a full scale project in the future with: Rust C# Lisp implementations like Racket or Chicken