1 00:00:04,440 --> 00:00:12,400 Speaker 1: Text with technology with tech Stuff from stuff works dot com. 2 00:00:12,440 --> 00:00:15,600 Speaker 1: Hey there, and welcome to tech Stuff. I am your host, 3 00:00:15,760 --> 00:00:19,320 Speaker 1: Jonathan Strickland. I'm a senior writer with how stuff works 4 00:00:19,360 --> 00:00:22,680 Speaker 1: dot com, where we try to demystify the universe one 5 00:00:22,760 --> 00:00:26,079 Speaker 1: topic at a time, and we are going to continue 6 00:00:26,440 --> 00:00:29,920 Speaker 1: our story about the history of programming languages. In our 7 00:00:29,960 --> 00:00:33,160 Speaker 1: previous episode, we looked at the history of computers leading 8 00:00:33,240 --> 00:00:36,559 Speaker 1: up to the development of two of the earliest programming languages, 9 00:00:36,600 --> 00:00:40,239 Speaker 1: for Tran and Kobol. Technically there was another language that 10 00:00:40,440 --> 00:00:44,360 Speaker 1: is considered to be the earliest or the second earliest 11 00:00:44,720 --> 00:00:47,880 Speaker 1: um and really one more that's technically earlier than both 12 00:00:47,920 --> 00:00:52,360 Speaker 1: of those as well, but it wasn't known about outside 13 00:00:52,360 --> 00:00:54,360 Speaker 1: of Germany for the longest time. We'll cover all of 14 00:00:54,400 --> 00:00:56,840 Speaker 1: that in this episode, but I'll have a slightly different 15 00:00:56,880 --> 00:00:58,880 Speaker 1: structure from the last one. So in the last one, 16 00:00:59,360 --> 00:01:02,840 Speaker 1: I try to stay on a roughly chronological path, going 17 00:01:02,920 --> 00:01:06,679 Speaker 1: year by year talking about developments as they happened in 18 00:01:06,720 --> 00:01:11,319 Speaker 1: actual history. But with programming languages that can get really confusing, 19 00:01:11,400 --> 00:01:13,520 Speaker 1: and it also requires lots of jumping back and forth 20 00:01:13,560 --> 00:01:18,000 Speaker 1: between the different families of programming languages because while certain 21 00:01:18,080 --> 00:01:21,600 Speaker 1: new ones were starting to emerge, older ones were continuing 22 00:01:21,640 --> 00:01:24,880 Speaker 1: to evolve, So I might end up saying, well, in 23 00:01:25,120 --> 00:01:30,720 Speaker 1: nineteen seven, de Bah this programming language hit its fifth version, 24 00:01:30,760 --> 00:01:33,479 Speaker 1: whereas this other one came out for the first time, 25 00:01:33,560 --> 00:01:36,399 Speaker 1: and this other one stopped being used, and it just 26 00:01:36,440 --> 00:01:39,440 Speaker 1: gets really messy. So I'm going to probably concentrate more 27 00:01:39,520 --> 00:01:43,000 Speaker 1: on specific programming languages and specific groups and follow their 28 00:01:43,040 --> 00:01:46,120 Speaker 1: paths down before making a jump back to a different language. 29 00:01:46,520 --> 00:01:49,559 Speaker 1: I'll also do my best to explain some of the 30 00:01:49,640 --> 00:01:54,680 Speaker 1: general concepts in programming. Um. There are way too many 31 00:01:54,720 --> 00:01:59,720 Speaker 1: individual programming languages to go into detail in a single episode. 32 00:01:59,720 --> 00:02:02,160 Speaker 1: It would take lots of episodes to talk about all 33 00:02:02,160 --> 00:02:06,600 Speaker 1: the different programming languages, and also considering that most of 34 00:02:06,640 --> 00:02:10,359 Speaker 1: them have multiple versions or generations of the programming language, 35 00:02:10,400 --> 00:02:15,760 Speaker 1: some of which are radically different from preceding versions, it 36 00:02:15,880 --> 00:02:17,760 Speaker 1: just would be too difficult for me to go in 37 00:02:17,880 --> 00:02:20,440 Speaker 1: for each one. So we're gonna We're gonna do our 38 00:02:20,480 --> 00:02:24,440 Speaker 1: best and cover it from a more high level perspective. Now, 39 00:02:24,440 --> 00:02:26,919 Speaker 1: in the last episode, I did mention a guy named 40 00:02:26,960 --> 00:02:31,480 Speaker 1: Conrad Zeus who developed his own computers in Germany independently 41 00:02:31,520 --> 00:02:33,640 Speaker 1: of any of the work going on anywhere else. He 42 00:02:33,800 --> 00:02:38,800 Speaker 1: also independently made his own programming language called plunka Cool, 43 00:02:39,400 --> 00:02:43,639 Speaker 1: but this was virtually unknown outside of Germany for several decades. 44 00:02:43,919 --> 00:02:47,760 Speaker 1: The programming language is remarkably prescient, but had no real 45 00:02:47,800 --> 00:02:50,320 Speaker 1: effect on the rest of the evolution of programming languages 46 00:02:50,400 --> 00:02:54,200 Speaker 1: because no one in the Western world, and really Germany's 47 00:02:54,200 --> 00:02:55,960 Speaker 1: in the western world, no one in that North America 48 00:02:56,040 --> 00:02:58,160 Speaker 1: knew about it, and that was where a lot of 49 00:02:58,160 --> 00:03:01,600 Speaker 1: this early work in programming languages was coming from. No 50 00:03:01,639 --> 00:03:03,480 Speaker 1: One in the UK knew about either, and that's where 51 00:03:03,480 --> 00:03:05,799 Speaker 1: a lot of the other work was coming from. So 52 00:03:06,480 --> 00:03:09,079 Speaker 1: it was an amazing achievement and I want to make 53 00:03:09,120 --> 00:03:12,640 Speaker 1: sure that we acknowledge it, but it's not something that 54 00:03:12,680 --> 00:03:16,239 Speaker 1: ties into the rest of our story directly. One other 55 00:03:16,320 --> 00:03:18,160 Speaker 1: thing I should mention is that in the last episode 56 00:03:18,160 --> 00:03:20,160 Speaker 1: are really led up to the development of four Tran 57 00:03:20,280 --> 00:03:24,160 Speaker 1: and Cobal, which were two important early programming languages. Four 58 00:03:24,200 --> 00:03:28,760 Speaker 1: Trand was and is still used in scientific applications, while 59 00:03:28,840 --> 00:03:32,040 Speaker 1: Cobal became the programming language of choice for businesses. But 60 00:03:32,040 --> 00:03:34,320 Speaker 1: there are other languages that also popped up around that 61 00:03:34,400 --> 00:03:37,240 Speaker 1: same time that are unrelated to either of those, so 62 00:03:37,320 --> 00:03:40,960 Speaker 1: they don't branch off from four tran or COBAL. They 63 00:03:41,000 --> 00:03:45,840 Speaker 1: are independent programming languages, and one of those is Lisp. Technically, 64 00:03:45,880 --> 00:03:49,280 Speaker 1: it was, at least by most accounts, the second programming 65 00:03:49,360 --> 00:03:52,040 Speaker 1: language if you put aside Zeus's work and you look 66 00:03:52,080 --> 00:03:55,160 Speaker 1: at four trand as being the first programming language, LISP 67 00:03:55,360 --> 00:03:59,600 Speaker 1: if you're looking at pure publication years is the second one, 68 00:04:00,280 --> 00:04:04,360 Speaker 1: and the name stands for List Processor Lisp l I 69 00:04:04,760 --> 00:04:08,600 Speaker 1: s P. It was developed by John McCarthy at Dartmouth 70 00:04:08,720 --> 00:04:11,840 Speaker 1: and M I. T in the mid nineteen fifties. The 71 00:04:11,920 --> 00:04:15,480 Speaker 1: first reference manual was published in nineteen sixty and it's 72 00:04:15,480 --> 00:04:19,080 Speaker 1: a programming language that is based on recursive functions, which 73 00:04:19,160 --> 00:04:22,560 Speaker 1: is a function that appears in its own definition, and 74 00:04:22,600 --> 00:04:25,320 Speaker 1: this sets it apart from four trand. In the Ford 75 00:04:25,320 --> 00:04:28,200 Speaker 1: Trend programming language, you can view a program as a 76 00:04:28,200 --> 00:04:30,880 Speaker 1: sequence of steps that a computer is supposed to take, 77 00:04:30,960 --> 00:04:33,200 Speaker 1: sort of like a to do list, like do this, 78 00:04:33,400 --> 00:04:36,000 Speaker 1: then do that, then do that, etcetera, etcetera, all the 79 00:04:36,040 --> 00:04:39,640 Speaker 1: way down the line. A Lisp program is a function 80 00:04:39,760 --> 00:04:44,160 Speaker 1: applied to data. It can also use its parenthetical notation 81 00:04:44,279 --> 00:04:48,400 Speaker 1: to represent actual data, which meant Lisp programs could operate 82 00:04:48,480 --> 00:04:51,760 Speaker 1: on other programs as data and it would become one 83 00:04:51,800 --> 00:04:55,200 Speaker 1: of the most important programming languages for artificial intelligence, partly 84 00:04:55,320 --> 00:04:59,240 Speaker 1: because uh, it was a a learning program that a 85 00:04:59,240 --> 00:05:01,520 Speaker 1: lot of people were using in order to do research 86 00:05:01,520 --> 00:05:05,080 Speaker 1: and development in ai UM and it was a computer 87 00:05:05,120 --> 00:05:08,040 Speaker 1: program capable of learning things that could be based on 88 00:05:08,040 --> 00:05:12,200 Speaker 1: on Lisp as a self modifying program because I had 89 00:05:12,240 --> 00:05:15,440 Speaker 1: that recursive nature. That's what allows it to be self modifying. 90 00:05:16,160 --> 00:05:18,719 Speaker 1: One interesting aspect of Lisp is that when you type 91 00:05:18,720 --> 00:05:22,280 Speaker 1: out the code, you nest functions inside of parentheses, So 92 00:05:22,360 --> 00:05:26,040 Speaker 1: you might end up having a whole mess of parentheses 93 00:05:26,080 --> 00:05:28,919 Speaker 1: housing a series of functions that would be performed on 94 00:05:28,960 --> 00:05:31,520 Speaker 1: a specific data set. And it sounds very similar to 95 00:05:31,520 --> 00:05:34,080 Speaker 1: the way I tend to write. I like parenthetical asides, 96 00:05:34,320 --> 00:05:38,800 Speaker 1: perhaps a bit too much. Lisp was a more specialized 97 00:05:38,920 --> 00:05:42,839 Speaker 1: language and more abstract than other high level languages. And 98 00:05:42,839 --> 00:05:45,920 Speaker 1: remember a high level language is one that is easier 99 00:05:45,960 --> 00:05:50,039 Speaker 1: for humans to comprehend. It is further removed from the 100 00:05:50,120 --> 00:05:54,200 Speaker 1: machine code that's actually running on the computer hardware itself, 101 00:05:54,680 --> 00:05:57,239 Speaker 1: and then you have some sort of process in between 102 00:05:57,279 --> 00:06:00,279 Speaker 1: the high level language and the machine code that makes 103 00:06:00,320 --> 00:06:03,720 Speaker 1: it understandable to the machines. So humans are not great 104 00:06:03,760 --> 00:06:07,000 Speaker 1: and understanding machine code. It is pretty hard to program 105 00:06:07,000 --> 00:06:11,280 Speaker 1: and not impossible, but very challenging, and machines can't understand 106 00:06:11,520 --> 00:06:15,000 Speaker 1: high level languages. Uh. The languages are our way of 107 00:06:15,040 --> 00:06:19,120 Speaker 1: making it easier for us to work with computers. Now, 108 00:06:19,560 --> 00:06:21,760 Speaker 1: LISP sees a great deal of application in the world 109 00:06:21,760 --> 00:06:25,640 Speaker 1: of artificial intelligence, but it's not used extensively outside of 110 00:06:25,640 --> 00:06:29,440 Speaker 1: that field. That doesn't mean that no one else uses it, 111 00:06:29,440 --> 00:06:32,200 Speaker 1: it's just not as common as other forms of programming 112 00:06:32,240 --> 00:06:37,200 Speaker 1: languages for other applications besides AI. Lisp would inspire Seymour, 113 00:06:37,279 --> 00:06:40,839 Speaker 1: Papert and m I. T Research, a researcher rather to 114 00:06:40,920 --> 00:06:44,840 Speaker 1: develop another language called Logo l O g O and 115 00:06:44,880 --> 00:06:47,320 Speaker 1: that was meant to be an accessible programming language that 116 00:06:47,400 --> 00:06:50,480 Speaker 1: kids could learn to code in. It used graphics and 117 00:06:50,520 --> 00:06:54,640 Speaker 1: a simple set of rules to encourage learning. Another offshoot 118 00:06:54,680 --> 00:06:57,840 Speaker 1: of LISP was Scheme, which is frequently used in college 119 00:06:57,920 --> 00:07:00,120 Speaker 1: level coding classes to teach some of the basic on 120 00:07:00,160 --> 00:07:04,320 Speaker 1: steps of programming. So you'll find that among programming languages 121 00:07:04,600 --> 00:07:08,279 Speaker 1: there are several that were invented specifically to help people 122 00:07:08,440 --> 00:07:14,440 Speaker 1: understand the concepts that go into various coding philosophies or paradigms. 123 00:07:14,680 --> 00:07:18,880 Speaker 1: There are different approaches to coding, and some programming languages 124 00:07:19,080 --> 00:07:24,360 Speaker 1: are are more appropriate for certain philosophies than others. Uh, 125 00:07:24,360 --> 00:07:26,040 Speaker 1: there are a lot of languages that you can use 126 00:07:26,240 --> 00:07:29,000 Speaker 1: various approaches to programming. You don't have to, you're not 127 00:07:29,080 --> 00:07:31,720 Speaker 1: nailed down to a very specific approach. But there are 128 00:07:31,760 --> 00:07:35,640 Speaker 1: some that just lend themselves better to a certain process 129 00:07:35,840 --> 00:07:38,760 Speaker 1: versus another, And a lot of them were designed by 130 00:07:38,880 --> 00:07:43,080 Speaker 1: educators who wanted to encourage people to start thinking in 131 00:07:43,160 --> 00:07:48,040 Speaker 1: ways that would develop into good programming practices, and then 132 00:07:48,080 --> 00:07:53,640 Speaker 1: they would graduate on to using more robust programming languages. 133 00:07:53,680 --> 00:07:56,800 Speaker 1: There are actually some programming languages that aren't really meant 134 00:07:56,920 --> 00:08:00,800 Speaker 1: for real world use. They're really meant just as a 135 00:08:00,880 --> 00:08:04,480 Speaker 1: means of understanding the basics of programming itself and getting 136 00:08:04,520 --> 00:08:08,880 Speaker 1: a grasp on computer science. Another programming language that emerged 137 00:08:09,040 --> 00:08:13,200 Speaker 1: shortly after Lisp for Trand and cobol was a p L. 138 00:08:13,720 --> 00:08:16,400 Speaker 1: And a p L is an acronym, and it or 139 00:08:16,440 --> 00:08:19,720 Speaker 1: initialism if you prefer. Really it's an initialism and it 140 00:08:19,800 --> 00:08:25,560 Speaker 1: stands for a programming language. It seems pretty straightforward. You'll 141 00:08:25,600 --> 00:08:28,040 Speaker 1: notice that some folks like to name their programming languages 142 00:08:28,800 --> 00:08:34,120 Speaker 1: very generic things. The creator of a p L was 143 00:08:34,280 --> 00:08:37,760 Speaker 1: Kenneth e Iverson. A p L used symbols to represent 144 00:08:37,840 --> 00:08:41,000 Speaker 1: functions and operators, and the nice thing about that is 145 00:08:41,040 --> 00:08:44,000 Speaker 1: that it helped make the code more efficient and concise. 146 00:08:44,080 --> 00:08:47,239 Speaker 1: You didn't need as much code to represent the functions 147 00:08:47,280 --> 00:08:50,840 Speaker 1: you wanted to run with any given program. So one 148 00:08:50,880 --> 00:08:53,640 Speaker 1: branch of a p L is sharp a p L. 149 00:08:54,600 --> 00:08:56,480 Speaker 1: This was a variant that was designed by the company 150 00:08:56,559 --> 00:08:59,880 Speaker 1: I P. Sharp Associates, and it added some more functional 151 00:09:00,200 --> 00:09:02,800 Speaker 1: to a p L enough to be considered its own 152 00:09:02,880 --> 00:09:05,880 Speaker 1: programming language. So not just a variation, it's really its 153 00:09:05,880 --> 00:09:09,920 Speaker 1: own language and its own right. Programmers would create other 154 00:09:10,040 --> 00:09:14,400 Speaker 1: programming languages that did not depend directly on these early ones, 155 00:09:14,440 --> 00:09:18,079 Speaker 1: but they served. These early languages served as the foundation 156 00:09:18,160 --> 00:09:21,960 Speaker 1: for several others. In some cases they inspired people to 157 00:09:22,040 --> 00:09:26,520 Speaker 1: make new programming languages, and in other cases they themselves 158 00:09:26,559 --> 00:09:31,360 Speaker 1: actually were the foundation for specific uh new implementations of 159 00:09:31,400 --> 00:09:35,960 Speaker 1: programming language. There's so many variations that I can't list 160 00:09:36,000 --> 00:09:38,199 Speaker 1: them all even in a series of podcasts unless I 161 00:09:38,240 --> 00:09:40,240 Speaker 1: were just to rattle off names, and that would have 162 00:09:40,320 --> 00:09:42,560 Speaker 1: no meaning whatsoever. So I'll focus on some of the 163 00:09:42,600 --> 00:09:45,720 Speaker 1: more prominent languages and their variants, and we'll start with 164 00:09:45,800 --> 00:09:49,120 Speaker 1: for TRAN, the programming language made it much easier to 165 00:09:49,120 --> 00:09:52,120 Speaker 1: program calculations for computers, and it removed the need to 166 00:09:52,160 --> 00:09:55,960 Speaker 1: work in machine code or assembly language. Four trans launched 167 00:09:56,000 --> 00:10:00,160 Speaker 1: in nineteen fifty seven. The basic language received several updates. 168 00:10:00,280 --> 00:10:03,000 Speaker 1: For Tran two came out in nineteen fifty eight and 169 00:10:03,040 --> 00:10:05,840 Speaker 1: introduced some new features, such as the ability of programmers 170 00:10:05,840 --> 00:10:09,080 Speaker 1: to create subroutines and functions, which meant they could use 171 00:10:09,120 --> 00:10:12,880 Speaker 1: the same code repeatedly in future programs or within the 172 00:10:12,920 --> 00:10:15,360 Speaker 1: same program, and it saved a lot of time there 173 00:10:15,400 --> 00:10:18,160 Speaker 1: was no need to reinvent the wheel with every implementation. 174 00:10:19,000 --> 00:10:23,400 Speaker 1: Other updates would follow. The first truly machine independent version 175 00:10:23,520 --> 00:10:26,600 Speaker 1: of four trand came out in nineteen sixty one. It 176 00:10:26,679 --> 00:10:29,400 Speaker 1: was four TRAN four. This was the first version that 177 00:10:29,400 --> 00:10:32,480 Speaker 1: could run on different computer architectures, so that the same 178 00:10:32,480 --> 00:10:36,480 Speaker 1: program created in four TRAN four would run across different machines. 179 00:10:36,760 --> 00:10:40,120 Speaker 1: But this wasn't yet a standardized language unrelated to any 180 00:10:40,160 --> 00:10:44,560 Speaker 1: specific type of computer. It still was limited to a 181 00:10:44,640 --> 00:10:48,640 Speaker 1: family of architectures, but that would change with the next 182 00:10:48,760 --> 00:10:52,439 Speaker 1: version of four TRAN in nineteen sixty two, you had 183 00:10:52,440 --> 00:10:56,319 Speaker 1: a group called the American Standards Association, and they created 184 00:10:56,400 --> 00:10:59,520 Speaker 1: a set of standards for the next round of programming languages, 185 00:10:59,720 --> 00:11:03,719 Speaker 1: and the goal was to make them architecture agnostic. They 186 00:11:03,720 --> 00:11:07,200 Speaker 1: didn't want programmers to have to reinvent their programs with 187 00:11:07,360 --> 00:11:11,880 Speaker 1: every different architecture of computers out there. To do so 188 00:11:11,960 --> 00:11:14,079 Speaker 1: would just mean that you would write the same program 189 00:11:14,160 --> 00:11:16,320 Speaker 1: and then have to rewrite it and rewrite it again 190 00:11:16,480 --> 00:11:20,839 Speaker 1: for every single different architecture you encountered. The language to 191 00:11:20,920 --> 00:11:25,040 Speaker 1: emerge from that process was four TRANS sixty six. Meanwhile, 192 00:11:25,280 --> 00:11:28,520 Speaker 1: other programming languages, including several I haven't mentioned yet, we're 193 00:11:28,880 --> 00:11:32,760 Speaker 1: leaving for TRAND behind because really for TRAND was still 194 00:11:32,840 --> 00:11:35,160 Speaker 1: kind of limited in what it could do. It was 195 00:11:35,240 --> 00:11:37,560 Speaker 1: good at what it could do, but it couldn't it 196 00:11:37,640 --> 00:11:42,520 Speaker 1: was it was like a very relatively narrow band of applications. 197 00:11:42,840 --> 00:11:46,719 Speaker 1: And over the course of several years, computer programmers work 198 00:11:46,800 --> 00:11:51,000 Speaker 1: to build out more functionality into four TRAN, including creating 199 00:11:51,040 --> 00:11:54,560 Speaker 1: the ability to make true block if statements and direct 200 00:11:54,600 --> 00:11:59,439 Speaker 1: access input output functions. That result was four TRANS seventy seven, 201 00:11:59,440 --> 00:12:03,079 Speaker 1: which became the most widely used programming language in the world, 202 00:12:03,440 --> 00:12:05,679 Speaker 1: and there are still examples of code written in four 203 00:12:05,720 --> 00:12:10,920 Speaker 1: trans seventy seven today. Forty years later, four Tran ninety 204 00:12:11,080 --> 00:12:13,400 Speaker 1: was the next version of Pure four Tran. It was 205 00:12:13,440 --> 00:12:16,800 Speaker 1: created to again address some of the shortcomings of Fortran 206 00:12:16,920 --> 00:12:19,839 Speaker 1: compared to other programming languages, such as the ability to 207 00:12:19,880 --> 00:12:23,520 Speaker 1: allocate memory dynamically, and it was published as a standard 208 00:12:23,520 --> 00:12:26,760 Speaker 1: by the International Standards Organization in n and there was 209 00:12:26,800 --> 00:12:31,000 Speaker 1: one more version in N called four Tran I s 210 00:12:31,040 --> 00:12:35,079 Speaker 1: O for Tran also spawned a few other languages. One 211 00:12:35,160 --> 00:12:38,480 Speaker 1: notable family was the al Goal series of languages a 212 00:12:38,679 --> 00:12:41,720 Speaker 1: l G O L. Like four Tran, al Goal founded 213 00:12:41,720 --> 00:12:46,280 Speaker 1: its greatest applications and scientific calculations, that's really where it 214 00:12:46,400 --> 00:12:50,040 Speaker 1: was used for the most part. It introduced a block 215 00:12:50,160 --> 00:12:53,719 Speaker 1: structure in which coders could insert a block of statements 216 00:12:54,400 --> 00:12:57,120 Speaker 1: for the scope of variables within the code, and it 217 00:12:57,200 --> 00:13:00,880 Speaker 1: also incorporated recursion, which is the ability of a procedure 218 00:13:00,920 --> 00:13:05,320 Speaker 1: to call upon itself. UH. It never really reached commercial success, 219 00:13:05,320 --> 00:13:09,120 Speaker 1: but it had a profound impact on people developing their 220 00:13:09,120 --> 00:13:12,920 Speaker 1: own programming languages. So in other words, it wasn't so 221 00:13:13,360 --> 00:13:18,239 Speaker 1: compelling as to get universal adoption, but it definitely inspired 222 00:13:18,280 --> 00:13:21,520 Speaker 1: a lot of programmers to give it a world and 223 00:13:21,600 --> 00:13:25,200 Speaker 1: to then incorporate some of those elements into their own 224 00:13:25,280 --> 00:13:29,640 Speaker 1: programming languages later on. Next, we've got pl slash one 225 00:13:29,679 --> 00:13:32,880 Speaker 1: PL one programming language. This was from George Raydon, a 226 00:13:33,200 --> 00:13:37,160 Speaker 1: computer scientist who held degrees from Brooklyn College, Columbia University 227 00:13:37,160 --> 00:13:40,120 Speaker 1: in the City University of New York. This was a 228 00:13:40,160 --> 00:13:43,280 Speaker 1: real hybrid language. At borrowed elements from four TRAN, from 229 00:13:43,360 --> 00:13:47,040 Speaker 1: cobol and from ALGOL. The name stands for programming language 230 00:13:47,480 --> 00:13:52,240 Speaker 1: PL one. It's pretty straightforward. IBM would take PL one 231 00:13:52,640 --> 00:13:55,800 Speaker 1: and mush mush mush it into p LS. This would 232 00:13:55,880 --> 00:13:58,800 Speaker 1: remain ibm s programming language of choice until the C 233 00:13:59,120 --> 00:14:02,120 Speaker 1: programming langue wages came along a bit later. The PL 234 00:14:02,240 --> 00:14:06,440 Speaker 1: one format allowed for more complex processes without the need 235 00:14:06,600 --> 00:14:09,679 Speaker 1: to build up an enormous amount of code, So in 236 00:14:09,679 --> 00:14:12,040 Speaker 1: other words, you could use the code to execute a 237 00:14:12,040 --> 00:14:15,320 Speaker 1: bunch of different operations rather than building each of those 238 00:14:15,320 --> 00:14:19,400 Speaker 1: operations up from more basic components. It was not only 239 00:14:19,520 --> 00:14:23,120 Speaker 1: used in scientific and business applications, but also data processing, 240 00:14:23,240 --> 00:14:26,160 Speaker 1: so we're starting to get into some more general purpose 241 00:14:26,240 --> 00:14:30,200 Speaker 1: computing at this point. Keep in mind, the computers well 242 00:14:30,280 --> 00:14:33,440 Speaker 1: before the personal computing age. They tend to be very 243 00:14:33,480 --> 00:14:37,760 Speaker 1: specific use machines. They weren't necessarily meant to do lots 244 00:14:37,800 --> 00:14:41,760 Speaker 1: of different things. They were built for specific purposes, and 245 00:14:41,840 --> 00:14:45,400 Speaker 1: therefore a lot of these programming languages were tuned to 246 00:14:45,440 --> 00:14:47,600 Speaker 1: those specific purposes. You didn't have a lot of general 247 00:14:47,600 --> 00:14:51,200 Speaker 1: purpose computing in those early days. But that's it for 248 00:14:51,280 --> 00:14:54,920 Speaker 1: the direct For trend descendants, we'll talk about Cobal just 249 00:14:55,000 --> 00:14:58,400 Speaker 1: really briefly. Like for trand Cobal would evolve over time. 250 00:14:58,440 --> 00:15:01,480 Speaker 1: There were versions like Cobal six D one and see 251 00:15:01,480 --> 00:15:05,480 Speaker 1: Cobal seventy four and see cobalight five O O or 252 00:15:05,680 --> 00:15:09,360 Speaker 1: object oriented Cobal. I'll talk about object oriented programming a 253 00:15:09,360 --> 00:15:12,160 Speaker 1: bit later in this episode to explain what that actually means. 254 00:15:12,720 --> 00:15:16,160 Speaker 1: And Cobal two thousand fourteen. According to the Gartner Group, 255 00:15:16,480 --> 00:15:20,640 Speaker 1: eighty per cent of the world's business runs off Cobal code, 256 00:15:21,280 --> 00:15:23,920 Speaker 1: so very influential, and keeping in mind it was like 257 00:15:24,000 --> 00:15:27,520 Speaker 1: the third big programming language to emerge, it's pretty impressive. 258 00:15:28,200 --> 00:15:31,600 Speaker 1: So that's the basics for the foundation of programming languages 259 00:15:31,680 --> 00:15:34,000 Speaker 1: early early on, and the next section I'm going to 260 00:15:34,080 --> 00:15:36,720 Speaker 1: look at some of the big programming languages that followed 261 00:15:37,200 --> 00:15:41,240 Speaker 1: and what those are intended to do. Why are these 262 00:15:41,560 --> 00:15:44,920 Speaker 1: programming languages in the first place, Once we established them, 263 00:15:44,920 --> 00:15:47,160 Speaker 1: why did we need more? We'll look at that in 264 00:15:47,160 --> 00:15:49,920 Speaker 1: the second but first let's take a quick break to 265 00:15:50,080 --> 00:15:59,800 Speaker 1: thank our sponsor. You know, I I noticed that I've 266 00:16:00,040 --> 00:16:03,160 Speaker 1: used the word basic to describe a lot of things 267 00:16:03,200 --> 00:16:05,320 Speaker 1: in this podcast, so I guess it's a good time 268 00:16:05,360 --> 00:16:10,240 Speaker 1: to talk about the programming language Basic. Thomas E. Kurtz 269 00:16:10,280 --> 00:16:14,760 Speaker 1: and John G. Kimeny, students at Dartmouth College that designed 270 00:16:14,840 --> 00:16:17,360 Speaker 1: the programming language, and they had the intent to create 271 00:16:17,400 --> 00:16:20,960 Speaker 1: one that was easier to code in the earlier languages. 272 00:16:21,360 --> 00:16:25,120 Speaker 1: So before Basic, most languages required a pretty strong grasp 273 00:16:25,280 --> 00:16:29,640 Speaker 1: on mathematics. So in fact, mostly early programmers and computer 274 00:16:29,720 --> 00:16:33,120 Speaker 1: scientists like Grace Hopper, you know, the person who we 275 00:16:33,280 --> 00:16:38,720 Speaker 1: credit with coining the term computer bug. She was a mathematician. 276 00:16:39,760 --> 00:16:42,000 Speaker 1: In fact, that was what her interest was in. She 277 00:16:42,080 --> 00:16:44,800 Speaker 1: didn't want to be known as a programmer. She was 278 00:16:44,920 --> 00:16:47,520 Speaker 1: interested in mathematics, and that's what a lot of the 279 00:16:47,560 --> 00:16:52,360 Speaker 1: earlier programs were. They were mathematicians. But not everyone can 280 00:16:52,440 --> 00:16:56,400 Speaker 1: have that sort of grasp on very complex mathematics. So 281 00:16:56,480 --> 00:16:59,160 Speaker 1: basics design meant that you didn't have to be a 282 00:16:59,200 --> 00:17:02,160 Speaker 1: math whiz to learn how to build a program. I'm 283 00:17:02,200 --> 00:17:05,320 Speaker 1: personally thankful for it because that's the programming language I 284 00:17:05,400 --> 00:17:08,679 Speaker 1: have the most direct experience in. The language did have 285 00:17:08,800 --> 00:17:11,960 Speaker 1: some hefty level limitations, but it wasn't designed to be 286 00:17:12,000 --> 00:17:14,080 Speaker 1: the last language you'd ever need to learn. It was 287 00:17:14,119 --> 00:17:18,680 Speaker 1: really to get you into programming. The name stands for something. 288 00:17:18,680 --> 00:17:20,920 Speaker 1: It's not just a word, it's actually again, and it's 289 00:17:20,960 --> 00:17:26,040 Speaker 1: an acronym. It's beginners all purpose symbolic instruction Code Basic. 290 00:17:26,880 --> 00:17:29,879 Speaker 1: The initial version of Basic debut in nineteen sixty four. 291 00:17:30,440 --> 00:17:33,920 Speaker 1: A decade later, Bill Gates and Paul Allen would offer 292 00:17:34,000 --> 00:17:36,440 Speaker 1: up a version of Basic as one of the first 293 00:17:36,440 --> 00:17:41,120 Speaker 1: products from a little company they founded called Microsoft. Basic 294 00:17:41,280 --> 00:17:44,600 Speaker 1: was also the language of the Apple too. That particular 295 00:17:44,720 --> 00:17:48,800 Speaker 1: variant was integer Basic, but these were all from the 296 00:17:48,840 --> 00:17:52,200 Speaker 1: same family. Basic taught students how to think in terms 297 00:17:52,200 --> 00:17:55,840 Speaker 1: of logical progression to design code that would produce a 298 00:17:55,840 --> 00:17:59,399 Speaker 1: desired result. Typically, you'd begin each line of code with 299 00:17:59,480 --> 00:18:02,359 Speaker 1: a number to designate that line, to say what order 300 00:18:02,760 --> 00:18:05,480 Speaker 1: that goes in as far as the order of operations. 301 00:18:05,760 --> 00:18:09,000 Speaker 1: So for example, I might type one zero to mark 302 00:18:09,080 --> 00:18:12,240 Speaker 1: the first line of code, and then I would follow 303 00:18:12,280 --> 00:18:14,000 Speaker 1: that with some sort of command, so would be one 304 00:18:14,080 --> 00:18:18,600 Speaker 1: zero space something for example cls, which would stand for 305 00:18:18,640 --> 00:18:21,240 Speaker 1: a clear screen. Then I could follow that with the 306 00:18:21,280 --> 00:18:23,680 Speaker 1: next line of code, which would begin with a new 307 00:18:23,760 --> 00:18:27,639 Speaker 1: number like to zero to zero. I might write print 308 00:18:28,160 --> 00:18:31,600 Speaker 1: that tells the computer that the next thing I type 309 00:18:31,640 --> 00:18:34,760 Speaker 1: in it will need to display or print out in 310 00:18:34,840 --> 00:18:38,800 Speaker 1: some way, and I might put in quotation marks hello world. 311 00:18:39,000 --> 00:18:42,639 Speaker 1: It's very common way of learning programming is doing your 312 00:18:42,680 --> 00:18:45,560 Speaker 1: first Hello World. Then I could type in one more 313 00:18:45,600 --> 00:18:48,200 Speaker 1: line of code, and I type in the number three 314 00:18:48,280 --> 00:18:52,080 Speaker 1: zero's for our third line, and type in the word 315 00:18:52,400 --> 00:18:55,640 Speaker 1: end to end that program. So if I ran that program, 316 00:18:55,640 --> 00:18:58,000 Speaker 1: it would clear the screen and then print the line 317 00:18:58,040 --> 00:19:01,200 Speaker 1: hello world, and that's all it would do. Obviously, this 318 00:19:01,400 --> 00:19:03,959 Speaker 1: is not the extent of what you can do in Basic. 319 00:19:04,040 --> 00:19:06,560 Speaker 1: If it were, it would be a pretty useless language. 320 00:19:07,119 --> 00:19:10,159 Speaker 1: You could add other elements, such as if then statements. 321 00:19:10,400 --> 00:19:13,120 Speaker 1: You might ask for an input from the user, such 322 00:19:13,160 --> 00:19:15,920 Speaker 1: as a line of code that prints the sentence would 323 00:19:15,920 --> 00:19:18,480 Speaker 1: you like to learn about tech stuff? And then another 324 00:19:18,560 --> 00:19:20,919 Speaker 1: line that presents either a yes or no option to 325 00:19:20,960 --> 00:19:22,919 Speaker 1: the user. You know, you could type a Y or 326 00:19:22,960 --> 00:19:26,600 Speaker 1: an N. Your if then statement would then have a 327 00:19:26,640 --> 00:19:31,240 Speaker 1: branching pathway. So within your code you would have different 328 00:19:31,720 --> 00:19:35,560 Speaker 1: lines that would represent what happens depending upon what the 329 00:19:35,680 --> 00:19:38,240 Speaker 1: user did. So, if the user typed in a why, 330 00:19:38,840 --> 00:19:42,480 Speaker 1: you might then have a bit of information about tech stuff, 331 00:19:42,480 --> 00:19:45,600 Speaker 1: saying it's a totally awesome podcast hosted by a groovy 332 00:19:45,680 --> 00:19:49,879 Speaker 1: dude named Jonathan Strickland. If you typed in and it 333 00:19:49,880 --> 00:19:52,840 Speaker 1: would say, what's your problem? Man? You want to know 334 00:19:52,880 --> 00:19:55,120 Speaker 1: about tech stuff? It's pretty awesome. I think you need 335 00:19:55,160 --> 00:19:57,560 Speaker 1: to know more. If you typed anything else, you might 336 00:19:57,600 --> 00:20:00,000 Speaker 1: get a message saying I'm sorry, man, I totally don't understand. 337 00:20:00,040 --> 00:20:02,760 Speaker 1: What the heck are you trying to say? Those are 338 00:20:02,760 --> 00:20:07,000 Speaker 1: those if then statements. If user types this, then go 339 00:20:07,280 --> 00:20:13,080 Speaker 1: to this other line of code. Very basic idea, no 340 00:20:13,200 --> 00:20:19,560 Speaker 1: pun intended. In programming in the late nineteen sixties, a 341 00:20:19,680 --> 00:20:23,960 Speaker 1: new programming language created a revolution in programming. And it's 342 00:20:23,960 --> 00:20:28,200 Speaker 1: an important language, though one that I think most non 343 00:20:28,280 --> 00:20:33,359 Speaker 1: programmers haven't really heard about. It's small Talk. That's something 344 00:20:33,400 --> 00:20:36,280 Speaker 1: that any computer science major has likely studied at some 345 00:20:36,359 --> 00:20:39,840 Speaker 1: time or another. But why was it so important? Well, 346 00:20:39,880 --> 00:20:43,119 Speaker 1: small Talk created a new paradigm for programming. It was 347 00:20:43,160 --> 00:20:46,919 Speaker 1: an object oriented programming language, and it began as a 348 00:20:47,080 --> 00:20:51,080 Speaker 1: project at Xerox Park. Now that's the same research and 349 00:20:51,080 --> 00:20:54,240 Speaker 1: development branch of Xerox that brought us tons of other 350 00:20:54,280 --> 00:20:57,760 Speaker 1: stuff like the graphic user interface, the Gooey or the 351 00:20:57,840 --> 00:21:02,440 Speaker 1: virtual machine or the mouse. So what exactly does it 352 00:21:02,560 --> 00:21:05,760 Speaker 1: mean to be an object oriented programming language? What is 353 00:21:05,960 --> 00:21:09,920 Speaker 1: an object in programming? Well, an object can be many things, 354 00:21:09,960 --> 00:21:14,280 Speaker 1: including a function, a data structure, a method, or a variable. 355 00:21:14,800 --> 00:21:18,320 Speaker 1: Small Talk incorporated this concept and also included a related 356 00:21:18,359 --> 00:21:22,720 Speaker 1: one called inheritance, which allows you to make a subclass 357 00:21:22,760 --> 00:21:25,760 Speaker 1: of an existing object. This is useful if you're working 358 00:21:25,760 --> 00:21:29,760 Speaker 1: with variations on the same basic structure. An inherited subclass 359 00:21:30,040 --> 00:21:34,400 Speaker 1: will initially be identical to its parent class. So let's 360 00:21:34,400 --> 00:21:37,960 Speaker 1: say you've created an object and then you create uh 361 00:21:38,240 --> 00:21:40,840 Speaker 1: and you know, use inheritance to create a subclass of 362 00:21:40,880 --> 00:21:42,919 Speaker 1: that object. At first, it's going to be identical, but 363 00:21:42,960 --> 00:21:47,040 Speaker 1: then you can make changes to the subclass that will 364 00:21:47,160 --> 00:21:51,480 Speaker 1: not change the parent class of object. And from a 365 00:21:51,520 --> 00:21:55,000 Speaker 1: programming perspective, this makes it easier to build complex code 366 00:21:55,119 --> 00:21:58,120 Speaker 1: because you don't need to rebuild the entire object each time. 367 00:21:58,160 --> 00:22:01,240 Speaker 1: You just take that you make a subclass or you 368 00:22:01,800 --> 00:22:07,480 Speaker 1: implement a subclass that you've already established. Objects have two 369 00:22:07,880 --> 00:22:10,240 Speaker 1: facets to them. They have a state and they have 370 00:22:10,280 --> 00:22:14,120 Speaker 1: a behavior. So it's easier to think about this if 371 00:22:14,119 --> 00:22:17,159 Speaker 1: we use an analogy and think about a physical object, 372 00:22:17,520 --> 00:22:20,040 Speaker 1: which can be anything. Really, the analogy can be a 373 00:22:20,080 --> 00:22:23,760 Speaker 1: little helpful. Let's let's think of a cat. First. Of all, 374 00:22:23,800 --> 00:22:25,720 Speaker 1: cats would hate it if I called them objects, but 375 00:22:25,960 --> 00:22:29,440 Speaker 1: for this purpose we're gonna refer to cats. So cats 376 00:22:29,480 --> 00:22:33,679 Speaker 1: have numerous states. One state for a cat might be 377 00:22:33,840 --> 00:22:36,160 Speaker 1: the breed of cats. So is it a tabby cat? 378 00:22:36,320 --> 00:22:39,239 Speaker 1: Is it a Persian? Is it a Siamese? That is 379 00:22:39,280 --> 00:22:42,760 Speaker 1: that cats state, and it also has a behavior like 380 00:22:43,040 --> 00:22:47,520 Speaker 1: purring or treating you with utter contempt. You can describe 381 00:22:47,560 --> 00:22:51,240 Speaker 1: this object, the cat, by its state and by its behavior, 382 00:22:51,400 --> 00:22:55,919 Speaker 1: so it is uh the same with objects and object 383 00:22:55,960 --> 00:22:59,120 Speaker 1: oriented programming. You can describe them by their states and behavior. 384 00:23:00,040 --> 00:23:04,280 Speaker 1: Objects store states and what are called fields or variables. 385 00:23:05,119 --> 00:23:08,280 Speaker 1: These include all the possible states for that object. The 386 00:23:08,359 --> 00:23:12,399 Speaker 1: behavior of objects is expressed as methods or functions, and 387 00:23:12,840 --> 00:23:15,440 Speaker 1: um when they are applied to it. The methods operate 388 00:23:15,560 --> 00:23:19,280 Speaker 1: on an objects internal state. One of the big benefits 389 00:23:19,280 --> 00:23:22,520 Speaker 1: of object oriented programming is the source code for any 390 00:23:22,560 --> 00:23:27,000 Speaker 1: given object is independent of that of all other objects. 391 00:23:27,000 --> 00:23:32,399 Speaker 1: They are their own entities. This makes objects modular, and 392 00:23:32,440 --> 00:23:34,840 Speaker 1: you can easily pass an object around a system because 393 00:23:34,840 --> 00:23:37,720 Speaker 1: it's not directly entwined with everything else. Now, in the 394 00:23:37,760 --> 00:23:40,680 Speaker 1: real world, this is easy for us to imagine. Right, 395 00:23:40,720 --> 00:23:43,920 Speaker 1: Let's say that you've got a baseball and a baseball bat. Well, 396 00:23:43,920 --> 00:23:46,159 Speaker 1: those two things are are related in the sense that 397 00:23:46,160 --> 00:23:48,440 Speaker 1: they're both used in a baseball game. But you can 398 00:23:48,440 --> 00:23:50,480 Speaker 1: pick up the baseball and leave the bat behind. You 399 00:23:50,520 --> 00:23:52,520 Speaker 1: can pick up the bat and leave the baseball behind. 400 00:23:52,560 --> 00:23:55,280 Speaker 1: They are not directly connected to each other in any 401 00:23:55,320 --> 00:23:58,959 Speaker 1: physical way. If they were directly connected, let's say the 402 00:23:58,960 --> 00:24:01,200 Speaker 1: ball is glued to the bat, then there's no way 403 00:24:01,240 --> 00:24:04,200 Speaker 1: to separate them without breaking it. You pick up the bat, 404 00:24:04,280 --> 00:24:07,520 Speaker 1: the ball comes with it, or vice versa. Well, that's 405 00:24:07,520 --> 00:24:10,120 Speaker 1: the way it is with certain types of code that 406 00:24:10,240 --> 00:24:14,879 Speaker 1: you cannot easily pick up and move blocks of code 407 00:24:15,320 --> 00:24:19,200 Speaker 1: around without affecting everything else because they're entwined. And object 408 00:24:19,280 --> 00:24:23,640 Speaker 1: oriented programming, everything is more or less self contained, and 409 00:24:23,720 --> 00:24:27,280 Speaker 1: it cleans things up extensively as a result, And there 410 00:24:27,320 --> 00:24:29,800 Speaker 1: are a lot of other details about object oriented programming 411 00:24:29,800 --> 00:24:32,919 Speaker 1: we could get into, but honestly, I'm no expert in it, 412 00:24:32,960 --> 00:24:35,720 Speaker 1: and I'd likely get as much about it wrong as 413 00:24:35,760 --> 00:24:38,360 Speaker 1: I would get right if I were lucky. So I'm 414 00:24:38,359 --> 00:24:42,879 Speaker 1: gonna leave off with this. Object oriented programming became very important, 415 00:24:43,119 --> 00:24:45,919 Speaker 1: and his remains very important, and it was used in 416 00:24:46,000 --> 00:24:49,480 Speaker 1: many different programming languages following small Talk, and there are 417 00:24:49,480 --> 00:24:51,760 Speaker 1: plenty of programmers out there who will go so far 418 00:24:51,800 --> 00:24:54,680 Speaker 1: as to say that no other programming language was as 419 00:24:54,720 --> 00:24:59,000 Speaker 1: elegant in its implementation of object oriented programming as small 420 00:24:59,000 --> 00:25:02,360 Speaker 1: Talk was. Now, I am not qualified to confirm nor 421 00:25:02,480 --> 00:25:05,920 Speaker 1: deny that assertion, but trust me, I read a lot 422 00:25:05,960 --> 00:25:08,919 Speaker 1: of different research material for this episode, and whenever I 423 00:25:09,040 --> 00:25:12,360 Speaker 1: came across anyone who considered themselves to be an expert 424 00:25:12,359 --> 00:25:15,080 Speaker 1: in small Talk, they went on and on about how 425 00:25:15,640 --> 00:25:19,800 Speaker 1: no one has ever done object oriented programming as elegantly 426 00:25:20,000 --> 00:25:24,080 Speaker 1: as the original language did. Whether or not that's true 427 00:25:24,200 --> 00:25:27,040 Speaker 1: or it's just nostalgia, I leave it for the experts 428 00:25:27,080 --> 00:25:31,800 Speaker 1: to decide, because honestly, it's beyond my understanding. Now. Another 429 00:25:31,840 --> 00:25:36,440 Speaker 1: important programming language to mention is c that actually evolved 430 00:25:36,440 --> 00:25:39,240 Speaker 1: from a language called CPL, which originally stood for a 431 00:25:39,280 --> 00:25:42,800 Speaker 1: Cambridge programming language because it was developed at Cambridge University 432 00:25:42,840 --> 00:25:46,080 Speaker 1: in the UK in the early nineteen sixties. But Cambridge 433 00:25:46,119 --> 00:25:51,080 Speaker 1: Programming Language eventually became Combined programming language. That was when 434 00:25:51,160 --> 00:25:54,359 Speaker 1: Cambridge began to partner with programmers at the University of 435 00:25:54,400 --> 00:25:57,640 Speaker 1: London and they began to collaborate on developing the language. 436 00:25:57,640 --> 00:26:01,960 Speaker 1: So Cambridge became combined and it was still CPL. From 437 00:26:01,960 --> 00:26:06,199 Speaker 1: CPL came B CPL, which was known as Bootstrap or 438 00:26:06,400 --> 00:26:11,199 Speaker 1: Basic CPL. Then came the B programming Language in nineteen 439 00:26:11,280 --> 00:26:14,960 Speaker 1: sixty nine. That was a derivative of B CPL. So 440 00:26:15,000 --> 00:26:18,560 Speaker 1: you had CPL, which spawned B CPL, which spawned B. 441 00:26:19,640 --> 00:26:21,960 Speaker 1: But this one didn't come from Cambridge or the UK 442 00:26:22,080 --> 00:26:26,160 Speaker 1: at all. Its home was Bell Labs and Ken Thompson 443 00:26:26,240 --> 00:26:29,840 Speaker 1: and Dennis Ritchie created it. We actually did a tech 444 00:26:29,880 --> 00:26:32,280 Speaker 1: Stuff episode about Dennis Ritchie a couple of years ago. 445 00:26:32,680 --> 00:26:35,399 Speaker 1: He would go on to create C based on his 446 00:26:35,480 --> 00:26:39,440 Speaker 1: work with B. The original purpose of the C programming 447 00:26:39,480 --> 00:26:42,840 Speaker 1: language was to re implement the Unix operating system. The 448 00:26:42,920 --> 00:26:46,160 Speaker 1: language was robust enough to allow programmers to rewrite most 449 00:26:46,240 --> 00:26:49,719 Speaker 1: of the Unix kernel in C, which was a remarkable thing. 450 00:26:49,760 --> 00:26:52,240 Speaker 1: At the time, most OS kernels had to be written 451 00:26:52,280 --> 00:26:55,600 Speaker 1: an assembly language, not in a programming language or a 452 00:26:55,680 --> 00:26:59,520 Speaker 1: high level programming language. C also owes a lot to 453 00:26:59,600 --> 00:27:03,320 Speaker 1: the al Ole family of languages, and C has influenced 454 00:27:03,440 --> 00:27:07,120 Speaker 1: tons of other languages, including C plus plus, Java, JavaScript, 455 00:27:07,160 --> 00:27:11,439 Speaker 1: C Sharp, Pearl, PHB, and Python, among others. Now, in 456 00:27:11,520 --> 00:27:15,840 Speaker 1: nineteen seventy, Nicholas Worth created a programming language as a 457 00:27:15,840 --> 00:27:18,240 Speaker 1: teaching tool, and he wanted to create a language that 458 00:27:18,320 --> 00:27:22,040 Speaker 1: students could easily grasp to get a handle on coding basics. 459 00:27:22,520 --> 00:27:26,440 Speaker 1: He named his language after an inventor named Blaise Pascal, 460 00:27:27,040 --> 00:27:29,960 Speaker 1: who is credited with inventing an early adding machine. So 461 00:27:30,000 --> 00:27:34,119 Speaker 1: this language is of course known as Blaze. I'm kidding, 462 00:27:34,160 --> 00:27:37,560 Speaker 1: it's actually Pascal. If you've heard of the Pascal programming language, 463 00:27:37,680 --> 00:27:40,320 Speaker 1: it's the one that Nicholas Worth made in nineteen seventy. 464 00:27:40,320 --> 00:27:42,480 Speaker 1: His goal was to teach students to think in steps 465 00:27:42,480 --> 00:27:47,399 Speaker 1: that would promote good efficient structured programming. Now, structured programming 466 00:27:47,520 --> 00:27:51,080 Speaker 1: is a specific approach to programming and involves using subroutines 467 00:27:51,160 --> 00:27:54,800 Speaker 1: and block structures to carry out instructions. It's intended to 468 00:27:54,840 --> 00:27:59,399 Speaker 1: help programmers build efficient, clean code. If you contrast this 469 00:27:59,480 --> 00:28:02,960 Speaker 1: with the aproach of Basic, which creates lots of branching 470 00:28:03,000 --> 00:28:07,480 Speaker 1: pathways with various go to statements, and in larger programs 471 00:28:07,760 --> 00:28:10,720 Speaker 1: it can become a big, tangled mess that's difficult to follow. 472 00:28:10,800 --> 00:28:14,000 Speaker 1: You know, you're tracing backward trying to find the line 473 00:28:14,000 --> 00:28:16,840 Speaker 1: of code that leads you down a rabbit trail that 474 00:28:16,920 --> 00:28:19,560 Speaker 1: eventually ends up with an error. It's tough to do 475 00:28:19,680 --> 00:28:22,880 Speaker 1: if you've got a really big program in Basic. So 476 00:28:23,000 --> 00:28:26,679 Speaker 1: Worth wanted to have a programming language that avoided that 477 00:28:26,800 --> 00:28:30,480 Speaker 1: sort of spaghetti style of coding and makes something much 478 00:28:30,520 --> 00:28:34,800 Speaker 1: more clean and efficient. Uh. You don't want to make 479 00:28:35,200 --> 00:28:38,200 Speaker 1: any mistakes when you're coding, but if you do make mistakes, 480 00:28:38,280 --> 00:28:40,360 Speaker 1: you want to be able to track down where that 481 00:28:40,440 --> 00:28:42,600 Speaker 1: mistake is so that you can correct it. And that 482 00:28:42,720 --> 00:28:47,880 Speaker 1: was worth uh motivation. I guess I should say it's 483 00:28:47,920 --> 00:28:50,200 Speaker 1: more difficult with programming languages that go all over the 484 00:28:50,240 --> 00:28:54,120 Speaker 1: place with their various jump commands structured programming approaches. Uh, 485 00:28:54,240 --> 00:28:57,320 Speaker 1: end up discouraging that kind of that kind of thing. 486 00:28:57,680 --> 00:29:00,200 Speaker 1: So in nineteen sixty three we get C plus plus, 487 00:29:00,240 --> 00:29:03,240 Speaker 1: which I alluded to earlier. There's no C plus, just 488 00:29:03,320 --> 00:29:07,600 Speaker 1: C plus plus. This is one also originated in Bell Labs. 489 00:29:08,120 --> 00:29:12,800 Speaker 1: Yarn Strausstrop whose name I am certain I am Butchering 490 00:29:13,200 --> 00:29:16,040 Speaker 1: built it by modifying the C programming language, and it 491 00:29:16,120 --> 00:29:18,840 Speaker 1: became one of the most popular programming languages in the world. 492 00:29:19,520 --> 00:29:21,720 Speaker 1: It's the code behind some of the most popular software 493 00:29:21,720 --> 00:29:26,400 Speaker 1: packages out there, like m S Office and Firefox Inn. 494 00:29:26,440 --> 00:29:30,240 Speaker 1: We got the Pearl language p e r L. Larry 495 00:29:30,280 --> 00:29:32,920 Speaker 1: Wall created it when he found limitations in the Unix 496 00:29:33,000 --> 00:29:37,080 Speaker 1: operating system. Specifically, he wanted to extract some data from 497 00:29:37,120 --> 00:29:39,920 Speaker 1: a report and discovered that Unix just couldn't really do 498 00:29:39,960 --> 00:29:43,120 Speaker 1: what he needed it to do, so he decided to 499 00:29:43,120 --> 00:29:45,760 Speaker 1: make his own programming language to make sure that sort 500 00:29:45,800 --> 00:29:48,560 Speaker 1: of thing didn't happen, which seems perfectly reasonable to me. 501 00:29:49,520 --> 00:29:53,000 Speaker 1: PEARL stands for Practical Extraction Report Language and is also 502 00:29:53,080 --> 00:29:57,480 Speaker 1: known for being utilitarian and practical. Pearl has evolved over time, 503 00:29:58,160 --> 00:30:00,600 Speaker 1: even branching so that Pearl five and ROLL six are 504 00:30:00,640 --> 00:30:05,360 Speaker 1: effectively two separate developing languages, both of which are evolving 505 00:30:06,640 --> 00:30:11,040 Speaker 1: and both trace their history back. But they're different enough 506 00:30:11,080 --> 00:30:14,880 Speaker 1: to be distinct languages. They're not not not like just 507 00:30:15,000 --> 00:30:19,840 Speaker 1: variations on each other. In n Guido van Rossum created 508 00:30:19,880 --> 00:30:24,400 Speaker 1: the Python language, named after the English comedy troupe known 509 00:30:24,600 --> 00:30:27,880 Speaker 1: as Monty Python. And some of you guys know, I 510 00:30:27,880 --> 00:30:31,200 Speaker 1: did a Monty Python reference a few episodes back, and 511 00:30:31,240 --> 00:30:34,160 Speaker 1: I was amazed at the response of how many people 512 00:30:34,760 --> 00:30:39,320 Speaker 1: immediately recognized the one I was I was making. Well 513 00:30:39,400 --> 00:30:43,400 Speaker 1: on uh, you guys. I am very pleased that you 514 00:30:43,440 --> 00:30:46,320 Speaker 1: all are Python fans, well that all the ones who 515 00:30:46,360 --> 00:30:49,800 Speaker 1: wrote into me are Python fans. And my hat is 516 00:30:49,840 --> 00:30:52,440 Speaker 1: off to you. Literally, as it turns out, I have 517 00:30:52,640 --> 00:30:57,000 Speaker 1: taken off my hat now. Van Rowsom says that Python 518 00:30:57,200 --> 00:31:00,440 Speaker 1: was largely borne out of boredom. According to the story, 519 00:31:00,600 --> 00:31:02,520 Speaker 1: he was looking for ways to fill up the time 520 00:31:02,600 --> 00:31:04,960 Speaker 1: during a Christmas holiday from work, so he sat down 521 00:31:05,040 --> 00:31:08,440 Speaker 1: create a programming language, which seems like overkill to me. 522 00:31:08,560 --> 00:31:10,440 Speaker 1: I think I could probably find other things to do, 523 00:31:10,920 --> 00:31:13,320 Speaker 1: but then again, I'm not an expert in programming by 524 00:31:13,360 --> 00:31:16,600 Speaker 1: any stretch of the imagination. Python is a general purpose 525 00:31:16,680 --> 00:31:20,560 Speaker 1: language that uses indentation to denote code blocks, and this 526 00:31:20,640 --> 00:31:23,360 Speaker 1: was to improve readability so that instead of a mass 527 00:31:23,400 --> 00:31:27,040 Speaker 1: of brackets or parentheses, you could quickly pick out code 528 00:31:27,040 --> 00:31:29,440 Speaker 1: blocks by looking at the white space that was in 529 00:31:29,520 --> 00:31:32,240 Speaker 1: the code itself. You just look for that white space 530 00:31:32,240 --> 00:31:35,400 Speaker 1: that would indicate where the block would begin. It's not 531 00:31:35,440 --> 00:31:38,640 Speaker 1: the only type of programming language that does this, but 532 00:31:38,880 --> 00:31:41,120 Speaker 1: many programmers say that Python is one of the more 533 00:31:41,160 --> 00:31:44,200 Speaker 1: readable programming languages and a good choice for beginners who 534 00:31:44,200 --> 00:31:47,720 Speaker 1: want to get into coding. Another interesting thing about Python 535 00:31:47,880 --> 00:31:51,480 Speaker 1: is that supports multiple programming philosophies, so you can code 536 00:31:51,560 --> 00:31:55,200 Speaker 1: using a procedural approach or functional programming, for example. And 537 00:31:55,280 --> 00:31:58,320 Speaker 1: Python has within it the ability to express concepts in 538 00:31:58,400 --> 00:32:02,240 Speaker 1: fewer lines of code then some other programming languages, which 539 00:32:02,240 --> 00:32:05,440 Speaker 1: makes it a little simpler to use. Well, we've got 540 00:32:05,520 --> 00:32:08,520 Speaker 1: one more block of programming languages that we need to 541 00:32:08,560 --> 00:32:11,440 Speaker 1: talk about before I do that. However, let's take a 542 00:32:11,520 --> 00:32:21,959 Speaker 1: quick break to thank our sponsor. So in you had 543 00:32:22,000 --> 00:32:26,640 Speaker 1: a fellow named Yokihiro Matsumoto who took several programming languages, 544 00:32:26,680 --> 00:32:30,600 Speaker 1: including Lisp, Pearl, small Talk, and more and effectively put 545 00:32:30,640 --> 00:32:34,360 Speaker 1: them all on a blender, hit that that super blend button. 546 00:32:34,640 --> 00:32:37,440 Speaker 1: You know, he's really shaking him up, and created a 547 00:32:37,520 --> 00:32:42,320 Speaker 1: new language he called Ruby. Now. Matsumoto said his guiding 548 00:32:42,320 --> 00:32:45,320 Speaker 1: principle was to create a programming language that made sense 549 00:32:45,480 --> 00:32:48,120 Speaker 1: and was easy for programmers to work in. He wanted 550 00:32:48,520 --> 00:32:52,520 Speaker 1: a true object oriented language and felt that Pearl four 551 00:32:52,640 --> 00:32:56,320 Speaker 1: and Python weren't measuring up in his estimation, and he 552 00:32:56,400 --> 00:33:00,240 Speaker 1: was worried that too many programming languages were being built 553 00:33:00,480 --> 00:33:03,840 Speaker 1: with the machines in mind. He was saying, these programming 554 00:33:03,880 --> 00:33:06,360 Speaker 1: languages are being designed by people who want to take 555 00:33:06,960 --> 00:33:10,920 Speaker 1: the you know, the most advantage of a machine's processing power. 556 00:33:10,960 --> 00:33:14,200 Speaker 1: They want code that's going to be fast to execute 557 00:33:14,640 --> 00:33:17,720 Speaker 1: and efficient. But he said that that kind of code 558 00:33:17,800 --> 00:33:20,880 Speaker 1: is not always the most user friendly or programmer friendly, 559 00:33:21,400 --> 00:33:24,400 Speaker 1: and that could be really difficult to program in. So 560 00:33:24,640 --> 00:33:27,520 Speaker 1: he said, you should put the programmer in mind first, 561 00:33:28,000 --> 00:33:31,240 Speaker 1: not the machine. Worry about how easy it is to 562 00:33:31,400 --> 00:33:36,400 Speaker 1: use before you worry about how quickly a processor is 563 00:33:36,480 --> 00:33:41,360 Speaker 1: going to be able to handle the programming language. Uh. 564 00:33:41,520 --> 00:33:44,440 Speaker 1: He says that otherwise your priorities are all whackadoodle, which 565 00:33:44,440 --> 00:33:47,920 Speaker 1: is me paraphrasing. He didn't actually say whackadoodle as far 566 00:33:47,920 --> 00:33:53,160 Speaker 1: as I know. Within Ruby, there is a framework that's 567 00:33:53,160 --> 00:33:56,920 Speaker 1: been used for building websites, and it is now known 568 00:33:56,960 --> 00:34:00,160 Speaker 1: by its own name. It is Ruby on Rails. This 569 00:34:00,240 --> 00:34:01,880 Speaker 1: is a set of rules meant to allow for the 570 00:34:01,960 --> 00:34:06,560 Speaker 1: quick construction of websites, and it was actually extracted by 571 00:34:06,800 --> 00:34:10,960 Speaker 1: David heine Meyer Hanson in two thousand five from a 572 00:34:11,000 --> 00:34:13,400 Speaker 1: project he had created for his work at a company 573 00:34:13,440 --> 00:34:17,680 Speaker 1: called thirty seven Signals. So there are a lot of 574 00:34:18,560 --> 00:34:21,200 Speaker 1: similarities between Ruby and Ruby on Rails, but Ruby on 575 00:34:21,320 --> 00:34:27,600 Speaker 1: Rails is typically reserved specifically for website implementations. In the 576 00:34:27,640 --> 00:34:30,719 Speaker 1: mid nineties, there was a web developer named Rasmus lard 577 00:34:30,880 --> 00:34:33,840 Speaker 1: Orf who was not happy about the Pearl scripts he 578 00:34:33,840 --> 00:34:36,680 Speaker 1: had to use in order to maintain his personal web page. 579 00:34:37,200 --> 00:34:39,720 Speaker 1: So as the mid nineties, the web was not old 580 00:34:39,760 --> 00:34:43,160 Speaker 1: at this point, and he was thinking that this this 581 00:34:43,320 --> 00:34:45,200 Speaker 1: series of Pearl scripts he had to use in order 582 00:34:45,239 --> 00:34:49,880 Speaker 1: to create the functionality he wanted, it just wasn't working 583 00:34:50,120 --> 00:34:52,480 Speaker 1: the way he wanted to. So he decided he would 584 00:34:52,600 --> 00:34:56,640 Speaker 1: make a replacement for it, and that became the PHP language, 585 00:34:56,640 --> 00:35:01,000 Speaker 1: which stood for Personal Homepage language now need to learn off. 586 00:35:01,040 --> 00:35:03,200 Speaker 1: There was never any intention on his part to make 587 00:35:03,280 --> 00:35:07,200 Speaker 1: PHP and actual programming language. It was meant to run 588 00:35:07,320 --> 00:35:09,920 Speaker 1: scripts to make it easier to maintain a web page 589 00:35:09,960 --> 00:35:13,840 Speaker 1: and that was it. But he kept on adding functionality 590 00:35:13,920 --> 00:35:16,959 Speaker 1: to it. It would get bigger and more robust, over time, 591 00:35:17,000 --> 00:35:19,320 Speaker 1: and eventually it got away from him, and he actually 592 00:35:19,320 --> 00:35:21,480 Speaker 1: once said he didn't know how to stop it from 593 00:35:21,520 --> 00:35:26,200 Speaker 1: evolving into a full programming language. So chances are it's 594 00:35:26,239 --> 00:35:30,960 Speaker 1: sky Net now. Meanwhile, over at Sun Microsystems you had 595 00:35:31,200 --> 00:35:34,480 Speaker 1: James gos Ling leading a team of programmers and developing 596 00:35:34,480 --> 00:35:38,320 Speaker 1: what would become the Java programming language. It was originally 597 00:35:38,320 --> 00:35:42,240 Speaker 1: intended as a programming language for interactive television set top boxes, 598 00:35:42,320 --> 00:35:46,799 Speaker 1: so essentially it was a web TV programming language. Now, 599 00:35:46,880 --> 00:35:50,560 Speaker 1: Java is a right once run Anywhere or war RA 600 00:35:50,920 --> 00:35:54,600 Speaker 1: programming language w o r A. That means you should 601 00:35:54,680 --> 00:35:57,080 Speaker 1: be able to build a program in Java and have 602 00:35:57,160 --> 00:36:00,279 Speaker 1: it run on any Java supported platform with out the 603 00:36:00,280 --> 00:36:04,279 Speaker 1: need to recompile it. One thing I find fascinating is 604 00:36:04,320 --> 00:36:07,080 Speaker 1: that Java is a programming language that does not get 605 00:36:07,120 --> 00:36:11,839 Speaker 1: translated into machine code. Typically that's the way these high 606 00:36:11,920 --> 00:36:14,279 Speaker 1: level languages work. You have to translate it, you have 607 00:36:14,320 --> 00:36:17,960 Speaker 1: to use a compiler translated into what a machine can 608 00:36:18,000 --> 00:36:21,600 Speaker 1: actually understand. But instead Java runs on top of a 609 00:36:21,719 --> 00:36:25,160 Speaker 1: virtual machine. Again, this was something that was first established 610 00:36:25,160 --> 00:36:29,760 Speaker 1: way back with small talk. But a virtual machine is 611 00:36:29,760 --> 00:36:32,120 Speaker 1: is what it sounds like. It's like a simulated computer. 612 00:36:32,200 --> 00:36:36,080 Speaker 1: It It in turn runs on top of actual hardware, 613 00:36:36,520 --> 00:36:39,839 Speaker 1: so Java runs on this virtual platform, not on the 614 00:36:39,880 --> 00:36:42,840 Speaker 1: hardware underneath, and the virtual platform takes care of everything. 615 00:36:43,440 --> 00:36:45,320 Speaker 1: Java tends to be used on the back end of 616 00:36:45,360 --> 00:36:48,360 Speaker 1: the web, and it powers website functionality, so it's on 617 00:36:48,400 --> 00:36:51,279 Speaker 1: the server side of the web world. And it's also 618 00:36:51,320 --> 00:36:54,799 Speaker 1: a popular programming language for Android apps. It was named 619 00:36:54,840 --> 00:36:58,520 Speaker 1: after Coffee, which I approve of. It was also designed 620 00:36:58,520 --> 00:37:01,239 Speaker 1: to make it easier for programmers to spot errors when 621 00:37:01,239 --> 00:37:03,680 Speaker 1: they happen, since mistakes are bound to be made, and 622 00:37:03,760 --> 00:37:07,200 Speaker 1: making it easy to find them speeds up the programming process. 623 00:37:08,040 --> 00:37:12,040 Speaker 1: Java is often compared to see sharp because both languages 624 00:37:12,200 --> 00:37:15,920 Speaker 1: follow a strict set of rules to discourage mistakes, so 625 00:37:16,800 --> 00:37:19,480 Speaker 1: you don't have as much flexibility. The rules are very, 626 00:37:19,560 --> 00:37:23,160 Speaker 1: very strict, but once you learn those rules and you 627 00:37:23,200 --> 00:37:26,439 Speaker 1: follow them, you're less likely to make errors that are 628 00:37:26,440 --> 00:37:30,960 Speaker 1: going to turn your program into a gigantic mess. Uh. 629 00:37:31,120 --> 00:37:33,319 Speaker 1: See Sharp, by the way, as always referred to as 630 00:37:33,480 --> 00:37:37,200 Speaker 1: or sometimes referred to rather as Microsoft's Java. It was 631 00:37:37,239 --> 00:37:40,400 Speaker 1: developed by Microsoft. It's not quite as versatile as Java 632 00:37:40,480 --> 00:37:42,839 Speaker 1: when it comes to the WARA approach. It doesn't run 633 00:37:42,920 --> 00:37:45,920 Speaker 1: on as many different platforms, as Java does. However, it 634 00:37:45,960 --> 00:37:50,600 Speaker 1: does work very well within Microsoft environments. Now, not long 635 00:37:50,640 --> 00:37:53,719 Speaker 1: after Java emerged, the world got a chance to use 636 00:37:53,840 --> 00:37:56,680 Speaker 1: Java script. And the two names make it sound like 637 00:37:56,800 --> 00:38:00,440 Speaker 1: JavaScript maybe came from Java, or that they are closely 638 00:38:00,520 --> 00:38:03,319 Speaker 1: related in some way and maybe they follow the same 639 00:38:03,440 --> 00:38:07,440 Speaker 1: rules or have the same syntax. But that's misleading. JavaScript 640 00:38:07,480 --> 00:38:12,040 Speaker 1: and Java are actually unrelated and have very different semantics. 641 00:38:13,080 --> 00:38:15,680 Speaker 1: It's an enormous headache if you're trying to explain to 642 00:38:15,800 --> 00:38:19,319 Speaker 1: someone who doesn't know anything about programming that these two 643 00:38:19,360 --> 00:38:22,800 Speaker 1: things that are named so similarly have no real connection 644 00:38:22,880 --> 00:38:27,000 Speaker 1: with one another. Now, originally JavaScript was called Mocha. Brendan 645 00:38:27,080 --> 00:38:31,239 Speaker 1: Ikes developed it over at Netscape as a client based language, 646 00:38:31,680 --> 00:38:34,520 Speaker 1: meaning this was a programming language that we run inside 647 00:38:34,600 --> 00:38:38,960 Speaker 1: web browsers rather than on the server side like PHP wood. 648 00:38:39,719 --> 00:38:43,239 Speaker 1: JavaScript was intended to make websites more dynamic and interactive, 649 00:38:43,560 --> 00:38:47,239 Speaker 1: and many web based games are programmed using JavaScript. In fact, 650 00:38:47,239 --> 00:38:51,279 Speaker 1: it's considered a core technology for the web, along with 651 00:38:51,480 --> 00:38:55,040 Speaker 1: HTML and CMS, so much so that all modern web 652 00:38:55,040 --> 00:38:58,920 Speaker 1: browsers support JavaScript without the need for an additional plug in. 653 00:38:59,320 --> 00:39:01,080 Speaker 1: So while you might need a plug in for something 654 00:39:01,080 --> 00:39:04,759 Speaker 1: like Adobe Flash, you typically don't need a plug in 655 00:39:04,800 --> 00:39:07,719 Speaker 1: for JavaScript. It's built into the web browsers themselves. That's 656 00:39:07,719 --> 00:39:11,200 Speaker 1: how important JavaScript is now. This is just a small 657 00:39:11,200 --> 00:39:14,120 Speaker 1: selection of some of the more popular programming languages out there, 658 00:39:14,160 --> 00:39:17,320 Speaker 1: and programmers are creating new ones all the time. For example, 659 00:39:17,400 --> 00:39:21,160 Speaker 1: one young programming language is Swift, which is published in 660 00:39:21,160 --> 00:39:25,480 Speaker 1: two thousand fourteen. That's an Apple based programming language intended 661 00:39:25,520 --> 00:39:29,440 Speaker 1: so that programmers can develop applications for iOS, mac os, 662 00:39:29,520 --> 00:39:33,200 Speaker 1: and other Apple operating systems and products. It's a successor 663 00:39:33,239 --> 00:39:36,439 Speaker 1: to Objective C, which is the programming language Apple had 664 00:39:36,480 --> 00:39:40,120 Speaker 1: been relying upon for its OS ten products. But that's it. 665 00:39:40,480 --> 00:39:42,400 Speaker 1: That's all I've got for today. That's it, as in 666 00:39:42,480 --> 00:39:44,960 Speaker 1: that's all I have not that's it, as in that's 667 00:39:45,000 --> 00:39:48,759 Speaker 1: all the different programming languages. Again, there are lots of 668 00:39:48,840 --> 00:39:51,399 Speaker 1: other programming languages. I touched on some of the most 669 00:39:51,400 --> 00:39:54,760 Speaker 1: popular ones, like Java and Python, but there are tons 670 00:39:54,920 --> 00:39:57,600 Speaker 1: of other ones out there. And while they can seem 671 00:39:57,640 --> 00:40:00,480 Speaker 1: intimidating to a newcomer, if you're just staring ing at 672 00:40:00,480 --> 00:40:03,520 Speaker 1: a sheet of code and you have no grounding in 673 00:40:03,560 --> 00:40:07,000 Speaker 1: it whatsoever, it's gonna look incomprehensible to you. It might 674 00:40:07,040 --> 00:40:09,360 Speaker 1: seem like, how how could this be any easier to 675 00:40:09,480 --> 00:40:13,720 Speaker 1: understand than machine code is? But honestly, all it takes 676 00:40:13,920 --> 00:40:16,840 Speaker 1: is some effort to learn the various rules and the 677 00:40:16,880 --> 00:40:20,560 Speaker 1: semantics and the syntax of these languages, and pretty soon 678 00:40:20,600 --> 00:40:23,560 Speaker 1: you're gonna be able to make your own code if 679 00:40:23,600 --> 00:40:26,560 Speaker 1: you're so inclined. So if you're interested in programming, you 680 00:40:26,640 --> 00:40:28,960 Speaker 1: really should pick up a book or two, especially on 681 00:40:29,200 --> 00:40:32,480 Speaker 1: languages that sound interesting to you, and just dive into it. 682 00:40:32,719 --> 00:40:34,960 Speaker 1: You'll learn a lot more about the various approaches to 683 00:40:35,040 --> 00:40:39,440 Speaker 1: programming and the strengths and disadvantages of each one. And 684 00:40:39,560 --> 00:40:42,520 Speaker 1: most programmers they tend to specialize in maybe one or 685 00:40:42,560 --> 00:40:46,520 Speaker 1: two or maybe maybe three languages, and beyond that they 686 00:40:46,560 --> 00:40:48,840 Speaker 1: typically have heard of and maybe worked with a couple, 687 00:40:48,880 --> 00:40:51,520 Speaker 1: but they don't have a real grounding in them. So 688 00:40:51,640 --> 00:40:55,200 Speaker 1: that's perfectly fine. It happens you you find what works 689 00:40:55,239 --> 00:40:59,480 Speaker 1: for you, what speaks to you, and go and explore it. 690 00:40:59,480 --> 00:41:02,520 Speaker 1: It's a good way to learn more about the ways 691 00:41:02,600 --> 00:41:05,880 Speaker 1: that we interact with our machines. You'll find out what 692 00:41:05,960 --> 00:41:08,960 Speaker 1: fits your style, and you'll understand all those awesome programmer 693 00:41:09,040 --> 00:41:11,799 Speaker 1: jokes that I still have to have people explain to 694 00:41:11,840 --> 00:41:15,320 Speaker 1: me now. Guys, even though that wraps up this episode, 695 00:41:15,320 --> 00:41:17,719 Speaker 1: it's not not time for me to say goodbye yet 696 00:41:18,000 --> 00:41:20,840 Speaker 1: because I have a question for you. Do you have 697 00:41:20,840 --> 00:41:22,600 Speaker 1: anything you want me to talk about, because if you do, 698 00:41:22,680 --> 00:41:25,200 Speaker 1: you need to let me know. Send me an email. 699 00:41:25,440 --> 00:41:28,799 Speaker 1: The address is tech stuff at how stuff works dot com, 700 00:41:28,960 --> 00:41:31,440 Speaker 1: or drop me a line on the Facebook's or the 701 00:41:31,440 --> 00:41:34,560 Speaker 1: twitters tex stuff hs W as the handle I use 702 00:41:34,600 --> 00:41:37,160 Speaker 1: it both of those for this show. You can watch 703 00:41:37,239 --> 00:41:40,040 Speaker 1: me live on twitch dot tv slash tech Stuff. I 704 00:41:40,080 --> 00:41:43,520 Speaker 1: record on Wednesdays and Friday's. Just go to twitch dot 705 00:41:43,560 --> 00:41:45,319 Speaker 1: tv slash tech Stuff. You'll be able to find the 706 00:41:45,320 --> 00:41:47,879 Speaker 1: schedule right there and see when you can tune in 707 00:41:47,920 --> 00:41:50,640 Speaker 1: to watch. You join the chat room. I like to 708 00:41:50,719 --> 00:41:53,560 Speaker 1: chat with my viewers and find out what's going on 709 00:41:53,640 --> 00:41:56,080 Speaker 1: in their lives, so be part of the conversation. I 710 00:41:56,160 --> 00:41:57,840 Speaker 1: look forward to seeing you and I'll talk to you 711 00:41:57,880 --> 00:42:07,120 Speaker 1: again really soon for more on this and thousands of 712 00:42:07,160 --> 00:42:19,080 Speaker 1: other topics. Because it how stuff works dot com.