The next wave of programming languages
radar.oreilly.com
radar.oreilly.com
No long explanations about what it means for Ruby to be a dynamic, object-oriented language. I don't have to read its author's paper or book to get it. Just a short code snippet to show me what it looks like and several links so I can learn more.
If I'm looking at a language, I want to see what it looks like...
I guess a bunch of those languages are highly academic and the meat is in the implementation as opposed to the syntax. But language developers need to start putting some effort into the non-code parts of their projects. I'm not going to get inspired to pick up a new language by bullet points. At the same time, I'm working on my own language project so I know it can be challenging to use just the right code to give the best first impression.
E.g. the D language doesn't have a very modern looking website atm., but someone has took the task to update it recently. It's not up yet since the community is trying it out.
I am in love.
* io : http://www.iolanguage.com
Clean, minimalistic, prototype based OO.
* Reia : http://wiki.reia-lang.org Ruby-like syntax on Erlang's VM
* Curry : http://www-ps.informatik.uni-kiel.de/currywiki Functional logic language : Prolog+Haskell.
* Oz/Mozart : http://www.mozart-oz.org Multi-multi paradigm language, includes constraint based programming.
Some of them are not necessarily up-and-coming but rather out-and-going. Oz is interesting, but it seems to be dying. Some like Reia are making slow progress. Curry is more of an academic language. io is probably the most up-and-coming so to speak.Can't wait until it's ready though.
Is it just too unusable right now?
There's plenty of things I'd love to do with it when I've got time though.
"Go is an expressive, concurrent, garbage-collected systems programming language."
Already in production on some internal projects.
Rob Pike and Robert Griesemer – Go
Steve Dekorte – Io
Charles Nutter – Duby
Matt MacLaurin – Kodu
Gilad Bracha – Newspeak
Jeremy Ashkenas – CoffeeScript
Adam Chlipala – Ur
Francisco Tolmasky – Objective-J
Jonathan Shapiro – BitC
Luke Hoban – F#
Tav – PyPy
Rich Hickey – Clojure
Christopher Bertels – Fancy
Jonathan Edwards – Coherence/Subtext
Alex Eagle – Noop
Slava Pestov – Factor
Erik Meijer – C#
Mark S Miller – E, Caja
Brian Rice – Slate
Walter Bright – D
Wolfgang De Meuter and Tom Van Cutsem – AmbientTalk
Phil Mercurio – Thyrd
Melvin Smith – Cola
Carson Gross – Gosu
Alexander Fritze – Stratified JavaScript
Alan Eliasen – Frink
Dan Bornstein – Dalvik
Steve Folta – Trylon
Ola Bini – Ioke
Amos Wenger - oocHN, what other projects do you do to familiarize yourself with a new language?
a) I want some macros to use for JVM-based projects
b) I like using Emacs + SLIME (it's the best development environment, period).
Unfortunately the noise of Rails fanboys migrating to it with their usual laundry list of complaints ("no IDE support", "no good web framework") is annoying. I have nothing against Ruby in general (in fact I really like the language) and Rails in specific (I know people who love it), but the whole reduction of programming languages to merely web frameworks is a setback for software engineering. That mindset has now been spreading: not only is it impossible to hear about Ruby without "Rails" mentioned next to it, it's now common to hear "Python/Django" and "Scala/Lift".
Web is just a UI layer, a fairly mundane and boring part of an application. Lisp has very little to show for these sorts of applications, but has a lot to show for more science/engineering intensive ones. You hear all the time about webapps being re-written into PHP and other blub languages, but the community is interpreting it as a setback for the languages (and an argument in favour of using blub from the start) rather than the fact that advanced language features make really little difference for web development.
Enclojure (NetBeans)
Counterclockwise (Eclipse)
La Clojure (JetBrains)
The other thing that has really improved immensely is "project management" (right term?) provided by Leiningen. Now you can basically do "lein new proj_name", then edit a simple config file in the created directory and do "lein deps" to get all the packages that you referenced.(Doug Hoyte disagrees with me on the vi point, arguing in his book that Lisp is expressive enough not to require any editor support. I respectfully disagree.)
A web framework is still useful, even if many people assess a language purely in terms of it.
(Cue the Haskell guys so they can point out how they're most of the way there already.)
dynamic / compiled are orthogonal.
CL is dynamic and gets compiled as you enter in the REPL.
The XBox part turned me off right away, because that's the last thing I need in my house while we're homeschooling our children, however, I found a free academic version that runs on the PC: http://fuse.microsoft.com/projects-kodu.html
edit: I suppose a more clear question would be: What is it specific to homeschooling that you don't like about the XBox? Or am I reading too much into your comment?
Meanwhile, back in reality, my wife complains when I ask her to mute the booming commercials in the latest USA Network cop show.
Sadly, legislators are not specialized enough to grasp the notions of loudness and compression in commercials so they could be legislated out of existence.
On the other hand, there are some high quality documentaries and prerecorded college lecturers will not hav ethe issues you describe and as an avid (though very bad) GO player I personally feel that there is very little difference between playing on a screen and playing in front of a board.
There's no media-driven conspiracy to alter your mind. There has been an evolutionary trend to favor the animal who could quickly notice the approaching bear versus the animal too intent on its task. Conversely, human evolution has needed intense concentration to drive innovation in things like tool development, construction, and art.
There's media that caters to both. WIth action-packed movies and games thriving on quick attention-shifting, and grinding-based MMO's relying on the ability of players to do repetitive tasks for hours on end.
One could give the same attention-reducing arguments against books and for oral stories. That said, you shouldn't just make a blanket statement against all screen media. Teach your kids how to discriminate between what's good for them and what's not.
I think that's wrong. Forget whether it's a conspiracy or not; many things are effective conspiracies. These days, media is designed to be sticky and most media is driven by advertisements, the goal of which are to make you think you're not good enough unless you buy certian things.
Video is a think pipe directly into your brain, and I believe there is evidence to suggest that "screen time" does alter the way your mind functions.
In any case, I doubt it's so much that video games are detrimental and more that you ought to have a hobby which actively cultivates concentration.
I remember being a kid and playing games like Tomb Raider where you would have to really think and work hard to unlock puzzles. Even games that offered you the opportunity to just fly through them usually had some form of deeper gameplay. For instance, SF Rush was all about things flashing by really fast, but the real challenge was to collect all the keys in the game, which often required a lot of innovative thinking about finding things to jump off.
I can understand that the balance between Halo 3 app types and Kodu app types is the wrong way around from your perspective, but the XBox does make it fairly cheap and simple to understand how the games are written and provides you with the chance to show your kids how the magic tricks are done, so to speak. I'd have thought that was a good thing :-)
Kudos on educating your kids on what you think is important though; I think it's great when people really think through education and put a lot of effort into it.
That's my question. By banning something with an iron fist, that is exactly the lesson you are teaching. You are putting video games into the same category as drain opener and power tools.
The lesson needed is that there is a time and place for everything, and that deliberate control and planning of activity is valuable. Self-control is learned by practice, not by having a helicopter parent prevent the opportunity to make the choice.
And anyway, planning and self-control are mainly driven by the maturation schedule of the brain. Before age 11 or so (in Caucasians), the frontal lobes simply are not active enough to accept much logic. After that age, the ability to plan and focus concentration develops almost automatically. (One school even did an experiment where math was not taught until that age. There did not appear to be significant bad effects.)
"These days, media is designed to be sticky and most media is driven by advertisements, ..."
You have confused cause with effect. Most content is appealing because people who make unappealing content go broke and stop making it. Survivor bias means that those who sing for their supper have a tendency to create content based on emotional appeal rather than abstract notions of value, and this is equally true for textbook authors, architects, and medieval bards.
As to me confusing cause with effect, I though of that too, and I think that the purveyors of media entertainment aren't simply providing what people want. Why do your crops die on Farmville if you don't log in for a few days? Is that what users want, for their crops to die?
Wish i could go.
Good to hear it hasn't.
Edit: I seem to be unable to find the actual license of the digital mars compiler - does anybody know where it is?
Terrible choice nevertheless.
Wondering why I got downvoted? Should I have vacuumed it into scribd?
There's no technical reason they couldn't be added on with a 3rd-party library, but it's really a cultural thing.
Of course, it's POSSIBLE to do everything with a library + discipline. For example, I can import the Clojure jar and use Clojure's data structures and STM in a Java program. But it is _very_ verbose, and you have to know that certain variables are immutable, or that certain operations are illegal in certain places, etc, rather than having that information encoded into the language.
Java is a great illustration: it has syntactically close to no support for concurrency (synchronized, pretty much) but it has been able to keep up with today's concurrency challenges by the simple virtue of its libraries (java.util.concurrent is very, very powerful) and ingenuity of its developers.
The amount of concurrent Java that powers major web sites and other places that we don't even know of is simply staggering.
First one in the list :)