Auld Lang Alice

So any ambitious souls out there that have a plan to tackle a new PL for 2006?

It's been a year now since I picked Alice as my language of 2005. I suppose it was a fairly productive year, given that I managed to translate large portions of the first eight chapters of CTM and even brief portions of SICP and TAPL. Though most of that was done in the first six months of the year, and I've had very little time to subsequently move forward.

Having stalled out (what with working two jobs, taking a graduate course in discrete math, and generally helping the kids with 4th grade, 9th grade and college freshman courses), I'll probably carry on with Alice for the new year. Unfortunately, in the present I'm too preoccupied with C# to accomplish much of anything from a conceptual angle.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Goal for 2006, settle down

On May 2004 I was a C++ and only C++ type of guy. There, a friend (Hi Fede!) showed me Smalltalk. Oh! how impressed I was. But since Squeak was not free, I started looking for other implementations, played a bit with GNU Smalltalk but I didn't like it. Eventually I started learning other languages, the list till a couple of weeks ago is more or less: Smalltalk, C#, Java, Objective-C, Slate, a bit of Self, Common Lisp, Dylan, Scheme and since a month or so Erlang (for a couple of days) to latter jump to Haskell, where I am now, enjoying to program.
My goal is to settle down and actually do something more than play with languages (I am still not fully convinced of Haskell, I might go back to Erlang).

Free Squeak?

By what definition of free is Squeak not free? To the best of my knowledge, Squeak is free as in beer and it's open source. The only restriction that I'm aware of is that changes to the VM and/or the squeak supplied classes have to be made publicly available. (The latter encumbrance runs counter to the GPL norms, though the talk of revising the GPL for web services will make it a moot point).

As for learning languages, I think that most languages require years of study and heavy duty use to really get to a point where I can say that I know the language (e.g.: learn to program scheme in 10 years). Mostly, I just visit PLs and try to absorb what little I can in the process. The main advantage I see is that every language has a history and culture that gives it a different emphasis and perspective. Settling down to a couple of languages can be worthwhile for short intervals, but in the long term, I think it best to play the field. As the pragmatic programmers have suggested, setting a goal to learn a new language every year is not a bad pace (though I'll probably end up spending at least 2 years on Alice).

Haskell is the language that I'd like to immerse myself into one of these days. But at the moment, I prefer the less pure aspects of ML when it comes to the question of laziness and state (though I'd love to see someone build a PL that has Haskell type classes and MLs modules).

FSF

By what definition of free is Squeak not free?
By the Free Software Foundation's definition...

The Squeak license

As applied to software, this is not a free software license because it requires all users in whatever country to obey US export control laws. As applied to fonts, it also does not permit modification.

In addition, it has a requirement for users to indemnify the developer, which is enough to make many users think twice about using it at all.

There is also a swiki page detailing some of the issues.

Thanks for the clarification.

Doesn't impact my usage, but I can see how it might be cause for concern for others.

Why limit yourself to Stallma

Why limit yourself to Stallman's definition of "free"?

Scala

It seems I'll be giving Scala a try in 2006...

I didn't use Scala, just read

I didn't use Scala, just read the language spec and tutorials and it feels elegant.
Too bad, it's not native though.

Keep us posted

I hold to the bread crumb theory when learning a new language, building miniature rosetta stones to help me remember what I've learned along the way (and sometimes helping others as well).

Let us know how things are in the world of Scala.

Cheat sheets are good

Any sample snippets and programs will work. Organizing things can take a lot of time, but loose notes will help others. In the case of Alice, I just used the CTM examples as my bread crumbs, so I didn't have to worry too much about structure. Then again, I could afford to comment the examples a lot better, but I figured the book was the documentation. :-)

Interesting

So, by Rosetta Stone, do you mean you write down programs in the language your currently learning next to the same program in other languages? Or were you just using that term for the idea of writing the same small programs in different languages? Either way, it’s an interesting idea. Having the same program down in several languages all next to each other would be very insightful: how the same problem was solved in different "intuitive" ways in the different languages due to the nature of the language and how it influences your thinking.

I like your idea of bread crumbs a lot. I've never really thought about it before---don't know why not: seems obvious now. :) My biggest problem in learning a new language is trying to think of something to do! (That is, when I don't have a book I'm working through.)

tried Scala a try a little while ago

I found that it was a wonderful "better Java". Has a rather O'Caml-ish feel, and though it doesn't feel quite as good as that language, it feels a lot more elegant than Java.

Good luck, and enjoy. :)

Ruby?

I think Ruby is getting enough attention to make it worth a look. Heck, it seems to be the new Python...

I even dedicated a new LtU department to Ruby.

The new Python

Jim Weitich has tempted me several times to learn Ruby, but since I already know Python, I find it hard to stay focused. :-)

New python? Not really

When I looked at both language, I found them so similar that when I tried to assess if one language was superior to the other, I couldn't do it..

In the end, my opinion is that:
- both language are *really* similar under the hood.
- Ruby's terse syntax is probably better suited to experienced programmers which have used shell, Perl..
- Python's clean syntax is probably better for beginners.
- Python has better performance than Ruby, but as both are slow this doesn't really matter much.

In the end, I prefer Ruby but saying that Ruby is a new Python is a bit misleading IMHO, both more similar than they are different, does anyone know of any major difference between Ruby and Python?

I know that Ruby's i18n is criticised, don't know if it is well done in Python.

I think we are saying somethi

I think we are saying something fairly similar.

We are just attaching slightly different connotations to the phrase "X is the new Y"...

Peach is the new Black...

the phrase "X is the new Y"

Ehud, you're revealed as a dedicated follower of fashion :-)

No, only of clichés...

No, only of clichés...

There has been a heated discu

There has been a heated discussion recently over at Artima that was also commented here on LtU.

My personal view is close to yours or Alex Martellis that besides syntactical and even more obvious cultural differences both languages are almost equal in power. Incorporation of new language features is a moving target so that drawing final conclusions is hardly possible.

Java

I've kicked off this year by starting to convert Tripoli, my Python-based "triple space" implementation, into Java. The point of the exercise isn't so much to learn the language - I know C# already, so there's not that much to learn - as to get some insight into Java developers' daily praxis: using tools like Eclipse, JUnit, Javadoc, Ant and so on.

My experiences of those tools have so far been very good. I'm hoping that the project to develop a pluggable Haskell IDE gains some ground this year; I'd like to write a collaborative editing module (a la SubEthaEdit / Gobby) for it. Given up writing a Haskell wrapper for the libobby C++ library for now, as it's a bit of a moving target, but still interested in producing a pure Haskell equivalent.

I had an idea last year about writing an assembler for JVM bytecode as a DSEL in Haskell. This relates to something me and Shae Erisson have discussed in the past, about using Haskell to do "sewage treatment" (code checking, refactoring, automatic test case generation, optimisation, obfuscation etc.) on other languages. A Haskell PHP parser (and why stop at parsing?) would be worth having, I think.

What would pique my interest this year would be a "successor to Haskell"-type language, although Haskell itself is developing in some interesting ways. Maybe something that would be to Haskell as Alice is to SML. I also wonder whether the "kernel language" approach of Oz can be applied to type systems...

Epigram

Epigram is the obvious choice in this case, though not quite so far as Alice and with a totally different "direction" in the conceptual space (but it is coming from Haskell). Curry is also interesting for another direction, but again, it is not that far. These are examples that are obvious extensions of Haskell, obviously there are other languages that are harder to view as being Haskell++. (Some others that probably deserve mention are Timber and Chameleon.)

"[...] although Haskell itself is developing in some interesting ways."

This is one of the fun and nice things about Haskell. The other major one is the community as you no doubt know now.