Open Cuuube opened 6 years ago
掌握一门新语言,有时候会像一个无头苍蝇乱撞。
但经常地,也有一群人对新语言上手很快。尤其是有一定的编程经验的人。
我想了想,大致在于融会贯通。
很多思想都是通用的,只需要搞清和自己熟悉的语言,【哪里不同】。
所以我不妨就来试着列一个提纲,给已经掌握一门语言的朋友学习其他语言时,要着重注意的点。按照点来,一步一步走,也能大致掌控新语言。
OO(Object Oriented):面向对象。主张万物皆对象,是一种以事物为中心的编程思想。一般会出现很多类和对象
OO
PO(Procedure Oriented):面向过程,即是以过程为主,注重怎么做。一般会出现很多函数。
PO
举个例子,要实现人吃东西,面向对象的一般都这么做
人吃东西
人
吃
东西
人.吃(东西)
而面向过程一般这么做:
吃者
被吃者
吃(人,东西)
一般而言,你若掌握了某一类,在学习同类会比跨类容易些。
学习一门语言,要先搞清那门语言的基本数据类型有哪些。
基本数据类型
基本数据类型,一般特性都是直接赋值,拷贝时拷贝的是数据而不是指针。
作为函数的参数时,中多为传值调用。
大部分语言基本数据类型都是相似的,比如都有boolean、都有number(有的分为integer和float)
也可能有些基本数据类型不太一样。比如有无char、对string的处理。
char
string
复杂数据类型根据语言特性而不同,但大体特性都是传址调用。
传址调用
就是说,让一个变量等于一个复杂数据类型,一般而言,此变量得到的是该数据在内存中的位置。俗称指针。
指针
若对变量指针指向的数据操作的话,其他指向该内存的所有变量都会变。
很绕对吧,这也是指针被称为c的初学者杀手原因。
直接列个列表吧:
到此基本就能走路了。如果不满足还需要学:
还有更多其他语言的运算等。
有一定编程基础的同学,基本至少对一种语言的流程控制了若指掌。
无外乎if-else或switch等条件选择,while和for等循环,try-catch等错误控制。
if-else或switch等条件选择
while和for等循环
try-catch等错误控制
一般这类区别都不大,只要记住语法都能迅速掌握。
更高级的流程控制语句因语言而异。但学好上面几种,就至少能用了。
粗略地叫函数也许有些不对,因为在一些OOP语言中是没有单独的函数的,依附于对象之中成为方法。
OOP语言
方法
但是这并不妨碍学习语言,要重点学习这种运算的思想。
函数正如数学中的函数,模型大致就是输入 => 一顿操作 => 输出。
输入 => 一顿操作 => 输出
从小学学习的加法运算,到大学学习的复变函数。无论哪种,都是上面的模型。
语言中的函数就是自己定义的这个过程。
数组的名字也很多,有的语言叫Array,有的语言叫List。为了称呼方便,这里统一按照c语言的叫法。
数组之所以重要,是因为提供了一个简单处理多数据的平台。
正如同数学中集合的概念。
集合
另外,因为数组在内存中的特殊结构,对有序数组的遍历显得极为快速。
遍历
数组将是你使用的最多的数据类型之一。
对于做过网络编程的人来说,键值对是很重要的。
现在网络传输的大热门,json,就是通过这样的键值对传递消息。
现在大热门的Mongodb也是用键值对的扩展-bson存储数据。
对于编程语言来讲,不仅如此。键值对这种自带索引的数据格式为查找数据提供了巨大方便。
每个值存进去,都自带一个关键字。通过此关键字可以迅速匹配到该值。这在python中称作“字典”。
但不是任何语言都有实现键值对的方式。不过,总有办法的。
物以类聚,人以群分。
类和对象是面向对象语言的精髓,也是基础。
要细讲,能讲一大本书。
但此处只说,要是学习面向对象语言,这个是必须的。不学习面向对象思想,但是语言中有对象的,学习了它也百利而无一害。
时间/日期的API,每个语言中都有。
这玩意很不起眼。但是真的项目中用到了时间操作的,你躲不起。
正则自己有套比较独立的语法。
而包装正则式,各大语言都差不多。可谓是一招鲜吃遍天。
但正则式入门并不容易,需要记忆大量符号。
如果你还没上手任意一门编程语言,那么要吃点苦了。
前言
掌握一门新语言,有时候会像一个无头苍蝇乱撞。
但经常地,也有一群人对新语言上手很快。尤其是有一定的编程经验的人。
我想了想,大致在于融会贯通。
很多思想都是通用的,只需要搞清和自己熟悉的语言,【哪里不同】。
所以我不妨就来试着列一个提纲,给已经掌握一门语言的朋友学习其他语言时,要着重注意的点。按照点来,一步一步走,也能大致掌控新语言。
入门学习列表
一、语言大致特性
OO 和 PO
OO
(Object Oriented):面向对象。主张万物皆对象,是一种以事物为中心的编程思想。一般会出现很多类和对象PO
(Procedure Oriented):面向过程,即是以过程为主,注重怎么做。一般会出现很多函数。举个例子,要实现
人吃东西
,面向对象的一般都这么做人
的类,并带有一个方法:吃
东西
的类,赋予一些营养值等属性。人
和东西
人.吃(东西)
,得出结果而面向过程一般这么做:
吃
的函数,带有两个参数:吃者
和被吃者
吃
函数:吃(人,东西)
,得出结果一般而言,你若掌握了某一类,在学习同类会比跨类容易些。
二、基本数据类型
学习一门语言,要先搞清那门语言的
基本数据类型
有哪些。基本数据类型,一般特性都是直接赋值,拷贝时拷贝的是数据而不是指针。
作为函数的参数时,中多为传值调用。
大部分语言基本数据类型都是相似的,比如都有boolean、都有number(有的分为integer和float)
也可能有些基本数据类型不太一样。比如有无
char
、对string
的处理。三、复杂数据类型
复杂数据类型根据语言特性而不同,但大体特性都是
传址调用
。就是说,让一个变量等于一个复杂数据类型,一般而言,此变量得到的是该数据在内存中的位置。俗称
指针
。若对变量指针指向的数据操作的话,其他指向该内存的所有变量都会变。
很绕对吧,这也是
指针
被称为c的初学者杀手原因。四、基础语法与运算符
直接列个列表吧:
到此基本就能走路了。如果不满足还需要学:
还有更多其他语言的运算等。
五、流程控制
有一定编程基础的同学,基本至少对一种语言的流程控制了若指掌。
无外乎
if-else或switch等条件选择
,while和for等循环
,try-catch等错误控制
。一般这类区别都不大,只要记住语法都能迅速掌握。
更高级的流程控制语句因语言而异。但学好上面几种,就至少能用了。
六、单独领出来说的复杂数据类型
1. 函数
粗略地叫函数也许有些不对,因为在一些
OOP语言
中是没有单独的函数的,依附于对象之中成为方法
。但是这并不妨碍学习语言,要重点学习这种运算的思想。
函数正如数学中的函数,模型大致就是
输入 => 一顿操作 => 输出
。从小学学习的加法运算,到大学学习的复变函数。无论哪种,都是上面的模型。
语言中的函数就是自己定义的这个过程。
2. 数组
数组的名字也很多,有的语言叫Array,有的语言叫List。为了称呼方便,这里统一按照c语言的叫法。
数组之所以重要,是因为提供了一个简单处理多数据的平台。
正如同数学中
集合
的概念。另外,因为数组在内存中的特殊结构,对有序数组的
遍历
显得极为快速。数组将是你使用的最多的数据类型之一。
3. 键值对
对于做过网络编程的人来说,键值对是很重要的。
现在网络传输的大热门,json,就是通过这样的键值对传递消息。
现在大热门的Mongodb也是用键值对的扩展-bson存储数据。
对于编程语言来讲,不仅如此。键值对这种自带索引的数据格式为查找数据提供了巨大方便。
每个值存进去,都自带一个关键字。通过此关键字可以迅速匹配到该值。这在python中称作“字典”。
但不是任何语言都有实现键值对的方式。不过,总有办法的。
4. 类和对象
物以类聚,人以群分。
类和对象是面向对象语言的精髓,也是基础。
要细讲,能讲一大本书。
但此处只说,要是学习面向对象语言,这个是必须的。不学习面向对象思想,但是语言中有对象的,学习了它也百利而无一害。
5. 时间
时间/日期的API,每个语言中都有。
这玩意很不起眼。但是真的项目中用到了时间操作的,你躲不起。
6. 正则表达式
正则自己有套比较独立的语法。
而包装正则式,各大语言都差不多。可谓是一招鲜吃遍天。
但正则式入门并不容易,需要记忆大量符号。
如果你还没上手任意一门编程语言,那么要吃点苦了。
未完待续(也可能弃坑了)