Domain: smlnj.org
Stories and comments across the archive that link to smlnj.org.
Comments · 13
-
Use SML/NJ
-
Take a cue from the French - teach in ML!
I think we all could take a cue from the French, and start some of our programming classes in one of the ML families, like Caml Light, Standard ML, or my personal favorite Ocaml. These are fairly advanced languages, and support both imperative and functional features, so you can teach for loops AND recursion. Of course, you can do this with Lisp too, but honestly, the syntax of the ML families is a lot better than Lisp. Also you can do object-oriented programming with Ocaml.
In addition, Yale also taught its intro CS class in Standard ML a while back, and I understand it was a big hit.
Of course, it's the course content that matters the most, but why limit yourself? As already stated on Slashdot, FP is increasing in importance due to its ability to handle parallelism, so I think you can really have the best of both worlds with these impure functional languages. -
Some of my picks
C#/.NET - http://msdn.microsoft.com/
Haskell - http://haskell.org/
Nemerle - http://nemerle.org/
OCaml - http://caml.inria.fr/
PHP - http://php.net/
Python - http://python.org/
Ruby - http://ruby-doc.org/ (API docs), http://ruby-lang.org/ (for more links and info)
SML - http://smlnj.org/ (the most popular implementation), http://standardml.org/Basis/ (standard library)(X)HTML/CSS/DOM/XSL/etc. - http://w3.org/
Hm. Now that I've written it down, I see most of these are obvious, but then it makes sense, that the "official" sites tend to be the best reference.
-
SML/NJ
Standard ML of New Jersey (abbreviated SML/NJ) anyone? http://www.smlnj.org/
I love it just because of its name. :) -
Programming trends
You want to know the latest trends for Java-based web development? Fewer and fewer people are going to be doing Java-based web development in the future.
Fuck trends. They're wrong. Every day the industry continues to stay with its current ridiculous technologies when vastly superior ones were invented decades ago infuriates me further. If it doesn't infuriate you, you're not paying close enough attention.
My advice: read Lambda the Ultimate and Steve Yegge's blog. Endeavor to learn what the lambda calculus and referential transparency are. If you are sincerely interested in bettering yourself as a programmer and don't go find out who Alonzo Church was then so help me God I will kick you in the balls. Learn about SML and type inference. Learn about Haskell and monads. Learn about process calculi and Erlang. Learn about Lisp and code generation and domain-specific languages. Learn about Scheme and lexical closures and continuations. Learn about Smalltalk and what OO was really supposed to be. Learn about type theory and formalism and the Curry-Howard correspondence. Learn about Forth and Joy and how you can have a powerful, expressive language without even so much as a grammar. Learn about Intercal and Befunge and just how badly your choice of programming language can torture you. Learn about UML and Ruby on Rails and Seaside and agile programming and Java generics and Python generators. Learn about aspect-oriented programming, context-oriented programming and concept programming. Learn about multi-paradigm languages like OCaml or Oz. Learn about weird Lisp dialects with syntax like Rebol or Dylan.
Realize that library design is language design. Realize that asynchronous programming with callbacks and explicit state in a world where lightweight coroutines were around in the days of fucking Simula in the 60s for Christ's sake is cruel and unusual torture. (Sorry, pet programming construct.) Realize that the programming language research community, while considering systems programming a solved problem and generally not interested in talking about human factors, is doing some genuinely promising work. Did you know that there are conc -
SML and automatic types
Standard ML has an even better feature than static or dynamic typing -- automatic type inference. It is both very powerful (catch all typing errors at compile time) yet does not make you jump through hoops to declare or change types. I recommend you check it out sometime.
http://smlnj.org/ -
Functional Compilers, anyone?
Good thinking, IBM. Now, let's get SML/NJ, Haskell, and O'Caml ported to these things.
"Why", you may wonder, but the answer is simple: Referential transparency or any kind of confinement of side-effects makes for easy parallelisation, which is what these Cell thingies are supposed to rock at.
This might be the one thing that will put FP back into the undergraduate curriculum.
-- Christoph -
Re:Additional Advice
If you're feeling particularly masochistic, try writing in a language that has no loops OR goto's.
-
Re:Lisp
If you like LISP, try looking at ML or Haskell. In my mind, better finctional languages than LISP. They don't have dynamic typing (both very strictly statically typed), but they have generics which are almost as useful. Plus, they are a joy to code in. I wrote a raytracer in Haskell last year. Lots of fun it was.
-
Re:Windows and Linux examples, yes
Java, among other high level languages (lisp/scheme, Objective CAML, Standard ML, Haskell, etc), are memory safe because they hide the issue of memory management under the carpet by using a garbage collector. Since the language itself does not have the expressive power to deal with memory directly (some has strong type checking that guarantees even stronger memory safety properties), they're considered "safe." However, a clever hacker might handcraft in bytecode, thus bypassing the type system entirely. The runtime system of the language (which you may consider as the operating system in a board sense) still needs to perform dynamic security policy checking.
On the other hand, the critism on Java or any other high level languages as an interpreted language is ill-founded, as those languages can be compiled to run as native executable.
-
Re:Dynamic typing
Don't forget the wonders of lexical closures, something offered by any self respecting interpreted language.
And also offered by any self respecting compiled language. Just because C doesn't have 'em doesn't mean nobody else does, you know. -
Re:I let this particular parody get to me ....
Those who cannot do, teach
Lets not be stupid here. Just because one dumbass is actually going to claim that WebCT is worth the money while blanketing all open source software under the control of murderers and thieves, doesn't mean that all teachers cannot do. Hell here is a open source project written by some Princeton "teachers" that is an example of how there are some really smart people creating some amazing open software. -
Re:dear God, not ML!!!