I've thrown myself into ruby and I'm having a pleasant time.
Now I am looking to find another language to learn with three features, two
of which Ruby has, and I am looking for your words of advice and guidance.
The features I am looking for are
1)enjoyableness
2)practicalness
3)alternativeness
with a decent nod to
4)not so long a learning curve (hey, I'm from the TV generation; I need
instant kicks).
Ruby does the first two, but now I want to cruise into other dimensions, and
ruby isn't really weird and alternative enough.
I really would like something that makes me think in a very different
manner, and is excellent at solving a range of problems that imperative
languages are not too good at. I would like to be using it a lot for
real-world stuff, like I am Ruby and Delphi.
Now because you guys are tuned to enjoyableness, and probably have a measure
of appreciation of the need for practicality I am hoping that you might give
me some commentary on what you think might be worth looking at.
I've vaguely looked at Ocaml, Heskel, Scheme, Mercury. (Lisp would seem to
wander too far away from simplicity which I reckon probably impacts
enjoyableness, but then someone has said that OCaml isn't so simple but is
very enjoyable; so you can see why I haven't listed simplicity as a
requirement.). I doubt I can go too far off the mainstream since requirement
2 would be impacted. So if anyone wishes to comment on the usual
'alternative' languages, as well as exotic stuff from other galaxies, then I
am very interested.
Of course I have no experience in any of these. I also see little in the way
of languages being compared for enjoyableness. I don't care for performance
tables since performance only solves one problem which Intel and AMD can
solve for me, and I'm more interested in the infinite number of other
problems.
Grateful for any of your wonderful and marvellous thoughts,
Greg
- this mailing list (the archives will have references to all the ones
you meantion, plus other ones such as Io, and D, and boo, and Groovy -
of which Io is the only one you might call "far out" - and, oh yeah,
Smalltalk)
- practically any programming mailing list :)
- http://lambda-the-ultimate.org/ (where language geeks go to be snobby
and up-tight)
- http://www.google.com/search?q=esoteric+programming+languages (okay,
those probably weren't what you were looking for)
- http://cliki.tunes.org/Programming%20Languages -- This page nicely
categorizes them by "paradigms."
Here's two languages you're not likely to find immediately. Presented
for no apparent reason.
1. http://www.erights.org/e/satan/ -- I haven't actually read this
paper, but it seems topical, so maybe somebody else will, and provide us
a book report. :)
2. http://www.madore.org/~david/programs/unlambda/ -- The purest,
simplest programming language ever, and it's functional, to boot. Smart
combination of a few simple constructs allows for a whole world of
flexibility.
Have fun.
Devin
APL, Eiffel, Erlang, Haskell, Io, Joy, Lisp, Lua, Mathematica,
Mozart/Oz, OCaml, Prolog, REXX, Scala, Scheme, Self, and Smalltalk are
all the legitimate, 'alternative' languages that I recognize (by name
only, for the most part) from that wiki page, so maybe that makes them
more popular. Now get to Googlin'.
But, to put in my two cents, it ain't perfect. The language is made
up of objects (with methods, properties), and it lends itself quite
well to making simple hash-objects which all 'inherit' from the same
object. (The 'prototype' property of functions is like Lua's __index
metatable property, causing a lookup-chain to be used for specific
objects. Despite the name of the property, it is not a 'prototype-
based' language, since instances of a 'class' refer to that class,
rather than being copies of it.)
However, despite my own love of JavaScript, it ain't pretty in three
regards:
1) There's no standalone interpreter (that I know of, and certainly
not part of any 'official' distribution), which leaves you at the
mercy of WSH or some sort of web-based interpreter[1].
2) Similarly, the core language can do very little on its own. No
file IO, no http libraries, no threading, no matrix or math
libraries. You're at the mercy of whatever additional libraries your
interpreter (or own JS bindings) give you.[2]
3) You can simulate a class, but not too well[3]. (You can use
closures to define 'private' and 'protected' methods, but they
require new instances of the method functions to be allocated for
each instance of the object.) Inheriting one class from another is
even more difficult[4].
Lua is powerful because it's bare-bones speedy and simple, but it's
not enjoyable to work with as a scripter. Ruby is awesome for the
scripter, but (at the moment) too slow to do everything in for CPU-
intensive apps. JS is sort of a nice mix between pleasing features
and speediness. But only if you have a good interpreter and
environment exposing all the native objects you need to get your work
done.
Basis for my analysis: I've been programming in JavaScript in web
browsers since 1996, and using it in my company's 3D product[5] with
JS bindings to C++ native methods[6] for the last year.
[1] http://phrogz.net/tmp/simplejs.html
[2] http://phrogz.net/ObjJob/objects.asp?langID=4
[3] http://phrogz.net/JS/Classes/OOPinJS.html
[4] http://phrogz.net/JS/Classes/OOPinJS2.html
[5] http://www.anark.com/
[6] http://phrogz.net/ObjJob/objects.asp?langID=11
hmmm. I didn't ask for other places for recommendations for other languages.
I have already visited many places; I am surprised you did not infer this
from my post.
I posted in the hope of personal opinions of Ruby programmers specifically,
since they bring a more pertinant spirit to my quest (particularly
enjoyableness).
> - this mailing list (the archives will have references to all the ones you
> meantion, plus other ones such as Io, and D, and boo, and Groovy - of
> which Io is the only one you might call "far out" - and, oh yeah,
> Smalltalk)
Seems like you did and didn't read my post at the same time. Very strange.
> Here's two languages you're not likely to find immediately. Presented for
> no apparent reason.
...I prefer reasons.
> 1. http://www.erights.org/e/satan/ -- I haven't actually read this paper,
> but it seems topical, so maybe somebody else will, and provide us a book
> report. :)
> 2. http://www.madore.org/~david/programs/unlambda/ -- The purest, simplest
> programming language ever, and it's functional, to boot. Smart combination
> of a few simple constructs allows for a whole world of flexibility.
sounds kinda interesting. But is it enjoyable? Is it practical? I was
careful to list what I am looking for quite prominently.
> Have fun.
I am trying.
> Devin
> APL, Eiffel, Erlang, Haskell, Io, Joy, Lisp, Lua, Mathematica, Mozart/Oz,
> OCaml, Prolog, REXX, Scala, Scheme, Self, and Smalltalk are all the
> legitimate, 'alternative' languages that I recognize (by name only, for
> the most part) from that wiki page, so maybe that makes them more popular.
> Now get to Googlin'.
? I can't believe my eyes.
Can someone tell me if I am talking to a troll?
Somehow your reply hasn't rendered in Outlook Express, something I've not
personally seen before. It could just be the notorious OE, but I thought I
would mention it in case your mailer needs a tweak.
This is the full content of what OE is showing me (and below that a reply
from what I got from google groups):
==begin
"Brian Mitchell" <bina...@gmail.com> wrote in message
news:fcfe417005091...@mail.gmail.com...
> of which Ruby has, and I am looking for your words of advice and guidance=
==end
....that's weird, neither is it showing in google :
http://groups.google.com/group/comp.lang.ruby/msg/b80d44a77317b35b
I think that could be argued but no matter. It has prototype features
with other features also available.
> However, despite my own love of JavaScript, it ain't pretty in three
> regards:
> 1) There's no standalone interpreter (that I know of, and certainly
> not part of any 'official' distribution), which leaves you at the
> mercy of WSH or some sort of web-based interpreter[1].
There are javascript libraries on certain platforms but beyond that I
think Rhino can be made standalone.
>
> 2) Similarly, the core language can do very little on its own. No
> file IO, no http libraries, no threading, no matrix or math
> libraries. You're at the mercy of whatever additional libraries your
> interpreter (or own JS bindings) give you.[2]
>
The libraries are lacking, but with some cleverness hard things like
asynchronous execution can be handled with CPS and other nice tools.
I/O is lacking. Good enough to learn still as the DOM is a rich
library in itself (not great IMO but still very useful). Math is poor
but is good enough or can be built upon. Same goes for matrix stuff.
> 3) You can simulate a class, but not too well[3]. (You can use
> closures to define 'private' and 'protected' methods, but they
> require new instances of the method functions to be allocated for
> each instance of the object.) Inheriting one class from another is
> even more difficult[4].
>
This type of emulation can actually be simplified if your private
etc.. methods are kept in a separate object and delegated to. The idea
is to minimize copying by using intermediate objects that can be
hidden a number of ways (function based closures can be powerful
tools). You probably know this though. Toy around. I am sure you can
find some ways to simplify your class system to make it very painless.
Though, in the end, you probably have more experience than me.
> Lua is powerful because it's bare-bones speedy and simple, but it's
> not enjoyable to work with as a scripter. Ruby is awesome for the
> scripter, but (at the moment) too slow to do everything in for CPU-
> intensive apps. JS is sort of a nice mix between pleasing features
> and speediness. But only if you have a good interpreter and
> environment exposing all the native objects you need to get your work
> done.
>
Lua is good when you need to be practical. I never fell in love with
its tables system. seems too far out of the way for how I think. I
guess I should have mentioned it.. I still only recommend it as an
embedded language.
> Basis for my analysis: I've been programming in JavaScript in web
> browsers since 1996, and using it in my company's 3D product[5] with
> JS bindings to C++ native methods[6] for the last year.
Cool.
> [1] http://phrogz.net/tmp/simplejs.html
> [2] http://phrogz.net/ObjJob/objects.asp?langID=4
> [3] http://phrogz.net/JS/Classes/OOPinJS.html
> [4] http://phrogz.net/JS/Classes/OOPinJS2.html
> [5] http://www.anark.com/
> [6] http://phrogz.net/ObjJob/objects.asp?langID=11
>
Brian.
What languages you deem "enjoyable" is very much a personal choice, and
one determined only through exploration and experimentation. It sounds
like you've explored -- you seem to have a decent list of languages of
which you're aware. Now you have to do the second part -- experiment
with them.
That's why I didn't answer your question directly. Rather, I latched
onto the only context-independent criterion of yours that I found --
"not imperative" -- and gave you a list of non-imperative languages. For
me, Ruby's been the most fun language I've run into. 'swhy I'm here.
BASIC was fun back in the day. But YMMV.
Yes, my post included humor. Possibly, my sense of humor is different
from yours.
>APL, Eiffel, Erlang, Haskell, Io, Joy, Lisp, Lua, Mathematica, Mozart/Oz,
>OCaml, Prolog, REXX, Scala, Scheme, Self, and Smalltalk are all the
>legitimate, 'alternative' languages that I recognize (by name only, for
>the most part) from that wiki page, so maybe that makes them more popular.
>Now get to Googlin'.
>
>
>
>> ? I can't believe my eyes.
>
>
What makes you question them? APL? Check extremeprogramming@yahoogroups.
There's a guy there who swears by the language.
>Can someone tell me if I am talking to a troll?
>
>
If by "troll" you mean, "just writing to see what kind of reaction I can
get out of you," then, no. If by "troll," you mean, "guy who doesn't
type anything of substance," then you've got yourself a matter of
opinion, there, and mine would probably be different from yours.
Historically, at least, ruby-talk seems to have a opinion of me that
lies somewhere between neutral and positive.
Devin
Greg Lorriman wrote:
>"Devin Mullins" <twi...@comcast.net> wrote in message
>news:432DEC60...@comcast.net...
>
>
>>There's plenty of places you can find recommendations for languages.
>>
>>
>hmmm. I didn't ask for other places for recommendations for other languages.
>I have already visited many places; I am surprised you did not infer this
>from my post.
>
>I posted in the hope of personal opinions of Ruby programmers specifically,
>since they bring a more pertinant spirit to my quest (particularly
>enjoyableness).
>
>
>
>>- this mailing list (the archives will have references to all the ones you
>>meantion, plus other ones such as Io, and D, and boo, and Groovy - of
>>which Io is the only one you might call "far out" - and, oh yeah,
>>Smalltalk)
>>
>>
>
>Seems like you did and didn't read my post at the same time. Very strange.
>
>
>
>>Here's two languages you're not likely to find immediately. Presented for
>>no apparent reason.
>>
>>
>
>....I prefer reasons.
Thankyou for your effort at replying to my original post.
"Devin Mullins" <twi...@comcast.net> wrote in message
news:432E1A27...@comcast.net...
>>1. http://www.erights.org/e/satan/ -- I haven't actually read this paper,
>>but it seems topical, so maybe somebody else will, and provide us a book
>>report. :)
>>2. http://www.madore.org/~david/programs/unlambda/ -- The purest, simplest
>>programming language ever, and it's functional, to boot. Smart combination
>>of a few simple constructs allows for a whole world of flexibility.
>
>
> sounds kinda interesting. But is it enjoyable? Is it practical? I was
> careful to list what I am looking for quite prominently.
The intersection of practical and interesting may be quite small.
Someone suggested JavaScript; not a bad idea, though probably not
different enough from Ruby to really stretch your brain. But, if
practical is a major factor, consider jscript.net. You can use
Microsoft's version of ECMASscript to write .Net code. (I *think*
there is a jscript.net compilier for mono, but I'm not sure.)
But if you are really looking for something that helps you think in a
different direction, yet isn't merely academic or weird-for-weirdness
sake, try a functional language such as Haskell.
Or consider OCaml; some folks here were discussing ways of writing
binary Ruby extensions in OCaml as opposed to C which seemed quite
interesting.
Lisp, Haskell, and Ocaml are floating in the back of my own mind as
candidates for next language to learn. Lisp has the upper hand so far,
because, well, it's *Lisp*. And there are lots of good, free resources
for it.
>
>
>>Have fun.
>
>
> I am trying.
>
>
>>Devin
>>APL, Eiffel, Erlang, Haskell, Io, Joy, Lisp, Lua, Mathematica, Mozart/Oz,
>>OCaml, Prolog, REXX, Scala, Scheme, Self, and Smalltalk are all the
>>legitimate, 'alternative' languages that I recognize (by name only, for
>>the most part) from that wiki page, so maybe that makes them more popular.
>>Now get to Googlin'.
>
>
> ? I can't believe my eyes.
>
> Can someone tell me if I am talking to a troll?
Well, they do exist and occasionally appear on this list. I suggest
that, before you think someone a troll, try to be generous and just
assume the poster is not a native speaker of English, and may have only
skimmed your original post, and really means well but doesn't always
come off well in plain text.
James
--
http://www.ruby-doc.org - The Ruby Documentation Site
http://www.rubyxml.com - News, Articles, and Listings for Ruby & XML
http://www.rubystuff.com - The Ruby Store for Ruby Stuff
http://www.jamesbritt.com - Playing with Better Toys
...and therefore more difficult to find. And so one asks questions....
> But if you are really looking for something that helps you think in a
> different direction, yet isn't merely academic or weird-for-weirdness
> sake, try a functional language such as Haskell.
Is this recommendation from experience? I am really looking for informed
opinions, particularly as enjoyment of a language tends not to be vicarious.
> Or consider OCaml; some folks here were discussing ways of writing binary
> Ruby extensions in OCaml as opposed to C which seemed quite interesting.
Yes, but why OCaml? Is it enjoyable? Learning curve...etc.., do you actually
have experience of it?
> Lisp, Haskell, and Ocaml are floating in the back of my own mind as
> candidates for next language to learn. Lisp has the upper hand so far,
> because, well, it's *Lisp*.
That does seem like a rather self-referential reason. I would probably not
choose Lisp on this particular recommendation.
>And there are lots of good, free resources for it.
Also for many other languages.
>>>the most part) from that wiki page, so maybe that makes them more
>>>popular. Now get to Googlin'.
>>
>>
>> ? I can't believe my eyes.
>>
>> Can someone tell me if I am talking to a troll?
>
> Well, they do exist and occasionally appear on this list. I suggest that,
> before you think someone a troll, try to be generous and just assume the
> poster is not a native speaker of English, and may have only skimmed your
> original post, and really means well but doesn't always come off well in
> plain text.
My response, IMO, was quite constrained.
Greg
I'm starting on Haskell, as time permits. Haskell has syntax (Lisp doesn't)
and classes and type declarations. Functional programming is a different
paradigm, powerful, more directly mathematical. And you can bring some of it
back to Ruby.
Of course, there's also COBOL, which may be the most popular language in the
world by lines of code in production, but I think many would agree with my
claim that it is more painful than it is practical, and it is certainly
practical - there are COBOL jobs.
I just posted a paragraph on COBOL to comp.lang.ruby :)
Cheers,
Dave
ML (Ocaml, New Jersey ML, SML, whatever ML) - spent 3 years with one
version of this at uni, an interesting and wonderful language
Pros
- it's so easy to do stuff that takes a lot of C
- functional so completely different from mainstream procedural and
OO (though I think Ocaml has an object system, the version I learnt on
didn't)
- 1 and 3 from your list covered
Cons
- not very practical (the version I used had no elegant way to do
IO, I guess that's been fixed now, but I haven't looked at it in a long
time)
- learning the language is easy, but the shift to a purely
functional style of programming is hard to get at first. I remember
being asked to do some stuff in C after 1 1/2 years of SML and thinking,
"It's like 3 lines of SML, why the hell is it so much trouble in C", so
from my experience, once you get it, it's amazingly powerful and enjoyable
Boo (statically typed, .Net language similar to Python), I've only
looked at it, I've *never* written a line of Boo code, so these are my
initial thoughts
Pros
- like python, but access to .Net libs
- very practical
- very alternative
- looks pretty easy to pick up
- Pacman ghost as logo!
Cons
- not much documentation (like most codehaus projects I've got to say)
Erlang (can't remember who makes this, Siemens, Samsung or someone
involved in telecommunictaions)
Pros
- looks very powerful for when you need high availability in your code
- thread management model is very very well thought out
- extremely alternative
Cons
- maybe not so practical for all domains
- I'd imagine a steep learning curve (so far I've not had chance to
do more than scan the most basic of docs - not even a hello world sample)
- may not be enjoyable
Eiffel - played with this for the first time about 6 years ago, keep
meaning to return to it, but never have the time or motivation
Pros
- practical (there's even a .Net version so you can access the .Net
libs)
- alternative (ish)
- can produce very fast code (compiles to native code)
Cons
- not the most enjoyable experience I've ever had learning a new
language
- quite a bit to learn (different terminology etc)
If you know Java, I'd also suggest looking into the extensions that are
becoming available. AspectJ is very cool and as a long-time Java
developer, AspectJ was a breath of fresh air to play with. I've got
quite a bit of experience of it and I think it's a very useful thing to
learn (at the very least the tutorials show how much cleaner you can
make your code). XJ from IBM also looks interesting, it's an embedded
XML in Java extension, wierd and makes the source code look funky, but I
think it may have potential too - currently only works on 1.4 (no
generics etc).
Please note I'm not in any stretch a 'rubyist', I'm still learning how
ruby works myself, so take all the above with a large pinch of salt.
Kev
Have you tried the pragprog list? I believe many list members gather
'round for Language of the Year study sessions. And there have been
many discussions exactly like this one.
>
>
>>But if you are really looking for something that helps you think in a
>>different direction, yet isn't merely academic or weird-for-weirdness
>>sake, try a functional language such as Haskell.
>
>
> Is this recommendation from experience? I am really looking for informed
> opinions, particularly as enjoyment of a language tends not to be vicarious.
It is based on comments I've read from others in my own perusal for a
Next Language.
Still, even if I *had* learned Haskell, you'd be getting an opinion from
someone you've never met and know next to nothing about, and whose ideas
of enjoyment may be peculiar.
If you get 10 people saying, "I've not used it but I've heard good
things", that may be more valuable than one person swearing by it from
personal use.
After all, I say nice things about Visual Basic.
> ...
>
>>Lisp, Haskell, and Ocaml are floating in the back of my own mind as
>>candidates for next language to learn. Lisp has the upper hand so far,
>>because, well, it's *Lisp*.
>
>
> That does seem like a rather self-referential reason. I would probably not
> choose Lisp on this particular recommendation.
Still, A recursive recommendation for Lisp does seem appropriate.
>
>
>>And there are lots of good, free resources for it.
>
>
> Also for many other languages.
The best idea may be to avail yourself of some of those resources and
just try stuff out. Pick stuff at random.
James
Thanks for the great info. I'm now going to re-read what you wrote....
Greg
That's a great idea. Thanks for the suggestion.
>> Is this recommendation from experience? I am really looking for informed
>> opinions, particularly as enjoyment of a language tends not to be
>> vicarious.
>
> It is based on comments I've read from others in my own perusal for a Next
> Language.
>
> Still, even if I *had* learned Haskell, you'd be getting an opinion from
> someone you've never met and know next to nothing about, and whose ideas
> of enjoyment may be peculiar.
I wouldn't bother with usenet, or the internet for that matter, if these
were considerations which bothered me. he he.
> If you get 10 people saying, "I've not used it but I've heard good
> things", that may be more valuable than one person swearing by it from
> personal use.
I personally consider that an opinion from experience is worth 100 without,
not having met the person not-withstanding. Ok, make that 1000 just to
really bash your 10 to 1!!! :)
> After all, I say nice things about Visual Basic.
I don't know how to respond to that.
>> That does seem like a rather self-referential reason. I would probably
>> not
>> choose Lisp on this particular recommendation.
>
> Still, A recursive recommendation for Lisp does seem appropriate.
I had a feeling that might be the case.
>>>And there are lots of good, free resources for it.
>>
>>
>> Also for many other languages.
>
> The best idea may be to avail yourself of some of those resources and just
> try stuff out. Pick stuff at random.
True, I could, and maybe sometime I will, but before I waste alot of time
doing that I would rather gather as many informed opinions, preferably
personal, as possible. I very much enjoy informed personal opinions, and
feel that they are valuable, especially when contrasted against each other.
For similar reasons I need plenty of charactererisation when I read a novel.
thanks,
Greg
http://factor.sourceforge.net/
Factor is the baby of Slava Pestov, the author of jEdit.
Slava blogs about Factor quite often here
http://www.jroller.com/page/slava/
-----Original Message-----
From: Greg Lorriman [mailto:bo...@bogus.com]
Sent: Monday, 19 September 2005 7:52 AM
To: ruby-talk ML
Subject: Language recommendations from ruby persons....
Dear sirs and madames,
I've thrown myself into ruby and I'm having a pleasant time.
Now I am looking to find another language to learn with three features,
two of which Ruby has, and I am looking for your words of advice and
guidance.
The features I am looking for are
1)enjoyableness
2)practicalness
3)alternativeness
with a decent nod to
4)not so long a learning curve (hey, I'm from the TV generation; I need
instant kicks).
Ruby does the first two, but now I want to cruise into other dimensions,
There are lots of choices for 1 and 3, so I'm currently focusing on (2),
and extending my toolkit with languages that play in different spaces.
Currently learning OCaml (compiled, statically typed language), and plan
on following up with Scala (targets JVM and .NET). Both are enjoyable,
and different enough to add a new way of thinking about problems; both
should be attractive to people who like Ruby.
D shows promise, but the last time I looked at it (a month or two ago) I
was disappointed by the state of the libraries, so I'd give that one a
while. Haskell I really enjoyed learning, but I haven't used it for
anything since.
martin
My experience was dabbling in Icon, which is basically no longer
being developed (TTBOMK).
On Mon, 19 Sep 2005, Greg Lorriman wrote:
> Now I am looking to find another language to learn with three features, two
[...]
> 1)enjoyableness
Yes, it is elegant .
> 2)practicalness
Lots of example usages, because nearly all the icon ones should work.
> 3)alternativeness
It is goal directed, with backtracking. Statements succeed, or they
fail silently, and this is used in the goal-meeting.
>
> with a decent nod to
>
> 4)not so long a learning curve (hey, I'm from the TV generation; I need
> instant kicks).
Depends what you are used to. I never really got fluent in it, and
haven't had time to do so, but would like to because I can see it is
powerful.
>
> I really would like something that makes me think in a very different
> manner, and is excellent at solving a range of problems that imperative
Yes, goal directed stuff is pretty different. Allows expressing
solutions in a different way from normal.
> languages are not too good at. I would like to be using it a lot for
> real-world stuff, like I am Ruby and Delphi.
Lots of sample scripts came with Icon, and I think do with Unicon,
but its a while since I looked.
HTH
Hugh
> 1) There's no standalone interpreter (that I know of, and
> certainly not part of any 'official' distribution), which
> leaves you at the mercy of WSH or some sort of web-based
> interpreter[1].
Microsoft publish the WSH COM interface and by using this
interface it is fairly easy to embbed Java Script into any
application.
This is the same interface used by the Zeus editor to drive
it's Java Script and VB Script macros scripting options.
I would assume it should be quite easy to embbed the Java
Script WSH into a simple Win32 console application, giving
you a basic stand alone enterpreter.
> Lua is powerful because it's bare-bones speedy and simple,
> but it's not enjoyable to work with as a scripter.
Funnily enough Zeus also offers a Lua as one of its macro
scripting languages :)
Jussi Jumppanen
Author of: Zeus for Windows Editor (New version 3.95 out now)
"The C/C++, Cobol, Java, HTML, Python, PHP, Perl folding editor"
Home Page: http://www.zeusedit.com
> Lisp - got playing with this on a very boring business trip
> (there's an online interpreter somewhere, google for Lisp
> tutorial). Pros
> - you can do pretty much anything with it (the tutorial leads
> you through writing your own mini-language for an old school
> adventure game, it was an eye-opener how easy it was).
I'm interested in this tutorial, if you wouldn't mind providing a
link. I did some Googling, but couldn't seem to come up with it.
James Edward Gray II
I'm paraphrasing/misquoting someone here (probably Paul Graham)
"Lisp turns the easy, boring and tedious task of solving your problem into
the difficult but interesting task of extending the language"
This is the heart of whats amazing about lisp: macros (which are not like
macros in C, so don't even think it.) let you extend and redifine the
language however you want.
And don't worry about the parens, they quickly sink below your conscoius
awareness.
check out www.paulgraham.com <http://www.paulgraham.com> for extremely
interesting lisp advocacy from a man who is a millionaire(or at least very
rich) off the back of lisp.
And I'm sorry to get so fanatical about another language in a ruby list. I
still love you ruby.
Smalltalk fits the bill on this point. It's image-orientation and
"objects all the way down" approach is very helpful in truly
understanding OO programming.
http://www.squeak.org/download/index.html
http://smalltalk.cincom.com/index.ssp
http://www.object-arts.com/Home.htm (Best Windows Smalltalk)
The book "Smalltalk-80: The Language" is a great companion:
http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?r=1&isbn=0201136880
[snip]
>
> Grateful for any of your wonderful and marvellous thoughts,
>
> Greg
>
>
>
--
Daryl
"We want great men who, when fortune frowns, will not be discouraged."
-- Colonel Henry Knox, 1776
> James Edward Gray II wrote:
>
>> On Sep 18, 2005, at 11:32 PM, Kev Jackson wrote:
>>
>>> Lisp - got playing with this on a very boring business trip
>>> (there's an online interpreter somewhere, google for Lisp
>>> tutorial). Pros
>>> - you can do pretty much anything with it (the tutorial leads
>>> you through writing your own mini-language for an old school
>>> adventure game, it was an eye-opener how easy it was).
>>>
>> I'm interested in this tutorial, if you wouldn't mind providing a
>> link. I did some Googling, but couldn't seem to come up with it.
>>
>
> Casting SPELs in Lisp
>
> http://www.lisperati.com/
>
>
> It is really well done.
Yes it is. Thanks for the link.
James Edward Gray II
> "Devin Mullins" <twi...@comcast.net> wrote in message
>
>> APL, Eiffel, Erlang, Haskell, Io, Joy, Lisp, Lua, Mathematica, Mozart/Oz,
>> OCaml, Prolog, REXX, Scala, Scheme, Self, and Smalltalk are all the
>> legitimate, 'alternative' languages that I recognize (by name only, for
>> the most part) from that wiki page, so maybe that makes them more popular.
>> Now get to Googlin'.
>
> ? I can't believe my eyes.
>
> Can someone tell me if I am talking to a troll?
I don't think you are. If you need a smaller list, let me name you
the languages of above that I personally think are interesting and
worth learning:
APL (actually, go for K), Joy, Haskell, (Common) Lisp, Scheme, Self
Add Prolog (which is too frustrating to me on its own, but you can do
logic programming in Lisp and Scheme rather easily too), and you have
covered about every paradigm in existance.
--
Christian Neukirchen <chneuk...@gmail.com> http://chneukirchen.org
So practical, they even wrote a book about it :)
http://www.gigamonkeys.com/book/
martin
> Yes, but why OCaml? Is it enjoyable? Learning curve...etc.., do you
> actually
> have experience of it?
>
OCaml was required for my Programming Languages class back in college. So,
from first hand experience, I can say it's fun (perhaps the most fun I'd had
programming, until learning Ruby :-) ). A lot of other people in this class
did not share that opinion, but they're generally not the kinds of people
who learn a (programming) language for fun.
The learning curve is going to be the much same as with Haskell, as it's
functional (although not purely). You will have to learn to solve problems
in different ways than you are probably used to, but isn't that the point?
Rob
http://www.paulgraham.com/onlisp.html
The most fun I've had programming in a professional environment was
using Smalltalk. Back then I used ParcPlace Visualworks, but now I
would recommend the Squeak implementation, which is open source. It
rates high on practicality, with strong Internet protocol and
multi-media support. From a language perspective, for someone who
knows Ruby, it is not as alternative as something like Lisp, Haskell,
or OCamel, because Ruby borrowed a lot of aspects of Smalltalk. The
main thing you will get from Smalltalk over Ruby is that it has an
even more interactive environment, where everything is at your
fingertips. Squeak does have a very alternative GUI toolkit, and an
active community of users.
The most fun I had programming in college was doing a project in
Prolog. Prolog rates very high in the alternative criteria. In Prolog
(short for Programming in Logic) your program consists of a series of
"facts" and "rules", and your program executes by running an inference
engine that attempts to "prove" a given statement based on the list of
facts and rules. Unfortunately, Prolog has not proven to be a good
general-purpose language, so it doesn't rate too high on the
practicality criteria.
Whatever you pick, I hope you enjoy yourself!
Greg
> Someone suggested JavaScript; not a bad idea, though probably not
> different enough from Ruby to really stretch your brain. But, if
> practical is a major factor, consider jscript.net. You can use
> Microsoft's version of ECMASscript to write .Net code. (I *think*
> there is a jscript.net compilier for mono, but I'm not sure.)
I've been contributing to it. Basically, it's getting ready for real
world use and can run quite a few parts of Mozilla's ECMAScript test
suite. The things Microsoft introduced in JS.NET (static typing, using
CLR methods) are not yet implemented, but making the important ones work
is a priority right now.
> I've been watching 'Factor' for sometime, but I havent used it yet ...
Let me second this. I'm keeping an eye on concatenative languages like
Factor and Joy as well and those languages are simple at their cores,
yet very powerful. They feel good and there's quite some exploration to
be done with their concepts.
Let me third this :) Concatenative programming languages like Joy[1]
(very academic) and Factor[2] (a more practical language from the man
who brought us JEdit) are very interesting - giving Forth a
theoretical makeover and applying Lisp's program=data=program concept
to produce a very elegant and powerful paradigm.
In some ways, Factor and Joy feel like Ruby in RPN. Compare Ruby's
[1, 2, 3, 4].map{|x| x * x}
=> [1, 4, 9, 16]
with Joy/Factor's
[ 1 2 3 4 ] [ dup * ] map
=> [ 1 4 9 16 ]
This applies the quoted program [dup *] to the list [1 2 3 4] using
the map operator.
Where Ruby has blocks, and Lisp has lambdas, concatenative languages
have quoted programs.
A more impressive example is Joy's:
5 [1] [*] primrec
which computes the factorial of 5 by using the primrec 'primitive
recursion' operator.
This is the explanation from the tutorial:
> It first pushes the number 5 and then it pushes the two short quoted programs. At this point the stack contains three elements. Then the primrec combinator is executed. It pops the two quotations off the stack and saves them elsewhere. Then primrec tests whether the top element on the stack (initially the 5) is equal to zero. If it is, it pops it off and executes one of the quotations, the [1] which leaves 1 on the stack as the result. Otherwise it pushes a decremented copy of the top element and recurses. On the way back from the recursion it uses the other quotation, [*], to multiply what is now a factorial on top of the stack by the second element on the stack. When all is done, the stack contains 120, the factorial of 5.
That's pretty funky.
The most interesting aspect of concatenative languages is - surprise,
surprise - concatenation, which makes it easy to do all the stuff
functional programming languages do but in a much easier to understand
fashion. For example, if you take a sequence like this:
2 3 * 5 + .
=> 11
you can take any combination of symbols and cut them out and hey
presto you've got a function. E.g. (in Factor syntax);
: times_three 3 * ;
: plus_five 5 + ;
to get
2 times_three plus_five .
=> 11
or you can do this:
: three_times_and_five 3 * 5 ;
2 three_times_and_five +
=> 11
the point being you can abstract ~any~ sequence of operations and data
- strong stuff!
(But if you want to get any real work done, try GForth[3], which is a
blazingly fast Forth that approaches C speed).
Have fun!
Sean
[1] Joy - http://www.latrobe.edu.au/philosophy/phimvt/joy.html
[2] Factor - http://factor.sourceforge.net
[3] GForth - http://www.complang.tuwien.ac.at/forth/gforth/
It features:
+ Smalltalk like syntax (so easy to adapt for Ruby guy)
+ Multipledispatch
+ Prototype base OO.
So In learning Slate you will get two new Idea (Multipledispatch and
Prototype base programming)
I think the idea is nice to learn.
In functional way, may be you would like to try Haskell.
BTW, I'm learning Lisp for myself.
So may be you will be insterested.
A couple things I like in CommonLisp over Ruby is MultiDispatch and
Condition System.
Yes, but the OP was looking for something 'weird and alternative'.
As he said:
> I really would like something that makes me think in a very different
> manner, and is excellent at solving a range of problems that imperative
> languages are not too good at.
And RPN is certainly a different way of thinking.
Regards,
Sean
> Somehow your reply hasn't rendered in Outlook Express, something I've not
> personally seen before. It could just be the notorious OE, but I thought I
> would mention it in case your mailer needs a tweak.
JFTR, it's exactly the same with 40tude Dialog. Could this be caused by
the Mail-to-news gateway?
Markus
Visual Basic rocks! SQL is for toads! Long live binary files! All your base
are belong to us! Bush is the mastermind behind hurricane Katrina's coverup!
There *was* a guy on the grassy knoll! Windows Vista will squash linux!
Okay, got that off my chest. Sorry, it's Friday. Just trying to bring a
smile, don't flame me too bad!
On 9/18/05, Dave Burt <da...@burt.id.au> wrote:
>
> James Britt wrote:
> > Lisp, Haskell, and Ocaml are floating in the back of my own mind as
> > candidates for next language to learn. Lisp has the upper hand so far,
> > because, well, it's *Lisp*. And there are lots of good, free resources
> > for it.
>
> I'm starting on Haskell, as time permits. Haskell has syntax (Lisp
> doesn't)
> and classes and type declarations. Functional programming is a different
> paradigm, powerful, more directly mathematical. And you can bring some of
> it
> back to Ruby.
>
> Of course, there's also COBOL, which may be the most popular language in
> the
> world by lines of code in production, but I think many would agree with my
> claim that it is more painful than it is practical, and it is certainly
> practical - there are COBOL jobs.
>
> I just posted a paragraph on COBOL to comp.lang.ruby :)
>
> Cheers,
> Dave
>
>
>
>
--
Brock Weaver
brock...@gmail.com
/* you are not expected to understand this */
Actually ...
<URL:http://www.mozilla.org/js/spidermonkey/>
mathew
--
<URL:http://www.pobox.com/~meta/>
WE HAVE TACOS
> I really would like something that makes me think in a very different
> manner, and is excellent at solving a range of problems that imperative
> languages are not too good at. I would like to be using it a lot for
> real-world stuff, like I am Ruby and Delphi.
>
Depending on your range of problems and platform:
J (www.jsoftware.com)
FORTH (check Google)
Both are more for bending your mind and professional enjoyment than
"get stuff from a database and show it on the screen". If that is
your "joy", then stick to Ruby and Delphi (both excellent choices, BTW).
Regards,
-mark.
On Fri, 2005-09-23 at 17:47 +0900, Robbie Carlton wrote:
> Factor looks very cool. But I think the postfix maths is a potential
> problem. People really like infix. I think this is the major reason lisp
> hasn't been excepted more widely.
>
The nice (bizarre?) thing about Forth-ish languages is that they
are complete chameleons. You want infix? Not a problem, just
add a library to redefine the operators. The language doesn't care:
> 4 5 + .
9 ok
> : infix 32 word number drop ;
> : plus infix + ;
> 4 plus 5 .
9 ok
> : .+ plus ;
> : .= . ;
> 4 .+ 5 .=
9 ok
So, are we infix or postfix? Does it really matter?
-mark.
Cute, but that only works when the second argument (5 in this case) is a
literal. Getting true infix in forth would be as hard as doing it in any
programming language implementation.
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
On Fri, 2005-10-07 at 11:34 +0900, Joel VanderWerf wrote:
> Mark Probert wrote:
> >>: infix 32 word number drop ;
> >>: plus infix + ;
> >>4 plus 5 .
> >
> > 9 ok
>
> Cute, but that only works when the second argument (5 in this case) is a
> literal. Getting true infix in forth would be as hard as doing it in any
> programming language implementation.
>
Sure. The point being that the languages are by their nature
extensible at this level. Nothing is sacred. That can be
both a good thing and a bad thing, of course ... However,
there are type extensions, object extensions, functional
extensions, ways of making it look like LISP, et al.
Though not to make it look like J ..
-mark.