GOPHERSPACE.DE - P H O X Y
gophering on hngopher.com
HN Gopher Feed (2017-09-05) - page 1 of 10
 
___________________________________________________________________
Some Were Meant for C: The Endurance of an Unmanageable Language
[pdf]
51 points by ingve
http://www.cl.cam.ac.uk/~srk31/research/papers/kell17some-prepri...
___________________________________________________________________
 
AnimalMuppet - 2 minutes ago
Here's a good quote:  "Unless we can understand the real reasons
programmers continue to use C, we risk researchers continuing to
solve a set of problems that is incomplete and/or irrelevant, while
practitioners continue to use flawed tools."In other words, stop
blithely claiming that everyone is stupid for using C/C++.
Instead, find out why they use it.  Then, if you continue to think
that C/C++ needs to be replaced, find a better way for those people
to do what they are doing that they currently find C/C++ to be the
best way to do.
 
TheAceOfHearts - 45 minutes ago
Started reading the article, once I reached the second page I lost
interest and scrolled to the conclusion.Based on the parts I read,
the writing style is needlessly verbose, and the author is not
saying anything which hasn't already been said.
 
  exikyut - 18 minutes ago
  I agree with the verbosity. But many of those in the demographic
  that would do away with C belong more to the current pop-culture
  of "coding!!1" instead of the carefully-considered, patiently-
  implemented ancient art of engineering.The pop-culture "coding"
  collective as a whole is not generally known for its appreciation
  of terse explanations. I will admit that it does favor immediate
  gratification, though; there is that.Ideally, this would do the
  rounds with different people excerpting different bits of it.
  That would spark many little conversations over time, and
  contribute to keeping the discussion going. That would be nice.
 
    ducttapecrown - 16 minutes ago
    Get off my lawn!
 
    mhink - 4 minutes ago
    Personally, I appreciated how the author spent a decent amount
    of time "unpacking" what he meant- for instance, the "To manage
    or to mediate" section. Terseness is only useful when you
    already have a shared protocol for understanding the message
    and a guarantee that it won't be garbled along the way.On the
    other hand, if you're trying to communicate to folks without
    that shared protocol (in this case, to people who aren't
    familiar with/haven't spent much time using C as a primary
    language) it's kinda necessary to go a little further to get
    the point across.> Ideally, this would do the rounds with
    different people excerpting different bits of it. That would
    spark many little conversations over time, and contribute to
    keeping the discussion going. That would be nice.Absolutely
    agree.
 
[deleted]
 
jasode - 16 minutes ago
This is a long paper and the author has 2 main claims:1) C Language
popularity is more to do with cognitive ease of memory addresses as
a conceptual model for inspection and change.  Author claims memory
address mental model overshadows runtime performance.2) switching
to "safe" languages like Java/C#/Rust is not necessary.  With no
changes/violations to existing C Language specification, a
new/different implementation (compiler) can add more runtime safety
checks similar to managed languages.  An example from the
paper:>Consider unchecked array accesses. Nowhere does C define
that array accesses are unchecked. It just happens that
implementations don?t check them. This is an implementation norm,
not a fact of the language.Those 2 ideas look orthogonal but he
ties them together at the end.I'll take some poetic license (e.g. a
little exaggeration) to reword the author's idea to help spur
discussion...Consider the idea of the Sufficiently Smart
Compiler[1] that claims that a "slow" and "high-level" language
like Python/Ruby could be theoretically analyzed and compiled to be
as fast as C or handcrafted assembly.In a way, the author is coming
from the opposite direction.  If you had a "Sufficiently Smart
Runtime" for a new C Language compiler implementation, it could
(theoretically) do all sorts of extra checks and bookkeeping that
wouldn't require any changes to C source code and would violate the
existing C Language standard.  (E.g. Imagine a new C runtime that
did many checks similar to Valgrind + UBSAN + ASAN + debugger
memory fences, etc.)Would the program execution be slower?  Well
yes, but that's not really an issue because according to author's
claim #1, what programmers really like about C is the mental ease
of accessing memory addresses.  The performance is important, but a
secondary benefit -- according to the author.[1]
http://wiki.c2.com/?SufficientlySmartCompiler
 
pcwalton - 15 minutes ago
This is another article overanalyzing the success of C, when in
fact the reason for the success of C is very simple and obvious:
Unix was free and in a lucky position in 1973; Unix got popular; C
is the language of Unix; therefore C got popular. There is no
inherent benefit in C that, for example, a somewhat modified
version of Pascal or Algol wouldn't have inherited. And these kinds
of articles always ignore the fact that in the past decade or so, C
and C++ have been declining in popularity. By and large, new
programmers are not learning C the way they were in the '90s. For
better or worse (personally, I think, for the better), they're
starting with JavaScript, Python, Ruby, or even PHP.I'm highly
skeptical of the conclusion that what we need is a new safer
implementation of C, too. Switching to a new compiler is a very
high burden for a lot of projects, and at the end of the day
they're still left with all the problems of C, like header files,
no namespaces, terrible standard library, etc. etc. (Even adding
compiler switches is a high burden, which is why Linux distros took
so long to widely deploy basic things like -fstack-protector.) By
contrast, switching to a new language (or incrementally writing new
components in a new language, which is how this always goes in
practice) is also a very high burden, but the benefits are larger:
you don't have to deal with all the problems of C.In my view, this
is why safer versions of C have repeatedly failed over the years,
while new languages have flourished. Migration to a new language or
a new compiler is expensive no matter what, so teams will only do
it if they see enough benefit to justify the expense of doing so.
Merely adding some amount of safety to C isn't worth it, but the
large safety and productivity gains you can get from a different
language can be.
 
  quickben - 2 minutes ago
  You are ignoring the fact that many problems can't be solved in
  the higher level languages.Also, for some, having the c/c++ level
  of control is prefered.