如何效率学习一门编程语言

栏目: Python · 发布时间: 5年前

内容简介:版权声明: 本文为博主原创文章,发表自知一的指纹。转载需向首先这篇文章是建立在有一些编程基础之上来展开的,做为一种效率学习编程语言的自我总结输出。把编程语言当做一个工具,而这些不同种类的工具有很多的共通之处,抓住其中的关键之处可以大大提升学习效率,也是一篇自我总结的学习方法论,里面有的方法可能不适合我,但也会讲讲。如果要学习一门编程语言,先要问一下为什么要学?学会了能做什么?要达到什么样的目标?只有把这些问题想清楚了再去做,不然稀里糊涂不知所以,很可能半途而废。想明白了就要坚持去做,不要再东望望西看看,想、

版权声明: 本文为博主原创文章,发表自知一的指纹。转载需向 我的邮箱 申请。

首先这篇文章是建立在有一些编程基础之上来展开的,做为一种效率学习编程语言的自我总结输出。把编程语言当做一个工具,而这些不同种类的 工具 有很多的共通之处,抓住其中的关键之处可以大大提升学习效率,也是一篇自我总结的学习方法论,里面有的方法可能不适合我,但也会讲讲。如果要学习一门编程语言,先要问一下为什么要学?学会了能做什么?要达到什么样的目标?只有把这些问题想清楚了再去做,不然稀里糊涂不知所以,很可能半途而废。想明白了就要坚持去做,不要再东望望西看看,想、做、坚持三位一体是学到的基本三要素。

学习途径分析

网上的学习资料纷繁复杂,各种培训课程满网都有,那么大致分为以下几种吧:

如何效率学习一门编程语言

总结来说学习路径是这样的。

  • 入门:适合通过看视频和培训来实现,然后通过搜索引擎和博客文章论坛协助解决遇到的各种问题。

  • 提高:通过看书和大佬的博客文章交流论坛等来加深理解。

  • 实践:实践也是提高的一种方式,可以通过学习别人项目来仿写实践。

适合学习或交流的地方,Stack Overflow、博客园、简书、GitHub、官方论坛等等。关于搜索引擎,入门用百度就可以了,提高和实践建议用谷歌。

查问题的办法

学习过程中很关键的一点就是遇到问题如何解决问题,解决问题的速度和方法很大程度上决定我们后期学习的进度和自信心,那么我总结了几条比较关键的要素说明。

学会如何看异常信息

不论写 demo 还是实际项目开发中,肯定会遇到一堆异常情况,然后控制台打印一堆杂乱信息,首先要做的是理清楚其中的信息结构,其实就是日志啦,大致分为以下几种:

  • DEBUG:一般在开发调试期间开启,可以比较清楚的了解程序在运行过程中的各种状态和传参等。

  • INFO:正常运行日志信息,当程序访问量很大的情况下很多,会收集到日志系统。

  • WARN:对于程序可能出现的潜在问题的地方记录信息,或者不再支持的方法或库等。

  • ERROR:对于程序运行中的非预期异常访问、状态、请求需要记录错误信息和错误状态。

  • TRACE:这个在不同语言表的可能不同,主要是概括为带有调用堆栈信息的异常日志。

那么在测试过程中为了快速定位问题,还是要打印 TRACE 级别的异常日志,那么异常信息如何看呢?

Python 的异常信息示例

xyz-macdeMacBook-Pro:dev-demo xyz$ python mixin_demo.py 

Init people.

People can eat!

People can drink!

People can 

Traceback (most recent call last):

  File "mixin_demo.py", line 44, in <module>

    people = People()

  File "mixin_demo.py", line 39, in __init__

    print "People can ", self.sleep()

  File "mixin_demo.py", line 30, in sleep

    raise NotImplementedError(u"can't sleep.")

NotImplementedError: can't sleep.

在执行 Python 脚本的时候执行异常报错, Traceback 是我们要看的异常堆栈信息,自顶向下从 "mixin_demo.py 的 44 行开始执行,执行到 mixin_demo.py 第 30 行报错,异常类型 NotImplementedError ,异常内容为 can't sleep. 。也就说我们看到报错信息后,然后可以看到对应报错的位置以及调用链,方便快速定位到问题。

Java 的异常结构展示顺序有点不同,它的信息最底部是调用入口,然后向上一直到报错点,还有报错信息也在上面。这里只是一个简单的示例,通常 Java 的异常堆栈信息很长,调用链很深,这就需要有一定的经验来判断问题实际产生的原因。

objc[20307]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java (0x1077344c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10874d4e0). One of the two will be used. Which one is undefined.

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'teacher2' available

 at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:775)

 at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1221)

 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:294)

 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)

 at org.springframework.beans.factory.support.CglibSubclassingInstantiationStrategy$LookupOverrideMethodInterceptor.intercept(CglibSubclassingInstantiationStrategy.java:290)

 at com.noogel.xyz.lookup.GetBeanTest$$EnhancerBySpringCGLIB$$e79f57a6.getBean(<generated>)

 at com.noogel.xyz.lookup.GetBeanTest.showMe(GetBeanTest.java:5)

 at LookupTestMain.main(LookupTestMain.java:9)

使用IDE断点调试

如何效率学习一门编程语言

IDE 可以帮我们做很多事,大大提高了我们的开发效率,那么如何用好这样一个工具也是很关键的,这里说一下利用 IDE 进行 debug 调试。

通过上图我们可以看出 IDE 的调试功能很丰富,如果用好对于提高学习编程效率很有帮助。

查问题打日志

在 Python 中有一个查问题很好的利器 iPython,可以很方便的直接传参执行函数,对于线上问题,这样虽然很方便但是不可取。像 Java8 这样版本下的语言又没有很好用的一个工具,那么可以通过打日志的方式来操作,需要对可能的问题点分析然后增加日志辅助判断,打日志是一个很合适的查线上问题的方式。

向有经验的人请教

老师傅一出手就知有没有,如果遇到问题没有思路或者自己憋住了,需要及时向有经验的人请教,才是一个正确的选择。

了解框架的运行机制

俗话说『打铁还需自身硬』,遇到了问题总不能一直向别人请教吧,还是要自己去搞定的,上面的介绍的方法搞不定怎么办,那就要平时花心思在使用的框架上学习了,因为你不可能直接裸写代码的,一些轮子直接搬过来用固然高效,但是不懂构造轮子还是用不好的,容易出问题,所以要平时多去积累了。

以上讲的都是一些可以提高学习效率的方法。先写这些,后续想到新的再继续更新。

:sleeping:了,改日再更。

实践一个项目

GitHub 上有很多哇,可以拿来练手。

了解语言的技术栈

学习一门编程语言肯定是用来解决实际问题或找一份工作的,那么你要知道并不仅仅是学习这门编程语言,而是整个技术栈。

如果此文章能给您带来小小的提升,不妨小额赞赏我一下,以鼓励我写出更好的文章!

如何效率学习一门编程语言

微信打赏

如何效率学习一门编程语言

支付宝打赏


以上所述就是小编给大家介绍的《如何效率学习一门编程语言》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出WebAssembly

深入浅出WebAssembly

于航 / 电子工业出版社 / 2018-11 / 128.00元

WebAssembly是一种新的二进制格式,它可以方便地将C/C++等静态语言的代码快速地“运行”在浏览器中,这一特性为前端密集计算场景提供了无限可能。不仅如此,通过WebAssembly技术,我们还可以将基于Unity等游戏引擎开发的大型游戏快速地移植到Web端。WebAssembly技术现在已经被计划设计成W3C的标准,众多浏览器厂商已经提供了对其MVP版本标准的支持。在Google I/O ......一起来看看 《深入浅出WebAssembly》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码