Speaker 1: Brought to you by the reinvented two thousand twelve Camray.
Speaker 1: It's ready. Are you get in touch with technology with
Speaker 1: tex Stuff from how stuff works dot Com. Hello again, everyone,
Speaker 1: and welcome to the three hundred episode of text Stuff.
Speaker 1: My name is Chris Poulette and I am an editor
Speaker 1: here at how stuff works dot com and sitting across
Speaker 1: from me as usual as senior writer Jonathan Strickland. You
Speaker 1: know Jonathan, three episodes madness. This is text Stuff, all right.
Speaker 1: Now that I've kicked Chris down a well, we can.
Speaker 1: Oh he climbed up. Man. Dude has got some serious
Speaker 1: forearm strength. Actually was all the fingertips. Yeah, yeah, yeah,
Speaker 1: he's a baller. So we're gonna talk today about something
Speaker 1: that you've had requested pretty much since episode one. Yep, yep.
Speaker 1: And it's it's an involved topic. We could we could
Speaker 1: talk about any one of the sub things we're about
Speaker 1: to talk about for an entire episode of of tex Stuff.
Speaker 1: So I think we're going to give give this sort
Speaker 1: of an overview. Yeah yeah, So we're going to talk
Speaker 1: today about programming languages, and to really get us started,
Speaker 1: I have a quote here from C. A. R. Who
Speaker 1: are h O A R E. Oh, And he says,
Speaker 1: I conclude that there are two ways of constructing a
Speaker 1: software design. One way is to make it so simple
Speaker 1: that there are obviously no deficiencies, and the other way
Speaker 1: is to make it so complicated that there are no
Speaker 1: obvious deficiencies. And yeah, we're gonna talk about programming languages,
Speaker 1: and that does apply to programming languages. Now, first of all,
Speaker 1: you might ask, why do we have programming languages? Hey, Jonathan, Yeah,
Speaker 1: why don't we have programming languages? Well, I'm glad you
Speaker 1: asked that, Chris, because I was gonna have to wait
Speaker 1: around a long time before the emails started coming in. Uh. Yeah.
Speaker 1: The reason why we have it is because machines understand
Speaker 1: a very well on the surface, a simple language, but
Speaker 1: it's one that humans are not able to read easily.
Speaker 1: Machine code is not something that humans easily read, right,
Speaker 1: And ultimately, when you get down to it, a computer
Speaker 1: understands basically two things on and off. Now, the type
Speaker 1: of machine code is dependent on the kind of machine.
Speaker 1: And when we say machine code, that doesn't necessarily just
Speaker 1: mean computers. No, no, not at all. Yeah, because the
Speaker 1: first machine codes were really for things like looms, right
Speaker 1: looms and player pianos where that's another example. It's a
Speaker 1: machine code that the coding translated to which notes played
Speaker 1: when yes, uh, if you will remember a long time
Speaker 1: ago we talked about how looms were mechanical. Looms were
Speaker 1: programmed by using punched cards, um. And this was done
Speaker 1: hundreds of years ago now um. So basically, the loom
Speaker 1: would follow the instructions on the card. Where there was
Speaker 1: a hole, it would do one thing, and when there
Speaker 1: was a non hole, it would not do that thing
Speaker 1: right again one or zero exactly. It also led to
Speaker 1: the first episodes of sabotage, Sabo being a shoe that
Speaker 1: someone would throw in the loom to break it because
Speaker 1: they didn't want their jobs taken over by the machines.
Speaker 1: Had times haven't changed manual weavers who uh did not
Speaker 1: want to be displaced by an automatic loom unbeweavable. Yes,
Speaker 1: it wasn't. I thought I could get through that, but
Speaker 1: I couldn't. So yeah, machine code is this stuff that that, again,
Speaker 1: machines can understand humans, humans can understand it, don't get
Speaker 1: me wrong, It's just it takes so much effort to
Speaker 1: understand it that it's not efficient for humans to to
Speaker 1: write in machine code. I know people who can read binary,
Speaker 1: I'm not one of them, right, Yeah, And there there
Speaker 1: are people out there who are have what to me
Speaker 1: would seem a mysterious gift to be able to read
Speaker 1: and write in machine code in a way that you know,
Speaker 1: I just can't comprehend. Um. So programming languages are a
Speaker 1: way of of addressing that problem. It's it's an attempt
Speaker 1: to create a language that is easier for humans to
Speaker 1: uh to comprehend, and to create a set of instructions
Speaker 1: for a machine that don't require you to think in
Speaker 1: machine code. Yes, yes, um, I am Actually I have
Speaker 1: actually been taking a a Python class over the past
Speaker 1: few weeks, right. Uh, actually that's where it got its name.
Speaker 1: I didn't really Yeah. Uh, Python is We'll get into
Speaker 1: this later, but I just want to set this up.
Speaker 1: Python is an object oriented programming language. Um. But I'm
Speaker 1: actually in LESSNSE with the instructors Scott Turnbull, who's a
Speaker 1: who's a friend, and uh, he was explaining that it's
Speaker 1: not it's not that you're people are are afraid to
Speaker 1: learn programming languages because they seem kind of complex. But
Speaker 1: it's not that's it's not that you're not smart enough,
Speaker 1: he says, it's actually that you're not dumb enough because
Speaker 1: the computer doesn't really understand things. And the computer language
Speaker 1: is there too to be sort of an interface between
Speaker 1: you and the computer to give it specific instructions. Because
Speaker 1: it doesn't know what you're trying to do. You have
Speaker 1: to be very specific, and that's what the languages are
Speaker 1: trying to do. But the thing is that depending on
Speaker 1: the machine, as Jonathan was saying before, and depending on
Speaker 1: what you're trying to do. Uh, people keep writing new
Speaker 1: languages because one language maybe too sophisticated for the particular
Speaker 1: kind of machine, or as machines become more sophisticated, you
Speaker 1: might need something to take advantage of that where you
Speaker 1: can really use the capabilities of those machines. Yeah, if
Speaker 1: you look at some of the older programming languages, they
Speaker 1: just weren't designed to to deal with the operations that
Speaker 1: modern machines can can execute, and so you end up
Speaker 1: having to if you're using those older languages, the programs
Speaker 1: get more and more complex and larger and larger because
Speaker 1: you have to have more lines of code in order
Speaker 1: to facilitate these operations. Um or you have a language
Speaker 1: that's so complex that it takes you three days just
Speaker 1: to figure out how to write one line of code
Speaker 1: to get what you what you want done done. So yeah,
Speaker 1: it's a little um, it's a little daunting for the layman. Uh.
Speaker 1: From a high level point of view, there are two
Speaker 1: main features that programming languages have to have, or that
Speaker 1: all languages really have, um. And these are not the
Speaker 1: only two features, but two main features. One is semantics,
Speaker 1: which is the meaning of what you are saying, and
Speaker 1: then the other syntax, which is the form of what
Speaker 1: you're saying. And the syntax and the semantics together are
Speaker 1: kind of the set of rules that you have to
Speaker 1: follow in order for a language to be understandable. And
Speaker 1: that really goes for human languages as well. Yes, yeah,
Speaker 1: all words have to go in a certain order for
Speaker 1: somebody else to understand them, right, And you can play
Speaker 1: without a little bit and humans are still able to
Speaker 1: understand it. For example, so if you speak like Yoda,
Speaker 1: that's exactly what I was thinking when you said that. Right.
Speaker 1: If you hear Yoda talk in the Star Wars movies,
Speaker 1: you know Yoda has his own syntax. He he throws
Speaker 1: words in in odd odda order all the time, particularly
Speaker 1: more in the prequels. I noticed his syntax got funkier
Speaker 1: the younger he was. As he got older, I guess
Speaker 1: he cut that crap out anyway, So, uh, nice Frank
Speaker 1: OSes in the office everyone. So yeah, humans can actually
Speaker 1: deal with a little variation in syntax. Computers not so much.
Speaker 1: Computers are not good at adapting to new situations. They
Speaker 1: have to, you know, you have to be able to
Speaker 1: program it in a way that it makes sense to
Speaker 1: the computer, so it can't really interpret if you start
Speaker 1: messing with the syntax. There are two main categorizations, I
Speaker 1: would say for for programming languages. There are low level
Speaker 1: programming languages and high level programming languages. Yes, Now, a
Speaker 1: low level programming language is one that is based on
Speaker 1: mnemonic devices that are easy for a relatively easy for
Speaker 1: humans to understand and remember. And they are, but they
Speaker 1: correspond very closely with machine code, so it's almost like
Speaker 1: your programming in machine code, but it's just a slight
Speaker 1: tweak from machine code so that it's not as monumental
Speaker 1: a task to remember you know, which what is you know,
Speaker 1: what makes up the letter A as opposed to the
Speaker 1: you know, the the group of zeros and ones that
Speaker 1: would normally use that in say binary code. So um,
Speaker 1: assembly language is an example of a low level computing language.
Speaker 1: So if you were to write something in assembly, you'd
Speaker 1: be writing it in a mnemonic style that closely models
Speaker 1: machine language. Now, high level programming languages introduce a concept
Speaker 1: called abstraction. Now, abstraction means you step a little further
Speaker 1: away from these these specific steps the computer has to
Speaker 1: go through in order to to execute the operation you're
Speaker 1: you are telling it to do, and you can get
Speaker 1: a little more free with the language. Now, the biggest
Speaker 1: advancement would be if you created some sort of natural
Speaker 1: language computer language where you would just type in a
Speaker 1: sentence and the computer would be able to interpret that
Speaker 1: as an actual command. So, you know, you would type in, uh,
Speaker 1: I need you to add these two numbers together, and
Speaker 1: then I need you to add this set of numbers together,
Speaker 1: and then I need you to add both sums together,
Speaker 1: and then I need you to give me an average.
Speaker 1: You know, if you just type that in, then the computer,
Speaker 1: if it had a way of interpreting natural language, would
Speaker 1: give you the results you wanted. But we aren't really
Speaker 1: there right. Well, let me let me take this from
Speaker 1: the opposite side here for just a moment. You don't
Speaker 1: necessarily want that because hit me with it, because again,
Speaker 1: as Scott says, programming can be really repetitive, so you're
Speaker 1: not going to want to type out, um, you know,
Speaker 1: I want you to add these two numbers together. And
Speaker 1: then you know you wanted to actually be as simple
Speaker 1: as possible, So you don't want it to be literally
Speaker 1: like that, just that, and I know you know that,
Speaker 1: but I want to make it sort of clear that
Speaker 1: it's not you want it to be to express that
Speaker 1: sentiment in as few words as possible, because you're probably
Speaker 1: going to have to type out the exact same kind
Speaker 1: of thing many, many, many times over the course of
Speaker 1: writing a program. Yeah, and if you were to write
Speaker 1: a complicated program in assembly language, you would discover that
Speaker 1: it's going to be enormous. This is gonna be lines
Speaker 1: and lines and lines of code because with a language,
Speaker 1: you are telling the computer what to do step by step.
Speaker 1: And when I mean what to do, I'm talking about
Speaker 1: not just telling it which operations to use, but when
Speaker 1: to access memory, where it has to access it, what
Speaker 1: information it has to pull up. I mean every single
Speaker 1: set of instructions you can think about, you would pretty
Speaker 1: much have to include there and the computer. If you
Speaker 1: don't tell it to do something, the computer will not
Speaker 1: do it. So think of it like a two year old. Yeah, alright,
Speaker 1: so Chris, you've you've had experience with two year olds.
Speaker 1: So let's say you tell your two years this is
Speaker 1: like a Bill Cosby routine. In fact, this is a
Speaker 1: Bill Cosby routine. You tell the two year old, all right,
Speaker 1: you need to go upstairs, take a shower, and go
Speaker 1: to bed. No, you can't do that because if you
Speaker 1: just tell the kid to go upstairs, take a shower
Speaker 1: and go to bed, the kid goes upstairs, gets in
Speaker 1: the shower fully closed, turns on the water, then turns
Speaker 1: off the water, and then gets into bed soaking wet.
Speaker 1: So what you have to do is say, all right,
Speaker 1: walk up the stairs, open the door to the bathroom,
Speaker 1: go inside the bathroom, close the door to the bathroom,
Speaker 1: take off your clothes, get in the shower, turn on
Speaker 1: the water, wash shampoo, rents, get out of the shower, etcetera, etcetera.
Speaker 1: You have to give it every single instruction or else
Speaker 1: it skips steps or in the case of computers, it
Speaker 1: may not skip steps. It may just say, well, I
Speaker 1: don't know what to do because you haven't told me.
Speaker 1: Well see I I uh, I don't know that that's
Speaker 1: necessarily true of all two year olds. I have difficulty
Speaker 1: weaning mind from the iPad long enough to do anything right.
Speaker 1: But um, yeah, but you're if you're familiar with the
Speaker 1: Cosby routine I'm talking about, I am, and that of course, well,
Speaker 1: you know, being a stand up or sit down comedian.
Speaker 1: In his case, uh, you know, he exaggerates a tiny bit,
Speaker 1: but you're you're, you're onto something. And it also reminds
Speaker 1: me a little bit of the text games when you
Speaker 1: have to be very specific. It's like, no, open the
Speaker 1: door and go in right. Well, yeah, the text based
Speaker 1: games that that Chris is talking about, there were these
Speaker 1: these games that like uh, info games used to do,
Speaker 1: like games that were all they would give you a
Speaker 1: paragraph of text that would explain the situation, and then
Speaker 1: you would type in what you wanted to do next
Speaker 1: and go left right and there might go left correct,
Speaker 1: There might be a there might be a very specific
Speaker 1: way that the game will allow you to move forward.
Speaker 1: And if you type in something that's similar to that,
Speaker 1: like Let's say you type in go north, but the
Speaker 1: game would only recognize walk north, even though both of
Speaker 1: those things mean the same thing. You know, if you
Speaker 1: don't type in the right command right the same thing
Speaker 1: to us, it means the same thing to us, it
Speaker 1: doesn't mean the same thing to the computer because it
Speaker 1: just doesn't it doesn't have that vocabulary. So a similar language,
Speaker 1: like I said, is more or less the step by
Speaker 1: step set of directions for a computer. So that's a
Speaker 1: low level language. The high level languages, they abstract languages,
Speaker 1: get a little more free because you have a you
Speaker 1: have a sort of a step between the programming language
Speaker 1: you've built a program in and that the way the
Speaker 1: computer actually executes the code. There's a there's a step
Speaker 1: in between there, which can vary depending upon which programming
Speaker 1: language you're using. Um So, whereas in the first example,
Speaker 1: you know, I have to go and tell the two
Speaker 1: year old step by step what needs to happen in
Speaker 1: order for the desired result that to come out with
Speaker 1: a high level language, because we've previously defined certain uh
Speaker 1: operations and certain data sets. Because that stuff has been
Speaker 1: defined previously, I might have the freedom to say, go upstairs,
Speaker 1: take a shower and go to bed, and then the
Speaker 1: computer because those that set of data and the set
Speaker 1: of operations have been previously defined will know to follow
Speaker 1: its step by step, even though I did not lay
Speaker 1: it all out piece by piece by piece. Yeah, the
Speaker 1: more sophisticated languages will let you define those parameters. You
Speaker 1: might say, I've got I want you to do these
Speaker 1: fifteen things, and you're gonna have to do these fifteen
Speaker 1: things seventy five times over the course of this. Well,
Speaker 1: you might be able to create, uh m, a basically
Speaker 1: a string of commands and say, when I say do this,
Speaker 1: that means make all these fifteen things happen, so that
Speaker 1: it's it's essentially like a shorthand you're yeah, exactly, that's
Speaker 1: a better that's even better. Um, so you're going, okay,
Speaker 1: so every time, So at first you might have to
Speaker 1: do some some defining. You're gonna have to to explain,
Speaker 1: uh in the language what you want these these things
Speaker 1: to do, and then it will be able to execute
Speaker 1: those those steps. But you know, it hasn't really always
Speaker 1: been that way. Um. There are many, many, many languages,
Speaker 1: some of which are are now famous, um, some of
Speaker 1: which people still need to know because their legacy systems
Speaker 1: out there that still run on these languages. Uh. Yeah.
Speaker 1: I I have a friend who uh um works for
Speaker 1: as a programming uh programmer, and she basically said, yeah,
Speaker 1: I work with a language that not only is it
Speaker 1: older than I am, but it has been mothballed for
Speaker 1: almost as long as I've been alive. Uh And the
Speaker 1: only reason they use it is because we're using these
Speaker 1: computers and this is the language they understand. You happen
Speaker 1: to know which one it was? No, I don't, Well,
Speaker 1: I mean there's not There are thousands of programming languages
Speaker 1: out there, which is one of the reasons why we
Speaker 1: can't really do a full episode on programming languages period
Speaker 1: because there are a lot of flavors, and they don't
Speaker 1: you know, they take a lot of different approaches to programming. Now,
Speaker 1: their goal is pretty much the same across the board.
Speaker 1: The goal is to create a language that is easy
Speaker 1: for humans to program in in such a way that
Speaker 1: they can build applications for computers. But some of these
Speaker 1: are designed with specific applications in mind. Some of them
Speaker 1: are things like business applications or banking applications, and or
Speaker 1: air traffic control systems. Systems that have a very specific
Speaker 1: set of parameters that you would want to program for,
Speaker 1: and then the others are more free form, right that
Speaker 1: the designed for programs that maybe don't have as specific
Speaker 1: a use scenario. And uh, it's kind of interesting to
Speaker 1: talk about the history of these. UM there's actually I
Speaker 1: wanted to mention before we really get into it. I
Speaker 1: found a kind of neat timeline. It's an interactive timeline
Speaker 1: that um you can move your cursor around the timeline.
Speaker 1: The timeline itself is miniaturized, so when you look at
Speaker 1: it just looks like a white bar with some gray
Speaker 1: shading in it. And it turns out the reason for
Speaker 1: that is because it's an enormous timeline and so when
Speaker 1: you move your cursor it zooms in. I don't know,
Speaker 1: it's got to be like twenty times or something. And
Speaker 1: or if you to actually read what the the the
Speaker 1: various languages are, but it said you can find that
Speaker 1: at www dot l e V E n e Z
Speaker 1: dot com, slash l A n G so Levinez dot com,
Speaker 1: slash lang and it's a neat it's a neat time line.
Speaker 1: I really do recommend you checking out out if you're
Speaker 1: interested in seeing sort of the development of programming languages,
Speaker 1: especially if you want to see which ones were descended
Speaker 1: from the earliest languages, because that's it's kind of like
Speaker 1: a family tree, except it's it's laid out horizontally as
Speaker 1: opposed to vertically. Right now, Um, when i i'm I'm
Speaker 1: old enough to remember when people used some of the
Speaker 1: older languages, and so do you know the oldest one
Speaker 1: is UM? The the oldest one. The on is credited
Speaker 1: as the oldest language, even though it was not implemented
Speaker 1: until for for computer programming. Yes, it is called plunk
Speaker 1: a cool. Wow, what a catchy name. Plank a cool.
Speaker 1: It was developed by Conrad Zuza. It was for the
Speaker 1: Z three computer. Yeah, so program It was created back
Speaker 1: around so in the so this is a German computer
Speaker 1: in the forties. It was created but not implemented, so
Speaker 1: the language was never actually used until two thousands somewhere
Speaker 1: around there. This is the Z three came up on
Speaker 1: in a way earlier podcast that that was before the
Speaker 1: three hundreds. Oh wait, this is the first of the
Speaker 1: three hundreds. So if you're talking about the first you know,
Speaker 1: sort of commercially available UM programming language that wasn't just
Speaker 1: for a very specific proprietary device, and that's all it
Speaker 1: was for, because there were some things they're programming languages
Speaker 1: that are unique to a specific piece of hardware. Yeah,
Speaker 1: but you were talking about a different one. I was
Speaker 1: the first one that that comes to mind when I
Speaker 1: think of historical languages is for Tran, right, which was
Speaker 1: we talked about that a little bit in our our
Speaker 1: epic series on IBM. Yeah. John Bacchus actually helps create
Speaker 1: the language in nine in n so Actually it wasn't
Speaker 1: that long after the Z three. I think they actually
Speaker 1: started developing it even earlier, like in the early fifties.
Speaker 1: But but yeah, fifty seven was the introduction to the market. Yep, yep.
Speaker 1: And it's you know, there are still people who program
Speaker 1: in FORTRAN. I would imagine, Yeah, there's some legacy systems
Speaker 1: out there running on for trend. Yeah, you know. I mean,
Speaker 1: here's the other thing is that if you create a
Speaker 1: business or any really if you create any system that's
Speaker 1: dependent upon a legacy system, it's really hard to move
Speaker 1: off of that system because you know, the modern systems
Speaker 1: may not be able to emulate the old system, and
Speaker 1: so you have to keep supporting something that is otherwise
Speaker 1: obsolete and perpetually unless you just completely revamp the way
Speaker 1: you do things. And that's that's intimidating. It's a tough
Speaker 1: thing to do. Yeah, I can't imagine anyone booting up
Speaker 1: their IBM system Stroke three sixty and uh starting to
Speaker 1: run a Java app on it. I just don't think
Speaker 1: it's gonna happen. Probably not. UM another one of the
Speaker 1: languages I was thinking about. UM. There are three really
Speaker 1: that come to mind, Like when I think of old
Speaker 1: programming language is tons of others. COBALL is another one,
Speaker 1: which is the common business oriented language, which is very
Speaker 1: business heavy. It was a procedural language that was designed
Speaker 1: for programming business applications. Uh. And actually COBAL was one
Speaker 1: of those programming languages that that came into demand again
Speaker 1: about a little over a decade ago. Do you know
Speaker 1: why what happened a little over a decade ago? M M.
Speaker 1: I'm thinking you're probably talking about the major world shaking
Speaker 1: event that was the Y two K problem exactly. There
Speaker 1: were a lot of legacy systems that were running Cobal.
Speaker 1: They were running Cobal programming, you know, it was it
Speaker 1: was the systems themselves were programmed in Cobal. And we
Speaker 1: were coming up on the Y two K problem, which,
Speaker 1: if you guys don't remember, was the issue of the date,
Speaker 1: not it was only the date was being expressed as
Speaker 1: a two digit numbers, which meant that when nine nine
Speaker 1: became zero zero, that some of these systems might interpret
Speaker 1: that to mean that the years no longer. It's not
Speaker 1: two thousand, but is nineteen hundred. But it presupposes the
Speaker 1: first two digits were one nine. And that's actually sort
Speaker 1: of important because, um, you know, not only do programmers
Speaker 1: look for ways to be very concise. When a lot
Speaker 1: of people were programming in Cobal when it was first
Speaker 1: released in ninety nine, Um, you had to be as
Speaker 1: simple and precise as possible because, uh, you know, a
Speaker 1: thumb drive, a flash drive has more memory than those
Speaker 1: machines had at that point. Yeah, you're super computers back
Speaker 1: then were pitiful compared to the handheld devices we have today. Yeah,
Speaker 1: so they had to you know, lopping off the first
Speaker 1: two digits of the year. Uh, you don't need them,
Speaker 1: that's two extra digits I don't have to worry about. Well. Yeah,
Speaker 1: and you gotta remember also, these guys when they were programming,
Speaker 1: they knew that the field they were in. And when
Speaker 1: I say these guys, there were female programmers to back
Speaker 1: in the day. But all of these people they knew
Speaker 1: back when they were getting into it that this was
Speaker 1: a field that was evolving rapidly. Um, there were a
Speaker 1: lot of different people working on programming languages and and
Speaker 1: operating systems, and the sky was the limit. I mean,
Speaker 1: there was nowhere to go but but up and out.
Speaker 1: I mean it was just brand new frontier. And I
Speaker 1: don't think anyone thought we're still going to be dependent
Speaker 1: upon this old system, you know, three or four or
Speaker 1: five decades from now, where this will be a problem.
Speaker 1: By then will be on totally different systems and this
Speaker 1: stuff will be a long forgotten memory. It's just this
Speaker 1: is the stepping stone for us to get there. Not thinking, no,
Speaker 1: there's gonna be companies out there. You still using these
Speaker 1: old systems because the business, the business reality is that
Speaker 1: you can't revamp every with every new development, new technological development.
Speaker 1: Was the old folks, he saying, says, if it ain't broke,
Speaker 1: don't fix it. And even if it is broken, I'm
Speaker 1: looking at my laptop, all right. Yeah. The other one
Speaker 1: I was thinking about is Pascal episode three. I still
Speaker 1: have a broken laptop well, which came around around nineteen.
Speaker 1: I'm just saying it's not working at all. Oh, Pascal,
Speaker 1: I'm sorry, we're on Pascal. Well. I was just mentioning.
Speaker 1: I mean, I'm leaving out tons and tons of languages UM,
Speaker 1: which was very popular in the seventies and eighties, which
Speaker 1: you know, as I was growing up, I just heard
Speaker 1: a lot of people programming in pascal UM and it
Speaker 1: was just a very very It was actually sort of
Speaker 1: a descendant UM of four tran and in some ways UM.
Speaker 1: But you know, also in the seventies, I have this
Speaker 1: feeling we need to to start tightening up because we're
Speaker 1: probably getting shorter on time. Uh see the the snow
Speaker 1: seat not see um. Yeah see that just a letter
Speaker 1: c UM started to enter usage. And I remember when
Speaker 1: I got my Amiga that a lot of people were
Speaker 1: starting to get into a descendant of C. You know,
Speaker 1: C plus you got C plus plus yeah. Yeah. See
Speaker 1: see we're having around types of language. But yeah, the
Speaker 1: C language was one of those that was kind of
Speaker 1: intended as a system programming language for uh, for the PDP,
Speaker 1: and then it ended up kind of exploding beyond that
Speaker 1: and some programmers will tell you that it got out
Speaker 1: of control, that people were using it well beyond what
Speaker 1: it was supposed to be used for. And that's kind
Speaker 1: of why we have the development of C plus and
Speaker 1: then C plus plus. These were enhancements to that C
Speaker 1: programming language to take into account new capabilities of machines
Speaker 1: that CE just did not support. And you know, you
Speaker 1: could program and see if you wanted to for these
Speaker 1: these capabilities, but it would mean that your program would
Speaker 1: have to be that many more lines of code to
Speaker 1: be able to incorporate all the stuff that you could
Speaker 1: do now. And C plus and C plus plus meant
Speaker 1: to try and make that a little more elegant. But
Speaker 1: even then you still have programmers saying that's out of control. Um,
Speaker 1: I do want to backtrack just one second. I want
Speaker 1: to mention one major programming language that was never really
Speaker 1: meant to be a big programming which was meant to
Speaker 1: be a teaching tool. Basic. Yeah. I was going to
Speaker 1: mention that I did some of my research UM from
Speaker 1: Britannica and uh it had listed UM fortran and see
Speaker 1: as UM algorithmic languages and COBAL as a business oriented language.
Speaker 1: But Basic was definitely and Pascal too, were both education
Speaker 1: oriented languages. Yeah. Basic stands for beginners all purpose symbolic
Speaker 1: instruction code. Yeah, this is this is old by today's standards. Yeah. Yeah.
Speaker 1: And I found a great quote. It's an anonymous quote,
Speaker 1: so I don't you know, it's kind of hard to
Speaker 1: call it a quote in that case. This is the
Speaker 1: one you're gonna did you already shared with me? Yeah? Yeah,
Speaker 1: I love this this quote. Though Basic is two computer languages,
Speaker 1: what Roman numerals are too arithmetic? The idea of being
Speaker 1: the Basic teaches you the basic principles of programming, but
Speaker 1: was not meant to actually design complex programs, right. It
Speaker 1: was just meant to give you the the the basic essentials.
Speaker 1: But that didn't stop people from actually programming fairly complex
Speaker 1: applications in Basic, which meant that you had to create
Speaker 1: lots and lots of lines of code in order to
Speaker 1: create these, um, these these programs. Yeah. My my first
Speaker 1: experience in computer programming, actually writing computer programs myself, was
Speaker 1: in Amiga Basic, which I used on my Amigo one thousand,
Speaker 1: UM and I remember it was. It was every bit
Speaker 1: as tedious as you might imagine. I did have a
Speaker 1: lot of friends who coded on Commodore sixty four's and
Speaker 1: Vick twenties for that matter. Um, and they were pretty
Speaker 1: much using Basic too. It's a matter of factored. I
Speaker 1: also can remember the days when you would find basic
Speaker 1: code in the back of computer magazines. Oh yeah, here's
Speaker 1: a great program, and I will teach you how to
Speaker 1: do this, and this is this is one that will
Speaker 1: project your birthday indefinitely. Yes, you know stuff like that,
Speaker 1: you test handy like it would tell you like what
Speaker 1: day of the week your birthday would fall on from
Speaker 1: that point forward. That kind of stuff. I mean, that's
Speaker 1: you know, it sounds kind of silly, but it was
Speaker 1: teaching people to the basics of computer programming. Yeah. Absolutely,
Speaker 1: And there are people who are I've read several accounts
Speaker 1: that there are many people who are in who are
Speaker 1: programmers today who write amazing stuff, right that the video games,
Speaker 1: the three D video games that everybody loves so much.
Speaker 1: And they started writing basic on their home computer, which was,
Speaker 1: you know, a tiny little machine, you know, like an
Speaker 1: Apple to E or something six four. You've got, Um,
Speaker 1: you gotta start somewhere, just start somewhere, and it's kind
Speaker 1: of it's it is pretty fascinating. Did you have a
Speaker 1: p L on your list. A p L. Yeah, it
Speaker 1: stands for a programming language. I'm not joking. You know
Speaker 1: the computer people really like those those uh yeah, those
Speaker 1: those acronyms that when you when you break it down,
Speaker 1: you're like, come on, it's it's late in the day
Speaker 1: on Friday, and I can I forgot what that. Technically,
Speaker 1: it's not an acronym. We're going to get someone to
Speaker 1: write in because acronym has to no, it has it
Speaker 1: has a name. And I'm because I'm hungry and it's
Speaker 1: the end of the day, I can't remember what it is. Yeah,
Speaker 1: we usually do this in the morning, but because this
Speaker 1: is Madness and episode three hundred, we're actually doing this
Speaker 1: in the afternoon. Also, I had something else I had
Speaker 1: to do this morning, so anyway, but yeah, a programming language.
Speaker 1: It was mostly used for accounting packages and air traffic
Speaker 1: control systems. But the thing about a p L is
Speaker 1: that it had an enormous character set. Now, most programming
Speaker 1: languages use your basic letters, numbers, and symbols for like
Speaker 1: the things you find on the keyboard basically as key
Speaker 1: character exactly. A p L is not like that. It
Speaker 1: is a whole set of characters that you're not You
Speaker 1: can look at that keyboard all day long, you are
Speaker 1: not going to find the symbols that appear in an
Speaker 1: line of ap L code. But because it has this
Speaker 1: enormous character set, it also is able to uh incorporate
Speaker 1: lots of different operations into a single character. So a
Speaker 1: program that might take five thousand lines of code mode
Speaker 1: in some other programming language may only have to take
Speaker 1: a couple of dozen lines of code in a p
Speaker 1: L if you know the character set. But that character
Speaker 1: I mean, it's a huge learning curve, right, I mean,
Speaker 1: with this it's almost as difficult, not really, but from
Speaker 1: a layman's perspective, it's almost as difficult as programming in
Speaker 1: machine code itself, just because it's so dense. Um. I
Speaker 1: actually looked at some code for a program that was
Speaker 1: an early basic program and I and it. I forget
Speaker 1: how many lines it was, but it was. It was.
Speaker 1: It was a lot like a hundred lines and it
Speaker 1: had been summarized into a single line of a p
Speaker 1: L code. Yeah, it was. It was. No, I had
Speaker 1: to take the word for it because I don't read
Speaker 1: a p L code, so I can't really tell. Also,
Speaker 1: this was making me think of Jonathan Coulton's song code
Speaker 1: Monkey because his his code is not functional or elegant. Well,
Speaker 1: this is also where hackers come from, right, I mean,
Speaker 1: besides the physical hacking of machine, usually had actors who
Speaker 1: would say, I want to make a program that does
Speaker 1: desired outcome number one, and in order to do that,
Speaker 1: I'm gonna code it this way. And it may not
Speaker 1: be the most direct or elegant route. It may be
Speaker 1: kind of cluji that you make your way through there
Speaker 1: and you finally get to where you're going, but you
Speaker 1: took the path less traveled. Robert Frost would have loved
Speaker 1: your computer program. But uh yeah, you know that a
Speaker 1: lot of hackers learned how to program this way. They
Speaker 1: would have their their set outcome and they would program
Speaker 1: their way to it, but the code might not be
Speaker 1: the most elegant. So uh yeah, we we should mention
Speaker 1: to the object oriented type programming languages, which is one
Speaker 1: of the more modern I would say phases of programming
Speaker 1: and more common today. Um not just to skip over
Speaker 1: any others, I know there's probably other a couple other
Speaker 1: of the earlier variety that you would like to mention.
Speaker 1: I've got one that I'll talk about at the end.
Speaker 1: But um, but that's but it sort of builds on
Speaker 1: that idea basically that you are. It's a way to
Speaker 1: manage how complex your programming is getting. Yeah, Usually if
Speaker 1: you were to create let's say you create a program
Speaker 1: in some and one that's not an object oriented programming language,
Speaker 1: you have this for example, Yeah, you have the set
Speaker 1: of data, and the entire program has access to that
Speaker 1: same set of data. With object oriented programming, you actually
Speaker 1: specify in which cases certain certain data gets used and
Speaker 1: how it is used. So you have very specific methods
Speaker 1: of dealing with that data and they can only be
Speaker 1: used in that in that scenario within a program. And
Speaker 1: this kind of cuts down on the possibility of having
Speaker 1: these weird coding errors because you you know, because of
Speaker 1: the rules of the programming language, you cannot misuse data
Speaker 1: at least in theory. Give a person enough time and
Speaker 1: there will find a way, right. But you might be
Speaker 1: able to speak more to it than I can. Like,
Speaker 1: my knowledge of programming is really from an academic standpoint,
Speaker 1: but I don't have a lot of experience with it.
Speaker 1: So did you want to elaborate anymore? I honestly, that's
Speaker 1: about as far as I can get in depth for
Speaker 1: object oriented programming, right right, Well, it's it's hierarchical and
Speaker 1: it it basically it's a lot more elegant simply because
Speaker 1: and I don't want to get the idea that I'm
Speaker 1: a master program or anything like that, but it is
Speaker 1: fascinating to be able to build this yourself. It's it does,
Speaker 1: as you said, get into that hacker uh philosophy, it's not.
Speaker 1: It's about taking things apart and trying to make something
Speaker 1: better with it. And of course those the people who
Speaker 1: hack into networks are doing using the same kinds of
Speaker 1: tools for purposes that may or may not be illegal,
Speaker 1: probably are not necessarily moral, all infiltration and manipulation, but
Speaker 1: of course you know they're the ones who get all
Speaker 1: the pressed, so that that that's where the negative connotation
Speaker 1: for hacker gets in. But yeah, I mean this is
Speaker 1: these these are the more sophisticated languages it you see today, Um,
Speaker 1: you know, stuff like C plus plus uh. Simula actually
Speaker 1: was the first, according to Britannic in nineteen sixty seven.
Speaker 1: But you know there are others. You know, Java, Let's
Speaker 1: say I thought Java was at least a semi object oriented. Yeah,
Speaker 1: programming language and Python. There are many many others. I
Speaker 1: know that you are interested in one of them, just
Speaker 1: as from a historical standpoint, it's a it's a governmental language,
Speaker 1: is A yes, it is. That was the one that
Speaker 1: was going to mention. Yeah. Ada is the programming language.
Speaker 1: It was commissioned by the Department of Defense in the
Speaker 1: nineteen eighties, and the reason for commissioning it was they
Speaker 1: wanted to have, uh, their own computer programming language for
Speaker 1: their their systems. And Ada is kind of a descendant
Speaker 1: of the Pascal language. Um, you, miss Lovelace. It's not
Speaker 1: a lot of people's favorite language. I understand it can
Speaker 1: be a little tricky at times, um, but you know,
Speaker 1: it's it's funny shifting between languages. Uh. You know, I'm
Speaker 1: also trying to learn Php at the same time, and
Speaker 1: some of the constructs in PHP are completely removed in
Speaker 1: Python as I'm learning, and that makes trying to learn
Speaker 1: two languages simultaneously a little daunting. It's kind of like
Speaker 1: learning two languages that are related but not perfectly in sync.
Speaker 1: Like if you were learning say, French and Italian, that
Speaker 1: would be fairly easy. The rules, the rules are very
Speaker 1: similar and right right, but French and Latin might be
Speaker 1: a little more challenging because you have cases in Latin
Speaker 1: that are no longer used in modern French speech. So yeah,
Speaker 1: the further away you get from that common well, in
Speaker 1: this case, Latin is the common ancestor, Latin is the
Speaker 1: ancestor to French. But then you can go uh all
Speaker 1: the way out and say French and Chinese, in which
Speaker 1: case there's no, there's no common ground. No, you don't
Speaker 1: even you're not even using the same symbols to represent
Speaker 1: words Latin and old fresh in for example, that's for
Speaker 1: my that's for my old English peeps. I was gonna say,
Speaker 1: you had to bring the Frissian in it. That loss
Speaker 1: god kinning, y'all, that's how I roll Old English style.
Speaker 1: Um so, so how are we doing on time? Where
Speaker 1: we need to wrap this up? So yeah, this is
Speaker 1: a This was our overview, and we will probably at
Speaker 1: some point go into more depth on specific programming languages,
Speaker 1: maybe talk about their development and and one exactly it
Speaker 1: means to program in those languages. Yeah, yeah, that was that.
Speaker 1: This is another one's topics that's kind of difficult for
Speaker 1: us to tackle in a lot of depth because there
Speaker 1: is a lot of there's a lot of breadth to it.
Speaker 1: There's a wide for I mean even stuff like HTML,
Speaker 1: which which is isn't really a programming language, a markup
Speaker 1: markup language, but it shares some similarities to programming languages
Speaker 1: because it has sets of instructions that tell a computer
Speaker 1: how to do certain things right. And it's for somebody
Speaker 1: who might be tempted to try programming but be afraid
Speaker 1: of it, and he really shouldn't be, uh, but it
Speaker 1: might be a way to get your feet wet, to
Speaker 1: at least get an idea that, hey, this is what's
Speaker 1: going on in the back end, but when it's on
Speaker 1: the front end, it looks completely different. It looks polished.
Speaker 1: You don't see any of this stuff. What's that's a
Speaker 1: lot like what actual computer programming is. Like. Yeah, so yeah,
Speaker 1: I'll tell you what. Why don't you let us know
Speaker 1: on Twitter or Facebook if you have specific languages or
Speaker 1: touch languages, maybe we can revisit it in more detail. Um,
Speaker 1: but yeah, I would encourage people to at least try
Speaker 1: it out because it's it can be a lot of fun,
Speaker 1: and it could be extremely frustrating. But if you like
Speaker 1: frustrating things, that are fun, programming might be for you. Yeah,
Speaker 1: just just remember, at least you don't have to worry
Speaker 1: about punch cards and getting punch cards out of order.
Speaker 1: But we talked about punch cards in the past, so
Speaker 1: that's why I felt good about We felt all right
Speaker 1: about skipping over that. We didn't talk about compilers either. No, no, no,
Speaker 1: But there's so much. I mean, there are entire college
Speaker 1: courses that are based around just the principles of programming
Speaker 1: language and college degrees exactly. So coming it all up
Speaker 1: in a half hour podcast or in this case, a
Speaker 1: thirty eight minute podcast is a little challenging. So if
Speaker 1: you guys want to know more about specific programming languages,
Speaker 1: like let's said, let us know on Twitter or Facebook
Speaker 1: that are handled. There is text stuff h s W,
Speaker 1: or you can send us an email and address is
Speaker 1: tech stuff at how stuff works dot com. Happy three
Speaker 1: hundred episode Chris, Happy three hundred to you too, Jonathan,
Speaker 1: and we hope to talk to you guys again three
Speaker 1: hundred more times really soon for moral news and thousands
Speaker 1: of other topics. Is it how stuff works dot com.
Speaker 1: To learn more about the podcast, click on the podcast
Speaker 1: icon in the upper right corner. Of our homepage, The
Speaker 1: How Stuff Works iPhone app has arrived. Download it today
Speaker 1: on iTunes, brought to you by the reinvented two thousand
Speaker 1: twelve camera. It's ready, are you