{"id":9236,"date":"2022-04-04T18:01:00","date_gmt":"2022-04-04T16:01:00","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=9236"},"modified":"2022-04-04T10:01:58","modified_gmt":"2022-04-04T08:01:58","slug":"c-isnt-a-programming-language-anymore-the-register","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2022\/04\/04\/c-isnt-a-programming-language-anymore-the-register\/","title":{"rendered":"C isn&#8217;t a programming language anymore \u2022 The Register"},"content":{"rendered":"<h1><em><a href=\"https:\/\/www.theregister.com\/2022\/03\/23\/c_not_a_language\/\">C isn&#8217;t a programming language anymore \u2022 The Register<\/a><\/em><\/h1>\n<blockquote><p><strong>C is often praised for being &#8220;close to the metal,&#8221; for being a &#8220;portable assembly language<\/strong>.&#8221;It was, once, but it hasn&#8217;t been since the 1970s; the underlying computational models of modern computers are nothing like the one that C represents, which was designed for a 1970s 16-bit minicomputer.<\/p>\n<p>&#8230;<\/p>\n<p>C is not just a programming language, it&#8217;s also an Interface Definition Language or IDL. IDLs are very important \u2013 as <a href=\"https:\/\/www.theregister.com\/1999\/05\/24\/lies_damn_lies_benchmarks\/\">we quoted back in 1999<\/a>, &#8220;the CORBA Interface Definition Language IDL is\u2026 &#8216;one of the most significant contributions in the history of computer science&#8217;.&#8221;<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p><!--more--><!--nextpage--><\/p>\n<blockquote>\n<div id=\"top-col-story\">\n<h1>C: Everyone&#8217;s favourite programming language isn&#8217;t a programming language<\/h1>\n<h2>&#8216;It has completely distorted the way we speak to each other,&#8217; says Swift and Rust boffin<\/h2>\n<\/div>\n<div id=\"main-col\">\n<div class=\"byline_and_dateline_and_share_and_comments\">\n<div class=\"byline_and_dateline\"><a class=\"byline\" title=\"Read more by this author\" href=\"https:\/\/www.theregister.com\/Author\/Liam-Proven\"> Liam Proven in Prague <\/a> <span class=\"dateline\"> Wed&nbsp;23&nbsp;Mar&nbsp;2022 <span class=\"slashes\"> \/\/ <\/span> 13:01 UTC <\/span><\/div>\n<\/div>\n<\/div>\n<div id=\"body\">\n<p>Aria Beingessner, a member of the teams that implemented both Rust and Swift, has an interesting <a href=\"https:\/\/gankra.github.io\/blah\/c-isnt-a-language\/\" rel=\"nofollow\">take<\/a> on some of those (and other) language&#8217;s problems \u2013 that C isn&#8217;t a programming language anymore.<\/p>\n<p>Beingessner should know. They&#8217;ve previously worked on and written about both <a href=\"https:\/\/gankra.github.io\/blah\/rust-layouts-and-abis\/\" rel=\"nofollow\">Rust<\/a> and <a href=\"https:\/\/gankra.github.io\/blah\/swift-abi\/\" rel=\"nofollow\">Swift<\/a>.<\/p>\n<p>There are many problems with the C language. To pick just a few: it can be difficult to <a href=\"https:\/\/hal.archives-ouvertes.fr\/hal-01633123\/document\" rel=\"nofollow\">parse<\/a>; there are competing and subtly incompatible variants; and then there are the complex ways C defines and handles integers and other variables.<\/p>\n<p>For instance, after much <a href=\"http:\/\/archive.opengroup.org\/public\/tech\/aspen\/lp64_wp.htm\" rel=\"nofollow\">deliberation<\/a>, a bunch of companies called the <a href=\"http:\/\/sunsite.uakom.sk\/sunworldonline\/swol-03-1996\/swol-03-sunsoft.html\" rel=\"nofollow\">Aspen Group<\/a> settled on a programming model for 64-bit Unix and Unix-like OSes called <a href=\"https:\/\/techmonitor.ai\/technology\/aspen_group_hands_over_specification_proposals_overspill_to_xopen_will_implement_common_64_bit\" rel=\"nofollow\">LP64<\/a>, also known as &#8220;4\/8\/8&#8221;. Unfortunately, 64-bit Microsoft Windows uses a different model, called <a href=\"https:\/\/wiki.wireshark.org\/Development\/Win64\" rel=\"nofollow\">LLP64<\/a> or &#8220;4\/4\/8&#8221;.<\/p>\n<div class=\"adun_eagle_desktop_story_wrapper\">\n<div id=\"eagle_4\" class=\"adun gtag_display\" aria-hidden=\"true\" data-pos=\"mid\" data-raptor=\"eagle\" data-xxlg=\",mpu,dmpu,\" data-google-query-id=\"COeIuPL3-fYCFU7Juwgd6g4CBg\">\n<div id=\"google_ads_iframe_\/6978\/reg_software\/front_4__container__\"><\/div>\n<\/div>\n<\/div>\n<p>And that&#8217;s before the issues around <code class=\"\" data-line=\"\">intmax_t<\/code>, which the C99 standard <a href=\"https:\/\/www.boost.org\/doc\/libs\/1_55_0\/libs\/integer\/doc\/html\/boost_integer\/cstdint.html\" rel=\"nofollow\">defines<\/a> as &#8220;a signed integer type capable of representing any value of any signed integer type.&#8221; As software engineer JeanHeyd Meneide pointed out, this gets <a href=\"https:\/\/thephd.dev\/intmax_t-hell-c++-c\" rel=\"nofollow\">complicated<\/a>.<\/p>\n<p>In fact, it&#8217;s fair (if wildly controversial) to say, as this 2018 Association for Computing Machinery <a href=\"https:\/\/queue.acm.org\/detail.cfm?id=3212479\" rel=\"nofollow\">paper<\/a> puts it, that C is not a low-level programming language. As its subtitle says: &#8220;Your computer is not a fast PDP-11.&#8221;<\/p>\n<p>This is not a <em>relative<\/em> assessment: that is, it&#8217;s not saying that there are other programming languages that are lower-level than C. It&#8217;s an <em>absolute<\/em> one: C is often praised for being &#8220;close to the metal,&#8221; for being a &#8220;portable assembly language.&#8221;<\/p>\n<p>It was, once, but it hasn&#8217;t been since the 1970s; the underlying computational models of modern computers are nothing like the one that C represents, which was designed for a 1970s 16-bit minicomputer.<\/p>\n<p>The argument goes something like this: for almost any program to do anything useful or interesting, it has to run on an operating system. That means it has to interface with that OS \u2013 and so many OSes are written in C. Therefore, the language has to interface with C code, which means it has to call C APIs.<\/p>\n<p>This is done via Foreign Function Interfaces (FFIs). These are issues for <a href=\"https:\/\/www.theregister.com\/2020\/07\/13\/rust_code_in_linux_kernel\/\">Rust code in the Linux kernel<\/a>, and <em>The Reg<\/em> has previously discussed how it affects other languages, such as <a href=\"https:\/\/www.theregister.com\/2019\/09\/11\/flutter_1_9\">Flutter and Dart<\/a> and <a href=\"https:\/\/www.theregister.com\/2020\/10\/28\/nodejs_15_michael_dawson\/\">Javascript and Node.js<\/a>.<\/p>\n<p>In other words, even if you <em>never<\/em> write any code in C, you have to handle C variables, match C data structures and layouts, link to C functions by name with their symbols. This applies not only to talking from any language to the OS, but calling from one language into another.<\/p>\n<h3 class=\"crosshead\">IDL hands&#8230;<\/h3>\n<p>C is not just a programming language, it&#8217;s also an Interface Definition Language or IDL. IDLs are very important \u2013 as <a href=\"https:\/\/www.theregister.com\/1999\/05\/24\/lies_damn_lies_benchmarks\/\">we quoted back in 1999<\/a>, &#8220;the CORBA Interface Definition Language IDL is\u2026 &#8216;one of the most significant contributions in the history of computer science&#8217;.&#8221;<\/p>\n<p>The real problem is that C was never designed or intended to be an IDL, and it isn&#8217;t very good at it.<\/p>\n<p>We can&#8217;t beat Beingessner&#8217;s description, though: &#8220;My problem is that C was elevated to a role of prestige and power, its reign so absolute and eternal that it has completely distorted the way we speak to each other.<\/p>\n<p>&#8220;Rust and Swift cannot simply speak their native and comfortable tongues \u2013 they must instead wrap themselves in a grotesque simulacra of C&#8217;s skin and make their flesh undulate in the same ways it does.&#8221; \u00ae<\/p>\n<\/div>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">C isn&#8217;t a programming language anymore \u2022 The Register C is often praised for being &#8220;close to the metal,&#8221; for being a &#8220;portable assembly language.&#8221;It was, once, but it hasn&#8217;t been since the 1970s; the underlying computational models of modern computers are nothing like the one that C represents, which was designed for a 1970s&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2022\/04\/04\/c-isnt-a-programming-language-anymore-the-register\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"quote","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-9236","post","type-post","status-publish","format-quote","hentry","category-senza-categoria","post_format-post-format-quote"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-2oY","jetpack-related-posts":[{"id":2251,"url":"https:\/\/monodes.com\/predaelli\/2017\/03\/06\/main-weaknesses-of-c-as-a-programming-language-disadvantages\/","url_meta":{"origin":9236,"position":0},"title":"Main Weaknesses Of C++ As A Programming Language &#8211; Disadvantages","author":"Paolo Redaelli","date":"2017-03-06","format":"link","excerpt":"Main Weaknesses Of C++ As A Programming Language - Disadvantages Because the lack of different in brackets and parentheses on a regular keyboard, the syntax of modern C++ sometimes gets complex.\u00a0And not only for people, but for code highlighting too, which should tell us something. Let\u2019s see: <>: Template declaration\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5473,"url":"https:\/\/monodes.com\/predaelli\/2019\/04\/09\/most-popular-programming-languages-c-knocks-python-out-of-top-three-in-new-study-slashdot\/","url_meta":{"origin":9236,"position":1},"title":"Most Popular Programming Languages: C++ Knocks Python Out of Top Three in New Study &#8211; Slashdot","author":"Paolo Redaelli","date":"2019-04-09","format":"link","excerpt":"Is it time to give C++ a second canche or to revive mi interest for Eiffel? Source: Most Popular Programming Languages: C++ Knocks Python Out of Top Three in New Study - Slashdot C++ has knocked machine-learning favorite Python out of the top 3 in the TIOBE Index of popular\u2026","rel":"","context":"In &quot;Mood&quot;","block_context":{"text":"Mood","link":"https:\/\/monodes.com\/predaelli\/category\/mood\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7070,"url":"https:\/\/monodes.com\/predaelli\/2020\/04\/03\/which-programming-language-is-fastest-computer-language-benchmarks-game\/","url_meta":{"origin":9236,"position":2},"title":"Which programming language is fastest? | Computer Language Benchmarks Game","author":"Paolo Redaelli","date":"2020-04-03","format":"link","excerpt":"Which programming language is fastest? | Computer Language Benchmarks Game","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12133,"url":"https:\/\/monodes.com\/predaelli\/2024\/12\/19\/is-html-a-programming-language-webbed-briefs\/","url_meta":{"origin":9236,"position":3},"title":"Is HTML A Programming Language? (Webbed Briefs)","author":"Paolo Redaelli","date":"2024-12-19","format":false,"excerpt":"Today I stumbled into this Fediverse post: A great conversation in the supporter Discord\/Matrix reminded me that it's about time to share this fantastic item by @heydon. Anyway, yes HTML is a programming language and folks who argue with this statement in my comments will be muted, blocked, defederated, or\u2026","rel":"","context":"In &quot;Ethics&quot;","block_context":{"text":"Ethics","link":"https:\/\/monodes.com\/predaelli\/category\/ethics\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8158,"url":"https:\/\/monodes.com\/predaelli\/2021\/02\/07\/the-v-programming-language\/","url_meta":{"origin":9236,"position":4},"title":"The V Programming Language","author":"Paolo Redaelli","date":"2021-02-07","format":false,"excerpt":"I've just read \"Is Zig the long awaited C replacement\" and it cites: The V Programming Language seems to be a \"fastly compiling\" language. Compilation speed benchmark C 5.2s gcc test.c C++ 1m 25s g++ test.cpp Zig 10.1s zig build-exe test.zig Nim 45s nim c test.nim Rust Stopped after 30\u2026","rel":"","context":"In &quot;Comparisons&quot;","block_context":{"text":"Comparisons","link":"https:\/\/monodes.com\/predaelli\/category\/comparisons\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8181,"url":"https:\/\/monodes.com\/predaelli\/2023\/03\/12\/replacing-c\/","url_meta":{"origin":9236,"position":5},"title":"Replacing C","author":"Paolo Redaelli","date":"2023-03-12","format":false,"excerpt":"Do We Need a Replacement for C? I found this old draft that cites Zig programming language... time to undraft it... :) C is a widely used language used to program anything from OS kernels to cryptography libraries. Is it time for a replacement? Erik EngheimNov 25, 2020\u00b75 min read\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/9236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=9236"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/9236\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=9236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=9236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=9236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}