对的,我这里要讲的不是若何控制一种法度榜样说话,而是所有的……
很多编程初学者至今还在给我写信就教,问我钙揭捉?习什么法度榜样说话,怎么进修。因为我知道若何控制“所有”的法度榜样说话,老是感到这种钙揭捉?“一种”什么竽暌癸言的问题比较初级,所以一向没来得及答复他们 :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 开辟是比较操心的,须要控制很多很多的器械,特别是大年夜事前端开辟的同伙,须要通十行才行。今天,本文向初学者介绍一些 Web 开辟中的根本概念和用到的技巧,大年夜A到Z总共26项,>>>详细阅读
本文标题:王垠:如何掌握所有的程序语言
地址:http://www.17bianji.com/lsqh/36130.html
1/2 1