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 :)
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!<p>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).<p>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.<p>[1] <a href="http://factorcode.org/" rel="nofollow">http://factorcode.org/</a><p>[2] <a href="http://www.cs.bu.edu/~hwxi/ATS/ATS.html" rel="nofollow">http://www.cs.bu.edu/~hwxi/ATS/ATS.html</a>
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.<p>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 (<a href="http://www.nsl.com/" rel="nofollow">http://www.nsl.com/</a>) will point you to all the stuff you need to find.
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:<p>- AspectJ (program modification by aspects)<p>- SNOBOL (language-integrated grammars)<p>- Raph Levien's Io (continuations and coroutines, not to be confused with Steve Dekorte's Io that you mentioned)<p>- PostScript (concatenative language, widely used)<p>- LabVIEW (graphical dataflow language, widely used)
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.<p>However, more pragmatically: Lisp, Erlang, Occam, J, APL, Lua.
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.<p>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.
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:<p>Intercal, one of the first joke programming languages.<p>MS Excel macros, probably the most widely used programming languages today.<p>VHDL or Verilog, the hardware description languages<p>One of the one-instruction-set computers, like <a href="http://en.wikipedia.org/wiki/One_instruction_set_computer#Reverse_subtract_and_skip_if_borrow" rel="nofollow">http://en.wikipedia.org/wiki/One_instruction_set_computer#Re...</a><p>TeX or PostScript, both of which are technically Turing complete, but not usually considered to be programming languages