[HN Gopher] The C juggernaut illustrated (2012)
___________________________________________________________________
The C juggernaut illustrated (2012)
Author : susam
Score : 23 points
Date : 2023-02-02 10:08 UTC (2 days ago)
(HTM) web link (utcc.utoronto.ca)
(TXT) w3m dump (utcc.utoronto.ca)
| cesaref wrote:
| From my perspective, there is a certain truth to this. I started
| out as an assembler programmer in the early 80s, just a kid
| messing about with the machines of the time (Z80, 6510 based).
| There was BASIC on various machines, but it was slow and clunky,
| and you just didn't get enough control or speed to do the things
| that a kid in the 80s wanted to do (write games!).
|
| When I first came across C, it was around the time i'd been
| writing 68k for the first time, and intel assembler was very
| confusing, and already had a heap of different models to
| consider.
|
| So, C allowed the majority of stuff to be written once, with
| calls to library functions written in assembler. All of a sudden,
| we went from 0% portability to 95% portability. C could be
| written like assembler, basic types which map directly to
| registers and memory locations, and so really it was a simple
| step to write not great C, with obvious benefits.
|
| The first non-C language I came across was Fortran, closely
| followed by Modula-2, and neither of these were in any way as
| close to what i'd been writing in assembler, and so didn't
| connect in the same way.
|
| I don't think i'm unusual in this regard, transitioning from
| assembler to C. Of course these days there is a new generation of
| programmers who haven't that experience, and are happier with
| higher level abstractions, and so it must look weird to them to
| see the fascination with C, and it probably has outlived it's
| expected life - i'm certainly surprised we're not all functional
| by now for example.
| mistrial9 wrote:
| the example about C at Apple Computer is accurate. The MPW group
| had a tool suite but it was a niche project at the time
| (mid-80s). Influential engineers had a great pascal compiler and
| dropped into assembler for the fine points, quite a lot. The
| environment at DeAnza 3 where TechSupport lived was a place of
| change for Apple at that time. Within a few years, C was popular
| as an application language, some drivers for the new Mac II, and
| lots of community code was generated.
|
| _edit_ thinking about it, the resistance to C at the time was
| for real reasons.. common microcomputer C famously shipped with a
| minimal language but the I /O and string handling libs made the
| environment a useful runtime. Interfaces to anything more than
| that on a microcomputer were adhoc. But many professionals at
| that time knew about the larger *nix systems, and wanted the
| kinds of pipes and task management interfaces that they knew.
| This was the wrong model for the Mac OS, which emphasized
| graphical user interfaces at every step. There were no terminal
| windows in the background at all, no pipes and no standardized
| processes.
|
| It was the courage to break away from "grown up" multi-user
| system, incremental engineering and make a completely mouse-
| driven interface that made the Mac great. Later when C interfaces
| to ROM Toolbox calls were built, they were used to support the
| Mac OS, not drag in tons of technical debt and character-stream
| kinds of ideas to this new computer.
| quelsolaar wrote:
| The "Likeability" of C is very underestimated. Many people think
| that system code _should_ be written in other language, but
| people who _want_ to actually write, and maintain system software
| want to do so in C.
|
| A programming language has to be enjoyed, if someone is going to
| dedicated a significant part of their lives o writing opensource
| software in it. C is on paper not a safe language, but almost all
| of the most trusted safety critical software is written in it, so
| from a Darwinistic point of view it has produced more trusted
| software. I strongly suspect that a big reason for this is that C
| is enjoyable enough for maintainers stick around long enough
| shake out all the issues.
| tialaramex wrote:
| I liked C perfectly well, and for over 25 years I wrote
| software in it, including both Free Software you may have used
| and in-house software I was directly employed to write for a
| large corporation. However I began learning Rust back in 2021
| and not only do I now not want to write any more C, I want to
| rewrite my C software in Rust, although obviously 25 years
| worth of software means that's a whole lot of work and in a few
| cases I don't own the rights.
| Gigachad wrote:
| Things have changed a lot since 2012. The Asahi Linux devs have
| said positive things about writing OS code in Rust. They have
| built a full M1 GPU driver in Rust which says a lot for the
| future of system code in safer languages.
| galangalalgol wrote:
| Misra C is not normal likeable C. And while people have written
| safety critical code in normal likeable C, that isn't at all
| common. Ada, more recently spark, and various c++ subsets are
| all far more common. But yes Misra C is very common.
|
| Zig seems likeable, but I haven't tried it yet. And rust is
| enjoyable now that I'm into it as my daily driver. The
| complexity is only there if I go looking. Mostly.
| User23 wrote:
| The first "real programming language" I learned was Pascal. This
| was back in the 90s. Switching to C was like taking off a
| straight-jacket. I think it's hard to explain how much more
| freely you were able to code to someone who didn't go through the
| experience. Pascal was derogatorily referred to as a "Bondage and
| Discipline Language" by C programmers.
|
| Of course I've matured a bit and I see a value in discipline and
| having the language get in the way of doing error prone things
| more now, but even so I'd still choose K&R 2nd edition ANSI C
| over late 80s and early 90s vintage Pascal if I had to pick one
| today.
| pyjarrett wrote:
| Despite enjoying the terseness of C, with curly braces and short
| notations, many "normalized" things in C used to trip up math
| students I would tutor in elementary programming classes. "Why is
| `=` assignment and not `==`? How can a function not produce a
| value? Why does `||` mean "or"?, etc.
|
| Pascal family languages usually end up much more long winded, but
| can often be more easily explained to non-programmers than C
| solutions. I spent a couple years doing down the Ada rabbit hole
| in open source and was amazed how many elements of the problem
| domain you express directly with the language, and how you can
| constrain your program to catch domain-specific issues with the
| compiler.
|
| With the rise of things like ChatGPT, I'm curious if the next
| revolution for programming languages is focusing on constraints
| to verify correctness rather than expression of what to do. This
| might help help an AI model develop code and provide validity
| checks on the generated solution.
| jmclnx wrote:
| Around that time we had K&R c, which I liked because no really
| messing around with prototypes. Were Pascal, IIRC you had to deal
| with prototypes and variable types and other things.
|
| Since then, we have ANCI c, which I got use to prototypes, but I
| still prefer K&R. At least for now, ANSI has yet to get anal
| about variable types and memory. I hope that never happens but I
| fear c is heading in that direction because of what the rust
| people are doing.
| mgaunard wrote:
| Did you not get the memo? C was replaced by C++.
|
| Many languages are trying to replace C++ and failing to do so.
___________________________________________________________________
(page generated 2023-02-04 23:00 UTC)