Proposal for programming language of the year

I think one of the main points of learning a new language each year is that
it should differ in some significant way from the languages you already
know. Having a syntax that resembles Ruby may disqualify Scala.

You could say the same about Groovy, however, for those looking for a
language that borrows heavily from Ruby and interacts well with Java, I
suggest looking at Groovy (http://groovy.codehaus.org).

···

-----Original Message-----
From: Christian Szegedy [mailto:szegedy@t-online.de]
Sent: Tuesday, January 20, 2004 4:50 PM
To: ruby-talk@ruby-lang.org
Subject: Proposal for programming language of the year

Pragmatic Programmers wrote, that every year a new language should be
learnt.

For 2004, I would propose Scala (scala.epfl.ch).

I think, it is especially interesting for Ruby programmers.
Scala seems
to be a seamless integration of the best features of object
oriented and
functional features. Its syntax resembles that of Ruby.

It has full support for object-orientation and also supports closures
(see: code-blocks in Ruby), first class higher order functions and
meta-programming support.

It has also some important distinguishing features:

  • Static typing with generic types and type inference
  • It compiles to Java bytecode and can seamlessly access existing
    Java libraries. Therefore, it is platform independent.
    (compile once
  • run anywhere.)
  • It features pattern matching like most functional
    languages, and this
    also applies to XML documents.

I have read about it today for the first time, but I would say, I was
never so impressed by a programming langugage since Ruby.


A.G. Edwards & Sons’ outgoing and incoming e-mails are electronically
archived and subject to review and/or disclosure to someone other
than the recipient.


Volkmann, Mark wrote:

I think one of the main points of learning a new language each year is that
it should differ in some significant way from the languages you already
know. Having a syntax that resembles Ruby may disqualify Scala.

IMHO it doesn’t even have to be a ‘new’ language. There are some ‘old’
languages out there that are worth
being looked at (again?).

Here are some suggestions from my wishlist:

  • Smalltalk (using the Squeak environment)
  • Forth
  • Prolog
  • Scheme

I guess it also depends on what you eventually want to do with that
language, from my first impression of Forth for
instance I couldn’t think of ever writing a web-application in it. But
it is nice for learning a whole different concept
of programming.

My 2 cents,

Carsten.

Volkmann, Mark wrote:

I think one of the main points of learning a new language each year is that
it should differ in some significant way from the languages you already
know. Having a syntax that resembles Ruby may disqualify Scala.

Ruby’s syntax resembles that of C, Perl and Python. This did not
disqualify Ruby. Familiar syntax is simply a courtesy of the language
designer(s).

You could say the same about Groovy, however, for those looking for a
language that borrows heavily from Ruby and interacts well with Java, I
suggest looking at Groovy (http://groovy.codehaus.org).

I did not find Groovy particularly interesting, since it really seems to
be yet another Ruby/Python-clone, written in/for Java.

On the other hand, Scala really does have a lot of distinguishing
features known from functional languages: static typing with polymorphic
types and methods, type inference, pattern matching and pi-calculus for
concurrent programming.

Over mainstream functional languages, Scala features traits, type
bounds, compound types, variance annotations, target typing, value
classes, XML integration and a great deal of reflexivity exceeding even
that of Ruby. These are unprecedented and well motivated add-ons,
significantly improving the programming efficiency.

For pragmatic reasons (like Groovy) Scala aims at perfect and seamless
interaction with Java classes. This is not a feature on its own right,
but it guarantees that Scala is apriori usable for practical programming
better than established functional languages which lack important
support libraries.

Syntax isn’t everything. Scala has type inferencing, which is a pretty
major difference. (I’m tempted to say Ruby : Scala :: Python : Haskell,
but that breaks down in several places.)

I notice it compiles to the JVM, but the page also mentions .NET. I
wonder if it can seamlessly interface with the Java / CLI libraries…

Joe

···

In article 89539780CB9BD51182270002A5897DF605ED006B@hqempn04.agedwards.com, Volkmann, Mark wrote:

I think one of the main points of learning a new language each year is that
it should differ in some significant way from the languages you already
know. Having a syntax that resembles Ruby may disqualify Scala.

“Carsten Eckelmann” careck@circle42.com wrote in message

Here are some suggestions from my wishlist:

  • Smalltalk (using the Squeak environment)
    ^^^^^^^
    I have started on this already :slight_smile:
    Anybody else interested ?

– shanko

Quoting Joe Mason joe@notcharles.ca:

In article 89539780CB9BD51182270002A5897DF605ED006B@hqempn04.agedwards.com,
Volkmann, Mark wrote:

I think one of the main points of learning a new language each year is
that
it should differ in some significant way from the languages you already
know. Having a syntax that resembles Ruby may disqualify Scala.

Syntax isn’t everything. Scala has type inferencing, which is a pretty
major difference. (I’m tempted to say Ruby : Scala :: Python : Haskell,
but that breaks down in several places.)

Your mentioning Haskell reminded me that I tried to learn it a couple of years
ago, signed up on the mailing list, etc., but ultimately lost interest because
the discussions focused on a /much/ higher level than they do here on the Ruby
list–arguments over language design, etc., with few mentions of using Haskell
to do anything productive. It’s probably a vast improvement over Lisp, as far as
functional languages are concerned, but harder to grasp. I’m just as much a fan
of languages-for-languages’-sake as the next CS person, but I was /so/ pleased
to find Ruby som time later and see instantly how useful it is. But if anyone
else on the list is considering Haskell as their language of the year, I’ll join
'em in trying to figure it out.

···


jason

:wq


This mail sent using ToadMail – Web based e-mail @ ToadNet

Why limit yourselves to using Squeak? Cincom Smalltalk (nee VisualWorks)
is available in a non-commercial version for free. It’s not crippled at
all and it is free. Those of us who used VisualWorks years ago will
remember how nice it is. Here’s the URL:
http://www.cincom.com/scripts/smalltalk.dll/downloads/index.ssp

Joey

···

On 1/20/2004 11:14 PM, Shashank Date wrote:

“Carsten Eckelmann” careck@circle42.com wrote in message

Here are some suggestions from my wishlist:

  • Smalltalk (using the Squeak environment)
                               ^^^^^^^

I have started on this already :slight_smile:
Anybody else interested ?


Never trust a girl with your mother’s cow
never let your trousers go falling down in the green grass…

http://www.joeygibson.com/blog

jason r tibbetts wrote:

Your mentioning Haskell reminded me that I tried to learn it a couple of years
ago, signed up on the mailing list, etc., but ultimately lost interest because
the discussions focused on a /much/ higher level than they do here on the Ruby
list–arguments over language design, etc., with few mentions of using Haskell
to do anything productive. It’s probably a vast improvement over Lisp, as far as
functional languages are concerned, but harder to grasp. I’m just as much a fan
of languages-for-languages’-sake as the next CS person, but I was /so/ pleased
to find Ruby som time later and see instantly how useful it is. But if anyone
else on the list is considering Haskell as their language of the year, I’ll join
'em in trying to figure it out.

Wow, that was my experience in a nutshell, too. I’ve tried several
times to learn Haskell (and OCaml, BTW), but always fail to see how it
could actually be useful/“fun”. Also, the syntax seems obfuscated to
me, but that’s probably just because I’ve had little experience with
functional languages (a little Scheme in college, is all).

I’d be happy to try again, on either of those, especially if there were
someone else with a Ruby background willing to give it a try, or to act
as guide. A “Haskell for Rubyists” (or “OCaml for Rubyists”) kind of
manual would sure be slick, too, if anyone has a bit of spare time. :wink:

···


Jamis Buck
jgb3@email.byu.edu

ruby -h | ruby -e ‘a=;readlines.join.scan(/-(.)[e|Kk(\S*)|le.l(…)e|#!(\S*)/) {|r| a << r.compact.first };puts “\n>#{a.join(%q/ /)}<\n\n”’

I found it much easier than Lisp. I have a hard time thinking in Lisp
because of the lack of syntax. (Mind you, I haven’t actually done
anything in it - I just looked at it for a day or so as part of a
functional programming course.)

Joe

···

In article 1074695649.400e8de12ebc5@webmail.toadmail.com, jason r tibbetts wrote:

Your mentioning Haskell reminded me that I tried to learn it a couple of years
ago, signed up on the mailing list, etc., but ultimately lost interest because
the discussions focused on a /much/ higher level than they do here on the Ruby
list–arguments over language design, etc., with few mentions of using Haskell
to do anything productive. It’s probably a vast improvement over Lisp, as far as
functional languages are concerned, but harder to grasp. I’m just as much a fan
of languages-for-languages’-sake as the next CS person, but I was /so/ pleased
to find Ruby som time later and see instantly how useful it is. But if anyone
else on the list is considering Haskell as their language of the year, I’ll join
'em in trying to figure it out.

“Joey Gibson” joey@joeygibson.com wrote in message

Why limit yourselves to using Squeak?

Just taking baby steps … learning it with kids and all :slight_smile:

Cincom Smalltalk (nee VisualWorks)
is available in a non-commercial version for free. It’s not crippled at
all and it is free. Those of us who used VisualWorks years ago will
remember how nice it is. Here’s the URL:
http://www.cincom.com/scripts/smalltalk.dll/downloads/index.ssp

Thanks for the link. I will give that a whirl when I get my feet wet !

Joey

– shanko

Joey Gibson wrote:

Why limit yourselves to using Squeak? Cincom Smalltalk (nee
VisualWorks) is available in a non-commercial version for free. It’s
not crippled at all and it is free. Those of us who used VisualWorks
years ago will remember how nice it is. Here’s the URL:
http://www.cincom.com/scripts/smalltalk.dll/downloads/index.ssp

Why exactly is using Squeak a limitation? Could you expand a little more
on that subject? I thought Squeak is a full-featured Smalltalk system?

Cheers,
Carsten.

Jamis Buck wrote:

Wow, that was my experience in a nutshell, too. I’ve tried several
times to learn Haskell (and OCaml, BTW), but always fail to see how it
could actually be useful/“fun”. Also, the syntax seems obfuscated to
me, but that’s probably just because I’ve had little experience with
functional languages (a little Scheme in college, is all).

I thought, all of you can already Haskell, since it was sometimes the
LOtY :slight_smile:

I have to say, I really love Haskell. It has the most elegant syntax of
all programming languages known by me (including that of Ruby or Scala).
But its practical performance and user-friendliness make me use ocaml
if I need to minimize runtime and Ruby if I need to write something
quickly.

I think Scala has a lot of nice features which will make it
the ideal GUI programming language. It combines functionality and
object-orientedness in a much more seamless way than any other
programming languages so far. E.g. in Scala everything is object like
in Ruby, but it gives full support for functional programming.
It supports open variants, but they are embedded in the object-hierarchy
in a very consistent way i haven’t seen so far anywhere.

Moreover type-bounds and variant-annotations seem to be essential when
one starts to mix functional style with object oriented programming in
a type-safe fashion. This feature was also completely unknown to me
before reading about them in the Scala docus.

So, it seems to me that Scala is a more advanced language than Ruby,
Ocaml or Haskell, using almost all useful features of them while
enhancing them significantly at the same time.

Maybe that was a bad choice of words. The last time I wanted to use
Squeak, I was looking at it to create a business application. I had
created business apps using VisualWorks and Dolphin Smalltalk before, so
I thought it would be similar. As I was searching about for
documentation, everything I could find seemed to only care about doing
‘cool’ graphical things, not boring business apps. When I asked about
doing these types of things on one of the mailing lists, I got several
responses along the lines of ‘well, you could create a business app
with it, but it’s more focused on graphics.’ That was a couple of years
ago, so perhaps it’s changed since then; I haven’t bothered to look at
it again lately.

Joey

···

On 1/21/2004 1:05 AM, Carsten Eckelmann wrote:

Why exactly is using Squeak a limitation? Could you expand a little
more on that subject? I thought Squeak is a full-featured Smalltalk
system?


Never trust a girl with your mother’s cow,
never let your trousers go falling down in the green grass…

Carsten Eckelmann careck@circle42.com wrote in message news:400E16B5.6070505@circle42.com

Joey Gibson wrote:

Why limit yourselves to using Squeak? Cincom Smalltalk (nee
VisualWorks) is available in a non-commercial version for free. It’s
not crippled at all and it is free. Those of us who used VisualWorks
years ago will remember how nice it is. Here’s the URL:
http://www.cincom.com/scripts/smalltalk.dll/downloads/index.ssp

Why exactly is using Squeak a limitation? Could you expand a little more
on that subject? I thought Squeak is a full-featured Smalltalk system?

It is. I don’t really know what “limitations” Joey means, but here
are some differences:

  • VisualWorks is much faster (very approximately, VW is 10x as fast as
    Squeak, which is 5x as fast as Ruby)
  • VisualWorks has more normal, business-app widgets (but emulated,
    like Swing), and a GUI builder
  • VisualWorks has interfaces to commercial databases (Squeak only has
    good interfaces to Postgres, MySql, etc)
  • Squeak is open source, and has a larger, more active community
  • Squeak has better tools for building web applications
  • Squeak has better multimedia support
  • Squeak is much more portable: it runs bit and pixel identical on
    every major desktop platform, some minor ones (Acorn, anyone?),
    PocketPC etc
  • Squeak has better support for direct manupulation UIs (simulations
    and games)

Both have the Refactoring Browser, sophisticated version control,
great debuggers, and all that usual Smalltalk goodness.

Avi Bryant wrote:

Carsten Eckelmann careck@circle42.com wrote in message news:400E16B5.6070505@circle42.com

Joey Gibson wrote:

Why limit yourselves to using Squeak? Cincom Smalltalk (nee
VisualWorks) is available in a non-commercial version for free. It’s
not crippled at all and it is free. Those of us who used VisualWorks
years ago will remember how nice it is. Here’s the URL:
http://www.cincom.com/scripts/smalltalk.dll/downloads/index.ssp

Why exactly is using Squeak a limitation? Could you expand a little more
on that subject? I thought Squeak is a full-featured Smalltalk system?

It is. I don’t really know what “limitations” Joey means, but here
are some differences:

  • Squeak is much more portable: it runs bit and pixel identical on
    every major desktop platform, some minor ones (Acorn, anyone?),
    PocketPC etc

Thats the clincher for me - is VisualWorks windows only?

It would be a better choice for me as a SmallTalk newbie, as all the ST
books
seem to be VW-centric.

( Incidentally, thanks for SeaSide, Avi. Most intuitive webapp framework
I’ve seen:
the main reason I’m interested in learning Smalltalk is to get a better
handle
on it and therefore borges - a.k.a ‘SeaSide in ruby’ ).

It runs on several platforms including Windows, Linux, WinCE and several
others.

···

On 1/22/2004 8:22 AM, Rasputin wrote:

Avi Bryant wrote:

Carsten Eckelmann careck@circle42.com wrote in message
news:400E16B5.6070505@circle42.com

Joey Gibson wrote:

Why limit yourselves to using Squeak? Cincom Smalltalk (nee
VisualWorks) is available in a non-commercial version for free.
It’s not crippled at all and it is free. Those of us who used
VisualWorks years ago will remember how nice it is. Here’s the URL:
http://www.cincom.com/scripts/smalltalk.dll/downloads/index.ssp

Why exactly is using Squeak a limitation? Could you expand a little
more on that subject? I thought Squeak is a full-featured Smalltalk
system?

It is. I don’t really know what “limitations” Joey means, but here
are some differences:

  • Squeak is much more portable: it runs bit and pixel identical on
    every major desktop platform, some minor ones (Acorn, anyone?),
    PocketPC etc

Thats the clincher for me - is VisualWorks windows only?


Never trust a girl with your mother’s cow
never let your trousers go falling down in the green grass…

http://www.joeygibson.com/blog

Rasputin rasputnik@hellooperator.net wrote in message news:400FCE8C.30405@hellooperator.net

Thats the clincher for me - is VisualWorks windows only?

No, VW actually runs on lots of platforms - Windows, Mac, and various
breeds of Unix. Joey mentioned WindowsCE; I know there’s been some
experimental work done to get it on CE, but AFAIK it hasn’t been
released yet.

When I say Squeak is more portable, I’m talking about two things - one
is that it has a history of being ported to bare hardware and obscure
platforms, and the other is that because its UI simply grabs a single
window and paints pixels to it directly, Squeak looks identical,
fonts and all, whether you’re running on an IBM mainframe
(http://people.squeakfoundation.org/article/18.html) or a cellphone.

If anyone is looking for a well-integrated Windows-only Smalltalk,
Dolphin is wonderful, and quite cheap.

Avi

No, VW actually runs on lots of platforms - Windows, Mac, and various
breeds of Unix. Joey mentioned WindowsCE; I know there’s been some
experimental work done to get it on CE, but AFAIK it hasn’t been
released yet.

That’s correct on the WinCE support; it’s still a preview. In the Fall 2003
distro of VW, it’s in the previews folder. It works pretty well even though
there is a bug in what’s distributed. I worked with a Cincom engineer and he
got me a patch that will be included in the next release when the CE VM is
slated to moved from preview to gold.

When I say Squeak is more portable, I’m talking about two things - one

After someone mentioned CE support in Squeak earlier today I downloaded one
of the CE builds to my PocketPC. It did run, although it was very flickery
and didn’t behave well with other running programs. There are a few other
builds for CE that I am going to try before I give up, though.

If anyone is looking for a well-integrated Windows-only Smalltalk,
Dolphin is wonderful, and quite cheap.

I second this wholeheartedly. I’ve been a paid user of Dolphin Smalltalk
for about 3 or 4 years now and it’s a wonderful product. Very solid.

Joey

···

On Fri, 23 Jan 2004, Avi Bryant wrote:

Never trust a girl with your mother’s cow,
never let your trousers go falling down in the green grass…