Which language should I start learning next?
Thinking of picking up a new language to learn this weekend, I know C++/Python/Java. Which one should I pick up?
If you all of these languages then I’d suggest get stronger on these 3 only. Just adding to your portfolio doesn’t makes sense unless you’re an expert in all of these
Don't learn a new language. Learn to do something new with language you know. That helps much more. Use your c++ skills on a Arduino or learn how python compiles to webassembly. That will help you much more.
You can try and learn haskell if you want to see a new language, but it's mostly useless to learn new languages given c++ Java and python are absorbing features from new languages all the time and newer version of c++ for example will have all features that you will see in the new language.
i agree. I just want to do something for fun. I am a super geek and I have already played enough with Arduino and RaspberryPi already xd
It depends on why you want to learn a new language. If you want to broaden your perspective on the field of computer science, then there are multiple options:
-
Learn any functional language. Functional languages are different from procedural languages in a way that functional languages do not modify the state of a variable and treat everything like a function, unlike procedural languages which follow a series of steps updating the state of variables to achieve the desired result. Since state modification is not a concern, you'll never face concurrency-related problems using functional languages. If you are very much interested in mathematics and can model algorithms using mathematical identities, you'll never have to worry about the correctness of the program since the identity invariants never change. "Closure" is a very nice functional language that compiles into bytecode via JVM. I would highly recommend that you read "The Structure And Interpretation of Computer Programming (SICP)" book if you want to know more about functional programming. (By the way, "YCombinator" is a function in Lisp and Paul Graham chose to dedicate his love for Lisp by naming his VC fund company by the same name. Source: https://en.wikipedia.org/wiki/Fixed-point_combinator#Y_combinator)
-
Learn "Rust". This seems to be the widely popular opinion on this thread and for a very strong reason too. Rust is a systems programming language that addresses modern hardware problems. It has been adopted by some of the prominent people in the world of computer science such as Linus Torvalds, John Carmack. In fact, it is the 2nd only language to be adopted by the Linux Kernel after C. Another beauty of Rust is that it compiles into wasm and allows you to write the code in both backend and frontend in Rust.
-
Then, of course, there's JavaScript. The language that powers 95%+ of the web. It is a multi-paradigm language that supports both imperative and declarative paradigms. It is functional, it is object-oriented and it is procedural. It has a unique architecture that supported the creation of early webpages, but the architecture found its way into the backend as well in the form of Node.js. As long as you are not doing floating point operations, and you are building simple data-in data-out applications, nothing shines better than JavaScript IMO.
-
There's Golang as well. But for some reason, I have never tried writing code in it after an introductory hello-world program in 2009.
-
Of late, I've been intrigued by "Zig" as a language. Although I've not tried it, I hear great things about it and its ability to create very fast applications.
During college in my coding club they taught Haskell. I wish I paid more attention. Thanks for your answer. I will read it again and again.
@Vindhyachal Colleges are meant for exploration only. The real learning starts beyond the 4 walls of college. :D
I have ordered course textbooks and read them cover-to-cover when I encountered problems while building applications. And boy were they beautifully written!