Speaker 1: Text with technology with tech Stuff from stuff works dot com.
Speaker 1: Hey there, and welcome to tech Stuff. I am your host,
Speaker 1: Jonathan Strickland. I'm a senior writer with how stuff works
Speaker 1: dot com, where we try to demystify the universe one
Speaker 1: topic at a time, and we are going to continue
Speaker 1: our story about the history of programming languages. In our
Speaker 1: previous episode, we looked at the history of computers leading
Speaker 1: up to the development of two of the earliest programming languages,
Speaker 1: for Tran and Kobol. Technically there was another language that
Speaker 1: is considered to be the earliest or the second earliest
Speaker 1: um and really one more that's technically earlier than both
Speaker 1: of those as well, but it wasn't known about outside
Speaker 1: of Germany for the longest time. We'll cover all of
Speaker 1: that in this episode, but I'll have a slightly different
Speaker 1: structure from the last one. So in the last one,
Speaker 1: I try to stay on a roughly chronological path, going
Speaker 1: year by year talking about developments as they happened in
Speaker 1: actual history. But with programming languages that can get really confusing,
Speaker 1: and it also requires lots of jumping back and forth
Speaker 1: between the different families of programming languages because while certain
Speaker 1: new ones were starting to emerge, older ones were continuing
Speaker 1: to evolve, So I might end up saying, well, in
Speaker 1: nineteen seven, de Bah this programming language hit its fifth version,
Speaker 1: whereas this other one came out for the first time,
Speaker 1: and this other one stopped being used, and it just
Speaker 1: gets really messy. So I'm going to probably concentrate more
Speaker 1: on specific programming languages and specific groups and follow their
Speaker 1: paths down before making a jump back to a different language.
Speaker 1: I'll also do my best to explain some of the
Speaker 1: general concepts in programming. Um. There are way too many
Speaker 1: individual programming languages to go into detail in a single episode.
Speaker 1: It would take lots of episodes to talk about all
Speaker 1: the different programming languages, and also considering that most of
Speaker 1: them have multiple versions or generations of the programming language,
Speaker 1: some of which are radically different from preceding versions, it
Speaker 1: just would be too difficult for me to go in
Speaker 1: for each one. So we're gonna We're gonna do our
Speaker 1: best and cover it from a more high level perspective. Now,
Speaker 1: in the last episode, I did mention a guy named
Speaker 1: Conrad Zeus who developed his own computers in Germany independently
Speaker 1: of any of the work going on anywhere else. He
Speaker 1: also independently made his own programming language called plunka Cool,
Speaker 1: but this was virtually unknown outside of Germany for several decades.
Speaker 1: The programming language is remarkably prescient, but had no real
Speaker 1: effect on the rest of the evolution of programming languages
Speaker 1: because no one in the Western world, and really Germany's
Speaker 1: in the western world, no one in that North America
Speaker 1: knew about it, and that was where a lot of
Speaker 1: this early work in programming languages was coming from. No
Speaker 1: One in the UK knew about either, and that's where
Speaker 1: a lot of the other work was coming from. So
Speaker 1: it was an amazing achievement and I want to make
Speaker 1: sure that we acknowledge it, but it's not something that
Speaker 1: ties into the rest of our story directly. One other
Speaker 1: thing I should mention is that in the last episode
Speaker 1: are really led up to the development of four Tran
Speaker 1: and Cobal, which were two important early programming languages. Four
Speaker 1: Trand was and is still used in scientific applications, while
Speaker 1: Cobal became the programming language of choice for businesses. But
Speaker 1: there are other languages that also popped up around that
Speaker 1: same time that are unrelated to either of those, so
Speaker 1: they don't branch off from four tran or COBAL. They
Speaker 1: are independent programming languages, and one of those is Lisp. Technically,
Speaker 1: it was, at least by most accounts, the second programming
Speaker 1: language if you put aside Zeus's work and you look
Speaker 1: at four trand as being the first programming language, LISP
Speaker 1: if you're looking at pure publication years is the second one,
Speaker 1: and the name stands for List Processor Lisp l I
Speaker 1: s P. It was developed by John McCarthy at Dartmouth
Speaker 1: and M I. T in the mid nineteen fifties. The
Speaker 1: first reference manual was published in nineteen sixty and it's
Speaker 1: a programming language that is based on recursive functions, which
Speaker 1: is a function that appears in its own definition, and
Speaker 1: this sets it apart from four trand. In the Ford
Speaker 1: Trend programming language, you can view a program as a
Speaker 1: sequence of steps that a computer is supposed to take,
Speaker 1: sort of like a to do list, like do this,
Speaker 1: then do that, then do that, etcetera, etcetera, all the
Speaker 1: way down the line. A Lisp program is a function
Speaker 1: applied to data. It can also use its parenthetical notation
Speaker 1: to represent actual data, which meant Lisp programs could operate
Speaker 1: on other programs as data and it would become one
Speaker 1: of the most important programming languages for artificial intelligence, partly
Speaker 1: because uh, it was a a learning program that a
Speaker 1: lot of people were using in order to do research
Speaker 1: and development in ai UM and it was a computer
Speaker 1: program capable of learning things that could be based on
Speaker 1: on Lisp as a self modifying program because I had
Speaker 1: that recursive nature. That's what allows it to be self modifying.
Speaker 1: One interesting aspect of Lisp is that when you type
Speaker 1: out the code, you nest functions inside of parentheses, So
Speaker 1: you might end up having a whole mess of parentheses
Speaker 1: housing a series of functions that would be performed on
Speaker 1: a specific data set. And it sounds very similar to
Speaker 1: the way I tend to write. I like parenthetical asides,
Speaker 1: perhaps a bit too much. Lisp was a more specialized
Speaker 1: language and more abstract than other high level languages. And
Speaker 1: remember a high level language is one that is easier
Speaker 1: for humans to comprehend. It is further removed from the
Speaker 1: machine code that's actually running on the computer hardware itself,
Speaker 1: and then you have some sort of process in between
Speaker 1: the high level language and the machine code that makes
Speaker 1: it understandable to the machines. So humans are not great
Speaker 1: and understanding machine code. It is pretty hard to program
Speaker 1: and not impossible, but very challenging, and machines can't understand
Speaker 1: high level languages. Uh. The languages are our way of
Speaker 1: making it easier for us to work with computers. Now,
Speaker 1: LISP sees a great deal of application in the world
Speaker 1: of artificial intelligence, but it's not used extensively outside of
Speaker 1: that field. That doesn't mean that no one else uses it,
Speaker 1: it's just not as common as other forms of programming
Speaker 1: languages for other applications besides AI. Lisp would inspire Seymour,
Speaker 1: Papert and m I. T Research, a researcher rather to
Speaker 1: develop another language called Logo l O g O and
Speaker 1: that was meant to be an accessible programming language that
Speaker 1: kids could learn to code in. It used graphics and
Speaker 1: a simple set of rules to encourage learning. Another offshoot
Speaker 1: of LISP was Scheme, which is frequently used in college
Speaker 1: level coding classes to teach some of the basic on
Speaker 1: steps of programming. So you'll find that among programming languages
Speaker 1: there are several that were invented specifically to help people
Speaker 1: understand the concepts that go into various coding philosophies or paradigms.
Speaker 1: There are different approaches to coding, and some programming languages
Speaker 1: are are more appropriate for certain philosophies than others. Uh,
Speaker 1: there are a lot of languages that you can use
Speaker 1: various approaches to programming. You don't have to, you're not
Speaker 1: nailed down to a very specific approach. But there are
Speaker 1: some that just lend themselves better to a certain process
Speaker 1: versus another, And a lot of them were designed by
Speaker 1: educators who wanted to encourage people to start thinking in
Speaker 1: ways that would develop into good programming practices, and then
Speaker 1: they would graduate on to using more robust programming languages.
Speaker 1: There are actually some programming languages that aren't really meant
Speaker 1: for real world use. They're really meant just as a
Speaker 1: means of understanding the basics of programming itself and getting
Speaker 1: a grasp on computer science. Another programming language that emerged
Speaker 1: shortly after Lisp for Trand and cobol was a p L.
Speaker 1: And a p L is an acronym, and it or
Speaker 1: initialism if you prefer. Really it's an initialism and it
Speaker 1: stands for a programming language. It seems pretty straightforward. You'll
Speaker 1: notice that some folks like to name their programming languages
Speaker 1: very generic things. The creator of a p L was
Speaker 1: Kenneth e Iverson. A p L used symbols to represent
Speaker 1: functions and operators, and the nice thing about that is
Speaker 1: that it helped make the code more efficient and concise.
Speaker 1: You didn't need as much code to represent the functions
Speaker 1: you wanted to run with any given program. So one
Speaker 1: branch of a p L is sharp a p L.
Speaker 1: This was a variant that was designed by the company
Speaker 1: I P. Sharp Associates, and it added some more functional
Speaker 1: to a p L enough to be considered its own
Speaker 1: programming language. So not just a variation, it's really its
Speaker 1: own language and its own right. Programmers would create other
Speaker 1: programming languages that did not depend directly on these early ones,
Speaker 1: but they served. These early languages served as the foundation
Speaker 1: for several others. In some cases they inspired people to
Speaker 1: make new programming languages, and in other cases they themselves
Speaker 1: actually were the foundation for specific uh new implementations of
Speaker 1: programming language. There's so many variations that I can't list
Speaker 1: them all even in a series of podcasts unless I
Speaker 1: were just to rattle off names, and that would have
Speaker 1: no meaning whatsoever. So I'll focus on some of the
Speaker 1: more prominent languages and their variants, and we'll start with
Speaker 1: for TRAN, the programming language made it much easier to
Speaker 1: program calculations for computers, and it removed the need to
Speaker 1: work in machine code or assembly language. Four trans launched
Speaker 1: in nineteen fifty seven. The basic language received several updates.
Speaker 1: For Tran two came out in nineteen fifty eight and
Speaker 1: introduced some new features, such as the ability of programmers
Speaker 1: to create subroutines and functions, which meant they could use
Speaker 1: the same code repeatedly in future programs or within the
Speaker 1: same program, and it saved a lot of time there
Speaker 1: was no need to reinvent the wheel with every implementation.
Speaker 1: Other updates would follow. The first truly machine independent version
Speaker 1: of four trand came out in nineteen sixty one. It
Speaker 1: was four TRAN four. This was the first version that
Speaker 1: could run on different computer architectures, so that the same
Speaker 1: program created in four TRAN four would run across different machines.
Speaker 1: But this wasn't yet a standardized language unrelated to any
Speaker 1: specific type of computer. It still was limited to a
Speaker 1: family of architectures, but that would change with the next
Speaker 1: version of four TRAN in nineteen sixty two, you had
Speaker 1: a group called the American Standards Association, and they created
Speaker 1: a set of standards for the next round of programming languages,
Speaker 1: and the goal was to make them architecture agnostic. They
Speaker 1: didn't want programmers to have to reinvent their programs with
Speaker 1: every different architecture of computers out there. To do so
Speaker 1: would just mean that you would write the same program
Speaker 1: and then have to rewrite it and rewrite it again
Speaker 1: for every single different architecture you encountered. The language to
Speaker 1: emerge from that process was four TRANS sixty six. Meanwhile,
Speaker 1: other programming languages, including several I haven't mentioned yet, we're
Speaker 1: leaving for TRAND behind because really for TRAND was still
Speaker 1: kind of limited in what it could do. It was
Speaker 1: good at what it could do, but it couldn't it
Speaker 1: was it was like a very relatively narrow band of applications.
Speaker 1: And over the course of several years, computer programmers work
Speaker 1: to build out more functionality into four TRAN, including creating
Speaker 1: the ability to make true block if statements and direct
Speaker 1: access input output functions. That result was four TRANS seventy seven,
Speaker 1: which became the most widely used programming language in the world,
Speaker 1: and there are still examples of code written in four
Speaker 1: trans seventy seven today. Forty years later, four Tran ninety
Speaker 1: was the next version of Pure four Tran. It was
Speaker 1: created to again address some of the shortcomings of Fortran
Speaker 1: compared to other programming languages, such as the ability to
Speaker 1: allocate memory dynamically, and it was published as a standard
Speaker 1: by the International Standards Organization in n and there was
Speaker 1: one more version in N called four Tran I s
Speaker 1: O for Tran also spawned a few other languages. One
Speaker 1: notable family was the al Goal series of languages a
Speaker 1: l G O L. Like four Tran, al Goal founded
Speaker 1: its greatest applications and scientific calculations, that's really where it
Speaker 1: was used for the most part. It introduced a block
Speaker 1: structure in which coders could insert a block of statements
Speaker 1: for the scope of variables within the code, and it
Speaker 1: also incorporated recursion, which is the ability of a procedure
Speaker 1: to call upon itself. UH. It never really reached commercial success,
Speaker 1: but it had a profound impact on people developing their
Speaker 1: own programming languages. So in other words, it wasn't so
Speaker 1: compelling as to get universal adoption, but it definitely inspired
Speaker 1: a lot of programmers to give it a world and
Speaker 1: to then incorporate some of those elements into their own
Speaker 1: programming languages later on. Next, we've got pl slash one
Speaker 1: PL one programming language. This was from George Raydon, a
Speaker 1: computer scientist who held degrees from Brooklyn College, Columbia University
Speaker 1: in the City University of New York. This was a
Speaker 1: real hybrid language. At borrowed elements from four TRAN, from
Speaker 1: cobol and from ALGOL. The name stands for programming language
Speaker 1: PL one. It's pretty straightforward. IBM would take PL one
Speaker 1: and mush mush mush it into p LS. This would
Speaker 1: remain ibm s programming language of choice until the C
Speaker 1: programming langue wages came along a bit later. The PL
Speaker 1: one format allowed for more complex processes without the need
Speaker 1: to build up an enormous amount of code, So in
Speaker 1: other words, you could use the code to execute a
Speaker 1: bunch of different operations rather than building each of those
Speaker 1: operations up from more basic components. It was not only
Speaker 1: used in scientific and business applications, but also data processing,
Speaker 1: so we're starting to get into some more general purpose
Speaker 1: computing at this point. Keep in mind, the computers well
Speaker 1: before the personal computing age. They tend to be very
Speaker 1: specific use machines. They weren't necessarily meant to do lots
Speaker 1: of different things. They were built for specific purposes, and
Speaker 1: therefore a lot of these programming languages were tuned to
Speaker 1: those specific purposes. You didn't have a lot of general
Speaker 1: purpose computing in those early days. But that's it for
Speaker 1: the direct For trend descendants, we'll talk about Cobal just
Speaker 1: really briefly. Like for trand Cobal would evolve over time.
Speaker 1: There were versions like Cobal six D one and see
Speaker 1: Cobal seventy four and see cobalight five O O or
Speaker 1: object oriented Cobal. I'll talk about object oriented programming a
Speaker 1: bit later in this episode to explain what that actually means.
Speaker 1: And Cobal two thousand fourteen. According to the Gartner Group,
Speaker 1: eighty per cent of the world's business runs off Cobal code,
Speaker 1: so very influential, and keeping in mind it was like
Speaker 1: the third big programming language to emerge, it's pretty impressive.
Speaker 1: So that's the basics for the foundation of programming languages
Speaker 1: early early on, and the next section I'm going to
Speaker 1: look at some of the big programming languages that followed
Speaker 1: and what those are intended to do. Why are these
Speaker 1: programming languages in the first place, Once we established them,
Speaker 1: why did we need more? We'll look at that in
Speaker 1: the second but first let's take a quick break to
Speaker 1: thank our sponsor. You know, I I noticed that I've
Speaker 1: used the word basic to describe a lot of things
Speaker 1: in this podcast, so I guess it's a good time
Speaker 1: to talk about the programming language Basic. Thomas E. Kurtz
Speaker 1: and John G. Kimeny, students at Dartmouth College that designed
Speaker 1: the programming language, and they had the intent to create
Speaker 1: one that was easier to code in the earlier languages.
Speaker 1: So before Basic, most languages required a pretty strong grasp
Speaker 1: on mathematics. So in fact, mostly early programmers and computer
Speaker 1: scientists like Grace Hopper, you know, the person who we
Speaker 1: credit with coining the term computer bug. She was a mathematician.
Speaker 1: In fact, that was what her interest was in. She
Speaker 1: didn't want to be known as a programmer. She was
Speaker 1: interested in mathematics, and that's what a lot of the
Speaker 1: earlier programs were. They were mathematicians. But not everyone can
Speaker 1: have that sort of grasp on very complex mathematics. So
Speaker 1: basics design meant that you didn't have to be a
Speaker 1: math whiz to learn how to build a program. I'm
Speaker 1: personally thankful for it because that's the programming language I
Speaker 1: have the most direct experience in. The language did have
Speaker 1: some hefty level limitations, but it wasn't designed to be
Speaker 1: the last language you'd ever need to learn. It was
Speaker 1: really to get you into programming. The name stands for something.
Speaker 1: It's not just a word, it's actually again, and it's
Speaker 1: an acronym. It's beginners all purpose symbolic instruction Code Basic.
Speaker 1: The initial version of Basic debut in nineteen sixty four.
Speaker 1: A decade later, Bill Gates and Paul Allen would offer
Speaker 1: up a version of Basic as one of the first
Speaker 1: products from a little company they founded called Microsoft. Basic
Speaker 1: was also the language of the Apple too. That particular
Speaker 1: variant was integer Basic, but these were all from the
Speaker 1: same family. Basic taught students how to think in terms
Speaker 1: of logical progression to design code that would produce a
Speaker 1: desired result. Typically, you'd begin each line of code with
Speaker 1: a number to designate that line, to say what order
Speaker 1: that goes in as far as the order of operations.
Speaker 1: So for example, I might type one zero to mark
Speaker 1: the first line of code, and then I would follow
Speaker 1: that with some sort of command, so would be one
Speaker 1: zero space something for example cls, which would stand for
Speaker 1: a clear screen. Then I could follow that with the
Speaker 1: next line of code, which would begin with a new
Speaker 1: number like to zero to zero. I might write print
Speaker 1: that tells the computer that the next thing I type
Speaker 1: in it will need to display or print out in
Speaker 1: some way, and I might put in quotation marks hello world.
Speaker 1: It's very common way of learning programming is doing your
Speaker 1: first Hello World. Then I could type in one more
Speaker 1: line of code, and I type in the number three
Speaker 1: zero's for our third line, and type in the word
Speaker 1: end to end that program. So if I ran that program,
Speaker 1: it would clear the screen and then print the line
Speaker 1: hello world, and that's all it would do. Obviously, this
Speaker 1: is not the extent of what you can do in Basic.
Speaker 1: If it were, it would be a pretty useless language.
Speaker 1: You could add other elements, such as if then statements.
Speaker 1: You might ask for an input from the user, such
Speaker 1: as a line of code that prints the sentence would
Speaker 1: you like to learn about tech stuff? And then another
Speaker 1: line that presents either a yes or no option to
Speaker 1: the user. You know, you could type a Y or
Speaker 1: an N. Your if then statement would then have a
Speaker 1: branching pathway. So within your code you would have different
Speaker 1: lines that would represent what happens depending upon what the
Speaker 1: user did. So, if the user typed in a why,
Speaker 1: you might then have a bit of information about tech stuff,
Speaker 1: saying it's a totally awesome podcast hosted by a groovy
Speaker 1: dude named Jonathan Strickland. If you typed in and it
Speaker 1: would say, what's your problem? Man? You want to know
Speaker 1: about tech stuff? It's pretty awesome. I think you need
Speaker 1: to know more. If you typed anything else, you might
Speaker 1: get a message saying I'm sorry, man, I totally don't understand.
Speaker 1: What the heck are you trying to say? Those are
Speaker 1: those if then statements. If user types this, then go
Speaker 1: to this other line of code. Very basic idea, no
Speaker 1: pun intended. In programming in the late nineteen sixties, a
Speaker 1: new programming language created a revolution in programming. And it's
Speaker 1: an important language, though one that I think most non
Speaker 1: programmers haven't really heard about. It's small Talk. That's something
Speaker 1: that any computer science major has likely studied at some
Speaker 1: time or another. But why was it so important? Well,
Speaker 1: small Talk created a new paradigm for programming. It was
Speaker 1: an object oriented programming language, and it began as a
Speaker 1: project at Xerox Park. Now that's the same research and
Speaker 1: development branch of Xerox that brought us tons of other
Speaker 1: stuff like the graphic user interface, the Gooey or the
Speaker 1: virtual machine or the mouse. So what exactly does it
Speaker 1: mean to be an object oriented programming language? What is
Speaker 1: an object in programming? Well, an object can be many things,
Speaker 1: including a function, a data structure, a method, or a variable.
Speaker 1: Small Talk incorporated this concept and also included a related
Speaker 1: one called inheritance, which allows you to make a subclass
Speaker 1: of an existing object. This is useful if you're working
Speaker 1: with variations on the same basic structure. An inherited subclass
Speaker 1: will initially be identical to its parent class. So let's
Speaker 1: say you've created an object and then you create uh
Speaker 1: and you know, use inheritance to create a subclass of
Speaker 1: that object. At first, it's going to be identical, but
Speaker 1: then you can make changes to the subclass that will
Speaker 1: not change the parent class of object. And from a
Speaker 1: programming perspective, this makes it easier to build complex code
Speaker 1: because you don't need to rebuild the entire object each time.
Speaker 1: You just take that you make a subclass or you
Speaker 1: implement a subclass that you've already established. Objects have two
Speaker 1: facets to them. They have a state and they have
Speaker 1: a behavior. So it's easier to think about this if
Speaker 1: we use an analogy and think about a physical object,
Speaker 1: which can be anything. Really, the analogy can be a
Speaker 1: little helpful. Let's let's think of a cat. First. Of all,
Speaker 1: cats would hate it if I called them objects, but
Speaker 1: for this purpose we're gonna refer to cats. So cats
Speaker 1: have numerous states. One state for a cat might be
Speaker 1: the breed of cats. So is it a tabby cat?
Speaker 1: Is it a Persian? Is it a Siamese? That is
Speaker 1: that cats state, and it also has a behavior like
Speaker 1: purring or treating you with utter contempt. You can describe
Speaker 1: this object, the cat, by its state and by its behavior,
Speaker 1: so it is uh the same with objects and object
Speaker 1: oriented programming. You can describe them by their states and behavior.
Speaker 1: Objects store states and what are called fields or variables.
Speaker 1: These include all the possible states for that object. The
Speaker 1: behavior of objects is expressed as methods or functions, and
Speaker 1: um when they are applied to it. The methods operate
Speaker 1: on an objects internal state. One of the big benefits
Speaker 1: of object oriented programming is the source code for any
Speaker 1: given object is independent of that of all other objects.
Speaker 1: They are their own entities. This makes objects modular, and
Speaker 1: you can easily pass an object around a system because
Speaker 1: it's not directly entwined with everything else. Now, in the
Speaker 1: real world, this is easy for us to imagine. Right,
Speaker 1: Let's say that you've got a baseball and a baseball bat. Well,
Speaker 1: those two things are are related in the sense that
Speaker 1: they're both used in a baseball game. But you can
Speaker 1: pick up the baseball and leave the bat behind. You
Speaker 1: can pick up the bat and leave the baseball behind.
Speaker 1: They are not directly connected to each other in any
Speaker 1: physical way. If they were directly connected, let's say the
Speaker 1: ball is glued to the bat, then there's no way
Speaker 1: to separate them without breaking it. You pick up the bat,
Speaker 1: the ball comes with it, or vice versa. Well, that's
Speaker 1: the way it is with certain types of code that
Speaker 1: you cannot easily pick up and move blocks of code
Speaker 1: around without affecting everything else because they're entwined. And object
Speaker 1: oriented programming, everything is more or less self contained, and
Speaker 1: it cleans things up extensively as a result, And there
Speaker 1: are a lot of other details about object oriented programming
Speaker 1: we could get into, but honestly, I'm no expert in it,
Speaker 1: and I'd likely get as much about it wrong as
Speaker 1: I would get right if I were lucky. So I'm
Speaker 1: gonna leave off with this. Object oriented programming became very important,
Speaker 1: and his remains very important, and it was used in
Speaker 1: many different programming languages following small Talk, and there are
Speaker 1: plenty of programmers out there who will go so far
Speaker 1: as to say that no other programming language was as
Speaker 1: elegant in its implementation of object oriented programming as small
Speaker 1: Talk was. Now, I am not qualified to confirm nor
Speaker 1: deny that assertion, but trust me, I read a lot
Speaker 1: of different research material for this episode, and whenever I
Speaker 1: came across anyone who considered themselves to be an expert
Speaker 1: in small Talk, they went on and on about how
Speaker 1: no one has ever done object oriented programming as elegantly
Speaker 1: as the original language did. Whether or not that's true
Speaker 1: or it's just nostalgia, I leave it for the experts
Speaker 1: to decide, because honestly, it's beyond my understanding. Now. Another
Speaker 1: important programming language to mention is c that actually evolved
Speaker 1: from a language called CPL, which originally stood for a
Speaker 1: Cambridge programming language because it was developed at Cambridge University
Speaker 1: in the UK in the early nineteen sixties. But Cambridge
Speaker 1: Programming Language eventually became Combined programming language. That was when
Speaker 1: Cambridge began to partner with programmers at the University of
Speaker 1: London and they began to collaborate on developing the language.
Speaker 1: So Cambridge became combined and it was still CPL. From
Speaker 1: CPL came B CPL, which was known as Bootstrap or
Speaker 1: Basic CPL. Then came the B programming Language in nineteen
Speaker 1: sixty nine. That was a derivative of B CPL. So
Speaker 1: you had CPL, which spawned B CPL, which spawned B.
Speaker 1: But this one didn't come from Cambridge or the UK
Speaker 1: at all. Its home was Bell Labs and Ken Thompson
Speaker 1: and Dennis Ritchie created it. We actually did a tech
Speaker 1: Stuff episode about Dennis Ritchie a couple of years ago.
Speaker 1: He would go on to create C based on his
Speaker 1: work with B. The original purpose of the C programming
Speaker 1: language was to re implement the Unix operating system. The
Speaker 1: language was robust enough to allow programmers to rewrite most
Speaker 1: of the Unix kernel in C, which was a remarkable thing.
Speaker 1: At the time, most OS kernels had to be written
Speaker 1: an assembly language, not in a programming language or a
Speaker 1: high level programming language. C also owes a lot to
Speaker 1: the al Ole family of languages, and C has influenced
Speaker 1: tons of other languages, including C plus plus, Java, JavaScript,
Speaker 1: C Sharp, Pearl, PHB, and Python, among others. Now, in
Speaker 1: nineteen seventy, Nicholas Worth created a programming language as a
Speaker 1: teaching tool, and he wanted to create a language that
Speaker 1: students could easily grasp to get a handle on coding basics.
Speaker 1: He named his language after an inventor named Blaise Pascal,
Speaker 1: who is credited with inventing an early adding machine. So
Speaker 1: this language is of course known as Blaze. I'm kidding,
Speaker 1: it's actually Pascal. If you've heard of the Pascal programming language,
Speaker 1: it's the one that Nicholas Worth made in nineteen seventy.
Speaker 1: His goal was to teach students to think in steps
Speaker 1: that would promote good efficient structured programming. Now, structured programming
Speaker 1: is a specific approach to programming and involves using subroutines
Speaker 1: and block structures to carry out instructions. It's intended to
Speaker 1: help programmers build efficient, clean code. If you contrast this
Speaker 1: with the aproach of Basic, which creates lots of branching
Speaker 1: pathways with various go to statements, and in larger programs
Speaker 1: it can become a big, tangled mess that's difficult to follow.
Speaker 1: You know, you're tracing backward trying to find the line
Speaker 1: of code that leads you down a rabbit trail that
Speaker 1: eventually ends up with an error. It's tough to do
Speaker 1: if you've got a really big program in Basic. So
Speaker 1: Worth wanted to have a programming language that avoided that
Speaker 1: sort of spaghetti style of coding and makes something much
Speaker 1: more clean and efficient. Uh. You don't want to make
Speaker 1: any mistakes when you're coding, but if you do make mistakes,
Speaker 1: you want to be able to track down where that
Speaker 1: mistake is so that you can correct it. And that
Speaker 1: was worth uh motivation. I guess I should say it's
Speaker 1: more difficult with programming languages that go all over the
Speaker 1: place with their various jump commands structured programming approaches. Uh,
Speaker 1: end up discouraging that kind of that kind of thing.
Speaker 1: So in nineteen sixty three we get C plus plus,
Speaker 1: which I alluded to earlier. There's no C plus, just
Speaker 1: C plus plus. This is one also originated in Bell Labs.
Speaker 1: Yarn Strausstrop whose name I am certain I am Butchering
Speaker 1: built it by modifying the C programming language, and it
Speaker 1: became one of the most popular programming languages in the world.
Speaker 1: It's the code behind some of the most popular software
Speaker 1: packages out there, like m S Office and Firefox Inn.
Speaker 1: We got the Pearl language p e r L. Larry
Speaker 1: Wall created it when he found limitations in the Unix
Speaker 1: operating system. Specifically, he wanted to extract some data from
Speaker 1: a report and discovered that Unix just couldn't really do
Speaker 1: what he needed it to do, so he decided to
Speaker 1: make his own programming language to make sure that sort
Speaker 1: of thing didn't happen, which seems perfectly reasonable to me.
Speaker 1: PEARL stands for Practical Extraction Report Language and is also
Speaker 1: known for being utilitarian and practical. Pearl has evolved over time,
Speaker 1: even branching so that Pearl five and ROLL six are
Speaker 1: effectively two separate developing languages, both of which are evolving
Speaker 1: and both trace their history back. But they're different enough
Speaker 1: to be distinct languages. They're not not not like just
Speaker 1: variations on each other. In n Guido van Rossum created
Speaker 1: the Python language, named after the English comedy troupe known
Speaker 1: as Monty Python. And some of you guys know, I
Speaker 1: did a Monty Python reference a few episodes back, and
Speaker 1: I was amazed at the response of how many people
Speaker 1: immediately recognized the one I was I was making. Well
Speaker 1: on uh, you guys. I am very pleased that you
Speaker 1: all are Python fans, well that all the ones who
Speaker 1: wrote into me are Python fans. And my hat is
Speaker 1: off to you. Literally, as it turns out, I have
Speaker 1: taken off my hat now. Van Rowsom says that Python
Speaker 1: was largely borne out of boredom. According to the story,
Speaker 1: he was looking for ways to fill up the time
Speaker 1: during a Christmas holiday from work, so he sat down
Speaker 1: create a programming language, which seems like overkill to me.
Speaker 1: I think I could probably find other things to do,
Speaker 1: but then again, I'm not an expert in programming by
Speaker 1: any stretch of the imagination. Python is a general purpose
Speaker 1: language that uses indentation to denote code blocks, and this
Speaker 1: was to improve readability so that instead of a mass
Speaker 1: of brackets or parentheses, you could quickly pick out code
Speaker 1: blocks by looking at the white space that was in
Speaker 1: the code itself. You just look for that white space
Speaker 1: that would indicate where the block would begin. It's not
Speaker 1: the only type of programming language that does this, but
Speaker 1: many programmers say that Python is one of the more
Speaker 1: readable programming languages and a good choice for beginners who
Speaker 1: want to get into coding. Another interesting thing about Python
Speaker 1: is that supports multiple programming philosophies, so you can code
Speaker 1: using a procedural approach or functional programming, for example. And
Speaker 1: Python has within it the ability to express concepts in
Speaker 1: fewer lines of code then some other programming languages, which
Speaker 1: makes it a little simpler to use. Well, we've got
Speaker 1: one more block of programming languages that we need to
Speaker 1: talk about before I do that. However, let's take a
Speaker 1: quick break to thank our sponsor. So in you had
Speaker 1: a fellow named Yokihiro Matsumoto who took several programming languages,
Speaker 1: including Lisp, Pearl, small Talk, and more and effectively put
Speaker 1: them all on a blender, hit that that super blend button.
Speaker 1: You know, he's really shaking him up, and created a
Speaker 1: new language he called Ruby. Now. Matsumoto said his guiding
Speaker 1: principle was to create a programming language that made sense
Speaker 1: and was easy for programmers to work in. He wanted
Speaker 1: a true object oriented language and felt that Pearl four
Speaker 1: and Python weren't measuring up in his estimation, and he
Speaker 1: was worried that too many programming languages were being built
Speaker 1: with the machines in mind. He was saying, these programming
Speaker 1: languages are being designed by people who want to take
Speaker 1: the you know, the most advantage of a machine's processing power.
Speaker 1: They want code that's going to be fast to execute
Speaker 1: and efficient. But he said that that kind of code
Speaker 1: is not always the most user friendly or programmer friendly,
Speaker 1: and that could be really difficult to program in. So
Speaker 1: he said, you should put the programmer in mind first,
Speaker 1: not the machine. Worry about how easy it is to
Speaker 1: use before you worry about how quickly a processor is
Speaker 1: going to be able to handle the programming language. Uh.
Speaker 1: He says that otherwise your priorities are all whackadoodle, which
Speaker 1: is me paraphrasing. He didn't actually say whackadoodle as far
Speaker 1: as I know. Within Ruby, there is a framework that's
Speaker 1: been used for building websites, and it is now known
Speaker 1: by its own name. It is Ruby on Rails. This
Speaker 1: is a set of rules meant to allow for the
Speaker 1: quick construction of websites, and it was actually extracted by
Speaker 1: David heine Meyer Hanson in two thousand five from a
Speaker 1: project he had created for his work at a company
Speaker 1: called thirty seven Signals. So there are a lot of
Speaker 1: similarities between Ruby and Ruby on Rails, but Ruby on
Speaker 1: Rails is typically reserved specifically for website implementations. In the
Speaker 1: mid nineties, there was a web developer named Rasmus lard
Speaker 1: Orf who was not happy about the Pearl scripts he
Speaker 1: had to use in order to maintain his personal web page.
Speaker 1: So as the mid nineties, the web was not old
Speaker 1: at this point, and he was thinking that this this
Speaker 1: series of Pearl scripts he had to use in order
Speaker 1: to create the functionality he wanted, it just wasn't working
Speaker 1: the way he wanted to. So he decided he would
Speaker 1: make a replacement for it, and that became the PHP language,
Speaker 1: which stood for Personal Homepage language now need to learn off.
Speaker 1: There was never any intention on his part to make
Speaker 1: PHP and actual programming language. It was meant to run
Speaker 1: scripts to make it easier to maintain a web page
Speaker 1: and that was it. But he kept on adding functionality
Speaker 1: to it. It would get bigger and more robust, over time,
Speaker 1: and eventually it got away from him, and he actually
Speaker 1: once said he didn't know how to stop it from
Speaker 1: evolving into a full programming language. So chances are it's
Speaker 1: sky Net now. Meanwhile, over at Sun Microsystems you had
Speaker 1: James gos Ling leading a team of programmers and developing
Speaker 1: what would become the Java programming language. It was originally
Speaker 1: intended as a programming language for interactive television set top boxes,
Speaker 1: so essentially it was a web TV programming language. Now,
Speaker 1: Java is a right once run Anywhere or war RA
Speaker 1: programming language w o r A. That means you should
Speaker 1: be able to build a program in Java and have
Speaker 1: it run on any Java supported platform with out the
Speaker 1: need to recompile it. One thing I find fascinating is
Speaker 1: that Java is a programming language that does not get
Speaker 1: translated into machine code. Typically that's the way these high
Speaker 1: level languages work. You have to translate it, you have
Speaker 1: to use a compiler translated into what a machine can
Speaker 1: actually understand. But instead Java runs on top of a
Speaker 1: virtual machine. Again, this was something that was first established
Speaker 1: way back with small talk. But a virtual machine is
Speaker 1: is what it sounds like. It's like a simulated computer.
Speaker 1: It It in turn runs on top of actual hardware,
Speaker 1: so Java runs on this virtual platform, not on the
Speaker 1: hardware underneath, and the virtual platform takes care of everything.
Speaker 1: Java tends to be used on the back end of
Speaker 1: the web, and it powers website functionality, so it's on
Speaker 1: the server side of the web world. And it's also
Speaker 1: a popular programming language for Android apps. It was named
Speaker 1: after Coffee, which I approve of. It was also designed
Speaker 1: to make it easier for programmers to spot errors when
Speaker 1: they happen, since mistakes are bound to be made, and
Speaker 1: making it easy to find them speeds up the programming process.
Speaker 1: Java is often compared to see sharp because both languages
Speaker 1: follow a strict set of rules to discourage mistakes, so
Speaker 1: you don't have as much flexibility. The rules are very,
Speaker 1: very strict, but once you learn those rules and you
Speaker 1: follow them, you're less likely to make errors that are
Speaker 1: going to turn your program into a gigantic mess. Uh.
Speaker 1: See Sharp, by the way, as always referred to as
Speaker 1: or sometimes referred to rather as Microsoft's Java. It was
Speaker 1: developed by Microsoft. It's not quite as versatile as Java
Speaker 1: when it comes to the WARA approach. It doesn't run
Speaker 1: on as many different platforms, as Java does. However, it
Speaker 1: does work very well within Microsoft environments. Now, not long
Speaker 1: after Java emerged, the world got a chance to use
Speaker 1: Java script. And the two names make it sound like
Speaker 1: JavaScript maybe came from Java, or that they are closely
Speaker 1: related in some way and maybe they follow the same
Speaker 1: rules or have the same syntax. But that's misleading. JavaScript
Speaker 1: and Java are actually unrelated and have very different semantics.
Speaker 1: It's an enormous headache if you're trying to explain to
Speaker 1: someone who doesn't know anything about programming that these two
Speaker 1: things that are named so similarly have no real connection
Speaker 1: with one another. Now, originally JavaScript was called Mocha. Brendan
Speaker 1: Ikes developed it over at Netscape as a client based language,
Speaker 1: meaning this was a programming language that we run inside
Speaker 1: web browsers rather than on the server side like PHP wood.
Speaker 1: JavaScript was intended to make websites more dynamic and interactive,
Speaker 1: and many web based games are programmed using JavaScript. In fact,
Speaker 1: it's considered a core technology for the web, along with
Speaker 1: HTML and CMS, so much so that all modern web
Speaker 1: browsers support JavaScript without the need for an additional plug in.
Speaker 1: So while you might need a plug in for something
Speaker 1: like Adobe Flash, you typically don't need a plug in
Speaker 1: for JavaScript. It's built into the web browsers themselves. That's
Speaker 1: how important JavaScript is now. This is just a small
Speaker 1: selection of some of the more popular programming languages out there,
Speaker 1: and programmers are creating new ones all the time. For example,
Speaker 1: one young programming language is Swift, which is published in
Speaker 1: two thousand fourteen. That's an Apple based programming language intended
Speaker 1: so that programmers can develop applications for iOS, mac os,
Speaker 1: and other Apple operating systems and products. It's a successor
Speaker 1: to Objective C, which is the programming language Apple had
Speaker 1: been relying upon for its OS ten products. But that's it.
Speaker 1: That's all I've got for today. That's it, as in
Speaker 1: that's all I have not that's it, as in that's
Speaker 1: all the different programming languages. Again, there are lots of
Speaker 1: other programming languages. I touched on some of the most
Speaker 1: popular ones, like Java and Python, but there are tons
Speaker 1: of other ones out there. And while they can seem
Speaker 1: intimidating to a newcomer, if you're just staring ing at
Speaker 1: a sheet of code and you have no grounding in
Speaker 1: it whatsoever, it's gonna look incomprehensible to you. It might
Speaker 1: seem like, how how could this be any easier to
Speaker 1: understand than machine code is? But honestly, all it takes
Speaker 1: is some effort to learn the various rules and the
Speaker 1: semantics and the syntax of these languages, and pretty soon
Speaker 1: you're gonna be able to make your own code if
Speaker 1: you're so inclined. So if you're interested in programming, you
Speaker 1: really should pick up a book or two, especially on
Speaker 1: languages that sound interesting to you, and just dive into it.
Speaker 1: You'll learn a lot more about the various approaches to
Speaker 1: programming and the strengths and disadvantages of each one. And
Speaker 1: most programmers they tend to specialize in maybe one or
Speaker 1: two or maybe maybe three languages, and beyond that they
Speaker 1: typically have heard of and maybe worked with a couple,
Speaker 1: but they don't have a real grounding in them. So
Speaker 1: that's perfectly fine. It happens you you find what works
Speaker 1: for you, what speaks to you, and go and explore it.
Speaker 1: It's a good way to learn more about the ways
Speaker 1: that we interact with our machines. You'll find out what
Speaker 1: fits your style, and you'll understand all those awesome programmer
Speaker 1: jokes that I still have to have people explain to
Speaker 1: me now. Guys, even though that wraps up this episode,
Speaker 1: it's not not time for me to say goodbye yet
Speaker 1: because I have a question for you. Do you have
Speaker 1: anything you want me to talk about, because if you do,
Speaker 1: you need to let me know. Send me an email.
Speaker 1: The address is tech stuff at how stuff works dot com,
Speaker 1: or drop me a line on the Facebook's or the
Speaker 1: twitters tex stuff hs W as the handle I use
Speaker 1: it both of those for this show. You can watch
Speaker 1: me live on twitch dot tv slash tech Stuff. I
Speaker 1: record on Wednesdays and Friday's. Just go to twitch dot
Speaker 1: tv slash tech Stuff. You'll be able to find the
Speaker 1: schedule right there and see when you can tune in
Speaker 1: to watch. You join the chat room. I like to
Speaker 1: chat with my viewers and find out what's going on
Speaker 1: in their lives, so be part of the conversation. I
Speaker 1: look forward to seeing you and I'll talk to you
Speaker 1: again really soon for more on this and thousands of
Speaker 1: other topics. Because it how stuff works dot com.