高级语言学习结构概论
我的语言经历
最近学习了Go语言,但我本身从接触JAVA到现在7年半了,刚工作那会儿使用Php语言开发过一个网站,中间接触过形形色色的各种前端框架,抛开这些前端的东西不提,只说后端高级语言,觉得语言这个东西其实很相似的,对于工作多年的人,学习一门新的语言应该不再是一种难以做到的事,但如何能够快速掌握,掌握哪些重点等这些问题才是最需要去了解的。
关于编程语言的设计
经验告诉我,编程语言无论是JAVA还是Go,亦或是Php其实它们都有一些共同的东西,所谓统一的思想,不同的形式。就是说高级语言都有一些共同关心的内容,但是实现这些内容的形式却是各种各样的。JAVA、Go、Php各自都有变量的定义,但是定义变量的方式却是各自都不同,就拿定义整型变量来说java是:int a=1;而Go是var a int=1而且不需要以分号结尾,php又是另外一种样子,但是他们说的都是关于定义一个整型int的事情。我想说的是,对于使用高级语言开发多年的朋友来说,如果要学习一门其他高级语言,需要关注的应该高于这些形式,而应该站在更高的设计角度去了解不同语言之间对于相同内容的不同部分是如何设计的,以及这样做的好处。
高级语言的公共内容
- 开发环境搭建及开发IDE;
- 数据类型及变量、指针;
- 标识符及运算符及进制转换;
- 流程控制;
- 函数,包,方法,类,接口,访问控制;
- 数组,Map,切片,集合;
- 面向对象编程OOP;
- 内存模型
- 异常处理。
- 流及文件操作,序列化。
- 单元测试
- 进程,线程,协程
- 反射
- 网络编程
- 第三方类库使用及Redis缓存,Mysql持久化等操作
- 算法
- web编程
- 成熟框架
- 设计模式
- 源码分析
新编程语言学习重点
学习一门新的语言的确需要花费时间和精力去了解它的语法和使用。能够熟练应用并开发出出色的项目更是需要多年的经验积累,熟能生巧,就像陆游那个卖油翁的故事说明的道理,多写多看多应用,这才是最快的学习途径。顺便提一句,虽然说高级语言的设计基本都是在相同的内容基础之上做的,但是既然要学习,就不能流于形式,浮于表面,最终还是能熟练掌握语法才能熟练应用。
我的语言观
*语言其实是一种工具。
- 语言可以实现丰富多彩,功能强大的软件系统;
- 语言可以帮我们养家糊口,维持生计;
- 不能沉于语言本身,没有意义的去编码,开发语言的选择是挑剔的;
- 语言应当发挥出它的价值,这才是语言本身的价值;
经常看到很多新程序员兴致勃勃去搞一些时髦的写法,学习很偏门的知识,深究某些技术点,往往欲速则不达,在我看来能多加思考,深入思考做好手头的项目和工作,已经很了不起了,你不要觉得那些BAT的员工就比你牛多少。更不要去盲目崇拜那些所谓的大牛。
关于封装
很多高级语言都有封装这个特性,比如JAVA、Go这两种不同的语言,Go偏面向过程开发,而JAVA偏向面向对象,但是封装在两种语言中体现的淋漓尽致,所以我觉得无论是什么样的高级语言,封装已经不是它们的专属特性了,封装已经是一种哲学高度的设计思想,既然是思想那就自然有其存在的价值和好处。封装简化了我们的开发,让我们直接调用它而不用关心底层细节。我们学习高级编程语言的时候,其实也能想到,少不了的API,标准库,少不了第三方的类库、框架、jar包。这也正是让我们方便使用,所以说,还是那句老话,打好基础比啥都强。
自我驱动
最近进行的学习是关于GO的,从3月的26号开始到4月的28日为止,一个月左右的时间从小白到循序渐进做些小项目,实现小功能,并理解语言设计的思想,到对比其他语言学习的感受,完成一个阶段。这个过程需要自我去驱动。驱动力源自于一个一个的小目标和计划,比如完成一个功能后,思考如何完善,思考其不足之处,思考别人如何实现,多进行技术交流。自我驱动是十分必要的,这样才能让自己逐步深入到语言的细节中去,这个过程需要坚持和耐心。至于学习到什么程度因人而异,每个人学习的目标不同。记得深入思考。
转载:https://blog.csdn.net/shengqianfeng/article/details/89284987