【水文】也谈求职中的fizz-buzz-thing,兼谈程序员为什么不会编程

    今晚在首页看到这篇为什么程序员不会编程,文中引用了一段洋文,看着似曾相识。查了一下,洋文所对应的原文不知是不是Jeff Atwood(又一个著名的Jeff)在2007年写的Why can’t programmers…program,反正表达的意思差不多,难怪看着眼熟,尤其是一看到fizz和buzz,我的脑海里立刻浮现出怒发冲冠的恐怖头像。大家可以看一下Jeff的英文原文,很多人用自己擅长的编程语言在评论中给出了解答。在我所能看懂的编程语言中,不外乎利用循环和条件判断,过滤满足特定条件的数字,然后输出,大体上都是这种思路。我看了下lipu_paul文章下的回复,贴c#代码的很多,解决方法依然不外乎上面说到的思路,目前比较简洁的代码(稍作改动):

        static void DoFizzBuzzThing()
        {
            var numbers = Enumerable.Range(1, 100);
            string str = null;
            foreach (var i in numbers)
            {
                str = i % 3 == 0 ? (i % 5 == 0 ? str = "fizzbuzz" : "fizz") : (i % 5 == 0 ? "buzz" : i.ToString());
                Console.WriteLine(str);
            }
            Console.ReadKey();
        }

但是,博文作者lipu_paul和洋文作者Jeff Atwood的原意应该都不是教你如何编程实现fizz-buzz-thing。肯定是感觉“歪楼”严重,在这一篇“the Programmer’s Stairway to Heaven”中,Jeff Atwood再次发文对前一篇做了补充和总结,大家可以一并看一下。

    当然,洋文里Jeff已经差不多讲明白为什么面试一个程序员还需要出这种fizz-buzz-thing题目的原因。“也许在开始面试一个程序员之前没预先看他们的代码是愚蠢的”(Maybe it's foolish to begin interviewing a programmer without looking at their code first。),我的英语一般,翻译也没有追求信达雅,也许红色的程序员还应该加上引号吧。个人片面总结一下国内的情况,我认为程序员不会编程的重要原因是程序员缺乏实践,当然当前编程教育的问题也不小。还有一种可能,有人说大概是求职者技高一筹自信十足,不屑于面试答题,真牛!

    本来这是一个很有意义的讨论,不料刚刚管理员把它从首页撤了下来,而大家还在下面不亦乐乎地贴代码……

posted on 2010-11-10 23:56  JeffWong  阅读(3768)  评论(12编辑  收藏  举报