如何学习编程语言

2018-12-03  本文已影响38人  ShannonChenCHN

前言:这篇文章要讨论的并不是编程新手所关注的问题,比如 “如何选一门入门编程语言”,“如何开始从零开始学习一门编程语言”这类问题,在我看来还有比这更让我感到担忧的问题,因为有很多有工作经验的工程师👨‍💻‍,在学习新语言时也会遇到各种学习方法和认知上的问题(当然也包括我自己),比如,学习时并没有具体目标、为了学而学、官方文档和语法都看了好几遍但是感觉了解的还是很浅、一上来就是抱着一本书闷着头扎进去、什么也不去了解直接就上手做项目结果到处碰壁、学了用不上很快就忘了、不知道怎样才算是学会了一门语言。所以,在这篇文章中我们主要围绕以下几个问题展开讨论:

  • 为什么要学习多种编程语言?除了找工作时多一些资本之外,还有什么其他理由吗?
  • 当我们选择新学一门编程语言时,为什么选了这门语言?是因为跟风?还是因为感觉挺有用的所以就学了?
  • 当我们在学习一门编程语言的时候,我们究竟在学习什么?怎样才算是真正学会了这门语言?学会了语法,能写出项目就是学会了吗?
  • 如果新学一门语言,在工作中却用不上,还有必要学吗?学了之后又如何能让它不荒废呢?

目录

我的自学经历

从进入大学到现在为止,我先后学习过 C、C++、Objective-C、Swift、JavaScript、Python。

我最近花了大约 1 个月的时间在学习 Python,起源是因为看到项目中有些脚本工具使用 Python 写的,所以我一开始学习 Python 的主要目的,就是为了工具箱中多一个工具,后来又想知道 web 开发到底是怎么回事,就顺便学了下 web 开发。一句话概括,就是为了多掌握一门技能,开阔视野。

在学习 Python 的过程中,我也顺便记录下了我的学习路线和笔记

当我们在学习一门编程语言的时候,我们究竟在学习什么?

最终目的:解决实际问题。

怎样才算是真正掌握了一门语言?

首先这取决于这门语言在你的日常开发工作中的角色,如果是主力开发语言(比如 ObjC),那就必须得精通,如果是辅助开发语言(比如 JavaScript),至少也要达到熟悉的程度,如果是很少用到的语言(比如 Ruby),能看懂别人的代码、能写简单的应用程序就行,还有最后一种就是纯粹兴趣使然的(比如 scheme、Lisp),了解即可。

级别 需求 要求 举例
知道 工作中基本上用不到 知道该语言是用来干嘛的,跟自己工作的关系是怎样的 Lisp、smalltalk
了解 在实践中接触过,但是工作中基本上不用自己去写 只需要能看懂别人写的,自己也会写一点简单的程序即可 Ruby
会用/入门 工作中会用到,但是频次不高 会使用该语言的一些基本特性实现需求,知道该语言的特点和优势 Swift、Python
熟练 工作用的比较多,仅次于第一语言 对于该语言的基本语法、高级特性以及常用 api、类库的使用非常熟练 JavaScript
精通 工作中每天都要用到的,可以称之为“母语” 除了熟练之外,还知道该语言的最佳实践、优缺点,底层实现 Objective-C、C

作为一个程序员需要掌握哪些语言?

为什么要学习多门语言?

学习语言最基本的目的是解决问题,所以学习一门语言的目的主要一般有两类,一是工作需要,用来开发产品的主力语言,比如 Java、ObjC 等,另一种就是用来开发一些辅助工具的语言,为了提升工作效率、自动化的语言,比如 Shell、Python 等。

从现实角度上来讲,往往一门语言的“价值”是由市场决定的,比如,之前移动开发比较火,ObjC 的程序员暴增,导致后来供远远大于求,招聘的要求也越来越高,那些只会 ObjC 的程序员的竞争力自然就比不过会多门语言的竞争者了。另外,很多公司在招人时还会要求除主力语言外同时会好几种语言,所以如果只学一门语言的话,会很容易让自己限于困境。

学一门语言很难了解语言的本质是什么,学了三门四门语言后,就会发现大部分编程语言的基本特性都差不多,语法也是大同小异。通过学习多门语言,可以抓住本质,总结共性,触类旁通,这样在学习新语言时很容易上手。

开阔思维,只会一门语言的话,很容易限制自己的思维。不同的语言有不同的特点和优势,盲目地争执哪种更好没有意义,掌握多种语言后,就相当于工具箱里有很多种工具,在面对实际问题时根据具体情况选择合适的语言。

学习编程语言的一些建议

总结

学习一门语言之前,要明确自己的目标,也就是为什么要学这门语言。

正式开始学习语言时,先了解全貌,然后根据二八法则,在学习了占 20% (这是一个大概的数字)的基础知识之后,就可以自己放开手写项目了,学编程,动手比什么都重要。

如何进阶?掌握语言的高级特性,了解语言的实现机制,不断总结,向高手学习。

参考


如果你也喜欢交流技术、喜欢阅读、积极践行,欢迎关注我的公众号:祥龙Shannon写字的地方,一起成长。

qrcode_for_gh_cc686217be41_344.jpg
上一篇 下一篇

猜你喜欢

热点阅读