A new language


So, it’s that time of the year again. The restlessness flows over me. I feel cold and numb. And no, it’s not because I live in London – it’s because I need the warmth of learning a new language.

Now, I want something I can actually get into and learn. I’ve tried to get into OCaml, but I gotta admit I hate the type system. I have no problem with bondage static typed languages (Haskell’s type system is really nice, for example) but OCaml’s really feels like half of it exists just to cover up holes in the other half. There seems to be a large overlap in functionality, and lots of workarounds for handling things that should be simple.

I’m half way into Erlang, but for several reasons the language feels very primitive.

I’ve kinda thought about maybe getting serious with Scala. I like many of the language features, it’s a nicely designed language and so on. But – hear this, people – I would love to get away from the JVM for a while, just for the sake of it. I can do Scala later. I actually have a medium sized project lined up for my Scala learning. But not right now.

So, what do I want? Something I haven’t touched before. I would love something that involves radically new language features, if there are any left to discover. I have no need for it to be static or dynamic specifically. Doesn’t really matter. It would be fun if it’s new, but if it’s old, good and still in use in some sectors that would be fun too. Specifically something that’s not mainly run on the JVM or CLR. And of course, not any of the “mainstream” languages, who I actually tend to know fairly well (and yeah, to my sorrow that includes the whole W-family…).

Please help me! Give this December new meaning for me. I promise, if someone comes up with a nice language to try out, I’ll be very fair to it when I evaluate and learn it. =)


50 Comments, Comment or Ping

  1. Peter

    You should try out IO (iolanguage.com) or Forth sometime. They’ve been on my wishlist for a long time and look very promising.

    November 19th, 2007

  2. Ola Bini

    Ah, yeah, Io is a really, really nice language. A shame I already know it quite well. =)

    Forth could be an interesting exercise.

    November 19th, 2007

  3. Marcel Molina

    Prolog?

    November 19th, 2007

  4. Anonymous

    D?

    November 19th, 2007

  5. Ola Bini

    Prolog I know to well, thanks. =)

    D is a better suggestion, though it gives the bad taste of C and C++ in my mouth. =)

    November 19th, 2007

  6. Joshua Graham

    JoCaml (Join Calculus + OCaml) has been revived, on the same site as previously (http://jocaml.inria.fr/) and is performing very well in the Tim Bray Wide Finder project.

    Maths, functions, concurrency, distribution. You know you want to.

    F# possible, but a way to go yet.

    November 19th, 2007

  7. schmidt

    Smalltalk, JavaScript – but I guess you already know them.

    Self or Slate, which would be a mixture of the above.

    Something with an X in front – XSLT, XQuery, although I’m not sure, if you can build a whole application with it.

    Looks like you already got in touch with most of the well-known languages.

    November 19th, 2007

  8. Matthew

    If you don’t mind useless academic languages then you have a lot to chose from. A fun one from a few years ago is Aardappel:

    http://strlen.com/aardappel/index.html

    Also, you may want to consider raising the bar for what it means to be to know or be good with a given language. It may be the case that you’re an expert Prolog, IO, Dylan, etc etc programmer. However, it’s probably more likely the case that on any given language there’s a ton more learning to be done. But this may not satisfy the Big Ideas I imagine you’re seeking.

    Programming directly in the lambda calculus can be very rewarding (obviously after you’ve written your own interpreter/compiler). Again, not entirely practical but potentially more eye opening than mere Lisp/Scheme implementation which I’m sure you’re familiar with.

    November 19th, 2007

  9. LeifJ

    If not for anything else, then for a laugh try Brainfuck

    November 19th, 2007

  10. n7

    Kogut is a serious, experimental programming language implemented by Polish programming languages expert, Marcin Kowalczyk. Have a look:
    http://kokogut.sourceforge.net/faq.html

    November 19th, 2007

  11. kevin

    Oz is next on my list. It seems to fit the bill for what your are asking for: http://www.mozart-oz.org/

    November 19th, 2007

  12. Anonymous

    How about lolcode? lol.

    http://lolcode.com/

    November 19th, 2007

  13. Anonymous

    I second the Oz recommendation. We used it for an AI class in college.

    November 19th, 2007

  14. Tuxie

    Eiffel, ADA, Rebol, Oz, SML, D or Dylan?

    I think you should create an OSS implementation of Rebol. It’s a cool language with a sucky license. To make it more challenging you can implement it in Shakespeare. :)

    November 19th, 2007

  15. Brian Mitchell

    Given that you’ve looked at Io already, I would have to recommend Factor as another very interesting language. Other interesting languages I can think of:

    – Lua (and extensions like metalua)
    – nu (as in http://programming.nu/)
    – Erlang (I know some things like strings are primitive but I urge you to get past that)

    (trying to avoid listing all the classic languages like Lisps, Prolog, Smalltalk, etc..)

    I guess it really comes down to what kind of projects you want to work on. Learning a new language without using it is like studying the theory of bicycle riding without actually trying it for yourself.

    November 19th, 2007

  16. Paul J. Beel

    Have a look at REBOL. They are currently working on a new version, so a lot of improvements are on the way.

    http://www.rebol.com

    November 19th, 2007

  17. Hubert Cumberdale

    Maybe ADA… If you like A.I. you’ll like ADA.

    But I’m in love with……….. PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL PERL !!!!

    November 19th, 2007

  18. Chris

    Factor does look interesting :
    http://factorcode.org/

    I’d also like to learn more R :
    http://www.r-project.org/

    November 19th, 2007

  19. Victor Rodriguez

    I will second those that have recommended Factor.

    Factor is, IMHO, right up your alley: a concise, powerful language to which you can start contributing code right away.

    Slava Pestov is a fine fellow too, and so are the other contributors, so you won’t lack from stimulating conversation.

    Best Regards,

    Victor Rodriguez.

    November 19th, 2007

  20. Patrick

    I will concur with Factor. The IRC channel is very active and the development environment is a real diamond in the rough.

    Of course I have a soft spot for stack based languages, so your milage may vary.

    November 19th, 2007

  21. pootytang

    K is fun…

    November 19th, 2007

  22. Krzysiek

    Why not to take ANTLR and implement your own simple language?

    November 20th, 2007

  23. Anonymous

    You could always go old school and try assembly language. The Menuet people are showing that it really CAN make a huge difference with modern software.

    November 20th, 2007

  24. Joshua Graham

    Yeah I looked at REBOL 10 years ago – being an Amiga nut, I’ll have a go at anything Carl Sassenrath does. I loved the lack of statements and keywords.

    Looks like it’s come a long way, and it plays into the current meta-programming interest.

    [Guru Meditation #00000007.4341524C]

    (kudos to those who work out what the crash code means)

    November 20th, 2007

  25. Anonymous

    haXe. You mentioned a dislike of OCaml typing; haXe uses implicit types but 1. it’s also a dynamic language, so you can ignore type restrictions at will, 2. the syntax is Javascript-like, and 3. the compiler targets and officially supports three different VMs for different supporting roles.

    So there’s a nice mix of features which I find sits really well with what I’m doing right now.

    November 20th, 2007

  26. Anonymous

    I have found SuperCollider to be a very elegant language that is often overlooked. It is primarily focused on audio, but is a very capable language in its own right.

    http://supercollider.sf.net
    http://audiosynth.com

    November 20th, 2007

  27. Christian

    inform?

    http://inform-fiction.org/I7/Welcome.html

    first looks great

    November 20th, 2007

  28. Mathias

    Ola, with your experience i think it is time for you to make your own language. Take the best from all the languages you know and make it a killer!

    November 20th, 2007

  29. zak

    I’m sad to see noone suggested “Beta”. It’s been around since the 1980s or so. Fantastic and radical ideas in there. e.g. methods, constructors and classes are the samething (patterns), and its the least specific method being invoked first, rather than the least specific. Also you have better support for annonymous subclasses and quasi parrallelism…

    November 20th, 2007

  30. Jonathan Parker

    If you have access to Visual Studio pro then try VPL (Visual Programming Language) which is part of MSRS (Microsoft Robotics Studio).
    From what I’ve heard it’s completely visual.

    November 20th, 2007

  31. Anonymous

    Could you create a language to replace regular expressions which is more readerble. RE are grait when you just wont to change a load of code in your editor/IDE but I dont find them very self documenting when used in production code.

    November 20th, 2007

  32. Anonymous

    Fortress?

    November 20th, 2007

  33. Ravi

    J

    November 20th, 2007

  34. ashishwave

    (i) take some/many exciting features from other languages ,
    (ii) add it into ruby/jruby (preferably somehow at DSL or somehow like library/macro level OR even if it introduces some incompatibility with native (standard) ruby , then it doesn’t matter much)
    (iii) add your own experties in this area

    and Voila! you have got your dream come true.

    for example:
    reactive programming like kanaputs
    optional static types declaration in ruby
    some features from C# 3.5 (linq and what not) and scala and prolog etc.

    bye :-)
    Ashish Ranjan
    ashishwave@yahoo.com

    November 20th, 2007

  35. Guillermo

    Have you tried pathological languages? Brainfuck and so on.

    Check this blog:
    http://scienceblogs.com/goodmath/goodmath/programming/pathological_programming/

    November 20th, 2007

  36. Martin

    I’ve always been a big EIFFEL fan myself! Besides… Betrand Meyer (creator of Eiffel) has been an inspiration of mine since the 80’s when he produced the seminal book on OOP entitled “Object Oriented Software Construction”, and more or less gave birth to “Design By Contract”.

    November 20th, 2007

  37. Bill Six

    There are a few others that deal with concurrency in a different way:

    E
    erights.org
    wikipedia

    OpenCroquet
    opencroquet.org
    (while not a language, I personally like the idea of islands and replicated computation)

    November 20th, 2007

  38. Anonymous

    Some links regarding the Shakespear programming language mentioned earlier:

    Homepage:
    http://shakespearelang.sourceforge.net/report/shakespeare/shakespeare.html

    Example program source:
    http://shakespearelang.sourceforge.net/report/shakespeare/shakespeare.html#sec:primes

    November 20th, 2007

  39. Anonymous

    Excel:
    -functional programming
    -macro VBA
    -Array Formulas
    -database conductivity
    -practical
    -real world analytics
    -com
    -XLA addins
    -extensible
    -misunderstood

    November 21st, 2007

  40. Rapha

    I’d second the vote for E. Some very cool ideas and approaches to concurrency.

    The current main implementation is built on the JVM, but there are also incomplete versions in CL and C++.

    November 21st, 2007

  41. Jorge L. Cangas

    Well. I suggest you an domain focused language: TXL (http://www.txl.ca). Is not a general language like Ruby or Java, but I found it very cool and “mind breaker” for their pourpouse :)

    November 21st, 2007

  42. hgs

    Features: scanning instead of regexps;
    goal directed execution (a bit like prolog) with all {statements, expressions} succeeding or failing; logical operators return right hand side on success so you can write x < y < z
    and it makes sense. What am I talking about? Unicon http://unicon.sourceforge.net/
    which came from Icon ,developed by the author of SNOBOL, Ralph Griswold.

    November 21st, 2007

  43. Matti

    If you really want to try something different – learn how to program your gpu! It forces you to think differently about computation and it gives yous insight into superscalar architectures.
    more info here: http://www.gpgpu.org/

    November 22nd, 2007

  44. Anonymous

    I also second Rebol. It’s an interesting language, although derivative (then again, so is Ruby, so there’s nothing wrong with that). It’s concise and the extreme focus on maximal features and simplicity with minimum bloat is quite refreshing, keeping sourcecode extremely small.

    Meta-programming is catered for by extending the language with your own dialects.

    The main runtime has excellent support for easy OS independent GUI construction through the VID dialect, rendered by the blazing AGG engine. The plans for VID3 include tighter style support to simplify maintenance on visuals.

    While not truely Open Source, with the upcoming version 3 it’s makers, Rebol Technologies, have opened up to community requests by Open Sourcing components, while keeping full control of the main language library to protect it from bloat and bifurcation.

    Although this decision is seen as “too little, too late” by a minority of open source advocates, it’s very understandable for Carl Sassenrath to try and keep the vision behind the language intact.

    November 24th, 2007

  45. vseloved

    J

    November 28th, 2007

  46. the_dormant

    a modern forth with a nice interface, Factor http://factorcode.org/. learn to program with a stack and higher order combinators .. (see joy too)

    Oz (concurrent like erlang, functional , but also constraints -dataflow variables.-) runs on Emacs (weird environment).

    J (APL? K Iverson, weird too)

    Perl 6 (Pugs) multi paradigms ..

    Beyond the language and the syntax, you’d better seek one which make you solve problems in different ways.

    Coq (a proof assistant) is interesting too, it make you embed proofs in your code(google fingertree in coq), it has also dependent types, induction ..

    Haskell is also a great language to spend time with ..

    November 29th, 2007

  47. Steve

    Clean – home page

    unless you’ve somehow neglected Common Lisp…

    November 30th, 2007

  48. davidmathers

    Beta!

    http://c2.com/cgi/wiki?BetaLanguage

    Or gBeta:

    http://www.daimi.au.dk/~eernst/gbeta/

    Beta is the only object language I’ve found that calls object identity what it actually is in the human world: a pattern match.

    I only discovered it a few weeks ago and haven’t had time yet to dig deeper, unfortunately.

    December 1st, 2007

  49. Kaveh Shahbazian

    As you know Lisp, take a look at Qi(http://en.wikipedia.org/wiki/Qi_(programming_language)).
    From it’s description on Wikipedia:
    “It includes most of the features common to modern functional programming languages such as pattern-matching, currying, partial applications and (optional) static type checking. The combination of all these features within the Lisp environment makes Qi in many senses a rationalization and modernization of Lisp. Qi won its creator a Promising Invention Award from the State University of New York in 2003.”

    December 27th, 2007

  50. Anonymous

    Recently I began attempting to learn a new language online, just to have something else to put on my CV, and I was amazed how many different types of language software there are available. In the end I decided to purchase some gear that would help me learn French and it has been amazing, I can’t believe how quickly I am picking it all up! Going to give Russian a go next!

    February 14th, 2008

Reply to “A new language”