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

与其说这是给想自学软件开发小伙伴梳理的自学路线,还不如说这是一篇软件开发行业的技术路线整理合集。除了帮助小白自学,也可以帮助正在进步或者迷失方向的软件工程师继续向前。

整个自学路线我会不断完善,目的就是让大家少走弯路,建议自学软件开发的小伙伴关注我,不迷路。

很多小伙伴从其他行业转行来做软件开发,或毕业后就选择软件开发工作,在这一路上应该吃了不少苦头,走了不少弯路。

1:学习资料众多,不知道该怎么选,并且很零散

2:想提升自己的能力,但不知道要学什么?从哪里开始学?

3:遇到困难,没有人来指点一下,经常掉坑里,浪费了很多宝贵的时间!

那么有没有一种清晰的学习路线,就像我们玩游戏点技能树一样,可以看出来我们的发展方向和步骤?

我把这套技能树和技术路线分为八个阶段。

这篇图文先说第一,二阶段。

后续会为想自学软件开发的朋友梳理第三、第四、第五、六七八阶段。所以,大家给个关注,不会迷路。

第一阶段:打牢基础,小白入门要踏踏实实走的路

不得不说,在我10多年的软件开发经验中,见到过太多同事,他们由于基础没有打好,造成平常工作中遇到很多“混乱”的问题,比如某个概念搞混引入的BUG,比如编程不规范造成的代码不好维护,比如代码文件管理的混乱等等。

这会大大影响自己的工作效率,学习效率,还错过很多晋升机会,甚至觉得软件开发行业这条路不适合自己走,产生自我怀疑。

其实这都是因为基础没有打好的缘故。所以第一阶段很重要,把基础打牢,后面你的工作或者学习都会变得很轻松,很有体验。

第二阶段:网络应用,软件开发通用技能树

这条技术路线技能树点满,你可以在网络应用软件开发领域横着走,并且找到一份不错的工作。这份工作可以帮你解决生活上的问题,还可以让你有零花钱花。

第三阶段:团队协作需要有的技能树

在软件开发行业里,编程技术的应用其实只是一部分,还有另外一部分知识或者技能是围绕软件开发过程的。你参与的软件规模越大,那么软件开发过程就显得越重要。

你要知道3个人的团队和100人的团队协作是完全不同的概念。

这套技能树就是围绕软件开发过程的,如果你把这套技能树点满,你可以让软件开发过程变得自动化,并且让团队协作变得和谐。

为什么要把这套技能树放在第三阶段呢?因为无论未来你选择哪个软件开发方向,都会需要到这套技能树。

第四阶段:生产工具硬核路线技能树

这套技能树点满了,你可以参与开发比如PhotoShop,Xmind,3DMax,Blender等等生产工具的开发。

当然像PhotoShop这样的软件,要开发它除了这些技能树外,网络应用知识、图像图形处理技术这些知识都是要有的。

第五阶段:移动端APP开发路线技能树

这套技能树点满后,你可以参与IOSAPP或AndroidAPP的开发。如果同时你把第二阶段和第三阶段的技能树点满了。那么你完全可以自己独立开发一款APP,或者带领一个团队开发APP。

这个时候的你,不是你找工作,而是工作来找你。

第六阶段:人工智能与数据分析路线技能树

这是未来20年比较火热的发展方向,可以参与到很多伟大的项目里面,比如医学的X光片确诊肺部疾病、自动化炒股、自动驾驶领域等。

但这里可能会有个误区,我要说明一下,这条技术路线的知识更多的是关于

人工智能是如何实现的?

我们如何利用人工智能的工具来看待目前我们遇到的问题?

如何通过技术手段把人工智能学习的数据采集起来然后用于训练人工智能?

如何设计机器学习的模型?

这些技能的学习、理解、到运用是需要时间和实践的。并不像某些广告宣传一样,什么一个月出来就拿年薪60万等等。我曾经面试过一个学生,他说他会谷歌的TF,他知道各种人工智能的算法等,当我抛给他问题时,他就没有思路了。(我抛给他的问题是TF经典例子里面的训练机器人识别手写数字的解决方案)

第七阶段:游戏开发路线技能树

开发游戏是一个庞大复杂的工程,但现在生产工具发展的很快。如果你能把这条技术路线的技能树点满。你完全可以做一个独立的游戏开发者。国内就有很多成功的独立游戏开发者,他们钱也赚了不少。

同样这条路也是比较艰辛的,做好心理准备。

第八阶段:系统质量把控技能树

说白了,这就是软件测试的技能树,软件测试在软件开发领域属于门槛很低,但上限很高的一个职位,任何一个会使用电脑,手机的人都能来做软件测试。

但高端的软件测试,只会电脑操作是远远不够的。

需要懂开发、懂服务器、懂用户心理、懂自动化、懂硬件、懂问题根源的排查等等。其实一个顶端的测试工程师,完全可以胜任一个公司的技术总监。

现在我们就来一起看看这些技术路线

一 先学JAVA是个好的选择

对于软件开发这个领域,找一门合适的编程语言来学习,其实非常重要。选得好你会学习起来很愉快,选不好会一开始就面对各种挫败感。我建议入门的小白,从JAVA语言开始学起,因为:

小白有很多入门编程语言可以选,比如C,C++,Python等等。C,C++和Java语言相比会有很多非常抽象的概念,这些概念对小白一点都不友好,它们非常绕,因为C,C++是更靠近“硬件”的语言。

Python就把这些概念弱化了,因为它是更“靠近”人的语言,好处就是学起来很轻松,不好的地方就是学Python会遗漏很多计算机软件开发和编程的重要概念与名词。

那Java刚好在他们之间,比较适中。

2 学会JAVA后,再去学习C,C#,C++,JavaScrip等类C语言,会变得很轻松:

开发语言有成千上万种。但它们可以分为几大风格,C语言风格,BASIC语言风格,还有它们的混种。

每种风格的开发语言语法,概念,代码结构的管理都非常的类似。所以你学会了JAVA后,再去学习C,C++,JavaScript,C# 等类C语言,你会发现很轻松。

3 JAVA目前的岗位很多:

JAVA由于它在互联网行业里的先行优势,开源,性能不错,加上属于比较“老”的开发语言。所以国内很多政府项目,大企业的项目,还有重量级的产品基本都是基于JAVA语言开发的。这就导致了无论小公司,还是大公司,无论五线城市还是一线城市,都有足够多的JAVA工程师招聘岗位。

关于JAVA的学习资料

网上确实有很多JAVA免费的资料和书籍,但零碎的知识对于初学者建立系统的编程体系是完全不够的,甚至会搞得初学者一头雾水。

但如果你已经掌握了一门编程语言,再利用这些网络上免费的学习资料进行自学,其实是可以的。

但作为一名小白,还是踏踏实实的买一本JAVA方面的书籍,每天拿出90分钟,坚持3个月,扎扎实实的把用JAVA来编写代码的基本功打好。我相信,对于小白来说,不会有比这个还要科学的学习方法了。

JAVA的书籍很多,我推荐两本,自学任意选择一本就可以。
《Java核心技术 卷I 基础知识》,《Java编程思想》

为什么要推荐这两本书?

因为这两本书里面讲解了很多软件编程需要知道的概念和知识,可能这些概念学起来有点不那么舒服,但这些概念对今后的自学或工作有很大的帮助!

我们一旦把MYSQL学好后,其他数据库学起来就会很快,区别在于服务器的部署上,因为SQL属于标准化的语言,所以所有的SQL数据库的SQL语言都大同小异。

非关系数据库和关系数据库在概念上是不一样的。非关系数据库Redis和MongoDB也有一些区别,应用场景也会有些不一样。

对于入门来说,可以先从Redis入手,因为它简单。

Redis的诞生和应用实践都是针对具体问题来的,所以我觉得学习Redis之前,先要把SQL这类数据库学好,才能明白Redis的用心良苦。因为Redis数据库是基于解决那些SQL数据库解决不了的问题而诞生的,所以我推荐通过这本书来学习Redis:

《Redis 深度历险:核心原理与应用实践》

《MongoDB从入门到商业实战》

下面是一些Redis与MongoDB的线上学习资料(系统的学习还是建议看书):

对于数据库的学习,我建议先从关系数据库开始学起,因为很多产品它可以不用非关系数据库。但关于数据库是必须要用的。

这些知识就像我们打王者荣耀一样,要知道符文的用法,地图的布局,不同英雄之间的克制等等,不懂规则游戏也玩不下去。

这些知识其实非常零散,孤立。就算是工作了10年的网络工程师,让他来总结一下这些知识点他可能都会花很长时间来整理。

我思来想去,要很舒服的学习这些知识,并且将其应用到实践中,最好的办法就是去学习一门开发语言的网络编程。

通过学习一门开发语言的网络编程来学习这些基础知识:

《Java网络编程(第四版) 》

提醒一下自学的小伙伴,看上面的书籍主要目的是让你知道网络应用开发需要什么样的知识。要很顺利的把这些书看完,就需要把第一阶段的基础打牢。

编写网络应用程序的开发框架

其实我们只要看完了上面推荐的两本书,我们就可以完成网络应用程序的编写工作了,但是你不够快!可能别人两三天就完成的工作,你需要两三个月,这一点毫不夸张!

别人比你快其实就是用了网络应用开发框架!

它是一套专门为网络应用开发而生的工具,就像你要去盖房子,它就是起重机,就是混泥土搅拌机,就是脚手架。能大大提高你的工作效率。

在网络开发领域,使用框架来做开发已经变成了一个成熟、快速、稳健的做法。

像Python的Django框架可以用100多行代码就可以编写出一个完整的网络应用后台,你熟悉Django后,可能觉得这哪里是在编程呀,这明明就是在搭积木!

Django除了可以“配置”网站外,仍然可以让程序员有很大发挥的空间,哪怕一个非常小的细节都可以“配置”。JAVA语言也有这些框架。现在我们就来看看这些框架和学习资料。


1 JAVA相关的网络开发框架

注意:这些都是网络应用开发框架的入门教程。在网络应用开发过程中,我们会遇到很多性能问题就像我们双十一清空购物车时,会看到页面卡死的现象,这就是典型的性能问题。性能问题的解决就要用到其他的技术路线了,我后面会为大家整理。

前端的技能树分为两大大部分

前端开发涉及到的编程语言其实就三种Html,CSS,JavaScript。严格意义上来说,Html,CSS都不能算是完整的编程语言,它们只是一种标准,一种浏览器能看得懂的语言。

用于告诉浏览器,我要显示什么样的内容,显示在那个位置。

来告诉浏览器我的这个内容要显示成什么样子的,比如字体要多大,要什么颜色,间距是多少等。

它是一种完整的编程语言,也是若干前端框架的基础。在工作中碰到很多小伙伴,他们在使用前端框架编写页面的时总是会遇到一些奇怪的BUG、奇怪的语法、奇怪的问题。其实这些所有的问题,都是没有把JavaScript这门语言基础打好造成的。

Html,CSS看这本书就够了,当然Html,CSS的属性用法很多,上千种。我们是不可能全部记下来的。把上面这本书看透,日后工作遇到的问题可以在下面列出的网上查找。

要把JavaScript学好,要在后面学习前端框架轻松的飞起,那么就耐心的认真的把这本书看完。把里面的例子编写完。

这本书很厚,厚到你可能拿不动、厚到拿到手上时,就被劝退了。但是想想这本书看完后你的JavaScript会有一个质的飞跃,那么一切的坚持和努力都是值得的。

我们接着再来看第二类:

PC网页、移动端网页、响应式网页设计的鼻祖。只要你打好了Html、CSS、JavaScript的基础。学习这些只要看官方文档就足够了

这是国人基于Bootstrap来开发的,很多用法和Bootstrap差不多。有自己独特的地方,学习文档也很舒服,界面样式也很漂亮。

同样,只要你打好了Html、CSS、JavaScript的基础,学习这个会很容易。

这也是国人的,从一个小小弹窗开始做起,最后到整个自己的LayUI体系,用来做管理平台页面是非常好的选择。我自己在很多大的项目里面用到过,我觉得要比Bootstart要好很多。

现在市面上的APP不弄个微信小程序,支付宝小程序貌似都不能算是一个完整的产品线。所以微信小程序这套技能点满,涨工资,晋升这些机会都会变大。

《微信小程序项目开发实战——用WePY、mpvue、Taro打造高效的小程序》
《支付宝小程序开发实战》

还是那句老话,只要基础好,看在线文档就够了。之所以还推荐书籍,主要是通过书本了解一下小程序的开发流程,也是挺好的。

无论是第一类、第二类、还是第三类。它们都会有很多相通之处。

可能看到这里的小伙伴,会有一个疑问。我是先去学习前段,还是后端呢?

我建议先从后端开始学习。原因如下:

1:后端的学习曲线没有前端的陡峭

2:先从后端学习能更好打好编程基础(学好后端再去学前端会更顺手一些)

3:后端能接触到数据库,如果要尝试其他领域的编程,比如生产工具,游戏等,那么数据库是一个很重要的基础知识。

如果你是一个狠人,把后端,前端的技能树都点满了,恭喜你。

你已经超越了70%的软件工程师了。

这个时候的你,找工作谈待遇都变得很主动,生活也变得很愉快。

那么小白关心的问题来了,要从一个小白,做到一个后端前端技能都点满的人(全栈工程师),需要花多长时间?

我统计了一下,如果坚持有规划的学习,可以在3年左右做到这个水平。头一年会比较痛苦,第二年会觉得枯燥乏味,但这个时候要坚持下来。第三年你会觉得能做别人做不到的事情感觉真好。

如果各位自学编程的小伙伴,觉得文章对你有帮助,就点个赞,给个关注吧。自学路上有什么问题可以留言,我能一 一回复。

}

我觉得@余天升 说的已经相对完整了。但是我觉得大家的回复还是偏片面了一些。而且部分回复的火力主要集中在评价这两种语言上,实际没有回答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++,加上两位大神的抵制,理所当然在开源阵营里面流行不开。

}

这个……刚学完C语言怎么就成程序员了?不过你学习编程和网站设计之间是并行不悖的,还可以相互提升。学习网站设计的话,先要学最基本的HTML语言,然后再学习一门网页设计的课程,可以朝ASP,JSP或者PHP方向发展,这三种目前应用比较多。然后你还要学会数据库技术,SQL肯定是必不可少的,至于是用SQL Server或者其他如access、mysql、sqlite等就看你的选择了。如果更进一步的话, 还可以学学美工,页面设计也是一门大学问。

}

我要回帖

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

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信