As someone with now about 2 years of code across a few projects that are within a year of realizing market, I’ve seen your posts and knee-jerked a reaction of horror at loading a new version of and seeing thousands of syntax errors pop up.
Breaking syntax changes for me would effectively put me on an island where I’d be unable to upgrade. I’m not a big studio, I only have to manage 2 other developers. We’d never upgrade again until we started a new project and then we’d wonder whether there’d be another breaking syntax change half-way through the project. So I can imagine what a AAA customer would think about this topic
I thought I’d at least chime in on some of the ideas that you carefully outlined.
I actually love the capitalization convention because I believe that case insensitivity saves time. I hate that C++ is case sensitive,
bIsOnCooldown != bIsONCooldown,
DoLogoff() != DoLogOff(), in many ways it’s patronizing (I don’t need that level of uniqueness) and it has wasted more of my life than I care to admit. In many ways it feels like the language is trolling me.
I will say that just the other day I had the auto- function renaming get me. I had just written a function
GetCurrentPage() and couldn’t for the life of me find it and then … ah
current_page. I’m not in love with it, but I am somewhat used to it now.
I’m curious if you have examples of the name collisions you’re getting. Are they auto-renamed functions clashing with variables (seems the more likely scenario)? Or are they names that only vary by a few uppercase letters (seems unlikely and easy to avoid)?
This seems like a good place to use the optional commas to improve readability
foo(a_b, c, d_e_f, g, h) or multi_line, which seems very readable to me.
The main difference between the
when is that
if expects a code block whereas
when expects only a single expression (a code block is just a group of expressions). My guess for this, and the reason I typically use
when is that it’s a little shorter for instances where you only need to call a single expression. Although you can still do stuff like below, it’s arguable how sensible it is:
!a : 0
println("hi") when [a++ println("let's do this") true]
let’s do this
unless are exactly what you’re asking for, they’re versions of
if/!if that do not require a code block.
I will agree that sometimes grouping can get ugly with all the brackets for certain equations, one that nags me a little every time is
loc + [dir * magnitude] which would just be
loc + dir * magnitude in languages with precedence rules.
I don’t have strong feelings on the
 but I do like the advantage of replacing any block with… any block and I also like that there’s no accidental early termination of function call by placing 1-too-many parens as I might accidentally do in code like this if it used
() for grouping:
result : Vector2!xy(
(((2.0 * viewport_coordinates.@x) - w) / w)) // <-- oops
(((2.0 * viewport_coordinates.@y) - h) / h))
This seems more readable to me, maybe I’ve been tainted
result : Vector2!xy(
[[[2.0 * viewport_coordinates.@x] - w] / w]
[[[2.0 * viewport_coordinates.@y] - h] / h])
Also, I can’t tell you how often I get back into C++ and try creating a new variable
Boolean bIsJumping (should be
bool). As someone jumping back and forth all day, I really appreciate some of these syntactical differences, because I will make mistakes.
I think I’ve already been biased, I’m used to reading do this thing
when some condition is met.
I’m not following this one. Can you give an example?
I’ve seen you post this a few times now, so you must feel quite strongly about it. blends into an ocean of languages I’ve learned in the past as far as syntax goes, but it stands out as a gem for the most convenient, most time saving and most fun/exciting language I’ve ever used. Until using , I had never felt the desire to evangelize a language . That also means I want it to get better, whatever evolutionary path that ends up being.
Side-tangent, I think the only time I ever had the thought “hmm, this seems unconventional” is when I went from 8051 assembly to x86 .