5 ms·
"ooc is a modern, self-hosting, object-oriented, functional-ish, high-level, low-level sexy programming language, starring closures, interfaces, enums, garbage
by Flow 16y ago
"ooc is a modern, self-hosting, object-oriented, functional-ish, high-level, low-level sexy programming language, starring closures, interfaces, enums, garbage collection.."
Um, why put the word "modern" together with all the other ideas from the 50's, 60's and 70's?
It's like to claim something is modern because it's made of plastic, isn't it?
- riffraff 16y agowell, it works if you consider modern as an attribute explaining when it was made instead of what it contains. That allows you to have modern wheels, music, art.
- nddrylliog 16y agoWhat do you consider modern then? A reincarnation of Algol-68? Yet another Lisp? Another python-killer-killer (ie. a ruby-killer) ?
- hga 16y agoLisp lucked out in the temporary hack of s-expressions plus its basis in the lambda calculus such that it has managed to modernize itself without too many changes in its essential nature. E.g. there are I would say (from my '80s and on background) three major changes, each more "modern" than the next: Mainline Lisp, which is for the most part stuck in amber with Common Lisp. Scheme, which is semi-stuck in its MIT design style "do it right or not at all". Clojure, the new hot Lisp that many think is the future of Lisp. Scheme made some major departures from mainline Lisp, only one of which was adopted by the later (static scoping and all that implies (I now forget how good its support for closures is)). Clojure is a further departure: not very multi-paradigm (and much more functional than Scheme) and its unification of data types (lists, maps, etc.). It's also like Scheme in getting rid of a lot of legacy cruft (starting with cons!) but is not an essence of purity language like Scheme, e.g. while a Lisp-1 it has mainline Lisp style macros. So I'd say it's "more modern", e.g. its embrace of STM, which is an idea of the mid-80s to mid-90s. Most other new Lisp dialects strike me a "yet another Lisp"; I'm not sure about Arc, though. I agree at least in part with the comment you are replying to, a modern language needs concepts newer than the '60 and 70s (closures are I think the only '70s concept in what Flow enumerated). While its mathematical roots are fairly old, aggressive Hindley–Milner style type inference is I think a "modern" language concept. '70s at least???
- chancho 16y agoAggressive Hindley-Milner inference is old but getting it to mesh well with the OO concepts that developed independently of it (subtyping/inheritance, run-time polymorphism, virtual functions, etc.) is seriously tricky and is an area of cutting-edge research. I'm not a type theory expert but my impression of the current state of things is that you can have aggressive HM inference (infers the type of everything and does so correctly) or OO language features but not both.* If you want both you have to settle for "best effort" inference where the compiler infers things when it can but sometimes needs the programmer's help. This flavor of inference is just now (within the last decade) making it into mainstream languages, cf. C#'s var, C++0x's auto/decltype, Scala, etc. And ooc's inference appears to work this way too (or at least it's going to.) So how is this not modern? What are the "modern" features that ooc language is missing? * My limited understanding of Ocaml is that it supports both, but nobody uses the OO features of the language so I assume there's a reason for that.
- hga 16y ago"What are the "modern" features that ooc language is missing?" Good question; I'm not up enough on this direction of languages to answer. It has closures, as noted. One might say that functional programming is new again, or at least strong functional programming where you have guarantees that certain varieties (almost said "classes" there, which in this context would be confusing at best :-) of data will not change out from under you. Haskell has this, of course, as does Clojure in a weaker form. What about first class continuations? Continuations per se are too basic to be entirely modern, e.g. Steve Russell, inventor of obscure things like Spacewar and the Lisp REPL invented them for the second implementation of LISP (on the vacuum tube 704), but they weren't first class until Scheme in the 1975 (all this according to Wikipedia, and Scheme's aren't quite first class enough for my tastes). Modern concurrency stuff? For that matter, what's its concurrency story? A search for various keywords like that, thread and SMP didn't find anything. I'm sorry to say that I personally am only interested in new languages that have a good concurrency story, that and languages per se are the only areas of pure CS that I find interesting. (And of course I have Clojure for concurrency.) If it's "functional-ish" but not functional enough, it might be hard to graft that onto the language.