Io, where I think I want to be today
Filed under: ioSo I think I've settled on a replacement for Python: Io. I find several things highly appealing about it:
- expression-based
- almost no syntax
- actor-based concurrency
- prototype-based object model
- lazy evaluation
When I say Io has almost no syntax, I mean it. Here's the complete BNF that defines Io's grammar:
exp ::= { message | terminator }
message ::= symbol [arguments]
arguments ::= "(" [exp [ { "," exp } ]] ")"
symbol ::= identifier | number | string
terminator ::= "\n" | ";"
Contrast this with (for example) the BNF defining Python's grammar or Ruby's (Perl apparently cannot even be described in a BNF). Having a complicated grammar isn't necessarily a bad thing, but I find smaller grammars and less syntax highly appealing (especially when they actually result in a more expressive language).
Io's guiding design principle is simplicity and power through conceptual unification:
blocks with assignable scope => functions, methods, closures prototypes => objects, classes, namespaces, locals messages => operators, calls, assignment, variable accesses
Io still lacks in many areas outside the language itself. The documentation leaves a lot to be desired, libraries are few, the community is small and as such it's a long way away from being a productive language. But, these are things that can be addressed and fixed by people outside the core devs, which I find promising.







Is it April 1st? I'm confused.