
Ask HN: Interesting programming languages for presentation - arvidj
I need to hold a presentation (~15 min) on a programming language of my own choice, for a programming languages course. The language should not be one which all in audience should be familiar with, such as Java, C or Haskell. The language presented should either be:
1) An interesting main-stream language, used in industry etc.
2) Interesting out of an academical viewpoint.
3) Historically important<p>I had planned to talk about Self and prototype-based languages, may including Javascript. However, someone have already picked Io, which is also prototype-based, and I want to talk about something original. Anyone have any ideas?<p>Much obliged :)
======
dkersten
My vote would go to Factor[1], a Lisp-like language with Forth syntax. Factor
is interesting because its an extremely powerful language with many high-level
features, concatenative syntax and powerful (smalltalk inspired) development
tools. It supports the usual Forth constructs, as well as higher level ones
borrowed from Joy, Lisp-style macros, local variables (significant because the
language is stack based), optional infix syntax and much much more. The
compiler is included in compiled binaries too, so you can generate code at
runtime and have it be automatically compiled. Finally, it has an extensive,
clean and unit tested library - not bad for a 6 year old language!

Failing that, I'd choose Erlang, since multi-core programming is so important
nowadays; or Oz, which is a powerful multi-paradigm language. If none of those
are to you're liking, I'd suggest looking at a dataflow language, just because
they're different (and, in theory at least, they deal exceptionally well with
multi-core).

Alternatively, you could go for something completely different: Applied Type
System[2]. In this language, data types play a front stage role in programming
and the language provides a powerful system for defining rich data types. It
supports functional, imperative, concurrent and modular programming styles and
boasts to be as efficient as or more efficient than C.

[1] <http://factorcode.org/>

[2] <http://www.cs.bu.edu/~hwxi/ATS/ATS.html>

------
jdp
I came in expecting to suggest Io, but it looks like somebody picked it. Seems
like the people in your course have a genuine interest in programming, the
same can't be said about most of the people in my courses.

Try something like K, a very terse APL descendant with no loops. KDB is built
on top of it, and from what I'm told there are only a few programmers who
actively use it and they make some good money. The Kx Systems web site doesn't
have much to offer, but no stinking loops (<http://www.nsl.com/>) will point
you to all the stuff you need to find.

~~~
beagle3
Other pointers: <http://www.kuro5hin.org/story/2002/11/14/22741/791> \- for an
older version of K (from 2002), still very relevant. <http://kx.com/q/d/> has
the docs you're looking for (for a language called "q", which is exactly k
with more english and less symbols).

You can download a runtime from the kx website

------
cousin_it
I see jdp has beaten me to suggest K, trust me that one's good. The other
suggestions (Erlang, Lua, Clojure, Ada...) strike me as pretty tame, not very
interesting to talk about. Here's a heap of important far-out languages that
nobody mentioned yet:

\- AspectJ (program modification by aspects)

\- SNOBOL (language-integrated grammars)

\- Raph Levien's Io (continuations and coroutines, not to be confused with
Steve Dekorte's Io that you mentioned)

\- PostScript (concatenative language, widely used)

\- LabVIEW (graphical dataflow language, widely used)

------
RiderOfGiraffes
It depends on what your audience already knows about. If it's a programming
languages course then they might know about any or all of these, but given
that you should be aiming to learn something, perhaps your best idea is to
pick something obscure that will improve your knowledge, then make the
argument that it's interesting from an academic viewpoint.

However, more pragmatically: Lisp, Erlang, Occam, J, APL, Lua.

------
RiderOfGiraffes
Thinking again, I would give a complete implementation of Lisp. You can define
EVAL and APPLY in about 4 slides. That lets you have a 1 minute intro, 3 mins
per slide, 1 minute conclusion, and 1 minute for questions.

If they've seen this before in class then you obviously can't do it, but it's
historically significant, and interesting from an academic POV.

------
kd5bjo
If you're willing to be a little creative with your interpretation of the
requirements, here are a few options that haven't been mentioned:

Intercal, one of the first joke programming languages.

MS Excel macros, probably the most widely used programming languages today.

VHDL or Verilog, the hardware description languages

One of the one-instruction-set computers, like
[http://en.wikipedia.org/wiki/One_instruction_set_computer#Re...](http://en.wikipedia.org/wiki/One_instruction_set_computer#Reverse_subtract_and_skip_if_borrow)

TeX or PostScript, both of which are technically Turing complete, but not
usually considered to be programming languages

------
Gmo
I would go for Ada, used in the industry, but not so much known and have
interesting concepts.

------
macmac
Clojure - runs on the JVM, is a Lisp, strong concurrency support.

------
yannis
Fortran 2008, 51 years and going or how to simulate your weather!

------
zv
Why not ruby? Pretty interesting, pretty much different from others. Or is it
not mainstream anymore?

------
yarapavan
programming languages: J, Scheme, Scala

