Live data from Hacker News

Two types of C programmers

utcc.utoronto.ca

21–30 of 225 posts

Re: Two types of C programmers

#21

I also mostly use other languages these days, but there's still something about C that always feels like coming home to me. Maybe it's because it's what I used during my apprenticeship which is where the magic of programming finally clicked for me (after a failed attempt taking a programming class). Maybe it's just the simplicity and lack of rules to learn.

> Maybe it's just the simplicity and lack of rules to learn.

This is how I feel about assembler. No rules, you on your own. And it is impossible to imagine simpler language. Though I do not write asm lately.

Re: Two types of C programmers

#22
With C, programmers of different types (there are certainly more than two) can be combined into one operational unit by a clever manager.

Sometimes differently typed programmers will implicitly agree to adopt a uniform approach before working together on a project. Sometimes the programmers won't do this by themselves and so a manager is needed to explicitly guide them to adopt the appropriate type.

However, some types stubbornly resist conversion, and so are tricky to work with. Pointy-headed programmers tend to be surprisingly flexible, and the ones who stare off into the void are often the most useful when you need them to function effectively. Overall, managers who can understand and utilize this hierarchy of programmer types in their organization may find themselves getting promoted regularly.

Of course, many people can't stand these corporate structures and prefer the simple farmer's life, raising ducks instead. Quack!

Re: Two types of C programmers

#23
C with libdispatch and clang blocks is the most fun I’ve had programming in quite some time!

Here’s a web framework (complete with ORM) modeled on ExpressJS written in C:

https://github.com/williamcotton/express-c

The finished product is There’s also a lot of examples of the (basically required) support tooling like Valgrind, AdSan, etc.

Check it out!

Re: Two types of C programmers

#24
“My perception of the second sort of C programmer is that if they've moved to any more recent mainstream language, it's probably Rust.”

If you are the first type, you likely get the second type’s taste wrong. Rust is very very different from C both in terms of syntax and philosophy.

Re: Two types of C programmers

#25
post #15

I learnt C in college but C++ was emerging as the language of choice circa 1995 when I got into my first job. This was before C++ was standardized and we had to make do with whatever MSVC 1.5 would do. It did not even support templates back then and even the highly polarizing STL did not exist yet -- in a cross platform way; The STL source itself was available from 1994, and if I recall right, the C++ compiler on Sun…

Borland did templates since 1993, Borland C++ 2.0 and Turbo C++ had early support for them, and BIDS 2.0 changed from pre-processor macros into the templates experimental design.

MSVC was always behind until Borland management messed up.

Re: Two types of C programmers

#26

“My perception of the second sort of C programmer is that if they've moved to any more recent mainstream language, it's probably Rust.” If you are the first type, you likely get the second type’s taste wrong. Rust is very very different from C both in terms of syntax and philosophy.

Rust is from a different language family, but I think it still fits a taste of "low-level control, not OOP, not C++".

I know many people see "complex with angle brackets" and equate Rust more with C++, but I disagree and think it's still closer to C — I can convert C libraries 1:1 to Rust, but C++ libraries hit an impedance mismatch and are really hard to rustify.

Re: Two types of C programmers

#27
post #19

I appreciate the sentiment, but: - there doesn't have to be "two kinds". Trivially you can fit both "types" at once, I certainly feel that way. And if there are 100 programmers, there'd be about 237 other reasons to use a language. False dichotomy. - a better categorization might be "there are two kinds of C programmers: those who eventually start using rust and those that don't." which is at least of course absolute…

> I dislike the idea that a programmer is bound to a language. He's a "C" programmer, […]

Nothing in the article suggests that being a "C programmer" is that kind of a binding label. It's you reading that into it ;). (Though certainly influenced by the fact that that is a widespread interpretation.)

FWIW, I consider myself a C programmer, and in both camps presented in that article. But I'm also a Python programmer, and I don't think either of those two languages "owns" me.

Re: Two types of C programmers

#28
Tense is very important with this article. People who chose C. Whatever these reasons were that made someone chose C, that choice may have been made 20 years ago, and the choice may pan out very different if made now. But now you have 20 years of C experience…

Re: Two types of C programmers

#29
post #5

I'd consider myself the former: I use C because it's the only viable option for what I'm doing - but most of the time it's nothing to do with C itself, but the various extensions and builtins of GCC. It's the inline asm, the control of registers, placement of code and data, control of inlining, etc, which are missing from all of the C "replacements". The replacements assume you are building a user application on top…

I also consider myself the former. I often use C not so much to stay close to the hardware, but to be closer to the operating system APIs. Of course, there are often API bindings for other languages, but they're often very incomplete, buggy, non-idiomatic, non-ergonomic, or lacking performance. And IME you only find this out after a few months. But from the get-go they're always worse documented and less flexible. I tend to mix C with other languages, like Rust or Python. This is mostly for audio and graphics stuff.

With that said: Swift replaced C (and Obj-C) 100% in the Apple world for me. Because the API bindings are as good.

Re: Two types of C programmers

#30
Personally, the primary reason I'm a C programmer because the main project I work on is a million lines of code, and it's C... As with COBOL, legacy code will mean there's still demand for C programmers for a fair while yet.
Post reply on HN