什么 - “了解一种语言”真的意味着什么?
我确信这不仅仅是了解语法。
是吗
你是如何学习你精通的语言的?
答案 0 :(得分:7)
“了解”一种编程语言非常类似于“了解”一种人类语言 - 当你不必不停地翻阅一本书或暂停记住正确的单词时,你会流利。
我认为“了解一种语言”意味着能够阅读和理解大多数程序(约90%),而无需在参考资源中查找任何内容,并且确切地知道在哪里可以找到更多模糊部分的技术细节。框架。对于没有“框架”本身的语言/平台,它拥有社区普遍接受的主要图书馆的知识。
对于使用该语言进行书写,这意味着花费大约90%以上的时间来设计您正在撰写的内容 - 包括对设计的研究 - 并且只有不到10%的人查找技术参考信息。
答案 1 :(得分:4)
真的'知道'一种语言来形容自己是'好'意味着
答案 2 :(得分:3)
给定语言X中的一行代码,该行被写入一次并且可能被读取很多次(当然可能被修改)。因此,语言的熟练程度在很大程度上是阅读理解。对于用X编写的程序语料库,您能多快阅读这些程序并了解它们在做什么?
是
如果你有一种特定的语言,那么一个好的测试就是看一下其中的重要例子。对于C的情况,读取(例如)Linux内核,GNU OS实用程序,PostgreSQL或Subversion,以及弄清楚它们如何工作不仅是一种指示,而且也可以是良好的实践。
[1]有一个关于字节码静态分析的任务;但实际的解决方案可以写成任何东西。
答案 3 :(得分:2)
我认为这实际上取决于“好”的定义,或“好”的目的。
例如,让我们考虑Java。
大多数工作都不适合你擅长核心语言,他们希望你精通特定的API(例如,Swing for GUIs)甚至是第三方API(比如所有Apache的东西)。你不一定要知道每个角落的情况。
学术和工业研究可能要求您真正了解内外语言。例如,如果您编写静态分析工具或编译器优化,最好知道边缘情况。
在教育和质量保证方面,了解所有奇怪的角落及其风险通常很重要。这是C ++的典型特征。在教育方面,因为你可以指望学生偶然犯这些错误。在质量保证中,因为这是一些奇怪的错误所在(例如,静态初始化中的竞争条件)。
至于如何实现功能,我认为你可以成为一个优秀的程序员而不知道某些事情是如何实现的(例如,C ++中VTBL的细节),但重要的是要知道其他事情是如何实现的(例如,垃圾)集合,内存管理,一些库)编写真正优秀而高效的代码。
答案 4 :(得分:1)
在我看来,这意味着你可以用那种语言思考。当您通过问题陈述时,能够看到部分代码出现在您的脑海中,这很好地表明您对语言的熟练程度。
答案 5 :(得分:0)
鉴于算法,如果您实施解决方案
我认为你更了解语言......
答案 6 :(得分:0)
您可能想要考虑不了解某种语言意味着什么。例如,我经常遇到那些认为他们认识OCaml的人,因为他们知道标准ML(同一家族的另一种语言),事实上,他们并不知道语言之间的差异或它们的实际含义。所以我会说知道一种语言的一部分就是知道它与其他语言的区别。
C vs C ++是另一个例子。许多人曾经声称他们知道C ++,然后用C ++编写C代码。