当前课程知识点:高级语言程序设计 >  程序设计和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.离开苹果就没人理。


下一节:C语言编辑、编译、运行(VC++2010学习版)

返回《高级语言程序设计》慕课在线视频列表

高级语言程序设计课程列表:

程序设计和C语言

-1.1 计算机程序和计算机语言

--计算机程序和计算机语言

--致敬先辈:伟大的C语言之父——丹尼斯·里奇 程序员

-1.2 C程序的构成

--C程序的构成

--当前主流程序设计语言各自都有什么优势?

-1.3 C语言编辑、编译、运行(VC++2010学习版)

--C语言编辑、编译、运行(VC++2010学习版)

-练习题

顺序结构程序设计

-2.1 变量的定义和使用

--变量的定义和使用

-2.2 数据类型

--数据类型简介

--整型数据

--实型数据

-2.3 格式输出和格式输入

--格式输出printf函数

--格式输入scanf函数

--单个字符的输入输出

-2.4 运算符和表达式

--运算符和表达式

-2.5 结构化程序设计入门

--结构化程序设计入门

-练习题

选择结构程序设计

-3.1 为什么要用选择结构解决问题

--为什么要用选择结构解决问题

-3.2 如何正确表示选择结构中的条件

--如何正确表示选择结构中的条件

-3.3 用if语句及if语句嵌套实现选择结构

--用if语句及if语句嵌套实现选择结构

-3.4 用switch语句实现选择结构

--用switch语句实现选择结构

-练习

循环结构程序设计

-4.1 循环的引入

-- 为什么要用循环结构解决问题

-4.1 循环的引入--作业

-4.2 用while语句实现循环

--用while语句实现循环

-4.3 用do-while语句实现循环

-- 用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 共用体类型和枚举类型

--共用体和枚举类型

-习题--作业

动态内存分配

-动态内存分配--习题

文件

-习题--作业

当前主流程序设计语言各自都有什么优势?笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。