如何学好编程语言?

很多人喜欢争论什么什么编程语言好,我认为这个话题如果不限定应用范围,就毫无意义。每种编程语言必然有其优点和缺点,这也决定了它有适合的应用场景和不适合的应用场景。
现代软件行业,想一门编程语言包打天下是不现实的。这中现状也造成了一种现象,一个程序员往往要掌握多种编程语言。
学习任何一门编程语言,都会面临的第一个问题都是:如何学习这门语言?
我不想说什么多看、多学、多写、多练之类的废话。世上事有难易乎?无他,唯手熟尔。谁不知道熟能生巧的道理?
我觉得有必要谈谈的是:如何由浅入深的学习一门编程语言?学习所有编程语言有没有一个相对统一的学习方法?
曾几何时,当我还是一名小菜鸟时,总是叹服那些大神掌握多门编程语言。后来,在多年编程工作和学习中,我陆陆续续也接触过不少编程语言:C、C++、Java、C#、Javascript、shell等等。每次学习一门新的编程语言,掌握程度或深或浅,但是学习的曲线却大抵相似。
下面,我按照个人的学习经验总结一下,学习编程语言的基本步骤。
一、学习编程语言的步骤


二、基本语法
首先当然是了解语言的最基本语法。
控制台输出,如C的printf,Java的System.out.println等。
普通程序员的第一行代码一般都是输出“HelloWorld”吧。
三、基本数据类型
不同编程语言的基本数据类型不同。基本数据类型是的申请内存空间变得方便、规范化。
四、变量
不同编程语言的声明变量方式有很大不同。有的如Java、C++需要明确指定变量数据类型,这种叫强类型定义语言。有的语言(主要是脚本语言),如Javascript、Shell等,不需要明确指定数据类型,这种叫若类型定义语言。
还需要注意的一点是变量的作用域范围和生命周期。不同语言变量的作用域范围和生命周期不一定一样,这个需要在代码中细细体会,有时会为此埋雷。
五、逻辑控制语句
编程语言都会有逻辑控制语句,哪怕是汇编语言。
掌握条件语句、循环语句、中断循环语句(break、continue)、选择语句。一般区别仅仅在于关键字、语法格式略有不同。
六、运算符
掌握基本运算符,如算术运算符、关系运算符、逻辑运算符、赋值运算符等。
有些语言还提供位运算符、特殊运算符,视情节掌握。
注释(没啥好说的)
七、函数
编程语言基本都有函数。注意语法格式:是否支持出参;支持哪些数据作为入参,有些语言允许将函数作为参数传入另一个参数(即回调);返回值;如何退出函数(如Java、C++的return,)。
八、数组、枚举、集合
枚举只有部分编程语言有,如Java、C++、C#。
但是数组和集合(有些语言叫容器)一般编程语言都有,只是有的编程语言提供的集合比较丰富。使用方法基本类似。
九、常用类
比较常用的类(当然有些语言中不叫类,叫对象或者其他什么,这个不重要,领会精神)请了解其API用法,如:字符串、日期、数学计算等等。
十、语言特性
语言特性这个特字反映的就是各个编程语言自身的"独特个性",这涉及的点比较多,简单列举一些。
十一、编程模式
比较流行的编程模式大概有:
面向对象编程,主要是封装、继承、多态;函数式编程,主要是应用Lambda;过程式编程,可以理解为实现需求功能的特定步骤。
每种编程模式都有一定的道理,我从不认为只有面向对象编程才是王道。
Java是面向对象语言,从Java8开始也支持函数编程(引入Lambda表达式);C++可以算是半面向对象,半面向过程式语言。
十二、语言自身特性
每个语言自身都有一些重要特性需要了解。例如,学习C、C++,你必须了解内存的申请和释放,了解指针、引用。而学习Java,你需要了解JVM,垃圾回收机制。学习Javascript,你需要了解DOM操作等。
十三、代码组织、模块加载、库管理
一个程序一般都有很多个源代码文件。这就会引入这些问题:如何将代码文件组织起来?如何根据业务需要,选择将部分模块启动时进行加载,部分模块使用懒加载(或者热加载)?
最基本的引用文件就不提了,如C、C++的#include,Java的import等。
针对代码组织、模块加载、库管理这些问题,不同语言会有不同的解决方案。
如Java可以用maven、gradle管理项目依赖、组织代码结构;Javascript(包括Nodejs、jquery、react等等库)可以用npm、yarn管理依赖,用webpack等工具管理模块加载。
十四、容错处理
程序总难免会有bug。
所以为了代码健壮性也好,为了方便定位问题也好,代码中需要有容错处理。常见的手段有:
异常
断言
日志
调试
单元测试
十五、输入输出和文件处理
这块知识比较繁杂。建议提纲挈领的学习一下,理解基本概念,比如输入输出流、管道等等。至于API,用到的时候再查一下即可。
十六、回调机制
每种语言实现回调的方式有所不同,如.Net的delegate(大量被用于WinForm程序);Javascript中函数天然支持回调:Javascript函数允许传入另一个函数作为入参,然后在方法中调用它。其它语言的回调方式不一一列举。
十七、序列化和反序列化
首先需要了解的是,序列化和反序列化的作用是为了在不同平台之间传输对象。
其次,要知道序列化存在多种方式,不同编程语言可能有多种方案。根据应用的序列化方式,选择性了解即可。
十八、进阶特性
以下学习内容属于进阶性内容。可以根据开发需要去学习、掌握。需要注意的是,学习这些特性的态度应该是不学则已,学则死磕。因为半懂半不懂,特别容易引入问题。
对于半桶水的同学,我想说:放过自己,也放过别人,活着不好吗?
并发编程:好处多多,十分重要,但是并发代码容易出错,且出错难以定位。要学习还是要花很大力气的,需要了解大量知识,如:进程、线程、同步、异步、读写锁等等。
反射:让你可以动态编程(慎用)。
泛型:集合(或者叫容器)的基石。精通泛型,能大大提高你的代码效率。
元数据:描述数据的数据。Java中叫做注解。
十九、库和框架
学习一门编程语言,难免需要用到围绕它构建的技术生态圈——库和框架。这方面知识范围太庞大,根据实际应用领域去学习吧。比如搞JavaWeb,你多多少少肯定要用到Spring、Mybatis、Hibernate、Shiro等大量开发框架;如果做Javascript前端,你可能会用到React、Vue、Angular、jQuery等库或框架。
小结
总结以上,编程语言学习的道路是任重而道远的,未来是光明的。
最后一句话与君共勉:路漫漫兮其修远,吾将上下而求索。

原文地址:https://www.cnblogs.com/wanshuit/p/9056958.html

时间: 2024-11-05 21:27:54

如何学好编程语言?的相关文章

递归函数的概念使用方法与实例

一.栈     在说函数递归的时候,顺便说一下栈的概念.     栈是一个后进先出的压入(push)和弹出(pop)式数据结构.在程序运行时,系统每次向栈中压入一个对象,然后栈指针向下移动一个位置.当系统从栈中弹出一个对象时,近期进栈的对象将被弹出.然后栈指针向上移动一个位置.程序猿常常利用栈这种数据结构来处理那些最适合用后进先出逻辑来描写叙述的编程问题.这里讨论的程序中的栈在每一个程序中都是存在的,它不须要程序猿编写代码去维护,而是由运行是系统自己主动处理.所谓的系统自己主动维护,实际上就是编

如何学习编程和做好DBA

关于学习编程和做好DBA的关系 我这里只是讨论SQLSERVER DBA 我发现很多DBA都是从程序员开始做起的,一般做了4.5年之后就转型做DBA或者管理或者销售啊. 为什麽一开始不直接做DBA,DBA需要会TSQL,操作系统知识,数据库知识,可能还要熟悉业务 但是不需要学习编程语言,例如:C# VB C++等,因为DBA不需要写业务系统,管好公司的数据库就可以了 但是最近我想了想,如果不学习一些编程语言 ,很多DB管理工作都是执行一次又一次的SQL语句查看数据库运行情况 很是繁琐,如果学习了

数据科学行业已被挤爆?4点建议献给准备入行的小白

数据科学家被称为"21世纪最性感的职业",也被认为是最容易找工作的职业,但如今,真实情况如何呢? 数据科学刚刚度过了它的黄金五年.自2012年以来,这个行业发展迅速.它几乎完整经历了Gartner技术成熟度曲线的每个阶段. 度过了初期使用阶段.有关AI和偏见的负面新闻.Facebook等公司的第二三轮风投.现在的数据科学正处于高增长使用阶段:即使是银行.医疗保健公司和落后市场五年的其他100强企业,也在招聘机器学习中的数据科学岗位. 但现实正在发生巨大的变化. 来自captech基金的

前端要以正确的姿势学习编译原理(上篇)

转自:https://zhuanlan.zhihu.com/p/36301857 前言 最近在我的 timline 上面出现了很多类似<前端为什么要学编译原理>这类文章以及<前端怎么学AST>这类的问题,但是却发现并没有人给大家介绍前端要如何以系统并且正确地学习编译原理,所以我就结合自己的经验以及走过的弯路来给大家分享点心得和经验,希望能让大家少走点弯路. 最后我并不是前端,只是恰好会写点 JavaScript 而已. 目录 上篇: 编译原理为什么难 怎么学好编程语言 代码到底是什

如何学好一门编程语言或技术?

相信大家都知道,在看一本书的时候,通过该书的目录和索引能够很快的了解本书内容和找到我们需要的页数,因为一本专业的书本往往记录的知识都非常全面,举个例子假如我们初学Hadoop,所以呢就购买了一本<Hadoop编程指南>,打算系统的学习一下这个东东来提高一下自己的逼格和工资水平,那么问题来了,如何才能学好一门语言或技术? 以前也有很多朋友或群友,问散仙如何学好一门编程语言或XXX技术,当然首先我得从非技术的角度来回答你: 1,最重要的就是坚持下来,不要半途而废 2,空杯心态,戒骄戒躁,多向比你强

如何学好一本编程语言

纵观大部分编程语言,无论是面向过程的C/C++,JAVA还是面向对象的php,JS,等等.都脱不了以下几点 1变量 如常量,浮点,PHP或者JS,单纯就是VAR 就命名了所有的变量.个别的还衍生出字典之类. 2 数组 几乎每一门语言都忽视不了它. 3 执行顺序 循环 顺序,还是for ,还是foreach,还是 if else 4 文件操作 fopen echo print每一种都不一样,又都有共同点. 学会这四样基本就掌握了一门语言. 剩下的就是掌握各个平台所指定的控件用法了. Text,In

如何学好一门编程语言?

其实现在市面上的编程语言多如牛毛,常见的有CPP.Java.C.Python.PHP.R.Matlab.GO等一系列的编程语言,当然还有我们工作中天天要用到的Linux操作系统,那么,问题来了,面对这么多的编程语言,我们先学哪个呢?从何处入手?如何学?报班学还是自学? 在我看来,无论是学哪个,报班学还是自学,首先要清楚明白一点,数量级要达到,如果达不到数量级,学什么都是白学的.为什么人家是个牛人,自己却还是个小白?差距就在于数量级的冠军级训练. 何为冠军级的数量级训练?就是正常人学习一门课程是1

如何学好一门编程语言

首先要看自己目前的编程水平 如果是什么基础都没有(但是还是要有计算机基础的,如果还不会操作计算机.那你也不用学编程了.先会了斗地主再说) 这个时候,你根本不知道你学了语言能具体做什么.你可能知道的仅仅是学了这个语言以后.可以开发软件.可以开发游戏等. 寻找一门语言书籍,可以是java  c(谭浩强的树)   php来从头到尾看,死磕.不要错过一些细节.你看不懂看不明白的地方可以反复的看.还是不懂不明白.可以记录然后跳过,后续再过来看.所有例子都亲自完全实践. 这么语言学习到你能够单独做一个项目的

怎样学好PHP编程

php入门是比任何语言都简单,很好学,一般一周两周就可以写简单留言本了.学好php每一条件勤在先,打代码,拼命打代码,买本书,把里面的代码从头打到尾,再回来不懂的再打,运行,再不理解上网上问别人,csdn高手多,回答问题慢,专问有深层次的,phpchina中手多,人多,什么问题都可以问,回答的速度非常快.一句话"百码敲百遍,其义自见",代码打得越多,运行得越多,慢慢地会对程序理解得越深.想速成吗?每天看书打代码不低于10个钟,这样坚持两个月后你就可以应付工作了.这一般人都受不了,做不到