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

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

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

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

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

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

原文发布于微信公众号 - 带你撸出一手好代码(gh_afab56b37671)

原文发表时间:2017-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

2018年的用户体验状况

这是由一位美国作者站在美国的视角写的文章,即便抛开个人因素不谈,国内外的发展进度并不完全同步。例如情感化反馈这一块也许国内稍稍落后一点、但是移动支付和AR却要快...

28980
来自专栏Java程序员的架构之路

“刷一波” 程序员面试题,掌握八成便可BATJ一试~

最近看见了很多程序员成功入的BAT,小编这里在网上搜集了一些国内一线互联网公司的面试题和面试技巧,特此整理分享给需要的技术人员,看你和BAT之间差了多少!

15930
来自专栏日常学python

Python小白应如何入门

经常有粉丝加了我之后就问,python零基础怎样入门?刚学python需要注意什么?没有接触过编程怎么学python?等等 之类问题,今天我就对这些问题说下我的...

9600
来自专栏喔家ArchiSelf

PHP 是最好的语言吗?

最近被朋友们拉入了几个技术社群,有微信群,也有QQ群,尤其对一些年轻的朋友,大家乐此不疲的问题居然是 PHP 是最好的语言么?

17620
来自专栏CSDN技术头条

专访李哲,和一个“不安分”的程序员谈Ruby和开源

之所以采访李哲,可能很大的原因是因为他是一个“不安分”的开发者吧。从一家知名的国企离开,在当时看来是需要不少勇气的。第一次接触到他,是看到他在RubyChina...

33660
来自专栏华章科技

大数据商业智能的十大戒律

如今,各路企业和组织都不再使用上一代架构来存储大数据。既然如此,为什么还要使用上一代商业智能(BI)工具来进行大数据分析呢?在为企业选择BI工具时,应该遵守以下...

10220
来自专栏Java学习网

编程能力的四种境界

  人类心理学研究中的一个基础支撑科目就是分析人的潜意识和意识。弗洛伊德是最早的一位能够清楚的认定和描述我们的心理活动“领域”的人。在他这著名的一生的早期,他就...

37550
来自专栏Python爬虫

目前最全的python的就业方向

Python是一门面向对象的编程语言,编译速度超快,从诞生到现在已经25个年头了。它具有丰富和强大的库,常被称为“胶水语言”,能够把用其他语言编写的各种模块(尤...

21600
来自专栏GopherCoder

四个月,知识管理实践

18440
来自专栏IT派

这么多编程语言,而我为什么要学 Python?

今天分享的4个关于Python编程语言的故事,来看看人工智能时代爆发的Python。 每个人都知道Python是“AI时代最好的编程语言”。 ? 言归正传,我们...

52250

扫码关注云+社区

领取腾讯云代金券