不同编程语言有不同的差异,但本质上都相同,都有着流程控制语句和循环、加减乘除运算等,都是通过批量处理来完成重复性的工作 。一门好的语言要符合人性,让人使用起来顺手,还不容易出错,写的代码还易于维护和扩展,同时运行速度要足够快 。这个世界上并没有完美的语言,不同语言在不同环境下有着不同的优势 。以下让我们通过一个算法实例来理解不同语言之间的差异 。
文章插图
算法例子:质因数分解算法我们通过这个算法例子来简单弄明白各语言之间的差异,以下给出的是部分实现代码,更详细代码需要查看源文件 。
首先什么是质因数分解算法?即任意一个合数可以分解为多个质数相乘 。
例如:20 = 2 * 2 * 5; 45 = 3 * 3 * 5; 210 = 2 * 3 * 5 * 7
按数学运算:列竖式或左右分解,拿能被整除的最小的质数做除数,不断整除得到新的得数,最后把所有的除数和最后的得数连起来就是 。
文章插图
质因数分解图例
代码实现思路:
- 先设立一个除数,从最小的质数开始,也就是2;
- 当能够被当前除数整除时,该除数就是因数,将原数字设为被整除后的结果;
- 继续从该除数开始整除新的结果,并不断循环;
- 当无法被整除时,则递增得到新的除数,继续第2步;
- 直到除数的平方大于要分解的值,终止循环 。最后所有的除数与剩下的大于1的那个得数就是分解结果 。
C语言是面向过程的静态编译型语言,也是一切高级语言的鼻祖,可以说如今几乎所有流行的语言都有C语言的影子 。C语言在底层开发,包括操作系统、驱动、中间件、图形库、数据库、网络库等开发等有着无可替代的作用 。
C语言的生命力也是最长的,流行了近50年,至今还是开发排行榜前3的位置 。C语言足够简洁清晰,没有那么多概念,也没有那么多API,性能极好,它是所有编程人员都应该掌握的语言,可以作为计算机基础来学 。
C语言代码实现如下,该factorize可以返回一个分解后的数组 。从代码里可以看出,首先需要申请一个动态数组result,长度为len的内存空间 。该数组用来保存分解数,每分解出一个数字时则追加到数组中去,数组下标也随之增加 。当分解完成后,最后返回分解数的数组 。
文章插图
代码逻辑:
- 建立双循环,自最小的质数2开始不断递增遍历 。
- 外层循环为是否继续分解的条件,当i的乘方小于等于要分解的数字时,说明还可以分解 。i不断递增,直到i的平方大于num为止 。
- 内循环则不断用num来除以约数,看能否除尽,能除尽则以得数作为新的num来继续分解,并将刚才的除数i追加到分解结果中 。当i无法整除num时,说明当前i分解完成,则跳出内循环 。
- 当循环终止后,最后分解的得数如果小于i的平方就没法继续分解,如果i大于1那剩下的num就是最后一个分解数 。
C++语言是C语言的超集,它扩充和完善了C语言 。增加了类的概念,并引进了运算符重载、引用、虚函数等 。C++做什么都离不开对象和类,其核心思想是多态,继承,封装 。C++的语法与C几乎一致,基本上C的代码可以在C++下运行,但是C++比C语言要复杂和更难掌握,相对来讲C更加清晰易懂 。
由于C语言相对简单,且是过程式,开发大型复杂系统或者大型软件界面时会力不从心,于是C++应运而生 。其实我并不觉得C++比C好或强大,大型系统完全可以通过自己组织代码来得到良好架构,也有很多单独C语言UI库 。
C++的生命力也很强大,几乎是很多中大型系统、游戏、桌面软件、服务端、网络通信等的首选语言,至今也在开发排行榜前5的位置 。
推荐阅读
- 编程语言的历史
- Mysql去重插入方法
- 软件测试中的可用性、可维护性、可靠性有什么区别?
- 百合炒牛肉
- 番茄炒牛肉
- 汉语言文学本科自考有哪些科目时间 汉语言文学本科自考有哪些科目
- 适合穷人的18个创业加盟项目 适合穷人的18个创业项目有哪些
- 健康管理师证书真的有宣传的那么有用吗 健康管理师证书有用吗
- 文科专业好的大学 文科有哪些专业
- 广东都有哪些不错的大学? 广东有什么大学