这里只讨论算法,不讨论应用开发。其次,这里只讨论matlab、C,C++,不讨论其他语言(因为我不会)。算法,肯定是特定问题的解法,而我接触的算法,大都来自于通信、图像、模式识别领域,其他的没有接触过,不敢多做评价。做算法前,肯定会有很长的“前戏”:举个例子,在做视频的算法时,肯定免不了视频的解码,拿到一幅图像,甚至到了拿到一个像素,才是开始算法本身的工作。而这些工作,对于专注于某个算法的人来说,应该是透明的。而且我相信能独立的编写出从读取视频到获取像素的全部程序的人也不是很多。
对于很多科研人员,他们熟悉的编程工具是matlab。因为matlab提供了强大的函数库,使得复杂的数学运算(尤其是矩阵运算(奇异值分解、插值等等))、图像处理、模式识别等基本算法能够通过函数调用来完成,使得自己能够专注于问题,提出改进的思路。而且对于图像、视频,提供的读写函数自动完成了编解码操作,让我们可以专注于算法本身,跳过前戏。但是这个工具也有很多我不喜欢的地方,首先是处理速度实在是太慢了,有些时候当我们希望验证算法的实时性的时候,它就被扔到了一边。
对于另一些人,C语言是他们编写算法程序的最爱。的确,算法就是一个解决问题的办法,有输入、有输出,使用函数来描述刚刚好。而且,一般对于算法的描述,也是按步骤进行的,与面向过程的思想是相符的。加上C语言较高的执行效率,的确是一种不错的