The Man Who Revolutionized Computer Science With Math

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

IMO a better analogy would be ".. they're being taught writing by being taught grammar and that doesn't make much sense".

Programmers are taught the basic syntax of programming but very little on overall program design and flow. How to write code that is maintainable, performant and scalable is not easy, not taught and, lets be honest, not even that valued in the industry. If it was appropriately valued there would be no ageism and experienced developers would be valued as developers instead of as technical managers.

πŸ‘οΈŽ︎ 883 πŸ‘€οΈŽ︎ u/eikenberry πŸ“…οΈŽ︎ May 24 2022 πŸ—«︎ replies

This is something I bring up often when discussing visual programming languages

if you think making programming graphical will make it easier then you've confused typing to be "the hard part"

but also if you think visual programming isn't real programming, you've confused typing to be "the hard part"

πŸ‘οΈŽ︎ 893 πŸ‘€οΈŽ︎ u/jcGyo πŸ“…οΈŽ︎ May 24 2022 πŸ—«︎ replies

Computer scientists tend to think in terms of programming languages.

Proceeds to show images of HTML code

πŸ‘οΈŽ︎ 260 πŸ‘€οΈŽ︎ u/hrvbrs πŸ“…οΈŽ︎ May 24 2022 πŸ—«︎ replies

If you want to learn to play guitar, you do really need to learn how to do a chord or two and how to strum. Music theory can be taught in other ways and alongside learning to play the guitar, but if the aim is to play the guitar not just understand music theory, then the practical and physical act has to be learnt and practiced too.

In the same way, learning to write code is the first step in being able to experiment and learn through doing. But of course at the same time, this doesn't mean it's mandatory or even the best place to start from scratch, that could well be Scratch or similar depending on prior computer experience and age.

πŸ‘οΈŽ︎ 159 πŸ‘€οΈŽ︎ u/2this4u πŸ“…οΈŽ︎ May 24 2022 πŸ—«︎ replies

Yeah but the theory only makes sense when practicing. You need both algorithm courses and coding courses to succeed.

πŸ‘οΈŽ︎ 44 πŸ‘€οΈŽ︎ u/potterman28wxcv πŸ“…οΈŽ︎ May 24 2022 πŸ—«︎ replies

It is just too difficult to integrate Leslie's TLA+ in software design. Far too time consuming. I tried a couple of times - it was useful to validate the design of a distributed system, but we struggled with TLA+ and it was also an uphill battle convincing other coders to buy into the same. Most folks are happy with intensive testing over formal correctness checking. Maybe it becomes easier with experience ?

I wish popular compilers for technologies like Java, Go, C++ offered something like a special dialect for distributed state machines, with restricted syntax and formal logic checking on the same, so this could be part of the standard CICD build.

πŸ‘οΈŽ︎ 13 πŸ‘€οΈŽ︎ u/lenkite1 πŸ“…οΈŽ︎ May 25 2022 πŸ—«︎ replies

So what is the correct way to teach programming? What reference books are there in the store I can refer to?

πŸ‘οΈŽ︎ 20 πŸ‘€οΈŽ︎ u/kishoredbn πŸ“…οΈŽ︎ May 25 2022 πŸ—«︎ replies

This comes down to the difference between software engineering and computer science. Computer science is closer to math while software engineering is closer to engineering. As a software engineer you will end up combining established best practices (libraries) creating a high quality product that meets the needs of the actual end user at scale while being maintainable. As a computer scientist you will end up creating algorithms and efficient solutions to specific challenges.... essentially the libraries that may then be applied by the software engineer. Both of them do programming/coding; for the type of programming by the computer scientist math is really important, for the type of programming by the software engineer math isn't as important.

πŸ‘οΈŽ︎ 42 πŸ‘€οΈŽ︎ u/aresthedevil πŸ“…οΈŽ︎ May 24 2022 πŸ—«︎ replies

Coding is so much more important then the math aspect of software engineering. I disagree with this completely. You can get a bachelors degree in computer science and have no clue how to code. You can get a degree in software engineering and easily know how to code and know all of the algorithms needed to find the best path for a solution. Very rarely will people be doing math on a day to day basis with their career… if at all.

Computer science is a math degree. You could be good at math but terrible at programming and visa versus. However being good at programming and bad at math will get you much further in this field.

πŸ‘οΈŽ︎ 4 πŸ‘€οΈŽ︎ u/[deleted] πŸ“…οΈŽ︎ May 26 2022 πŸ—«︎ replies
Captions
my name is leslie lamport and i am a computer scientist which is something that didn't really exist when i started being a computer scientist and it took me a while to figure out that i was one my relationship with computers began as a programmer it never quite occurred to me that i was doing anything scientific until after i had published enough papers that it finally occurred to me my education was as a mathematician it was just natural for me to think about computers as a mathematician when you write an algorithm you need to have a proof that it's correct an algorithm without a proof is a conjecture it's not a theorem and if you're proving things well that means mathematics computer scientists tend to think in terms of programming languages one of the epiphanies in my career was the realization that i was not writing programs as a computer scientist i was designing algorithms i came to realize that if i'm not writing a program i shouldn't use a programming language people confuse programming with coding coding is to programming what typing is to writing writing is something that involves mental effort you're thinking about what you're going to say the words have some importance but in some sense that even they are secondary to the ideas in the same way programs are built on ideas they have to do something and what they're supposed to do i mean is like what writing is supposed to convey if people are trying to learn programming by being taught to code well they're being taught writing by being taught how to type and that doesn't make much sense the best way i have for teaching about programming as distinct from coding is to think about what the program is supposed to do mathematically there's a very big practical problem with this the mathematical education in this country is pretty terrible most people wind up being afraid of mathematics this is even senior programmers i've developed a language called tla plus for writing down the ideas that go into the program before you do any coding it's a pretty hard thing for engineers to get into but when they do it develops their ability to think mathematically a distributed system is one in which your computer can be rendered useless by the failure of a computer that you didn't even know existed non-distributed computing is when different processes communicate by using the same memory and distributed computing means that they're communicating with one another by sending messages now my interest in distributed systems came about by serendipity i received a preprint of a paper by robert thomas and paul johnson who had an algorithm for implementing distributed databases these are databases where you could have multiple copies of the data sitting at different computers so that programs on each computer could have rapid access to the data but they had to be synchronized so that processes on all the computers got consistent views of what the data was i happen to have become quite familiar with special relativity one of the things that special relativity teaches you is that two different observers have different notions of what at the same time means but there's one notion that is invariant there's a certain notion of one event happening before another event and that means that it's possible for information to be transmitted from one event to the other when the information cannot travel faster than the speed of light i realized that that notion of causality was violated by the algorithm of thomas and johnson it's completely analogous to the relation in special relativity so what i did is i wrote a paper that explained this notion of causality one could solve any distributed system problem by building what i called a state machine think of it as an abstract computer that has one thing at a time you make sure that all the computers in this distributed system cooperate to implement a single state machine and that idea has become fundamental in the way people think about building distributed systems i had never even thought about a distributed system before i wrote that paper as i progressed in my career i came to appreciate the idea of working in industry that's where most of the interesting problems that i found came from you know from engineers having a problem to solve it reminds me actually of something that auguste renoir once said if someone asked him why he painted outside rather than in his studio and what he said is if i were painting in the studio and i wanted to paint a leaf i would be able to you know think of only a half dozen or so different kinds of leaves that i could paint but when i was painting outdoors there were just these millions of different kinds of leaves that were there that i could paint from i found my research the same way that if i sat down you know and just you know contemplated my navel and think about problems you know there's a small number of problems that i could think of but there were just scares of them sitting out in industry waiting to be to be solved my favorite of my algorithms is the bakery algorithm it's to solve the mutual exclusion problem that is keep two processes from using the printer at the same time processes choose a number based on the numbers that have been chosen by other processes and use an algorithm so that the lowest is allowed to use the printer but what is amazing about it is it does not make an assumption that almost every other algorithm makes the assumption being that if say i'm changing my number from 47 to 100 and you read that number you'll either get 47 or 100 but that algorithm works even if instead of getting 47 or 100 you maybe got 4 700 or maybe you got 9999 the algorithm still works i didn't intend it to i mean i didn't intend that i just discovered that when i wrote the proof i never needed to make the assumption that is just so beautiful uh and you know i'm really proud that that i stumbled on it [Music] you
Info
Channel: Quanta Magazine
Views: 2,328,498
Rating: undefined out of 5
Keywords: science, quanta, quanta magazine, explainer, science explainer, science video, educational video
Id: rkZzg7Vowao
Channel Id: undefined
Length: 7min 50sec (470 seconds)
Published: Tue May 17 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.