热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习编程语言最好的方法是什么

在问答|我适合做软件开发吗一文中,列出了当时汇总的7个问题,其中“我是否适合做软件开发”、“怎样开始行动”、“学哪种语言”这个问题都聊过了,这次我们来谈谈怎么学习的问题。记得曾经在我

问答 | 我适合做软件开发吗一文中,列出了当时汇总的7个问题,其中“我是否适合做软件开发”、“怎样开始行动”、“学哪种语言”这个问题都聊过了,这次我们来谈谈怎么学习的问题。

记得曾经在我的微信公众号“程序视界”发布过一篇题为“怎样新学一门技术的文章”,里面讲了很多东西,现在看看也还有价值,推荐一下。这次呢,我想说的和那篇文章不一样,主要从下面两点来谈:

  1. 学习方法
  2. 效果度量

什么学习方法适合我?

知乎上有一个问题——学习编程语言最好的方法是什么,有很多人关注。

赞同最多的答案是:猛敲代码。亲,这是最佳答案。

赞同第二多的答案如下:

Miguel de Icaza大大在访谈里说:我了解到C#这门新语言觉得不错,所以为了充分学习它,我写了个C#编译器⋯<–这就是Mono项目的起源。

Evan Phoenix大大在访谈里说:我在做项目的时候学习Ruby觉得很有趣,于是我鼓捣鼓捣弄出了一个Ruby解释器⋯<–这是Rubinus项目的起源。

孟岩有一篇文章——快速掌握一个语言最常用的50%,感兴趣的也可以看看。

说了这么多,然而它们适合你吗?

不见得!

每个人都有自己独特的学习模式,我们要做的第一件事,就是发现自己的学习模式。

比如有的人喜欢边看书边写代码,学一节就做做小练习,学一章就来个综合点儿的练习,争取能覆盖大部分语法和知识点;

比如有的人就喜欢先通览一遍教材,最后才挑感兴趣的部分写点儿代码练习一下,然后找一个熟悉的需求来实现一下,对用到的部分反复研究;

比如有的人就只是看书、看视频、看博客,全都看个遍,始终不动手,直到做实际项目时才开始写代码;比如那几个大牛,学一门语言就要鼓捣几个编译器;

比如我,现在的习惯是边学边记笔记,学完一个主题就设计一个练习,有新体会就记下来,抽空就把笔记整理成博客发布……

你一定可以找到自己的学习方式,别人的经验,不一定适合你。唯一可以肯定的是:学习编程语言,学习技术,一定要多练习,练习,练习,再练习,没有代码量,一切都是扯淡

那么,问题来了,怎么才能找到适合自己的方式呢?想想你中学怎么学习的、大学怎么学习的、空闲时间感兴趣的东西怎么学习的,分析这些过往的学习经历,有助于你找到自己的学习方式。

除了自我分析,还可以找一个教练。教练的作用就是帮助你发现自己的学习方式。这其实也是老师的作用、教育的作用。教育的作用就应该是引导我们发现自己的学习模式。所以林格说,学习是不用教的。我们不必拿别人的学习方式往自己身上套,但可以请别人帮助我们发现自己,因为有时我们确实会因为视角的原因而陷入迷途却无法自我发现,有经验的教练可以看到我们的尝试不对,他可以点一下我们,启发我们自己找到方向。所以,从这个意义上讲,向别人请教是可行的。请记住,好的教练(老师)不会给你灌输1+1=2,他会引导你自己去寻找答案并让你体会到成就感。

自己的学习方式,最大的特点就是适合自己,对自己来讲效果较好。所以,通过对效果的度量,就可以确认当下的学习方式是否适合自己,这是确认是否找发现了自己的学习方式的通用方法

那怎么度量效果呢?接下来看。

学习效果怎么度量?

大部分人都能感受自己的情绪、感觉自己的感受,比如你今天学习是障碍重重很吃力,还是不断体会到原来如此果真如此,后者的情况就说明你走对了路子,说明你正势如破竹地前进。

体会自己的感受,如果觉得顺利、兴奋,那基本上就可以说明你走在正确的路上,你的学习方式符合你自身的具体情况

还有一种度量方式,是从客观效果来看的:在一个时间盒内,评估自己的进度与平均水平的差距。比如学习《the C Programing Language》,可以了解别人花多长时间掌握了基本语法,与自己比较。

至于怎样获悉别人的学习情况,有两种方式,一种是加入相关社群,比如QQ群、微信群,问别人的学习经历和所花的时间;另一种是考察学校或职业培训机构的课程设置,他们给一门技术设定的课时和目标是很好的参考——虽然他们往往用错误的、整齐划一的灌输的方式来进行教育,但课程的设置大部分都是经过评估的,是相对合理的。

排除智力因素,大部分人学习一门技术,应该在某个时间范围内达到特定的目标。这是我们说学习效果可以衡量的前提。


Ok,来回顾一下吧。

想让别人提供一种灵丹妙药式的学习方法帮助自己打通任督二脉的想法是应该摒弃的,那些声称自己发现了适合所有人的学习方法的“大师”基本上都是江湖骗子,他们只是想通过推销自己的方法赚迷途羔羊的钱或者等价物,别信广告,要看疗效。

一句话总结:设定目标,用自己的方式去实现,这就是我们学习一门技术的指导原则。


相关阅读:

  • 问答 | 我适合做软件开发吗
  • 怎样新学一门技术的文章

更多文章请关注我的微信订阅号“程序视界”(programmer_sight)或“漫谈程序员”专栏。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 测绘程序设计Excel度分秒转换模板附代码超实用版
    本文介绍了测绘程序设计Excel度分秒转换模板附代码超实用版的相关知识,包括准备工作、编写表达式和注意事项。在实际工作中,将GPS实测的经纬度度转换为度分秒是常见需求,本文提供了在Excel中快速进行转换的方法,以提高工作效率。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
author-avatar
kobe0390
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有