Click here to Skip to main content
15,886,830 members
Articles / Programming Languages / C

New Developers and the Importance of C

Rate me:
Please Sign up or sign in to vote.
4.52/5 (29 votes)
12 Apr 2015MIT6 min read 39.6K   10   32
New developers and the importance of C; this blog post is about my opinion and views about C programming language's importance for beginners in programming. Yours might be different!

Introduction

Computer programming is a process in which programmer would create and develop software for the computers which would run a program, to solve a finite set of problems using a computer. Computer programming has been up since the beginning of computer system. In the first generation a vacuum tube was used, and after it since the transistors, binary language has been used to program the computers. Low-level programming has been introduced since Colossus; the first programmable computer.

Many changes have been made in this field and developers are stepping into this field to make computer systems even better than before. We are finding way better computers and their logic is even stronger than the previous era.

OS and the Programming Need

There was a need of an OS, since for each computer, the architecture was the same and the programs that it would run were also the same, but they had to write the same Operating System that would take control of the basic operations of the computer hardware for each of the computers separately. So, many operating systems were introduced. Dennis Ritchie was the guy behind re-writing the Unix operating system in C programming language. To teach those OSs, a language was required to tell the computer system what to do. Programming is a method of creating such applications that would guide the computer’s system in executing the commands.

C is a low-level programming language, in which control over hardware is also provided. It was developed by Dennis Ritchie between 1969 and 1973 at AT&T Bell Labs. You can easily control the memory, processor and the registers using low-level language and you can manage the connected devices too. Assembly language is one of the first low-level languages introduced after machine language (binary). But it was also less-understandable by humans as compared to C.

C Programming Language

C language is also known as the father of modern programming. Although there were other languages like BASIC and some others, C was outstanding and outweighed in plus points as compared to them.

C language is a general-purpose programming language. There are no classes, no interfaces in C. But there are much more powerful tools in it, pointers and much more which are used to manipulate the memory in run time. C has been used as the building-block for many of the languages of high-level programming, which include Java, D, Visual C#. C++ and Objective-c, when compiled, create a C language code and the C code is then compiled converting the code into native code enabling faster processing since the code is directly understandable by the computer once executed.

Why There Are No More Good software Anymore?

The new generation of the developers is really busy in their “get attention of public, specially girls” sort of thing and they lag the vital component of being a programmer which is, to help build a better digital world. I have been on too many forums, where new developers come and ask questions as vague as, why do I get Null error? I mean, really? This tells that the person, OP, does not have very basic understanding of the “programming” concept and he just heard that Bill Gates is the richest person alive, he build a computer software known as MS-DOS and hey man, I can do the same here. All I have to do is to create a software and yeah, I will be a billionaire. This mentality of the new developers doesn’t let them win the race.

Why Learn C

C programming is vital, and must be taught instead of C++. Although C++ covers the concepts of Object-oriented programming, C is the main language that almost 90% of the programmers must know. 10% can rely on C++ or any other high-level language. On my journey, I have learnt Visual C#, Java, Visual C++, Visual Basic, ASP.NET and many more languages and I have always found people complaining about the speed of the language and the answer was always to learn C language or to use C++, since they compile down to the native code making it faster for the application to run.

Problems at College Level

The college I study at teaches us; or should I say only taught us, C++ for 2 months and it was all cramming; murder of the programming concept is to teach programming on paper. Although it is because of the lack of resources here, but still new programmers must be taught programming skills. I remember my days of HTML learning, although it was never a tough language but for me, without any knowledge and understanding, the ASP.NET code was like a petition against me.

Side-effects of Not Learning Low-Level Programming Language

Most of the embedded devices require low-level programming, most of the microcontrollers require the developer to have enough understanding of the low-level programming, and the concepts involved in low-level programming such as memory management, pointers and other concepts that are required in programming for microcontrollers, or other microchips and embedded devices. For a modern developer (a developer who can only write applications on .NET framework, or Android OS) would never be able to program for such devices. There is another concept called Internet of Things that can be however programmed using the .NET but devices connected to it must be programmed using a low-level language for a better output.

No General Support of these Languages

There is no support for C and other programming languages, such as Assembly, and the best IDE (at least in my opinion) Visual Studio doesn’t support the Assembly projects, but still MASM is included. That is why major colleges and institutions teaching software engineering and computer programming do not teach Assembly, C, or any other programming language that explains the computer programming concept in real. This removes any traces and interest of a programming student to better understand the computer architect and then produce the software for it. But instead, programmers are more-likely to be developing the applications for themselves, and not for public use.

Do or Die; C or Blind

Students must be taught the difference between a low-level programming and the high-level programming and their minds must be set to always prefer low-level programming instead of high-level programming; which in turn teaches them to go for the simplest and memory-efficient method for performing a task, rather than memory consuming task. You can think of it as the programmer must always go to the harder but efficient way and must always ignore the easy but vague way of doing programming. A framework that built the application might at any time get deprecated and so on. But an application developed using the low-level programming language would never fall short at any time. This ensures not only the efficiency, but the quality of the application. Low-level programming is also not bad for the person, it makes his mind able to solve basic riddles that he might face each day.

Online Resource for Learning C

I have been searching for a C compiler and a resource library to look deep into the C language, and I found the resource library at The C Library Reference Guide. Online compiler can be easily accessed at Compile and Execute C Online.

Own quote:

Programming is best hobby for our mind, if done in a low-level language. 

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
Software Developer
Pakistan Pakistan
Afzaal Ahmad Zeeshan is a computer programmer from Rabwah, Pakistan, currently living in The Netherlands, likes .NET Core and Node.js for regular everyday development. Afzaal Ahmad works at Adyen as a Developer Advocate.

He is an expert with Cloud, Mobile, and API development. Afzaal has experience with the Azure platform and likes to build cross-platform libraries/software with .NET Core. Afzaal is an Alibaba Cloud MVP, twice he has been awarded Microsoft MVP status for his community leadership in software development, four times CodeProject MVP status for technical writing and mentoring, and 4 times C# Corner MVP status in the same field.

Comments and Discussions

 
GeneralMy vote of 5 Pin
gordon8816-Apr-15 4:18
professionalgordon8816-Apr-15 4:18 
QuestionMy vote of 5 Pin
Ray San14-Apr-15 11:14
professionalRay San14-Apr-15 11:14 
GeneralMy vote of 1 Pin
JimD.999914-Apr-15 9:35
JimD.999914-Apr-15 9:35 
GeneralRe: My vote of 1 Pin
gordon8816-Apr-15 2:34
professionalgordon8816-Apr-15 2:34 
QuestionThe dark arts of embedded programming Pin
Member 1103480614-Apr-15 8:00
Member 1103480614-Apr-15 8:00 
QuestionAbout the need to learn a low-level language... Pin
Christian Vigh14-Apr-15 5:19
Christian Vigh14-Apr-15 5:19 
QuestionSort of on the right track ... but Pin
irneb14-Apr-15 3:15
irneb14-Apr-15 3:15 
Question[My vote of 2] going to vote a 2. Pin
Micah Hawman13-Apr-15 5:13
Micah Hawman13-Apr-15 5:13 
AnswerRe: [My vote of 2] going to vote a 2. Pin
Afzaal Ahmad Zeeshan13-Apr-15 6:00
professionalAfzaal Ahmad Zeeshan13-Apr-15 6:00 
GeneralMy vote of 3 Pin
Paul M Watt13-Apr-15 4:52
mentorPaul M Watt13-Apr-15 4:52 
GeneralRe: My vote of 3 Pin
Afzaal Ahmad Zeeshan13-Apr-15 5:45
professionalAfzaal Ahmad Zeeshan13-Apr-15 5:45 
GeneralRe: My vote of 3 Pin
Paul M Watt13-Apr-15 7:41
mentorPaul M Watt13-Apr-15 7:41 
QuestionMy thoughts exactly! Pin
yafan13-Apr-15 3:51
yafan13-Apr-15 3:51 
AnswerRe: My thoughts exactly! Pin
Afzaal Ahmad Zeeshan13-Apr-15 3:57
professionalAfzaal Ahmad Zeeshan13-Apr-15 3:57 
GeneralMy vote of 5 Pin
marekpavlu13-Apr-15 2:42
marekpavlu13-Apr-15 2:42 
AnswerRe: My vote of 5 Pin
Afzaal Ahmad Zeeshan13-Apr-15 3:57
professionalAfzaal Ahmad Zeeshan13-Apr-15 3:57 
GeneralMy vote of 5 Pin
Tomas Takac22-Dec-14 10:58
Tomas Takac22-Dec-14 10:58 
AnswerRe: My vote of 5 Pin
Afzaal Ahmad Zeeshan23-Dec-14 2:29
professionalAfzaal Ahmad Zeeshan23-Dec-14 2:29 
Questionmy vote of 1 - please don't patronize people Pin
Mr.PoorEnglish21-Dec-14 13:28
Mr.PoorEnglish21-Dec-14 13:28 
AnswerRe: my vote of 1 - please don't patronize people Pin
Afzaal Ahmad Zeeshan21-Dec-14 23:53
professionalAfzaal Ahmad Zeeshan21-Dec-14 23:53 
GeneralMy vote of 5 Pin
Renju Vinod16-Dec-14 18:14
professionalRenju Vinod16-Dec-14 18:14 
AnswerRe: My vote of 5 Pin
Afzaal Ahmad Zeeshan17-Dec-14 3:15
professionalAfzaal Ahmad Zeeshan17-Dec-14 3:15 
QuestionNot learning C considered bad Pin
Bob Van Wagner22-Nov-14 14:53
Bob Van Wagner22-Nov-14 14:53 
AnswerRe: Not learning C considered bad Pin
Afzaal Ahmad Zeeshan22-Nov-14 22:10
professionalAfzaal Ahmad Zeeshan22-Nov-14 22:10 
GeneralRe: Not learning C considered bad Pin
Bob Van Wagner23-Nov-14 4:03
Bob Van Wagner23-Nov-14 4:03 
The modern system of development and compile time complaints about programs, while immensely helpful for the novice, and even for the journeymen, is toxic for the master, and those who would become masters. To become a master your mistakes have to come at serious times. Like when there are a few million deployed units of you code. Or when a mistake costs a million dollars a hour until it is rectified, or the scariest cases: mistakes that cost lives, even possibly your own. Then a person gets serious about code, and how it works, and what happens when it doesn't.

Yet the great majority of people, of programmers, of IT managers, are afraid of that REAL LEARNING AND MASTERY PROCESS. Instead they replace it with super-smart IDEs that flag errors as they are typed and massive lists of bug checking in systems being built. Now as I said, those things are immensely powerful too. Yet beyond a pint in a human development they do NOT help and are toxic.

To get beyond that point you have to live with YOUR WORKING OR NONWORKING CODE in the real world, and a very real, dangerous real world. One where you will lose again and again. If you don't have some history of failed code that has caused real and significant harm in the world, I can't say you are a master. If your code has not caused a business failure, has gotten you fired for not working at the worst possible time, has not burped during a surgery, or dropped a missile from a wing at the wrong time, what kind of coder are you? It is hard to say you are a master. But failures do not made a master either. Mastery is about learning, fearsome learning, yet humbled learning. Mastery is never giving up on getting it right the next time, and about going forward and never backing off (or at least coming back into the fray of real life and coding in real life, after a "recuperation period" -- those can't be avoided sometimes).

That's the masters level of operation in living as a writer of real-world code. And the great majority of coders never get close to it. Nor do a great majority of computer scientists, and experts with many many certs, or managers who manage to keep their jobs. Whereas a master of a manager works to lose his job. Because every job is temporary, and when a project is done, or a process is established that works, the manager either has no more work available that would need his talents, or the project has been completed. This is MASTER level, remember. Most never reach to it, never even reach for it.

And as Peter Drucker said, in his massive opus, "Management", every knowledge worker is a manager. And we know that every coder is a knowledge worker. I wish that most would strive to be masters. Yet it is like choosing to take the path of hardship and struggle through life. That is the reality.

Anyway, learn C. Respect yourself. Respect your craft. Learn C. Or some language you can think algebra and computation in, a language rich in your crafts's history: APL, LISP and some others.

modified 23-Nov-14 10:27am.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.