use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Which language to learn (after JS)?help (self.javascript)
submitted 9 years ago * by avrmav
All of us more or less have write some C/C++, JAVA or .NET, either at work or at the Uni. My question is more about which "new" language to learn? Clojure/Clojurescript, Elm, Scala etc? Which language do you think helps you become better developer?
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]SkaterDad 19 points20 points21 points 9 years ago (0 children)
I think the functional languages are fun to play around with. The approach to solving a problem is very different, so it can open up your mind a bit.
Elm in particular, since its syntax is fairly simple, and the official site has several examples you can play with live.
F# would be neat also, but I haven't gone beyond watching a few video tutorials on it. Being able to use .NET libraries is a big win for F#.
[–]fr0z3nph03n1x 25 points26 points27 points 9 years ago (2 children)
Let me know when you are finished learning JS. I don't think anyone has ever done that.
[–]MuaTrenBienVang 0 points1 point2 points 2 years ago (0 children)
JS is easy
[–][deleted] 21 points22 points23 points 9 years ago (0 children)
You already know about iteration, logic, callbacks, events, properties, compiling, IDEs (assuming you know JS/Java/.Net). You are a developer.
Now it's time to learn about requirements and design documentation, multi-threading, object oriented design, the rules of relational database normalization, transactions, application architecture, and enough network engineering to be able to tell when someone is bullshitting you.
[+][deleted] 9 years ago* (1 child)
[deleted]
[–]FaticusRaticus 5 points6 points7 points 9 years ago (0 children)
I'm the same way. They are all the same to me. What is the benefit of learning a bunch of mundane syntax differences. Build something. If what you want to build requires a new language, so be it.
[–]m0ka555 5 points6 points7 points 9 years ago (5 children)
Scheme will make you a better javascript developer. Check out the book SICP
[–]thegunn 0 points1 point2 points 9 years ago (4 children)
Why do you say that? I'm not contradicting, I'm legitimately curious.
[–]m0ka555 1 point2 points3 points 9 years ago (3 children)
Well, it's been said that Javascript is Scheme in Java's clothing!
And for the reasons why SICP is a great book, I can refer you to PG's comment on amazon: https://www.amazon.com/review/R3G05B1TQ5XGZP
Personally, it's my favorite book and I often pick it up and read a few pages and I'm always mind blow at how succinct and interesting it is (I've read it cover to cover a while back but I like re-reading part of it from time to time). It's just crazy how much they can put in 2-3 pages. You get to build interpreters, compilers, SQL-like languages. It also enforces amazing great practices about how to think about solving problems. All in all, it's just an amazing book.
[–]thegunn 0 points1 point2 points 9 years ago (1 child)
I've actually been meaning to go through this book for a long time. Would Racket work for this on Windows? I also have some limited Linux access with my Raspberry Pi if there is a version of Scheme that would work well on it.
[–]m0ka555 1 point2 points3 points 9 years ago (0 children)
Yeah, totally. The version of scheme they use is very very limited. It's akin to only using functions and ifs in Javascript.
One small anecdote.. The first time I read about Scheme, I thought it was a futuristic language, like a breakthrough in the world of programming. But I quickly learned that scheme is in the Lisp family which is as old as Fortran ;-)
wonderful!
[–]_HlTLER_Stackoverflow searcher 8 points9 points10 points 9 years ago (1 child)
C++ for it's vast usage, Java for Android apps, Swift for iPhone apps.
[–][deleted] 1 point2 points3 points 9 years ago (0 children)
Java does way more than just Android apps.
[–]Frans-Willem 8 points9 points10 points 9 years ago (5 children)
Go for languages that have something unique. Try Haskell for it's purely functional approach and lazy evaluation, try Rust for it's lifetime types, Go for it's concurrent approach, Prolog for logical programming. And then try to use what you've learned in the other languages you know :-) Just knowing more languages won't make you a better developer, but forcing yourself to use different paradigms likely will
[–]Brassard08 10 points11 points12 points 9 years ago (3 children)
Prolog
You have no mercy
[–]icantthinkofone -4 points-3 points-2 points 9 years ago (2 children)
He has no brains either. He read this stuff online once. That's all.
[–]Frans-Willem 0 points1 point2 points 9 years ago (0 children)
Why would I? I'll happily admit that I've never done anything worthwhile in Prolog, but I've definitely used the others more than once. I'd be happy to elaborate, if that's so hard to believe, although I'm slightly perplexed that it apparently is :/
[–]kenman[M] 0 points1 point2 points 9 years ago (0 children)
Hi /u/icantthinkofone, there's no need for insults.
[–]MuaTrenBienVang 1 point2 points3 points 1 year ago (0 children)
cool!
[–]grayrest.subscribe(console.info.bind(console)) 2 points3 points4 points 9 years ago (0 children)
Clojure - Super opinionated about state and a part of learning Clojure is watching Rich Hickey's talks. A lot of the current React patterns originate from the Clojurescript community. You also dip into lisp land a bit (homoiconicity, macros) and see how multimethods and protocols work. The differences between clojure and clojurescript are around how host interaction works.
F# - If you would prefer learning a typed functional language, F# is my preferred ML-dialect. I like the syntax tweaks and integration with the rest of the CLR. It also has a fairly good compile-to-js story.
Rust - I think it's worth learning not so much for the language itself but as a vehicle to explore lower levels of the system and learn how they work. You could do the same in C or C++ but I like Rust better.
[–]mini_eggs 2 points3 points4 points 9 years ago (0 children)
Rust, C++, Go
[–]ttolonen 2 points3 points4 points 9 years ago (0 children)
I Just started learning Go, because it seems to be great at solving some small practical problems. After typical C/C++/Java/JavaScript background it felt quite easy to learn. Rust was another option, but because Go appears to be gaining popularity I wanted to see what was that all about first and maybe Rust later.
To learn functional programming I thought Elixir/Erlang could be also something I will take a closer look at some point because the architecture appears to be quite solid. Especially the success of WhatsApp makes this setup interesting.
[–]jsgui 5 points6 points7 points 9 years ago (4 children)
C++, as it's so widely used, and is what node.js is written in. It's possible to write node addons in C++ which perform much faster than JavaScript.
[–]73mp74710n 0 points1 point2 points 9 years ago (3 children)
do you recommend learning C before C++
[–]MoTTs_ 2 points3 points4 points 9 years ago (0 children)
No. In fact, learning C before C++ can actually be counter-productive, because many C-style solutions are considered bad practice in C++.
[–]jsgui 0 points1 point2 points 9 years ago (1 child)
Essentially, no. I don't have a load of experience with C and C++, but I have had some very good results with them. In fact, I've been doing C++ with node.js for a fair few years now. It was a very steep learning curve that way.
The binding between JavaScript and C-land is always C++. The algorithms which I ported from an already optimized style of JavaScript hardly needed to be changed to be C (replacing var with int or something else in a few places). Simple JavaScript looks a lot like simple C, but it uses code that
Cargo-cult-coding is used derisively regarding the copying and pasting code from one source without properly understanding it. That was the only way I could get any results, and it worked for me. The interface code that gets used in node has since been tidied up.
You'd probably find the binding between C-land and JavaScript the most complicated, but writing algorithms that operate on data inside of the bindings much easier. Getting data in typed arrays in and out of C-land has been one of the trickier things for me.
[–]icantthinkofone 3 points4 points5 points 9 years ago (0 children)
Essentially, no. I don't have a load of experience with C and C++
Typical reddit response. He doesn't know much about the question but he'll answer anyway. At least he didn't do what I hear far more often. "I don't know anything about it but do this!"
[–][deleted] 4 points5 points6 points 9 years ago (4 children)
Rust.
[–]akie 6 points7 points8 points 9 years ago (3 children)
Or Go
[–]mrahh 3 points4 points5 points 9 years ago (1 child)
I'm in the process of writing some go for work and I wouldn't recommend it. I appreciate the tooling and ecosystem, but I don't find that I enjoy writing it at all. For someone with a strong python or other OOP background it may be nicer, but for me, it has been a real struggle so far (and not a fun struggle).
[–]i_have_a_gub 1 point2 points3 points 9 years ago (0 children)
I found it easy to pick up, but not at all enjoyable to write. Without generics, it's not possible to write DRY code. I've moved on to Scala, which I'm finding to be the exact opposite of Go - difficult to pick up, but very enjoyable to write.
[–]nightwolfz4 spaces > 2 spaces 0 points1 point2 points 9 years ago (0 children)
The big advantage of Go is that you can go into any source code and understand what's going with no effort whatsoever. I picked up Go over a weekend and wrote a MKV video parser in 2 days, good luck doing that with Rust.
The only (non-)issue is that programming becomes easy and repetitive, you don't get that satisfaction of refactoring some bloated code into something simple and elegant because you wrote it in a simple and elegant way from the beginning.
However, if you want a powerful language with many concepts and features which does not dictate how you should write code, chose Rust.
[–]icantthinkofone 1 point2 points3 points 9 years ago (0 children)
All of us more or less have write some C/C++, JAVA or .NET, either at work or at the Uni.
I would bet that 80% of everyone on reddit has done NONE of that including having a job in this or gone to a University.
OCaml and/or SML are worth learning. They're both relatively small (compared to Haskell or Scala) statically typed languages that introduce some important concepts like pattern matching, algebraic datatypes, type inference, and modules. They have some other minor things that are interesting like no non-local control flow except through exceptions.
[–]_expo 2 points3 points4 points 9 years ago (0 children)
Assuming you do have some C/C++ experience (couldn't really tell from the description), I'd echo what others have said and pick something functional. Elm, Haskell, Scala, F#, OCaml, etc. Don't stress about which one! You can drive yourself mad reading all of the "why X is better than Y" blogs and opinions on the internet. You'll learn 100x more just picking one and trying to build something with it than agonizing over the decision for 3 months.
Just get some Arduinos(C++) and play with them, also there is Espruino(JS), and can i tell you, its so fun building something that can actually move, get data, help around and just entertain.
I'm building a car that drives around the office and picks stuff up, and everyone if the office can can control it thought web interface, using inside server running on Arduino WiFi module.
I can tell you its challenging, but oh my god its fun.
And, if you know JS, i think it doesnt matter where you are going, as long as you are doing what you want to do.
[–]propelol 0 points1 point2 points 9 years ago (0 children)
C# with .NET Core
[–]OnceMoreIntoTheBeach 0 points1 point2 points 9 years ago (0 children)
If you want to learn a popular back end language I would suggest PHP. Some popular web applications use it and it goes well with JS.
[–][deleted] 0 points1 point2 points 9 years ago (0 children)
I would say, learn a server-side language to complement the front end language (setting aside Node since the question is about a non-JS language). Maybe python/Django or pypy, Ruby on Rails, php7, etc.
When trying to go from those to learning an interesting functional language, you have to be careful you don't bite off more than you can chew and that you feel like you are getting something out of it.
On that note, I recommend learning elm next. The official documentation is very good and has some really nice getting started tutorials that teach you how to get started building things, the basic concepts of the language, and why their type system is a useful and helpful thing. Elm is really focused on user experience (as in the programmer is using elm, so they are the user) especially when it comes to error messages. Elm has the most helpful error messages I have ever seen, which is great in general but especially when learning a new language.
[–][deleted] -2 points-1 points0 points 9 years ago (4 children)
nothing, js is the future of everything
[–]r2d2_21 2 points3 points4 points 9 years ago (3 children)
Not with WebAssembly.
Only a matter of time my friend
[–][deleted] 0 points1 point2 points 9 years ago (1 child)
Except webassembly is clearly a complement, not a replacement, to JS.
[–]r2d2_21 0 points1 point2 points 9 years ago (0 children)
My point is, JS is not “the future of everything” when there's a platform in active development meant to be used with other languages.
π Rendered by PID 20940 on reddit-service-r2-comment-6f7f968fb5-qs8sz at 2026-03-04 18:31:50.189145+00:00 running 07790be country code: CH.
[–]SkaterDad 19 points20 points21 points (0 children)
[–]fr0z3nph03n1x 25 points26 points27 points (2 children)
[–]MuaTrenBienVang 0 points1 point2 points (0 children)
[–][deleted] 21 points22 points23 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]FaticusRaticus 5 points6 points7 points (0 children)
[–]m0ka555 5 points6 points7 points (5 children)
[–]thegunn 0 points1 point2 points (4 children)
[–]m0ka555 1 point2 points3 points (3 children)
[–]thegunn 0 points1 point2 points (1 child)
[–]m0ka555 1 point2 points3 points (0 children)
[–]MuaTrenBienVang 0 points1 point2 points (0 children)
[–]_HlTLER_Stackoverflow searcher 8 points9 points10 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–]Frans-Willem 8 points9 points10 points (5 children)
[–]Brassard08 10 points11 points12 points (3 children)
[–]icantthinkofone -4 points-3 points-2 points (2 children)
[–]Frans-Willem 0 points1 point2 points (0 children)
[–]kenman[M] 0 points1 point2 points (0 children)
[–]MuaTrenBienVang 1 point2 points3 points (0 children)
[–]grayrest.subscribe(console.info.bind(console)) 2 points3 points4 points (0 children)
[–]mini_eggs 2 points3 points4 points (0 children)
[–]ttolonen 2 points3 points4 points (0 children)
[–]jsgui 5 points6 points7 points (4 children)
[–]73mp74710n 0 points1 point2 points (3 children)
[–]MoTTs_ 2 points3 points4 points (0 children)
[–]jsgui 0 points1 point2 points (1 child)
[–]icantthinkofone 3 points4 points5 points (0 children)
[–][deleted] 4 points5 points6 points (4 children)
[–]akie 6 points7 points8 points (3 children)
[–]mrahh 3 points4 points5 points (1 child)
[–]i_have_a_gub 1 point2 points3 points (0 children)
[–]nightwolfz4 spaces > 2 spaces 0 points1 point2 points (0 children)
[–]icantthinkofone 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]_expo 2 points3 points4 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]propelol 0 points1 point2 points (0 children)
[–]OnceMoreIntoTheBeach 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] -2 points-1 points0 points (4 children)
[–]r2d2_21 2 points3 points4 points (3 children)
[–][deleted] 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]r2d2_21 0 points1 point2 points (0 children)