K
krw
- Jan 1, 1970
- 0
That's *not* what he said.
Yes, but what he said isn't relevant to the discussion, either.
That's *not* what he said.
The idea above is probably the main reason that I'm still programming
almost purely for fun.
It turns out you don't even have to give them a problem to solve. I
learned years ago that I can eliminate about 90% of applicants for a
programming job by asking them to write me a program, any program,
using the tool of their choice (on the system they're being hired
to work on). It can prompt them for their name and then display
back "Hi <yourname>" or something equally trivial.
The clueless people think this is a trivial task and produce trivial
code (all upper case, no formatting, no comments, etc.) the good
programmers will be unable to resist putting a nice header, comments,
constant definitions as appropriate, etc.
And a surprising number of applicants turn out to be unable to invoke
the compiler / linker etc., don't know how to use any editor, or
equally absurd things. These are people who managed to talk in the
first part of the interview in a convincing manner about all their
experience.
Also I have a new twist on this based on the debugger thread. I
will in future give people a similarly trivial program with a bug
of some sort in it and ask them to debug it. To pass this test
they will need to demonstrate the ability to use any debugging tool
(gdb, etc.). I fully expect this to eliminate another 90% of
applicants as from my experience only about 10% of people (using
3rd generation languages like C) actually know how to use a debugger.
The rest simply stick "printf" statements in the code and try
things over and over because they never learned to use any of
the tools. Maybe IDEs with tightly integrated debugging have
improved this now to some degree, I don't know.
G.
Terje Mathisen said:Chris said:
I would like to point out another paragraph from that article series,
about how he showed a girl the Star Trek source code:
"You didn't actually think I was interested in that Star Trek
program, did you?"
[...]
The idea above is probably the main reason that I'm still programming
almost purely for fun.
[...]
Funny, debugging with printfs was considered hard-core and using a debugger
was considered wimpy.
(I consider most debuggers pretty primitive because they cannot do live
updates of the variables I'm watching, so I end up with printfs...).
Bernd said:Because code is not simulated. You run it to check it. And usually, it's a
hell lot more code than what goes into a very complex IC. E.g. the last
more complex chip I did had about 25k LOC of Verilog inside (including
comments). It did work "right first time", which meant "a little workaround
Actually, hardware development - at least in the digital domain - is just
another way of writing software. It is not very complex software; 25kLOC is
not really large.
I believe that extra time spent in requirements and design does not
actually increase the time required to deliver the product. In other
words, each day spent (productively) in the requirements or design
phases will reduce the time until completion of the project by at
least one day, and often significantly more than that.
I don't think he has. I know that I can't do my initial solution
sketches at a keyboard; I keep notebooks for that: I need to draw my
buffers and vectors, and label their sizes. I need to sketch signal flow
graphs. I need to be able to group dot-point ideas with multi-line
braces, and connect those with cross-page arrows. I need to be able to
break into symbolic mathematics, with all of the greek, subscripting,
matrix notation and whatever other symbology goes with it. I would
dearly *love* to be able to do that sort of thing at the keyboard with
similar facility: then I'd be able to search through it. But I can't, at
least that I know of.
On the other hand, with software you don't have to think things like
pipelining, clock cycles, timing etc. It's quite easy to do some minor
error on a pipeline control that has hundreds of stages to control![]()
Oh, really? Have you ever written seriously parallel or asynchronous
software? Because you have to worry about all of those :-(
This also depends what is a very complex ICI have seen 300+kloc IC
designs. Even in software terms that amount of code is quite big
already.
On the other hand, with software you don't have to think things like
pipelining, clock cycles, timing etc. It's quite easy to do some minor
error on a pipeline control that has hundreds of stages to control
--Kim
Yes, but what he said isn't relevant to the discussion, either.
hanukas said:Catapult C is a nice modern tool for designers; you don't have to
target a specific process. You just use nice dialogs to balance the
environment (frequency, area-vs-performance, latency, etc..) and you
can quickly and easily scale the design to different targets. The idea
is that you one extreme is optimize for performance and the other is
optimize for area .. or anything between those two. Check it out!
updates of the variables I'm watching, so I end up with printfs...).
Well, the VMS debugger could do that some quarter of a century ago, so
why can't yours today? It could also set watchpoints, conditional
breakpoints with various sort of conditions (cf. another follow-up
regarding race conditions), and even allows you to debug post-mortem
dumps (e.g., those generated from a deadlocked program, again referring
to the other follow-up).
So why isn't your toolset as capable as one built so long ago? And no,
it can't be because today's processors use more "tricks" than a VAX of
that time.
=?ISO-8859-15?Q?Jan_Vorbr=FCggen?=
It wasn't just VMS, either.
=?ISO-8859-15?Q?Jan_Vorbr=FCggen?=
It wasn't just VMS, either.
Terje Mathisen said:At this time Borland came out with Anders Heijlsberg's Turbo Pascal,
which ran rings around Logitech M2, in pretty much every possible way.
Terje Mathisen said:I loved having Pascal/VS available!
I used it once to write the mainframe part of a heavily customized
Kermit implementation that was capable of using 1900+ byte large
packets, by filling most of a screen image.
The client was on the other end of a 3270 protocol emulator, talking
VT100 or similar, and it would remove the screen formatting sequences
and end up with the same packet data.
The fun part was that this worked pretty much immediately, and ran just
as fast as the file transfer facility on a dedicated 3270-PC, and 10x
faster than the (Kermit) reference version which used the default single
line packets.
I have the greatest respect for you, but how many of you are there?