A family of computing languages [http://en.wikipedia.org/wiki/ALGOL_programming_language] in the ancestry of nearly all others, but with little discernible direct relation to [Tcl]. Algol has * block structure with nested scopes * dynamic memory allocation * call by name parameter passing * call by value parameter passing * recursion Algol does not have * record structures * case or switch statements * standard input/output statements ---- Algol is '''not''' in the ancestry of [Fortran] (at least the early versions), [LISP], [Cobol], or [SNOBOL]. But Algol '''is''' in the ancestry of [C], and the list of things above that Algol "has" is a strong subset of the things that make C what it is. So I think the relation to Tcl is discernible after all. [AM] (24 april 2008) I can't resist commenting on this one: if I interpret some publications by Tony Hoare correctly, Algol was deliberately designed to ''not'' be related to the Fortran version of the time. (And as far as dynamic memory allocation is concerned, at that time, computers did not commonly have dynamic memory allocation facilities, so for a language like Fortran that was to run on as large a set of machines as possible, that was not an option.) Algol may have call-by-name parameter passing, but C does not. Call by name is a very difficult to implement feature, if I understand it correctly. ''[escargo] 24 Apr 2008'' - See the Wikipedia article on Jensen's Device [http://en.wikipedia.org/wiki/Jensen%27s_Device] for some of the power that can be derived from call by name. [AM] (24 april 2008) Awesome indeed, but also: awful! It is in no way clear from the function sum() itself that i and term are passed by name. It is only in the context of the actual use that this is clear. Of course, that means you can use the function in a more familiar context too, but still! ---- I believe it was Edsger W. Dijkstra[http://en.wikipedia.org/wiki/Edsger_W._Dijkstra] who observed that Algol was a great improvement on many of its successors. - [Larry Smith] ''[escargo] 24 Apr 2008'' - Again, according to Wikipedia, "Dijkstra was known to be a fan of ALGOL 60, and worked on the team that implemented the first compiler for that language." ---- [WJP]: Algol is also the subject of one of the great literary works of computer science: C. H. Lindsey's ''Informal Introduction to Algol 68.'' Not only is it beautifully written, it is perhaps the only book ever published that is organizationally two-dimensional: it can be read either column-wise (chapter 1, section 1 -> chapter 1, section 2-> ...) or row-wise (chapter 1, section 1 -> chapter 2, section 1 ->...). ---- [Larry Smith] Algol-68 is another critter entirely. It extended Algol (more correctly known as Algol-60) with record types and case statements, complex numbers, and input and output, as well as a lot of clean-up work to make it more orthogonal and easier to compile. It anticipated Oberon and Component Pascal allowing a case to type cast (treating the same variable as real, int or whatever according to the type currently assigned to it), and so on. It anticipated Modula with full control statement bracketing, but rather than just using END (Modula: IF...THEN...ELSIF...ELSE...END) it made the unfortunate choice to use reversal of the keyword (Algol-68: IF...THEN...ELIF...ELSE...FI, and CASE...ESAC - this same scheme was used in Bliss, the programming language designed to allow programmers the means to hurt themselves and others to a degree that not even C could aspire to). Algol-68 even anticipated C with computed assignments ( a +:= 1 ). [http://en.wikipedia.org/wiki/ALGOL_68]. Wirth, who was on the committee, felt it was all too complicated for its expressive power, and disliked the ability to redefine operators and the dependence on APL characters. Wirth had proposed the language later called Algol-W [http://en.wikipedia.org/wiki/Algol-W] for Algol-68. When it was not accepted, he built on Algol-W to design Pascal, which first saw the light of day in 1970. ---- [AMG]: Algol is also the name of the solar system that is the setting for the 1987 Sega Master System video game Phantasy Star [http://en.wikipedia.org/wiki/Phantasy_Star]. ---- !!!!!! %| [Category Glossary] |% !!!!!!