Click here to Skip to main content
15,508,200 members
Articles / Programming Languages / C
Technical Blog
Posted 20 Nov 2014

Tagged as

Stats

35K views
10 bookmarked

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
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 5:18
professionalgordon8816-Apr-15 5:18 
QuestionMy vote of 5 Pin
Ray San14-Apr-15 12:14
professionalRay San14-Apr-15 12:14 
GeneralMy vote of 1 Pin
JimD.999914-Apr-15 10:35
JimD.999914-Apr-15 10:35 
GeneralRe: My vote of 1 Pin
gordon8816-Apr-15 3:34
professionalgordon8816-Apr-15 3:34 
QuestionThe dark arts of embedded programming Pin
Member 1103480614-Apr-15 9:00
Member 1103480614-Apr-15 9:00 
QuestionAbout the need to learn a low-level language... Pin
Christian Vigh14-Apr-15 6:19
Christian Vigh14-Apr-15 6:19 
QuestionSort of on the right track ... but Pin
irneb14-Apr-15 4:15
irneb14-Apr-15 4:15 
Question[My vote of 2] going to vote a 2. Pin
Micah Hawman13-Apr-15 6:13
Micah Hawman13-Apr-15 6:13 
AnswerRe: [My vote of 2] going to vote a 2. Pin
Afzaal Ahmad Zeeshan13-Apr-15 7:00
mveAfzaal Ahmad Zeeshan13-Apr-15 7:00 
GeneralMy vote of 3 Pin
Paul M Watt13-Apr-15 5:52
mentorPaul M Watt13-Apr-15 5:52 
GeneralRe: My vote of 3 Pin
Afzaal Ahmad Zeeshan13-Apr-15 6:45
mveAfzaal Ahmad Zeeshan13-Apr-15 6:45 
GeneralRe: My vote of 3 Pin
Paul M Watt13-Apr-15 8:41
mentorPaul M Watt13-Apr-15 8:41 
No, there is no need to state that these are your opinions, it's implied based on the type of article. Also, your experience and opinions are very welcomed at CodeProject.

You do strongly state how often C should be used, 90%. This is a very strong statement, because it implies the majority of applications have been written in the wrong language. It should be noted, your strong statements have provoked the great number of comments that you are receiving, with both praise and criticism.

With that said, here is my opinion based on experience:

It takes much more effort and discipline to write programs in these low level languages.
The further away from the concept of memory, processing cycles, computer architecture and even operating system, the easier it becomes to focus on the problem you are trying to solve.

Removing these abstractions creates more details for the developer to manage. The program then becomes more complex, and unnecessary complexity kills software design and implementations faster than anything else I can think of.

This is true no matter what level of the software stack you are at, as well as which language your program is written.

QuestionMy thoughts exactly! Pin
yafan13-Apr-15 4:51
yafan13-Apr-15 4:51 
AnswerRe: My thoughts exactly! Pin
Afzaal Ahmad Zeeshan13-Apr-15 4:57
mveAfzaal Ahmad Zeeshan13-Apr-15 4:57 
GeneralMy vote of 5 Pin
marekpavlu13-Apr-15 3:42
marekpavlu13-Apr-15 3:42 
AnswerRe: My vote of 5 Pin
Afzaal Ahmad Zeeshan13-Apr-15 4:57
mveAfzaal Ahmad Zeeshan13-Apr-15 4:57 
GeneralMy vote of 5 Pin
Tomas Takac22-Dec-14 11:58
Tomas Takac22-Dec-14 11:58 
AnswerRe: My vote of 5 Pin
Afzaal Ahmad Zeeshan23-Dec-14 3:29
mveAfzaal Ahmad Zeeshan23-Dec-14 3:29 
Questionmy vote of 1 - please don't patronize people Pin
Mr.PoorEnglish21-Dec-14 14:28
Mr.PoorEnglish21-Dec-14 14:28 
AnswerRe: my vote of 1 - please don't patronize people Pin
Afzaal Ahmad Zeeshan22-Dec-14 0:53
mveAfzaal Ahmad Zeeshan22-Dec-14 0:53 
GeneralMy vote of 5 Pin
Renju Vinod16-Dec-14 19:14
professionalRenju Vinod16-Dec-14 19:14 
AnswerRe: My vote of 5 Pin
Afzaal Ahmad Zeeshan17-Dec-14 4:15
mveAfzaal Ahmad Zeeshan17-Dec-14 4:15 
QuestionNot learning C considered bad Pin
Bob Van Wagner22-Nov-14 15:53
Bob Van Wagner22-Nov-14 15:53 
AnswerRe: Not learning C considered bad Pin
Afzaal Ahmad Zeeshan22-Nov-14 23:10
mveAfzaal Ahmad Zeeshan22-Nov-14 23:10 
GeneralRe: Not learning C considered bad Pin
Bob Van Wagner23-Nov-14 5:03
Bob Van Wagner23-Nov-14 5:03 

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.