#290

Major syntax changes in 0.1.4

Openmarton-schmalzlopened 5mo ago

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 message

I 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

4
cpimhoff5mo ago

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.

marton-schmalzl5mo ago

That'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.

cpimhoff5mo ago

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.

ctate5mo ago

@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