The Next Big Thing: An Opinionated Google Search
(Tangential thoughts triggered by techno.blog("Dion").)
In no particular order:
- The JVM has become the playground of the programming language researchers. This is a good thing for the Java community, even for those of us who mainly uses the Java language on a day-to-day basis. It's nice to know that the language that I write CRUD applications is also capable of being so creatively used.
- I like object-oriented programming. I also like functional programming. I'm not allergic to LISP's nested parenthesis. I've been looking at Clojure for the last year, and believe it has the potential to becoming the next big language.
- Functional programming survived all these years because of one thing and one thing alone: It's mathematical—Its fundation can be presented as axioms, definitions and theorems. Object-orientation, on the other hand, feels ad hoc. It may map well to how some people view (the object/attribute/governing-rules view in the Aristotle tradition) the world. But psychological studies has shown that not all people (the community/relationship/harmony view in the Confucian tradition, for example) perceive the world that way.
- Although I'm not certain about what the next big language is, I know what the next big thing is. It has to be something for the Internet. It has to be something that beats Google at searching results. Google is good at relatively simple and static things, like "From which direction does the Sun rise?", but terrible at dynamically changing things, like "Where is the Social Security Office at Creve Coeur, MO?" (They used to be on the first floor in the building OCI is in. They moved a couple of years ago. But we still see people coming to the building to inquire.) I know it's not going to be easy, but what if Google start to get some opinions and display a "We think this is good" or "We think this is wrong" marker alongside every search result. Sort of like fact checking for every web page.
- JavaScript is the lousiest language ever invented. It is unfortunate that we are stuck with it for now (the web-era). It needs to grow. Some people want to make the browser a platform, fine. That platform needs to grow. In growth, it will see fragmentation ("which JavaScript framework library are you using today?"), consolidation and evolution. At the end (we are talking about five to ten years out) it will be just like one of the other platforms that we use: Windows, Mac, Linux, etc.
- Ruby and Scala are both languages with weird syntaxes, just like Clojure is. But the mark of a truly useful language is that people will learn it in order to get things done. People seems to forget how hard object-orientation is when they first learned it. The same thing can be said of JavaScript.
- Tomorrow's big language is today's obscure or nonexistent language that someone finds powerful enough, innovative enough and pleasant enough to do interesting things with. Have you solved a real problem lately? Have you enjoyed your programming work lately?
Re: The Next Big Thing: An Opinionated Google Search
Cool post, Weiqi...
re: lousy JavaScript. Really? Do you mean as a straight-up language in Vi/Emacs? I've heard people praise it as a language, and once saw a tech talk where a theme was that it was inspired by Lisp (of all things). _I_ tend to dislike it because I associate it with frustrating things like DHTML, Ajax, CSS, and a devil's den of other non-standardized entities. I haven't used it enough in a pure way to really decide.
Re: The Next Big Thing: An Opinionated Google Search
Saying that Clojure "has the potential to become the next big thing" is an incomplete thought (IMHO). What I think you should have said (and what is more accurate) is that Clojure has the potential to become the next big thing for JVM-bound development. As a language that could be the introduction to functional programming for developers who only know imperative programming, this is clearly a Good Thing (tm). Certainly functional programming languages like Erlang, Haskell, and OCaml have gained attention in the last year (at least I have read many blog posts about them). What is it about Clojure that you think JVM-platform developers ought to know?
Re: The Next Big Thing: An Opinionated Google Search
You are absolutely right. Being JVM-bound can be considered a liability for a language, especially in the long term, when JVM-domination is far from certain.
That being said, I consider Clojure a language that just happens to be done on the JVM. There is no reason that something in the same spirit couldn't be done in .NET, or in its own VM.
What brought me to Clojure is its focus on concurrency, something that many people think will be the next hard problem to solve. Aside from GHC, Clojure is the only other language that I know that supports STM, software transactional memory.
Once there, I found that I liked several other aspects of Clojure: it's simple, functional, defaults to immutable data, has an interesting limited-powered tail recursion facility, a macro system, etc. And from my encounter with it, the language does seem to be pleasant to use. It doesn't have everything, but what it does have seems to be well thought out and fits together into a coherent story.