Fog Creek Software
Discussion Board




Picking a DIFFERENT prog. language to play with

Like the poster who started the 'picking a programming language to play with' thread, I too am looking to learn a new language, but I need something different, more esoteric than what I'm used to.  I use Java constantly, C/C++ on an almost-daily basis, and I'm quite experienced with the scripting side of things (Python, some Perl, etc).  Back in the day, I was 100% Lisp.

So, clearly I'm not particularly interested in learning a new syntax just to get the same set of commonplace language features I'm used to (OO, dynamic/static typing, etc).  I try to learn a new language once a year, and I really need something interesting and different.

My current front-runner is J (http://www.jsoftware.com), which has intrigued me due to its interesting syntax and verb tables, which appear to be a phenomenal construct to work with when doing anything related to mathematics or statistical analysis.

Any other suggestions out there?  Since I've already mentioned one single-letter language, I'll say that I am *very uninterested* in K, the website for which I could not figure out, never mind the syntax that can twist steel.

Chas
Thursday, July 10, 2003

How about Ruby? I haven't tried it but I have heard of good reviews. Anyone out there have any experience with it?

http://www.ruby-lang.org/en/

DJ
Thursday, July 10, 2003

Haskell!

Or how about redcode, at least it is fun to learn...

--
ee

eclectic_echidna
Thursday, July 10, 2003

Is Ruby really that different though?  Last I breezed through its website, it looked like yet another OO scripting language, like Python with some interesting syntax.  I'll check it out again though...

Chas
Thursday, July 10, 2003

J and K are essentially second generation versions of APL, that tossed the special symbols of APL in favor of plain ASCII.  You might be interested in Dyalog APL, a second generation version of APL that kept the special symbols. Dyalog's latest version is .NET compatable. 
 
Academics tend towards J (it's free, and it fixes some of the functional impurites of old APL), while commercial developers who need GUI an IDE, integration with Windows, etc., tend to use Dyalog.

J, K, and Dyalog APL are all very interesting products.

Paul Mansour
Thursday, July 10, 2003

Dyalog may be found a http://www.dyalog.com

Paul Mansour
Thursday, July 10, 2003

Sounds like you want a new programming paradigm (did I just type that?).  Try Lisp.  Or Smalltalk.

snotnose
Thursday, July 10, 2003

try ML

apw
Thursday, July 10, 2003

Paul, thanks for the hint on J's lineage.  I'll check out dyalog, although I should have mentioned that I tend to avoid working with Windows whenever possible (I have to deal with it enough as it is!).  Thankfully, it looks like Dyalog is available for various Unix/Linux flavors, so it's in the running for me.

(Just so everyone doesn't get the wrong idea, I spend all day working on a client-side app that gets 60% of its sales from Windows, so it's not like I  have a pathological aversion with regard to the platform.)

I have about 3 years of exp. with Lisp (from 6 years ago, but anyway), so that won't cut it (although I do love prototyping in it still).  From what I've gathered, Smalltalk is on the decline, which is unattractive at this point -- not that I'm looking for resume filler or anything, but I'd like to get in on the lower floors of a language going up, not the other way around.  Besides, Smalltalk is the grandfather of a great many things that I use all the time, object orientedness being one of them.

Paradigm is a grandiose way of saying it, but yes, I think you get my intent.

Chas
Thursday, July 10, 2003

Forth

bpd
Thursday, July 10, 2003

B

Prakash S
Thursday, July 10, 2003

REBOL is a different language with traces of:

    Scheme: functional style, highly reflexive symbolic programming
+  Python: utility, productivity
+  Forth: compactness, domain specific dialecting
+  Postscript: platform independent cross-network messaging
+  LOGO: simplicity, clean/clear syntax

REBOL is around 400Kb (200Kb without the GUI layer), it runs on roughly 40 platforms, it's a single executable file that requires no libraries, etc.  It's incredibly quick and convenient.

Unfortunately, REBOL arrived a bit too late on the scene (post Java). In a saner world, REBOL would be a lot more popular.

http://www.rebol.com/download.html

Edoc
Thursday, July 10, 2003

Brainf*ck - http://www.muppetlabs.com/~breadbox/bf/

From the link: "Brainf*ck is the ungodly creation of Urban Müller, whose goal was apparently to create a Turing-complete language for which he could write the smallest compiler ever, for the Amiga OS 2.0. His compiler was 240 bytes in size. "

note: I've changed the name of the language slightly for those people who can't bear to see the 'F' word.

RocketJeff
Thursday, July 10, 2003

If you want to use the most simple and best language, then try "Smalltalk", however, if you want a job use "Java".

James Ladd
Thursday, July 10, 2003

soz, should have said "if you want a job, _stick_ with Java"

James Ladd
Thursday, July 10, 2003

Haskell

http://www.haskell.org

If you are looking to stretch your imagination, Haskell should be a nice, new paradigm. Since you know Lisp, you shouldn't be too scared of functional programming with Haskell.

runtime
Thursday, July 10, 2003

ocaml or haskell might be nice but you could also look into a language that is geared to a certain area. for example, Matlab, R, SAS, or Mathematica; not only are they somewhat different they are actually useful.

Tom Vu
Thursday, July 10, 2003

I don't even know if Prolog is still around ... but talk about a paradigm shift! I can't really define it other than the typical comments like "non-procedural" and "logic-based". What I can say is that it twisted my brain to think in ways I had never thought before.

A quick Google search results in a couple of, apparently still maintained, sites:
http://pauillac.inria.fr/~diaz/gnu-prolog/
http://www.swi-prolog.com

Zahid
Thursday, July 10, 2003

Intercal.

http://catb.org/~esr/intercal/

ajs
Thursday, July 10, 2003

Prolog is well worth learning, but don't expect to write full programs in it. It makes a GREAT library to be called by other languages, though.

Here's the languages on my "got to learn one of these days":

Dylan - a descendant of the scheme/lisp tree with more "normal" syntax, while retaining much of the power of lisp.

OCaml/ML/Haskell - I will learn one of these functional languages one of these days, but none of them have particularly good intro docs from what I can see. OCaml seems to keep winning programming contests, so that's what I'll probably end up with.

Erlang - another functional language, this has the advantage of actually being used in industry - it was invented by Ericcson to write embedded code in phone switches.

Squeak Smalltalk - I pick this up every six months or so, get completely confused by the environment, and put it down again. But there's something really good here, I just need to get past this "hump" I seem to be stuck on.

Icon - spiritual descendant of Snobol, Icon looks like a normal procedural language, but it's not. It's built around "generators": functions that can return multiple values one at a time. It's pretty cool, actually.

I hope this list gave you some inspiration.

Chris Tavares
Friday, July 11, 2003

I also say go for Forth:
http://c2.com/cgi/wiki?ForthLanguage

If you have any interest in embedded systems, it is worth a look.  Plus, if you have a Sun, you have a Forth interpreter.  I.e. when you are at the OK prompt :)

Fifth
Friday, July 11, 2003

I'd definitely go for Whitespace.

http://compsoc.dur.ac.uk/whitespace/index.php

You certainly can't argue that it's different.

Will
Friday, July 11, 2003

Clarion is the way to go! The new version (still in beta) rocks.

www.softvelocity.com

K. Swan

Kendall Swan
Friday, July 11, 2003

I wonder why nobody mentioned Eiffel. It's the most interesting and flexible OO language I've seen. Throw in Design by Contract and you have a powerful language.

ice
Friday, July 11, 2003

I second Redcode:

http://corewars.sourceforge.net
http://www.koth.org

constructive comment
Friday, July 11, 2003

Not exactly a programming language, but it might be fun to learn a hardware-description language (VHDL or Verilog).  They're like programing laguages, but since things are executed concurrently instead of sequentialy, you can really get thrown sometimes.

The downside is that you'd need more than just your computer.  Some chips, a breadboard wire . . . .  Also, I'm not sure what kind of tools are available that don't cost a lot of money.  As a compromise you could get a ROM burner and a GAL (GALs are a few bucks, depending on how nice a one you get, not sure about the burner but it's gotta be cheaper than an FPGA) and write some ABEL code for it, but you'd only be able to do relatively simple things.

Michael Chansky
Friday, July 11, 2003

I'm suprised noone suggested this. If this is just to fullfill your "one language a year" to further your understanding in the field of IT, why not spend some time with assembler for your favorite platform? A potential plattform could be JVM, if you spend most of your time programming Java, you'll have some concrete use out of you 'further education'.

a2800276
Friday, July 11, 2003

Something like SML or Miranda would fit the bill. Different is not the word I would use, however (something like "Agh! No! Keep it away from me!" would be closer).


Friday, July 11, 2003

Being serious I would try using SML.NET from ms.
http://www.cl.cam.ac.uk/Research/TSG/SMLNET/ has more details.

Which would then mean you should be able to use jape to formally prove your programs correct.

http://users.comlab.ox.ac.uk/bernard.sufrin/jape.html

It's one of those things thats on my list of stuff to do (I'll have to reread college books to get back up to speed on this stuff) I'll probably only get round to it if I retire, and thats a while away still....

Peter Ibbotson
Friday, July 11, 2003

Wow, thanks for all of the great suggestions.  The current frontrunners for me are J, Haskell, and Eiffel at the moment, although the suggestion of learning assembly is intriguing (partially because I get very scared when I see assembler, which may be a good enough reason to push myself into it!).  I'm also interested by Forth and Ada, although those may prove to simply be out of reach due to their best applications (in embedded and aerospace, neither of which I am able to participate in in any way).

On a similar note, Redcode looks like a really fun and interesting way to see if I have a brain capable of writing assembly.

Chas
Friday, July 11, 2003

Another vote for K. It's simpler than J.

It's not free though.

Ori Berger
Friday, July 11, 2003

I would learn K and KDB in a heartbeat if only the syntax didn't get completely in the way of its functionality.

Anonymous
Friday, July 11, 2003

The root I'm taking to Assembler if via Pure Basic.

PureBasic is a basic tht allows you to mix nASM with your Basic code, making use of variables etc.

Not quite as scary as pure nASM, because you do have the convenience of Basic as well.

http://purebasic.myforums.net/viewtopic.php?t=6633

Ged Byrnbe
Friday, July 11, 2003

ASM.NET  ;)

http://home.worldonline.dk/viksoe/asmil.htm

Mark Pearce
Monday, July 14, 2003

*  Recent Topics

*  Fog Creek Home