程序员应该掌握C++吗?

Alw*_*mer 16 c# c++ programming-languages

我想知道程序员是否有必要拥有至少1种编程语言的专业知识?

像C#,java,VB.Net等编程语言每年或每两年都会发生变化.程序员是否应该掌握C++,这是一种稳定的语言,很少经历变化?

我是一名C#开发人员,现在使用它大约7年了,我仍然没有掌握它.

编辑我认为我的问题被误解了.我并不反对改变或进化.我喜欢C#,VB,Java等语言提供的新功能和抽象.如果它让程序员的生活更轻松,我一直在等待新的功能.但这一事实也使这些语言很难掌握.他们在不断发展.像C++这样的语言具有缓慢的进化周期.因此,考虑到这种情况,掌握C++是否有帮助?这就是我原来的问题.注意: - 根据以下朋友的答案,我了解语言和框架是表达概念的工具.用不同的编程语言表达概念也许是一个好主意.

小智 69

像C#,java,VB.Net等编程语言每年或每两年都会发生变化.

它们不会"改变"而是会发展.您的知识和经验不会丢失.

程序员是否应该掌握C++,这是一种稳定的语言,很少经历变化?

编程是关于新的和变化的.如果你不喜欢它,可以考虑另一种职业.

我是一名C#开发人员,现在使用它大约7年了,我仍然没有掌握它.

如果你要掌握,生活就会变得无聊,甚至可能毫无意义.也许这不是目标,而是重要的道路?

编辑:阅读您的评论后,我觉得您错误地将.NET类库的数量归因于C#语言本身的复杂性.不要混合它们.C#语言相对简单,很容易"掌握".您提到的char数据类型的有用方法只是.NET库中的辅助方法.它是该平台的资产之一.这是使.NET开发人员如此高效的原因,因为他们不必浪费时间挖掘第三方库来为他们进行基本操作:XML,成像,网络,数据库等等,它们都可以直接从.NET库中获得.当然,它的庞大尺寸可能会吓到你并给人一种无尽的印象.不是!只需使用你需要的东西,剩下的就是.

  • 就像Neil在下面说的那样,C++也在发展.对于我们这些在C++中处于领先地位的人来说,这些演变非常重要,即使更多的临时用户发现很难看到他们的价值.我已经使用C++ 10年了(专业),我仍然可以在其中找到要学习的新东西.所以,"稳定性"并不意味着那么多. (3认同)
  • @Yogendra:了解C++本身就有好处,因为你可以更好地理解C#等高级语言幕后发生的事情.但是掌握C++不会让你成为C#的掌握者. (2认同)
  • @Yogendra:.NET库非常庞大,它是该平台的资产之一.我也一直在发现新事物,但我学会了不要担心它.除非你努力成为C#的大师而没有其他任何编程,否则你将无法全部学习.专注于您的项目,并使用其库作为工具查看语言.每天你都会学到新东西 - 享受吧! (2认同)

小智 32

C++在我使用它的过程中发生了巨大的变化,并且随着C++ 0x标准的采用即将发生另一个巨大的变化.如果你不喜欢改变,那你就错了.

至于"掌握",我会说任何声称完全掌握C++各个方面的人可能都在说谎(如果他曾经说过这样的话,就会包括像Stroustrup这样的人).大多数经验丰富的C++程序员都是该语言子集的专家,这对于解决他们感兴趣的特定问题非常有用 - 将他们置于子集之外,他们缺乏知识就会很快显现出来.但是,当然,他们可以同样快速地学习新的东西.

  • 我认为大多数C++开发人员已经无可救药地妄想了吗? (4认同)
  • "可能躺在牙齿上"或绝望的妄想:-) (3认同)

Nor*_*sey 17

我想知道程序员是否有必要拥有至少1种编程语言的专业知识?

超过一个! ACM杰出科学家Kathleen Fisher写了"我们需要不止一个",这解释了为什么理解多种编程语言如此重要.这篇文章范围很广,但它特别提到了C++.

程序员是否应该掌握C++,这是一种稳定的语言,很少经历变化?

不必要. 两点:

  • C++看起来很稳定,因为它的生命周期较晚,并且在其他语言变得更受欢迎时保持相对稳定.如果你在20世纪90年代工作过,你会认为C++非常不稳定.请参阅Jim Waldo的优秀着作"C++的演变".即使是现在,当C++ 0x标准最终被采用时,C++即将遭受另一次痉挛.

  • 对于任何程序员来说,深入理解具有显式内存管理的语言以及使用位,字节和单词在机器级编程的语言是非常有价值的.为此,C语言更好一些,但C++是一种非常好的机器级编程语言.但是,至少在我看来,重要的是理解如何使用字节,单词和指针进行编程,而不是模板或受保护成员字段等暗角.

  • 对于任何程序员来说,深入了解如何使用泛型编程是非常有价值的.C++模板几乎不合适,因为它(还)不可能独立地对C++模板进行类型检查.更好的模型包括Java泛型,C#泛型和Haskell和ML中的参数多态

  • 几乎不可能掌握像C++这样复杂的东西 - 或者Haskell或Perl或Common Lisp.如果你想完全掌握某些东西,你必须坚持使用像Lua这样非常简单的语言.


Jor*_*ans 6

我相信一个真正的"主"程序员有一个不同的工具集.她可能专注于一种或多种语言,但总体而言,她将确保涵盖更广泛的基础,而不是深入到细微的细节.

我觉得有用的一些东西:

  • 一种接近金属的语言.C,C++,汇编语言,用于学习程序如何与硬件交互.
  • 一种相对纯粹的OO语言(C#,Java),在认识到OO不是银弹的同时学习OO概念.
  • 一种函数式编程语言(Lisp,Haskell,...),可以超出程序/命令框.
  • 一种"脚本语言" - 一种shell脚本语言,或类似Python和Ruby的东西,因为迟早你会想要"拥有一切"的东西来快速拼凑一些实用程序.

掌握这些知识将使您成为任何语言的更好的程序员.