Wednesday, May 15, 2013

Chapter 1: History!

I like this textbook. As I've scanned over the contents, it seems very well-written and clear, with good information and explanations. It begins with the history of C, and how it came to be. The links are going to typically be Wikipedia links that I skim over for additional information and provide here for the convenience of anyone following along.

The textbook I'm using.





"What is C? The simple answer -- a widely used programming language developed in the early '70s at Bell Laboratories..." -K.N. King

It is a by-product of UNIX, developed by Ken Thompson, Dennis Ritchie, Brian Kernighan, and others. Thompson was the (sole!!) writer of the original version of UNIX in '69, which ran on a DEC PDP-7 computer. UNIX was similar to other programs of its time, in that it was written in assembly language, making it painfully difficult to debug and enhance. Thompson decided a different language needed to be written for UNIX to be developed upon, and designed B to take on the task.

B is based on BCPL, also developed in the mid-60s; and BCPL is based on Algol 60. There was a period of time, during which Thompson tried re-writing UNIX in B, but he discovered that B was not very compatible to the newer computers of the early-70s. Ritchie took it upon himself to develop an extended version of B, which he called NB (or "New B"), until it began to diverge from the language upon which it was based. At this point, he changed the name to C.

By '73, C was stable enough to support UNIX and added the benefit of portability and increased compatibility.

Through the 70s, particularly between '77 and '79, C continued to evolve and become more flexible. During this time, Kernighan and Ritchie published the first C compendium, entitled The C Programming Language, which quickly became the standard for the language (known as K&R or "The White Book").

Source: Wikipedia
While C programmers remained few throughout this time, by the 80s, C had begun to establish itself on other operating systems, namely the IBM PC platform that was rapidly growing. Unfortunately, due to a lack of complete documentation of some features in K&R, the unexpected popularity boom introduced programmers and compilers who began treating these features differently. Features were added and removed after the publication of K&R as well, adding to the confusion. Since there was little in the way of tracking these features (which ones were a part of C, which were UNIX, which were even still present), C was in danger of losing its portability.

A U.S. standard for C began in '83 with the support of the American National Standards Institute (ANSI). The next few years would be filled with revisions, before the formal approval was made in December of '89, followed by approval by the International Organization for Standardization (ISO). This version is known as C89 or C90 to distinguish it from the original version (referred to as K&R C).

There were a few changes in '95, which are described in a document known as Amendment 1; but more significant changes were made in '99 that prompted a publication of a new standard. This became known as C99.

C99 is still not universal and this author estimates that it will be some time before all C compilers are "C-99 compliant".

We segue now into C-Based Languages, of which several are detailed:

  • C++ adds classes and other features to support object-oriented programming.
  • Java is based on C++, but inherits many C features.
  • C# is more recent, having been derived from C++ and Java.
  • Perl was originally a fairly simple scripting language, but has grown and adopted many C features.

The author describes some reasons to learn C, despite the improved features of the newer languages. As I read through them, I see the same reasoning that I had when deciding to begin: All of the languages above are based on C; therefore, learning C will give insight into these other languages. Because C has been around for so long, there are many older programs written in C that may need someone to maintain them; but there is also a demand for the simplicity of C in newer programming. Learning this language seems to open many doors (not in the least, helping me attain my goal of designing a story-driven game of my own).

This is where I'll pause for today. Next time I take notes, I'll be getting into the Strengths and Weaknesses of C as a whole. Then... It will be time to tackle some programming!

No comments:

Post a Comment