News for hackers. Stuff that matters.
Re:Atomo, the programmer's programmable programming language by swannodette on Saturday November 13, 2010 @02:47PM (#1901513)
This looks really cool and reminds me a lot of Io. Speaking of Io, this make me curious about the performance of Atomo. Io while an amazing experiment in expressivity has terrible performance. Does Atomo similarly prioritize expressivity to the detriment of reasonable performance?
Re:Atomo, the programmer's programmable programming language by vito on Saturday November 13, 2010 @03:19PM (#1901596)
Right now, my priority with Atomo is consistency in the design and simplicity in the implementation. It's acting as an incubator for a ton of interesting language features at the moment (both for myself and for Slate), so I haven't made optimization a priority yet as major parts of it are constantly changing. For example, the version on Hackage has a traditional exception system, while the latest darcs changes have replaced that entirely with a condition/restart system written in Atomo.

I'd call it "fast enough," but it's no speed demon. It's pretty early on; I just started planning Atomo's design this June. There's almost certainly some low-hanging fruit when it comes to optimization, and it is something I've been keeping a close eye on for a while now. It's only been getting faster, and in my testing of GHC 7 I saw pretty substantial performance boosts for free. And that's the nice thing. It's built on a fantastic platform, which you can drop into very easily whenever you want with a nice DSL.

Glad you like it, though. I completely understand the caution when it comes to performance of such a high-level language.

Re:Atomo, the programmer's programmable programming language by swannodette on Saturday November 13, 2010 @03:37PM (#1901654)
Sounds reasonable. So is it possible to mix Haskell in with Atomo to get to the metal so speak? Do you have any examples of this?
Re:Atomo, the programmer's programmable programming language by vito on Saturday November 13, 2010 @03:42PM (#1901667)
Yes; all of Atomo's kernel is defined using this Haskell DSL. For example, here's Atomo's ports system: http://darcsden.com/alex/atomo/browse/src/Atomo/Kernel/Ports...

I've also written a few wrappers for Haskell libraries over at http://darcsden.com/alex - see http, json, and command.

Basically, you define your methods in Haskell, and call them from Atomo; these methods can be defined as an expression (=:::), a value (=::), or some arbitrary VM action to be executed to yield a value (=:). (Admittedly those operators have gotten a bit silly.)

The definitions use QuasiQuotes for the method pattern, and can use them for expressions as well, though that's not encouraged (operator precedence and macros make it a tricky thing to do at compile time). They look a bit noisy - [$p|x foo: y|] but that'll be fixed come GHC 7, where that pesky $ is removed.

Re:Atomo, the programmer's programmable programming language by kylecordes on Saturday November 13, 2010 @03:40PM (#1901664)
It reminds me so much of Io, that I'm a bit disappointed that Io is not mentioned in the "its design is inspired by ..." text at the top of the first page.
Re:Atomo, the programmer's programmable programming language by silentbicycle on Saturday November 13, 2010 @03:48PM (#1901681)
It does mention Slate, among others. After skimming the intro, I was similarly surprised it didn't mention Self, but it was probably more directly influenced by Slate. (Slate and Io were both strongly influenced by Self.)
Re:Atomo, the programmer's programmable programming language by vito on Saturday November 13, 2010 @04:09PM (#1901720)
Self and Io are both languages that have similar concepts but weren't direct inspiration; in Self's case, it was pure chance (I've never actually used Self), and in Io's case, Slate was a more direct influence. Io didn't have much mindshare, despite being another language I love (but never use).