Hacker News new | ask | show | jobs
by bitcointicker 3833 days ago
I love C. Perhaps this is because it's the first language I was taught. It fascinated me. It was complex, it allowed you to do dangerous things, but once it clicks, its like an epiphany :-)

I hardly use it much these days, it's much faster to get things done in python, ruby or perl. Unless you need performance. I guess its like an old song, listening to it brings back memories of what was going on in your life when you first heard it. Reminiscing about writing my first C programs brings back the same kind of memories.

Do other people have the same feeling about the first language they learnt? Or is C really special? :)

2 comments

I have no fond memories of Pascal nor BASIC.

Once you get to where you think in terms of mechanism and not language, it doesn't matter what you use.

I was able to discover the power of system programming in higher level languages around 5 years before learning C, so it isn't any special to me.
curious... what languages did you use?
I was going to post his list of system languages that came before C (and were better/safer) but can't find his post. Notable examples, before or after C, are:

Burroughs' ALGOL's their safer OS was written in https://en.wikipedia.org/wiki/Burroughs_large_systems#ALGOL

Modula-2 with its better readability and safety invented in Lilith homebrew system:

http://www.cfbsoftware.com/modula2/Lilith.pdf

Hansen's Concurrent Pascal was concurrency-safe in tiny runtime; Edison was C minimalism on same PDP-11 with cleaner, safer design

http://brinch-hansen.net/papers/

Modula-3 had many C++ advantages, Modula-style safety, and without C's BS:

https://en.wikipedia.org/wiki/Modula-3

Note: SPIN OS was written in it. Supported type-safe compilation and linking of code into running kernel for acceleration.

PL/I was one of predominant languages. IBM's mainframe OS's were written in a version of it (PL/S).

https://en.wikipedia.org/wiki/PL/I

Ada was systematically and cleverly designed for safety against most issues. Still is:

http://www.adacore.com/knowledge/technical-papers/safe-secur...

Note: Army Secure OS (ASOS), MarteOS, and Muen kernel were written in Ada leveraging its safety properties.

That should cover the ones that have been around since the 60's-80's. Doesn't even count functional-oriented languages like Common LISP, Schemes, or Standard ML. LISP had both OS's and CPU's made in it and for it. SML & Ocaml kicked ass in app correctness and compiler writing. Also ignored niche-specific ones like COBOL or Fortran that I thought weren't suitable for a C comparison.

Safe, C variants were even made to address its problems:

https://www.cs.uic.edu/pub/Main/PhDQualifyingExam/Sample4.pd...

Note: Cyclone concepts got rolled into Rust. So some benefit there.

There's also modern attempts like D, Go, and Rust that try to replace it to various degrees. Wirth's Modula work lives on in Active Oberon System and Go language. Almost all are moving in a direction with ALGOL68's features being the baseline. That there was better stuff before C on 1960's hardware suggests that people should've ditched it or fixed it up a long time ago when hardware limitations weren't holding it back anymore.

And let it be known that those are the only reason C was designed how it was. BCPL author actually wanted an ALGOL variant but hardware didn't work well enough. Rest was accidents of history. More detail that stretches further back than OP in this link:

http://pastebin.com/UAQaWuWG

None of this matters. One (or two) *REALLY big accident(s) of history: The Great Flood of PeeCees came and 'C' was ensconced by Borland and then the use of 'C' in Linux.

We waited for Ada, and she showed up decades late.

Perhaps the more significant "accident" of history, occurring before IBM-PCs with much memory got out there in large numbers, was all the vendors of 68000 based systems who didn't follow the lead of Apollo Computer and instead got a relatively cheap UNIX(TM) licence.

As PCs got more capable and more and more people were willing to program them in C---I don't remember Borland being a big player in this, in fact, it was Microsoft that produced the first really solid C compiler---the same sorts of constraints that helped birth UNIX(TM) and C were in play, until it was by and large too late to change course.

You're correct, but before Borland 'C' ( I think to directly compete with Microsoft ) much was done in Borland Pascal. Of course, much was done after as well.

I think the results of Apollo's decision speaks for itself. If something is an order of magnitude cheaper, it will propagate faster, whether it's objectively better or not.

Maybe I am a bit too much biased to Borland, but Microsoft MS-DOS compilers weren't that great, they were even the last MS-DOS compiler vendor to support C++.

They only started to have something worth buying with the 32 bit version of Visual C++ and Borland loosing their focus, until then not really.

Plenty of things on that list are better than C in key ways and pre-date Ada. Plus, many issues with C existed due to hardware limitations. The C community could've been improving the situation gradually by changing the bad features as hardware improved plus importing good things from other languages. Would've required gradual rewrites of what depended on it but would've been worth it. Or merely switching to and integrating better options like Pascal/Modula line with safety & maintenance benefits.

Instead, they continued building on the foundation of quicksand with so many systems integrity and availability lost as a result. Lost way, too easily due to developers inability to safety do common things. Things that were safe or easy in alternative languages on 1960's-1980's era hardware. Did I mention this was true in 2015 still on systems with 64 cores?

Least Stroustroup made an attempt to bring in advanced features into C. Substantially improved it in resulting quality on average but still showed how much a bad foundation hurts. Stuff like Modula-3 managed high runtime efficiency, compile time efficiency, safety, integration, and readability all at once.

So, existence of alternatives providing a better path certainly mattered. That all of it was mostly ignored taught important lessons to future people trying to improve IT. Fortunately, some learned them and now we have better stuff coming along with higher chance of adoption. Plus, significant improvements to existing stuff here and there.

"... developers inability to safely do common things."

Yep. IMO, the buck stops there.

Yep, thanks for jumping in.
Hey, do you have a link to your comment that lists all the safety advantages of Modula-2? I saw it once then couldn't find it again haha. Google & DuckDuckGo give me jack on the topic past the research papers, etc. Nice to have a simple list to drop in online discussions to get the point across.