我将参加一些模式识别课程。 由于我在C或C ++方面没有先验知识,我的教授告诉我在课程开始之前要学习其中一个,并在学习课程时学到更多知识。
我应该选哪一个?
我编程的先验知识主要限于C#,但也包括一些PHP,SQL和Prolog。
答案 0 :(得分:5)
选择低级语言(如C或C ++)可能意味着您会以开发时间为代价进入性能。
如果这是您的第一个低级语言,那么请学习C. 这是一种简单,强大且经过验证的语言,它允许编写快速代码。它有几十年的便携性记录。将C代码与用其他语言编写的代码集成起来要容易得多。使用C ++,很容易出错。 C ++需要更高程度的语言掌握,更需要程序员的注意力才能使事情正确。虽然可以用C ++编写快速代码,但它更像是一种艺术,而不是在C中做同样的事情。
如果你只有几个月的时间学习,那么最后你将能够编写一个好的C代码,但这次只是不足以获得足够的C ++经验,因此你的C ++代码写在第一年或第二年将是可怕的。
例如,请参阅Linus Torvalds对C ++的严厉批评:C++ is a horrible language和C++ productivity。基本上,它归结为C ++即使对于专业程序员来说也太复杂了,并且C ++代码与依赖于上下文的行为模糊不清(这可能被认为是更高级别的语言特性,但它更难以推断性能)。 / p>
计算机视觉的主要开源库之一,OpenCV,可用于C和C ++,但它也可用于Python,这是一种更容易完成工作的语言(也可用于学习第一语言)。顺便说一句,我假设如果你设法将大部分工作卸载到库中,它本身是用C / C ++编写的,那么Python的性能成本不会很高(但通常Python比C慢10倍)。
答案 1 :(得分:4)
Stroustrup(C ++的发明者)辩称C++ is easier to learn than C:
手动捕捉[...]更少的技巧可以减少类型错误,并提供更好的库。
考虑到这一点,请转到C ++。
答案 2 :(得分:3)
C和C ++在编程方式上有着根本的不同。如果您有使用C#的经验,那么C ++也是一种选择,因为它也是面向对象的。此外,即使它们不同,了解C ++也会让您阅读(并且通常理解)C代码。另外,请查看this question以获取有关这些语言之间差异的一些信息。
答案 3 :(得分:3)
我建议学习C ++,因为如果你从C#了解类等,这可能是最简单的。你也可以用C ++编写自由函数,但用C编写类更难。
答案 4 :(得分:1)
您可能会使用的标准库是opencv
。
C#将帮助你掌握C / C ++。您可能会看到opencv代码示例并理解它们。
你可以通过足够的C来解决这个问题,然后通过这些例子来熟悉它们并熟悉它们。本课程的重点是算法,而不是你的代码是多么花哨。
听起来像一个有趣的课程!祝你好运。