Programming languages shape the very world around us. From the smartphone in your pocket to airline guidance software, nearly all modern devices utilize code in some way.
There is an argument over which programming languages have been the most influential. But the top contender is C. It is the backbone of the Unix operating system and paved the way for the development of object-oriented programming.
It was the first language to allow operating system authoring with a “high level” language. This meant less expertise was needed to get advanced functionality from multiple types of hardware.
It allowed a full reboot of the Unix operating system, letting it become one of the first portable OS platforms. A compiler for two different computers could “port” C code between the two and work on both machines, and that was a groundbreaking achievement.
What Can C Be Used For?
The C programming language is a general-purpose language with almost endless application.
While C is considered a high-level language, it is far closer to the hardware than most other languages. For that reason, many languages that are even “higher” than C will use C to compile (Python for example). Some of the primary uses for C include:
- Operating Systems
- Language Compilers
- Language Interpreters
- Device and Drivers
- Databases and Utilities.
*An Assembler is a controller for a low level ‘assembly language‘ which uses a CPU level coding syntax to create machine code, which is pure binary.
Introduction and Conceptual Understanding
Getting introduced to the concepts on which C is built is required to start authoring programs.
The Difference Between C, C++, Objective-C, and C#
These four different programming languages all have very similar names, but there is a big difference in how each one operates and what it gets used for.
- C is the very original, it’s the ‘portable’ language that gets used on nearly all machines for running compilers and controlling the core functions of an operating system.
- C++ was created in 1979, originally called “C with classes” due to the way that object-oriented programming with classes was introduced. C++ shares the same markup syntax as C, and is very similar other than the fact that it uses classes and creates objects, which is something that pure C cannot do.
- Objective-C was started in 1983, but became popular more recently. It has become the driving force behind OS X and iPhone apps, and can be considered a superset of the C language. Similar to C++, it makes C more object-oriented. It is limited to Apple hardware.
- C# (pronounced see-sharp) was created by Microsoft in 2001, as their premier new object-oriented language for the .NET platform. C# doesn’t actually have a lot in common with C, C# is more of a rival to the Java platform. At the time, Microsoft had been naming languages with the # tag, so A#, F# are other languages. The formatting and library management is a lot different from C In addition, C# is not nearly as close to machine code as C. (Although C# can handle machine code in a limited way through Microsoft Intermediate Language — MSIL.)
Here’s a few places to learn more about these differences:
- C, C++, C# and Objective C — Skillcrush
- Should I learn C or C++ Before Objective C? — Techy Help.
Best Resources for Learning C
Introductions to concepts and knowledge of different languages are extremely useful. But once you’ve decided learning C is for you, the next step is to find resources to get you learning C.
There’s a huge variety of online video lectures, demos, and virtual courses to help you. In addition, you will also want to get a working compiler or interactive development environment (IDE), so that you can actually start coding.
Online Courses and Tutorials
- Learn-C.org: a great site with an interactive coding window.
- CProgramming.com: learn both C and C++ through tutorials, quizzes, and references.
- WiBit.NET Course in C: interactive videos, also available on the Apple and Windows stores.
- Practical Programming in C — MIT Open Courseware: free lectures from one of the world’s best institutes.
- Computer Science for Everyone by Carl Herold: a YouTube playlist with great walk-through explanations.
Useful Books and Guides
- C Programming Absolute Beginner’s Guide: by Greg Perry & Dean Miller.
- The C Programming Language 2nd Edition: by Brian W. Kernighan.
IDEs and Compilers for C
Most IDEs are built to handle both C and C++. Depending on how the IDE project is setup, you may need to manually name your files .C instead of .CPP.
- Eclipse IDE: cross platform.
- Netbeans IDE: cross platform, runs on Java.
- Code::Blocks: C, C++, Fortran IDE, cross platform.
- CodeLite IDE: C, C++, PHP, NodeJS IDE.
- Visual Studio: Windows only, but very a solid debugger.
- Gnu Compiler Collection — GCC: command line compiler for C, C++, Objective-C and more; cross platform.
- lcc-win: a Windows C compiler by the University of Virginia.
If you plan to specialize in a particular area of programming, it is a good idea to find online communities where people share your interests.
If you’re developing for hardware, for example, try to find the forum for that kind of hardware. This will allow you to start building relationships with the other developers.
Establishing a role in a community is a great way to advancing in your coding. You will also want to interact with other C programmers more generally. Here are a few tools and community resources you can use for this:
- Stack Overflow (tagged C): simply the best resource for questions and problem solving.
- The C board — Cprogramming.com: very well established message board with many active users and a lot of helpful threads.
- C and C++ forum — dreamincode.net: more focused on C++, but with lots of good information.
- ProgrammingForums.org: forum on application development.
You might also look for local developer gatherings in your area, either on Meetup.com, eventbrite, or some other event application. Finding real developers to talk to face to face can speed up the learning curve dramatically.
What Should I Do Next?
The most important thing to do when you start out is to determine what your goals are going to be. Generic resources on a wide range of topics will always be available and easy to find, but as you get more advanced, it gets harder to find answers quickly.
Set your goals, learn the basics, and specialize with the help of a community. Start a project, experiment, learn, and grow.
Good luck out there!