用于模式识别/图像处理的C或C++?

Eri*_*son 1 c c++ pattern-recognition image-processing

我即将参加一些模式识别课程.由于我对C或C++没有任何先验知识,我的教授告诉我在课程开始之前要学习其中一个,并在学习课程时学到更多知识.

我应该选哪一个?

编程的先验知识主要限于C#,但也有一些PHP,SQL和Prolog.

sas*_*nin 5

选择C或C++等低级语言可能意味着您需要以开发时间为代价来提高性能.

如果这是您的第一个低级语言,那么学习C.它是简单,强大且经过验证的语言,它允许编写快速代码.它有几十年的便携性记录.将C代码与用其他语言编写的代码集成起来要容易得多.使用C++,很容易出错.C++需要更高程度的语言掌握,更需要程序员的注意力才能使事情正确.虽然可以用C++编写快速代码,但它更像是一种艺术而不是在C中做同样的事情.

如果你只有几个月的时间可以学习,那么最后你将能够编写一个好的C代码,但这次只是不足以获得足够的C++经验,因此你的C++代码写在第一年或两个将是可怕的.

例如,请参阅Linus Torvalds对C++的严厉批评:C++是一种可怕的语言C++生产力.基本上,它归结为C++即使对于专业程序员来说也太复杂,而且C++代码与依赖于上下文的行为模糊不清(这可能被认为是更高级别的语言特性,但它更难以推断性能).

OpenCV是计算机视觉的主要开源库之一,可用于C和C++,但它也可用于Python,这是一种更容易完成工作的语言(也可以作为第一语言学习) ).顺便说一下,我假设如果你设法将大部分工作卸载到库中,而库本身是用C/C++编写的,那么Python的性能成本不会很高(但通常Python比C慢10倍).

  • 虽然来自c的人通常有不良习惯,通常是类型安全而不使用[RAII](http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization). (2认同)