This week's book giveaway is in the Other Open Source APIs forum. We're giving away four copies of Storm Applied and have Sean Allen, Peter Pathirana & Matthew Jankowski on-line! See this thread for details.
So I'd like something not in that list. It would be helpful that if you suggest something you give some reasons as to why learning said language would be worth while and possibly even fun.
I'm not going to restrict myself to any particular type of development (desktop, web based, console, etc). The only platform restriction I have is I can't do anything that is MAC specific because I don't own one. So feel free to suggest anything with those couple of limitations.
[ August 18, 2006: Message edited by: Gregg Bolinger ]
[ August 18, 2006: Message edited by: Gregg Bolinger ] [ August 18, 2006: Message edited by: Gregg Bolinger ]
Originally posted by Henry Wong: How about Macromedia Flash (ie. ActionScript)? From the little that I have seen, it looks somewhat like Java. And it definitely blows Applets out of the water.
Actually, I would like something as far from Java as possible, if possible, realizing all languages have overlap. [ August 18, 2006: Message edited by: Gregg Bolinger ]
Well, to take a giant leap out of the mainstream, look at REXX. It's a tiny language, ANSI standard, on almost all platforms, excellent for replacing WSH or shell scripts. String handling is very cool, though I don't think it ever got regex. I mean a space is a concatenation operator. Heh heh.
This may not sound very interesting because Perl and other scripting languages fit in the same space, but then look at how it integrates as the macro language for a C/C++ application. The "command environment" and function package architectures are great. IBM used it as the macro language in everything for a while - editors, DB2 tools, etc.
Nowadays there are also OO-REXX and NetRexx which supports free mixture of REXX and Java syntax.
I know there is a chance that you won't consider this suggestion as a language either -- but going to a language "as far from Java as possible", while at the same time, staying very pragmatic....
How about SQL? And the tools are cheap too. MySQL and other databases have free versions. You can even get a full blown enterprise copy (albeit developers only) of SQL Server 2005 for $50.
Ok, well, maybe I should have added SQL to my list of known lanugages. If you consider SQL a language. But for arguments sake, say I did tackle SQL. Which function implementation? DB2? Oracle? MSSQL? MySQL, PostgreSQL...They all have their own function list. Nah, not going to get into all that.
Come on people. Honestly, I'm surprised no one has said Ruby yet. Or Objective C, or any of the .NET crap.
It looks like I was wrong. There are still quite a few prolog compilers out there, including one from GNU.
Anyway, what makes Prolog an interesting language is its ability to backtrack. Every function (predicate, rules) call actually has multiple results.
What the language will do is call functions, and then use the result in the next function call, and so on. If it encounters a case where there isn't a solution, it will actually backtrack to the previous function for a different result, and continue. It will keep doing it until every possible combination of results is tried (unless you request it to not to).
I second Prolog. It's very different from OO or procedural languages, so you'd learn quite a bit. There's a good Java implementation at jlogic @ sourceforge. (BA: I implemented a BSF interface for JLog, at http://www.ulfdittmer.com/jlog/index.html [ August 18, 2006: Message edited by: Ulf Dittmer ]
Prolog sounds interesting. I'll look into it. I've messed with Lisp before but didn't add it to my list of familiars because I am not that familiar with it. So that is something else I might possibly look into.
Well that was my first thought, but I considered it, ummm... obvious. And evidently it was, since you mentioned it yourself. But yeah, Ruby + Rails has a good number of enthusiastic supporters out there, and you've probably already seen quite a few, um, "discussions" of the merits of the various languages/platforms/frameworks/whatever. Hyperbole and vitriol aside, Ruby seems like a language that is both fun and productive, and worth looking into, whether you end up embracing it wholeheartedly or not.
Alternately, Haskell might be a good way to at least bend your mind in different directions than it's used to.
Oh sure, make another post a couple minutes before mine which just completely undermines what I posted. (And a couple more after that.) Fine. I can't be terribly specific; I haven't delved very far into Ruby. I can say that Ruby has appeal to me independent of Rails. I like the easy and thorough support of closures, and wish we had that in Java. Groovy is also cool for similar reasons, but hasn't come as far in stabilizing and attracting a user base, and if you're looking for something different from Java, Groovy is not what you want, since it effectively seems to be a middle ground between Java and Ruby/Python. Hopefully someone else can go into additional detail. [ August 18, 2006: Message edited by: Jim Yingst ]
Ruby the language has a novel sort of intuitiveness about it that's hard to explain, but easy to experience. Read an introductory chapter or two about Ruby, and then try to write some code. You'll find that most things you try will work -- moreso than with other languages. It's not really due to similarity with other languages, either -- it's just that it has a nice self-consistency that's missing, IMHO, from other languages in the same space (like the 3 P's.) Once you understand part of it, you'll be able to guess the rest of it.
Originally posted by Ernest Friedman-Hill: Ruby the language has a novel sort of intuitiveness about it that's hard to explain, but easy to experience. Read an introductory chapter or two about Ruby, and then try to write some code. You'll find that most things you try will work -- moreso than with other languages. It's not really due to similarity with other languages, either -- it's just that it has a nice self-consistency that's missing, IMHO, from other languages in the same space (like the 3 P's.) Once you understand part of it, you'll be able to guess the rest of it.
Thanks Ernest. I did do some reading and like I said, have gone through some really simple scripts. I'll see what else I can find.
Also, I don't want this thread to become Ruby specific, so more suggestions are welcome. Thanks for everything so far.
Originally posted by Jeanne Boyarsky: I'll throw Lisp into the ring. It's definitely a different way of thinking than a procedural/OO language.
For some reason which I find hard to explain, Lisp is a language near the bottom of my list of programming languages.
I could never write elegant code with that language. No matter how hard I try to make Lisp code look readable. If I revisit (my own) code after a only a month, I have to figure it all out again.
The language on the absolutely bottom of my list, was used to implement a very cool Windowing System, that went by the acronym "NeWS". However, the language was postscript -- and whoever thought that using postscript was good idea should be shot.
Okay, maybe not shot.... If he was shot then we wouldn't have gotten Java...
Learned both in college, don't remember poop about either one. I think I'd like to keep it that way for now. But thanks.
There is actually a language related to Fortran called "ratfor" -- which is short for rational fortran. One of my favorite books in College was called "software tools" which used that language -- it was later changed to used a different language for examples. (This was a bad idea, which I will explain)
The whole idea of the book was to write very small but useful tools, and then build on them to write very small but more useful tools. It starts with simple data get and set, to very complex parsing. In fact, by the end of the book, you end up with a "ratfor" to fortran processor.
It was really cool both learning a new language, and by the end of the semester, actually seeing a preprocessor that implemented that language.