4 ms·
Not quite. ALGOL doesn't have curly braces, just BEGIN and END blocks. BEGIN FILE F (KIND=REMOTE); EBCDIC ARRAY E [0:11]; REPLACE E BY "HELLO WORLD!";
by striking 10y ago
Not quite. ALGOL doesn't have curly braces, just BEGIN and END blocks.
BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [0:11];
REPLACE E BY "HELLO WORLD!";
WHILE TRUE DO
BEGIN
WRITE (F, *, E);
END;
END.
I've heard it said that the languages you mentioned are inspired by C's syntax.
- agumonkey 10y agoWow, couldn't be more wrong. It's indeed C family (BCPL, B). Thanks a lot for the note.
- mikekchar 10y agoWell, I wouldn't be so hard on yourself. IIRC (and I hope someone corrects me if I'm wrong), algol introduced block scoping. Whether you use BEGIN/END or {/} I think is a pretty minor point. C has braces to introduce a new scope. The irony is that JS (until recently) didn't have block scope. It just has braces :-). Now this is where it gets screwy. You are supposed to (but don't have to usually) add a semi-colon on the end of each statement in Javascript. a = 52; This has a semi colon because it is a statement. There is another construct called an expression. An expression is anything that can evaluate to a value. An statement can be an expression (the statement "a = 52;" is an example of that because it also evaluates to 52 and is thus an expression). But there are expressions that are not statements. Here is an example of an expression (5 * 27) It evaluates to a value, but doesn't do anything so it is not a statement. Usually in computer languages, if "statements" are actually expressions. So you can say if (1>0) {"Yay"} else {"Boo"} evaluates to a value ("Yay" in this case), but doesn't do anything in and of itself. The blocks in the braces may contain statements, but the if is an expression, not a statement. Note the lack of semi-colon. Again, presumably because it is an expression, not a statement. You can try the above in Node and it will indeed return the value "Yay". a = if(1>0) {"Yay"} else {"Nay"}; In this case the variable a should be assigned the value "Yay", because the if expression evaluates to a "Yay". For some strange reason (that I don't understand), Javascript (or at least Node, when I tried it) does not accept that. It gives you a syntax error. You can not use if "statements" as expressions in Javascript (which sucks quite a bit). All of this to say that Javascript appears broken to me, no matter what geneology you assign to it :-D. I personally really like programming in JS (or actually CS), but it is a beast unto itself, I think. I'd welcome comments illuminating this issue if I've made a mistake with the above! As I said, it's easy to do.
- agumonkey 10y agoTrue but my algol mention was strongly on syntax not semantics (big part of algol contribution).
- fnovd 10y ago>You can not use if "statements" as expressions in Javascript (which sucks quite a bit). It does indeed, and it leads to some ugly code: a = function() { if(1>0) { return "Yay" } else { return "Nay" } }()
- ziad-saab 10y agoYou can also write: a = 1 > 0 ? "Yay" : "Nay"