HTML和C语言哪个更好用的吗?

先上图,不用说你自己心里都有底了吧!

下面我来分析一下排名前几位的编程语言

全面分析各种编程语言优缺点分析,及适用的人群

全面分析各种编程语言优缺点分析,及适用的人群

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。

优点:指针就是C语言的一大优点,C语言优于其它语言的原因就是因为它有指针操作可以直接进行靠近硬件的操作

缺点:C的指针操作也给它带来了很多不安全的因素,

从应用的角度,C语言比其他高级语言较难掌握。

与其他高级语言相比:C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。C语言的编程概念较少,标准库也较小,更易于学习。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

对于很多人来说,最想知道的是java能干什么,java技术的应用无处不在,网页、手机系统、软件、游戏等,而且现在Java岗位也很多。未来很长一段时间内,在发展前景、就业薪资、晋升路线等方面很有优势。

缺点:运行速度慢,这是众所周知的,Java删除了指针,所以不如C/C++等语言灵活。

与其他高级语言相比:跨平台性,提供的API更新及时,最大优点是开源

学习Java适合有一定的逻辑思维能力的人,并且对Java很有兴趣

简单:阅读一个良好的Python程序就感觉像是在读英语一样。

易学:Python极其容易上手有极其简单的说明文档 。

易读、易维护:风格清晰划一、强制缩进,用途广泛

单行语句和命令行输出问题:很多时候不能将程序连写成一行

给初学者带来困惑:独特的语法

运行速度慢:这里是指与C和C++相比。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。

Python源代码通常具备更好的可读性,并且能够支撑大规模的软件开发。

适合人群:可以说python任何人都可以学

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计

几乎所有的操作系统都支持C/C++,跨平台性非常好,C++功能在C的基础上增加面向对象的特点,代码可读性好,运行效率高,在大项目上具有优势。

没有垃圾回收机制,容易引发内存泄露, 学习起来相对困难。

不完全面向对象,但是在底层有更优秀的表现,C#、VB、JAVA能做到的,C++也一定能做到,C++能做到的,C#、VB、JAVA缺不一定能做到。

适合人群:建议有编程基础的人学

C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。

优点:C#的IDE功能非常强大,文档包含多国语言,运行平台在用户量极大的windows上内置。C#语法比java更优雅,有更先进的语法体系。

缺点:作为微软的产品,它不能帮助其它操作系统,语言追求稳定、严谨,而不出现任何错误。C#的很多常用的工具类因为其使用的局限性(如菜鸟用了就会出错)而不被公开

C#良好兼容了值类型/引用类型,解决了其他语言没解决好的问题,充分利用栈空间,做了一部分C/C++擅长的事

目前主要是做游戏开发,unity3D引擎游戏开发就是用C#写的,cocos2d也用c#。

Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品开发的语言。

缺点:有点老,原生不支持多线程,处理稍微复杂点,效率会很低下,很多精彩内容没法使用,仅支持Unicode文件的处理,VB不适合编程,因为VB对硬件底层相对疏远

与其他高级语言相比:属于非纯面向对象语言一般采用结构化的设计方法由于VB可以做windows程序

对这个感兴趣的人,或者需要使用office里的宏命令的人

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

不需要编译器,因为web浏览器使用HTML解释它,比其他编程语言更容易学习;错误更容易发现,可以跨多个浏览器、平台工作,比其他编程语言更快、更轻量级;

容易受到攻击,可用于在用户的计算机上执行恶意代码,可以在不同的设备上以不同的方式呈现,从而导致展示效果不同

JavaScript是一种脚本语言,其他的高级语言可以开发出各种各样的软件,而JavaScript是单独运用在网页前端的一种脚本语言,如果说html是网页的框架,那么css是网页的美工,JavaScript就是让网页动起来的人了

大学生,设计师等喜欢前端的人

PHP脚本程序主要应用于Web服务端开发,命令行和编写桌面应用程序。PHP支持和所有web开发语言之间的WDDX复杂数据交换。关于相互连接,PHP 已经支持了对Java对象的即时连接,并且可以透明地将其用作PHP对象。

跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,支持N种数据库。(N >= 10);

语法简单;有很多成熟的框架,有成熟的面向对象体系,能够适应基本的面向对象要求。

适合开发大型项目;目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,有很多开源的框架或开源的系统可以使用,使用成本低 (linux apache mysql php内核)

对多线程支持不太好,大多数时候我们只能简单的模拟去实现的。

语法不太严谨,比如变量不需要定义就可以使用,在c,java,c++中变量是必须先定义以后才可以使用的。

PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存。

优势在于开发快,简单,易于维护,前端能力突出。

微信端的开发需求较多,PHP需求量还是挺大。

一旦涉及大数据、高安全性,那么PHP与Java相比,就差远了。

总的来说是优势主要是开发进度快,成本低,易维护,最主要是市场需求还是有的。

所有人都适合可以学,只要你想。

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

能够直接访问与硬件相关的存储器或I/O端口; 不受编译器的限制,对生成的二进制代码进行完全的控制; 对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁; 能够根据特定的应用对代码做最佳的优化,提高运行速度; 能够最大限度地发挥硬件的功能;

虽然大多数软件专家是用高级语言开发新的应用软件的(那样做,程序会比较容易编写的维护),但是对于执行时间要求比较苛刻的部分,常常还要用汇编语言来重新编写;

常驻程序(当其他程序运行的时候,常驻在存储器中的程序)和中断服务例行程序(处理输入与输出的程序)几乎都是用汇编语言开发的。

汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点,编写的代码非常难懂,不好维护; 很容易产生Bug,难于调试; 只能针对特定的体系结构和处理器进行优化; 开发效率很低,时间长且单调

用汇编语言编写的程序比用高级语言编写的程序所要求的存储空间与执行时间将显著减少;

汇编语言使程序员可以完成技术性非常强的任务,而使用高级语言,即使可能做到,恐怕也会非常困难;

想全面了解微机原理的程序员,汇编语言是必修语言。

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL在这里指的是关系型数据库

保持数据的一致性(事务处理)

由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)一可以进行Join等复杂查询

能够保持数据的一致性是关系型数据库的最大优势。

有大量数据的写入处理,为有数据更新的表做索引或表结构(schema)变更,字段不固定时应用,对简单查询需要快速返回结果的处理

适合需要做数据处理的人

Go 极其地快。其性能与Java或C++相似。在我们的使用中,Go一般比Python要快30倍,可直接编译成机器码,不依赖其他库,静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。

语言层面支持并发,这个就是Go最大的特色,天生的支持并发。

内置runtime,支持垃圾回收,简单易学,丰富的标准库,跨平台编译,内嵌C支持

Go 语言通过函数和预期的调用代码简单地返回错误(或返回调用堆栈)而帮助开发者处理编译报错,但很容易丢失错误发生的范围,因此我们也很难向用户提供有意义的错误信息。

Go 语言的软件包管理绝对不是完美的。默认情况下,它没有办法制定特定版本的依赖库,也无法创建可复写的 builds。

与其他高级语言相比:执行性能好。虽然不如 C 和 Java,但通常比原生 Python 应用还是高一个数量级的。内存占用也非常省。

适合人群:从事Web开发、微服务、分布式,密码学安全、区块链系统、区块链应用行业的人

————————————————

C语言,那就来推荐几个吧,部分含有C++:

提供数以百计的C和C++脚本和程序,所有程序都分为不同的类别。;

超过9000个C编写的项目;

CodeCogs是一项协作的开放源码库,C/C++的数值方面的组件;

很多算法是用c实现的;

腾讯课堂C的课程 基础方面...

我自己是一名C++设计师,目前辞职在做线上教育C++设计讲师,每天都会直播分享免费公开课,你可以加群参加。最近我们创建了一个学习营:,组织大家一起学习进步,踏踏实实走好自己的设计路,这里是C++设计学习者聚集地,欢迎初学和进阶中的小伙伴!

我觉得@余天升 说的已经相对完整了。但是我觉得大家的回复还是偏片面了一些。而且部分回复的火力主要集中在评价这两种语言上,实际没有回答LZ的问题。

首先,应该从开源社区的风格来说,“一个大集市”我认为是一个比较恰当的比喻,一个吵吵嚷嚷的地方,必然每个项目都可以决定自己项目的开发方式。由于现在彼此之间相互依赖的开源项目大多数都是以Linux平台为开发对象,所以自然和Linux平台自身提供的技术解决方案保持一致是一个比较容易想到的技术策略。

其次,因为Linux社区中的领军人物对C++抱有顾虑(先不谈这个顾虑是否是正确的),导致Linux社区对C++的顾虑比较大。

那么LZ的问题就可以转化成开源社区对C++的顾虑究竟是正确的,还是错误的?我的看法是既正确,也错误。而原因都在于精英治理。

由于Linux内核,以及核心的GNU软件,开发者都是技术上数一数二的精英。所以他们的产品目标,和第三方公司基于Linux平台开发的软件产品目标,略有不同。包括 Linus Torvalds在内的精英们都害怕因为不好的代码而“毁掉”一个优良的作品(当然还有其他的因素)。

而反观一些商业上比较成功的软件,并没有过分强调技术性上的“纯粹性”,而是更多的以商业利益为导向,我认为他们的成功很大程度上是因为他们深刻认识到人的思维很容易将大的问题做分解,但是比较难将小的解决方案组合成大的解决方案。而在这方面,C++应该比C更有优势,更能通过接口、通过封装降低产品各个部分的复杂度,不仅使开发者能够更容易的进行开发,也更能够让需求分析、设计更容易贴近用户实际的使用方式,而不用过分考虑其实现形式是否能够承载。

总之,这两种语言更大的区别我觉得在于设计的哲学,正是由于这种哲学上的不认同,导致了开源项目更多的使用C而不是C++。

《C专家编程》第二章《这不是Bug,而是语言特性》里有一句话:

它(C++)对C语言中存在的一些最基本的问题没有什么改进,而它对C语言最重要的扩展(类)却是建立在脆弱的C类型模型上。

第十一章《你懂得C,所以C++不在话下》里还有一段话:

编程语言有一个特性,称为正交性(orthogonality)。它是指不同的特性遵循同一个基本原则的程度(也就是学会一种特性有助于学习其他的特性)。例如,在Ada中,程序员一旦明白了包(package)的工作原理,也就能够把这个知识应用于泛型包中。令人不快的是,C++中的许多特性是非正交的。精通C++的某个特性并不能给你带来什么线索或向你启发适用于其他特性的思想模型。大多数程序员选择了只使用C++中较简单的一个子集的方法。

STL作为一个模范放在那里人们都不看,非要去写

  • 披着C++外衣的C语言

中枪踩坑学不会都是正常的。这根本不是C和C++哪个好的问题,是大众对C++的误解造成的。在用C++的时候,自己水平不高,就不要去用C的部分。都是因为人类的意志力太脆弱,才造成这么多问题的。

不过话说回来,我觉得是因为现在牛逼的一帮人都太老了,但是还没有脱离岗位,所以普遍有这些想法。我们组有一个超厉害的在M$干了二十几年,刚开始进来就用汇编写Fortran编译器的菊苣说,他还是不太喜欢封装得太多的东西。不过人家说得好,这只是一个喜好问题,根本不是什么好什么不好的问题。等以后CPU的核变得跟GPU一样多的时候,C语言就只能成为负担了

从Github的语言排行榜()看来,C比C++多了将近一倍。

原因:对于面向对象的编程语言, 除C++外还有许多更好的选项,比如Ruby、Python、PHP和Java(全都比C++排名先前);相反,C的代替品不多

1 历史原因, C的历史悠久,基础项目多,很多40多岁的大牛也是基本用C用的多
2 C++属于实验性质的先驱,很多东西都是在C++里面广泛应用起来才推广的,面向对象,泛型等,另外继承C的一些不良东西,导致臃肿琐碎,上手容易,产生高质量的代码不容易,标准不稳定,编译器很后时才支持的比较好。
3 Linus说的很对,关键是设计,如果借鉴设计模式的一些想法,C一样可以写的很好,如果习惯了,开发效率未必会比C++低
4 现代的软件设计讲究模块化设计,各模块分工好了,整个项目不必使用同一种语言,C++的生存空间被压缩不少
6 C++易学难精,很容易纠结到语言细节中,而忘了项目。
7 C++还是很有发展前途,一些必须用native code的,如果不是用C的高手,用C++还是写的快。
8 还忘了一条,C语言都是一个人从头定义的,标准委员会只是略打个补丁。C++是委员会妥协(商业政治和技术)的结果,所以混乱,标准制定进度缓慢。来自于不同的想法,没有很强的一致的风格。不过C++毕竟是需求推动起来的,所以还是符合了开发的需要。

(1)C++比C多了很多特性,让用C++写出来的代码容易不伦不类。
从风格上来说,钟爱C的程序员可能不喜欢。

虽然C++在绝大部分情况下是可以兼容C的,但在某些情况,还是不得不使用 extern C 这样的代码。

(3)我还是认为 C++ 比 C 优秀很多,如果你能很好地驾驭它。
C++ 大师 Bjarne Stroustrup 回答过很多人的一个疑问,大致就是说“C++特性太多了,变得很臃肿,你会不会考虑裁掉一些特性”。他给的答案是“不会,无论是异常、多重继承、还是RTTI”。
原因很简单。如果说多重继承会带来问题,难道C的指针不会吗?还是那句话,只要你能很好地驾驭它!

就我个人来说,作为一个C++程序员,我永远是被C程序员摆在瞧不起的位置,所以开源软件这种证明程序员荣誉的东西,怎么能让那些高傲的人低下头来使用C++呢……
说起来,本人一路低头,从C++学到JAVA再到OB-C……越来越被同行瞧不起……

我认为就是推广,C本来接受度就更好,各种编译器全部可以编译,任何项目都可以借鉴,而且C更简单易维护。C就是首选。不但要首选C,若有可能要做到Clean-C.
我觉得可推广性考虑完全击败linus和大胡子

作为开源项目,和封闭项目不同,要尽量支持更多的平台,对开发环境也不能做太多要求和指定。C 语言比较简单,编译器稳定可靠。而 C++ 虽然有一个标准,但是实践中,各个编译器的实现都不同程度地偏离了标准。这种差别是很恼人的,为项目带来很多麻烦。这时采用纯 C 而不是 C++ 就是一个十分合理的选择。

另外,开源项目很多是基础类库,而 C++ 在很多平台缺乏统一而稳定的二进制接口,无法做到二进制复用。(很遗憾,像 Boost 这样难得一见的著名开源 C++ 项目,在不尊重二进制接口的稳定性这一点上,又是臭名昭著。)那么,从节约用户的编译时间和环保的角度考虑,开源项目采用纯 C 而不是 C++ 也是有理有据的。

C++ 编译器做了很多额外的工作,如程序员不合格,隐藏很多bug。

c++过于复杂,绝大多开发者都不能完全掌握c++所有的特性(c++iso文档有600页你读完了?boost你都看懂了?)c++的另一个问题是不少程序员 包括我 在使用时,不少设计是利用了语言的一些特性,造成了设计上的不良。到最后就很难修改了。某牛说过c++是座山,世界上最大的屎山。我认为也是源于此吧。总之c++容易写出复杂而晦涩也不易修改的代码,这一切不是c++的错。但在c++里很容易发生。这是门给iq190
以上人用的语言,但太多iq70的人在用,所以大牛门纷纷不用了。

c++太复杂了,c++写的库也很复杂,比如stl和boost,调试不方便,不如c清晰简单直接。

C相对于C++而言简单、快速、灵活,C++ 复杂到超出绝大部分精英程序员的控制,而对他们而言用C同样可以实现优雅的继承、封装和多态。C++ 侧重于考验一个人的架构能力,而这种能力对程序员有着很高的要求,稍有不慎,就会伤到自己,还不如用C来实现更完美。

虽然说面向对象给了程序员贴近显示的思考模型,但是在代码中,一些违反常识的事情还是会发生。实际模型和代码模型会有微妙的差别。纯粹的面向对象还比较好处理,一旦用错也可以有一种回到正确模式的倾向。但是c++的面向对象一旦用的不好,或者说用错,各种补丁,不合格的代码,非面向对象的代码就会添加进来,最后导致项目代码混乱,不可维护.....

个人观点,c++的特性比c语言要多得多,如果是一群人共同维护一个项目,很有必要先坐下来定下一些规范:哪些库哪些特性能用,哪些不能用。要不然各自都看不懂对方写的代码。
而参加开源项目的程序员,坐下来沟通的机会相对少一些,而且热衷于开源活动的人们似乎都比较爱好自由,不容易达成一致的意见。
所以干脆选择特性少一点的c语言了。

不能因C++复杂而去唾弃它。。。很多人都是因为它复杂。。所以不用。。那不是语言的错。是人的智商不好。。对于一个大项目来说。。当你的代码超过50万行。。你会发现C++的优势是C永远不能代替的。。。。。

如果你说的开源软件是做底层,用C写是必须的。我不讨论C++的好处,但是他有做不到的东西。
如果底层开源软件用C++写,那么当需要别的语言来使用这个软件时,即作为基础库,这时就有麻烦了。用C写了,很多语言可以真接和C的库交互。C++写的库,只能C++自己使用。必要时还必须用C到处。这也是为什么操作系统不用C++,不是不想用,而是不能用。

这种问题的答案的首要因素不应该是代码积累/沉淀/延续吗?为什么现在人都把精力放在语言特性的比较上?就算很多认识并较好掌握了复杂语言特性的他们,是否有足以拿得出手的项目/代码可以分享或者重用。
显然开源的老祖宗GNU(Gnu's Not Unix)是脱胎于Unix文化,C语言那个时候也已经得到了普遍的接受,兼容性也是最好的,用c并延续已有的c的成熟经验和代码是最自然的事。几乎所有流行的linux环境也都是在这个基础上被搭建起来的,在没有足够大的改变开发工具的必要性来推动的话,这么惯性会延续很久。(其实已经逐步在改变,比如gcc转换到c++上开发)
任何一个仔细考察和研究开源项目,或哪怕仅仅GNU项目本身的人都会发现其中蕴含的是一个巨大的宝库。实际上对于从微软/单机时代走过来的每一个人,在介入到网络(Fidonet/Internet)那一霎时,无不对突然暴露在眼前的源代码项目充满好奇,就仿佛突然发现了宝藏一般迫不及待要去挖掘。
C++乃至后续的项目的确给出了更多的方便编写代码的特性,但因为目前使用的冯氏计算机体系结构以及底层都是类Unix的操作系统也决定的的这些特性都可以通过C这个冯氏汇编语言实现,最多是偶尔稍过繁琐,这种现状暂时还不会得到改变,至少在自动生成代码的量占据一定比例以前。
那么从项目沉淀的角度看,一个最少抽象,又已经有足够底层支撑的语言是最适合用于开发希望被大众接受并广为传播的开源项目的。尽管眼下基本上各种流行语言都有不少的类似项目,但如果以一定的质量/价值/普适性阀值做一个过滤的话,基于c的项目可能存活下来的概率是最高的。越是新潮的高级的东西,要不是只是作为练手的玩具,要不往往仅局限于一个某个较窄的应用场景。
所以某些高级的东西,它们的确能够提高某个具体项目的开发效率,但其中提高最多的是那些随心所欲的成分,而真正能够拿来重用那部分沉淀/积累的东西并不会因此改变太多。人们往往发现每当一个高级的东西被发掘出来,能够得到流行的关键往往是其自身究竟积累到何种程度,实际上每次这个积累过程很可能只是一个重新制造轮子的过程,尽管这些个新造的轮子可能表面显得更加漂亮和光滑。

没那么复杂吧,就是c存在的时间长而已 c本身是优秀的语言,所以一直活到现在。旧时代的项目没有更换语言的理由 但如果看这远些,互联网时代出生的开源项目,基本就是使用新兴语言了。如果还要高性能,c++是不多的选择之一 其实c++11不该和老c++相提并论的

知乎上关于c和c++的一场讨论

开源社区一直都不怎么待见C++,自由软件基金会创始人Richard Stallman认为C++有语法歧义,这样子没有必要、非常琐碎还会和C不兼容,并且还带来不了什么非常大的好处。

Linus Torvalds也说,C++是一种可怕的语言,而使用它的一大群水平很次的程序员,使得它变得更加可怕。

C++本身的语法是好的,但是过于的复杂,尤其像继承这些特性被乱用了以后,面向对象的那些优势会在那些质量糟糕的代码前面完全丧失,有时候还会使得代码非常费解。
容易被误用语法特性而可能会变得很糟糕的C++,加上两位大神的抵制,理所当然在开源阵营里面流行不开。

我要回帖

更多关于 学html还是html5 的文章

 

随机推荐