Mouse wrote:
>> Yes. "I'm a MODERN programmer!
We don't have to worry about stuff
>> like managing our own memory anymore!"
>> Morons.
Well, with that attitude, yes. But sometimes not worrying about memory
management is a right answer.
Exactly.
The "key phrase" that I encounter is "I don't want to have
to think about...". If someone I'm interviewing says that, the
interview tends to end fairly quickly.
Hear hear!
I hope you apply a bit of intelligence. There are lots of cases where
"I don't want to have to think about..." is perfectly reasonable. For
example, for almost all the code I write, I don't want to have to think
about the details of the machine language behind them; that's why I
don't write in assembly/machine code. (And, yes, that "almost all" is
an important qualification.)
We're talking about embedded, real-time systems. My team and I write
mostly in C but debug in assembly. We get to know almost all of the
assembly that the tool chain we use will generate and we structure our
C to ensure that the generated assembly matches our expectations. In
cases where that causes very unusual C syntax, comments indicating the
reasoning are included and there are special comment tags that remind
us to check behaviors in certain areas whenever a tool chain change is
required. We use a C "style" that might look rather odd to programmers
that are not familiar with the reasoning behind it. In general, we
disable almost all compiler attempts at optimization. If we need speed
at that level, we hand assemble. There is always a delicate balance
between the speed and control that we require and the potential
portability and reusability that C gives us. We have all of the source
to all of the libraries that we use and have no problem stepping into
any library call suspected of causing trouble. We have a thorough
understanding of all of the threading code (semaphores, mutexes,
reader-writer locks, various levels of context swaps, etc.) that we use
and we modify it (sometimes very significantly, including but not
limited to special purpose schedulers and hybrid coop/preemptive swap
behavior). The line between application and OS in most of our products
is fuzzy if it exists at all.
Anyway, I hope that you can see that, in this sort of environment, we
really don't have room for programmers that "don't want to think".
Bill S.