ALGOL 60 at 60 - Computerphile

  Рет қаралды 89,796

Computerphile

Computerphile

4 жыл бұрын

ALGOL 60, a brand new programming language, 60 years ago! Professor Brailsford used to have to teach it - here he shows us some of the code.
EXTRA BITS: • EXTRA BITS: Discussing...
/ computerphile
/ computer_phile
This video was filmed and edited by Sean Riley.
Computer Science at the University of Nottingham: bit.ly/nottscomputer
Computerphile is a sister project to Brady Haran's Numberphile. More at www.bradyharan.com

Пікірлер: 368
@profdaveb6384
@profdaveb6384 4 жыл бұрын
Hi everyone. Thanks to all of you who have sent in so many comments and corrections . If you found this video interesting there's more stuff available via the link to EXTRA BITS in the Info block of this present video. Be clear, that the main reason for Algol60 having a reputation for inefficiency was not so much to do with its provision of run-time recursion but rather with the generality of its call-by-name parameter mechanism . If your procedure arguments were not simply "call by value", there was no way to signal that "call by reference" (aka "call by simple name" ) would be sufficient. Instead the generalised "call by name" mechanism was the default which required repeated re-evaluation of actual arguments which - more often than not - were unchanging values (or simple references)
@chipminion7887
@chipminion7887 4 жыл бұрын
"Thunks" and "Jensen's device".
@AlexanderWeurding
@AlexanderWeurding 9 ай бұрын
🙏
@jimdiroffii
@jimdiroffii 4 жыл бұрын
Also after 60 years, they finally let Professor Brailsford back outside.
@TechXSoftware
@TechXSoftware 4 жыл бұрын
James Diroff II only after lockdown
@clangerbasher
@clangerbasher 4 жыл бұрын
CGI. Got to be CGI.
@mastod0n1
@mastod0n1 4 жыл бұрын
That explains why his hat is so small. He hasn't needed one since the last time he went outside.
@amicloud_yt
@amicloud_yt 3 жыл бұрын
Not trying to talk bad about him or anything but jeez based on his skin color you seem about right. lad needs some more sun but i guess he does like in the uk
@robvandeschepop8595
@robvandeschepop8595 4 жыл бұрын
Algol 60 was the first computer language I learned at school (HTS Zwolle for the Dutch readers) in 1980. Every line was written on a separate punch card, done with an IBM punch card machine. This instrument had no keys for the { and }, so that had to be escaped via "(" and ")", and when we made a mistake we had to type the whole line again on a new punch card. The program (== all punch cards) were preceded and followed by a few other cards and then fed into a punch card reader, which sent the whole program via a PDP11 and a phone line to another town where the mainframe then either compiled it and sent the listing back, or compiled and run it and sent the output back to the line printer at school. I finished the course with a 10 (an 'A' for the American readers), but then had to repeat the course again because we switched to a ("Prime") minicomputer and to Pascal. And we could use REAL CRT's!
@Landhund0
@Landhund0 4 жыл бұрын
The Compiler while going through the Professors programme: "It's an older code sir, but it checks out."
@DavidChipman
@DavidChipman 4 жыл бұрын
"END OF LINE" ;)
@Eliasdbr
@Eliasdbr 4 жыл бұрын
If Professor Brailsford was my grandfather, I'd be glad to hear his stories all the time :)
@clickrick
@clickrick 4 жыл бұрын
I remember the implementation of ALGOL 60 on the ICL 1900, which required apostrophes around keywords, so 'INTEGER' M,N; 'BEGIN' 'FOR' ... Ah, happy days!
@donaldboughton8686
@donaldboughton8686 4 жыл бұрын
I learnt to program in Algol 60 on a discrete component ICL 1905F in the 1969 summer term at the University of Surrey. Input was by punched cards. Passing procedure parameters by name so inefficient that no other language that I know of does it this way. OWN arrays did your compiler implement OWN dynamic arrays the ICL ALGOL 60 compiler did not.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
“Call by name” is effectively “nameless function of no arguments”. Nowadays the idea of “lambdas” has become very trendy.
@otakuribo
@otakuribo 3 жыл бұрын
"God, I used to _love_ teaching this to raw beginners." But Professor Brailsford, that's exactly what you're doing
@bundy1688
@bundy1688 3 жыл бұрын
Power of the internet
@michaelterrazas1325
@michaelterrazas1325 4 жыл бұрын
The Burroughs company made ALGOL their systems programming language, so when we developed devices for Burroughs computers in the 70s, we had to write the device drivers in ALGOL 68. And the ";" was not allowed after the last statement. It was a statement separator token. The C programming language made it a statement terminator.
@Abrifq
@Abrifq 4 жыл бұрын
I'm just wondering but, in theory, it is possible to put the semicolon before the lines except the first line, right? I know it will hurt readability but I just want to know if it is possible.
@hoagy_ytfc
@hoagy_ytfc 4 жыл бұрын
Algol60 and Algol68 are fairly different beasts though, even if from the same family. We used the 68 compiler from RSRE at Malvern on our Multics machine at university (80--84). Even that compiler didn't support some of the parallelism that was in the language.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
But in C you are not allowed to put a “;” after “}” to close a block. But you are *required* to put one after “}” to terminate a struct definition. Not confusing?
@Starguy256
@Starguy256 4 жыл бұрын
@@lawrencedoliveiro9104 Conceptually a block is made up of statements that already have ';'s and isn't a statement itself. Whereas a struct definition doesn't contain any statements, it's more like a declaration statement in itself. That's why you can declare structs in the same statement as the definition like struct point{int x, int y} pt1, pt2; Just because that's the conceptual idea behind it doesn't mean I won't forget the ';' 100% of the time though, so...
@JWM-Meijer
@JWM-Meijer 4 жыл бұрын
Oh yes '68 on the Burroughs, nested procedures, like Pascal IIRC. Very structured. TU Eindhoven (NL), early 80's, I spend ages behind those ancient terminals and teletypes. There the bug got me.
@sjzara
@sjzara 4 жыл бұрын
I remember discovering Algol 60 as a youngster in the early 70s and I thought it was marvellous! Before, I only had experience of BASIC and FORTRAN. I had no problem understanding the language. I truly loved the successor - Algol 68.
@kajyakuzonik9130
@kajyakuzonik9130 2 жыл бұрын
Prof. Brailsford's stories on computing are just the best!
@FyberOptic
@FyberOptic 4 жыл бұрын
This is similar to Turbo Pascal, it used begin/end and := for assignments. I really enjoyed that language, it was the first compilable one I used.
@clickrick
@clickrick 4 жыл бұрын
Niklaus Wirth based the Pascal language heavily on ALGOL 60. It's no coincidence - it was by design.
@ncot_tech
@ncot_tech 4 жыл бұрын
Turbo Pascal for DOS was the first "real" language I learnt. Coming from BASIC it was a whole new way of thinking.
@Ukitsu2
@Ukitsu2 4 жыл бұрын
@@clickrick Yeah, I assumed that when I read the code. I couldn't have understood it without Pascal, and a bit of Assembler, too.
@lhpl
@lhpl 4 жыл бұрын
@@clickrick yes. actually, he based it on his proposal for the Algol X successor language to Algol60. The committee was wise and chose the far more elegant and advanced proposal by Adrian (Aad) van Wijngarden, which later became Algol68. Wirth's language was implemented as Algol W, and was the direct ancestor of Pascal.
@TimsDaBossMC
@TimsDaBossMC 4 жыл бұрын
considering C as syntactic sugar blew my mind haha guess if C isn't liked now i can only imagine the programs back then. great lesson! glad to have seen it :)
@Monosekist
@Monosekist 4 жыл бұрын
2080: What the crud is Scratch? Impossible to figure out.
@olavl8827
@olavl8827 4 жыл бұрын
@@Monosekist Crud? Do you mean create-read-update-delete? :)
@cidercreekranch
@cidercreekranch 4 жыл бұрын
K&R wasn't that bad, but it did have it's own idiosyncrasies. Structures were implicitly passed by reference and not by value, as was the case for all other datatypes. The arrival of ANSI C fixed that but it required modifications to existing code to pass the syntax check.
@tissuepaper9962
@tissuepaper9962 4 жыл бұрын
ANSI C is great.
@humm535
@humm535 3 жыл бұрын
@@cidercreekranch Consider a program like the following: struct S { int i; }; f(s) struct S s; { printf("%d ", ++s.i); } main() { struct S s; s.i = 42; f(s); f(s); return 0; } When compiled using the C compiler from v7, the output will be 43 43 No, structs are not passed “by reference”. Nothing, ever, is passed “by reference”: Such a thing as a “reference” you could pass simply does not exist in C.
@Lttlemoi
@Lttlemoi 4 жыл бұрын
The procedure definition has something very mathematical to it. After all, nobody bats an eye at f(x) = ax² + bx + c.
@snork_games
@snork_games 4 жыл бұрын
Quite right VBA (but not VB) also does this type of 'return' (setting the return value to the function pseudo variable)
@perseapina
@perseapina 4 жыл бұрын
@@snork_games R, matlab (iirc) and go also do that, my favorite pieces of syntactic sugar.
@humm535
@humm535 3 жыл бұрын
@@perseapina Idk about VBA, Matlab, and R, but in Go you name the return parameter distinct from the function, as opposed to assigning to the function name like in, say, Algol or Fortran.
@taguetrash
@taguetrash 4 жыл бұрын
Honestly, that's a surprisingly readable language considering the state of other "dated" languages like COBOL. I wanna try it now!
@SteinGauslaaStrindhaug
@SteinGauslaaStrindhaug 4 жыл бұрын
Most modern languages have a syntax that is similar to C which was also similar to Algol60 (but much less verbose).
@taguetrash
@taguetrash 4 жыл бұрын
@@epsi oh I've already given pascal a go! I like some variety :)
@47f0
@47f0 4 жыл бұрын
Well, then you're in luck. ALGOL68 has a Debian Linux build available and it may be available in other flavors of Linux too. Have fun!
@taguetrash
@taguetrash 4 жыл бұрын
@@47f0 Great to hear, as soon as I get 'nix back on my box I'm gonna be giving it a try.
@lhpl
@lhpl 4 жыл бұрын
@@47f0 Algol68g Genie runs on many platforms. However, 68 is a different, much more modern language. I believe there are implementations of 60 to be found. Also, Simula67 is close to Algol60, with the addition of classes = oop.
@utkarshnagdev8442
@utkarshnagdev8442 4 жыл бұрын
Beautiful. His students must be so lucky ♥️
@steveb1972
@steveb1972 4 жыл бұрын
Utkarsh Nagdev yes he’s such a great teacher. His students must love going to his lectures. I’d love to see him do a Christmas lecture!
@betancour
@betancour 4 жыл бұрын
I don't know why when I heard the Professor voice on my mind, I imagine a Gentle Hobbit telling one marvelous adventure in Computer Science.
@squirlmy
@squirlmy 4 жыл бұрын
I'm thinking more myself as the hobbit and the Professor is Gandalf. Partly because he talks about lots of things my tiny hobbit brain can't comprehend (at least not til second breakfast)
@rudiklein
@rudiklein 4 жыл бұрын
Great talk again professor! I also very much like the combination of high tech (tablet), low tech (ALGOL60) and the analoge support (stone).
@GrimmerPl
@GrimmerPl 4 жыл бұрын
"Computers are just useful stones" ~ Someone, Somewhere, Probably.
@Gelsamel
@Gelsamel 4 жыл бұрын
I actually really like that you explicitly notate whether something is passed by value or by reference.
@Opisek
@Opisek 4 жыл бұрын
Modern languages still provide you with that functionality for the most part. Like using a keyword "ref" for example or by utilizing pointers.
@prosfilaes
@prosfilaes 4 жыл бұрын
Nope. I suspect it comes in the extra bits, but ALGOL 60 doesn't support passing by reference; it supports passing by name, a cool but usually terrible design.
@SimonClarkstone
@SimonClarkstone 4 жыл бұрын
@@prosfilaes Is that the one where if you have an array `a` and an integer `i`, you can call `proc(i, a[i])` And if `proc` takes both arguments by name then it can assign to its first argument to *immediately* change the which array element it can access via its second argument? That sounds like a recipe for unmaintainable spaghetti.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
@@SimonClarkstone It had a name: “Jensen’s Device”.
@Gelsamel
@Gelsamel 4 жыл бұрын
@@SimonClarkstone I think I just had an aneurism reading that.
@patrikknoerr9777
@patrikknoerr9777 4 жыл бұрын
I bought Algol 68 books years ago for my collection. Great language and one big step for mankind.
@lhpl
@lhpl 4 жыл бұрын
However, this is about the predecessor of Algol68, Algol60.
@squirlmy
@squirlmy 4 жыл бұрын
In the late 90s I bought lots of such programming books, because sellers couldn't tell the difference between an outdated Word for Windows95 and more substantial Computer Science books. I got lots for 25 to 50 cents, but I resold most at cost on Amazon. Maybe a big step for mankind, but a big backward nostalgia trip.
@ernestoyounes2946
@ernestoyounes2946 4 жыл бұрын
ah so this is someone that they look for in the job requirements when they said 30+ years of experience required
@jfolz
@jfolz 4 жыл бұрын
Does it count if I learn 30 languages and program for a year?
@Blazejkrzak
@Blazejkrzak 4 жыл бұрын
wish you luck
@robvandeschepop8595
@robvandeschepop8595 4 жыл бұрын
As I left school I had learned Algol 60 and Pascal (and 6802 assembly code). I started to work for Philips in 1985 and the first years I only used assembly (for Intel 8048, 8051 and 8400). I even did a course on 'structured programming in assembly'. Then we started to use c, and I learned c on a Friday afternoon :-) Nowadays I use c, c++, c# and python (and still sometimes some assembly)
@obinator9065
@obinator9065 3 жыл бұрын
Rob van de Schepop why do u use assembly? C in every instance.
@robvandeschepop8595
@robvandeschepop8595 3 жыл бұрын
​@@obinator9065: Our previous platform had 99.9% C, but the kernel and interrupt service routines were partly written in assembly, for speed and some arm instructions weren't possible with our compiler.
@mikestombraidervids8768
@mikestombraidervids8768 4 жыл бұрын
I remember being taught and using Algol (probably 68) as a first year student at Leeds University in about 1972. Running on a DEC mini using RSTS/E. One of the more senior students had written an Algol program called SOAP (Simplify Obscure Algol Programs). This demonstrates that the clever names were always part of the programming culture. Several years later, I encountered another 'academic' language called SNOBOL while working as a temp at IBM in Portsmouth.
@Zantorc
@Zantorc 4 жыл бұрын
Algol 60 and Algol 68 were as different as Pascal and C++.
@squirlmy
@squirlmy 4 жыл бұрын
@@Zantorc shush! It was a nice memory, and as both Algols have died already there's little use being pedantic about it.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
SNOBOL was a language designed for string processing. It could do some pattern-matching, but not quite to the sophistication of full-on regular expressions. (That I recall from descriptions, anyway; I never encountered it myself.)
@boblewis5558
@boblewis5558 3 жыл бұрын
ALGOL 60 - Loved it! First introduction to high level programming after C&G 319 mnemonic code as part of the first A level in computer science back in 1969/70. Got to uni and had to learn Fortran which I loathed. After Uni though was working at Ferranti in Wythenshawe and learned Coral 66 which was great, being so similar to Algol.
@davidtyas2249
@davidtyas2249 4 жыл бұрын
"Did ALGOL 60 have standardly defined input/output? No!" *Laughs in JavaScript*
@SimonClarkstone
@SimonClarkstone 4 жыл бұрын
At least JavaScript basically standardised the DOM.
@davidtyas2249
@davidtyas2249 4 жыл бұрын
@@SimonClarkstone The DOM is not part of the language itself, it is an API provided by browsers. Other JavaScript environments, like Node.js, have other methods for handling I/O.
@SimonClarkstone
@SimonClarkstone 4 жыл бұрын
@@davidtyas2249 Ah, I see what you mean.
@esra_erimez
@esra_erimez 4 жыл бұрын
A gift given to humanity by John Backus along with BNF notation. This was a huge advancement over FORTRAN and COBOL despite some of these short comings.
@mrmimeisfunny
@mrmimeisfunny 4 жыл бұрын
Professor Brailsford: It's horrible that you have to parse the program to find the main function. Python: Am I a joke to you?
@lhpl
@lhpl 4 жыл бұрын
Indeed. He can't have been much of a teacher, with such a poor understanding of block structure.
@GabrielPettier
@GabrielPettier 4 жыл бұрын
joke's on you, in python, function, classes, and other definitions, are actually part of the main program, it's not definition code in the sense of other languages, hence why you can define classes and functions inside functions/methods, so in python, you (might) have to execute the code to find the main function :P.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
This is why I put blank lines, bracketing symbols and demarcation comments in my Python code, e.g. ‌ def outer_func ... : ‌ def inner_func ... : ... #end inner_func ‌ #begin outer_func ... #end outer_func ‌ #+ # Mainline #- ‌ ... outer_func(...) ... ‌
@skipfred
@skipfred 4 жыл бұрын
@@lawrencedoliveiro9104 This is why I don't use Python unless I have to. People claim it's more readable than other languages - how on Earth anyone could come to that conclusion while looking at anything more than a trivial program is beyond me ¯\_(ツ)_/¯
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
@@skipfred I think Python is great. I have written-and maintained-much larger programs than that.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
10:37 “Committee” or not, ALGOL 60 was actually considered a major advance on languages that had gone before. The spec was remarkably small, and only partly because it left out important stuff like I/O and if-then-else nesting rules ;). It had nice ideas like recursion and local variables (and of course call-by-name), which were sufficiently challenging to implement that they were a major driver of advances in compiler technology for some years to come.
@hoagy_ytfc
@hoagy_ytfc 4 жыл бұрын
First "proper" language I used. I started on a Research Machines 380Z in 1978, using Basic then Fortran. Once we got the Algol 60 compiler, it was suddenly something that I thought felt "modern". My first "favourite" language was Algol 68 which I came across a couple of years later on a Multics mainframe. That was a fairly different language, but was SO powerful for the time.
@galier2
@galier2 4 жыл бұрын
We see where Niklaus Wirth got his inspiration from. Pascal, Modula and Oberon look quite similar.
@Kromaatikse
@Kromaatikse 4 жыл бұрын
There's a reason many languages are known as "Algol family". Most imperative languages are, these days.
@teeesen
@teeesen 3 жыл бұрын
Before Wirth designed Pascal, he designed (along with Tony Hoare) Algol-W which was similar to Algol-60 except incorporating some of Hoare’s design for records, heap storage, and pass by reference instead of pass by name. It was a test bed for a lot of the ideas that eventually made it into Pascal.
@teeesen
@teeesen 3 жыл бұрын
After re-reading the Algol-W paper, it seems I was wrong about pass by reference; Algol-W still used pass by name.
@jawbfl
@jawbfl 2 жыл бұрын
I wrote a compiler for Algol60 for compilers course it was a fun project, not a bad syntax compared to other languages from the same era.
@jecelassumpcaojr890
@jecelassumpcaojr890 4 жыл бұрын
Though you can skip the begin/end for a single line function like in the example, you don't have to if you find having them is more readable.
@Richardincancale
@Richardincancale 4 жыл бұрын
My old boss Brian Meek was on that committee - he loved teaching young undergrads about the discussions on parameter passing by name / value / reference etc...! The failure to have I/O was the killer for adoption compared to say FORTRAN which was a much uglier and more primitive language. You could (and should) add begin and end all over the place to improve clarity, like parentheses in maths formulae
@TheOwlman
@TheOwlman 4 жыл бұрын
Brian Meek, now there is a name that takes me back :D May I ask where he was your boss?
@Richardincancale
@Richardincancale 4 жыл бұрын
Owlman Queen Elizabeth College - Univ of London in the mid-1970s onwards. He was Director of Computing.
@TheOwlman
@TheOwlman 4 жыл бұрын
@@Richardincancale Cool. I only met him once at a conference somewhere... after all these years I can't remember where but I do remember him as being a friendly chap.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
I/O was a really difficult thing back in the day, with such a range of completely different devices with different behaviours--punched cards, punched paper tapes, line printers, magnetic tapes, disks and drums with entirely different filesystems. ALGOL 68 tried to solve the problem comprehensively, and ended up spending about a third of the reference manual just talking about I/O. It was really only the popularity of Unix, with its unified I/O model that vendors of other OSes started emulating, that made the problem finally go away.
@profdaveb6384
@profdaveb6384 4 жыл бұрын
Hi, yes I remember Brian quite well from various committees we were both on. I seem to recall that he initially graduated in Mathematics from King's College London (KCL- which was my own alma mater) but got his first actual computing job at Queen Elizabeth? In a sense he "returned home" when Queen Elizabeth was taken over by Kings (in the 1980s?)
@rogeratygc7895
@rogeratygc7895 4 жыл бұрын
Wow! That takes me back to my student days in the 60s! As soon as I worked for a living it was Fortran though.
@Xiphoseer
@Xiphoseer 3 жыл бұрын
I would love to see Prof. Brailsford have a look at the first few sections of "The Rust Programming Language". I find it has surprising syntactic similarities to Algol / Pascal and in some respect turns back some of the differences of C while getting around some of the readability problems.
@bigfootisjustreallyshy
@bigfootisjustreallyshy 3 жыл бұрын
I'm a pretty bitter, jaded internet user nowadays. Everything from twitter to youtube seems to nothing but insanity and rage bait. But Professor Brailsford's Computerphile videos always put a smile on my face.
@allmycircuits8850
@allmycircuits8850 4 жыл бұрын
Assign to function name is actually more powerful concept than 'return' keyword. At least in Delphi it's possible to use it as just another variable, like initialize it, update it and when end of function is reached the last value becomes return value (instead of function name one can use 'Result' variable). Return, on other hand, means IMMEDIATE return, which is not always good. In fact, modern 'clean code' concepts ask to have just one exit point from function.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
True, I don’t like having a “return” statement. But the trouble with allowing the function name as a variable on the RHS is: how do you express recursion? I prefer the alternative of having an explicit name for the result variable, e.g. function factorial(n : integer) → result : integer is begin result := 1; for i from 2 to n do result := result * i end (*factorial*)
@larswijn
@larswijn 4 жыл бұрын
the if-else statement that was shown obviously had multiple exit points
@allmycircuits8850
@allmycircuits8850 4 жыл бұрын
@@lawrencedoliveiro9104 I like to use 'result' variable as well, though there is no problem for compiler to distinguish between function call and variable named as this function. That's if there is at least one argument. But recursive call without args is useless. Other problem: function name could be used as address of this function. If result value is pointer, than we get ambiguity. So yes, using Result is better :)
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
4:47 I think the spec was a bit vague about whether you actually had to specify the _types_ of the arguments (integer, in this case). Some compilers may have allowed this to be optional. Which meant that type information had to be carried around at runtime.
@linuxretrogamer
@linuxretrogamer 4 жыл бұрын
Another life long Turbo Pascal coder. Having fallen in love with C# I'm now giving Delphi/Object-Pascal a go. So seeing Algol is right up my coding street. Love it.
@davidgillies620
@davidgillies620 4 жыл бұрын
In 2036 you can do one on the 68th anniversary of ALGOL68. I wrote my very first computer program (as a very small boy) in ALGOL68, on a PDP-11 no less. ALGOL68 was enormous and bore the hallmarks of a committee-driven design process like nothing else until ADA came along. It was very elegant, very powerful, and almost unused. But even more than ALGOL60 it drove several paradigms that became commonplace in subsequent languages.
@TheAnkMan
@TheAnkMan 4 жыл бұрын
Love his shirt. Nice to see him in his home environment (garden) other than in a room of the university.
@Roxor128
@Roxor128 4 жыл бұрын
The professor is enjoying the summer sun as the video is recorded, and I'm enjoying the winter sun as I watch it.
@lbmclean
@lbmclean 8 ай бұрын
my first job was at Unisys. I loved Algol
@captainharlock9158
@captainharlock9158 4 жыл бұрын
Great video
@abdullahmehboob4757
@abdullahmehboob4757 4 жыл бұрын
This is really interesting.
@TechXSoftware
@TechXSoftware 4 жыл бұрын
Acestar Productions prove it!
@abdullahmehboob4757
@abdullahmehboob4757 4 жыл бұрын
Bruh it’s my opinion and I why do u want me to prove it just watch the video.
@kuromaru9661
@kuromaru9661 4 жыл бұрын
Acestar Productions It‘s just a joke
@RussellRiker
@RussellRiker 4 жыл бұрын
Professor B. Is a ROCK STAR!
@steevee1945
@steevee1945 4 жыл бұрын
I love the hear this man speak.
@janmatula1534
@janmatula1534 4 жыл бұрын
the if then else expressions kinda surprised me. the first place ive seen that was in haskell
@coolmanjack1995
@coolmanjack1995 4 жыл бұрын
The way it returns by saying ackerman:= reminds me a lot of the way Haskell returns a value. Every line of Haskell starts with the function name ackermann:: with the double colon is where the function is defined with its input and return types and then you continue each line with ackermann and an = for what it is supposed to return
@grivar
@grivar 4 жыл бұрын
Woodland pigeon at 12:49
@ChocolateMilkCultLeader
@ChocolateMilkCultLeader 4 жыл бұрын
I don't know why I as a student watch this channel, but I'm glad I do
@whuzzzup
@whuzzzup 4 жыл бұрын
So how much did the compiled C program (the assembly) differ from a more modern approach? Or does the compiler produce the same code?
@JanBruunAndersen
@JanBruunAndersen 4 жыл бұрын
Not the same code, no, but similar enough. Given that computers back then was both slower and had smaller memory, I guess more emphasis was put on generating the most efficient code in the smallest amount of memory. Today compilers can make faster code by allowing the program to use more memory.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
3:10 In ALGOL 60, a procedure body was defined as a single «statement», preceded by zero or more formal argument specifications. Of course, a begin/end block counts as a «statement», but it is not required to be this. This was later deemed to be too confusing, so in Pascal it must specifically be a begin/end block. Not sure if that was also the rule in ALGOL-W (aka “Wirth-Hoare ALGOL”), which was an intermediate language between ALGOL 60 and Pascal.
@teeesen
@teeesen 3 жыл бұрын
In Algol-W the begin/end are optional. Furthermore the body of a function procedure (i.e. a procedure that returns a value) could just be an expression (it could also be a begin/end block that ends with an expression), so in Algo-W you wouldn’t have written the ‘ackermann :=‘, which I think is an improvement over Pascal. He might have gone back to the Algol way for Pascal in order to keep the grammar LL(1).
@robrick9361
@robrick9361 3 жыл бұрын
Is he using a rock to prop up his tablet? That's adorable and hilarious.
@AlexanderWeurding
@AlexanderWeurding 9 ай бұрын
I have no Englisch words for the respect of these keyboard cowboys. Thanks for sharing
@qj0n
@qj0n 4 жыл бұрын
actually, in some way C# starts to implement some of it now: in c# 7(?) they've added one-liner functions, so they don't require brackets (just semicolon at the end) and in c# 9 they plan to allow to write main program code directly in file, between functions (outside of Main) ;)
@lhpl
@lhpl 4 жыл бұрын
Yes maybe in another ten years or so we'll get around to have all the features Algol (68) had since the RR (revised report) from 1974.
@DrSteveBagley
@DrSteveBagley 4 жыл бұрын
Algol on a stone tablet… Sorry, Algol on a tablet on stone… ;)
@MrGryph78
@MrGryph78 4 жыл бұрын
Cheeky
@thea.igamer3958
@thea.igamer3958 4 жыл бұрын
What about Prof Brailsford on other languages like python and go . Would be great to explore them along with him
@stardustreverie6880
@stardustreverie6880 4 жыл бұрын
This is really really interesting.
@TechXSoftware
@TechXSoftware 4 жыл бұрын
Stardust Reverie yes yes
@talideon
@talideon 4 жыл бұрын
In a weird kind of a way, the use of assignment for returning value in Algol 60 parallels the unit (return) operation on monads.
@geehaf
@geehaf 4 жыл бұрын
The Prof rocks!
@TheOwlman
@TheOwlman 4 жыл бұрын
Yay! First language I learned... I much preferred it to COBOL and FORTRAN despite their simplicity.
@TechXSoftware
@TechXSoftware 4 жыл бұрын
Owlman good job
@clickrick
@clickrick 4 жыл бұрын
COBOL? "Simplicity"?
@happosade
@happosade 4 жыл бұрын
Happy bday algol 60
@Dreijer94
@Dreijer94 4 жыл бұрын
haha, brilliant.
@TechXSoftware
@TechXSoftware 4 жыл бұрын
Yay!
@PopeLando
@PopeLando 4 жыл бұрын
When I started programming I began as a fan of Pascal, so very interested in this famous precursor. *begin* and *end* and assigning the name of the function to return the value, all that was carried over. In fact the main difference in Pascal was you declared variable : type, but Algol had type variable, and that's what C went back to!
@teeesen
@teeesen 3 жыл бұрын
Lots of other differences too: records, heap storage, pointers, enumeration types, union types, case-statements, type declarations, call by reference, standard procedures for I/O.
@teeesen
@teeesen 3 жыл бұрын
And also subrange types, sets types, the character type, and file type. Pascal also generalized the idea of an array so that the index type could be any subrange of the integers or the character set or an enumeration type.
@AllGamingStarred
@AllGamingStarred 3 жыл бұрын
older computers: "what's this newfangled stuff called text editors?" Newer programs: "hey gramps, welcome to the new age"
@msscoventry
@msscoventry 4 жыл бұрын
Algol 60, Algol W, Snobol, SASL, Coral 66: Languages from my past.
@964tractorboy
@964tractorboy 4 жыл бұрын
Coral 66: ah...
@QuasarRedshift
@QuasarRedshift 4 жыл бұрын
@@964tractorboy wow !
@Obscurai
@Obscurai 4 жыл бұрын
AlgolW was the gateway language to my long time addiction to C.
@spiderjuice9874
@spiderjuice9874 4 жыл бұрын
Prof. Brailsford: What were the main improvements made in Algol 68 over Algol 60?
@tomeru2377
@tomeru2377 4 жыл бұрын
Hello, thank you for your great videos, the videos contain a lot of technical details i notice that most of the videos are without subtitles, it will be great if you can add at least english subs
@TechXSoftware
@TechXSoftware 4 жыл бұрын
Very good
@warrengibson7898
@warrengibson7898 4 жыл бұрын
I learned programming with Algol 60. The code he shows seems easy and natural. But he’s right about the lack of input and output standards.
@pleasedontwatchthese9593
@pleasedontwatchthese9593 4 жыл бұрын
This kind of reminds me of JavaScript with anonymous functions. More than js does it but it's just what I come across the most.
@rubenb8653
@rubenb8653 4 жыл бұрын
11:18 Recursion is a dilemma. Theoretically the most efficient and elegant way of solving something, in reality heavy on the machine. So whenever I am picking recursion or loops, one or the other, in either case I dont know wether to be happy or nervous LOL.
@KcKc-bh6lu
@KcKc-bh6lu 4 жыл бұрын
Algol-60 was very interesting programming language. But I have to give to APL as the weirdest language beside assembly.
@pedrovasconcelos8260
@pedrovasconcelos8260 4 жыл бұрын
What's with Prof Brailsford's observation about "slowness" regarding recursion? I can understand that you might be worried about blowing up the stack, but other than that it should not be noticeably slower than a loop
@lotrbuilders5041
@lotrbuilders5041 4 жыл бұрын
You have to push values on a stack an perform a call and return whilst abiding some kind of ABI. That’s a lot more cycles and memory then: DEC, JNZ
@pedrovasconcelos8260
@pedrovasconcelos8260 4 жыл бұрын
@@lotrbuilders5041 Yes, I know that, but what I don't understand is the implication that ALGOL is slower for supporting recursion. If you write a loop you don't pay that cost.
@lotrbuilders5041
@lotrbuilders5041 4 жыл бұрын
Pedro Vasconcelos I think that’s mainly a case of temptation. I think the thought was if you have recursion people are only going to use that, because it simpler even for simply recursive code
@LincolnChamberlin
@LincolnChamberlin 4 жыл бұрын
I like this dude
@tengelgeer
@tengelgeer 4 жыл бұрын
What happened to the image stabilization? :o
@IronMarkus666
@IronMarkus666 3 жыл бұрын
ALGOL with a korean instructor was such fun.
@rosiefay7283
@rosiefay7283 4 жыл бұрын
That business about the syntax of a procedure declaration being bad because there's only a semicolon at the end before the next thing: For one thing, yes you may use 'begin' and 'end' -- but the 'begin' goes at the start of the body, not before the header. And part of what makes the program hard to understand is that the porcedure is declared before the main program. But you don't have to put them that way round -- you could put the main program before all the procedure declarations if you wanted. And in C the syntax doesn't force you to put 'main' first, you could put it at the end or in the middle somewhere. Algol's syntax didn't force you to write code badly; C's doesn't force you to write it well.
@WorstDeveloper
@WorstDeveloper 4 жыл бұрын
11:17 - Recursion is very useful when traversing dynamic tree structures. I don't know how that would even be done with just loops.
@Am6-9
@Am6-9 4 жыл бұрын
CodeBit my thoughts, too. Traversing trees is probably the task where recursion is most used (just guessing)
@muche6321
@muche6321 4 жыл бұрын
You could do it with a control list and one loop: controllist = []; controllist.push(treeroot); while (!controllist.empty()) { item = controllist.pop(); // process the item, push item's children onto controllist as necessary } When the controllist is done as a stack it's a depth-first search, when it a queue, it's a breadth-first search.
@fernandoschuindt1665
@fernandoschuindt1665 4 жыл бұрын
Professor's cell phone camera would get him trouble in other occasions. Haha
@VincentGroenewold
@VincentGroenewold 4 жыл бұрын
I'm soooooo glad I'm learning programming now. haha
@RussellRiker
@RussellRiker 4 жыл бұрын
But we have to know where we came from to know where we are going. 😉
@pefclic
@pefclic 4 жыл бұрын
wait another 60 years :P
@PixelOutlaw
@PixelOutlaw 4 жыл бұрын
Unfortunately now the build environments, IDEs, and multiple platforms are more complex that ever before. Just putting graphics on the screen with Vulkan and C++ is an abomination to what we saw with Borland languages. ALGOL isn't pretty though.
@VincentGroenewold
@VincentGroenewold 4 жыл бұрын
Russell Riker Oh yes, totally agree there.
@VincentGroenewold
@VincentGroenewold 4 жыл бұрын
PixelOutlaw Vulkan and C++ are indeed the worst in that, guess what I’m learning.. ;) I think those will improve though. But most of the others are amazing.
@Rchals
@Rchals 4 жыл бұрын
Recursion loves you, and you don't know it unless you code for some 3d asset pipeline with infinite trees of folders and files.
@klaxoncow
@klaxoncow 4 жыл бұрын
* indefinite trees They can't literally be infinite, as you'd never have the storage space and the program would never complete. They're "indefinite" - having no inherent limit but, of course, actually finite in reality - rather than "infinite" - literally going on forever, which is physically impossible and logically useless.
@keedt
@keedt 4 жыл бұрын
@@klaxoncow _Haskell enters the chat_
@listofoptions
@listofoptions 4 жыл бұрын
@@keedt *lazily*
@TheThagenesis
@TheThagenesis 4 жыл бұрын
the grammar reminds me of Turbo Pascal - a LOT - oh boy, it's been a while!
@GrimmerPl
@GrimmerPl 4 жыл бұрын
Turbo Pascal was the first programming language I met. I hope I'll never have to use it again :P.
@programorprogrammed
@programorprogrammed 4 жыл бұрын
Pure internet gold
@OneBiOzZ
@OneBiOzZ 4 жыл бұрын
The moment you realize that Verilog, a language you have been using for years, is based off ALGOL and not just a strange C implementation
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
I wish the ALGOL line had been more influential. In particular, it introduced the “:=” operator for assignment, leaving “=” with its mathematical meaning of equality comparison. Whereas every language in current use has adopted the C convention of “=” for assignment, and this peculiar “==” thing for equality comparison. So tell me, if “==” is for equality, why is the inequality operator not “!==”?
@davidmartin8089
@davidmartin8089 4 жыл бұрын
Would that make "!=", is anything but?
@matteopascoli
@matteopascoli 4 жыл бұрын
not to mention "===" ;)
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
@@matteopascoli Ho yes. Only needed in languages which buggered up their interpretation of “==”, but still ...
@precumming
@precumming 4 жыл бұрын
Recursion is incredibly useful, and if you use a functional language you can't fully use them without recursion
@berndeckenfels
@berndeckenfels 4 жыл бұрын
As a novice programmer I somehow inherited an Algol 60 reference manual in the late 80ies and I coded in my mind as I never saw/got a working compiler ,)
@RogerGarrett
@RogerGarrett 4 жыл бұрын
Whatever happened to Ada? That was the "next big thing" when I was starting as a software engineer in the early 70s and was going to be REQUIRED for all government software.
@pierreabbat6157
@pierreabbat6157 4 жыл бұрын
Does modern Algol have a suntiger?
@brunoleite3958
@brunoleite3958 Жыл бұрын
The return assignment by function name is really similar to VBA
@filker0
@filker0 4 жыл бұрын
In 8 years, will we get a retrospective on ALGOL-68? I've always been amused by with pass-by-name as a mental exercise.
@marsgal42
@marsgal42 4 жыл бұрын
I did first year computer science in Algol W. Second year mainly in Pascal. Both very much Algol 60 derivatives. I try to forget PL/1. Forty years later I do production work in C and Python. I'd love to find an excuse to play with something trendier (Go? node.js?) but haven't found a good enough excuse yet.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
Do you program for fun? Do it anyway. ;)
@Jack-ei1tn
@Jack-ei1tn 4 жыл бұрын
VBA does the same garbage with assigning the return value to the function name. I knew that looked familiar...
@RetroSwim
@RetroSwim 4 жыл бұрын
Also classic VB and VB.Net, and by extension most, if not all dialects of BASIC. There's probably some lineage there.
@davidjames1684
@davidjames1684 4 жыл бұрын
In the year 2060, this computer language will be "like new" again.
@jagardina
@jagardina 4 жыл бұрын
Wow, I'm the same age as ALGOL. Not sure how I feel about that.
@flyingskyward2153
@flyingskyward2153 4 жыл бұрын
Happy birthday to you both 🎂🎉🎈
@donaldboughton8686
@donaldboughton8686 4 жыл бұрын
It is not as bad as being more than ten years older.
@GabrielPettier
@GabrielPettier 4 жыл бұрын
well, at least you probably weren't designed by a committee!
@user-iu1xg6jv6e
@user-iu1xg6jv6e 4 жыл бұрын
No worries as long as you have a standard input output working.
@NipkowDisk
@NipkowDisk 4 жыл бұрын
Same here...
@jnecaise
@jnecaise 4 жыл бұрын
Having had to learn Pascal that assignment to the procedure (function in Pascal) looks familiar.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 4 жыл бұрын
One of the things unfortunately left unspecified in the ALGOL 60 spec was the meaning of something like if cond1 then if cond2 then alt1 else alt2 which “if” did the “else” pair with? Later languages specifically said that it paired with the “last unpaired “if”". But ALGOL 60 did not. Some implementations might have interpreted it that way, but others said you had to be explicit by putting in begin/end as appropriate, i.e. if cond1 then begin if cond2 then alt1 else alt2 end or if cond1 then begin if cond2 then alt1 end else alt2 Of course, “begin/end” was only allowed in statements, not expressions, so this didn’t help with conditional expressions.
@teeesen
@teeesen 3 жыл бұрын
I don’t think that’s a syntactically valid statement. The statement that follows a “then” must be an “unconditional” statement and an unconditional statement can’t start with an “if”. (See section 4.5.1 of the original Algol-60 report.) For expressions there is no issue because a conditional expression must have an “else”. (See section 3.3.1 of the Algol-60 report.) Of course, I’m just talking about the report. Implementations might have extended it in various incompatible ways.
@simonrazer8303
@simonrazer8303 4 жыл бұрын
how do I get to the extra bits?!
@cybro8925
@cybro8925 4 жыл бұрын
They should play the extra bits by default and leave the other video to be selected by the viewer
@gfhrtshergheghegewgewgew1730
@gfhrtshergheghegewgewgew1730 4 жыл бұрын
am i going to have to wait 8 years for the video on algol 68? what about scheme? what about ada? what about whitespace? what about befunge?
@zbeekerm
@zbeekerm 4 жыл бұрын
Can you please do a video about legacy and Modern Fortran? You should interview Damian Rouson and/or Steve Lionel and/or Malcolm Cohen or other folks on the J3/WG5 committee.
@skipfred
@skipfred 4 жыл бұрын
"Return thing, or whatever" Ah yes, I do love C
What is a Monad? - Computerphile
21:50
Computerphile
Рет қаралды 590 М.
RegEx Roman Numerals - Computerphile
17:14
Computerphile
Рет қаралды 85 М.
it takes two to tango 💃🏻🕺🏻
00:18
Zach King
Рет қаралды 23 МЛН
Super sport🤯
00:15
Lexa_Merin
Рет қаралды 16 МЛН
Who Will Eat The Porridge First The Cockroach Or Me? 👧vs🪳
00:26
Giggle Jiggle
Рет қаралды 21 МЛН
ALGOL 68 Instead of Pascal? - Computerphile
10:13
Computerphile
Рет қаралды 51 М.
Punch Card Programming - Computerphile
14:55
Computerphile
Рет қаралды 868 М.
C++ vs Rust: which is faster?
21:15
fasterthanlime
Рет қаралды 368 М.
ALGOL?
9:41
Truttle1
Рет қаралды 27 М.
What was Coding like 40 years ago?
29:05
The Coding Train
Рет қаралды 1,6 МЛН
How eBooks Work - Computerphile
20:27
Computerphile
Рет қаралды 107 М.
Regular Expressions - Computerphile
17:19
Computerphile
Рет қаралды 238 М.
GPT3: An Even Bigger Language Model - Computerphile
25:57
Computerphile
Рет қаралды 432 М.
it takes two to tango 💃🏻🕺🏻
00:18
Zach King
Рет қаралды 23 МЛН