I'm excited for this language, love some of the design choices around error handling, choices, etc, but 0.1.4 is a bit of a head scratcher for me.
Any particular reason for the major syntax change, pretty much overnight? Of course a lot of this is personal preference, but the earlier syntax with curly braces, explicit -> Void returns, raises as keyword instead of !, etc, were much more human readable (to me). Polish notation is especially baffling to me, makes it feel like more of a research languege rather than a mainstream one.
I understand that the new version is more token-efficient, and possibly easier on the parser, but if I'm doing human-in-the-loop coding (which seems to be a target for this language) the cost of decyphering the new syntax seems more expensive than whatever I would save in tokens.
This reads well to me, each part serves an obvious function:
pub fun main(world: World) -> Void raises {
let message = "hello from a binding\n"
check world.out.write(message)
}This less so:
pub fn main Void world World !
let message "hello from a binding\n"
check world.out.write messageI feel this leaves a lot of work to the reader, having to reconstruct meaning from precedence rather than relying on well understood signs like =, ->, name: Type format, etc.
Of course a lot of this comes from my limited background in Lisp like / functional languages, and personal preference in general, but I can't help but feel less excited about the language due to the new syntax.
Activity
4That's a bit of a downer. "Agent first" and "Practically agent only" are not really the same thing in my eye, and the docs seemed to suggest the former. Blind trusting agents to build stuff in a new, unproven language is a lot harder sell. Agents still make mistakes in languages with millions of files in their training data. Switching to a language with 0 lines of training data is already a big ask, and doing so in a language that is borderline unreadable to humans just seems like a bad idea.
Yeah tbh I don't really get what Zero is trying to accomplish at all... Their change to the syntax wasn't explicitly justified, or noted in their release notes -- my comment above was me trying to infer why, but there's little visible evidence the decision was even made by a person.
I have yet to see the creators put forward a concrete philosophy or argument for what the specific problem statement is, or what the creators believe Zero accomplishes that other languages cannot.
@marton-schmalzl As of 0.2.x, the human-readable syntax has been restored for source code, and the less-human-readable syntax is used only by agents via the zero graph surface
I believe the intent was to aggressively cut down on tokens. Zero is optimizing every part of its design for autonomous agents, not for human authorship or consumption.