编程语言之间的差异真有那么大吗?

软件开发是一种特殊的职业,特殊到有点匪夷所思,行业从业人员的工种分类很是的不稳定, 好比说古时候有C工程师、C++工程师、VB工程师,后来有了Java工程师、.net工程师、php工程师, 再后来又有了前端开发工程师、nodejs工程师、 golang工程师、python工程师什么的, 反正每隔个几年就会莫名其妙的蹦出来几种新的软件开发职业,让一批又一批的人趋之若鹜。而后这些不一样的职业却又干着一些相互重叠的事情, 好比说网站,Java、.net、php工程师均可以作;好比客户端软件,C++、VB、Java、.net也均可以作;好比说服务器程序,C、C++、nodejs、golang又均可以作php

并且这些使用不一样语言作不一样类型软件的工程师相互之间还具备排它性, 除了少数状况之外, 假如你想让一个Java网站工程师去开发和维护.net或者php技术开发的网站, 很差意思 ,没门! 反过来也同样。至于理由,用的最多的应该就是“不会”“没兴趣”“学习成本过高”之类的,总而言之,就算这些不一样的技术是用来作相同事情的,就算它们在作这些相同的事情时总会用到一些类似的技巧,但它们之间老是有差别的,除非不一样的技术在作某些相同的事情时用到的类似的技巧很是的多并且抹平它们之间差别的成本很是的低,不然想要在不一样的技术之间平滑的过渡老是很困难的。就拿使用不一样的技术作网站这个例子来说, 技术间相同之处有http相关的内容、数据库使用、服务器原理等,不一样之处反正逃不出语言、类库、框架,其实语言就能够把这三项内容给囊括了, 由于它们都属于语言的范畴。语言对于不少开发人员来讲就是一坐不可逾越的大山, 或许由于没能力,或许由于没兴趣,或许由于没精力,可是反正就是过不去。css

再从另外一个角度来分析。 像C++、Java、.net、JS这样能够适应各类应用场景的语言又能派生出许多种职业,如C++客户工程师、C++服务器工程师、Java android 工程师、 Java网站工程师、网站工程师、.net windows客户端工程师、JS前端开发工程师、nodejs服务器工程师,看看这架势, 光一种语言就能造出N种工程师,恐怖。上面咱们讲到, 使用不一样的技术作一样的事情 ,而这里正好相反, 使用相同的技术作不一样的事情。 以这种方式划分的不一样种类的工程师,相互之间也具备必定的排它性,但整体来讲没有根据技术来划分种类的方式来显有敌意,主动想在不一样种类之间过渡的程序员数量也更多,然而,相互之间过渡的成本却一点也不比在不一样技术之间过渡来的低。就拿如今最火爆的JavaScript语言来讲, 它原来是一种网页脚本语言, 是用来编写网页特效的, 随着互联网的火热发展, JavaScript语言也开始大行其道, 近年来还发展出一种叫nodejs的服务器编程技术,主打高并发高性能, 高并发和高性能啊,逼格多高的技能,掌握了就好像获得了全世界,所以无数开发人员为之疯狂。本来使用JavaScript的前端开发工程师天然也不例外,并且这种技术使用的仍是他们看家的语言, 仿佛占尽了先天优点。 然而, 事实上, 真正从网页前端开发过渡到nodejs服务器开发的工程师数量寥寥无几,由于要抹平二者之间差别的成本很是高,换言之它们虽然用的都是JS, 可是实现差别却很是的大。 JS网页特效和nodejs服务器程序的类似之处, 无非就是JavaScript语言, 然而除此以外却再没一丝重叠了。作前端页面时使用的html、css、jquery等等和其它各类框架在写nodejs程序时彻底没有一丝用武之地,并且写nodejs时须要掌握的http较深层次的原理、网络通讯、数据库技术等每一项技术都不是省油的灯、好啃的软骨头,而这些正是大多数前端程序员未掌握的,所以过渡的成本的确很是的高, 难度很是的大。 再好比说Java技术的使用,Java服务器程序员善于使用服务器、数据库相关技术,而一样使用Java做为开发语言的android应用,开发时倒是测重于界面绘制、控件使用、兼容性问题克服等技能,假如服务器程序员想转移阵地,以前储备的绝大多数武器将所有报废,开发新程序战斗力几乎为零, 一切从头开始,这成本不可谓不大, 难度不能够谓不低,没有办法过渡也在情理之中。html

在谈如何在不一样技术或者开发不一样种类软件之间过渡方法以前, 咱们先谈谈到底有没有必要去过渡。 若是你是一个一直作Java网站开发的程序员, 毕竟如今IT行业如中午12点的太阳如日中天,或许还不到12点也有可能,从业人员数量巨大,长江后推前流,前浪尚未死在沙滩上后浪又一波波的继续跟上来了, 所以,你使用Java作好网站开发也足够混口饭吃了。假如你能力比较强,资历上来之后, 当个部门主管或者项目经理,以后若是一路顺风再当个CTO或者对行业了解的足够深入,本身创业当CEO,而后迎娶白富美, 走上人生巅峰, 那么我除了恭喜你之外,也只能羡慕的流口水, 由于这毕竟只有少数人能作到,他们须要同时具有天资、能力、运气,而这些不是每一个程序员都能拥有的。身为一个普通的程序员,若是职业生涯一直使用一种语言作一件事情,如一直使用php作网站, 那我以为是一件至关枯燥乏味的事情。此外, 工做中总会碰到这样那样的意外,好比说你在使用Java时上级忽然扔你一个php网站让你维护;又或者有一个需求使用网站技术已经没有办法知足了,须要一种新类型的程序才能把这个问题解决;这个时候你应该怎么办?固然,你能够搞不定, 由于这不是你的职责范围, 可是我想, 搞定总比搞不定来的强。前端

如何搞定? 具体一点就是如何使用不一样技术开发相同的程序?如使用php、Java开发网站和使用相同的技术开发不一样的程序?如使用JS开发前端页面和使得nodejs开发服务器程序,或者使用c#开发网站或者开发windows客户端 。表面上的解决办法就是须要作什么时就学什么。 可是首先,临时抱佛脚确定是来不及的, 这跟考试是一个道理;其次,软件开发行业的技术万千上万,不一样种类的软件也数之不尽,咱们的时间有限, 不可能也不必花大量的时间在这个上面,只有那种没性生活的屌丝和刚毕业的学生狗才会这么去干。 最有效的办法就是学习一系列通用的技术,掌握这些技术之后,使用不一样的技术和开发不一样类型的软件的成本和难度就会大大的下降,就像张公子学会九阳神功之后妹儿也一把一个准。 那是否是真的有这种包治百病的灵丹妙药或者能够开任何锁的万能钥匙呢? 我想, 确定是有的。 试想一下,软件开发的一切都是基于计算机的,也就是这块把CPU、内存、硬盘、主板、显示器、键盘鼠标拼起来的积木, 咱们只要掌握了它的运行原理,也就意味着咱们就是这个虚拟的软件世界的主人, 想干什么就干什么, 想怎么干就怎么干。那么如何掌握这台一屁股就能坐碎可是却牛逼轰轰的不得了的机器吗? 其实很容易,只要把微机原理、操做系统原理、编译原理、数据库原理、算法原理等等各类原理都学一遍,而后包你代码写遍天下无敌手。 看到这里大家是否是特别想骂人, 以为我说的是人人都知道的废话, 却又没有几我的能作的到。 其实我只是想说, 大家啊上学的时候必定要好好的用功, 只有在那时候你才有这个精力和智力去上这些高冷且难以征服的技能,而后高潮。 毕业之后, 铁定不行了,有心无力!node

相关文章
相关标签/搜索