HNHacker News
TopNewBestAskShowJobs

Mikera

60 karma · joined June 30, 2010

submissionscomments
Mikera··on Ask HN: Clojure vs Haskell for a first functional language?
I think it is worth learning both. Clojure is more "practical" in the sense that it is dynamic, impure and gives you access to the huge JVM library ecosystem, which is a huge advantage for real world projects. Haskell is pure and extremely elegant in an almost mathematical sense - if you want to learn the "true essence" of functional programming then it is ideal. Overall, Clojure is my favourite because of the practicality and the fact that it is compelling for other reasons (Lisp-style metaprogramming, interactive REPL development, code-as-data philosophy, concurrency features etc.)
Mikera··on Ask HN: How to get productive with the JVM in 48h?
First off, 48h is a tough call - the JVM is a huge ecosystem! You might want to moderate your expectations.

Personal suggestions would be:

- Get one of the major open source IDEs. I personally recommend Eclipse (http://www.eclipse.org/)

- Learn some Java first. Since it's the Ligua France on the JVM, you'll want to know it if only so you can read code. If you like your more modern languages you can always switch to Scala/Clojure later once you are familiar with the Java ecosystem.

- Play (http://www.playframework.org/) is a great framework for your web app. Give it a try.

- Netty is a great IO framework (http://netty.io/). If you really care about IO performance, you will probably want to use Netty (or something based on Netty). I've used Netty for low-latency game servers, for example.

Mikera··on [dead]
You also need to learn some economics. There is substantial evidence and supporting theory to suggest that absolute material wealth (once it exceeds a certain level of basic needs) makes relatively little difference to quality of life. See the "Easterlin paradox".

In particular, even if absolute material wealth does have some positive impact on quality of life, a culture that optimises solely for efficiency is almost certainly sub-optimal for quality of life.

I bet if you search your own experience you will find times when you did something that you weren't good at (and could easily have been done better by someone else more specialised) and found that you enjoyed it. The feeling of achieving something new and different and surprising? That's called quality of life my friend..... and many nomads a few thousand years ago probably had just as much of it as we do today

Mikera··on Modern Language Wishlist
This is basically a desciption of Clojure, in particular:

- Explicit model of time (http://www.infoq.com/presentations/Value-Identity-State-Rich...) - Homoiconic / Extensible syntax (shared by most Lisps) - Math-oriented numeric types (Clojure maths is arbitrary precision by default, and it has nice things like rational types) - Immutable (Clojure data structures are all immutable) - Garbage collection (inherited from the JVM) - String manipulation (Regular expressions are a built-in type)

Most of the other features actually seem more like libraries than language features, but given that Clojure can access the entire Java ecosystem I think you can do all of it from Clojure with relatively little pain.

Mikera··on Comparing JavaScript, CoffeeScript & ClojureScript
Clojure also supports prototype-based polymorphism via Associative objects, inheritance polymorphism via Java interop/proxy, interface-based polymorphism with deftype/defrecord, polymorphism via abstraction (see the Clojure sequence operations for example, which use Java interfaces under the hood but you'd never know....). And probably a few more I can't remember right now..... there's a reason Rich Hickey calls it "polymorphism a la carte".
Mikera··on Java Considered Harmful
Wow this is the most uninformed FUD I've seen all week - author picks one Rhino browser security vulnerability and extrapolates to "Java Considered Harmful". Might as well say "All Software On The Internet Considered Harmful".
Mikera··on Ask HN: Why do big companies tend to only build with Java?
Many many reasons:

* Compatibility with installed base of existing code - Java is so prevalent on the server side that this is often a critical requirement

* Performance - The JVM is an amazing platform with excellent JIT compilation, very efficient garbage collection, great for concurrency etc.

* Huge library ecosystem, second to none. Most of the ecosystem is open source and if you choose your libraries and frameworks appropriately (i.e. anything but J2EE!) then you can be pretty much as agile as any other language.

* Major corporate backing (IBM, Oracle, Google, Red Hat). There's enough diversity in the supplier ecosystem that you don't need to worry about vendor lock-in too much (e.g. competing app servers).

* Java is more open and cross platform than the only credible alternative (.Net) - From a CIO perspective .Net is effectively vendor lock-in to a Microsoft stack.

* Great availability of "good enough" developers. There are also plenty of rockstars in the Java world if you look hard enough.

* Maintainable code. Java's relatively simple and concise syntax actually makes it quite easy to maintain with the medium-skill developers that most corporates have.

* It's not Java per se., but the innovation happening in the new JVM languages (especially Scala and Clojure) actually puts the JVM pretty right at the cutting edge of language development.

Note that a lot of the above reasons make Java a good choice for startup companies too, especially if you pick one of the new languages and go for "Java the platform" rather than "Java the language".

Mikera··on Ask HN: Why do big companies tend to only build with Java?
This is spot on. One point to add though: Java is remarkably maintainable due to the high commitment to backward compatibility, great tools, availability of standard skills and the relatively simple syntax ("conciseness considered harmful"). This shouldn't be underestimated in an enterprise setting....
Mikera··on Ask HN: best language for hiring?
Probably Clojure - It's cool, has a webby angle, you can cherry-pick the good Java libraries and to quote Eric Raymond: "Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot."
Mikera··on Ask HN: What programming language is exciting to learn and to work?
If you enjoy living at the cutting edge, then it would be well worth looking at Clojure. I've had a great experience. For me the highlights have been: a proper LISP macro system that lets you treat "code as data", fantastic Java interoperability so you can use all the great Java libraries, great support for concurrency and functional programming.
← PreviousPage 2 of 2