Maybe C is the perfect language for really good systems programmers, but unfortunately not-so-good s

  • Thread starter Casey Hawthorne
  • Start date
C

Casey Hawthorne

I found the quote from "Coders at Work" where Bernie Cossel is
interviewed, page 560.

I don?t want to say that C has outlived its usefulness, but I think it
was used by too many good programmers so that now not-good-enough
programmers are using it to build applications and the bottom line is
they?re not good enough and they can?t. Maybe C is the perfect
language for really good systems programmers, but unfortunately
not-so-good systems and applications programmers are using it and they
shouldn?t be.
 
T

Tom St Denis

I found the quote from "Coders at Work" where Bernie Cossel is
interviewed, page 560.

I don?t want to say that C has outlived its usefulness, but I think it
was used by too many good programmers so that now not-good-enough
programmers are using it to build applications and the bottom line is
they?re not good enough and they can?t.  Maybe C is the perfect
language for really good systems programmers, but unfortunately
not-so-good systems and applications programmers are using it and they
shouldn?t be.

Maybe the real problem is not-so-good developers are developing
software.

I'm certain I could walk into an operating theatre, pick up the most
expensive tool and still kill someone. Does that mean the expensive
tool should be thrown out?

Where the idea that anyone with a text editor can be a developer, and
if they're not competent just blame the tools came from I can only
imagine.

Tom
 
D

Dann Corbit

I found the quote from "Coders at Work" where Bernie Cossel is
interviewed, page 560.

I don?t want to say that C has outlived its usefulness, but I think it
was used by too many good programmers so that now not-good-enough
programmers are using it to build applications and the bottom line is
they?re not good enough and they can?t. Maybe C is the perfect
language for really good systems programmers, but unfortunately
not-so-good systems and applications programmers are using it and they
shouldn?t be.

He's absolutely right. Stupid people should not program in C.

I'm not being facetious either. If you tend to do things like drive the
wrong way down one way streets or leave the house with the stove on
high, then you should seriously consider VB instead.

Or better yet, there are still spots available for asparagus pickers in
Moses Lake, WA. Besides the short picking season (leaving *plenty* of
time during the rest of the year) there is also snacks any time you
like. But you will get foul smelling urine. I guess no job is perfect.
 
R

Rich Webb

Maybe the real problem is not-so-good developers are developing
software.

I'm certain I could walk into an operating theatre, pick up the most
expensive tool and still kill someone. Does that mean the expensive
tool should be thrown out?

This paraphrase (anyone have a pointer to the first use?) seems apropos:

Some languages are like scissors for children. They can be used to cut
out pretty much any shape you might want out of paper. They are also
safe, with blunt tips and not very sharp, so you're unlikely to
accidentally injure yourself while using then.

C is like a surgeon's scalpel: just a handle and an edge. It can cut
practically anything and in the right hands it can perform miracles.
However, use it carelessly and you'll cut your own hands off.
 
B

BGB / cr88192

Casey Hawthorne said:
I found the quote from "Coders at Work" where Bernie Cossel is
interviewed, page 560.

I don?t want to say that C has outlived its usefulness, but I think it
was used by too many good programmers so that now not-good-enough
programmers are using it to build applications and the bottom line is
they?re not good enough and they can?t. Maybe C is the perfect
language for really good systems programmers, but unfortunately
not-so-good systems and applications programmers are using it and they
shouldn?t be.

what do you propose instead?...

not all programming languages are created equal, and so there are a great
many factors to consider beyond a simple: competence/incompetence and
safe/dangerous graph...

C is not 'safe', but most of its main (safer) alternatives have botched
things up in ways that make them unsuitible for use in even the same domain
as C...

it is like "C is unsafe, everyone should use Java", the great pro and con
being, then, the existence of the JVM.

simple Sun answer:
split the world in half, the "Java" world, and the "everything not Java"
world...
use A or use B...

..NET is not as bad here, but still has many symptoms of the same
condition...


granted, there are JNI and JNA, but both are awkward...
..NET also has P/Invoke, which is IMO only marginally better than JNA.


and so, there is a harsh split (in practical terms):
C and/or C++;
use something different, off in its own little world where "it" is the ruler
of "everything"...


it may well be the case that the libraries need access to powerful
facilities, which may not be ideal for the application developers.

however, because of this split, the app devs still end up using C (or maybe
C++), as there is not really much of any really "better" option in this
space.


Java might be good, if it were "reinterpreted" to be a close friend of C and
C++ as far as the implementation goes, rather than a distant enemy. GCJ has
done this to some extent, but one may not necessaily bind themselves to
using GCJ (it has its own share of issues as well).

I had started attempting this, but my efforts tend to keep stalling on this
front, FWIW.

....


the race is not won until a facility is easily and generally accessible and
in the places and circumstances it is needed.

for example, one can use, for example, OpenGL and GLSL without "selling
ones' soul" to some "OpenGL Framework Developer's Kit", partitioning the
world into "code which does 3D rendering via GL" and "code which does not".

instead, it is opt-in for the cases and situations where it is needed, and
does not otherwise make too many demands.


most VM's are, however, not much the same at all...
they wish to enslave much of anything which comes in contact with them.
"all hail the VM, the rightful ruller of the programming world...".


this is one partial reason why many of my VM's parts are based on more
"standard" components, and I try to keep things modular. one "should" be
able to use the bits and pieces they choose, and not be obligated by the
rest.

hence:
native or interpreted;
my interpreter using plain PE/COFF DLL's and x86 as the "bytecode";
C is one of the main "scripting" languages, and I am (and continue to) keep
a close watch on FFI concerns (if one can easily "see" the border, it is not
good enough);
I am also using POSIX as a reference point for many aspects of
"architecture";
....


or such...

 
T

Tom St Denis

This paraphrase (anyone have a pointer to the first use?) seems apropos:

Some languages are like scissors for children. They can be used to cut
out pretty much any shape you might want out of paper. They are also
safe, with blunt tips and not very sharp, so you're unlikely to
accidentally injure yourself while using then.

C is like a surgeon's scalpel: just a handle and an edge. It can cut
practically anything and in the right hands it can perform miracles.
However, use it carelessly and you'll cut your own hands off.

Exactly. Why people attribute that to a negative quality of C I'll
never get it. The real problem is people who are poorly trained are
passing themselves off as developers. I was using C for roughly 7-8
years before I really considered myself halfway competent to even call
myself professional. Sure it only took me a short bit to learn the
syntax, but really writing maintainable and scalable software [in any
language] takes experience.

And really I don't get the drive, if programmers were [and they are] a
dime a dozen they'd get paid jack squat. Is that a good thing?

Tom
 
B

BGB / cr88192

This paraphrase (anyone have a pointer to the first use?) seems apropos:

Some languages are like scissors for children. They can be used to cut
out pretty much any shape you might want out of paper. They are also
safe, with blunt tips and not very sharp, so you're unlikely to
accidentally injure yourself while using then.

C is like a surgeon's scalpel: just a handle and an edge. It can cut
practically anything and in the right hands it can perform miracles.
However, use it carelessly and you'll cut your own hands off.

<--
Exactly. Why people attribute that to a negative quality of C I'll
never get it. The real problem is people who are poorly trained are
passing themselves off as developers. I was using C for roughly 7-8
years before I really considered myself halfway competent to even call
myself professional. Sure it only took me a short bit to learn the
syntax, but really writing maintainable and scalable software [in any
language] takes experience.

And really I don't get the drive, if programmers were [and they are] a
dime a dozen they'd get paid jack squat. Is that a good thing?

Tom
-->

I thought "professional" was a designation of one being employed doing
something?...

have a job as a programmer => "professional programmer".
don't have a job as a programmer, but still a programmer => "hobbyist
programmer".

granted, WRT competence I am probably around a similar level I think to many
commercial developers, and I have maybe around 12-15'ish years C experience,
but since I don't have a job, as I see it, I am a hobbyist...

although, I guess traditionally, "professional" does not apply to unskilled
labor, such as picking fruit or being a frycook... (then again, maybe there
are professional frycooks around, I don't know...).


or such...
 
L

Lew Pitcher

On November 4, 2009 11:41, in comp.lang.c, BGB / cr88192
([email protected]) wrote:
[snip]
I thought "professional" was a designation of one being employed doing
something?...

have a job as a programmer => "professional programmer".
don't have a job as a programmer, but still a programmer => "hobbyist
programmer".

I agree, in as far as this goes.

But...

I retired from writing computer programs for a living; I no longer have the
job as a programmer, but still have all the professional skills, knowledge,
and abilities. Can I not refer to myself as a "professional programmer,
retired", or must I now downgrade myself to "hobbyist programmer"?

[snip]

--
Lew Pitcher

Master Codewright & JOAT-in-training | Registered Linux User #112576
http://pitcher.digitalfreehold.ca/ | GPG public key available by request
---------- Slackware - Because I know what I'm doing. ------
 
T

Tom St Denis

I thought "professional" was a designation of one being employed doing
something?...

have a job as a programmer => "professional programmer".
don't have a job as a programmer, but still a programmer => "hobbyist
programmer".

granted, WRT competence I am probably around a similar level I think to many
commercial developers, and I have maybe around 12-15'ish years C experience,
but since I don't have a job, as I see it, I am a hobbyist...

although, I guess traditionally, "professional" does not apply to unskilled
labor, such as picking fruit or being a frycook... (then again, maybe there
are professional frycooks around, I don't know...).

To me professional applies to people who work in a particular field
and are competent at what they do. Misleading and lying to people to
get a job does not make you professional even if you get paid to do it
(might make you a professional liar though). The point I'm trying to
make is there are a lot of people out there who label themselves as
professional developers when in reality they have little to no
accountable experience and are only someone basically aware of
language semantics and syntax.

Which is why you see "adults" floating around espousing how awesome VB
is because it has less of a learning curve than say C or Pascal or
whatever. The reality is they don't really understand what they're
doing at any useful level and they view C as "harder" because they
actually have to have half a clue about computer science to make use
of it.

Some might shake that off as "oh well my $fav_lang has a standard tree/
heap/vector/whatever class and I don't need to implement it" but
without failure there will be a time where understanding the
primitives will pay dividends in terms of optimization or debugging.
Worse yet, because a lot of people don't have the fundamentals of
computer science down pat they don't even know of, or when, or how to
use specialized algorithms to make things possible.

This is why you see people using bubble sort, or ECB mode in crypto,
or countless other common trivial mistakes. They don't understand crap
about what they're doing, they just know enough rudiments to glue
things together into what seems like a workable solution.

And that's friggin scary.
 
T

Tim Streater

Pillsy said:
Exactly.  Why people attribute that to a negative quality of C I'll
never get it.

I suspect it's because, one way or another, C has a pretty long
history of finding its way into the hands of metaphorical children.
 The real problem is people who are poorly trained are passing themselves
off as developers.

This is going a bit far afield from the original context of the
thread, but a lot of people who need to write programs in order to do
their jobs are not professional programmers, in much the same way that
a lot of people who need to write English prose in order to do their
jobs are not professional writers.

It's quite common for engineers or scientists to have to write
programs for their own use and, perhaps, the use of a small number of
other people, and a lot of the time they end up writing those programs
in C. There are good compilers available just about everywhere for
cheap and it has a reputation for being fast.

A person can simultaneously be a phenomenal physicist and a lousy
programmer.
 I was using C for roughly 7-8 years before I really considered myself
halfway
competent to even call myself professional.  Sure it only took me a short
bit
to learn the syntax, but really writing maintainable and scalable software
[in any language] takes experience.

Sure. But someone who has an entire other set of professional
responsibilities is likely to not get those years of experience
writing maintainable and scalable software because they're busy
getting other sorts of experience that is more relevant to their jobs.

This is perfectly true. The difficulty is when the person (clever in
their own field) is able to write a reasonable facsimile of a program
incorporating some clever techniques, and when the program is actually
useful to this person and their colleagues, and then the program is
pushed out to others in their field. Then it's given to some poor grad
student to maintain. And so on ...

Mind you, this can happen in any language, just that it's more likely
with C and Fortran, since these are "everywhere".
 
B

Beej Jorgensen

Tom St Denis said:
Exactly. Why people attribute that to a negative quality of C I'll
never get it. The real problem is people who are poorly trained are
passing themselves off as developers.

I think it's a difference between thinking a tool is intrinsically bad,
versus knowing it's just the wrong tool for the job.

When I want to cut someone's hair, I use scissors, not a scalpel.
That doesn't mean that scalpels are bad, but, frankly, it does mean
they're not as good for cutting hair.

And if you ever go to a barber who insists upon using a scalpel, I'd
recommend a hasty exit, no matter how qualified he was.

-Beej
 
P

Pillsy

Exactly.  Why people attribute that to a negative quality of C I'll
never get it.

I suspect it's because, one way or another, C has a pretty long
history of finding its way into the hands of metaphorical children.
 The real problem is people who are poorly trained are passing themselves
off as developers.

This is going a bit far afield from the original context of the
thread, but a lot of people who need to write programs in order to do
their jobs are not professional programmers, in much the same way that
a lot of people who need to write English prose in order to do their
jobs are not professional writers.

It's quite common for engineers or scientists to have to write
programs for their own use and, perhaps, the use of a small number of
other people, and a lot of the time they end up writing those programs
in C. There are good compilers available just about everywhere for
cheap and it has a reputation for being fast.

A person can simultaneously be a phenomenal physicist and a lousy
programmer.
 I was using C for roughly 7-8 years before I really considered myself halfway
competent to even call myself professional.  Sure it only took me a short bit
to learn the syntax, but really writing maintainable and scalable software
[in any language] takes experience.

Sure. But someone who has an entire other set of professional
responsibilities is likely to not get those years of experience
writing maintainable and scalable software because they're busy
getting other sorts of experience that is more relevant to their jobs.

Cheers,
Pillsy
[...]
 
R

Rich Webb

I think it's a difference between thinking a tool is intrinsically bad,
versus knowing it's just the wrong tool for the job.

When I want to cut someone's hair, I use scissors, not a scalpel.
That doesn't mean that scalpels are bad, but, frankly, it does mean
they're not as good for cutting hair.

And if you ever go to a barber who insists upon using a scalpel, I'd
recommend a hasty exit, no matter how qualified he was.

Absolutely. Although razor cuts are pretty standard at hair salons, one
never knows when one may stumble across a frustrated barber who really
just wanted to be a lumberjack.

The classic bit:
 
B

BGB / cr88192

Lew Pitcher said:
On November 4, 2009 11:41, in comp.lang.c, BGB / cr88192
([email protected]) wrote:
[snip]
I thought "professional" was a designation of one being employed doing
something?...

have a job as a programmer => "professional programmer".
don't have a job as a programmer, but still a programmer => "hobbyist
programmer".

I agree, in as far as this goes.

But...

I retired from writing computer programs for a living; I no longer have
the
job as a programmer, but still have all the professional skills,
knowledge,
and abilities. Can I not refer to myself as a "professional programmer,
retired", or must I now downgrade myself to "hobbyist programmer"?

[snip]

I don't know what is the term for people who were once employed but are no
longer employed.
I guess 'professional' could still be valid if there is possibility of
returning to the field.

'retired' also works I guess, since retired states having previously been
employed with little need or desire to return to employment...

but, alas, I am no expert on terminology...
 
B

BGB / cr88192

I thought "professional" was a designation of one being employed doing
something?...

have a job as a programmer => "professional programmer".
don't have a job as a programmer, but still a programmer => "hobbyist
programmer".

granted, WRT competence I am probably around a similar level I think to
many
commercial developers, and I have maybe around 12-15'ish years C
experience,
but since I don't have a job, as I see it, I am a hobbyist...

although, I guess traditionally, "professional" does not apply to
unskilled
labor, such as picking fruit or being a frycook... (then again, maybe
there
are professional frycooks around, I don't know...).

<--
To me professional applies to people who work in a particular field
and are competent at what they do. Misleading and lying to people to
get a job does not make you professional even if you get paid to do it
(might make you a professional liar though). The point I'm trying to
make is there are a lot of people out there who label themselves as
professional developers when in reality they have little to no
accountable experience and are only someone basically aware of
language semantics and syntax.
-->

yeah, seems reasonable enough...

so, 'professional' means employed+job skills, fair enough...


it would be about like me going around promoting myself as a mathemetician.
I have basic skills and some familiarity with 'esoteria' (errm... because I
actually know what a quaternion or a tensor is...), but alas would be
totally 'pwned' if competing with someone who had any idea what they were
doing...


<--
Which is why you see "adults" floating around espousing how awesome VB
is because it has less of a learning curve than say C or Pascal or
whatever. The reality is they don't really understand what they're
doing at any useful level and they view C as "harder" because they
actually have to have half a clue about computer science to make use
of it.
-->

this is what happened when my dad did programming for a while...
"wow, I can use VB to do data entry frontends for an MS-Access backend!...",
and for maybe 2 or 3 years I was bothered about how VB was so much better
than C and was the most common language for business and so on...

but, alas, I stick with C, one of the main languages of ACTUAL software...

even if a lot of my stuff only really looks like text in a command shell...


well, at least this has sort of died off, followed now by a lot of
"esperanto is the world language of the future...".


<--
Some might shake that off as "oh well my $fav_lang has a standard tree/
heap/vector/whatever class and I don't need to implement it" but
without failure there will be a time where understanding the
primitives will pay dividends in terms of optimization or debugging.
Worse yet, because a lot of people don't have the fundamentals of
computer science down pat they don't even know of, or when, or how to
use specialized algorithms to make things possible.
-->

yep.
a lot of C++ promoters say this...
"there is std::sort and std::array and thus no need for people to know
sorting algorithms...".
or, further, that hand-written sorting algos couldn't possibly match these
in terms of speed, ...

I say, there are reasons to use custom sorting, and many places where
sorting is useful may not even be clear to be sorting problems (such as, for
example, spans-based memory allocation, ...).

one may have no vision of where they apply unless one knows the algos...


it is much like how, even though the computer trivially provides things like
sqrt, exp, sin, cos, ... there may still be some value in understanding
things like the taylor series, ...

doesn't mean that one can't just use sqrt or cos, but it doesn't mean either
that someone is inferior because they burden themselves with knowing such
things (and, in fact, I have implemented a few things in the past where I
have had reason to make use of these series...).


<--
This is why you see people using bubble sort, or ECB mode in crypto,
or countless other common trivial mistakes. They don't understand crap
about what they're doing, they just know enough rudiments to glue
things together into what seems like a workable solution.

And that's friggin scary.
-->

yep.

I use bubble sort sometimes (usually when it is small and I don't care if it
is fast, and usually it is in the form of cocktail sort, which works well
with certain distributions), quicksort for others (when it might actually
matter if it is slow), ...

learning quicksort has had many uses beyond sorting though, such as in
optimizing spatial and geometric calculations, ... (in this case, it takes
the form of real-time variants of the BSP algo, ...).
 
S

scattered

I suspect it's because, one way or another, C has a pretty long
history of finding its way into the hands of metaphorical children.


This is going a bit far afield from the original context of the
thread, but a lot of people who need to write programs in order to do
their jobs are not professional programmers, in much the same way that
a lot of people who need to write English prose in order to do their
jobs are not professional writers.

It's quite common for engineers or scientists to have to write
programs for their own use and, perhaps, the use of a small number of
other people, and a lot of the time they end up writing those programs
in C. There are good compilers available just about everywhere for
cheap and it has a reputation for being fast.

A person can simultaneously be a phenomenal physicist and a lousy
programmer.

I just ran across an interesting example of this. I have been wanting
to better understand the Bayesian approach to probability theory, so I
started reading "Probability Theory: The Logic of Science" by E.T.
Jaynes. He was a major figure in statistical mechanics and the
foundations of probability theory (see http://en.wikipedia.org/wiki/Edwin_Thompson_Jaynes
). The book was published posthumously and edited by Larry Bretthorst.
In the introduction Bretthorst writes that Jaynes had intended to
include several programs that he had written which implement some of
the calculations in the book. Bretthorst goes on to write that the
programs were "written in a particularly obscure form of BASIC (it was
the programs that were obscure, not the BASIC)" so he decided to omit
them. Any suggestion that Jaynes was thus somehow an idiot is
misguided to say the least.
 I was using C for roughly 7-8 years before I really considered myself halfway
competent to even call myself professional.  Sure it only took me a short bit
to learn the syntax, but really writing maintainable and scalable software
[in any language] takes experience.

Sure. But someone who has an entire other set of professional
responsibilities is likely to not get those years of experience
writing maintainable and scalable software because they're busy
getting other sorts of experience that is more relevant to their jobs.

Cheers,
Pillsy
[...]
 
B

Beej Jorgensen

Richard Heathfield said:
But what if you want your hair cut with surgical precision?

For that I have an industrial robot bristling with high-powered lasers.
What could possibly go wrong?

-Beej
 
B

Beej Jorgensen

Seebs said:
A Microsoft logo.

Oh, man, can you imagine a three meter-tall Clippy armed with lasers and
scalpels?

"It looks like you're getting a haircut!"

-Beej
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top