Live data from Hacker News

Ask HN: what language should I learn next?

news.ycombinator.com

41–50 of 63 posts

Re: Ask HN: what language should I learn next?

#41
post #8

I'm enjoying Clojure - in terms of web frameworks there's Webjure and Enclojure, for example. The latter seems more Rails-ish whereas the former is more Javaesque, but it's still pretty early days. I prefer Clojure to Common Lisp as it doesn't have a lot of the cruft you'll find in CL, it has some cool concurrency features, and you get easy access to any Java library you might want to use. Plus, the source code to th…

My personal opinion is that one should learn, and become comfortable in, Java before attempting Clojure. Clojure is a very neat little language, but if you don't understand what it's doing under the hood on the JVM, a lot of stuff is going to end up being mysterious. Don't get me wrong, I love the language to bits, but a lot of its beauty is in how it takes the existing Java model and does something cool with it - an…

Interesting. That's the exact same argument I made above with C and systems programming. Clojure has caught my eye, and I'm familiar with Java, but I'm not as familiar with the JVM itself. Any resources that are good overviews of the JVM?

Re: Ask HN: what language should I learn next?

#43
There's more to software besides the web. Start off by learning C. Learn enough so that you could understand this http://www.kegel.com/c10k.html - and see the implications of what's discussed there (low-level UNIX system calls, C code) on issues you deal with.

Finish learning C, by writing your own C compiler. Yes, really: pick up the dragon book, learn lexx/yacc and do it - it will test your knowledge of data structures and algorithms, automata/language theory and software engineering.

Learn Lisp or OCaml or Haskell just to know a functional language. Don't learn it to write webapps in it.

Learn Perl - and not just for webapps (although mod_perl is incredibly powerful as far as fast, transactional, web applications go), including Object Oriented Perl. Learn enough to automate your systems administration / operations tasks (being able to modify bugzilla would be a plus too).

Re: Ask HN: what language should I learn next?

#44
post #41

Earlier quoted context omitted.

My personal opinion is that one should learn, and become comfortable in, Java before attempting Clojure. Clojure is a very neat little language, but if you don't understand what it's doing under the hood on the JVM, a lot of stuff is going to end up being mysterious. Don't get me wrong, I love the language to bits, but a lot of its beauty is in how it takes the existing Java model and does something cool with it - an…

Interesting. That's the exact same argument I made above with C and systems programming. Clojure has caught my eye, and I'm familiar with Java, but I'm not as familiar with the JVM itself. Any resources that are good overviews of the JVM?

Well, if you want to carry the analogy further, to know Java is to know the basics of how the JVM looks at life. The JVM has concepts of class, inheritance, methods, instances, constructors, and garbage collection baked into it, and they have the same semantics as Java. Arguably, the only difference is one of coding: the JVM codes a Java method as a series of stack-based opcodes, and a class as a set of methods with attributes, but the basic operations are the same. JVM bytecode directly encodes all basic operations: "invoke method X on this class", "declare this method as public and static" - even "if an exception occurs between and , jump to handle it".

By contrast, there's a level of indirection between Clojure and the underlying JVM. And so, for much the same reasons as it's a good idea to know some C when doing systems programming, you won't really understand what Clojure is doing (especially not the stack-traces!) unless you understand Java.

There's also the practical point that, if you're working on the JVM, you'll be wanting to make use of the massive class libraries available for it. They're all written for native Java, so you'll have to be familiar with Java semantics to use them effectively. (Although the Lispy macro goodness means you can then wrap them up inside a concise functional abstraction when you're using them).

If you still want to look at the JVM (for fun, or for implementation reasons), I'd say a good knowledge of Java is enough to just jump head-first into the specification: http://java.sun.com/docs/books/jvms/second_edition/html/VMSp...

Re: Ask HN: what language should I learn next?

#47
post #21

No Perl fans here? Shame. :( I, then, humbly suggest Perl. You might like it, and with your Ruby background it shouldn't be hard to pick up.

Try learning to write mobile code in Sleep. Its like Perl with anonymous functions all over the place.

http://sleep.dashnine.org/

Actually, its my language. Couldn't resist the opportunity to plug it.

Re: Ask HN: what language should I learn next?

#48
If I had the time, I would pick up C. I've spent a number of years working with higher level languages like Java and Python, and while they're good and fun and all that, I feel knowing a low level language like C is important to be an effective (insert any computer related task/job).

I personally am really interested in learning C and then figuring out how to tie my C code into a Python module - maybe increase the speed of some of my code...

That said, I had used some Scheme back in school to write a parser for a stripped down version of C, and while it wasn't the most fun project ever, working with a functional programming language really opened my eyes (up until then it has been OOP/Java all the way).

Re: Ask HN: what language should I learn next?

#49
post #43

There's more to software besides the web. Start off by learning C. Learn enough so that you could understand this http://www.kegel.com/c10k.html - and see the implications of what's discussed there (low-level UNIX system calls, C code) on issues you deal with. Finish learning C, by writing your own C compiler. Yes, really: pick up the dragon book, learn lexx/yacc and do it - it will test your knowledge of data struct…

I second Perl. You can learn enough Perl in a week to write neato sed/grep/awk type programs and shell script tupe stuff to outfit your command line however you like. Also... it's a good investment because your tools will run on any platform. You can soak up a measure of Unix culture as you go and you'll pick up a swiss-army-chainsaw that you can use when your usual dev tools don't cut it.

Going up to the next level in Perl has a larger learning curve than you might expect... but the "low hanging fruit" are very easy to get the hang of.

Re: Ask HN: what language should I learn next?

#50

Earlier quoted context omitted.

Yep. I would learn Objective C and write an iPhone app. Or I would say to heck with it and learn Lisp. Why focus on a pragmatic language for web apps? You've got that already.

Great advice, ricree and m_fish. I think this is right on. That's why I don't want to learn Python - it looks like a great language, but I already have Ruby. I've been trying C and Scheme on the side, but through reading (SICP and K&R), and I've kind of hit a wall. I really want to put something into production that isn't written in Ruby, and an iPhone app would do the trick.

What wall, out of curiosity, are you hitting with C?
Post reply on HN