学习一门语言难在什么地方?

摘要:

大二了,专业开了的编程语言我都接触过,学习过!到最后样样都知道,但是样样都不精,每天好像很努力的学,最后换来的是扯淡!从大一开始,我就一直在探索什么样的 学习方式才是适合自己的呢?这个暑假又看了一次PHP基础的视频,基础部分知识每个视频都差不多,但是发现视频里面有些编程经验非常值得学习,现在就学习编程语言谈一下自己的拙见!我要谈论的不是那种语言好,而是一种思维和学习方法。欢迎有不同见解,能让我们彼此都提高,让我们的学习方法有更好的提升!【写的比较冲忙,所以文章内有些举的例子有点暴力,有暴力倾向的人请自动频闭我举的如何成为一个杀手的例子】

问题1:什么是编程?

☛编程=变量【各种变量类型】+运算【四则运算符、逻辑运算符、三目运算符和位运算符...】+控制【各种控制语句+实现语句...】==》其本质就是“说话”/描述问题
任何一个语言的编程,都离不开上面这三个要素!掌握这三个要素你就入门了,你就可以开始做东西了!【注意这里是掌握,不是熟练!熟练=基础+经验+练习】
☺变量:4种基本类型【整型、浮点、字符、布尔】+2种复合类型【数组、对象】+2种特殊类型【资源、NULL】
☺运算符
·  逻辑运算符 && || or and !
·  赋值运算符 +=  -= *= %= /= &= %=  ^= >>= <<= 
·  位运算符  & | ^  << >>
·  三元运算符  ? :        (给个判断呗) ? (判断真了去这里)
☺控制可以通过控制结构+函数/方法+控制的工具【文件、数据库...】
控制结构:
      顺序结构
      选择结构【单分支:if;双分支:if..else..; 多分支:if...elseif..else switch  case: break】
      循环结构【for while foreach】
学习“变量”+“运算”+“控制”,可以采取由大到小的模式来学习:【拿变量来举例】
     大:这个模块有哪几种类型?这个模块的作用是什么?这个模块我们需要关注哪些?
大:变量有8中类型,作用就是相当于一个盒子,用于存放数据,要注意不同数据类型的转换,各种数据类型的初始化,各种数据类型相互之间的运算
【而运算又涉及到了第二模块运算的知识,所以运算这块东西最好放在第一模块最后来学习】....等等需要关注的东西!
★【一些模块可能有它自己需要特别注意的模块】对于变量这个模块来说还要明白变量的一个作用域问题,控制模块关于函数要弄明白函数的调用前后程序的执行主权问
题,这些就是各个模块所特有的一些需要关注的东西了,你分的模块不同,那么关注点自然也就不同 小:这个模块中每个类型又是什么?这个类型是怎么定义/表示/声明的?什么时候用?如何使用?常用的一些操作是什么?【依然拿PHP变量这个模块来举例】 小:PHP中变量的8种类型,每一种类型就不详细列举了【其中数组这个类型非常重要,就拿数组来讲!】。
数组这个类型是复合类型,它的定义是$arr = array() 这样就定义了一个数组;
什么时候用呢?数组本身是:一类数据类型相同的数据集合体
但是PHP是弱类型语言,所以我们可以把数组理解为:它里面的每一个元素就又可以当做是一个变量,而所谓的多维数组其本质就是一维数组的重复嵌套
所以数组什么时候用呢?就是在需要存储集合类型的数据时候用来存放这些乱七八糟的东西的【只是美其名个他定义了一个类型叫数组而已】。
数组又可以分为2小类,而这两类的使用又是相似的!
常用的操作有哪些呢?其实无非就增、删、改、查
【每个操作又可分为细小的操作--
拿查这个操作来举例:有文化点的说法就是:数组的元素的访问,数组的遍历
--如果有人不懂访问、遍历是什么意思,可以理解为通过一种方式把所有东西都找出来,举个例子就是通过“族谱”我们可以找到你“爸”这种方式叫访问,
--我们还可以把你所有祖宗到现在你这一辈的人员名字按不同方式全部找出来,这种方式叫遍历!
而这里“族谱”当然就是外部工具,当然这里的外部工具又要用到一些基本函数和控制结构同理建议放本小模块的最后面来学习】,
而这些操作又是如何使用呢?通过函数+控制结构等等... 就这样先分大类,再分小类来学习!
然后每一个小类又可以按照3WH的模式是来学习【3WH是我同学告诉给我的,我觉的总结的非常好,即:WHAT WHEN WHY HOW,而每一个HOW里面又可以细分为3WH模式】 ★★★编程就是说话,万变不离其中,唯一不同就是你描述这个问题的方式可能有很多不同,而这个方式取决于你的:数学功底+逻辑思维+想象思维...等等思维! 1. 例如:输出100以内,是3的倍数的就用A代替,是5的倍数就用B代替,是3、5的倍数就用C代替! ☛☛数学思维不好的人代码: if($i%3=0 && $i%5=0 ) {echo ‘C’;} elseif( $i%3 ){echo ‘A’;} elseif($i%5=0) {echo ‘B’} ☛☛数学思维好的人的代码: if($i%15=0 ) {echo ‘C’;} elseif( $i%3 ){echo ‘A’;} elseif($i%5=0) {echo ‘B’}
2.再举个例子[面试题]:$a = 5; $b = 3;要求按照下面两种方式交换$a和$b的值
(1)引用第三个变量,交换:$temp = $a; $a = $b; $b = $temp;☛☛数学思维不差的人都能做出来
(2)不允许引用第三个变量,交换a,b的值:$a = $a+$b; $b = $a - $b; $a = $a - $b;☛☛数学思维灵活的人做的出来

所以"思维"是非常重要的。也就是四个字:“活学活用”

 

问题2:怎么学习?--思考的学习

☛看视频不能单纯看视频!不能单纯看变量、运算、控制,要学会思考着去看这些东西!【WHAT WHY WHEN HOW[再次感慨一下,这个东西总结的太好了,表达了我一直吧表达不出来的心声] 】
   例如看是视频学习变量时候,在视频中没讲之前,你要先自己想想,然后带着问题去看:
      什么是变量?
为什么要用变量? 有哪些变量类型? 那些变量类型是特别重要的呢? 有什么不同?--WHAT 使用条件?——WHY
如何使用--HOW 怎么定义呢?--WHAT 怎么使用【例如数组[key + value],使用数组关键是“键”】? ——HOW[关键字+变量名]--HOW里面又可以分【3W+H是你想东西和看待问题的一个思路和方式,不一定说严格遵守每一步】 当你思考了并理解了这些问题,其实你只需要配合你这门语言的帮助手册就可以写编程了【写程序无非就是调用别人写的东西来实现自己的一些逻辑!】 我要说一点的是:
如果你重复看一个视频来学习知识,但是每次重看都只是在复习旧知识的话,这不是在学习,而是在浪费时间!纯粹的浪费时间,因为知识点这种东西,只要不常用很快就会被遗忘,当你遗忘了
这个知识点,你又回来看视频,那么就相当于你前面学习的那段时间是被你浪费掉了的!这样的学习不叫学习,叫“炒冷饭”,也叫瞎忙!
我觉得,世上最浪费时间的事不是无所事事,而是瞎忙!【无所事事至少还得到休息和玩了,瞎忙得不偿失】
只有将学东西的转化为一种思想、经验这些东西,在你写代码的时候时刻去思索注意这些经验,那么久而久之思想想多了就会变成你写代码的一种思路,别人的经验就会变成你的经验,这样当你
每写一次代码的时候,你就是在学习一次,这样久而久之你会记得大部分东西!【当然我不排除有人是码农,一味只是敲代码而无思考】

问题3:如何理解:思想是关键,语言是一个工具和一个技能

   当我们按照上面的学习方式学习了,我们其实就入门了!入门只是说你有能力去做东西了,但是到底能不能干的下来?你能干什么,只是取决与你的想象力,取决于你的思维,取决于你的心态,
取决于你的活学活用程度! 语言只是一种语法,一种工具!
学一门语言,只要我们学会了这种工具的规则,那么我们就已经学会了一门语言了!而学会和运用时两回事,例如:我们把学语言这个技能,当成是“杀人”这个技能【一时想不到其他的比喻】
那么PHPer就是相当于一个“杀手”!想要当一个杀手,首先得会使用一样趁手的工具吧,【工具有很多:什么刀、枪、棍、棒...】而杀手的这个“工具”就是众多编程语言【JAVA、PHP、ASP..】
中的具体的一种语言!当我们把这个工具【“刀”】给玩熟了,我们就入门了【证明你已经有做杀手的资格了,但是你依然不是一个杀手,因为你只玩熟了这个工具就去杀人,如果碰到高手的话那么
你可能会百分百被空手接白刃】,当我们掌握了规则,入了门,那么我们就需要去积累经验,不断的练习如何和其他的工具一起搭配使用,不断的去将基础打扎实并把它们活学活用出来,在这个过
程里面才是最艰难的时刻!最艰难的是你入门以后到成为一门语言大神的这个过程【额,依然拿杀手话题来举例吧:现在你已经会玩到刀了,那么下一步该干什么呢?如果一开始就去杀人,被打了
可能会打击到你的信心,所以接下来你不是该去杀人,而是该去练习杀猪,通过杀猪掌握“猪”和“人”的共同特点【--编程里边这个过程就是通过小项目来练手,掌握大项目的要领,当然这个过程
有人带是最好了,因为你可能会遇到非常多的bug!】当然在你杀猪这个过程里面,你还不能忘记学习一些三脚猫功夫,学习一下步法,万一打不过可以逃嘛!而你懂得这些三脚猫功夫,懂得这些
身法,会让你执行任务事半功倍【--这个过程在编程里面及时一些拔高工具的学习,例如数据库,让你可以利用PHP做出更多东西,学习一下一些必备的工具,学一个好的编辑器,形成一个好的编
程风格...等】在你通过不断练习杀猪过程中,你会慢慢知道:哦,原来杀猪想要一刀致命有这些方法:一刀砍掉猪头,一刀KO猪心...,那么杀人应该也是类似的!等你下次真的开始去kill
person的时候,你就知道:哦,我们要一刀K掉这个扑街的“猪头”,或者一刀K掉他的“猪心”,但是呢,K掉猪脑袋和猪心也是有技巧的,你需要不断杀猪,杀千千万万只猪,各种各样的猪,等你闭
着眼都能达到“庖丁解牛”的程度来解猪了,那么杀人也是类似咯,而当你熟练掌握杀人技巧,你想怎么干掉你的“情敌”干掉你不爽的人,干掉....还不简单吗?
【--而最后这个过程在编程中叫做:报错-改错-再报-再改....冤冤相报何时了!】,那么等你已经非常熟悉杀猪这个技能了,让你重新学习一下杀牛这个技能,你还会觉得难吗?你只需要知道牛
的身体结构,那么你杀牛的境界依然能很快达到杀猪的境界--所以编程有句话:一门精,百门通!】 所以,学一门语言:入门so easy,坚持每一天的“杀猪生活”就不易了! 最后,在这个开源的时代,我们的学习也要开源,要多和别人交流!产生思想的火花,这样你的兴趣,你的热情,你的学习效率....才不会逐渐降低!

问题4:什么是学会了?

我觉得如何检测你自己是不是把一个知识学会了呢?最简单也是最好的方法就是:你能把你学到的东西讲出来给别人听!这样做有两个几个好处:
1)首先,最明显的就是:我讲都会讲了,肯定是理解没什么大问题啦
2)其次,万一理解错了,听的那个人也许会发现问题,能帮你指正出来
3)再次,万一你们两擦出点火花了该多好!【当然这个是思想上的火花,思想的碰撞决定你的高度】
4)锻炼你的口才能力【如果你想一辈子做个静静的码农,可以选择自己会做了就可以了】
你看了这个知识点,只能说明你知道了这个知识点;你看了又能做出来了,仅能说明你懂了这个知识点了;你会做了也会讲了,说明你掌握了这个
知识点,你理解了!

问题5:你该怎么问别人问题?

我是一个不喜欢问人问题的人,遇到问题,喜欢钻牛角,所以很多时候,一个很简单的问题总被我纠结老半天,最后还成功把自己给绕晕了!这真不是
一个好习惯,我也在改正这个习惯!但是遇到问题,不要自己什么想法都没有就跑去问别人,这是一种对自己学习极度不负责的行为,也是间接浪费着
别人时间的行为!我觉得:至少你问问题,你总要清楚
1)遇到的这个问题是什么意思?
2)这个问题你是哪里不懂?【不要问别人的时候,别人跟你说这个设计到HTTP协议的知识,哦,你不懂的HTTP协议是个什么东西?这个是数据库
方面的问题,哦,什么是数据库?.....问问题也要问个痛快:我这个问题是...,我觉得。。【自己百度谷歌之后,你自己的看法是什么】,我现在
还有这个部分不懂。那么别人就知道:哦,你前面这几个部分哪里对了,哪里错了,哪里理解的还是非常到位,还有那些部分是需要详细点跟你解释的】
--问问题也是帮助别人复习一遍知识,这个是必然的!但是不要总拿自己毫无见解的问题去问人,这种月经题【几乎是每个月问一次,类型相同,知识
点相同...几乎跟来月经一样了,都快成习惯了!】,要学会自己思考,总结。事不过三,过了三次,当你再问,你不觉得不好意思,别人也会感到烦的!
3)·当然有的人可能是百度、谷歌了还是依然一点也不知道,那么我们问别人的时候应该注意,把你的问题理顺思路。--我是弄完哪一步就报这个BUG
了,我该从什么角度去思考这个问题呢?或者应该查哪方面的知识点?【不要问别人怎么解决,直接问别人怎么解决这样的问问题就类似:你病了不能吃
饭,你说“麻烦你把饭嚼烂吐我嘴里,谢谢!”,你应该说:“麻烦你帮我想个办法,我要怎么才能吃到饭?”--后一个问的是思路,前一个问的是答案!
遇到问题,往往自己解决才是记忆最深刻的,直接告诉你答案的不是好人,往往是嫌你烦或者是不想让你超越他/她的人!问到了思路,再自己去尝试按
照这个思路去解决一次!这样你才是真的懂了这个问题是什么,你问别人的时候别人才会愿意帮助你,才会愿意跟你组队一起学习,毕竟组队求得是共赢,
没人愿意一味付出得不到回报!共同学习能大大的提高你自己的学习效率】
posted @ 2015-07-22 21:58  L_M_S  阅读(551)  评论(0编辑  收藏  举报