作家
登录

王垠:如何掌握所有的程序语言

作者: 来源: 2017-07-11 08:59:36 阅读 我要评论

对的,我这里要讲的不是若何控制一种法度榜样说话,而是所有的……

很多编程初学者至今还在给我写信就教,问我钙揭捉?习什么法度榜样说话,怎么进修。因为我知道若何控制“所有”的法度榜样说话,老是感到这种钙揭捉?“一种”什么竽暌癸言的问题比较初级,所以一向没来得及答复他们 :P 可是逐渐的,我发明本来不只是小白们有这个问题,就连绵国大年夜公司的很多资深工程师,其实也没搞明白。

今天我有动力了,鲜攀来同一答复一下这个弃置已久的“初级问题”。类似的话题貌似曾经写过,然而如今我想把它从新写一遍。因为在跟很多人交换之后,我对本身脑筋中的(未转化为说话的)设法主意,有了更精准的表达。

如不雅你存在以下的各种困惑,那么这篇文┞仿也许会对你有所赞助:

  • 你是编程初学者,不知道钙揭捉?择什么法度榜样说话来入门。
  • 你是资深的法度榜样员或者团队引导,对新出现的各种说话认为困惑,不知道该“投资”哪种说话。
  • 你的团队为应用哪种法度榜样说话争辩不休,产生各类宗教斗争。
  • 你追逐潮流采取了某种时髦的说话,结不雅两个月之后发明深陷泥潭,苦楚不堪……

固然我已经不再干预干与这些世事,然而无可置疑的实际是,法度榜样说话仍然是很重要的话题,这个情况短时光内不会改变。法度榜样员的岗亭往往会请求熟悉某些说话,甚至某些奇葩的公司请求你“深刻懂得 OOP 或者 FP 设计模式”。对于在职的法度榜样员,法度榜样说话至今仍然是可以争得面红耳赤的宗教话题。它的宗教性之强,以至于我在批驳和奚弄某些说话(比如 Go 说话)的时刻,有些人会本能地认为我是别的一种说话(比如 Java)的粉丝。

显然我弗成能是任何一种说话的粉丝,我甚至不是 Yin 说话的粉丝 ;) 对于任何大年夜没见过的说话,我都是直接拿起来就用,而不须要经由进修的过程。看了这篇文┞仿,也许你会明白我为什么可以达到这个效不雅。懂得了这琅绫擎的器械,每个法度榜样员都应当可以做到这一点。嗯,但愿吧。

看重说话特点,而不是说话

很多人盲目标崇拜说话设计者,只要听到有人设计(或者美其平易近曰“创造”)了一个说话,就热血沸腾,佩服的五体投地。他们却没有懂得,其实所有的法度榜样说话,不过是像 Dell,联想一样的“组装机”。说话特点的设计者,才是像 Intel,AMD,ARM,Qualcomm 那样核心技巧的创造者。

任何一种“说话”,都是各类“说话特点”的组合。打个比方吧,一个法度榜样说话就像一台电脑。它的牌子可能叫“联想”,或者“IBM”,或者“Dell”,或者“苹不雅”。那么,你可以说苹不雅必定比 IBM 好吗?你不克不及。你得看看它琅绫擎装的是什么型号的处理器,有若干个核,主频繁干,有若干 L1 cache,L2 cache……,有若干内存和硬盘,显示器分辨率有多大年夜,显卡是什么 GPU,网卡速度,等等各类“设备”。有时刻你还得看各个组件之间的兼容性。

这些设备对应到法度榜样说话琅绫擎,就是所谓“说话特点”。举一些说话特点的例子:

  • 变量定义
  • 算术运算
  • for 轮回语句,while 轮回语句
  • 函数定义,函数调用
  • 递归
  • 静态类型体系
  • 类型推导
  • lambda 函数
  • 面向对象
  • 垃圾收受接收
  • 指针算术
  • goto 语句

这些说话特点,就像你在选择一台电脑的时刻,看它琅绫擎是什么设备。选电脑的时刻,没有人会说 Dell 必定是最好的,他们只会嗣魅这个型号琅绫擎装的是 Intel 的 i7 处理器,这个比 i5 的好,DDR3 的内存 比 DDR2 的快这么多,SSD 比磁盘快很多,ATI 的显卡是垃圾…… 如斯等等。

法度榜样说话也是一样的事理。对于初学者来说,其史偕砧要纠结到底要先学哪一种说话,再学哪一种。曾经有人给我发信问这种问题,纠结了好几个礼拜,结不雅一个说话都还没开端学。有这纠结的时光,其实都可以把他纠结过的说话全部控制了。

初学者往往不睬解,每一种说话琅绫擎必定有一套“通用”的特点。比如变量,函数,整数和浮点数运算,等等。这些是每个通用法度榜样说话琅绫擎都必须有的,一个都不克不及少。你只要经由过程“某种说话”学会了这些特点,控制这些特点的根本概念,就能随时把这些常识应用到任何其它说话。你为此投入的时光根本不会浪费。所以初学者纠结要“先学哪种说话”,这种时光花的很不值得,还不如随便挑一个说话,跳进去。

很多初学者不懂得,一个高超的法度榜样员如不雅开端用一种新的法度榜样说话,他往往不是去看这个说话的大年夜部头手册或者书本,而是先有一个须要解决的问题。手头有了问题,他可以用两分钟浏览一下这说话的手册,看看这说话大年夜概长什么样。然后,他直接拿起一段例子代率攀来开端修改捣鼓,设法主意把这代码改成本身正想解决的问题。在这个简短的过程中,他很快的┞菲握了这个说话,并用它表达出心里的设法主意。

在这个过程中,跟着需求的出现,他可能会问如许的问题:

  • 这个说话的“变量定义”是什么竽暌癸法,须要“声明类型”吗,照样可以用“类型推导”?
  • 它的“类型”是什么竽暌癸法?是否支撑“泛型”?泛型的 “variance” 若何表达?
  • 这个说话的“函数”是什么竽暌癸法,“函数调用”是什么竽暌癸法,可否应用“缺省参数”?
  • ……

留意到了吗?膳绫擎每一个引号琅绫擎的内容,都是一种说话特点(或者叫概念)。这些概念可以存在于任何的说话琅绫擎,固然语法可能不一样,它们的本质都是一样的。比如,有些说话的参数类型写在变量前面,有些写在后面,有些中距离了一个冒号,有些没有。


  推荐阅读

  Web的26项基本概念和技术

Web 开辟是比较操心的,须要控制很多很多的器械,特别是大年夜事前端开辟的同伙,须要通十行才行。今天,本文向初学者介绍一些 Web 开辟中的根本概念和用到的技巧,大年夜A到Z总共26项,>>>详细阅读


本文标题:王垠:如何掌握所有的程序语言

地址:http://www.17bianji.com/lsqh/36130.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)