C语言为么不会过时?
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="https://mmbiz.qpic.cn/mmbiz_gif/1NVrdiblGvB7SNyvRMy7NmiaGVyNO0ibyEPickvXPzCymJbUTTlUk7CUjdJ6G3h7DmyEB5lxkfJRszXr7qllMh30DQ/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" style="width: 50%; margin-bottom: 20px;"></p><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">本文转载自面包板社区 作者: 赵岩/Serdar等</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">原文链接请点文末阅读原文</p>
</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="https://mmbiz.qpic.cn/mmbiz_jpg/1NVrdiblGvB5IwAXWyYQATXUlXIwu9JabUV59ZMPQgqkLlpdoDfwmWHJlw7FQvzQT0NC5hvH73ehmtJEaNFOXGg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"></p><span style="color: black;"><span style="color: black;">01、<span style="color: black;">为何</span>C语言不会过时</span></span><span style="color: black;"><span style="color: black;">评估</span>任何一门编程语言,都是招人骂的。永远是<span style="color: black;">这般</span>。就像是春寒料峭的季节,街上穿棉袄和穿单衣的擦肩而过,双方<span style="color: black;">必定</span>是<span style="color: black;">同期</span>在心里<span style="color: black;">显现</span>了两个字:“傻逼!”这个在心理学上有个专业的名字:叫做“二逼”现象!</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">那我为啥还要做这个挨骂的事呢?<span style="color: black;">做为</span>《C语言点滴》《drop of knowledge of C++》书籍的作者,《C语言新思维,第二版》的译者(赵岩老师),我觉得我有责任系统的介绍一下这本语言,他的特点,还有他的<span style="color: black;">将来</span>。这个问题对<span style="color: black;">非常多</span><span style="color: black;">刚才</span>踏入程序猿这个行业的新手至关重要。<span style="color: black;">由于</span><span style="color: black;">她们</span>有深深的担忧,万一C语言就像Fortran那样过时了怎么办?</p>
</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">先上一个表,这个<span style="color: black;">便是</span>著名的TIOBE语言排行榜。<span style="color: black;">日前</span>它是一个最权威的一个语言流行度的排行榜。</p>
<span style="color: black;"><span style="color: black;">就在5月,时隔5年,C语言再次领先Java,荣登TIOBE编程语言排行榜<span style="color: black;">第1</span>!</span></span>
<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">排名前十的分别是:</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">C,Java,Python,C++,C#,Visual Basic.NET,JavaScript,PHP,SQL和R。</p>
</span></h2>
<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">有<span style="color: black;">无</span><span style="color: black;">发掘</span>亮点?没错, <span style="color: black;">第1</span>易主了,C 语言反超了 Java 。要<span style="color: black;">晓得</span>,C 语言上次<span style="color: black;">第1</span>还是在 5 年前,是什么<span style="color: black;">原由</span>让其“<span style="color: black;">西山</span>再起”了呢?</span><span style="color: black;">时隔五年,C语言重回榜首。</span></h2>
<h2 style="color: black; text-align: left; margin-bottom: 10px;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="https://mmbiz.qpic.cn/mmbiz_png/1NVrdiblGvB5IwAXWyYQATXUlXIwu9JabovLIAAbWkib2B05qBY6SAv32wPJnmgzvsEQv7pNpX1CD25iacWDoicdMg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"></p>
</h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">据TIOBE CEO Paul Jansen 的猜测,“这听起来可能很<span style="color: black;">难以置信</span>,<span style="color: black;">然则</span>某些编程语言确实<span style="color: black;">能够</span>从这种<span style="color: black;">状况</span>中受益。"</p>
<span style="color: black;"><span style="color: black;">嵌入式语言(C 和 C++ 等)越来越流行,<span style="color: black;">由于</span>它们被用于医疗设备软件中。</span></span><span style="color: black;">对所有的编程语言,<span style="color: black;">她们</span>的最后的目的其实<span style="color: black;">便是</span>两种:</span><span style="color: black;"><span style="color: black;"><span style="color: black;">加强</span>硬件的运行效率和<span style="color: black;">加强</span>程序员的<span style="color: black;">研发</span>效率。</span></span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">遗憾的是,这两点是不可能并存的!你只能选<span style="color: black;">同样</span>。在<span style="color: black;">加强</span>硬件的运行效率这一方面,C语言<span style="color: black;">无</span>竞争者!举个简单的例子,实现一个列表,C语言用数组int a,经过编译以后变<span style="color: black;">成为了</span>(基<span style="color: black;">位置</span>+偏移量)的方式。<span style="color: black;">针对</span>计算机<span style="color: black;">来讲</span>,<span style="color: black;">无</span>运算比加法更快,<span style="color: black;">无</span>任何一种<span style="color: black;">办法</span>比(基<span style="color: black;">位置</span>+偏移量)的存取<span style="color: black;">办法</span>更快。</span></p><span style="color: black;"><span style="color: black;">C语言<span style="color: black;">已然</span>把硬件的运行效率压缩到了极致。</span></span> <span style="color: black;">这种设计思想带来的问题<span style="color: black;">便是</span>易用性和安全性的缺失。例如,你<span style="color: black;">不可</span>在数组中混合<span style="color: black;">保留</span><span style="color: black;">区别</span>的类型,否则编译器<span style="color: black;">无</span>办法计算正确的偏移量。<span style="color: black;">同期</span>C语言<span style="color: black;">针对</span>错误的偏移量<span style="color: black;">亦</span>不闻不问,这<span style="color: black;">便是</span>C语言中臭名昭著的越界问题。</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">C语言自诩的“相信程序员”都是<span style="color: black;">美丽</span>的说辞,它的<span style="color: black;">独一</span>目的<span style="color: black;">便是</span>快,要么飞速的运行,要么飞速的崩溃。C语言只关心程序飞的高不高,不关心程序猿飞的累不累。<span style="color: black;">便是</span><span style="color: black;">这般</span>!</p>
</span><span style="color: black;"><span style="color: black;"><span style="color: black;">此刻</span>来<span style="color: black;">瞧瞧</span><span style="color: black;">哪些</span>非C的语言,<span style="color: black;">她们</span>的长处都在于<span style="color: black;">加强</span>程序员的<span style="color: black;">研发</span>效率上。</span></span> <span style="color: black;"><span style="color: black;">或</span>支持动态的列表,<span style="color: black;">或</span>支持安全的列表。<span style="color: black;">然则</span>加入任何的中间层,加入任何的安全检验,它不可能比(基<span style="color: black;">位置</span>+偏移量+无检验)的方式更快。这个世界上不存在“<span style="color: black;">研发</span>容易,运行快”的语言,<span style="color: black;">研发</span>容易毕竟<span style="color: black;">源自</span>于对底层的一层一层又一层的包装。 </span><span style="color: black;"><span style="color: black;">此刻</span>回答两个最<span style="color: black;">广泛</span>的问题:</span> <span style="color: black;"><span style="color: black;">硬件这么便宜了,有必要让软件更快吗?</span></span> <span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">有这种疑问的人大部分都是网吧的固定客户,<span style="color: black;">她们</span>理解的计算机<span style="color: black;">仅在</span>电脑城,<span style="color: black;">她们</span>理解的计算只是游戏和播放硬盘中的小电影。不要玩个游戏开个挂就乐得不行不行的,别忘了还有全实景仿真,还有3D渲染,还有自动驾驶。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">人在开车的时候,每秒要收集60个<span style="color: black;">区别</span>的物体,<span style="color: black;">而后</span><span style="color: black;">按照</span>这60个物体的<span style="color: black;">区别</span>组合和反映来做20个最重要的决定。<span style="color: black;">而后</span>从这20多个决定中选一个执行。<span style="color: black;">因此</span>就算用上最快的硬件,自动驾驶<span style="color: black;">此刻</span>还不敢说能像人那样开车。就算是自动驾驶成功了,下一步还要自动飞行呢?<span style="color: black;">由于</span><span style="color: black;">咱们</span>老早就预言了:你咋不上天呢!</p>
</span><span style="color: black;"><span style="color: black;">因此</span>说:</span> <span style="color: black;"><span style="color: black;">计算速度永远是<span style="color: black;">不足</span>的!<span style="color: black;">由于</span>新的应用会越来越<span style="color: black;">繁杂</span>,越来<span style="color: black;">亦</span>实时。</span></span> <span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">对了!我还忘了一个更重要的限制:计算的能耗!NASA飞行器上的CPU最多<span style="color: black;">便是</span>32位的,说出来你可能不信,国际空间站上<span style="color: black;">无</span>一个CPU是64位的,我猜一个最<span style="color: black;">重点</span>的<span style="color: black;">原由</span>是航天员不爱看硬盘小电影吧。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">另一</span>一个流行的疑问是:我<span style="color: black;">能够</span>发明一种<span style="color: black;">一样</span>快的语言,<span style="color: black;">然则</span><span style="color: black;">无</span>C语言<span style="color: black;">那样</span>多的坑。想法是<span style="color: black;">能够</span>的,<span style="color: black;">况且</span>还真巧有这个语言,真巧它的名字叫D语言,真巧<span style="color: black;">无</span>太多的人用!这是<span style="color: black;">由于</span>一个基本的事实。<span style="color: black;">此刻</span>有太多,太多太多的C代码,<span style="color: black;">她们</span>大部分都在正常工作,就像Linux, Window, MacOS,Unix,Vxworks。你<span style="color: black;">无</span>看错,这些操作系统的内核都是C,我虽然不确定C在Window中所占的比例,<span style="color: black;">然则</span>我相信微软的人不会傻到用C#去<span style="color: black;">所有</span>改写一个操作系统的内核。你想让这些人去用你的全新的语言,这就不是“有点”很傻,很天真了!</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">况且</span>有些代码,<span style="color: black;">咱们</span><span style="color: black;">基本</span>就<span style="color: black;">不可</span>改!NASA一个简单的5个CPU飞控软件编写完毕后,要进行一种“全覆盖”测试。<span style="color: black;">倘若</span>CPU A坏了会<span style="color: black;">出现</span>什么?<span style="color: black;">倘若</span>CPU A,B坏了呢?<span style="color: black;">倘若</span>CPU A,C坏了呢。。。。?<span style="color: black;">倘若</span>你愿意,你<span style="color: black;">能够</span>做个简单的数学组合。测试完毕后,别说重写,就算加个注释都不行。<span style="color: black;">由于</span>主管payload的大妈会非常严肃的质问你,<span style="color: black;">为何</span>你上报的东西数量<span style="color: black;">增多</span>了,<span style="color: black;">然则</span>质量<span style="color: black;">无</span><span style="color: black;">增多</span>?你需要和她<span style="color: black;">仔细</span>的解释:硬件和软件是<span style="color: black;">区别</span>的,硬件是那种摸起来硬硬的东西,<span style="color: black;">然则</span>软件不是那种摸起来软软的东西。看着大妈鄙夷的眼神,这个时候你会非常<span style="color: black;">懊悔</span>自己手欠加入的哪一行注释。你还别<span style="color: black;">欠妥</span>真,这个是NASA的真实故事。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">那<span style="color: black;">为何</span>C语言还下降这么多呢?很简单,有些任务本身就不是C语言的。我上学的时候还用C语言编过窗口界面呢?<span style="color: black;">而后</span><span style="color: black;">火速</span>微软的人就推出了MFC,<span style="color: black;">便是</span>一大堆宏把底层的C windowAPI包装了起来。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">再后来这个技术<span style="color: black;">亦</span>过时了。<span style="color: black;">由于</span>微软的人认识到,带有窗口的应用程序说到底不是C语言的本职工作,再这么一层一层包下去就有露馅的危险,于是<span style="color: black;">她们</span>发明了一个全新的语言C#来负责这个任务。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Java<span style="color: black;">亦</span>是<span style="color: black;">这般</span>,<span style="color: black;">明显</span>网络,易用,安全,跨平台。无论是Java, c#还是python, <span style="color: black;">她们</span>都有意避开<span style="color: black;">加强</span>硬件的运行效率这个问题,<span style="color: black;">由于</span>这个问题上没办法和C竞争,<span style="color: black;">亦</span><span style="color: black;">没法</span>撼动Linux, Unix,GNU tool这些已有C代码的位置。剩下的就只是<span style="color: black;">加强</span>程序员的<span style="color: black;">研发</span>效率上大作<span style="color: black;">文案</span>。这对C语言是好事,把自己不善长的东西去掉,让自己跑的更快!</p>
</span><span style="color: black;"><span style="color: black;"><span style="color: black;">伴同</span>着嵌入和实时系统的兴起,AI,<span style="color: black;">设备</span>人,自动驾驶等。这些都是C语言的核心应用,<span style="color: black;">况且</span>在这种应用上面,C语言<span style="color: black;">无</span>竞争者。</span></span> <span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">因此</span>我感觉C语言会稳定在自己核心的应用中,并<span style="color: black;">起始</span>逐步回升。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">最后说点闲话,C++不会淘汰C语言。有了对象后你会<span style="color: black;">发掘</span>再简朴的对象<span style="color: black;">亦</span>耗费资源,<span style="color: black;">况且</span>有了对象以后,总是不由自主的去想继承这个事,一但继承实现了,你会<span style="color: black;">发掘</span>继承带来的麻烦远超过你的想象。Java的发明人James被问到<span style="color: black;">倘若</span><span style="color: black;">能够</span>从新设计Java语言的话,<span style="color: black;">第1</span>个要做什么事?他说:“去掉对象”!<span style="color: black;">做为</span>一个已婚,有两个<span style="color: black;">孩儿</span>的程序猿,我感同身受。<span style="color: black;">倘若</span><span style="color: black;">大众</span>感兴趣,我<span style="color: black;">能够</span>再写一个博客,聊聊C++和C的真实区别所在。</p>
</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>你看到<span style="color: black;">这儿</span>,还什么都没记住。那就只记住一点:没人能预测<span style="color: black;">将来</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>再有人对你说C语言<span style="color: black;">已然</span>过时了,最好自己思考一下,能求真最好,<span style="color: black;">倘若</span><span style="color: black;">不可</span>,<span style="color: black;">最少</span>要做到存疑。</span></p>
<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;"><span style="color: black;">02、<span style="color: black;">为何</span>C仍占据统治地位?</span></span></h2><span style="color: black;">于一种计算机行业的技术<span style="color: black;">来讲</span>尤其如此。自<span style="color: black;">1972</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">年诞生<span style="color: black;">败兴</span>,C语言<span style="color: black;">始终</span>保持生龙活虎的状态,时<span style="color: black;">迄今</span>日它仍然是<span style="color: black;">咱们</span>用来搭建软件世界的<span style="color: black;">基本</span>建筑材料之一。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">但有时一种技术能够<span style="color: black;">长时间</span>存在,只是<span style="color: black;">由于</span>人们还<span style="color: black;">无</span>来得及发明新的东西来取代它<span style="color: black;">罢了</span>。在过去的几十年里,<span style="color: black;">显现</span>了许多其他语言——其中<span style="color: black;">有些</span><span style="color: black;">知道</span>地被设计用于挑战C的主导地位,有些语言试图凭借自己的人气慢慢瓦解C语言的统治地位。</p>
</span><span style="color: black;">为C需要被替换掉的观点争辩是简单的。编程语言<span style="color: black;">科研</span>和软件<span style="color: black;">研发</span>实践都暗示了<span style="color: black;">怎样</span>比C更好地去<span style="color: black;">办事</span>。但历经数十年的<span style="color: black;">科研</span>和<span style="color: black;">研发</span>,C语言的地位却依旧<span style="color: black;">稳妥</span>。很少有其他语言能够在性能、裸机兼容性或通用性等方面击败它。<span style="color: black;">不外</span>,2018年C是<span style="color: black;">怎样</span>与<span style="color: black;">哪些</span>明星编程语言竞争的呢,其中细节仍值得一看。</span><span style="color: black;"><span style="color: black;">C vs. C ++</span></span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当然了,C最常被拿来与C ++进行比较,正如其名<span style="color: black;">叫作</span>本身所暗示的那样,C++<span style="color: black;">做为</span>对C语言的扩展而被创建出来。C ++和C之间的差异<span style="color: black;">能够</span>概括为C++更加广泛(褒)或更加宽泛(贬),<span style="color: black;">详细</span>取决于这个问题你是问的C还是C++程序员。(笑)</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">虽然C ++的语法等方面仍然是类C的,但它<span style="color: black;">供给</span>了许多在原生的C中本不可用的非常实用的功能:命名空间(namespace),模板(template),<span style="color: black;">反常</span>(exception),自动内存管理(automatic memory management)等等。需要顶级性能的项目,例如<span style="color: black;">触及</span>数据库,<span style="color: black;">设备</span>学习系统的项目<span style="color: black;">一般</span>是用C ++编写的,以便项目能尽可能地榨取以及利用到每一点性能。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">另外</span>,与C相比,C ++在<span style="color: black;">连续</span>地更加积极地扩展。即将推出的C ++ 20会带来<span style="color: black;">更加多</span>功能供<span style="color: black;">研发</span>者享用,<span style="color: black;">包含</span>模块,协同程序,同步库,以及概念,这些使模板更易于<span style="color: black;">运用</span>。C standard的最新版本只进行了少量更新,并侧重于保持向后兼容性。</p>
</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">事实上,C ++中的所有附加功能<span style="color: black;">一样</span><span style="color: black;">亦</span>可能<span style="color: black;">作为</span><span style="color: black;">负担</span>。<span style="color: black;">况且</span>是很大的<span style="color: black;">负担</span>。您<span style="color: black;">运用</span>的C ++专属功能越多,引入的<span style="color: black;">繁杂</span>度就越高,对结果的修正就越困难。将自己局限于仅一个C ++子集的<span style="color: black;">研发</span>人员<span style="color: black;">能够</span>避免许多<span style="color: black;">研发</span>中严重的坑和额外<span style="color: black;">包袱</span>。<span style="color: black;">然则</span>有些团队想要从根儿上防范C ++的过度<span style="color: black;">繁杂</span>性。<span style="color: black;">保持</span><span style="color: black;">运用</span>C能迫使<span style="color: black;">研发</span>人员将自己局限于一个子集。例如,Linux内核<span style="color: black;">研发</span>团队就直接避开了C ++。</p>
</span><span style="color: black;">选C而不选C++对您——以及任何将会<span style="color: black;">守护</span>你代码的<span style="color: black;">研发</span>人员——<span style="color: black;">来讲</span>都是可行的,<span style="color: black;">经过</span>采用强制简约主义来避免与C ++的<span style="color: black;">繁杂</span>性纠缠。当然,C ++<span style="color: black;">持有</span>丰富的高级功能,这是有它自己的道理的。但<span style="color: black;">倘若</span>极简主义更适合当前和<span style="color: black;">将来</span>的项目——以及负责项目的团队——<span style="color: black;">那样</span>还是选C更明智<span style="color: black;">有些</span>。</span><span style="color: black;"><span style="color: black;">C vs. Java</span></span><span style="color: black;">几十年了,Java仍然是企业软件<span style="color: black;">研发</span>的主力军之一——并且<span style="color: black;">亦</span>是宽泛而言的<span style="color: black;">研发</span>的主力军之一。许多最重要的企业软件项目都是用Java编写的——<span style="color: black;">包含</span>绝大<span style="color: black;">都数</span>Apache Software Foundation项目——而Java仍然是<span style="color: black;">研发</span>企业级<span style="color: black;">需要</span>项目的可行语言。</span><span style="color: black;">Java的语法从C和C ++中借鉴了<span style="color: black;">非常多</span>东西。<span style="color: black;">然则</span>,与C<span style="color: black;">区别</span>的是,Java默认<span style="color: black;">状况</span>下不会编译为本机代码。相反,Java运行时环境,JVM,JIT(实时)编译Java代码以在<span style="color: black;">目的</span>环境中运行。在适当的<span style="color: black;">状况</span>下,JIT编译后的Java代码<span style="color: black;">能够</span>接近<span style="color: black;">乃至</span>超过C的性能。</span><span style="color: black;">Java<span style="color: black;">背面</span>的“一次编写,随处运行”的理念<span style="color: black;">亦</span><span style="color: black;">准许</span>Java程序在<span style="color: black;">目的</span>架构上进行相对较少的<span style="color: black;">调节</span><span style="color: black;">就可</span>运行。相比之下,虽然C已被移植到许多架构中,但任何给定的C程序仍可能需要重新量身定做<span style="color: black;">才可</span>在,打个比方,Windows与Linux,两种<span style="color: black;">区别</span>的os之间正常运行。</span><span style="color: black;">这种可移植性和强大性能的结合,以及庞大的软件库和框架<span style="color: black;">构成</span>的生态,使Java<span style="color: black;">作为</span>构建企业应用程序的首选语言。</span><span style="color: black;">Java输给C的<span style="color: black;">地区</span>是一个Java从未打算竞争的<span style="color: black;">行业</span>:靠近底层结构运行,或直接与硬件打交道。C代码被编译成<span style="color: black;">设备</span>代码,由进程直接执行。Java被编译成字节码,这是一种随后会被JVM解释器转换为<span style="color: black;">设备</span>代码的中间代码。<span style="color: black;">另外</span>,尽管Java的自动内存管理在大<span style="color: black;">都数</span><span style="color: black;">状况</span>下都是个优点,但C更适合于必须充分利用有限内存资源的<span style="color: black;">状况</span>。</span><span style="color: black;"><span style="color: black;">亦</span><span style="color: black;">便是</span>说,在某些方面,Java在速度方面<span style="color: black;">能够</span>接近于C。JVM的JIT引擎在运行时<span style="color: black;">按照</span>程序<span style="color: black;">行径</span>优化例程,<span style="color: black;">准许</span>进行许多类型的优化,而这些优化是在未提前编译的C中<span style="color: black;">没法</span>实现的。虽然Java运行时自动执行内存管理,但<span style="color: black;">有些</span>较新的应用程序<span style="color: black;">能够</span><span style="color: black;">处理</span>这个问题。例如,Apache Spark部分地<span style="color: black;">经过</span>使用绕过JVM的自定义内存管理代码来优化内存中处理。</span><span style="color: black;"><span style="color: black;">C vs. C#和.Net</span></span><span style="color: black;">在推出近二十年后,C#和.Net 框架仍然是企业软件世界的<span style="color: black;">重点</span><span style="color: black;">构成</span>部分。有人说C#和.Net是微软对Java的<span style="color: black;">回复</span>——一个托管代码编译器系统和通用运行库——C和Java之间的许多种对比<span style="color: black;">亦</span>适用于C和C#或.Net之间。</span><span style="color: black;">与Java(以及某种程度上<span style="color: black;">来讲</span>Python<span style="color: black;">亦</span>是如此)<span style="color: black;">同样</span>,.Net<span style="color: black;">供给</span>跨<span style="color: black;">各样</span>平台的可移植性和庞大的集成软件生态系统。<span style="color: black;">思虑</span>到.Net世界中有多少面向企业的<span style="color: black;">研发</span>,这些都是不小的<span style="color: black;">优良</span>。当您<span style="color: black;">运用</span>C#或任何其他.Net语言<span style="color: black;">研发</span>程序时,您<span style="color: black;">能够</span><span style="color: black;">运用</span>为.Net运行时编写的<span style="color: black;">海量</span>工具和库。</span><span style="color: black;">.NET另一个类似Java的<span style="color: black;">优良</span>是JIT优化。C#和.Net程序<span style="color: black;">能够</span><span style="color: black;">根据</span>C语言提前编译,但它们<span style="color: black;">重点</span>由.Net运行时进行即时编译,并<span style="color: black;">运用</span>运行时信息进行优化。JIT编译<span style="color: black;">准许</span>对<span style="color: black;">没法</span>在C中执行的运行着的.Net程序进行<span style="color: black;">各样</span>就地优化。</span><span style="color: black;">与C<span style="color: black;">同样</span>,C#和.Net<span style="color: black;">供给</span><span style="color: black;">各样</span>直接<span style="color: black;">拜访</span>内存的机制。堆,栈和非托管系统内存都<span style="color: black;">能够</span><span style="color: black;">经过</span>.Net API和对象<span style="color: black;">拜访</span>。开发人员<span style="color: black;">能够</span><span style="color: black;">运用</span>.Net中的unsafe模式来实现更高的性能。</span><span style="color: black;">但这些都不是<span style="color: black;">无</span>代价的。托管对象和unsafe对象<span style="color: black;">不可</span>被任意交换,并且它们之间的编组会降低性能。<span style="color: black;">因此呢</span>,要最大化.Net应用程序的性能需要将托管和非托管对象之间的变动保持在最低限度。</span><span style="color: black;"><span style="color: black;">倘若</span>您<span style="color: black;">没法</span>承担托管与非托管内存之间变动<span style="color: black;">导致</span>的性能损失,<span style="color: black;">或</span>.Net运行时<span style="color: black;">针对</span><span style="color: black;">目的</span>环境(例如,内核空间)<span style="color: black;">来讲</span>是一个糟糕的<span style="color: black;">选取</span>,<span style="color: black;">或</span>可能<span style="color: black;">基本</span>不可用,<span style="color: black;">那样</span>C<span style="color: black;">便是</span>你所需要的。与C#和.Net<span style="color: black;">区别</span>,C被默认<span style="color: black;">能够</span>解锁对内存的<span style="color: black;">拜访</span>权。</span><span style="color: black;"><span style="color: black;">C vs. Go</span></span><span style="color: black;">Go的语法很大程度上借鉴了C——花括号<span style="color: black;">做为</span>定界符,语句以分号结束,等等。精通C的<span style="color: black;">研发</span>人员<span style="color: black;">一般</span><span style="color: black;">能够</span>毫不费力地直接<span style="color: black;">运用</span>Go,<span style="color: black;">乃至</span>算上Go的独有功能,如命名空间和包管理,对<span style="color: black;">研发</span>人员<span style="color: black;">来讲</span><span style="color: black;">亦</span>并不困难。</span><span style="color: black;">代码可读性是Go的<span style="color: black;">指点</span>设计<span style="color: black;">目的</span>之一:让<span style="color: black;">研发</span>人员<span style="color: black;">能够</span><span style="color: black;">容易</span><span style="color: black;">把握</span>任何Go项目,并在<span style="color: black;">短期</span>内<span style="color: black;">熟悉</span><span style="color: black;">把握</span>代码库。C代码库可能很难理解,<span style="color: black;">由于</span>它们很容易聚集<span style="color: black;">海量</span>专属于某个项目或某个团队的宏和和#ifdef。Go的语法及其内置的代码格式以及项目管理工具旨在避免这种结构性问题。</span><span style="color: black;">Go还<span style="color: black;">供给</span>了诸如goroutine和channel之类的附加功能,用于处理并发性和组件之间的<span style="color: black;">信息</span>传递的语言级别的工具。C需要<span style="color: black;">研发</span>者手动完成或由<span style="color: black;">外边</span>库<span style="color: black;">供给</span>,但Go<span style="color: black;">供给</span>了开箱即用的这些功能,使得构建需要这些功能的软件变得更加容易。</span><span style="color: black;">Go与C最深层次的<span style="color: black;">区别</span>之处在于内存管理方面。默认情况下,Go的对象会被自动管理并自动进行回收。<span style="color: black;">针对</span>大<span style="color: black;">都数</span>编程工作<span style="color: black;">来讲</span>,这非常方便。但这<span style="color: black;">亦</span><span style="color: black;">寓意</span>着任何需要确定性处理内存的程序都会更难编写。</span><span style="color: black;">Go确实<span style="color: black;">包括</span>了用于绕过Go的某些类型处理安全性的unsafe包,例如<span style="color: black;">运用</span>Pointer类型读取和写入任意内存。但unsafe会附带一个warning说用它编写的程序“可能是不可移植的,并且不受Go 1兼容性指南的<span style="color: black;">守护</span>。”</span><span style="color: black;">Go非常适合构建命令行实用程序和网络服务等,<span style="color: black;">由于</span>这些很少用到太过细致的操作。<span style="color: black;">然则</span>,<span style="color: black;">倘若</span>是低级设备驱动程序,内核空间操作系统组件以及其他需要严格<span style="color: black;">掌控</span>内存布局和管理的任务,<span style="color: black;">那样</span>就最好用C来创建。</span><span style="color: black;"><span style="color: black;">C vs. Rust</span></span><span style="color: black;">在某些方面,Rust是对C和C ++创建的内存管理<span style="color: black;">困难</span>的<span style="color: black;">回复</span>,<span style="color: black;">亦</span>是对这两种语言的许多其他缺点的<span style="color: black;">回复</span>。Rust编译为本机<span style="color: black;">设备</span>代码,<span style="color: black;">因此呢</span>就性能而言,它被认为与C相当。但默认<span style="color: black;">状况</span>下,内存安全才是Rust的<span style="color: black;">重点</span>卖点。</span><span style="color: black;">Rust的语法和编译规则可<span style="color: black;">帮忙</span><span style="color: black;">研发</span>人员避免<span style="color: black;">平常</span>的内存管理错误。<span style="color: black;">倘若</span>程序有一个不符合Rust语法的内存管理问题,它就不会被编译。刚接触这种语言的新手,<span style="color: black;">尤其</span>是以前用C语言的<span style="color: black;">研发</span>者,<span style="color: black;">因为</span>C语言为这类bug<span style="color: black;">供给</span>了充足的容错空间,<span style="color: black;">因此</span><span style="color: black;">她们</span>接触Rust的<span style="color: black;">第1</span>步是学习<span style="color: black;">怎样</span>安抚编译器。但Rust的支持者认为,这种短期的痛苦有一个<span style="color: black;">长时间</span>的<span style="color: black;">报答</span>:更安全的,不会减缓速度的代码。</span><span style="color: black;">Rust还<span style="color: black;">经过</span>其工具改进了C语言。默认<span style="color: black;">状况</span>下,项目和组件管理是Rust提供的工具链的一部分,与Go相同。有一种默认的,<span style="color: black;">举荐</span>的<span style="color: black;">办法</span>来管理包,组织项目文件夹,以及处理C需要单独处理的其他许多事情,<span style="color: black;">每一个</span>项目和团队以<span style="color: black;">区别</span>的方式处理它们。</span><span style="color: black;">然而,在Rust中被吹捧为<span style="color: black;">优良</span>的东西<span style="color: black;">针对</span>C<span style="color: black;">研发</span>者<span style="color: black;">来讲</span>可能并<span style="color: black;">无</span>太大吸引力。Rust的编译时安全功能<span style="color: black;">没法</span>禁用,<span style="color: black;">因此呢</span>即使是最小的Rust程序<span style="color: black;">亦</span>必须符合Rust的内存安全限制。默认<span style="color: black;">状况</span>下,C可能不太安全,但在必要时它更灵活,更宽容。</span><span style="color: black;">另一个可能的缺点是Rust语言的<span style="color: black;">体积</span>。即使<span style="color: black;">思虑</span>到标准库,C的功能<span style="color: black;">亦</span>相对较少。Rust功能集非常庞大并且还在<span style="color: black;">持续</span>增长。与C ++<span style="color: black;">同样</span>,<span style="color: black;">很强</span>的Rust功能集<span style="color: black;">寓意</span>着更强大的功能,但<span style="color: black;">亦</span><span style="color: black;">寓意</span>着更高的<span style="color: black;">繁杂</span>度。C是一种较小的语言,但<span style="color: black;">更易</span>在头脑中进行建模,<span style="color: black;">因此呢</span>可能更适合<span style="color: black;">哪些</span>对Rust<span style="color: black;">来讲</span>太小,不值得大动干戈的项目。</span><span style="color: black;"><span style="color: black;">C vs. Python</span></span><span style="color: black;">当今,每当谈论软件<span style="color: black;">研发</span>时,Python似乎总是能出<span style="color: black;">此刻</span>对话中。毕竟,Python是“对所有项目的第二佳语言”,毫无疑问是最通用的语言之一,<span style="color: black;">持有</span>数千个第三方库。</span><span style="color: black;">Python强调的,以及它与C最不同的<span style="color: black;">地区</span>,是有利于<span style="color: black;">研发</span>速度而不是执行速度。一个可能需要一个小时<span style="color: black;">才可</span>用另一种语言写出来的程序——<span style="color: black;">例如</span>C——可能用Python几分钟内就能写好。另一方面,该程序在C中执行可能需要几秒钟,但需要一分钟<span style="color: black;">才可</span>在Python中运行完。(一个很好的经验法则:Python程序<span style="color: black;">一般</span>比它们对应的C语言程序运行速度慢一个数量级。)<span style="color: black;">然则</span><span style="color: black;">针对</span>现代硬件上的许多工作,Python<span style="color: black;">已然</span>足够快了,这是它如今广泛应用的一个重要<span style="color: black;">原由</span>。</span><span style="color: black;">另一个<span style="color: black;">重点</span>区别是内存管理。Python程序完全由Python运行时进行内存管理,<span style="color: black;">因此呢</span><span style="color: black;">研发</span>人员不必担心分配和释放内存的细节。但<span style="color: black;">一样</span>,<span style="color: black;">研发</span>人员的<span style="color: black;">容易</span><span style="color: black;">亦</span>是以运行时性能为代价的。编写C程序需要严格关注内存管理,但生成的程序<span style="color: black;">一般</span>是纯<span style="color: black;">设备</span>速度的黄金标准。</span><span style="color: black;"><span style="color: black;">然则</span>,在二者的血脉中,Python和C共享一个深层的关系:Python运行时参考是用C语言编写的。这<span style="color: black;">准许</span>Python程序包装用C和C ++编写的库。第三方库的Python生态系统的<span style="color: black;">非常多</span>重要模块,例如<span style="color: black;">设备</span>学习方面的库,其核心是C代码。</span><span style="color: black;"><span style="color: black;">倘若</span><span style="color: black;">研发</span>速度比执行速度更重要,并且<span style="color: black;">倘若</span>程序的大<span style="color: black;">都数</span>高性能部分<span style="color: black;">能够</span>被隔离到独立组件中(而不是遍布<span style="color: black;">全部</span>代码),<span style="color: black;">那样</span>纯Python或Python和C库的混合使得会是比单独<span style="color: black;">运用</span>C更好的<span style="color: black;">选取</span>。否则的话,C仍然是老大。</span><span style="color: black;"><span style="color: black;">03、C语言<span style="color: black;">为么</span>值得去学</span></span><span style="color: black;"><span style="color: black;">1. 嵌入式<span style="color: black;">行业</span>,C语言依然是首选语言,</span></span> <span style="color: black;">嵌入式并<span style="color: black;">无</span><span style="color: black;">由于</span>其他上层语言的发展而没落,<span style="color: black;">此刻</span>嵌入式依然还在其<span style="color: black;">自己</span>的<span style="color: black;">行业</span>展现强大的生命力。手机,电视机,机顶盒,空气净化器等等电子<span style="color: black;">制品</span>都是其<span style="color: black;">行业</span>范畴,从长远看<span style="color: black;">短期</span>内不可能被消失。<span style="color: black;">况且</span>智能<span style="color: black;">设备</span>人的崛起,C语言的<span style="color: black;">运用</span>频率又<span style="color: black;">起始</span>加大了。</span><span style="color: black;"><span style="color: black;">2. 操作系统内核代码还是C语言为主打,</span></span> <span style="color: black;">就语言的灵活性以及执行的效率来看C语言还是最合适的语言,<span style="color: black;">况且</span>在系统层次的代码,C语言还是首选语言。<span style="color: black;">况且</span><span style="color: black;">此刻</span><span style="color: black;">非常多</span>流行语言的底层绝大部分的C语言构建完成。从这个层面讲C语言是永远不会过时的,顶多算是应用范围变窄,但其<span style="color: black;">功效</span>依然强大。</span><span style="color: black;"><span style="color: black;">3. C语言的职位比例相对应用级语言是低了点,<span style="color: black;">然则</span><span style="color: black;">全部</span>软件行业在发展,绝对的C语言编程职位并<span style="color: black;">无</span>减少。</span></span> <span style="color: black;"><span style="color: black;">况且</span><span style="color: black;">针对</span>有志于<span style="color: black;">作为</span>架构师层次的程序员<span style="color: black;">来讲</span>,C语言还是必修课,构建软件框架还是需要对底层有所<span style="color: black;">认识</span>。</span><span style="color: black;">退一步来讲,即使觉得C语言方面的职位比例低<span style="color: black;">有些</span>,<span style="color: black;">欠好</span>找工作,<span style="color: black;">能够</span>先从C语言入手,把自己的知识体系<span style="color: black;">创立</span>起来,编程语言属于工具范畴,<span style="color: black;">熟练</span>一种工具的<span style="color: black;">运用</span>,很容易触类旁通,切换到别的语言<span style="color: black;">亦</span>相对<span style="color: black;">容易</span>些,<span style="color: black;">况且</span>给<span style="color: black;">全部</span>职业生涯起了个好头,打好了<span style="color: black;">基本</span>为更上一层楼做足准备。</span><span style="color: black;">C语言之<span style="color: black;">因此</span>流行这么年,生命力这么旺盛和本身鲜明的<span style="color: black;">有效</span>,方便灵活挂钩。即使在上层语言<span style="color: black;">运用</span>概率变低,并不妨碍在系统级别继续发挥<span style="color: black;">功效</span>。任何一种语言都有其存在的社会价值所在。C语言还是值得<span style="color: black;">做为</span>入门语言深刻的学习。</span><span style="color: black;"><span style="color: black;">4.C/C++程序员的收入<span style="color: black;">无</span>受到影响,</span></span> <span style="color: black;">依据100offer的后台数据显现,<span style="color: black;">此刻</span>经过100offer入职的程序员年薪最高达47W,最低22.4W,C/C++程序员的收入与其它编程语言的岗位相比并<span style="color: black;">无</span>呈现下风。随</span> <span style="color: black;">着C/C++逐步变成某些特定<span style="color: black;">机构</span>和特</span> <span style="color: black;">定项目所需的语言</span> <span style="color: black;">后</span> <span style="color: black;">,高级C/C++程序员的收入<span style="color: black;">亦</span>会更<span style="color: black;">拥有</span>竞争</span> <span style="color: black;">性。</span><span style="color: black;">知乎红人vczh说:「我在上大学的时分简直就只学习C/C++,后来实习的时分去了微软,成果到了那里才<span style="color: black;">晓得</span>,那个组是不必C/C++的,怎么办?凭借着C++带给我的富裕的功底,我准时完结了老板给我的"两个星期内学会C#和WCF<span style="color: black;">基本</span>知识"的作业,顺畅开端作业。」</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当然,这只是vczh的个人经历,不<span style="color: black;">拥有</span><span style="color: black;">广泛</span>性,但不可否认的是C/C++仍<span style="color: black;">拥有</span>不可代替性。某家创业<span style="color: black;">机构</span>CTO在接受采访时<span style="color: black;">暗示</span>:「即使有许多人唱衰C/C++,但在今世,仍有许多许多项目的<span style="color: black;">目的</span><span style="color: black;">途径</span>暂时只供给C/C++编译器的支撑,仅从这一点而言,C/C++是不可能完全消逝的。」</p>
</span><span style="color: black;">从应用范畴<span style="color: black;">来讲</span>,C/C++适用于高性能计算、嵌入式体系、<span style="color: black;">研发</span>服务器软件、游戏、实时体系、网络通信等,短期内能完全代替C/C++的语言并不存在,<span style="color: black;">因此</span>依然<span style="color: black;">拥有</span>很强的竞争性。</span>
<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;"><span style="color: black;">04、除了C,需要<span style="color: black;">把握</span>多种语言吗?</span></span></h2>
<h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;"><span style="color: black;">想要<span style="color: black;">把握</span>多种编程语言的9个理由</span></span></h1><span style="color: black;">能用多种方式来<span style="color: black;">处理</span><span style="color: black;">一样</span>的问题,<span style="color: black;">把握</span><span style="color: black;">区别</span>的编程语言<span style="color: black;">寓意</span>着<span style="color: black;">持有</span><span style="color: black;">更加多</span>的<span style="color: black;">选取</span>。毕竟,当你<span style="color: black;">仅有</span>锤子时,一切看起来都像是钉子。</span><span style="color: black;">更有竞争力,<span style="color: black;">持有</span><span style="color: black;">更加多</span>的就业机会。学习第二门编程语言,有时能加倍工作机会的数量。然而,这取决于你学习的语言种类。但无论怎么说,你将会有<span style="color: black;">更加多</span>的合适机会,从而<span style="color: black;">增多</span>求职能力。</span><span style="color: black;"><span style="color: black;">显示</span>你具备学习新语言的能力。潜在的雇主会认为你并非是死板<span style="color: black;">或</span>惯守成规的人。</span><span style="color: black;">学习是<span style="color: black;">特别有</span>趣的。学习新的事物会让你的头脑保持兴奋。这将有助于你在新<span style="color: black;">行业</span>的成长和<span style="color: black;">加强</span>。</span><span style="color: black;">紧跟当前的技术发展趋势。<span style="color: black;">认识</span>哪个行业在独领风骚,就<span style="color: black;">能够</span>永远站在潮流的尖端,你的技能便不会过时。</span><span style="color: black;">这将提醒你<span style="color: black;">为何</span>应该热爱你的“主”语言,<span style="color: black;">或</span><span style="color: black;">怎样</span>将事情做得更好。有时候,<span style="color: black;">仅有</span>尝试过新语言,才会<span style="color: black;">晓得</span>主语言是何等的优秀。你会更加欣赏自己最爱的语言。与此<span style="color: black;">同期</span>,新语言可能会有<span style="color: black;">有些</span>惊人的特性,让你深觉相见恨晚。</span><span style="color: black;">有助于<span style="color: black;">作为</span>一个更加优秀的程序猿。学习新的语言,有助于<span style="color: black;">加强</span>在所有语言之间通用的技能,例如:设计和架构算法,或处理<span style="color: black;">区别</span>的数据结构。</span><span style="color: black;">针对工作<span style="color: black;">选取</span>最佳的工具。尺有所短寸有所长 - 有的语言更善于处理某些特定方面的事情。<span style="color: black;">把握</span>了多种语言,你<span style="color: black;">能够</span>在工作中<span style="color: black;">选择</span>最佳的工具</span><span style="color: black;"><span style="color: black;">显示</span>你的学习能力强。<span style="color: black;">无</span>任何事情比<span style="color: black;">把握</span>第二语言更能证明你的学习能力。</span>
<h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;"><span style="color: black;">不想<span style="color: black;">把握</span>多种编程语言的9个理由</span></span></h1><span style="color: black;"><span style="color: black;">把握</span>一种语言<span style="color: black;">更易</span>。<span style="color: black;">一般</span>,集中精力和全心投入<span style="color: black;">才可</span>精通某一事物。<span style="color: black;">倘若</span><span style="color: black;">持续</span>地在多种语言之间进行切换,<span style="color: black;">那样</span>真正精通一门语言的概率就会降低。<span style="color: black;">把握</span>一种语言<span style="color: black;">亦</span>有助于你集中精力。</span><span style="color: black;">大<span style="color: black;">都数</span>人只需要一份工作,大部分<span style="color: black;">机构</span>只<span style="color: black;">运用</span>一种语言。在你被录用后,<span style="color: black;">把握</span>多种语言不<span style="color: black;">必定</span>会有所<span style="color: black;">帮忙</span>。有时候,只要<span style="color: black;">把握</span>项目所用的语言就够了。</span><span style="color: black;">总有<span style="color: black;">有些</span>东西值得学习;有时候,这<span style="color: black;">寓意</span>着要更深入地学习一种语言。</span><span style="color: black;">大<span style="color: black;">都数</span><span style="color: black;">状况</span>下,专家能提更高的薪资<span style="color: black;">需求</span>,<span style="color: black;">由于</span>人们更愿意为专家支付<span style="color: black;">更加多</span>的薪水。John Sonmez在其视频《 I’m Not Sure I Want To Be A Specialist》中谈到<span style="color: black;">为何</span>多面手并不总是最好的。</span><span style="color: black;">即便仅<span style="color: black;">把握</span>一种语言,仍然<span style="color: black;">能够</span>被认为是一个伟大的<span style="color: black;">研发</span>者。<span style="color: black;">是不是</span>是伟大的<span style="color: black;">研发</span>者与你<span style="color: black;">把握</span>多少种语言无关。关键在于你创造的是什么。<span style="color: black;">由于</span>只<span style="color: black;">触及</span>一种语言,<span style="color: black;">因此</span>你<span style="color: black;">能够</span>花<span style="color: black;">更加多</span>的时间进行创造。</span><span style="color: black;">你只需要学习有限的软件<span style="color: black;">研发</span>工具。大<span style="color: black;">都数</span>语言<span style="color: black;">仅有</span>为数不多的<span style="color: black;">有些</span>工具。切换语言<span style="color: black;">常常</span><span style="color: black;">寓意</span>着要切换工具。只<span style="color: black;">把握</span>一种语言,你就<span style="color: black;">能够</span>更快地<span style="color: black;">把握</span><span style="color: black;">关联</span>的工具。这将有助于<span style="color: black;">加强</span>工作效率。</span><span style="color: black;">更易于定位自己的市场。<span style="color: black;">由于</span>只<span style="color: black;">把握</span>一种语言,基本上你只会朝这个方向<span style="color: black;">安排</span>下来(即使不是出于自己的<span style="color: black;">选取</span>)。</span><span style="color: black;">你<span style="color: black;">能够</span>凭借任何一种语言<span style="color: black;">处理</span>大<span style="color: black;">都数</span>软件问题。不管有多少人告诉你,大<span style="color: black;">都数</span>语言<span style="color: black;">能够</span>用于<span style="color: black;">处理</span>任何问题。<span style="color: black;">倘若</span><span style="color: black;">处理</span>问题是你的<span style="color: black;">重点</span><span style="color: black;">目的</span>(本应当是),<span style="color: black;">把握</span><span style="color: black;">更加多</span>的语言并不<span style="color: black;">必定</span>有助于实现这个<span style="color: black;">目的</span>。</span><span style="color: black;">深入理解一件事比表面<span style="color: black;">认识</span>十件事更好。</span><span style="color: black;">这并非是一个非黑即白的问题。和其他问题<span style="color: black;">同样</span>,最好的<span style="color: black;">处理</span>办法是取中间值:总有一片灰色地带。<span style="color: black;">倘若</span>你是一个初学者,<span style="color: black;">那样</span>学习一种语言,并将其应用到前十多个项目中会比较容易。但此之后,<span style="color: black;">意见</span>你<span style="color: black;">作为</span>一个「T形」软件<span style="color: black;">研发</span>者。</span>
<h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;"><span style="color: black;">什么是「T形」软件<span style="color: black;">研发</span>者?</span></span></h1><span style="color: black;"><span style="color: black;">所说</span>「T形」软件<span style="color: black;">研发</span>者在某一个特定的区域<span style="color: black;">持有</span>很深的造诣,<span style="color: black;">况且</span>是一种语言的专家,T字母中的垂直线<span style="color: black;">表率</span>了这一点;<span style="color: black;">另外</span>,<span style="color: black;">她们</span>会继续广泛学习另一种技能,T字母中的水平线<span style="color: black;">表率</span>了这一点。</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">那样</span>,这与软件<span style="color: black;">研发</span>,<span style="color: black;">尤其</span>是编程语言的学习,有什么关系呢?我的<span style="color: black;">意见</span>是精通一种编程语言,这将<span style="color: black;">作为</span>你以后的生计,并用于<span style="color: black;">处理</span>大部分问题。你应该尽你所能<span style="color: black;">把握</span>这门语言。<span style="color: black;">这里</span><span style="color: black;">基本</span>上,<span style="color: black;">能够</span>学习最适合工作的第二种语言或技能。</p>
</span><span style="color: black;">T形软件<span style="color: black;">研发</span>者是一个多面手,精通于某一<span style="color: black;">行业</span>。</span><span style="color: black;">在<span style="color: black;">作为</span>T形<span style="color: black;">研发</span>者的历程中,你将灵活地<span style="color: black;">把握</span>多种语言,<span style="color: black;">同期</span>具备某个<span style="color: black;">行业</span>专家的优点。</span>
<h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;"><span style="color: black;">应该<span style="color: black;">把握</span>哪种编程语言?</span></span></h1><span style="color: black;">一个<span style="color: black;">平常</span>的问题是,应当学习哪种语言。<span style="color: black;">或</span>说,假如你是初学者,应当<span style="color: black;">首要</span>学习哪种语言。<span style="color: black;">一般</span>,我会<span style="color: black;">选取</span>有<span style="color: black;">必定</span>历史的语言<span style="color: black;">做为</span><span style="color: black;">重点</span>语言。这种语言应当用于多个行业,并且有广泛的<span style="color: black;">运用</span>群体和<span style="color: black;">海量</span>的<span style="color: black;">研发</span>工具。符合这些标准的语言<span style="color: black;">包含</span>但不限于:C、C++、Java、JavaScript、C#、Python、Go等等。</span><span style="color: black;">TIOBE软件基于这些标准<span style="color: black;">连续</span>跟踪软件语言的流行性,并编入索引中。你<span style="color: black;">能够</span>点击TIOBE Index查看完整的编程语言列表。索引会每月更新,前20名中的大<span style="color: black;">都数</span>语言都是不错的<span style="color: black;">选取</span>。<span style="color: black;">将来</span>10年,这些语言还会流行吗?我不确定。<span style="color: black;">不外</span><span style="color: black;">最少</span>在<span style="color: black;">将来</span>几年内还是很可能保持流行的,我想,这对任何准备着手的项目都是够用的。</span>
<h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">说实话,关于<span style="color: black;">是不是</span>需要<span style="color: black;">把握</span><span style="color: black;">更加多</span>的语言,其实并<span style="color: black;">无</span>绝对正确或错误的答案,不谈<span style="color: black;">需要</span>选语言都是耍流氓,</span>最后的决定还是取决于你的<span style="color: black;">需要</span>。</h1><span style="color: black;">【参考资料】</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1、Serdar Yegulalp</p>
</span><span style="color: black;">https://www.infoworld.com/article/3402023/why-the-c-programming-language-still-rules.html</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2、赵岩</p>
</span><span style="color: black;">http://zhaoyan.website/blog/index.php/2017/07/15/future/</span><span style="color: black;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3、佚名</p>
</span><span style="color: black;">https://dzone.com/articles/do-you-need-to-know-more-than-one-language</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">免责声明:</span><span style="color: black;">该内容转载自其他<span style="color: black;">媒介</span>,目的在于传递<span style="color: black;">更加多</span>信息,并已著名作者和出处。如若<span style="color: black;">文案</span>内容侵犯您的权益,请<span style="color: black;">即时</span>联系本站删除。联系方式<span style="color: black;">能够</span>文末留言,<span style="color: black;">或</span>发送邮件到1307573198@qq.com</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">认识</span></span><span style="color: black;">旬月<span style="color: black;">容易</span>考过</span><span style="color: black;"><span style="color: black;">乃至</span></span><span style="color: black;"><span style="color: black;">容易</span>考优秀</span><span style="color: black;">的正确<span style="color: black;">办法</span>,<span style="color: black;">后台(不是文末留言)回复:学习<span style="color: black;">办法</span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">选取</span>题</span><span style="color: black;">怎么复习?请关注本公众号,后台(不是文末留言)回复:</span><span style="color: black;"><span style="color: black;">选取</span>题</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">学习C语言</span><span style="color: black;">,请</span><span style="color: black;">关注本公众号,后</span><span style="color: black;"><span style="color: black;">台(不是文末留言)回复数字:1</span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">下载最新题库?</span><span style="color: black;">请关注本公众号,后台回复:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">题库</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">仔细</span><span style="color: black;">认识</span>教材?请关注本公众号,后台回复:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">玩转</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">刷题遇到问题?请关注本公众号,后台回复你的问题关键词,例如:</span><span style="color: black;">目录、页眉、页脚、空白页、Excel、函数、人口普查、停车收费、税率、<span style="color: black;">要求</span>格式、母版、像素、行网格、作<span style="color: black;">坏处</span>……都<span style="color: black;">能够</span>的噢</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">题库下载,或咨询答疑,请加QQ群:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">欢迎加入QQ群讨论</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">(二级C语言群):383595657</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">(综合读者群):321761403</span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">(<span style="color: black;"><span style="color: black;">1)</span></span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">玩转二级office答疑群16:1128908761</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(<span style="color: black;"><span style="color: black;">2)<span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;">玩转题库用户①群(Sept,20):310833175</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">(<span style="color: black;">3)<span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;">玩转二级office答疑群⑾:348719553</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(<span style="color: black;"><span style="color: black;">4)<span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;">玩转二级office答疑群⑭:933470742</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">(<span style="color: black;">5)二级office玩转答疑群⑤:742642048</span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">(<span style="color: black;"><span style="color: black;">6)二级office玩转答疑群:762460187</span></span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">https://jq.qq.com/?_wv=1027&k=5AG9HCs</span></strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;"><span style="color: black;"><span style="color: black;">(7)玩转二级office学员交流群:906876172</span></span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;"><span style="color: black;">请<span style="color: black;">朋友</span><span style="color: black;">尽可能</span>只加一个群,留出空间给其他<span style="color: black;">朋友</span>,不要几个群都<span style="color: black;">同期</span>加;然而,老师,或已<span style="color: black;">经过</span>考试<span style="color: black;">期盼</span>为其他<span style="color: black;">朋友</span>答疑服务的<span style="color: black;">朋友</span>,欢迎<span style="color: black;">同期</span>加几个群,并申请管理员,为<span style="color: black;">朋友</span>服务!</span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">感谢为<span style="color: black;">大众</span><span style="color: black;">热情</span>服务的群主、老师和<span style="color: black;">朋友</span>们!</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="data:image/svg+xml,%3C%3Fxml version=1.0 encoding=UTF-8%3F%3E%3Csvg width=1px height=1px viewBox=0 0 1 1 version=1.1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=none stroke-width=1 fill=none fill-rule=evenodd fill-opacity=0%3E%3Cg transform=translate(-249.000000, -126.000000) fill=%23FFFFFF%3E%3Crect x=249 y=126 width=1 height=1%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E" style="width: 50%; margin-bottom: 20px;"></p>
论坛的成功是建立在我们诚恳、务实、高效、创新和团结合作基础上,我们要把这种精神传递下去。 祝福你、祝你幸福、早日实现等。
页:
[1]