1 00:00:04,200 --> 00:00:07,560 Speaker 1: Get in text with technology with tech Stuff from stuff 2 00:00:07,600 --> 00:00:14,320 Speaker 1: works dot com. Hey there, and welcome to tech Stuff. 3 00:00:14,400 --> 00:00:18,759 Speaker 1: I'm your host, Jonathan Strickland, a senior writer with health 4 00:00:18,800 --> 00:00:21,360 Speaker 1: stuff works dot com. I hope you guys are doing 5 00:00:21,440 --> 00:00:25,600 Speaker 1: well today. I'm going to start tackling a subject I 6 00:00:25,720 --> 00:00:30,880 Speaker 1: have alluded to in previous episodes, the history of programming languages. 7 00:00:31,800 --> 00:00:34,320 Speaker 1: There's a lot of it, so this will be a 8 00:00:34,400 --> 00:00:37,440 Speaker 1: two parter at the very least, and part one we're 9 00:00:37,440 --> 00:00:41,200 Speaker 1: going to be laying the groundwork for programming languages. Long 10 00:00:41,320 --> 00:00:43,680 Speaker 1: time listeners know this is kind of my m O. 11 00:00:44,240 --> 00:00:47,800 Speaker 1: I like to really make sure that we have a 12 00:00:47,840 --> 00:00:50,840 Speaker 1: foundation before I go into a topic because I feel 13 00:00:50,880 --> 00:00:56,360 Speaker 1: like context is really important. And despite our love of 14 00:00:56,400 --> 00:00:59,720 Speaker 1: stories that have a beginning, middle, and end, typically history 15 00:00:59,840 --> 00:01:03,040 Speaker 1: is not so neat and tidy. We tend to have 16 00:01:03,160 --> 00:01:06,319 Speaker 1: lots of stuff bleed into other things and so it 17 00:01:06,319 --> 00:01:09,760 Speaker 1: gets a little complicated. So before we talk about the 18 00:01:09,800 --> 00:01:13,360 Speaker 1: history of programming languages itself, let's talk about why we 19 00:01:13,480 --> 00:01:17,120 Speaker 1: need programming languages in the first place. Well, when you 20 00:01:17,160 --> 00:01:21,679 Speaker 1: get down to it, computers process machine language, or a 21 00:01:21,800 --> 00:01:25,240 Speaker 1: type of machine language. Machine language in itself is a 22 00:01:25,280 --> 00:01:30,640 Speaker 1: descriptor it is the language that machines quote unquote understand 23 00:01:30,920 --> 00:01:36,959 Speaker 1: and what they are using in order to execute various operations. Uh, 24 00:01:37,000 --> 00:01:42,039 Speaker 1: the machine language of today is the binary code zeros 25 00:01:42,160 --> 00:01:45,720 Speaker 1: and ones. All those instructions that a computer carries out 26 00:01:45,959 --> 00:01:50,960 Speaker 1: essentially boiled down to chains of zeros and ones. So 27 00:01:51,160 --> 00:01:55,440 Speaker 1: in order to really understand programming languages, at least most 28 00:01:55,480 --> 00:02:00,000 Speaker 1: of modern programming languages, we need to understand about binary 29 00:02:00,800 --> 00:02:04,400 Speaker 1: and as it turns out, the concept of using binary 30 00:02:04,440 --> 00:02:09,600 Speaker 1: arithmetic dates back quite a ways, well before the dawn 31 00:02:09,919 --> 00:02:14,119 Speaker 1: of the computer. The earliest scholarly work I could find 32 00:02:14,160 --> 00:02:20,640 Speaker 1: regarding binary arithmetic dates to seventeen o three, eighteenth century. 33 00:02:20,760 --> 00:02:25,240 Speaker 1: It was written by Gottfried Wilhelm Leibniz. The Leibniz was 34 00:02:25,280 --> 00:02:28,720 Speaker 1: a German mathematician and philosopher and one of the two 35 00:02:28,760 --> 00:02:34,040 Speaker 1: people to invent differential and integral calculus. Anyone know who 36 00:02:34,080 --> 00:02:39,520 Speaker 1: the other person was? Bueller, Bueller, I'm sure a lot 37 00:02:39,560 --> 00:02:41,520 Speaker 1: of you are shouting it out right now. It's actually 38 00:02:41,840 --> 00:02:48,240 Speaker 1: sir Isaac Newton. Newton and Leibniz were two co inventors 39 00:02:48,720 --> 00:02:52,000 Speaker 1: of calculus. They did it independently of one another. In 40 00:02:52,040 --> 00:02:55,560 Speaker 1: other words, neither of them were aware of the other 41 00:02:55,600 --> 00:02:58,200 Speaker 1: person's work, which is kind of cool when you think 42 00:02:58,200 --> 00:03:02,360 Speaker 1: about it. It's this this uh, an interesting moment in 43 00:03:02,440 --> 00:03:06,400 Speaker 1: history where you have two different brilliant people coming up 44 00:03:06,440 --> 00:03:09,200 Speaker 1: with the same idea simultaneously. And this is not the 45 00:03:09,240 --> 00:03:11,360 Speaker 1: only time this has happened. There have been quite a 46 00:03:11,360 --> 00:03:15,160 Speaker 1: few times in human history where people in different parts 47 00:03:15,200 --> 00:03:17,120 Speaker 1: of the world have come to the same sort of 48 00:03:17,600 --> 00:03:21,280 Speaker 1: amazing realization at around the same time without ever being 49 00:03:21,280 --> 00:03:25,480 Speaker 1: aware of the other person. As it turns out, they 50 00:03:25,520 --> 00:03:31,200 Speaker 1: both tried to lay claim to being the father of calculus. Uh. Really, 51 00:03:31,240 --> 00:03:34,639 Speaker 1: their followers were more rabid about it than they were. 52 00:03:35,000 --> 00:03:39,320 Speaker 1: And there's in fact, an entire fascinating story about the 53 00:03:39,360 --> 00:03:43,560 Speaker 1: battle for who should be given credit for inventing calculus. 54 00:03:43,920 --> 00:03:46,400 Speaker 1: But that's a story for another podcast. It's really not 55 00:03:46,480 --> 00:03:48,120 Speaker 1: a tech stuff story. You might be a stuff you 56 00:03:48,120 --> 00:03:51,440 Speaker 1: missed in history class story if you really want to 57 00:03:52,840 --> 00:03:55,920 Speaker 1: make some history folks go crazy about talking about, you know, 58 00:03:56,080 --> 00:03:59,280 Speaker 1: lots of maths. But let's go back to binary arithmetic. 59 00:04:00,080 --> 00:04:04,360 Speaker 1: The Leibnitz wrote about binary arithmetic in his memoir De 60 00:04:04,640 --> 00:04:08,520 Speaker 1: la Caademir Royal de san sees ha ha ha, And 61 00:04:08,560 --> 00:04:12,720 Speaker 1: I know my French is terrible. You shouldn't pop off 62 00:04:12,720 --> 00:04:18,640 Speaker 1: from Sabien and Maroisment. His work, though, was the first 63 00:04:18,680 --> 00:04:24,279 Speaker 1: to explain that arithmetic typically relies upon base ten. Makes sense. 64 00:04:24,360 --> 00:04:27,919 Speaker 1: You know your your typical person has five fingers on 65 00:04:27,960 --> 00:04:31,320 Speaker 1: each hand, five toes on each foot. Base ten makes sense. 66 00:04:31,360 --> 00:04:34,599 Speaker 1: You count one to ten with your fingers. So he 67 00:04:34,640 --> 00:04:37,000 Speaker 1: would say that base ten really ranges from the number 68 00:04:37,120 --> 00:04:39,800 Speaker 1: zero up to the number nine, and then you repeat 69 00:04:40,040 --> 00:04:44,320 Speaker 1: that sequence again, only you put a one in the 70 00:04:44,440 --> 00:04:48,919 Speaker 1: second column, you know, the really the tens column, and 71 00:04:48,960 --> 00:04:50,840 Speaker 1: then you start back at zero and work your way 72 00:04:50,839 --> 00:04:52,200 Speaker 1: back up to nine, and then you would put it 73 00:04:52,279 --> 00:04:54,240 Speaker 1: to there, and so on and so forth. So you 74 00:04:54,279 --> 00:04:57,600 Speaker 1: worked up to the one hundreds column and the one 75 00:04:57,640 --> 00:05:02,400 Speaker 1: thousand's column. But he says he found that the simplest 76 00:05:02,440 --> 00:05:05,000 Speaker 1: progression of all to be more useful in the science 77 00:05:05,120 --> 00:05:10,000 Speaker 1: of numbers. That simplest of progressions is between just two 78 00:05:10,120 --> 00:05:14,960 Speaker 1: numbers zero and one before it repeats itself. So the 79 00:05:15,040 --> 00:05:18,800 Speaker 1: number zero is zero, the number one is one. If 80 00:05:18,880 --> 00:05:22,159 Speaker 1: you wanted to represent the number two, you would write 81 00:05:22,360 --> 00:05:26,880 Speaker 1: one zero. So again it's kind of like going zero 82 00:05:26,920 --> 00:05:28,720 Speaker 1: to nine, and then you would go to ten. In 83 00:05:28,760 --> 00:05:30,280 Speaker 1: this case, you go to zero the one, then you 84 00:05:30,320 --> 00:05:33,200 Speaker 1: would go to what is effectively ten that represents the 85 00:05:33,279 --> 00:05:37,000 Speaker 1: number two. Three would be one, one or eleven if 86 00:05:37,000 --> 00:05:39,960 Speaker 1: we were using the decimal system, and a four is 87 00:05:40,240 --> 00:05:44,000 Speaker 1: one zero, zero or one, and so on and so forth. 88 00:05:44,200 --> 00:05:46,480 Speaker 1: Now by the time you get the thirty, you're looking 89 00:05:46,640 --> 00:05:51,839 Speaker 1: at one one, one, one zero, and a thirty two 90 00:05:52,000 --> 00:05:56,040 Speaker 1: is one followed by five zero, so it would be 91 00:05:56,080 --> 00:06:00,000 Speaker 1: one hundred thousand in the base ten system. Leibnitz said 92 00:06:00,120 --> 00:06:03,880 Speaker 1: that this scheme allowed for geometric progression. So if you 93 00:06:03,920 --> 00:06:07,080 Speaker 1: were to take the binary digits for four, which is 94 00:06:07,160 --> 00:06:10,239 Speaker 1: one zero, zero, and then you took the binary digits 95 00:06:10,240 --> 00:06:13,640 Speaker 1: for two, which is one zero, and then as in 96 00:06:14,200 --> 00:06:16,600 Speaker 1: the number one followed by the number zero, and then 97 00:06:16,640 --> 00:06:19,760 Speaker 1: you took the binary digit that represents the number one, 98 00:06:20,040 --> 00:06:22,719 Speaker 1: which in this case is one, and you were to 99 00:06:22,760 --> 00:06:24,920 Speaker 1: add all of those together, you'd end up with one 100 00:06:24,960 --> 00:06:29,760 Speaker 1: on one that is the binary digit for seven, which 101 00:06:29,800 --> 00:06:32,440 Speaker 1: is also what you get when you add four and 102 00:06:32,520 --> 00:06:36,800 Speaker 1: two and one together in base ten. Leimnez says this 103 00:06:36,839 --> 00:06:40,479 Speaker 1: approach allows for lots of practical applications, such as weighing 104 00:06:40,560 --> 00:06:43,080 Speaker 1: a lot of different masses with just a few different 105 00:06:43,080 --> 00:06:47,000 Speaker 1: types of weights or in coinage to allow for many 106 00:06:47,040 --> 00:06:50,000 Speaker 1: different values with just a few coins, So he was 107 00:06:50,080 --> 00:06:53,960 Speaker 1: thinking of practical applications for binary arithmetic. He also said 108 00:06:53,960 --> 00:06:57,400 Speaker 1: that expressing numbers this way allowed for easy mathematical operations 109 00:06:57,400 --> 00:07:02,000 Speaker 1: such as subtraction, multiplication, and division. Leibnitz also said that 110 00:07:02,120 --> 00:07:05,440 Speaker 1: using binary just made sense. You didn't have to memorize 111 00:07:05,480 --> 00:07:08,760 Speaker 1: facts by rote as. Everything was evident through what he 112 00:07:08,839 --> 00:07:12,720 Speaker 1: called ordinary reckoning. So in other words, you wouldn't have 113 00:07:12,840 --> 00:07:17,760 Speaker 1: to memorize things like seven plus eight is fifteen, right, 114 00:07:17,920 --> 00:07:20,960 Speaker 1: You wouldn't have to memorize these sort of ideas, or 115 00:07:21,000 --> 00:07:24,480 Speaker 1: that four times six, you know, what is that? What 116 00:07:24,640 --> 00:07:27,720 Speaker 1: is four times six? I'm asking you know it's twenty four. 117 00:07:28,120 --> 00:07:31,360 Speaker 1: So you wouldn't have to memorize these and and have 118 00:07:31,480 --> 00:07:35,000 Speaker 1: it all by rote But that with the binary approach, 119 00:07:35,040 --> 00:07:38,680 Speaker 1: because you're only working with ones and zeros, there's none 120 00:07:38,680 --> 00:07:42,360 Speaker 1: of that memorization. It's all very intuitive. Now. Granted you 121 00:07:42,480 --> 00:07:45,160 Speaker 1: then have to work out what those ones and zeros 122 00:07:45,160 --> 00:07:47,600 Speaker 1: are representing in the base ten system. That's a little 123 00:07:47,640 --> 00:07:53,360 Speaker 1: more complicated, but it works. Leibnitz Is work predates computers 124 00:07:53,400 --> 00:07:57,120 Speaker 1: by centuries, and there's some evidence to suggest that binary 125 00:07:57,240 --> 00:08:00,320 Speaker 1: counting systems were actually being used by other culture ors 126 00:08:00,320 --> 00:08:04,520 Speaker 1: well before Leibniz came along. They weren't written in scholarly journals, 127 00:08:04,840 --> 00:08:08,360 Speaker 1: but they existed. Some researchers from the University of Norway 128 00:08:08,400 --> 00:08:13,000 Speaker 1: noted that on the island of Manga Manga Riva, and 129 00:08:13,040 --> 00:08:15,760 Speaker 1: I could be completely butchering the pronunciation of that, so 130 00:08:15,800 --> 00:08:19,640 Speaker 1: I apologize. It's a island over in the South Pacific 131 00:08:19,720 --> 00:08:22,960 Speaker 1: Islanders had been using a binary system to count between 132 00:08:23,000 --> 00:08:26,600 Speaker 1: the numbers twenty through eighty. So they used base ten 133 00:08:27,280 --> 00:08:30,040 Speaker 1: for all numbers leading up to twenty, and then between 134 00:08:30,080 --> 00:08:33,439 Speaker 1: twenty and eighty they used binary digits. And they were 135 00:08:33,480 --> 00:08:37,160 Speaker 1: doing this before the fifteenth century, so before the fourteen hundreds, 136 00:08:37,600 --> 00:08:41,240 Speaker 1: the islanders didn't have a written language, which meant that 137 00:08:41,280 --> 00:08:43,480 Speaker 1: whenever they had to do math, which they started having 138 00:08:43,520 --> 00:08:46,720 Speaker 1: to do they began to trade with other islanders and 139 00:08:46,760 --> 00:08:50,520 Speaker 1: other cultures well before the fourteen hundreds. It meant that 140 00:08:50,559 --> 00:08:52,320 Speaker 1: they needed to be able to do math in their 141 00:08:52,360 --> 00:08:56,920 Speaker 1: heads easily, and binary allowed for that as opposed to 142 00:08:57,280 --> 00:09:02,240 Speaker 1: something that's in the decimal ten system. But who considered 143 00:09:02,480 --> 00:09:06,400 Speaker 1: using binary as the basis for machine language? Where did 144 00:09:06,440 --> 00:09:10,439 Speaker 1: that come from, well, that would be much much later, 145 00:09:11,200 --> 00:09:14,360 Speaker 1: And in fact, there's some other elements of programming that 146 00:09:14,480 --> 00:09:17,760 Speaker 1: pre date the decision to go with binary as the 147 00:09:17,880 --> 00:09:21,679 Speaker 1: basic language for computers. So let's look at some of 148 00:09:21,720 --> 00:09:25,440 Speaker 1: those developments because that's kind of again what led to 149 00:09:25,600 --> 00:09:30,079 Speaker 1: the rise in programming itself. So to find the thread 150 00:09:30,679 --> 00:09:33,240 Speaker 1: of this story, we have to go back to eighteen 151 00:09:33,320 --> 00:09:36,520 Speaker 1: o one, so a century after Leibniz was writing about 152 00:09:36,559 --> 00:09:42,240 Speaker 1: binary arithmetic, and that's when Joseph Mrie Jacquard introduced the 153 00:09:42,280 --> 00:09:47,080 Speaker 1: programmable loom. We've talked about this in previous episodes of 154 00:09:47,120 --> 00:09:51,520 Speaker 1: Tech Stuff. The programmable loom was a real innovation back 155 00:09:51,559 --> 00:09:56,280 Speaker 1: in the nineteenth century. The programs consisted of wooden punch cards, 156 00:09:56,280 --> 00:09:58,960 Speaker 1: So you had these large pieces of wood with holes 157 00:09:59,080 --> 00:10:02,719 Speaker 1: punched in through in a certain pattern, and what you 158 00:10:02,720 --> 00:10:06,160 Speaker 1: would do is pass threads through the holes in the 159 00:10:06,280 --> 00:10:10,840 Speaker 1: cards when you were threading up your loom, and those 160 00:10:10,840 --> 00:10:14,080 Speaker 1: holes would essentially dictate what the pattern was going to 161 00:10:14,160 --> 00:10:17,680 Speaker 1: be when you finished. So if you wanted a specific pattern, 162 00:10:17,800 --> 00:10:21,280 Speaker 1: you just put the appropriate punch card, load that up 163 00:10:21,320 --> 00:10:24,720 Speaker 1: for your loom, pass the thread through, and then weave 164 00:10:24,920 --> 00:10:27,080 Speaker 1: on the loom. So that you would get the pattern 165 00:10:27,120 --> 00:10:30,080 Speaker 1: you wanted. You needed to change it up. You just 166 00:10:30,400 --> 00:10:34,560 Speaker 1: switched out the cards that you were using. Uh, so 167 00:10:34,720 --> 00:10:38,800 Speaker 1: different patterns would use different configurations of holes. You know, obviously, 168 00:10:38,840 --> 00:10:40,920 Speaker 1: if the hole is there, then a thread can pass through. 169 00:10:40,920 --> 00:10:43,560 Speaker 1: If there's no hole in that position, then a thread 170 00:10:43,600 --> 00:10:47,480 Speaker 1: cannot pass through. It's pretty pretty intuitive now if you 171 00:10:47,520 --> 00:10:52,079 Speaker 1: think about this in an abstract way. The punch cards 172 00:10:52,200 --> 00:10:55,920 Speaker 1: are like a series of two positions switches. The holes 173 00:10:56,240 --> 00:10:59,000 Speaker 1: are the on switch because they allow a thread to 174 00:10:59,000 --> 00:11:02,280 Speaker 1: pass through, and the areas where a hole could be 175 00:11:02,800 --> 00:11:05,920 Speaker 1: but there isn't a hole is an off switch because 176 00:11:05,920 --> 00:11:09,160 Speaker 1: you cannot pass a thread through a solid piece of wood. 177 00:11:10,160 --> 00:11:15,319 Speaker 1: So Jacquard's loom sped things up and really got things 178 00:11:15,360 --> 00:11:18,280 Speaker 1: moving in the weaving business. It also ended up putting 179 00:11:18,280 --> 00:11:20,040 Speaker 1: a lot of weavers out of work in the process, 180 00:11:20,040 --> 00:11:22,640 Speaker 1: and they got very upset. But it would take a 181 00:11:22,679 --> 00:11:26,079 Speaker 1: couple of decades before someone made the mental leap that 182 00:11:26,360 --> 00:11:30,280 Speaker 1: a punch card could be something that you could use 183 00:11:30,280 --> 00:11:35,920 Speaker 1: with abstract ideas, not just physical material like thread. That 184 00:11:36,120 --> 00:11:40,520 Speaker 1: someone was Charles Babbage who first proposed a mechanical device 185 00:11:40,600 --> 00:11:43,640 Speaker 1: called the difference engine. That was a device that was 186 00:11:43,640 --> 00:11:46,120 Speaker 1: meant to compute tables of numbers, and it was a 187 00:11:46,160 --> 00:11:50,080 Speaker 1: really complicated device with lots of gears and shafts that 188 00:11:50,120 --> 00:11:53,079 Speaker 1: could rotate in different directions, and it would have used 189 00:11:53,080 --> 00:11:55,600 Speaker 1: a lot of moving parts. But Babbage was never able 190 00:11:55,640 --> 00:11:58,480 Speaker 1: to actually finish it. It took longer than what he 191 00:11:58,600 --> 00:12:05,840 Speaker 1: had predicted, and ultimately the funding dried up as various 192 00:12:06,040 --> 00:12:09,240 Speaker 1: patrons got fed up with waiting around for Babbage to 193 00:12:09,280 --> 00:12:12,920 Speaker 1: finish the thing, and they ended up stopped. They stopped 194 00:12:12,920 --> 00:12:16,920 Speaker 1: paying him. But he began to work on a new 195 00:12:16,960 --> 00:12:20,600 Speaker 1: device that he called the analytic engine. And here's where 196 00:12:20,679 --> 00:12:24,800 Speaker 1: Jacquard's work came in. Babbage realized that those punch cards 197 00:12:24,880 --> 00:12:29,680 Speaker 1: that were physically either allowing or preventing thread to pass 198 00:12:29,720 --> 00:12:33,080 Speaker 1: through could act not just as gateways for physical material 199 00:12:33,160 --> 00:12:36,640 Speaker 1: like thread, but also for abstract notions like a problem 200 00:12:36,760 --> 00:12:40,160 Speaker 1: statement or information needed to work out a problem solution. 201 00:12:41,080 --> 00:12:44,000 Speaker 1: So by changing up what could and couldn't pass through, 202 00:12:44,240 --> 00:12:50,240 Speaker 1: you could run a problem through a mechanical calculator. Essentially. 203 00:12:50,640 --> 00:12:54,520 Speaker 1: Now with Babbage's design, we're not talking about electricity. Is 204 00:12:54,559 --> 00:12:58,680 Speaker 1: still gears, mechanical parts that have to connect with one another, 205 00:12:58,800 --> 00:13:02,040 Speaker 1: and all of it is based on physical motion. So 206 00:13:02,080 --> 00:13:04,040 Speaker 1: if you've ever worked with a loud computer that had 207 00:13:04,080 --> 00:13:06,480 Speaker 1: a bad fan or something, you have a hint of 208 00:13:06,520 --> 00:13:09,000 Speaker 1: what it must have sounded like to work on this thing. 209 00:13:09,320 --> 00:13:13,559 Speaker 1: Only the analytic engine involved more clanking, or at least 210 00:13:13,600 --> 00:13:15,839 Speaker 1: I hope it involved more clanking than your computer did. 211 00:13:15,840 --> 00:13:18,960 Speaker 1: If your computer is clanking, you probably should take that 212 00:13:19,000 --> 00:13:22,080 Speaker 1: in to get a bit of an adjustment, or if 213 00:13:22,080 --> 00:13:24,720 Speaker 1: you're really handy, take a look in there, your fan 214 00:13:24,880 --> 00:13:28,120 Speaker 1: is probably out of alignment. While Babbage was working on 215 00:13:28,280 --> 00:13:32,680 Speaker 1: that first analytic engine, he was also helped by the 216 00:13:32,720 --> 00:13:39,120 Speaker 1: world's first computer programmer. Her name was Aida Lovelace, the 217 00:13:39,320 --> 00:13:42,800 Speaker 1: Enchantress of Numbers, and I've done a full episode about 218 00:13:42,880 --> 00:13:45,760 Speaker 1: Lovelace before. I Think the Stuff you Missed in History 219 00:13:45,800 --> 00:13:50,360 Speaker 1: Class podcast has done an episode on Lovelace before. She 220 00:13:51,520 --> 00:13:58,480 Speaker 1: was remarkable, an incredible person, uh, someone who I think 221 00:13:58,600 --> 00:14:02,640 Speaker 1: needs more reck ignition for her contributions to computer science. 222 00:14:02,880 --> 00:14:05,679 Speaker 1: She envisioned a world in which not only could one 223 00:14:05,800 --> 00:14:10,680 Speaker 1: create a punch card program for a calculator to run 224 00:14:10,679 --> 00:14:13,520 Speaker 1: through and give you the solution to a problem, she 225 00:14:13,720 --> 00:14:16,880 Speaker 1: was able to make another mental leap on the same 226 00:14:16,960 --> 00:14:21,360 Speaker 1: level that Charles Babbage had made. Babbage's leap was, hey, 227 00:14:21,400 --> 00:14:25,400 Speaker 1: this card that could allow or prevent thread to pass 228 00:14:25,440 --> 00:14:28,640 Speaker 1: through could also be used in a more abstract way. 229 00:14:29,280 --> 00:14:34,240 Speaker 1: Lovelace's leap was this device that is intended to solve 230 00:14:34,320 --> 00:14:39,400 Speaker 1: mathematical equations and answer those sorts of problems, could also 231 00:14:39,440 --> 00:14:42,600 Speaker 1: be used to do all sorts of other things, things 232 00:14:42,640 --> 00:14:45,560 Speaker 1: that computers today can do. But no one at the 233 00:14:45,600 --> 00:14:50,240 Speaker 1: time was even imagining. She was such a forward thinker 234 00:14:50,800 --> 00:14:54,320 Speaker 1: that she was able to envision a world where you 235 00:14:54,360 --> 00:14:59,160 Speaker 1: could encode all sorts of information and use a device 236 00:14:59,240 --> 00:15:03,240 Speaker 1: like the Analytic Engine to process it information like music 237 00:15:03,600 --> 00:15:09,440 Speaker 1: or images. So the remarkable thing is, years before, decades 238 00:15:09,560 --> 00:15:13,600 Speaker 1: before anything like that would be possible, Lovelace was imagining 239 00:15:14,240 --> 00:15:17,920 Speaker 1: that actually coming to pass. And I really wonder what 240 00:15:18,160 --> 00:15:21,960 Speaker 1: she would think of the world today from a technological standpoint. 241 00:15:22,000 --> 00:15:23,800 Speaker 1: If she was able to look around and see the 242 00:15:23,840 --> 00:15:27,400 Speaker 1: sort of things that computers could do, she might feel 243 00:15:27,560 --> 00:15:32,400 Speaker 1: very much vindicated by this vision she had back in 244 00:15:32,560 --> 00:15:37,480 Speaker 1: the nineteenth century, where electronics were not a thing yet. 245 00:15:37,600 --> 00:15:41,160 Speaker 1: No one had really harnessed electricity in a meaningful way 246 00:15:41,240 --> 00:15:44,080 Speaker 1: at the time that they were working on the analytic engine. 247 00:15:44,840 --> 00:15:51,600 Speaker 1: So it's a really phenomenal thinker. I cannot imagine being 248 00:15:51,640 --> 00:15:55,360 Speaker 1: in a world where I'm able to project ahead that 249 00:15:55,480 --> 00:15:58,640 Speaker 1: far and think of something so abstract and to be 250 00:15:58,800 --> 00:16:03,480 Speaker 1: so right on the money. Really well. The next step 251 00:16:03,640 --> 00:16:07,040 Speaker 1: along the path to programming happened in eighteen nineties, so 252 00:16:07,080 --> 00:16:09,800 Speaker 1: we're getting to the end of the nineteenth century, and 253 00:16:09,840 --> 00:16:13,680 Speaker 1: that was a census year in the United States. So 254 00:16:13,840 --> 00:16:17,480 Speaker 1: in the US we hold a census every decade, and 255 00:16:17,520 --> 00:16:20,920 Speaker 1: the purpose of the census is to determine the representation 256 00:16:20,960 --> 00:16:23,880 Speaker 1: of states in the House of Representatives, that is a 257 00:16:23,920 --> 00:16:27,000 Speaker 1: group in Congress in the legislative branch that is dependent 258 00:16:27,120 --> 00:16:30,520 Speaker 1: upon state populations. So we have the Senate. Every state 259 00:16:30,560 --> 00:16:33,680 Speaker 1: gets to senators, but then we have the House of Representatives, 260 00:16:33,680 --> 00:16:36,280 Speaker 1: and the number that we have is dependent upon the 261 00:16:36,320 --> 00:16:39,800 Speaker 1: population of the various states, which means we occasionally have 262 00:16:39,880 --> 00:16:42,480 Speaker 1: to check and see what the populations are. If they 263 00:16:42,600 --> 00:16:46,600 Speaker 1: changed dramatically, then the number of representatives will again change 264 00:16:46,680 --> 00:16:49,160 Speaker 1: to reflect that. But the U s had hit a 265 00:16:49,240 --> 00:16:52,440 Speaker 1: problem by the end of the nineteenth century. There were 266 00:16:52,440 --> 00:16:55,480 Speaker 1: just too many dang people to count. It was just 267 00:16:55,560 --> 00:16:58,320 Speaker 1: taking really long to count them all by hand. So 268 00:16:58,360 --> 00:17:02,880 Speaker 1: in seventeen nine century earlier. They was also the very 269 00:17:02,920 --> 00:17:06,359 Speaker 1: first year that we held a census. It took nine 270 00:17:06,640 --> 00:17:10,520 Speaker 1: months to count up all the different responses for the 271 00:17:10,600 --> 00:17:16,679 Speaker 1: United States Census. By eight the census, the previous census, 272 00:17:16,680 --> 00:17:19,000 Speaker 1: the one that just happened before. They were trying to 273 00:17:19,000 --> 00:17:22,040 Speaker 1: figure out a new method. It took them seven and 274 00:17:22,080 --> 00:17:26,159 Speaker 1: a half years to tally all the results. Seven and 275 00:17:26,200 --> 00:17:28,399 Speaker 1: a half years to count up the results of the 276 00:17:28,400 --> 00:17:31,119 Speaker 1: previous census. That meant that you were two and a 277 00:17:31,160 --> 00:17:33,959 Speaker 1: half years away from having to do it all over again. 278 00:17:34,600 --> 00:17:38,200 Speaker 1: And so the Census Bureau held a contest, and they 279 00:17:38,240 --> 00:17:41,720 Speaker 1: called for inventors to come up with some way of 280 00:17:41,880 --> 00:17:45,840 Speaker 1: tallying the census responses much more quickly so that they're 281 00:17:45,840 --> 00:17:50,640 Speaker 1: not wasting so much time and money just counting how 282 00:17:50,640 --> 00:17:56,720 Speaker 1: many people are in each state. Enter Herman Hollerith, who 283 00:17:56,400 --> 00:17:59,920 Speaker 1: invented a solution in response to the US Census Bureau 284 00:18:00,080 --> 00:18:04,840 Speaker 1: and offered he won the prize that the bureau was offering. Holly. 285 00:18:04,960 --> 00:18:08,320 Speaker 1: Rith created what he called a card reader. So again 286 00:18:08,359 --> 00:18:10,520 Speaker 1: we get to punch cards, very similar to what was 287 00:18:10,560 --> 00:18:14,640 Speaker 1: being used by Babbage and then previously by Jacquard. This 288 00:18:14,880 --> 00:18:18,760 Speaker 1: red cards by sensing holes that were punched into the cards, 289 00:18:19,480 --> 00:18:21,800 Speaker 1: and it also had a gear mechanism to help keep 290 00:18:21,840 --> 00:18:26,240 Speaker 1: count of all the different things that needed to count 291 00:18:26,280 --> 00:18:29,320 Speaker 1: all the demographic information, and had a panel of dials 292 00:18:29,359 --> 00:18:32,160 Speaker 1: that would track the various counts so that you could 293 00:18:32,200 --> 00:18:34,600 Speaker 1: just look at the different dials and you would get 294 00:18:34,640 --> 00:18:39,720 Speaker 1: a summary of all the different responses. Each card had 295 00:18:39,760 --> 00:18:42,359 Speaker 1: positions on it that would indicate different data about the 296 00:18:42,400 --> 00:18:47,080 Speaker 1: citizen it represented, and his invention meant the eighteen nineties 297 00:18:47,080 --> 00:18:50,240 Speaker 1: census could be tabulated in three years, so less than 298 00:18:50,359 --> 00:18:53,320 Speaker 1: half the time of the previous census, the one that 299 00:18:53,359 --> 00:18:56,440 Speaker 1: had happened in eighteen eighty. It's still a good long 300 00:18:56,480 --> 00:18:58,880 Speaker 1: while to have to count that up, but much much 301 00:18:58,920 --> 00:19:01,560 Speaker 1: faster and more efficient it than the previous census was. 302 00:19:02,680 --> 00:19:05,760 Speaker 1: Hall Earth would go on to found a company called 303 00:19:05,840 --> 00:19:09,480 Speaker 1: the Tabulating Machine Company. That company, by the way, is 304 00:19:09,520 --> 00:19:13,080 Speaker 1: still around today, but its name has changed because the 305 00:19:13,119 --> 00:19:18,720 Speaker 1: Tabulating Machine Company would evolve into International Business Machines, which 306 00:19:18,720 --> 00:19:25,000 Speaker 1: today we know as IBM. So IBM had in its history, 307 00:19:25,280 --> 00:19:30,720 Speaker 1: the original purpose of it was to uh tabulate punch cards, 308 00:19:30,800 --> 00:19:33,360 Speaker 1: and those punch cards were originally used for the eight 309 00:19:33,720 --> 00:19:36,960 Speaker 1: nineties census in the United States. Kind of cool little 310 00:19:37,080 --> 00:19:39,640 Speaker 1: bit of trivia. So if you're ever at pub trivia 311 00:19:39,800 --> 00:19:42,360 Speaker 1: and they're asking where IBM came from, now you know. 312 00:19:43,200 --> 00:19:45,080 Speaker 1: And you also know that the person who's running the 313 00:19:45,119 --> 00:19:48,600 Speaker 1: trivia is a total geek who may also listen to 314 00:19:48,640 --> 00:19:51,879 Speaker 1: the show, So hey, shout out to you, Mr or 315 00:19:52,000 --> 00:19:56,400 Speaker 1: Mrs Trivia Master. Those punch cards would become an important 316 00:19:56,440 --> 00:20:00,280 Speaker 1: part of programming later on now. Arguably the first person 317 00:20:00,320 --> 00:20:03,720 Speaker 1: to build a general purpose computer was a man named 318 00:20:03,800 --> 00:20:08,680 Speaker 1: Conrad Zeussa who designed and built the Z one computer 319 00:20:08,880 --> 00:20:13,439 Speaker 1: in the late nineteen thirties. His device combined electronic and 320 00:20:13,560 --> 00:20:17,359 Speaker 1: mechanical parts, so it wasn't a purely electronic computer. It 321 00:20:17,440 --> 00:20:19,879 Speaker 1: still had some moving parts to it, and he had 322 00:20:19,920 --> 00:20:23,439 Speaker 1: decided to go with binary processing as the basis for 323 00:20:23,560 --> 00:20:25,880 Speaker 1: his computer. It makes it simple because you only need 324 00:20:25,880 --> 00:20:29,000 Speaker 1: to switch with two positions on or off for each 325 00:20:29,040 --> 00:20:33,119 Speaker 1: of your little processors and or gates if you prefer, 326 00:20:33,760 --> 00:20:37,280 Speaker 1: and he thought that made more sense than decimal processing. 327 00:20:37,440 --> 00:20:42,720 Speaker 1: And he used discarded film as his medium to send 328 00:20:43,480 --> 00:20:46,800 Speaker 1: commands to the computer. He wasn't using card stock, he 329 00:20:46,880 --> 00:20:49,959 Speaker 1: wasn't using paper tape, he didn't have access to it, 330 00:20:49,960 --> 00:20:53,880 Speaker 1: but he did use discarded film from various film houses 331 00:20:53,880 --> 00:20:56,440 Speaker 1: in Germany, and he would just punch holes in that 332 00:20:56,720 --> 00:21:01,399 Speaker 1: to be the instructions for his machine. His Z three machine, 333 00:21:01,440 --> 00:21:03,600 Speaker 1: which he built in nineteen forty one, might have been 334 00:21:03,600 --> 00:21:07,560 Speaker 1: the first general purpose programmable digital computer, but it was 335 00:21:07,640 --> 00:21:11,679 Speaker 1: destroyed during a bombing raid in World War Two. Only 336 00:21:11,760 --> 00:21:14,520 Speaker 1: his Z four device was able to make it through 337 00:21:14,560 --> 00:21:19,359 Speaker 1: the war, and for years Zeus's work remained in obscurity. 338 00:21:19,520 --> 00:21:22,560 Speaker 1: No one knew that he had made these things, and 339 00:21:22,600 --> 00:21:25,640 Speaker 1: he had done it again independently of anyone else. So 340 00:21:25,920 --> 00:21:28,720 Speaker 1: you would see the rise of computer science in other 341 00:21:28,960 --> 00:21:33,720 Speaker 1: countries disconnected from his work, and in turn, his work 342 00:21:33,760 --> 00:21:37,800 Speaker 1: was disconnected from their's. Again, another example of these two 343 00:21:37,880 --> 00:21:43,000 Speaker 1: different places with the same ideas coming into shape. He 344 00:21:43,160 --> 00:21:46,120 Speaker 1: arrived at his designs independently of all the other pioneers 345 00:21:46,160 --> 00:21:49,040 Speaker 1: and computer science. We'll talk a little bit about his 346 00:21:49,119 --> 00:21:53,199 Speaker 1: programming language in our next episode, because while he was 347 00:21:53,760 --> 00:21:58,400 Speaker 1: creating a programming language earlier than almost anyone else, it 348 00:21:58,440 --> 00:22:03,919 Speaker 1: didn't become known to most computer scientists until the nineteen seventies. Well, 349 00:22:03,920 --> 00:22:05,600 Speaker 1: I've got a lot more to talk about in the 350 00:22:05,680 --> 00:22:08,879 Speaker 1: history of programming languages, but before I jump into the 351 00:22:08,920 --> 00:22:12,560 Speaker 1: next section. Let's take a quick break to thank our sponsor. 352 00:22:19,880 --> 00:22:26,680 Speaker 1: All Right, during World War Two we get the term computers. 353 00:22:27,040 --> 00:22:31,679 Speaker 1: But here's the interesting thing. Computers were not machines. For 354 00:22:31,760 --> 00:22:34,400 Speaker 1: the most part. In World War two computers the word 355 00:22:34,440 --> 00:22:39,159 Speaker 1: computers referred to people. It applied to human beings, and 356 00:22:39,200 --> 00:22:44,320 Speaker 1: their job was to compute various equations, specifically relating to 357 00:22:44,560 --> 00:22:49,359 Speaker 1: artillery and gunnery when it first started. By World War two, 358 00:22:49,400 --> 00:22:53,359 Speaker 1: our war machines had reached incredible amounts of power and 359 00:22:53,400 --> 00:22:56,040 Speaker 1: you could fire upon positions that were well out of you. 360 00:22:56,640 --> 00:22:59,040 Speaker 1: But it meant that you needed to understand exactly what 361 00:22:59,080 --> 00:23:01,600 Speaker 1: a shell was owing to do when you fired it. 362 00:23:02,359 --> 00:23:04,960 Speaker 1: In other words, based on the power of the gun, 363 00:23:05,440 --> 00:23:10,760 Speaker 1: the weight of the shell, wind, other factors. If you 364 00:23:10,840 --> 00:23:14,560 Speaker 1: fire at a certain elevation, if a certain angle from 365 00:23:14,600 --> 00:23:17,720 Speaker 1: the ground, where is that show going to go? It's 366 00:23:17,760 --> 00:23:21,000 Speaker 1: really important if you want to hit, say, an enemy 367 00:23:21,280 --> 00:23:29,680 Speaker 1: encampment versus just countryside or a town. Well, it meant 368 00:23:29,760 --> 00:23:32,600 Speaker 1: that they needed people who were really good at maths. 369 00:23:32,640 --> 00:23:36,680 Speaker 1: So the army started to hire math majors. But that 370 00:23:36,720 --> 00:23:40,960 Speaker 1: meant that they were looking primarily at women, because the 371 00:23:41,000 --> 00:23:44,520 Speaker 1: men were already drafted into the armed forces, and they 372 00:23:44,560 --> 00:23:51,160 Speaker 1: were serving as soldiers and other frontline personnel. So women 373 00:23:52,040 --> 00:23:56,360 Speaker 1: were predominantly the computers of World War two. These were 374 00:23:56,359 --> 00:24:00,760 Speaker 1: women who were studying mathematics, and we're breaking round in 375 00:24:00,800 --> 00:24:04,080 Speaker 1: the areas of math. So they would work out all 376 00:24:04,160 --> 00:24:06,760 Speaker 1: of these different equations to figure out how things like 377 00:24:06,840 --> 00:24:10,400 Speaker 1: muscle velocity or wind effects or atmospheric drag and other 378 00:24:10,480 --> 00:24:14,840 Speaker 1: factors affected shells, and they created what we're called firing 379 00:24:15,000 --> 00:24:18,440 Speaker 1: tables for various types of weaponry. But there was more 380 00:24:18,520 --> 00:24:22,000 Speaker 1: work than they had manpower or maybe I should say 381 00:24:22,000 --> 00:24:25,879 Speaker 1: woman power to do. So they needed some way to 382 00:24:26,040 --> 00:24:31,080 Speaker 1: do this work more quickly and efficiently, especially where you're 383 00:24:31,200 --> 00:24:35,800 Speaker 1: just taking small changes in a variable in order to 384 00:24:36,040 --> 00:24:38,959 Speaker 1: create another table, because otherwise you just have to run 385 00:24:39,000 --> 00:24:41,639 Speaker 1: all those different equations again. If you could do something 386 00:24:41,640 --> 00:24:44,520 Speaker 1: where you could just make a small change and run 387 00:24:44,560 --> 00:24:48,160 Speaker 1: that same problem and get the answer quickly, it would 388 00:24:48,840 --> 00:24:51,400 Speaker 1: save a lot of time. So there was a need 389 00:24:51,440 --> 00:24:54,920 Speaker 1: for computational engines that could do this work faster. Now 390 00:24:54,960 --> 00:24:59,359 Speaker 1: over at Harvard, engineers built a machine called the Mark one. 391 00:25:00,160 --> 00:25:03,359 Speaker 1: This was the first programmable digital computer made in the 392 00:25:03,440 --> 00:25:07,920 Speaker 1: United States, but one it was not a purely electronic machine. 393 00:25:08,359 --> 00:25:11,600 Speaker 1: It had some mechanical parts to it, including a large 394 00:25:11,640 --> 00:25:14,359 Speaker 1: central shaft that had to be turned by a an 395 00:25:14,400 --> 00:25:19,280 Speaker 1: actual motor and about uh, you know, five horsepower, and 396 00:25:19,359 --> 00:25:22,800 Speaker 1: it also had clutches and relays. It weighed five tons 397 00:25:22,960 --> 00:25:26,480 Speaker 1: and had five hundred miles of wiring inside of it. 398 00:25:26,800 --> 00:25:29,360 Speaker 1: The computer itself was eight feet tall and fifty one 399 00:25:29,400 --> 00:25:32,119 Speaker 1: ft long, and it read instructions on a reel of 400 00:25:32,160 --> 00:25:35,359 Speaker 1: paper tape with holes punched into it. So this was 401 00:25:35,400 --> 00:25:39,960 Speaker 1: like one really long punch card this roll of paper tape. 402 00:25:40,600 --> 00:25:43,479 Speaker 1: And it solved the problem that some other early computer 403 00:25:43,520 --> 00:25:46,320 Speaker 1: programmers ran into, which is, if you have a stack 404 00:25:46,400 --> 00:25:49,880 Speaker 1: of punch cards, and especially if you failed to number 405 00:25:50,080 --> 00:25:53,439 Speaker 1: your stack of punch cards and you dropped that stack, 406 00:25:54,200 --> 00:25:56,719 Speaker 1: then your program was completely out of order and it 407 00:25:56,760 --> 00:25:58,879 Speaker 1: was useless. In fact, it might be easier for you 408 00:25:58,960 --> 00:26:02,160 Speaker 1: to go back and e program using a fresh new 409 00:26:02,240 --> 00:26:04,520 Speaker 1: stack and a hole puncher. Then it would be to 410 00:26:04,520 --> 00:26:08,720 Speaker 1: try and figure out what order the cards had been in. Uh. 411 00:26:08,800 --> 00:26:11,840 Speaker 1: The moral of that story was always number your cards. 412 00:26:12,000 --> 00:26:15,000 Speaker 1: Although very few people have to worry about working with 413 00:26:15,040 --> 00:26:17,639 Speaker 1: punch cards these days, but if you do, always number 414 00:26:17,680 --> 00:26:20,159 Speaker 1: your cards. That way, if you do drop them, then 415 00:26:20,200 --> 00:26:22,880 Speaker 1: you just have to get them in the right sequence again. Uh, 416 00:26:22,920 --> 00:26:26,679 Speaker 1: and it's not as big of a headache. One of 417 00:26:26,720 --> 00:26:30,399 Speaker 1: the programmers of the Mark one was a woman named 418 00:26:30,520 --> 00:26:36,360 Speaker 1: Grace Hopper, who is also credited with creating the term debugging. Now, 419 00:26:36,359 --> 00:26:38,879 Speaker 1: the word bug had been in use for a while 420 00:26:39,240 --> 00:26:43,560 Speaker 1: to designate the idea of a design error or flaw 421 00:26:43,640 --> 00:26:47,640 Speaker 1: that needs to be corrected, whether it's in calculating machine 422 00:26:47,720 --> 00:26:52,119 Speaker 1: or something else. So bugs as a term for something 423 00:26:52,160 --> 00:26:55,280 Speaker 1: that's not right have been around for a while, but 424 00:26:55,560 --> 00:26:58,880 Speaker 1: Grace Hopper got the credit for debugging. She was involved 425 00:26:58,880 --> 00:27:02,680 Speaker 1: in a literal d bugging in which programmers pulled a 426 00:27:02,760 --> 00:27:08,040 Speaker 1: moth out of relay number seventy in the Mark two system. 427 00:27:08,200 --> 00:27:11,679 Speaker 1: We'll talk more about Grace Hopper in a little bit now. 428 00:27:12,520 --> 00:27:15,680 Speaker 1: Around the same time as the Mark one was being 429 00:27:15,720 --> 00:27:19,159 Speaker 1: put together over in the UK, scientists were building another 430 00:27:19,200 --> 00:27:24,960 Speaker 1: machine called the Colossus. This machine was a more specific 431 00:27:25,359 --> 00:27:28,879 Speaker 1: computational device. It wasn't a general purpose computer. It was 432 00:27:28,960 --> 00:27:33,080 Speaker 1: made specifically to break the cryptographic codes sent by German 433 00:27:33,200 --> 00:27:37,800 Speaker 1: officers during World War Two, including codes that were created 434 00:27:37,960 --> 00:27:44,280 Speaker 1: using the Enigma Machine, a fiendishly clever cryptographic device. Now 435 00:27:44,320 --> 00:27:47,600 Speaker 1: I have done a full episode about the Enigma, so 436 00:27:47,640 --> 00:27:49,640 Speaker 1: I'm not going to dwell on it very much here. 437 00:27:50,359 --> 00:27:55,080 Speaker 1: It is a fascinating gadget, and again, Colossus was a 438 00:27:55,080 --> 00:27:58,199 Speaker 1: specific purpose machine. It could not be reprogrammed to do 439 00:27:58,320 --> 00:28:01,720 Speaker 1: really anything else. So while it was fascinating, it also 440 00:28:01,800 --> 00:28:05,720 Speaker 1: had limitations by its very design. But we see here 441 00:28:05,760 --> 00:28:12,000 Speaker 1: that each individual piece of information can come in various forms, right, 442 00:28:12,080 --> 00:28:17,160 Speaker 1: and so especially with punch cards, is essentially on or off. Now, 443 00:28:17,160 --> 00:28:20,400 Speaker 1: the mechanical computer didn't take over the world, and digital 444 00:28:20,400 --> 00:28:23,880 Speaker 1: computers wouldn't really emerge until the nineteen forties and fifties, 445 00:28:23,920 --> 00:28:27,440 Speaker 1: and truly digital electronic computers wouldn't be there till the 446 00:28:27,480 --> 00:28:31,480 Speaker 1: nineteen forties and fifties. But many of the earliest computers 447 00:28:31,480 --> 00:28:34,200 Speaker 1: would use physical switches that you would set before you 448 00:28:34,240 --> 00:28:37,280 Speaker 1: would run any sort of program. So you didn't have 449 00:28:37,359 --> 00:28:41,239 Speaker 1: like a processor. You had all these these banks and 450 00:28:41,320 --> 00:28:43,360 Speaker 1: banks of switches, so you'd have to make sure that 451 00:28:43,400 --> 00:28:46,320 Speaker 1: each switch is in the correct position and all the 452 00:28:46,400 --> 00:28:49,760 Speaker 1: wires are plugged into the correct ports before you would 453 00:28:49,800 --> 00:28:55,120 Speaker 1: run a problem through the calculation machine. Now, if the 454 00:28:55,240 --> 00:29:01,080 Speaker 1: switches had two positions, that's essentially programming in binary zeros 455 00:29:01,120 --> 00:29:05,440 Speaker 1: and ones or or off and on, so that only 456 00:29:06,000 --> 00:29:09,920 Speaker 1: uh counts if the switches have just two positions. If 457 00:29:09,920 --> 00:29:12,600 Speaker 1: you put multiple positions for the switches, then you're not 458 00:29:12,720 --> 00:29:16,640 Speaker 1: using binary, you're using a different system. Uh. But a 459 00:29:16,720 --> 00:29:21,320 Speaker 1: lot of those early machines were using two position switches, 460 00:29:21,520 --> 00:29:23,760 Speaker 1: so they were binary machines. And it makes sense in 461 00:29:23,800 --> 00:29:26,760 Speaker 1: the digital world where on and off are the only 462 00:29:26,800 --> 00:29:30,959 Speaker 1: discrete values, and so in the beginning, programmers built code 463 00:29:31,120 --> 00:29:35,000 Speaker 1: in binary. For the most part, not every machine is 464 00:29:35,040 --> 00:29:38,480 Speaker 1: like this, but a lot of them were. In this world, 465 00:29:38,480 --> 00:29:41,640 Speaker 1: a single unit of information is the bit that is 466 00:29:41,680 --> 00:29:44,720 Speaker 1: either a zero or a one. And I'm sure you've 467 00:29:44,720 --> 00:29:47,680 Speaker 1: heard that eight bits are a bite. Now, that was 468 00:29:47,720 --> 00:29:51,440 Speaker 1: not arbitrarily chosen. There was a reason for eight bits 469 00:29:51,480 --> 00:29:55,600 Speaker 1: to make a bite, and it wasn't the only strategy 470 00:29:55,840 --> 00:29:59,320 Speaker 1: of making bites. There were other versions of the bite 471 00:29:59,400 --> 00:30:02,479 Speaker 1: that were six bits long or twelve bits long. So 472 00:30:02,520 --> 00:30:06,720 Speaker 1: how did eight bits becoming a bite become the standard? Well, honestly, 473 00:30:06,760 --> 00:30:08,960 Speaker 1: that part of our story happens a little bit later. 474 00:30:09,200 --> 00:30:12,160 Speaker 1: So in part two of Programming Languages, we are going 475 00:30:12,160 --> 00:30:16,920 Speaker 1: to revisit bits and bytes to explain why eight bits 476 00:30:17,040 --> 00:30:20,480 Speaker 1: make a byte. But I'm going to talk a lot 477 00:30:20,480 --> 00:30:23,600 Speaker 1: about binary in this particular episode, so that's why I 478 00:30:23,600 --> 00:30:26,440 Speaker 1: had to bring it up here. The next computer I'm 479 00:30:26,440 --> 00:30:31,000 Speaker 1: going to chat about, however, was not dependent upon binary. 480 00:30:31,240 --> 00:30:34,640 Speaker 1: It was dependent upon the decimal system that that base 481 00:30:34,800 --> 00:30:39,480 Speaker 1: ten system. And that computer was one that I mentioned 482 00:30:39,600 --> 00:30:43,840 Speaker 1: recently on a different episode of of Tech Stuff. It 483 00:30:43,960 --> 00:30:46,480 Speaker 1: was in the Weather Models episode. That would be the 484 00:30:46,520 --> 00:30:51,600 Speaker 1: Electronic Numerical Integrator and Computer or ANIAC. It's a very 485 00:30:51,600 --> 00:30:54,040 Speaker 1: early computer, one that I talked about in that Weather 486 00:30:54,080 --> 00:30:57,560 Speaker 1: Models episode just just previously, and it was the brainchild 487 00:30:57,680 --> 00:31:01,600 Speaker 1: of John Mauchley, and several other people worked on it 488 00:31:01,640 --> 00:31:05,120 Speaker 1: as well, obviously, but Marchley was the one who proposed 489 00:31:05,240 --> 00:31:09,000 Speaker 1: an all electronic calculating machine back in nineteen forty two, 490 00:31:09,520 --> 00:31:12,360 Speaker 1: ended up taking a few years to build. The United 491 00:31:12,360 --> 00:31:16,200 Speaker 1: States government, specifically the military, was very interested in this 492 00:31:16,320 --> 00:31:19,800 Speaker 1: because they wanted to have a more uh efficient machine 493 00:31:19,880 --> 00:31:23,160 Speaker 1: to do things like figure out those those firing tables. 494 00:31:24,160 --> 00:31:27,480 Speaker 1: But the ENIAC was not completed until after the conclusion 495 00:31:27,480 --> 00:31:30,480 Speaker 1: of World War Two in nineteen forty five. It was 496 00:31:30,520 --> 00:31:35,360 Speaker 1: the first fully electronic computer with no mechanical parts. The 497 00:31:35,400 --> 00:31:38,760 Speaker 1: electronic nature meant it could complete a calculation in a 498 00:31:38,880 --> 00:31:41,760 Speaker 1: fraction of the time it took the Mark one. So, 499 00:31:41,880 --> 00:31:45,120 Speaker 1: for example, a calculation with the mark one might take 500 00:31:45,280 --> 00:31:48,240 Speaker 1: six seconds for it to complete because it actually involves 501 00:31:48,440 --> 00:31:52,800 Speaker 1: moving physical pieces around in order to get to that calculation. However, 502 00:31:52,880 --> 00:31:56,360 Speaker 1: the ENIAC could do the same calculation in two point 503 00:31:56,440 --> 00:32:00,640 Speaker 1: eight thousands of a second. Then againting yet could only 504 00:32:00,640 --> 00:32:04,000 Speaker 1: store twenty numbers at a time, so there were limitations, 505 00:32:04,600 --> 00:32:08,280 Speaker 1: and for the first ten years of its existence, the 506 00:32:08,520 --> 00:32:14,120 Speaker 1: ENIAC ran more calculations than the totality of all calculations 507 00:32:14,160 --> 00:32:19,120 Speaker 1: performed by human beings before the ENIAC was built. So 508 00:32:19,280 --> 00:32:25,680 Speaker 1: from the dawn of time up to nine humans did 509 00:32:25,720 --> 00:32:28,680 Speaker 1: a certain number of calculations that were dwarfed by the 510 00:32:28,760 --> 00:32:33,760 Speaker 1: first ten years of Niac's operations. However, then it got 511 00:32:33,760 --> 00:32:37,120 Speaker 1: struck by lightning, which reminds us we probably shouldn't get 512 00:32:37,160 --> 00:32:40,320 Speaker 1: too cocky about this sort of thing. We might anger 513 00:32:40,440 --> 00:32:45,160 Speaker 1: thor So. NIAC didn't have a CPU like a modern computer. 514 00:32:45,280 --> 00:32:48,240 Speaker 1: To run a program through NIAC to have it solve 515 00:32:48,400 --> 00:32:51,160 Speaker 1: a problem, you would have to set physical switches that 516 00:32:51,280 --> 00:32:54,800 Speaker 1: had ten positions, and you'd had to plug wires into 517 00:32:54,800 --> 00:32:59,400 Speaker 1: specific ports Before running your calculation. So ANIAC was a big, 518 00:32:59,440 --> 00:33:02,240 Speaker 1: big machine, so big it was a hundred fifty feet 519 00:33:02,280 --> 00:33:07,440 Speaker 1: wide that's forty six meters wide, and it weighed thirty tons, 520 00:33:08,040 --> 00:33:09,720 Speaker 1: and it kind of looked like one of those old 521 00:33:09,760 --> 00:33:12,880 Speaker 1: timey phone operator banks where you'd pull a plug out 522 00:33:12,880 --> 00:33:15,400 Speaker 1: of one socket and place it into another. And some 523 00:33:15,480 --> 00:33:18,400 Speaker 1: of you probably still have no clue what I'm talking about, 524 00:33:18,480 --> 00:33:22,760 Speaker 1: but just imagine a big panel of sockets into which 525 00:33:23,200 --> 00:33:27,560 Speaker 1: you can insert cable plugs, and on one problem, you 526 00:33:27,600 --> 00:33:31,560 Speaker 1: would have a sample configuration of plugs in some of 527 00:33:31,600 --> 00:33:34,720 Speaker 1: those sockets. But let's say you want to run another problem. 528 00:33:34,720 --> 00:33:37,680 Speaker 1: That would mean having to unplug those first cables, plug 529 00:33:37,720 --> 00:33:41,280 Speaker 1: them into different sockets. Each problem would look totally different, 530 00:33:41,360 --> 00:33:44,840 Speaker 1: so you would have to change those physical connections as 531 00:33:44,880 --> 00:33:50,280 Speaker 1: well as the physical orientations of those ten position switches 532 00:33:50,360 --> 00:33:55,520 Speaker 1: that were there. Any act also could not store problems. 533 00:33:56,440 --> 00:34:00,440 Speaker 1: It didn't have a programmed storage capability. It was a 534 00:34:00,480 --> 00:34:05,440 Speaker 1: collection of electronic adding machines and other arithmetic units which 535 00:34:05,480 --> 00:34:08,760 Speaker 1: were originally controlled by a web of large electrical cables. 536 00:34:08,800 --> 00:34:11,680 Speaker 1: According to David Alan Greer in the Annals of the 537 00:34:11,840 --> 00:34:16,800 Speaker 1: History of Computing, the original programmers of ENIAC were Jene 538 00:34:17,000 --> 00:34:24,560 Speaker 1: Jennings Bartek, Francis Betty Snyder Holberton, Kathleen McNulty, Mauchley, Anton Nelly, 539 00:34:25,840 --> 00:34:31,840 Speaker 1: Marlon West, Scoff Meltzer, Ruth Lichtmann, Title Bomb, and Francis 540 00:34:32,120 --> 00:34:38,080 Speaker 1: Bilas Spence. In other words, the first programmers for ENIAC 541 00:34:38,239 --> 00:34:43,480 Speaker 1: were six women, the first programmers of the first fully 542 00:34:43,600 --> 00:34:48,720 Speaker 1: electronic computer. And I think it's really important to drive 543 00:34:48,760 --> 00:34:52,640 Speaker 1: that home because the very history of computer science is 544 00:34:52,680 --> 00:34:59,200 Speaker 1: reliant upon the contributions of women, and frequently, far too frequently, 545 00:34:59,400 --> 00:35:04,560 Speaker 1: in the world of computers, women are are disregarded or 546 00:35:04,760 --> 00:35:10,839 Speaker 1: thought of as being incapable of uh any real meaningful contribution, 547 00:35:11,080 --> 00:35:15,440 Speaker 1: when in fact, the very foundation of computation is on 548 00:35:15,520 --> 00:35:19,240 Speaker 1: the backs of women. Um As as for these six, 549 00:35:19,360 --> 00:35:25,799 Speaker 1: for years the Army failed to acknowledge their contributions. For 550 00:35:25,880 --> 00:35:29,919 Speaker 1: one thing, NIAC was classified and still is to this day, 551 00:35:30,040 --> 00:35:35,600 Speaker 1: classified information, and so their contributions weren't acknowledged as a 552 00:35:35,640 --> 00:35:39,160 Speaker 1: matter of national security for quite some time. But since 553 00:35:39,200 --> 00:35:42,600 Speaker 1: then they have been acknowledged, and I'm glad their story 554 00:35:42,680 --> 00:35:44,560 Speaker 1: is now available for people to hear. It's a pretty 555 00:35:44,560 --> 00:35:48,239 Speaker 1: incredible one and maybe someday I'll do a more specific 556 00:35:48,320 --> 00:35:52,359 Speaker 1: episode about ENIAC and the men and women who were 557 00:35:52,440 --> 00:35:58,600 Speaker 1: instrumental in getting it going. But clearly they're programming didn't 558 00:35:58,680 --> 00:36:01,600 Speaker 1: involve much of a programming language, at least not in 559 00:36:01,640 --> 00:36:04,680 Speaker 1: the way we think of programming languages today. They were 560 00:36:04,800 --> 00:36:08,719 Speaker 1: all looking at the very complicated decimal systems. They were 561 00:36:08,719 --> 00:36:11,840 Speaker 1: setting things up for running a single problem. If you 562 00:36:11,840 --> 00:36:13,799 Speaker 1: wanted to change the problem, you had to change that 563 00:36:14,080 --> 00:36:18,359 Speaker 1: entire set up, that physical setup of the computer. Now, 564 00:36:18,400 --> 00:36:22,000 Speaker 1: the ENIAC team invited another person, John von Neuman, over 565 00:36:22,120 --> 00:36:23,839 Speaker 1: to take a look at it, and I talked about 566 00:36:23,920 --> 00:36:27,359 Speaker 1: von Neuman in the Weather Models episode as well, and 567 00:36:27,640 --> 00:36:31,840 Speaker 1: together the ani ACT team and von Neuman were able 568 00:36:31,920 --> 00:36:35,719 Speaker 1: to kind of come up with the the premise for 569 00:36:35,760 --> 00:36:39,960 Speaker 1: the successor to ani ACT. This would become the EDVAC, 570 00:36:40,360 --> 00:36:44,239 Speaker 1: which was the first stored program computer. EDVAC stands for 571 00:36:44,360 --> 00:36:49,640 Speaker 1: Electronic discrete variable automatic computer, and the stored program aspect 572 00:36:49,640 --> 00:36:52,279 Speaker 1: meant you didn't have to change the physical wiring of 573 00:36:52,320 --> 00:36:55,640 Speaker 1: the device itself. The program would be stored inside the computer, 574 00:36:56,040 --> 00:37:00,080 Speaker 1: not in the arrangement of all its components, and unlike NIA, 575 00:37:00,520 --> 00:37:03,480 Speaker 1: ed VAC would be based on the binary system instead 576 00:37:03,520 --> 00:37:07,439 Speaker 1: of the decimal system. The binary system simplified things because 577 00:37:07,480 --> 00:37:10,920 Speaker 1: you only needed a switch with two positions. And again, 578 00:37:10,960 --> 00:37:13,960 Speaker 1: the decimal based machine meant that you needed switches with 579 00:37:14,000 --> 00:37:18,719 Speaker 1: ten positions. Since you can represent numbers using binary, then 580 00:37:19,360 --> 00:37:23,760 Speaker 1: you know, Leibnitz showed us that centuries earlier, it made 581 00:37:23,840 --> 00:37:27,120 Speaker 1: sense to go with that system. Now, one person who 582 00:37:27,160 --> 00:37:32,400 Speaker 1: realized this and who really nailed it was Claude Shannon, 583 00:37:32,680 --> 00:37:36,000 Speaker 1: another mathematician and someone that I will probably do a 584 00:37:36,000 --> 00:37:38,680 Speaker 1: full episode on again in the future. I actually do 585 00:37:38,760 --> 00:37:42,160 Speaker 1: have a Claude Shannon episode in the archives as well. 586 00:37:42,440 --> 00:37:47,279 Speaker 1: Shannon wrote The Mathematical Theory of Communication in nine to 587 00:37:47,320 --> 00:37:50,880 Speaker 1: set the foundation for the theoretical limits of communication between 588 00:37:50,920 --> 00:37:54,759 Speaker 1: humans and machines. The identified the bit as the fundamental 589 00:37:54,920 --> 00:37:58,760 Speaker 1: unit of information and thus the basic unit of computation. 590 00:37:59,160 --> 00:38:01,719 Speaker 1: For this, Shannon is often cited as one of the 591 00:38:01,760 --> 00:38:06,000 Speaker 1: fathers of computer science. Since the computers could be reprogrammed 592 00:38:06,000 --> 00:38:08,759 Speaker 1: without making physical changes to the machine, it meant that 593 00:38:08,800 --> 00:38:12,359 Speaker 1: you had to do that reprogramming through code, and so 594 00:38:12,400 --> 00:38:15,799 Speaker 1: we finally get into some of the programming languages. Now. 595 00:38:15,800 --> 00:38:19,839 Speaker 1: One of the earliest was called shortcode, originally known as 596 00:38:19,920 --> 00:38:23,000 Speaker 1: brief code, and proposed by Mauchley, you know, was the 597 00:38:23,280 --> 00:38:27,239 Speaker 1: one of the guys behind Eniac. So how is shortcode 598 00:38:27,239 --> 00:38:31,400 Speaker 1: a programming language different from machine code, the language computers 599 00:38:31,440 --> 00:38:36,560 Speaker 1: actually quote unquote understand. Well, we'll find out after we 600 00:38:36,680 --> 00:38:46,480 Speaker 1: take a quick break to thank our sponsor. Alright, So 601 00:38:46,680 --> 00:38:51,120 Speaker 1: how was shortcode different from machine code? Well, shortcode allowed 602 00:38:51,160 --> 00:38:55,480 Speaker 1: programmers to work out problems using mathematical expressions instead of 603 00:38:55,640 --> 00:38:59,280 Speaker 1: machine instructions, so you didn't have to just have everything 604 00:38:59,320 --> 00:39:01,799 Speaker 1: out in zero and ones in binary. You could take 605 00:39:01,840 --> 00:39:06,280 Speaker 1: a couple of shortcuts. It was developed for the UNIVAC computer, 606 00:39:06,440 --> 00:39:09,040 Speaker 1: the first mass produced computer, and also the work of 607 00:39:09,080 --> 00:39:14,319 Speaker 1: Eckert and Mauchley of NIAC fame. This removed programmers from 608 00:39:14,400 --> 00:39:17,319 Speaker 1: the same level of language as the one that the 609 00:39:17,360 --> 00:39:20,359 Speaker 1: machines were using. So you have machine level language that 610 00:39:20,440 --> 00:39:24,240 Speaker 1: refers to the specific language the machine itself quote unquote 611 00:39:24,320 --> 00:39:28,680 Speaker 1: understands the language it uses to process the problems that 612 00:39:28,719 --> 00:39:34,359 Speaker 1: you submit to it. So you can program machines at 613 00:39:34,400 --> 00:39:37,840 Speaker 1: the machine level. But it's hard to do. It tends 614 00:39:37,920 --> 00:39:41,480 Speaker 1: to be tedious and difficult, and it's really easy to 615 00:39:41,600 --> 00:39:45,400 Speaker 1: introduce an error into the programs because it's not very intuitive, 616 00:39:45,400 --> 00:39:49,000 Speaker 1: particularly if you're talking about programming in binary. If you're 617 00:39:49,000 --> 00:39:52,240 Speaker 1: just looking at a bunch of zeros and ones, very quickly, 618 00:39:52,320 --> 00:39:55,520 Speaker 1: you can lose track of what it actually represents. And 619 00:39:55,600 --> 00:39:58,000 Speaker 1: if you put in a zero or a one where 620 00:39:58,040 --> 00:40:00,360 Speaker 1: it should have been the other, everything turns to popsy 621 00:40:00,400 --> 00:40:03,040 Speaker 1: turvy and you've got bugs in your program. You have 622 00:40:03,080 --> 00:40:04,960 Speaker 1: to go back and figure out where the mistake is, 623 00:40:05,360 --> 00:40:07,239 Speaker 1: and then you have to fix it, and that one 624 00:40:07,320 --> 00:40:09,879 Speaker 1: fix may not be enough. You may have to end 625 00:40:09,960 --> 00:40:12,560 Speaker 1: up going down the line and fixing everything that comes 626 00:40:12,600 --> 00:40:17,640 Speaker 1: after it. Beyond machine level languages are things like short code. 627 00:40:18,000 --> 00:40:21,760 Speaker 1: That's that next step up. It's a very very small 628 00:40:21,840 --> 00:40:26,359 Speaker 1: step up. It's actually a low level programming language, which 629 00:40:26,400 --> 00:40:29,040 Speaker 1: means the level of the language is not that far 630 00:40:29,120 --> 00:40:33,960 Speaker 1: off from the machine code itself. It's easier for humans 631 00:40:34,000 --> 00:40:36,360 Speaker 1: to use than pure machine code, but it's not that 632 00:40:36,440 --> 00:40:41,960 Speaker 1: far removed from actual machine code. Another low level programming 633 00:40:42,040 --> 00:40:45,560 Speaker 1: language would be an assembly language, and there are many 634 00:40:45,600 --> 00:40:52,759 Speaker 1: assembly languages. These use simple mnemonic instructions. Assemblers translate this 635 00:40:52,840 --> 00:40:57,680 Speaker 1: into machine code, and because different machines rely on different architectures, 636 00:40:58,040 --> 00:41:02,400 Speaker 1: there are many assembly language is. Essentially, each architecture needs 637 00:41:02,400 --> 00:41:06,120 Speaker 1: its own assembly language. The program that turns that is 638 00:41:06,320 --> 00:41:09,240 Speaker 1: of course called the assembler. The assembly language into machine 639 00:41:09,239 --> 00:41:13,360 Speaker 1: code is your assembler. So in the old days, we 640 00:41:13,400 --> 00:41:18,280 Speaker 1: didn't have a common architecture across computer systems. Computer systems 641 00:41:18,320 --> 00:41:23,960 Speaker 1: were very specifically designed by different manufacturers and often for 642 00:41:24,080 --> 00:41:30,480 Speaker 1: very specific purposes, so there was no compatibility across different machines, 643 00:41:31,040 --> 00:41:33,920 Speaker 1: and your assemblers had to be peculiar to whatever the 644 00:41:34,000 --> 00:41:38,319 Speaker 1: architecture was of that machine that you were working on. 645 00:41:38,280 --> 00:41:42,480 Speaker 1: One ninety two, Grace Hopper, you remember her well. She 646 00:41:42,600 --> 00:41:45,759 Speaker 1: built the first compiler, and it was called the a 647 00:41:46,040 --> 00:41:50,160 Speaker 1: dash O compiler. A compiler's job is to take code 648 00:41:50,160 --> 00:41:53,560 Speaker 1: that's written in a programming language and convert it into 649 00:41:53,680 --> 00:41:56,560 Speaker 1: machine codes. It's sort of like a translator. It takes 650 00:41:56,600 --> 00:42:00,359 Speaker 1: the programming language something that humans can work with, and 651 00:42:00,400 --> 00:42:03,799 Speaker 1: turns it into machine code, something that machines can work with. 652 00:42:04,360 --> 00:42:07,520 Speaker 1: Hopper's compiler was pretty simple and was an effective way 653 00:42:07,520 --> 00:42:11,400 Speaker 1: for Hopper too, As she once said, be lazy. She 654 00:42:11,480 --> 00:42:14,680 Speaker 1: wanted to stop being a programmer and returned to being 655 00:42:14,719 --> 00:42:17,719 Speaker 1: a mathematician, so she wanted to find ways that she 656 00:42:17,760 --> 00:42:22,040 Speaker 1: could generate sort of shortcuts to doing very basic tasks. 657 00:42:22,080 --> 00:42:26,560 Speaker 1: And that's when she built this basic compiler. Copper took 658 00:42:26,560 --> 00:42:29,400 Speaker 1: all these subroutines that she had been using over the years, 659 00:42:29,480 --> 00:42:31,840 Speaker 1: and she put them on a reel of paper tape, 660 00:42:32,239 --> 00:42:36,040 Speaker 1: labeling each subroutine with a call number. Then when she 661 00:42:36,080 --> 00:42:39,080 Speaker 1: needed to run a specific subroutine, she could refer to 662 00:42:39,120 --> 00:42:41,839 Speaker 1: it by the appropriate call number, and the machine could 663 00:42:41,880 --> 00:42:45,239 Speaker 1: find the corresponding section on the paper tape and run 664 00:42:45,320 --> 00:42:49,160 Speaker 1: the subroutine. Now, according to Hopper, people didn't realize the 665 00:42:49,239 --> 00:42:52,520 Speaker 1: significance of her contribution right away. Many people were still 666 00:42:52,560 --> 00:42:56,320 Speaker 1: thinking of computers as glorified calculators, so these were machines 667 00:42:56,360 --> 00:42:59,760 Speaker 1: that could do math, but not much else. Hopper says, 668 00:42:59,760 --> 00:43:03,239 Speaker 1: she you foresaw more complicated programs, but they would need 669 00:43:03,280 --> 00:43:06,600 Speaker 1: things like compilers to offload some of that laborious work 670 00:43:06,680 --> 00:43:10,239 Speaker 1: to make those programs practical. So Hopper was saying, what 671 00:43:10,280 --> 00:43:13,359 Speaker 1: I'm doing here is opening up new opportunities for us 672 00:43:13,400 --> 00:43:16,319 Speaker 1: to use computers. And she said she ran into a 673 00:43:16,360 --> 00:43:19,120 Speaker 1: lot of resistance where people just didn't see it that way. 674 00:43:19,160 --> 00:43:22,160 Speaker 1: They had been used to programming these things by hand, 675 00:43:22,360 --> 00:43:26,680 Speaker 1: working either at machine code level or just barely above 676 00:43:26,760 --> 00:43:30,480 Speaker 1: machine code level, and so it was too complicated to 677 00:43:30,520 --> 00:43:33,319 Speaker 1: consider using it for anything other than just crunching some 678 00:43:33,440 --> 00:43:36,880 Speaker 1: numbers and running some equations. Well, she and her colleagues 679 00:43:37,200 --> 00:43:41,719 Speaker 1: worked on improving this approach and two generations of compilers later. 680 00:43:42,120 --> 00:43:45,200 Speaker 1: With the A two compiler, it became one of the 681 00:43:45,200 --> 00:43:47,960 Speaker 1: first compilers to get extensive use in the computer world, 682 00:43:48,280 --> 00:43:50,879 Speaker 1: and that is what laid the foundation for higher level 683 00:43:50,960 --> 00:43:56,200 Speaker 1: programming languages that fell along that same pathway. At this stage, 684 00:43:56,200 --> 00:44:00,840 Speaker 1: computer languages were mostly reliant on symbols, not on words, 685 00:44:01,200 --> 00:44:03,480 Speaker 1: and Hopper saw need to change that as well. She 686 00:44:03,520 --> 00:44:06,160 Speaker 1: wanted to create a system which programs could be written 687 00:44:06,200 --> 00:44:10,600 Speaker 1: in English. Letters, she reasoned, were really just symbols, so 688 00:44:10,640 --> 00:44:12,960 Speaker 1: they should be something that could be interpreted by a 689 00:44:12,960 --> 00:44:17,080 Speaker 1: compiler and then converted into machine code. So she made 690 00:44:17,120 --> 00:44:20,360 Speaker 1: further adjustments to the compiler she had created, and she 691 00:44:20,440 --> 00:44:24,920 Speaker 1: built something called the flow Matic compiler f L O 692 00:44:25,280 --> 00:44:29,239 Speaker 1: W DASH M A t I C. The flow Matic. Well, 693 00:44:29,280 --> 00:44:32,360 Speaker 1: this set the stage for an important programming language called Cobal. 694 00:44:32,800 --> 00:44:36,960 Speaker 1: But before Cobal, we have to talk about four tran 695 00:44:37,840 --> 00:44:41,600 Speaker 1: So over at IBM, there was a programmer named John 696 00:44:41,680 --> 00:44:44,759 Speaker 1: Backus who was leading a group who are designing a 697 00:44:44,800 --> 00:44:47,880 Speaker 1: programming language and their group had a lofty goal. They 698 00:44:47,880 --> 00:44:50,960 Speaker 1: wanted to create a high level programming language. So in 699 00:44:50,960 --> 00:44:53,400 Speaker 1: other words, they wanted a language that's much closer to 700 00:44:53,640 --> 00:44:57,080 Speaker 1: how we humans tend to communicate with each other, rather 701 00:44:57,160 --> 00:45:01,040 Speaker 1: than the types of languages that machines rely on. Assembly 702 00:45:01,120 --> 00:45:04,440 Speaker 1: language is a low level language, and it's still pretty 703 00:45:04,440 --> 00:45:06,759 Speaker 1: close to machine code, and it's best used for low 704 00:45:06,840 --> 00:45:10,399 Speaker 1: level applications. IBM one is something that would be much 705 00:45:10,560 --> 00:45:13,560 Speaker 1: easier to use from a programming perspective, something that's much 706 00:45:13,640 --> 00:45:18,000 Speaker 1: more robust. For TRAN was the solution, and it stands 707 00:45:18,080 --> 00:45:23,040 Speaker 1: for formula translation. Some folks call it a scientific language. 708 00:45:23,040 --> 00:45:26,520 Speaker 1: It's largely used in the scientific field. For TRAN was 709 00:45:26,640 --> 00:45:29,799 Speaker 1: machine independent as well, which meant that it could run 710 00:45:29,800 --> 00:45:33,680 Speaker 1: on different computers and not just a single type. So 711 00:45:33,960 --> 00:45:36,280 Speaker 1: it wasn't that they had developed this for a particular 712 00:45:36,320 --> 00:45:38,719 Speaker 1: type of IBM computer and that's the only thing it 713 00:45:38,719 --> 00:45:41,160 Speaker 1: would run on. It was meant to run on different 714 00:45:41,160 --> 00:45:43,600 Speaker 1: types of machines, and it was also meant to be 715 00:45:43,680 --> 00:45:47,280 Speaker 1: easy to learn and suitable for a wide variety of uses. 716 00:45:47,920 --> 00:45:51,840 Speaker 1: The tradeoff for high level languages is that it takes 717 00:45:51,880 --> 00:45:56,279 Speaker 1: longer to compile them into machine code, so it's it 718 00:45:56,360 --> 00:46:01,520 Speaker 1: creates a delay in executing the code. You end up 719 00:46:01,520 --> 00:46:05,000 Speaker 1: making it easier to build the code for humans, but 720 00:46:05,120 --> 00:46:08,360 Speaker 1: it's harder for the machine itself to read the code. 721 00:46:08,400 --> 00:46:13,160 Speaker 1: The compiler has to translate more and more, so if 722 00:46:13,160 --> 00:46:16,080 Speaker 1: the language is easier to program in, you can make 723 00:46:16,200 --> 00:46:20,799 Speaker 1: up the gap of that decrease in efficiency for executing 724 00:46:20,880 --> 00:46:23,719 Speaker 1: the code, and that was the case with Fortran. The 725 00:46:23,840 --> 00:46:27,480 Speaker 1: high level nature increased the execution time by about twenty 726 00:46:28,080 --> 00:46:32,920 Speaker 1: so it added more time for it to execute the 727 00:46:33,000 --> 00:46:37,680 Speaker 1: code using the compiler, but it increased the efficiency of 728 00:46:37,719 --> 00:46:44,640 Speaker 1: actual programmers by five percent, so programmers were writing programs 729 00:46:43,680 --> 00:46:48,480 Speaker 1: faster than they were before. They were making up way 730 00:46:48,520 --> 00:46:51,880 Speaker 1: more time because of the ease the relative ease of 731 00:46:51,920 --> 00:46:55,560 Speaker 1: programming and for tran as opposed to programming and say 732 00:46:55,920 --> 00:46:59,600 Speaker 1: assembly language, so it took longer to execute the code, 733 00:47:00,000 --> 00:47:01,760 Speaker 1: but that was more than balanced out by how quickly 734 00:47:01,800 --> 00:47:05,799 Speaker 1: programmers could actually write code. So while back Is Group 735 00:47:05,840 --> 00:47:08,799 Speaker 1: developed for Trand in nineteen fifty four, it wasn't until 736 00:47:08,880 --> 00:47:12,520 Speaker 1: nineteen fifty seven they got a commercial release for Trand 737 00:47:12,560 --> 00:47:15,399 Speaker 1: would become the programming language for the scientific community, which 738 00:47:15,440 --> 00:47:18,279 Speaker 1: is why it's still used in weather modeling applications, as 739 00:47:18,360 --> 00:47:22,240 Speaker 1: I mentioned in our previous episode. Alright, so back to COBAL. 740 00:47:22,600 --> 00:47:25,600 Speaker 1: The development of COBAL took place right around the time 741 00:47:25,680 --> 00:47:29,160 Speaker 1: the third generation of four trand was being developed. COBAL 742 00:47:29,239 --> 00:47:32,560 Speaker 1: would become important because it helped unify efforts in programming. 743 00:47:32,640 --> 00:47:35,680 Speaker 1: Up to that point, all those computers were pretty much 744 00:47:35,760 --> 00:47:38,800 Speaker 1: using their own specific methods of programming. So you couldn't 745 00:47:38,800 --> 00:47:41,440 Speaker 1: build a program meant for one system and poured it 746 00:47:41,480 --> 00:47:45,520 Speaker 1: directly over to another. You'd have to go about rebuilding 747 00:47:45,520 --> 00:47:49,560 Speaker 1: your entire program following the architecture and constraints of your 748 00:47:49,640 --> 00:47:54,440 Speaker 1: new machines architecture UM or design, I should say. And 749 00:47:54,480 --> 00:47:56,839 Speaker 1: so in the late nineteen fifties, some computer scientists set 750 00:47:56,880 --> 00:47:59,000 Speaker 1: out to create a programming language that could run on 751 00:47:59,040 --> 00:48:03,840 Speaker 1: different computers, and that group was then Conference on Data 752 00:48:03,920 --> 00:48:08,160 Speaker 1: Systems Languages or CODACILL c O d A S y L. 753 00:48:09,320 --> 00:48:13,040 Speaker 1: Members of the group included government employees, computer science experts 754 00:48:13,040 --> 00:48:17,279 Speaker 1: from various universities, and members of various industries. So by 755 00:48:17,280 --> 00:48:19,520 Speaker 1: the end of nineteen fifty nine they had settled on 756 00:48:19,560 --> 00:48:22,880 Speaker 1: the specifications of their programming language, and they called it 757 00:48:22,960 --> 00:48:27,800 Speaker 1: the Common Business Oriented Language or COBAL for short. It 758 00:48:27,800 --> 00:48:31,360 Speaker 1: would officially be published in January nineteen sixty after receiving 759 00:48:31,400 --> 00:48:35,360 Speaker 1: approval from an executive committee. How the Department of Defense 760 00:48:36,040 --> 00:48:38,880 Speaker 1: was really behind the effort. They were really pushing for 761 00:48:38,920 --> 00:48:41,239 Speaker 1: it because they were one of the few agencies in 762 00:48:41,280 --> 00:48:45,760 Speaker 1: the world that actually possessed computer systems from different manufacturers, 763 00:48:45,760 --> 00:48:48,200 Speaker 1: So they were running into this problem of having all 764 00:48:48,239 --> 00:48:50,759 Speaker 1: these different computer systems that were incompatible with each other. 765 00:48:51,120 --> 00:48:54,600 Speaker 1: Most other places didn't have that problem because they didn't 766 00:48:54,640 --> 00:48:57,880 Speaker 1: have the money to own that many different systems. They 767 00:48:57,920 --> 00:49:01,600 Speaker 1: were all in with a single system, but a unifying 768 00:49:01,680 --> 00:49:04,520 Speaker 1: language would mean they could run programs on multiple machines 769 00:49:04,560 --> 00:49:09,480 Speaker 1: to handle lots of boring stuff like data management, tracking 770 00:49:09,520 --> 00:49:14,919 Speaker 1: information for inventory, payroll administration, and other tasks. The US 771 00:49:15,000 --> 00:49:19,480 Speaker 1: government would eventually require that all computers sold or least 772 00:49:19,600 --> 00:49:23,719 Speaker 1: to government agencies had to be able to run COBOL software, 773 00:49:23,960 --> 00:49:27,880 Speaker 1: which ensured the languages adoption. It's very sad that was 774 00:49:27,960 --> 00:49:32,120 Speaker 1: Cobal and not Cobold's the little critters from Dudgeons and 775 00:49:32,200 --> 00:49:36,279 Speaker 1: Dragons that end up being low level monsters, but such 776 00:49:36,280 --> 00:49:40,239 Speaker 1: as life now. The custodian of COBAL is the American 777 00:49:40,320 --> 00:49:44,719 Speaker 1: National Standards Institute, which develops and publishes new COBAL standards. 778 00:49:45,000 --> 00:49:48,160 Speaker 1: COBAL saw the most use in government and business applications, 779 00:49:48,160 --> 00:49:53,319 Speaker 1: whereas for TRAN was being used in scientific applications. Now, 780 00:49:53,320 --> 00:49:56,000 Speaker 1: with COBAL and for TRAN, we are in the earliest 781 00:49:56,120 --> 00:49:58,840 Speaker 1: days of computer programming, and I think this is a 782 00:49:58,880 --> 00:50:02,600 Speaker 1: good place for us to include today's episode. In our 783 00:50:02,640 --> 00:50:05,920 Speaker 1: next episode, we're gonna look at how those programming languages 784 00:50:05,960 --> 00:50:09,319 Speaker 1: and a couple of others arose over the years and 785 00:50:09,360 --> 00:50:13,040 Speaker 1: gave birth to different programming languages. We're gonna look at 786 00:50:13,160 --> 00:50:16,480 Speaker 1: how these different languages are different, why are they different, 787 00:50:16,600 --> 00:50:18,880 Speaker 1: what is it that they are able to do because 788 00:50:18,920 --> 00:50:23,160 Speaker 1: of those differences, and kind of explain the various families 789 00:50:23,239 --> 00:50:26,799 Speaker 1: of programming languages and why they exist. So make sure 790 00:50:26,800 --> 00:50:29,000 Speaker 1: you tune into the next episode to learn more. And 791 00:50:29,000 --> 00:50:32,520 Speaker 1: then we're gonna turn our glance to some other form 792 00:50:32,560 --> 00:50:37,680 Speaker 1: of technology, something that doesn't involve supercomputers and programming languages, 793 00:50:37,719 --> 00:50:41,799 Speaker 1: at least not on the technical end, because eventually I 794 00:50:41,840 --> 00:50:44,439 Speaker 1: gotta stop talking about math or my brains will leak 795 00:50:44,480 --> 00:50:47,520 Speaker 1: out of my ears. If you guys have suggestions for 796 00:50:47,600 --> 00:50:50,200 Speaker 1: future episodes of tech Stuff, you should let me know 797 00:50:50,560 --> 00:50:53,520 Speaker 1: by sending me an email. You could scream out the window, 798 00:50:54,040 --> 00:50:57,279 Speaker 1: but I often can't hear you. The email address for 799 00:50:57,320 --> 00:51:00,000 Speaker 1: our show is tech Stuff at how stuffworks dot com 800 00:51:00,080 --> 00:51:02,280 Speaker 1: um or you can drop us a line on Twitter 801 00:51:02,480 --> 00:51:04,759 Speaker 1: or Facebook. The handle it both of those is tech 802 00:51:04,800 --> 00:51:08,200 Speaker 1: Stuff hs W. Remember you can go to twitch dot 803 00:51:08,239 --> 00:51:11,920 Speaker 1: tv slash tech stuff and watch me record these shows live. 804 00:51:12,320 --> 00:51:15,960 Speaker 1: Every Wednesday and Friday, I go live and I record 805 00:51:16,080 --> 00:51:18,120 Speaker 1: episodes of tech Stuff. You get to talk with me, 806 00:51:18,400 --> 00:51:20,880 Speaker 1: I chat with the chat room. We have a grand 807 00:51:20,920 --> 00:51:22,560 Speaker 1: old time, and you also get to see all the 808 00:51:22,560 --> 00:51:25,799 Speaker 1: outtakes that don't make it into the final version. So 809 00:51:25,880 --> 00:51:28,160 Speaker 1: go to twitch dot tv slash tech stuff to check 810 00:51:28,160 --> 00:51:29,480 Speaker 1: out the schedule, and I hope to see you in 811 00:51:29,520 --> 00:51:38,680 Speaker 1: there and I'll talk to you again really soon for 812 00:51:38,840 --> 00:51:41,160 Speaker 1: more on this and thousands of other topics. Because it 813 00:51:41,239 --> 00:51:51,640 Speaker 1: has staff works dot com