Computing Reviews

C is not a low-level language
Chisnall D. Queue16(2):18-30,2018.Type:Article
Date Reviewed: 10/21/20

Early computers were programmed with low-level languages that were very close to their physical architecture. Although those languages guaranteed efficient use of machine resources, they were not particularly user-friendly, meaning it was hard for researchers in any domain outside computer science to write programs that solved their problems. The C programming language was developed as an effort to overcome these difficulties. It was, at the same time, compatible with the greatest number of computer architectures and more comprehensible by people who were not computer scientists. Yet as processor architecture evolved and became more sophisticated, the C language developed problems of its own, some of which are highlighted in this article.

In short, C natively uses sequential execution and flat memory spaces--no problem for early computers where processor architectures were built precisely on those requirements, but a big pain for modern computers where processors heavily use threading for program execution and caching for fast data retrieval. Compiling C programs to make use of these features creates huge, inefficient, low-level programs. On the other hand, forgoing these features makes inefficient use of processor power. More alarmingly, these weaknesses have been known to be exploited by the Spectre and Meltdown viruses. The author’s answer to this issue seems rather blunt at first: stop using C when programming on machines with modern processor architectures. On second thought, though, this recommendation holds only for newer code; the world literally runs on plenty of legacy C programs, and they continue to be efficient and reliable.

Reviewer:  Andrea Paramithiotti Review #: CR147087 (2102-0040)

Reproduction in whole or in part without permission is prohibited.   Copyright 2024 ComputingReviews.com™
Terms of Use
| Privacy Policy