代码之家  ›  专栏  ›  技术社区  ›  Alex Gartrell

是什么让你成为C编程专家?[闭门]

c
  •  22
  • Alex Gartrell  · 技术社区  · 16 年前

    昨天我参加了一个招聘会,一位开发人员问我如何评价自己的C语言熟练程度。然后我意识到这是非常武断的,几乎不可能确定下来,所以我的问题是什么知识让你成为C语言编程专家?

    编辑:或者细分是什么?什么使你优秀、体面、精通等。

    再次编辑:我想要的更多的是一个技能列表或其他一些有建设性的衡量标准,用来判断一个人的C语言熟练程度,因为这很难做到。

    迄今为止的清单:

    • 掌握指针(我想是内存管理)
    • 掌握剖面仪(gprof,…)
    • 基本标准知识
    19 回复  |  直到 14 年前
        1
  •  34
  •   Max Cantor    16 年前

    我认为这个问题的问题在于答案有点毫无意义。我看到人们谈论经验,这很好,我看到人们谈论理解语言的复杂性,这很好。然而,如果我雇佣了一个人来做我的C项目,而我有一个神奇的8-球,可以给我任何一个(而且只有一个)问题的准确答案,我永远不会问它,“他们是C专家吗?”。

    G 奥德 P

    任何带有C的东西。

    十、 Y

        2
  •  21
  •   EmmEff    16 年前

    当我接受谷歌的采访时,采访者让我这样想。在C语言熟练程度的1-10分范围内,说你是“10”意味着你写过论文和/或书,或者在C语言编程会议上做过演讲。基于此,很少有人是10分。

        3
  •  18
  •   JosephStyons    16 年前

    对一个不如你熟练的人来说,你是个专家。

        4
  •  16
  •   Adam    16 年前

    经验是关键,了解语言的“规则”和语法当然是必须的,但这只是基础。学习正确做事的常见陷阱和习惯用法是关键。

    知道如果在编程时存在任何资源可以从中获得帮助,当然,知道您是工具链。我认识了许多C++的“专家”,他们从来没有使用过调试器或者内存跟踪程序。如果你问我,成为某方面的专家不同于精通某方面,因为你知道它的所有方面。

        5
  •  8
  •   Kristian    16 年前

        6
  •  6
  •   Ian Terrell    16 年前

    如果你不眨眼就能回答stackoverflow.com上标记为“c”的所有问题,那么你就是c方面的专家。

        7
  •  6
  •   Pitarou    16 年前

    这并不能直接回答您的问题(对不起),但它可能会帮助您决定如何对自己进行分类。

    我更喜欢中世纪行会使用的三级专业体系,而不仅仅是“专家”和“无知的新手”:

    • 仍然需要RTFM。
    • 掌握他的手艺的工具和技术。
    • 需要监督。

    熟练工

    • 已经阅读了埃芬的手册。
    • 熟练掌握其工艺的所有标准工具和技术。

    主人

    • 可能写了埃芬的手册。

    在招聘会上?没有专家:每个人都是专家。:)

        8
  •  4
  •   Smallinov    16 年前

    有些人可能不同意,但我认为经验是成为任何语言专家的关键。我认识很多人,他们通过了认证测试,但无法将他们的知识应用到现实世界中的任何实际问题上。

        9
  •  4
  •   Andrew Edgecombe    16 年前

    这个问题的答案确实让人读起来很有趣——似乎我们无法很好地理解专家的定义。在一个更广泛的论坛上,比如就业市场,会有什么希望呢?:-)

    • 还有学术意义上的专家(如“可以编写自己的编译器”,“已经撰写论文”)。
    • 这是一位务实的专家。我想将其定义为“能够编写优雅的C代码的人” 任何人 “我能理解”。

    我会在一瞬间用后者取代前者。如果您的一段代码是由一位专家编写的,它非常脆弱,只能由另一位专家阅读和理解,那么无论出于何种目的,该代码都是不可维护的。

    项目通常有足够的技术挑战,而不需要所有团队成员都记住C'99标准。

        10
  •  3
  •   Steve Baker    16 年前

    如果你能编写自己的C编译器,你就是C方面的专家。

        11
  •  2
  •   nsayer    16 年前

    如果你在C语言方面做了很多工作(比如说,在C语言中从事开源项目),那么我会这样回答,但不仅仅是指你简历上的成就列表,而是谈论其中的一个或多个,以及它特别有趣或具有挑战性的地方(关于C语言的使用)。

        12
  •  2
  •   Slapout    16 年前

    读过Peter van der Linden的“C编程专家”并记住他所涵盖的一切,怎么样?

        13
  •  2
  •   Andrew Queisser    16 年前

    由于缺乏一个标准的测试,实际上没有办法决定什么是专家级别,但这里有一些我的试金石测试,我相信每个人的列表都是不同的。

    • 知道主运算符的优先级,这样就不必将代码与paren混在一起,以避免得到错误的求值顺序

    • 能够为简单的函数指针编写原型

    • 将指针传递给指针时要感到舒适

    • 了解块、功能、模块范围

    另一方面,我不认为你必须能够理解或能够写出Duff的设备或找出模糊的C竞赛在你的头,认为自己是一个专家。

    安得烈

        14
  •  1
  •   J Miller    16 年前

        15
  •  1
  •   SteveDonie    16 年前

    我想说,对于任何一种语言来说,经验都是关键。学习一门语言、学习该语言使用的API和“习惯用法”只需要时间。一个人是否在任何方面都是专家,这是应该向他的同龄人询问的问题。套用杰夫·福克斯沃西(Jeff Foxworthy)的话,“如果你回答的问题比你问的多,你就可以 可以 做个专家。”

        16
  •  1
  •   Daniel Papasian    16 年前

    我认为一个公平的答案是理解ISO C的所有难题。

    事实上,正如任何一位comp.lang.c的常客都会告诉你的那样,人们需要做的事情几乎都不能在纯ISO c中完成,因为你通常需要以一种更明确的方式与环境交互。这就是POSIX产生的原因。

    我不会对那些自认为是“专家”的人眨眼,他们对C语言有着坚实的理解,对ISO C承诺有着良好的理解,对POSIX函数有着实际的理解。

        17
  •  1
  •   SteJav    13 年前

    能够写论文/书籍并不一定能使一个人成为一名专家程序员。这需要大量的艰苦工作、实践经验以及对各种C库的良好理解。

    祝你好运