Cuuube / blog

blog on Mirror
1 stars 0 forks source link

[杂学]快速学习新语言的提纲 #53

Open Cuuube opened 6 years ago

Cuuube commented 6 years ago

前言

掌握一门新语言,有时候会像一个无头苍蝇乱撞。

但经常地,也有一群人对新语言上手很快。尤其是有一定的编程经验的人。

我想了想,大致在于融会贯通。

很多思想都是通用的,只需要搞清和自己熟悉的语言,【哪里不同】。

所以我不妨就来试着列一个提纲,给已经掌握一门语言的朋友学习其他语言时,要着重注意的点。按照点来,一步一步走,也能大致掌控新语言。

入门学习列表

一、语言大致特性

OO 和 PO

OO(Object Oriented):面向对象。主张万物皆对象,是一种以事物为中心的编程思想。一般会出现很多类和对象

PO(Procedure Oriented):面向过程,即是以过程为主,注重怎么做。一般会出现很多函数。

举个例子,要实现人吃东西,面向对象的一般都这么做

  1. 建立的类,并带有一个方法:
  2. 建立东西的类,赋予一些营养值等属性。
  3. 实例化东西
  4. 调用:人.吃(东西),得出结果

而面向过程一般这么做:

  1. 定义的函数,带有两个参数:吃者被吃者
  2. 函数体中处理吃的结算结果。
  3. 调用函数:吃(人,东西),得出结果

一般而言,你若掌握了某一类,在学习同类会比跨类容易些。

二、基本数据类型

学习一门语言,要先搞清那门语言的基本数据类型有哪些。

基本数据类型,一般特性都是直接赋值,拷贝时拷贝的是数据而不是指针。

作为函数的参数时,中多为传值调用

大部分语言基本数据类型都是相似的,比如都有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. 正则表达式

正则自己有套比较独立的语法。

而包装正则式,各大语言都差不多。可谓是一招鲜吃遍天。

但正则式入门并不容易,需要记忆大量符号。

如果你还没上手任意一门编程语言,那么要吃点苦了。

未完待续(也可能弃坑了)