- Well now that we have an idea in place
let's talk a little bit about it
and then get ready to do something with it.
So, the language in this course is C,
most specifically, the C11 version of C.
What's so great about C
that it's so important for so many people to learn about?
So a snippet to history, Dennis Ritchie was at Bell Labs.
He is the person who recently died unfortunately
but he invented the C Programming Language in 1972
or so you thought.
Actually, C is a successor for language called B
developed by Dennis Ritchie's colleague Ken Thomson
which in turn, you may guess,
is a successor for another language or languages.
There are many many languages in use today
but there's something really special about C.
Originally C was developed for computer programmers.
There are very few languages that have this mindset.
If you're not a computer programmer by profession
or if you're just starting,
you may not be aware of what the flavor mindset
other languages have
but as you get to know C better
you'll appreciate some of the things
that C can do for you
because it's so integrated with the UNIX operating system
and with the way programmers think.
C was designed as a practical tool
not necessarily an academic tool like Pascal.
Pascal is the language that was widely used
in the 80's and late 70's.
It was a simple language that was designed,
among other things,
to help teach freshman and professional later on
how to program first on mainframe
and then on other computers.
UNIX was the operating system that was developed in part
as an academic exercise.
However, UNIX didn't have good programming tools.
This is where C was the language
that was supposed to take the leading role in providing
that set of tools that are both powerful and practical.
C is not really a high level language
like most people refer to.
It is sort of a hybrid language.
It has features of high level languages
but it also has feature of low level languages
often referred to as Assembly.
C implements an approach to programming called Functional,
we will talk about this a lot,
as opposed to, for example object oriented
a term you may have heard
if you are interested in computer science
and computer programming.
C11 is the current standard for C.
It started to be developed in the end of 2007, 2008.
It has been with us for quite awhile some time.
What you need to know is that if you try
to use an older book that refers for example
to a standard like C99 or C98 or earlier
there are some minor changes
that will cause your programs not to run today.
However, for the purposes of this course
we are using the very very standard version of C
that withstood changes throughout probably about 30 years
or so since people first started to talk about C.
Other advanced topics like concurrency, threads,
part of the programming in security
those are the main issues
that the new standard is dealing with.
You shouldn't be concerned without those
because they are irrelevant to the topics
discussed in this particular course.
One of the reason we need standards is because
we want the language
to be available for programmers on multiple machines,
we want to ensure that if you like to program on a Mac
and your code is intended to run on Windows
then you don't have to switch every single tool,
every single language, so once you learn the language
that language should work
pretty much the same on every machine.
Even though the tools may be machine specific
the language itself should be the same.
Another reason that the C11 Standard
is becoming more popular is because
there is a cousin to C called C++
which is an object oriented version of C
which is more modern and has
some features that C probably didn't have.
So C11 now is becoming more compatible with C++
to the point where, in many respects the language C
has become a subset of C++.
Therefore, should you like to learn more
about programming in the C family of languages
it should be a fairly easy transition
for you to go from C to C++ once you really master C.