当前课程知识点:高级语言程序设计 > 程序设计和C语言 > 1.2 C程序的构成 > 当前主流程序设计语言各自都有什么优势?
作者:farta
链接:https://www.zhihu.com/question/63090657/answer/205317579
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
C:
优势:极好的性能,可靠的标准和编译器。无论是自己代码的行为,还是操作底层硬件、操作内存,都是直截了当不绕弯子。非常适合底层代码,如操作系统内核。
弱点:语言特性极其有限,开发起来十分繁琐,且没有任何安全防护,一切全靠程序员自己。
C++:
优势:和C相去无几的性能,对C良好的兼容性,极其丰富的语言特性,开发效率比C高很多。适用于对性能敏感,又有复杂逻辑的地方。如游戏,系统程序等。
弱点:极其复杂的语言特性,既虐待要学习的程序员,也虐待实现语言的编译器。导致虽有标准,但一堆编译器的实现都不是太一致。安全防护有限,自己不小心,仍然容易出现底层错误。
Java:
优势:JVM带来安全性上的飞跃,以及优秀的跨平台能力。极其庞大的社区,极其丰富的各种资源。除了极端性能敏感场合,基本万事通。势力最大的地方是企业级程序。
弱点:社区普遍有过度设计的倾向,代码量爆炸。即使有IDE辅助不再折磨手指,也是折磨眼睛。
C#:
优势:完美版的Java,语言设计优秀不少。宇宙第一IDE的加成。资源也很丰富。适合场合与Java类似。
弱点:出身问题饱受开源原教旨主义者歧视,在非微软平台上一直在各种意义上是三等公民。
PHP:
优势:为web而生,专注于web,开发web便捷迅速。适合(且只适合)于网站后台。
弱点:语言设计简陋。
Python:
优势:易学易用,极高的灵活性,开发效率很高。适合日常脚本,系统管理,网站后台,科学计算,胶水语言等等。
弱点:性能低下,多线程支持一直是残废状态,2/3分裂一直没有完全解决,动态语言固有的正确性无法静态分析,依赖于测试的死结。
JavaScript:
优势:以前专注于前端,现在大肆攻城略地,渗透到web技术所能触及的任何场合。最适合的场合永远是web页面之中。
弱点:除了没有2/3分裂问题,Python的弱点一样不落地全有。草创时的设计粗糙,导致大量阴险的暗坑(如弱类型等),因为兼容性问题一直不能完全填平。
obj-c:
优势:iOS开发很赚钱。最适合场合:苹果帝国里。
弱点:YouCanSeeASourceFileFullOfTokensWhichAsLongAsMe.离开苹果就没人理。
-1.1 计算机程序和计算机语言
-1.2 C程序的构成
--C程序的构成
-1.3 C语言编辑、编译、运行(VC++2010学习版)
-练习题
-2.1 变量的定义和使用
--变量的定义和使用
-2.2 数据类型
--数据类型简介
--整型数据
--实型数据
-2.3 格式输出和格式输入
-2.4 运算符和表达式
--运算符和表达式
-2.5 结构化程序设计入门
-练习题
-3.1 为什么要用选择结构解决问题
-3.2 如何正确表示选择结构中的条件
-3.3 用if语句及if语句嵌套实现选择结构
-3.4 用switch语句实现选择结构
-练习
-4.1 循环的引入
-4.1 循环的引入--作业
-4.2 用while语句实现循环
-4.3 用do-while语句实现循环
-4.4 用for语句实现循环
-- 用for语句实现循环
-4.4 用for语句实现循环--作业
-4.5 何时需要用循环的嵌套
-4.6 如何提前终止循环和提前结束本次循环
-习题--作业
-5.1 数组类型的引入
--数组类型的引入
-5.2 一维数组的定义和初始化
-5.3 一维数组的使用
--一维数组的使用
-5.4 二维数组的定义和初始化
-5.5 二维数组的使用
--二维数组的使用
-习题--作业
-6.1 什么是指针
--什么是指针
-6.2 指针类型及相关概念
-6.3 指针变量的定义、赋值与使用
-6.4 指针的运算
--指针的运算
-6.5 指针与一维数组
--指针与一维数组
-6.6 指针的指针
--指针的指针
-6.7 指针与二维数组
--指针与二维数组
-习题--作业
-7.1 为什么要自定义函数
-7.2 函数的定义
--函数的定义
-7.3 函数的调用
--函数的调用
-7.4 函数参数的传递
--函数参数的传递
-7.5 函数的嵌套调用和递归调用
-7.6 变量的作用域和存储类型
-习题--作业
-8.1 字符串的存储及输入输出
-8.2 系统字符串处理函数
-8.3 自定义字符串处理函数
-习题--作业
-9.1 结构体类型的定义
--结构体类型的定义
-9.2 结构体变量及指针变量的定义及使用
-9.3 结构体变量和指针变量作函数的参数
-9.4 结构体数组的定义和使用
-9.5 共用体类型和枚举类型
--共用体和枚举类型
-习题--作业
-动态内存分配--习题
-习题--作业