C Developer Resources

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.

C has risen to became the dominant root of influence for C++, Objective-C, C#, Java, JavaScript, Perl, PHP, Python, and countless others. The language was created by Dennis Ritchie, between 1969 and 1973, at AT&T Bell Labs.

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
  • Assemblers*
  • 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 premiere 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:

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

Useful Books and Guides

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.

Community Resources

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:

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!