Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>As a bonus, it can also improve your skills in your existing languages.

I'd actually say that doing so is the easiest way to grow stylistically as a programmer. Each language has their own way of doing things. Some of those things are done really well, others, well, not so much. If you've never dipped your toe outside of the core language pool, it's tough to know just what those things are.

Every language I've ever learned has opened my eyes to a new way of doing things. As a guy who cut his teeth on Python, I'd say that I didn't really "understand" hardcore OOP until I picked up Java. You just don't see that every-noun-is-now-a-class style often in Python. Closures "clicked" when I picked up Javascript, and really deep lambda use didn't really sink in until I picked up Scala.

I had, of course, always used these things in Python, but only on a surface level. Exploring an environment where some small feature of your primary language is the big common feature of another is very eye opening. You pop out the other side with tons of new knowledge and usage patterns.



> As a guy who cut his teeth on Python, I'd say that I didn't really "understand" hardcore OOP until I picked up Java. You just don't see that every-noun-is-now-a-class style often in Python.

This sounds really weird to me considering that almost every noun is a class in Python, but that's not the case in Java (primitives are not classes and there's no easy to use meta-class construction).


You're right, everything is an object in Python. However, what I'm referring to is more on the application design side that you see in the enterprise Java community, rather than the implementation of the core types or builtins.


Hopefully this offends everyone &| starts yet another pointless religious debate: Java was a reaction to C/C++ (language safety); Python was a reaction to Perl's messes; and Ruby is polished Perl. And bonus: Go was a reaction to Java and C++ compiles taking forever.

With production usage, each platform matures through attempts to learn from the past while not forgetting too much before that.

(Sadly, though most everything will be coded in javascript.)


There's hope! With a sufficiently complex caching and verification system, we can deploy chunks of JS that implement interpreters in-browser, last a long time, and can possibly be pre-compiled into an optimized form.

If we really view JS as assembly for the web, I think there's an interesting future.


I would call Java hardcore class-based/design pattern programming more than hardcore OOP. If you want hardcore OOP try smalltalk or Common Lisp's CLOS.

However I agree that going from Python to Java can seem like hardcore OOP. It's tempting to argue that hardcore OOP is relative, but I like to go by Alan Kay's definition which is pretty easy to prove/disprove.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: