关于一些编程语言的学习方法和心得

由于本人还算有些编程语言基础,故还跟得上老师进度。通过一个星期的学习发现,编程还是特别注重平时的积累,一定要多敲多练,老师讲的每一个练习一定要搞懂,并且要在不看源代码的情况下独立的敲出来,这样才能达到消化掌握的目的。

编程语言与外语一样,首先是作为一个庞大的学科而建立起来的,之前对其过于轻视。不同的语种,对应java,C++等有着完全不同的使用习惯和内容。就连基于C和C++的软件也有matlab,qt,vc等等不同的版本,虽然if,while等都存在,但使用的方法有着各自不同的区别。就像一门语言的不同方言,听着差不多,但真的去使用还要有一个过程。
    那么,在重视了编程语言的学习态度之后,如何很好的掌握这门语言呢?首先回顾一下我之前的学习方法。第一次接触编程应该是在学校的时候学习C++,完全是按着教材老师在上面讲课我们在下面听,然后把教材给的例子搞懂敲到电脑上。熟练了以后再根据例子做一些改变编自己的程序。这种学习方法为以后埋下了隐患,因为养成了面对一个新的问题先去找相应类似的例子再修改的习惯,极其低效。
    那么如何能够脱开例子独立的完成一段程序或者至少是一个功能呢?我想最重要的有几点:
    1. 了解所有程序共通的基本框架。对于QT来说,就是ui,cpp和头文件之间的关系以及初始定义。
    2. 要能对于几个基本的常用的类及其常用的函数很熟悉。能够熟练运用。比如qpaint,qevent等。
    3. 要能在需要的时候找到相关的类(注意,不是相关的例子),并能够通过QT帮助读懂,知道怎么在程序中使用,并确切的落实下来。
    在搭建一个完整的程序的过程中也要注意:
    a. 由简单到复杂,逐渐增加程序的功能。先搭出基本框架,再在其上添枝加叶。这个过程可以不断的自己做一些小的程序来试,最后整合成一个具有多种功能的完整project。
    b. 也是所有类似的项目共通的,做一件事的时候专心做,比如今天的任务就是里面的一个小功能,那做的时候就不要老想着和其他功能的衔接啊什么的,只做一件事,并且做好。
    说了这么多,我们回过头来看如何达到上述的目标。1很简单,hello world看懂就行,每一本教材的第一章基本都会给出这方面说明。2和3就比较难了,从书中很难快速的达到我们的要求。想想有什么常规的学习手段:
    I. 书本及其后附例子,这无疑是最多人使用的方法。然而看书太慢,而且编程主要还是要会用。而且千万别用电子书,这种严肃的学习一定是要用实体书的。书的作用主要是对这个语言有一个初步的系统了解,并完成要求1,然后在一些和课题很相关的书上又正好有这方面内容的地方(这种可能性极少)仔细翻阅,了解原理。
    II. 网上资源:
    国内个人博客:优秀的个人博客是一个牛人的成长史,看看这些可以少走很多弯路。
    国内论坛:交流经验和问题,共享资源。缺点是里面的水平参差不齐,且找到的问题很多也没有人给出解决方法。可以在上面找找资料。源代码的话最好不要从上面下,可能会被误导。
    国外论坛:这是重头,要想真正学好一门语言,我觉得这很重要。以前没有重视。
    官方网站:多半是一些帮助和下载。
    III. 一个好的软件本身就应该会教你怎么使用它,去学。
    IV. 高校网络可以找到一些优秀的论文。
    确定了基本的学习途径之后我们如何来学习?基本的思路是:先了解基础,再在战斗中学。具体的想法我也只是一个初步构想:
    1)先找最经典的教材,看头几章了解一下这个软件。
    2)搜索优秀的论坛和博客,看看上面有什么好的学习建议。
    3)按照软件的指导来学。
    4)找到常用的类,并看几遍例子,懂了以后抛开例子自己写一段稍加修改的程序。
    5)了解能够被利用的类,在真正用到的时候能知道怎么找出来并会用。
    6)给一些大型程序写注释,时间允许的话自己编一个一样的。
    7)开始着手做项目,先在上述的资源里找类似的以启发灵感避免重复劳动,然后get to work。

时间: 2024-08-10 21:28:41

关于一些编程语言的学习方法和心得的相关文章

51CTO学院2018年年度优秀学员评选活动最亮的仔 之 闲谈学习方法分享篇

本人很少写博客,主要还是文采不行,此次的博客内容主要是回应"51CTO学院2018年年度优秀学员评选活动"的活动内容要求,分享下自己的学习方法和心得,也请各位阅读者口下留情哈,毕竟下面的一些观点和内容都是出于个人的想法,没有任何贬低之意.在开始之前,我想借此机会,感谢51cto提供的学习平台,python课程主讲师de8ug哥(真心钦佩,懂的内容广且深,从视频拍摄中看出他惊人的毅力呀,这么多内容,学习都学到眼花缭乱,更何况出视频的讲师),自动化运维主讲大米老师,不辞辛苦的为各位学员批改

快速上手Linux 玩转典型应用

第1章 课程介绍本章内容会给大家通览本门课程的所有知识点1-1 导学 第2章 Linux简介本节课会带领大家一起来 了解Linux各个发行版历史.介绍Linux的应用领域.讲解Linux的学习方法和心得.2-1 什么是 Linux2-2 Linux能够做什么事情2-3 Linux的学习方法2-4 忘掉 window的所有东西 第3章 CentOs 的安装本节课主要带领大家学习如何通过虚拟机搭建一个Linux Centos的操作系统.并讲解目前比较好的云服务器平台.为后续学习Linux提供环境准备

java入门经验分享——记面向对象先导课程学习感想

选择在暑期学习面向对象先导课程的初衷是为大二下学期面向对象课程做一些铺垫,接触入门java语言.在接触java的过程中,就编程语言的学习方法而言,我从刚入学时的手慌脚乱四处寻求帮助到现在慢慢养成了自己不断寻找困难解决方法的习惯,感觉自己的另一种自学能力--一种计算机工科的实践能力得到了培养,这种自学能力跟学习基础课程理论知识的感觉完全不同,这种需要在实践和动手中得到经验和知识的自学方法与以前理解现成抽象理论概念的自学方法可以说是完全不同了.作为一个偏好理论研究的理科女生,动手实践能力在此之前几乎

高中生的IT之路-自序

近几年来越来越多的人问我关于 高中生要不要读大学.大学选择专业.毕业后的择业问题,索性我不如把我对这几方面的理解写出来,如果有幸能帮助到更多的人,那也算是个人对社会做出了一点贡献. 我高中毕业后并没有进入大学,而是直接进入到社会工作.刚进入社会的时候去餐厅当过服务员,后来又在朋友的帮助下进到一家IT公司进行实习生培训,再后来就正式进入到软件工程师的行业,从刚开始的门外汉通过自学 从实习生成为工程师.高级工程师.项目经理.技术经理,到现在在一家互联网公司任职技术经理的职位并且自己在经营一家餐饮公司

《如何快速且深入的学习一门新技术》读后感

本文是学习颜群的<如何快速且深入的学习一门技术>的一篇记录文章,对方的很多观点和让我很受启发,虽然自己平时对学习方法有些心得,但是真正去总结自己的学习方法却很少.缺少盘点的结果就是任凭本能和学习状态,显然这种方法是不可持续的.为了提升个人或团队的学习效率,如何摸索一套针对技术类型的学习方法是非常值得每个技术人员去探索和总结的. 软件开发正处于快速发展的时代,新技术层出不穷,那么在这个日新月异的互联网时代作为软件开发者,我们应该如何保证自己的技术竞争力?我们今天就来聊一聊,如何快速且深入的学习一

学习方法总结-实习心得

学习方法分享 1.提需求,找bug 上图是一个可以说从无到有的过程,再没有思考和发现这两方面问题时,不会存在后面去解决的方式. 思考问题的存在和发现自己需要什么是很关键的,可以理解为对自己提需求和从自身找bug. 2.多分享,多讨论,多思考 我非常热衷于听他人的分享,我认为这是快速提高的一种方式,很幸运我们团队在分享知识上做的很多. 分享和讨论会让思维发散,期间会有很多灵感去想到一些平常想不到的点. 通过这些不明白的问题,或者学习到他人解决问题的方法,总结沉淀下来会是很大的收获. 3.对JAVA

Matlab心得及学习方法(不断更新)

Matlab心得及学习方法(不断更新) Matlab心得及学习方法(不断更新)P.S. 那些网上转载我的文章不写明出处的傻眼了吧?!老子更新了! 发现现在很多人(找工作的或者读博的)都想要学习或者正在学习Matlab,问我要怎么学习.其实我虽然写Matlab代码的经验还算丰富,但是还不能说是一个很好的Matlab编程人员,这里有一些心得,分享给大家希望对大家有所帮助.关于如何学习Matlab我的学习方法很简单:Matlab是练出来的,而不是看出来的.很多人问我有没有比较好的Matlab教材,我说

编程语言的选择(perl和python)-我的一点心得

相信有很多人初学编程的人会在语言选择困难症.说白了,我认为大多数人都害怕自己选择的语言会被淘汰或者使用不广泛,今天我就来谈谈关于编程语言选择的那点事. 我想拿perl和python来举例说明,因为这两门语言的关系就跟java和c++一样,perl阵营和python阵营都各自有各自的理由. 语言的选择和操作系统的选择很类似,有的人爱用linux有的人爱用windows,至于说到底是linux好还是windows好,谁也说不清.在日常工作中,windows无疑有巨大优势,但是在专业领域,linux反

《统计学习方法》之隐马尔可夫模型的一些心得

首先介绍下隐马尔可夫模型,它是一个时序的概率模型,概念书上有原话,大致的意思是:由一个隐马尔科夫链随机生成的无法观测的状态随机序列,每个状态再产生一个可以观测的随机序列,结合书上的例子,这个状态可以是一个盒子,观测值就是盒子里面取出来的是红球还是白球. 下面是一些定义: Q:所有可能的状态的集合 Q={q1,q2,....,qN}          N是可能的状态数 V:所有可能的观测的集合 V={v1,v2,...vM}            M是可能的观测数 I:长度为T的状态序列