各位师弟师妹,大家好~PHP不是我们专业的本该有的方向。我不知道大家为什么来学习这门语言,也许是自己了解之后喜欢这门语言(我想这种可能在我们专业是挺少的),也许是听守中哥说这门语言简单好学,为了躲避学习Java或者C#/ASP来尝试学习一下这门语言的(也许这个原因是居多的)。但是我想说不管学习哪门语言,认真专注的学习好一门语言,再转其他语言其实就没什么问题了【精一门通百门】。以下,我从四个方面来说一下我对PHP学习的一个建议,大家可以酌情参考,找到一下自己的学习方法:①学习PHP与学习JAVA/C#/ASP等语言,在我们专业有什么区别?②学习PHP之前应该有的技能?③学习PHP的一个建议路线。【在你认真思考过我的话之前,你所看到的应该都是错的,因此这里写的只是一个建议。】
一、学习PHP与学习JAVA/C#/ASP等语言,在我们专业有什么区别?
据我学习PHP的时候了解,在中国高校中是没有任何一个学校有特意开设PHP这门语言的,所以现在PHP的人才市场基本都是一些自学人士亦或者是从培训机构中出来的。当然,这些人学习PHP出于什么目的,我不太清楚,也没有了解过,我想大多数是出于工作吧。但是就和12级、13级一些学习PHP的师兄师姐、同学聊天来说,大部分人选择PHP都是因为学习JAVA的时候坚持不下去,感觉学习Java或者C#这些语言太难了,所以选择了PHP【江湖人称“拍黄片",我其实也是这大部分中的一员,只不过后来发现其实拍片也是一门挺有艺术的活,所以学到了现在】。“没有最好的语言,只有最适合的语言”。
学习Java、C#、ASP这些语言,入门比PHP要难一点,花费的时间相对来说会多一些。似乎自己学习了这些语言的基础很久了,但是还是不知道自己学的东西是什么?自己学习的这些基础能做什么?也许自己能写一下比较简单的小案例了,但是一旦接触一个完整的比较小的项目的时候,还是不知道该从何做起?这是我当初学习Java的一些最大的疑问。学习这些语言只是前期比较繁琐,在后期相对一些东西会比较清晰,也许跟我性格比较大关系,不喜欢干一个长期看不到成效的事,所以在大二第二学期期末的时候,我选择了放弃之前学的东西,选择了PHP。
学习PHP,入门相对比较简单。PHP的框架比较多,开发比较快。特别适合中小型的网站的快速开发。但是在后期想突破,还是会接触到一些比较繁琐的问题,后期的突破感觉没有Java、C#、ASP这些简单。
对于这两种选择的学习,我觉得:对于选择JAVA、c#.net这一类,相当于从基础开始一步一步稳打稳扎的来进行【这种学习方式,好比你建造一栋高楼,从根基开始一步一步检车没有问题的修砌着到顶楼】。而学习PHP,按照我的学习方式:先快速入门,对PHP的整体框架有一个大致了解之后,再回过头来修造基础【这种方式,好比你建造一栋高楼,只要根基自己觉得OK了就开始休这栋楼的大致框架,等大致框架搭建好了,再回来好好的修补填实自己的根基等细节】。两者各有好处,第一种基础比较扎实,稳中求胜,需要足够的耐心;第二种比较容易让人看到自己学习的成效,不至于学习会毫无目标,不知道自己学的是什么,但是前期基础相对不扎实,但是如果等你有大概框架之后回过头来学习基础的时候你却能联想到很多你想不多的东西,第二种方式比较适合我们在校学生,因为我们还有大量的时间去这样快速搭建框架之后再来补基础。
因此,在你没确定学习哪门语言之前,还是先结合自己的性格多考虑一些东西。如果耐心足够好,我个人建议还是学习Java、C#、ASP会好一些,因为学习好这些之后再来学习PHP,你会发现简直简单的不要不要的的;但是如果耐心不是非常足够,学习比较容易产生迷茫期的同学,可以考虑先把PHP学精,打好基础再去考虑其他的【虽然现在各个培训机构大量的培训PHP导致PHP的市场被冲击的也挺大,但是它的需求还是相对比较大的】。
二、学习PHP之前应该有的技能?
这个部分是我自己的一个总结,如果有不同欢迎讨论。我觉得在学习一门语言之前,应该思索具备以下这些技能,学起来回事半功倍。我觉得学习一门语言,没有目标是比较容易迷茫的,而这个目标的定位怎样才是适合自己的?怎样才能更好的达到这个目标?怎样才能突破这个目标?
1)、分析能力是决定你目标的关键
当时我是大二暑假留下了一个月在学校学习PHP的,一开始师兄就扔了个项目给我。当时我是懵逼的...。自己摸索了半个月,都不知道该怎么去做。后来的半个月,我索性每天只花一个小时在项目上,如果一个小时都没有收获,当天的项目时间就结束。那我其他的时间用在什么地方呢?我用来学习基础和从各大网站上去找学习路线,然后分析这些学习路线。当时给自己的定的目标是:我要解决最基本的实习问题,那么达到这个目标我需要具备那些技能?我自己列了一下,然后根据类比的方法去分析【类比方法,我会在另一篇博文中写出来】:那些是PHP基础?那些是PHP的进阶?那些是PHP的高级部分?对于基础:那些是PHP最本质的?那些是PHP最常用的【”数据库的操作“--当时我为了记住这些最常用的,我每天中午会把这些最常用的代码敲个10遍再睡觉】?利用这些基础我能做一个什么东西出来?
2)、良好的笔记习惯是帮助你梳理目标的好方法,良好的习惯是一个好桥梁
这一点,我自己当初没有做好,但是到现在来比较吃亏的一件事。因为后面做项目的时候即使出现错误,其实最本质的原因大部分都是基础过程中你遇到的。因此,从最开始就有一个良好的整理笔记习惯我觉得是非常好的,在此也推荐几款记笔记的软件给大家:【为知笔记--可以同步到自己的博客,如果有博客的话这个是你的不二之选(没有博客的同学,推荐大家申请一个博客);印象笔记(之前我也用过,感觉也是不错的);有道云笔记...这些软件没有说那个是最好,自己用着合适顺心就OK 了,或者大家可以几个一起使用也行】
对于习惯,我只强调一点:学会思考,学会提问。不管你最终问的问题多么的幼稚,但是希望在你问问题之前先自己思考过再问,以下有几种问问题的方法,是我之前在一些PHP交流群中遇到的(以配置PHP的开发环境为例),发出来给大家参考一下:
①不用脑型问问题:朋友在吗?能告诉我一下怎么配置PHP环境吗?【一开始的时候我还挺乐意帮这种人解决问题,毕竟有人问你问题还是觉得...卧槽,有人问我问题,我要脱离学渣。慢慢我的回答只是一个链接:
https://www.google.com 或者
http://www.baidu.com ,你先自己查一下吧,现在没时间~一次两次我可以当做是复习旧知识,告诉你,但是次数多了,我都能背下来了,请问我回答你的问题我能有什么收获呢?】
②不懂提问型:朋友在吗?我自己尝试配置了一下PHP环境遇到了点问题,你能告诉我怎么配置吗?【额(⊙o⊙)…你可以先告诉我你遇到的是什么问题吗?你什么都不说,还要我自己问你遇到什么问题啊?妈呀,你老大啦?你问问题还是我求你问问题啊?】
③我觉得比较合理的提问:朋友在吗?我配置PHP环境的时候遇到了点问题,我是这么做的...;但是现在报错...;我觉得有可能是...的问题,但是我谷歌/百度了按照方法没解决,能帮我看看是什么原因,指点一下吗?
以上几种问问题的方式,我比较推荐第三种,原因有:
①、至少这样的问问题证明你思考了;
②、跟着你的问题,我思考了一遍,我有了进步;
③、态度好、心态好,我们是在相互学习,相互进步。综上,我愿意帮你~
如果这样都没有人帮你,可能你的这个问题真的太幼稚了,网上真的一找就一堆答案的;或者别人真没空;最差的情况就是你找的这个人不愿意帮人,再找找解决方案,再问问其他人。
3)、“找错”能力很重要
前期学习的时候,肯定会遇到很多错误,各种bug,各种莫名其妙的问题。各种语法错误,各种逻辑错误导致最后的效果不是自己要的;很多人也正是在这里被难倒的~因为学了一堆基础,遇到了一堆bug,心里懵逼ing,这个时候就会有放弃念头产生了。但是这个过程不管是谁刚开始学习的时候我想都是会遇到的,而这个过程我自己也不知道该怎么去避免,我这里也只能给一些建议,去减短这个痛苦期:那就是学会“找错”,因为只要你学会前面两点,我想解决问题应该是不大的。但是很多时候,自己根本就不知道错在什么地方?所以不知道怎么去提问,不知道怎么去搜索你的问题。因此,我推荐大家在学习基础知识的时候,在学习基础知识最常用部分的时候:
①多去了解这么语言的调错方法,别管这个方法是聪明还是笨【因为在网上找这些方法的时候,经常会有一些人说这个方法不好什么鬼的,但是记住:不管黑猫白猫抓到老鼠就是好猫】~
②多去敲代码,多去思考你写的代码,多去改你自己写的代码【只有这样你才能经常遇到bug,而解决bug思维和能力是给你后面深入学习的一个很关键的能力】
对于学习编程的人,这个过程我觉得是最痛苦、最迷茫的【我当时经历这个过程就给自己说:抛开所有对编程的成见,如果一个月之后学习编程还这么痛苦,老子就转行回家耕田去了。奈何农民伯伯嫌弃我,我熬过了这一个月】,现在我也只能说:坚强孩子,别哭~挺过这个过程,你就看见新大陆了!
分享一本电子书:PHP-Debug-Manual-public.pdf:
http://pan.baidu.com/s/1geEMjAF【PHP的调错技巧,也许你不一定全部看的懂,只需要看你要看的即可!记住,你现在要有目的性的去学习,不要想什么都啃,一口啃不成大胖子的,有目的性的去学了你要的,等有时间再回来学你没学到的】
4)、“良好的资源”是相对的捷径
搜索:
基础:
视频是最快入门的学习资源,但是我的一个建议是:视频在你入门之后永远只能是你的辅助资料,不要太依赖它。
学习PHP之前,大家需要掌握HTML+CSS+简单的JS【个人建议,随着现在互联网的发展,大家可以直接学习HTML5和CSS3,资源的话在慕课网上就有一大堆,对于入门是够了的】
基础工具网站:
还是那句话:视频是最快的入门方法,但是不建议大家过于依赖它!还有看视频的时候希望大家有目的的去看:例如,我看项目的视频:着重的看是老师是如何从无到有来构思一个项目的?思路是如何的?至于项目的实现我觉得如果一边看一边做,很费时,而且会被限制住思维;看基础视频:着重看基础知识,着重看老师的调错学习技巧,着重去联想自己学过的东西和该基础的联系和运用。当然这些说起来简单,做起来难,我现在也是在一步一步中去养成这个习惯。贵在坚持!
5)、“兴趣”是最大的老师
也许你会说,学习编程本来就没什么兴趣,所以觉得我这个是在扯淡。但是,我想说兴趣真的是可以培养的,你不妨看完我这段废话之后自己尝试一下,因为当学习一门语言给你带来成就感的时候,你会慢慢爱上它。我最开始的时候,连做梦都没想过我会接触编程这个鬼东西。但是无奈,我还是被分来这个专业了,既来之则安之。我尝试了几乎我们专业所有开设的语言,但是都是一知半解就退下来了,终其原因都是因为,我在这门语言里面没有找到我的动力和兴趣所在。一开始我学习PHP基础的时候,我也是跟大家一样,输出个什么helloworld,什么冒泡排序,什么水仙花数。但是
我本来就不喜欢这个的,你再让我来搞这个确定合适吗?
案例一:
随着学习,也许慢慢有点强迫症,从网上下载很多视频都是这样的
,我特别讨厌重复的东西。之前学习Java的时候我都是一个个慢慢的重命名修改过来的,后来我学习到PHP文件操作的时候,我突然想自己写一个程序来解决这个问题,于是我慢慢开始分析:①我要做的是什么?--重命名;②我做的东西本质涉及到什么?--字符串的截取及文件的操作;....就这样,我一路写了5个版本,一直慢慢改善慢慢改善。直到现在,像这种形式的重命名都不用我手动的去改了,都是靠程序帮我解决的。短短的几十行代码就能帮你解决你的问题,也许你从网上下一个软件也能做到,但是自己做出来的感觉是不一样的。【代码真的不多:
http://pan.baidu.com/s/1bKwaPC 】
案例二:
不知道大家用什么软件播放学习视频的?【推荐大家用“完美者解码”,非常清晰,能播放的格式非常多,至少我现在发现播放的格式是比暴风这些什么要多的】用完美者解码播放视频的时候,可以直接导入一个文件夹,然后里面所有的视频就可以在播放列表中了。但是后来遇到了一个问题,下载一些项目视频的时候,并不是所有的视频文件都放在一个文件夹中的,难道我要一个一个把视频文件找出来剪切/复制-粘贴到这个文件中吗?我能不能用代码搞定呢?我又开始分析:①我要做什么?--移动文件;②怎么做?--设定识别的文件后缀名,然后遍历目录,如果该文件的后缀和我表单设定的文件后缀相同就移动文件到我设定好的目录中【这个demo的代码由于之前电脑坏了,所以丢了。有兴趣和同样有强迫症的朋友可以试试】
后来学习数据库操作的时候,又用数据库的知识来管理自己的资源链接。
培养兴趣的最好办法就是,利用基础知识,解决你生活中切实存在的问题,不要想解决多复杂的。尽可能的去简化自己的生活,在这个过程中,你收获的是:基础知识;基础知识的应用;思维的突破;学习的成就感;学习的动力。如果大家不太喜欢编程,但是又不讨厌的,请抛开你内心对编程的成见,试试这个方法,也许你对发现编程并不是这么讨厌和难学,并不是这么乏味和无聊。
三、PHP学习路线建议
①学习PHP之前,自己搭建PHP环境,集成的非集成的都试试;大概了解PHP的运行原理--这些对于你后面找错有帮助--即:一个PHP代码,是经历了一个什么样的过程才被你看到的?
④学习了PHP的基础语法、学习了PHP的数据库操作,建议大家就可以开始上手学习框架的“应用”了,因为PHP开发大多数都是用框架的,大家可以一边学系基础,一边学习用框架--先学会用,在学习应用的时候,你可以不必追求的那么深,等学习路线学到框架,你再细致的去研究框架的原理、MVC那些都不迟~而且在你会用了的前提下去学习原理,你会更加容易懂。
⑤多去接触学习一下你所在语言的新知识:例如最近微信开发很火,试试用PHP去开发微信呗~例如现在H5这么火,尝试H5和PHP结合做个自己的博客呗~这样你才能与时俱进。
⑥最后也是我觉得最重要,学习之余,多学学表达和为人处世:做的再好,无法通过语言,不懂为人处世,不懂将自己的好展现出来并被人接受上面所有的都是扯淡
寄语
我想等你真的入门了,也许像后面你所需要什么东西才能突破?你的瓶颈期是什么你应该都具备能力去知道了......什么设计模式、服务器这一块的东西,你也应该都知道自己要学习什么了,在此我就不多说了。如果上面的分享链接失效了,或者想要其他资源的也可以加我微信给我留言【加的时候麻烦附上你的大名,而且我想说的是我是个渣,别对我的资源报太大期望】。对于资源,本来想全部分享给大家的,但是想想算了,不要像我,收集多了就成收集爱好者了。希望大家可以有目的性的找我要资源~同时如果大家是信息专业的,希望大家多多支持Leaders工作室,我们想做的是资源整合,具体的也不是三言两语就说的清的,虽然有人说这很理想,但是我们坚信当每一个人都愿意去为理想而努力的时候,理想就不在是理想了,我们就是这样一群人,不撞到头破血流,绝不回头,一群不愿意被体制化的人。希望我大信息专业能越做越好,希望Leaders工作室的师弟师妹们能真正将工作室做起来,做强做大。让我们专业是学院的旗帜,让工作室是专业的旗帜。
- aiku给你们最真心地学习建议--转
aiku给你们最真心地学习建议: 以前我最开始的就搞驱动,后来发现要熟悉hal层,接着就硬着看hal代码,第一次看,很剧痛,慢慢的,看习惯了,就好了,后来发现,搞驱动的人,不懂hal,很多时候就定位 ...
- C++学习建议
C++学习建议 C++缺点之一,是相对许多语言复杂,而且难学难精.许多人说学习C语言只需一本K&R<C程序设计语言>即可,但C++书籍却是多不胜数.我是从C进入C++,皆是靠阅读自 ...
- 50条大牛C++编程开发学习建议
每个从事C++开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少.本文就给出了网上流传的对C++编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅限于C++学习者)如果真 ...
- 机器学习(3)- 学习建议<误差出现如何解决?>
根据Andrew Ng在斯坦福的<机器学习>视频做笔记,已经通过李航<统计学习方法>获得的知识不赘述,仅列出提纲. 1 学习建议 误差太大,如何改进? 使用更多的训练样本→解决 ...
- 新手的java学习建议
前言 进入IT领域,就像进入大海—浩瀚而广阔.然而,它又很容易让人迷茫,不知所措.所以,在IT的海洋中,找好一艘船特别重要,这艘船带你前进.减少迷失.这艘船或许是一个人,或一本书,又或许是一篇文章. ...
- C语言学习建议!8年编程开发经验
C语言是几乎所有编程语言的先驱与灵感的来源,Perl,PHP,Python和Ruby都是用它写的,同样什么Microsoft Windows,Mac OS X,还有GNU/Linu这些操作系统,都是靠 ...
- Neo4j/cypher学习笔记与学习建议
简介 本笔记的主要内容是 cypher 查询语言的编写与使用. 笔记主要整理自w3cschool上的neo4j教程以及Neo4j中文网所提供的cypher中文文档,此外还包括少量从其他个人博客与官方手 ...
- Linux测试环境搭建的学习建议
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...
- Erlang之父的学习历史及学习建议
当我开始学习编程的时候(1967年),我可以在 FORTRAN 和(传说中的)Algol 之间选择,不过没有任何人了解 Algol,所以我选择了 FORTRAN. 在我最早学习编程的时候,我的编程周期 ...
随机推荐
- gcd 最小公约数
int gcd(int a, int b) { ? a : gcd(b, a % b); }
- MAGENTA: Meta-Analysis Gene-set Enrichment of variaNT Associations
MAGENTA是一款计算工具,利用全基因组遗传数据,计算预先设定的涉及生物过程或者功能性基因集在遗传相关性的富集程度.开发的目的是分析基因型不是现成的数据集,比如大型的全基因组关联荟萃分析.在以下两种 ...
- 连做两场goodbye2016是怎样的体验.....
挖个坑 ..... 听q巨随机化A题和最后的splay/set 还有另外一位神犇的最大回文子矩阵.... 感觉真的好爽啊,神犇能把很难的题目转化为简单的模型----- ///跨年打码是怎样一种体 ...
- Chrome 自动填充的表单是淡黄色的背景,有方法自定义吗
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; }
- js自定义对象
一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascrip ...
- 日期函数(sql)
SQL 标量函数----->日期函数 day() .month().year().2009年02月23日 星期一 11:30 SQL 标量函数----->日期函数 day() .month ...
- SPFA+寻路(行路难,洛谷2832)
啊啊啊这道难题总算是做出来了,首先是帅比浮云的题解发出来一下:http://www.cnblogs.com/fuyun-boy/p/5922742.html 原题目地址:https://www.luo ...
- Java hashCode() 和 equals()的若干问题
原文:http://www.cnblogs.com/skywang12345/p/3324958.html 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() ...
- Windows cmd命令搜索顺序
一.在cmd中执行一个不带后缀的命令(不带路径),首先会在无后缀的系统命令(如cd.dir等)中搜索,如果找到了就执行该命令, (dir是无后缀的系统命令所以优先执行,无视当前目录中的dir.exe) ...
- MariaDB kill命令
MariaDB的KILL命令不只可以杀掉连接,而且可以只杀掉某连接当前的SQL,而不断开连接.KILL QUERY thread_id;kill thread_id可以杀掉当前的连接,而kill QU ...