From the course: C Essential Training

What is C ?

- [Instructor] C is a powerful, flexible, general purpose programming language that supports a number of different coding paradigms, including object-oriented, procedural, functional, and generic programming. What is now called C was originally C with classes, developed in the late 1970s by Danish computer scientist, Bjarne Stroustrup. C began its life as a set of enhancements to allow object-oriented programming in C. C is an extension of the C language. The standard incorporates the entire C language, adding many powerful features while retaining as much of C's syntax, efficiency, and utility as possible. Over 40 years later, C remains a best practices choice for many types of projects, including large-scale systems and applications. C is used to write code at all levels, including firmware, operating systems, and large-scale applications. Today, vast numbers of medium to large-scale applications are written in C . The list is huge and it includes every version of Windows since 1.0, the parts of Unix that aren't written in plain C, major parts of macOS are written in C , other parts are in Objective-C, which is also based on C. Major business applications like Microsoft Office and QuickBooks are written in C . Adobe Photoshop, Illustrator, InDesign, Firefox, Google Chrome, and most web browsers are written in C . Major websites like Amazon, Facebook, and Google are either written in or have significant backend resources written in C . In fact, most major programming languages, including Java, PHP, Python, and Perl are written in C or C . C is made up of a number of different components, parts of which require understanding distinct sets of grammar. You can think of it as five connected languages. The C language itself is the basis of C and is entirely incorporated in its definition. As part of the C language definition, the C preprocessor is also incorporated in C . C classes and objects are used for object-oriented programming patterns. C templates are used for generic programming. And the C Standard Template Library, the STL, provides a tremendous amount of common functionality. The STL, along with the C and C standard libraries are part of the C standard. The first standard for C was ratified by the ISO in 1998. This is commonly referred to as C 98. C 03 was essentially a bug fix release, so it's rarely referred to on its own. Most compilers that support C 03 simply refer to it as C 98. Ratified in August, 2011, C 11 was the first major extension to the C standard. It provided a number of new features, including the range-based for loop, type inference, lambda functions, an unambiguous null pointer constant, and many smaller new features. C 14 was another small maintenance release and did not include any major changes to the language. Ratified in December, 2017, C 17 includes mostly refinements to existing features. The C 20 standard includes a number of new features, including a modern text formatting library, modules, a ranges library, concepts, and coroutines. Some of these features are not yet implemented in the major compilers, so discussion of these newer features will be limited. Most of the features covered in this course apply to C 11 and beyond. We'll cover a few more modern features, in particular we'll use the C 20 format library. The current versions of all the major compilers in use today fully support C 17 and partially support C 20. C is a big subject that includes many topics. The scope of this course is limited to the essentials so you may work effectively in C . Here are some of the topics covered in this course. The basic syntax of C is mostly inherited from the C language. We'll cover this in chapters two through five. This includes thorough discussion of data types, standard operators, and functions. With a few exceptions, most of this is inherited from C. Classes and objects form the basis of object-oriented programming in C . This course will cover the basics of classes and objects. The companion course, C Advanced Topics, goes into much more detail. C provides a powerful generic programming framework called templates. A fundamental understanding of templates is important, and we will cover the basics here. The companion course C Templates And The STL covers further details. The Standard Template Library is a comprehensive library of containers and algorithms that makes extensive use of C templates. Again, we'll cover the basics here, and the companion course C Templates And The STL goes into greater detail. Because of the independent nature of the different parts of C , this course uses a language emersion approach. You will learn by using the language. You're encouraged to experiment often and make mistakes and learn from those mistakes. You'll often use features which have not yet been fully explained. This is necessary, as parts of the language and libraries are independent. Try not to worry about it. These features will be explained in time. You do not need to have any previous programming experience to learn C . In fact, back when I was first learning in the early seventies, my first language was C. Take your time, pause and rewind the lessons if you need to. There's no ideal pace to learn. Each of us are different. The best pace to learn is the pace at which you learn best. The examples in this course are all console applications. This allows us to focus on the C language itself without distraction from the unique requirements of the various graphical interfaces of different operating systems. Every operating system, including both mac and Windows, are capable of running standard C console applications. The C programming language is one of the most important languages in computing today. It is the go-to language for projects large and small and it forms the basis of other popular languages, like Java, C#, Python, PHP, and many others. There's a lot to cover here, so take your time, experiment, make mistakes, and enjoy the journey.

Contents