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