all lines not terminated by a single space are comments
Also each line starts with a semicolon and you have to escape spaces in strings using a double forward slash
I realized a while ago that there’s nothing stopping me from writing rust like this
;println!("This is great")
;println!("I think everyone should write rust like this")
;println!("Probably works in most languages that use semicolons")
;
It uses XML-like syntax:
<fun>
<name>sum</name>
<in>
<int>foo</int>
<int>bar=0</int>
</in>
<out><int>foo+bar</int></out>
</fun>
<fun>
<name>sum</name>
<in>
<int>
<name>foo</name>
</int>
<int>
<name>bar</name>
<default_value>
<int>0</int>
</default_value>
</int>
</in>
<out>
<int>
<calculation>
<numerical_operation>
<operator_plus>
<operand>
<var>foo</var>
</operand>
<operand>
<var>bar</var>
</operand>
</operator_plus>
</numerical_operation>
</calculation>
</int>
</out>
</fun>
Welcome to the world of abusing the shit out of Ant. My first full time job was developing Ant in unholy ways. Tens of thousands of lines of Ant at least, doing significant logic. If-then-else, for loops, math, procedures, date-time math. I stuck it out for a year. It was a year too long.
Compiler rolls the dice if your only required indentation is accepted as space or tab. Per line.
I like it, this is clearly very enterprisey and solution focused, but I would like to suggest a couple of amendments if I may?
-
Namespaces We should make full use of namespaces. Make the structural tags be in a language specific namespace (to be referenced in every function spec, obviously) but change the in an out params to use the parameter name as the tag, namespaced to the function they’re for, with a
type
attribute. -
In memory message queues Have all function invocations be marshaled as xml documents posted to an in memory message queue. Said documents should use a schema that validates the structure and a function specific schema to validate the types of arguments being passed. Namespace everything.
I reckon we could power a medium sided country if we could generate energy from the programmers despair.
Make sure to make ample use of mixed content elements.
<statement><var>bar</var> = <int>0</int></statement>
statement:
comparison:
- kind: libcompare.EQUALS
comparators:
- foo
- bar
whentrue:
statement:
streaming:
- kind: libstreams.PRINT
content: foo equals bar
whenfalse:
statement:
streaming:
- kind: libstreams.PRINT
content: foo does not equal bar
I took every coding class my highschool offered, and the only thing that drove me more crazy than this syntax was trying to use CSS.
…and it’s compiled
…to an intermediate set of instructions for a virtual machine…
…called the brainfuck interpreter
Confusion like this got me my current job. They were looking for somebody with experience in “Microsoft Endpoint Configuration Manager”, and I look that up and I’m like “Oh, that’s SCCM, I do that”. Go through the interview process they keep asking me if I know Endpoint Configuration Manager and I’m like “yeah, for sure”. I get the job. Day one, the other systems engineer is like “here is the link to our Endpoint Manager Tenant”, and I’m like “oh… Shit I have never ever used this”
Well… Ends up Endpoint Configuration Manager and Endpoint Manager are two different things. Fortunately for me they are pretty similar in function and rely on knowledge of Windows and Powershell, which I know.
So my first 2 weeks of work was taking a shitload of courses in Endpoint Manager and watching a lot of videos and learning it inside and out.
2 years later and I’m an Endpoint Manager/Intune pro.
Or make a language named everything so you can say “i program in everything”