下面是最近的一些体会
花了几个小时学完php,并发现已经能写出类似于博客这种项目了,对比于以前学java后端用了几十天,有感而写。
我是小白程序员,真正接触编程差两个月到一年,以下都是我这个小白程序员所思考所写,难免有些纰漏,望可以指正。
以我目前接触到的语言为例,
-
java
-
python
-
c++/c
-
javascript
-
typescript
-
php
一门语言有其共性与特性,至少我所接触到的语言
都有以下常用共性
-
变量类型/常量
-
运算符
-
判断/循环
-
数组
-
正则
-
注释,导包
-
字符串/字符串处理
-
"Collections" //注,这里Collections是指类似于Java中List,Set,Map等由其他东西封装出来的便于处理东西的数据结构工具集
-
函数
-
网络处理
-
"HttpClient" //这里是指类似于http工具等被封装的工具
-
文件操作
-
工程化(java的maven,python的pip,前端的npm)
特性
-
语法
-
规范
-
生态,各类框架/中间件/轮子
-
类型(强类型,弱类型)
-
语言本身特性(如 是否支持指针,是否是完全面向对象,是否支持函数式编程)
-
语言实现原理
学一门编程语言我觉得有四个层次。
-
能写题(各类OJ那种题)
这里不是指算法能力,单单指对语言的运用能力。例如大学上学期的C语言,期末按学校老师要求来会属于是这个层次。
这个层次,学的都是一个语言的语法,以及刚刚说的共性的前9条,这时候,没有具备写项目能力。
-
能做项目
这里先要学文件操作,以及工程化。学会如何调库,那就能做基本的项目。这时候些项目会发现,很多想实现的东西单靠以前学的文件操作,网络操作,一些写题的能力无法完成一些东西,于是你开始学框架,学一些更高的应用技术(如java的泛型,注解,反射;),这时候写项目能力会大大提升,对语言特性理解也会大大提升
-
能掌握其独有语言特性
语言特性并不是每个语言完全没有交差点的,不同语言是互相借鉴的。如你理解了java的lambda表达式,去学js的函数式写法就会发现比较轻而易举。学了python的模板表达式,再去学js就会发现都一样的,无非是语法不一样。
有些语言可以面向对象,有些语言完全面向对象(点名Java)。
有些语言动态编译运行
有些语言先编译再运行
这些都是我所说的语言特性上的不同,解决语言特性,理解每个语言特性,对技能上的提升会非常大。
我现在体会的比较深的是,我学Java比较久,熟练java的语言特性。虽然js也用得久,前端项目做了很多,但是没有专门去看 理解它的语言特性(如什么原型链啥的)。我能用java写出比较复杂的架构,中间件,但换个语言,换成js依然不行。而对于不写这些架构,去写项目来说,用起来都差不多能达到目标。
-
能深入理解语言原理
能纠错语言,从底层debug,灵活选择语言,这种层次存在在我幻想中,我目前层次远远不够,这是我这个小白程序员的幻想。
所以如何快速学会一门编程语言
学了第一门编程语言后,学到比较高的层次,学其他语言,直接学特性部分,加上练习,便可快速学会。
* 这里所说的学会,仅仅是指会用,而不是精通