TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Why are embedded systems software developers getting a D- in C?

19 点作者 sruffell超过 15 年前

7 条评论

gte910h超过 15 年前
That quiz ranged from silly curiosities to actual common mistakes.<p>I really dislike questions like "Most portable", etc where you have to answer what you know they want you to rather than say "I don't know how good all compiler compliance is in this respect, I suspect most do it fine, but c-compilers vary widely in quality, would you really like me to go research the standard and find out how good compliance is with respect to this behavior?"<p>Portability is only a concern for a subset of embedded programmers, whereas most of the other questions are a concern for most people.<p>Ditto for the multithreading operation item (Although I suppose most embedded programmers have ISRs at least to deal with).<p>In general, the author of the article is completely misinterpreting the test results which answer:<p>How well are embedded programmers at passing a test which involves esoteric declarations, overly detailed knowledge about compiler compliance and general portability questions probably in excess of what you worry about in any embedded design position, and otherwise designed to be beyond the experience of most practitioners in the field?<p>The use of a grade school grading scheme for the test is juvenile at best. They are VASTLY underrating the embedded developer pool.<p>For single platform coders, especially working on largely modern code, 6/10 is a fine score.<p>People who write for single platforms have no reason to be good at the portability questions. People who write for single platforms have no reason to be good at the compiler compliance questions. People who do not work on old code without "don't be tricky" condemnations have no reason to have memorized esoteric declarations of C variables which aren't commonly used.<p>Anyone who wanted 80-100% scores for MOST embedded positions would be completely wasting their companies money on overly expensive engineers. Only companies which have a multi-threaded legacy codeset which is designed to be compiled on unknown systems, running on multiple processor machines actually needs all the knowledge the test tests for, and if the company has good code reviews, such as all the "oh no" cases the article writer put out there, only SOME of the staff needs to know all these things, the rest can learn them in code reviews.
评论 #1055683 未加载
lincolnq超过 15 年前
Possible answer to the post title: Their quiz-taking webapp is terrible. You can't retake the quiz or review previous questions, and can only try each question once, and if you go back and choose a different radio button as an answer for a previous question, it answers the current question instead (basically throwing away your answer).<p>So maybe people just couldn't use their damn webapp.<p>Several of their questions:<p>Which of the following is the most portable way to declare a C preprocessor constant for the number of seconds in a (non-leap) calendar year?<p><pre><code> #define SECONDS_PER_YEAR 60 * 60 * 24 * 365 #define SECONDS_PER_YEAR 60 * 60 * 24 * 365; #define SECONDS_PER_YEAR (60 * 60 * 24 * 365UL) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365) </code></pre> Which of the following is the most flexible way to declare a C preprocessor macro that takes two arguments and returns the smaller of their two values?<p><pre><code> #define MIN(A, B) ((A) &#60; (B) ? (A) : (B)) #define MIN(A, B) { if (A &#60; B) A; else B; } #define MIN(A, B) ((A &#60; B) ? A : B) #define MIN(A, B) A &#60; B ? A : B; </code></pre> Which of the following constructs can be used to create a portable infinite loop in C?<p><pre><code> while (1) { ... } for (;;) { ... } loop: ... goto loop; All of the above </code></pre> And then they asked a question which says "what was the intended effect of [some terribly misleading line of C]" and I became fed up, because I have no idea what the intent was, even if I could figure out the actual behaviour.
评论 #1056159 未加载
评论 #1055670 未加载
RiderOfGiraffes超过 15 年前
Hmm. I got 9/10, and the one I got wrong wasn't the one I expected to get wrong. It was also one that in some sense "doesn't matter," but I'm still slightly embarrassed.<p>An interesting quiz, certainly. The problem is that the article contains no suggestions for the question asked: why?
评论 #1055473 未加载
mattboehm超过 15 年前
Isn't this just a public online quiz that could be taken by anyone? Who is to say that the majority of people that took it are embedded systems software developers and not highschoolers?
aroon超过 15 年前
There are only 10 questions, you can't review your questions before final submission of the test, some of the questions are pretty silly, and some of the terminology is questionable.<p>I think these kinds of "standardized" tests only make sense when the results are normalized against the population of test takers. That most embedded software developers received a D- only tells us that a combination of the performance of the test and the performance of the test taker was poor.
abscondment超过 15 年前
If C is proving too hard, perhaps they should use Lisp for embedded systems ala <a href="http://news.ycombinator.com/item?id=1052858" rel="nofollow">http://news.ycombinator.com/item?id=1052858</a>
评论 #1055872 未加载
malkia超过 15 年前
I've got 7/10 - I'm a poor "C" programmer.