DEV Community

Discussion on: Is C still a high level language?

Collapse
 
caiangums profile image
Ilê Caian

I have some thoughts, so here we go:

  • First of all you need to know that concepts like "high-level language" are defined in the CS field. Read this article and consider checking out the CS course from Stanford or at Coursera. Concepts like that does not "change"
  • "It has no abstractions" you are wrong here. It has abstractions for basic types, concepts like Arrays and even syscalls. It also has abstractions for FILEs and a lot of things. If possible, check some basic C course and you will be amazed of how many things C can offer you!
  • "it has no pointers" you are also wrong. C has pointers, and pointers of pointers. They are representations of memory references.
  • "No string datatype": Do you ever wondered why the Strings and Arrays has so many methods in common? They are both almost the same thing: Arrays! 😁 Strings = Arrays of chars!
  • "C is still updated": When Linus was asked about changing from C to C++ the main language from Linux kernel, he answered with a message that C is a Stable language and C++ is continuously "messy" updated (with a lot of not so receptive words...)

C is a language to be used in some specific contexts. As we never should be doing a web-Scrapper using C when we have Python, I think we never will see an OS written in JS.

The answer to your question is: C is a high-level language and this will not change for the CS world too soon.

Collapse
 
delta456 profile image
Swastik Baranwal • Edited

I never said that C has no pointers. I meant C++ std::string.

I keep hearing that C is no longer a High Level Programming Language because it is no abstractions, has pointers, have to handle memory on our own, no string data type, unsafe etc.
Collapse
 
caiangums profile image
Ilê Caian

Actually, the tweet shared by this article said that, as you can see at this link:
twitter.com/ThePracticalDev/status...

About the STD: the C++ Standard Library is a implementation of common useful objects as abstractions. The existence of such thing in C++ doesn't invalidate that C has its own abstractions as I mentioned. I really suggest you to check how C language is constructed and how to implement some basic things such as a basic server with threads, open/read/write files or a basic calculator in C.

I have no intention to offend you but seems like you have no basic notion of how C language works or what is concepts like abstractions and basic data types.

Thread Thread
 
delta456 profile image
Swastik Baranwal • Edited

I get what you mean but people complain that they have to use char chr[] or char* chr for this.

Thread Thread
 
caiangums profile image
Ilê Caian • Edited

There's a big difference between people complaining about something and people being really mindful about knowing the options to it. Compare:

// C
char * str = "hello";
// C++
std::string str = "hello";

There are more letters to be written in C++ and you are including in your executable the full string.h header. Is that valid? Are you really using all of it? For a Desktop application, this makes no sense but for embedded systems, every byte counts.

  • "You can write using namespace std; and...": No. Do not do this in your code. Check this thread at StackOverflow and do some research about it and why is considered a bad practice.

For the 'string' issue, let me suggest another approach:

// C
typedef char * string;

string str = "hello";

As an answer to people who say things like: "C is bad because it doesn't have strings!", consider asking about what they are trying to do. In general, they are complaining about scapegoats.

Thread Thread
 
delta456 profile image
Swastik Baranwal

Definitely! I really agree with you. I hope Dev deletes/changes their tweet.