php初学者怎么提升自己,初学者如何高效学习一门编程语言?
首先谢邀。既然是为初学者所写,那么,我们首先需要进行的一个分辨是:TA是怎样的初学者?没有任何编程经验?有其他语言方面的编程经验,但没有接触过这门语言?针对不同类型的初学者,显然其学习的途径和侧重点,还是会略有所不同的。这篇文章所针对的,主要是一些共性的方法和技巧。亮独观其大略
《魏略》记载,诸葛亮在荆州,与石广元、徐元直、孟公威俱游学,“三人务于精熟,而亮独观其大略。”简简单单的一句话,其实正是在学习方法上,诸葛亮比其他人的高明所在。那回到编程语言,什么又是编程语言的“大略”呢?我个人觉得,其核心就是:
了解清楚这个语言“当前”的应用生态
一门语言能不能用在很多不同的领域?除了极少数专有化语言外,很多语言都可堪此任。
但“能不能用在”,和“是不是已经用在”,却是两个截然不同的问题。比如说,能不能用C++来写机器学习中所需要用的各种程序(脚本)?答案当然是可以的,但业界是不是在大面积的用?情况并不乐观,Python仍然是这个领域的“第一语言”。为什么?这其实就是一个生态的问题。在Python下,机器学习所需要的各种类库,成熟而完整,因此,无论是学习者,还是应用者,可以快速的进入到状态,并完成手头的工作。甚至于,因为Python2所构建的这个生态太成熟了,从而导致了整个业界,从Python2切换到Python3的过程,痛苦而又漫长。所以,作为一个初学者,在学习的一开始,就去“打听”一下(事实上,我觉得老师的作用,也应该在这里),你所要学习的这门语言,现在一般都拿来干什么,并且是不是和你想学习的方向(哪怕只有一个模糊的概念),在目标上高度契合,我觉得是最紧要和事半功倍的事情了,能为你的后期学习,节约太多的时间,从而少走很多的弯路。工欲善其事,必先利其器
人类似乎总是很欣赏那些在公众中,表演用记事本,在没有任何代码提示情况下,“手写”代码的大神。
其实要实现这些并不难,万事无他,唯手熟尔!哪怕你要用的那个函数,参变量再多,你这天天写,总有熟到可以信手拈来的地步。但向观众,尤其是初学者表演,甚至是传达这样的理念,我觉得就是一种“罪恶”。恰恰相反,我觉得,作为一个经验丰富的老手,我们最应该向初学者推荐的,应该是一款经过精心调教的“工具”。还是以Python和数据分析的学习为例,怎样开始学习最好?上手就开始来学怎样撸代码?如果你问我,那我一定会告诉你:> 先去装个Anaconda再说为什么?
省时省心啊
从此,近千个数据科学相关的开源包,你再也不用担心你应该去哪里找到他们,并且是不是和你现在用的版本会有冲突,等等等等这样一些听上去很琐碎,但绝对会浪费你大量时间的事情了,而是能专注于学习。
因为一切都已经在那里了!
实际上,在真正的软件生产过程中,可以说绝大多数的开发,都是严重依赖于工具的,你想想,为什么类似Docker这样的工具会盛行?抛开在虚拟化等方面的具体技术不谈,这东西对于开发和运维人员而言,一个巨大的好处,其实不就在于它的:几乎零配置么?
我要搭一个LAMP的Web的开发环境,我不需要自己劳心费力的去一个个的装Apache + MySQL + PHP,还不能保证能不能装上,一个image即可。编程学习也一样,尤其是针对初学者而言,不要因为看到“大神”们,都是手写代码,就觉得:把时间分配在掌握一个好的IDE工具上,是在浪费时间!
实际上,这反而是能够让你学的更快的利器!
这里有一个小小的推荐,就是Visual Studio Code,微软的这款产品,经过这几年的大力发展,其扩展的丰富程度,真心足堪大任了,如果不是很特别的语言需求,基本上都可以在其应用商店中,找到对应的开发扩展。最后才是语言学习本身,但只40%
在充分了解了所需要学习的语言本身,现在主要拿来干什么,并且也用上了“高大上”的工具以后,整个学习的旅程,就算可以正式开始了。
这里,有一个小小的建议,叫“只40%”。我觉得,这是所有高效学习的关键所在!
什么意思?
举一个例子,比如在很多语言中,提供了各种各样的处理字符串的方法(或函数),以Python为例,哪怕比如就是一个简简单单的,从“Hello World!”中,截取相应的子字符串,也有很多的技巧,比如:林林总总,好吧,作为初学者,面对这些东西怎么办?我就看到有很多的“大部头”的号称面向初学者的书,会洋洋洒洒的为此大书特书一番,好像,不把所有的可能性穷尽,初学者不算学完一样。
但在我看来,这恰恰是最“糟糕”的一种写法和学法了。两个字:
没用!因为有习惯和遗忘曲线的存在。
所以,即便是你当时花了大把的时间,去学习了这种种的技巧,今后,随着你自己编程风格的形成,你还是会逐步趋向于用一种固定的方式,去处理问题,当然,我不是说这个例子,毕竟它太简单了,简单到这么多风格,完全可以让人接受 :),但我也不是没有看到过,就是有人愿意在他/她的代码的某个地方,先声明一个类似这样的函数:
为什么他/她要这么做?这不等于是为开发增加了一种“方言”么?其实无他,就是因为这可能是他/她在另外的语言环境(比如JavaScript)下,已经用熟了的一种方式而已,这是人的天性使然。
这也就提醒初学者,当你在学习一门计算机语言的过程中,下面的两个“经验”,可能能帮助到你,更为高效的进行学习,那就是:
1. 克制自己,不要试图去了解这门语言的全部,只学自己当前需要和能明白的
比如说,你就是准备用Ren'Py做一个可视小说的游戏出来,里面只是需要一点点的Python知识,那你也捧一本大部头,然后费劲吧啦的去看那些你根本用不上的函数的用法,并试图去“深入”的理解OOP和函数式,这两种不同的范式,在Python下的实现(这可能是很多教程非常引以为傲的“高级”货),何苦来哉?
等你这一切都完成,人家可能早就做出来了好几个游戏了,并且竟然发现:语法要求从来可能就没超过大部分Python教程顶多第三章的要求(一般的教程,到第三章,从最基本的变量定义,到函数应用等等,一般都会写完了)。
当然,我这样讲,不是在鼓吹说,深入系统的学习不重要,但我能保证,那绝不高效!
2. 在一开始,就要培养形成在线查阅文档的能力
我们已经处在了网络高度发达的时代,这是一个没有办法改变的事实!这个时代,最鲜明的特点之一是什么?我觉得就是:
知识开始也一定会经常以索引的形式存在!
当然,你也可以说成是人类的整体记忆能力在退化,但我个人不这样认为,实际上,索引式的好处,反而是人类可以记住更多东西了。
回到编程的学习,最高效的方式也应该是这样,学习的目标,应该从“完全记住”,转变为在脑子里大概留个印象,然后可以在遇到问题时,能快速的根据这个印象,通过在线的文档查找,迅速定位到问题的清晰的解决方案。
40%,足矣~
最后借此风水宝地,插播一个小广告,本人正在准备着进行编程教育自媒体方面的创业中,当前主要的想法,是针对K12年龄阶段,并主要和初等数学和物理,以及主流的一些算法等结合在一起,提供难易程度不同的,各种或好玩、或实用的编程教程和培训,同时,也会逐步的开讲一些整个计算机和软件发展历程中的故事,以及我自己的一些小小的思考,欢迎大家多多关注哈。如何学习go语言?
Go语言这几年发展的确实不错,虽然没有实现赶超C++的目标,但是已经很接近了。而这些年也出现了一些Go语言的有名的项目,比如 kubernetes、Docker、Etcd、Tidb等项目。
我这里整理了一份关于Go语言的学习路线,也可以辅助你做判断。Go语言是一门全新的静态类型开发语言,具有自动垃圾回收、丰富的内置类型、函数多返回值、错误处理、匿名函数、并发编程、反射、defer等关键特征。从语言层面来说天然支持并发,可以充分利用CPU多核,并且非常适合用来进行服务器编程、网络编程和分布式编程等。在云计算领域,用Go语言编写的云基础项目如Docker、Kubernetes都取得了巨大的成功,别外还有知名的项目如Etcd、consul、flannel等,也都是使用Go语言实现的。为你提供几张学习Go语言的线路图,从基础到进阶、Web编程、微服务的学习,你可以参考一下。基础学习
书籍推荐
《Head First Go语言程序设计》、《Go语言学习笔记》、《Go语言趣学指南》、《Go语言编程》当然,不必所有的书都读,找其中一本学习即可。在线学习Go语言资料
Go By Example 中文版 : https://gobyexample-cn.github.io,使用代码示例来学习 Go 语言。 Go 面试题 : http://www.topgoer.cn/docs/gomianshiti/mianshiti,也是使用代码示例来讲解 Go,用来准备面试也是很好的。 无闻大佬的在线入门指南 : https://github.com/unknwon/the-way-to-go_ZH_CN跟着单元测试学习 Go : https://github.com/quii/learn-go-with-tests,有中文版。初级练手项目
starcharts : https://github.com/caarlos0/starcharts,项目的功能是生成 Github 上面的项目的 star 趋势图,核心代码不多,用来练手很合适。 gorched : https://github.com/zladovan/gorched,使用 Go 写的一个小游戏。 pacgo : https://github.com/danicat/pacgo,也是使用 Go 写的一个小游戏,每一步都有详细的描述和代码实现。 wechat-go : https://github.com/songtianyi/wechat-go,微信 web 版 API 的 Go 实现,模拟微信网页版的登录/联系人/消息收发等功能。Go语言进阶
书籍推荐
《Go程序设计语言》、《Go专家编程》、《Go语言高级编程》、《Go并发编程》在线学习Go语言资料
1.《Go 语言设计与实现》: https://draveness.me/golang。2.《Go 语言高级编程》: https://chai2010.cn/advanced-go-programming-book。进阶练手项目
rosedb : https://github.com/roseduan/rosedb,一个用 Go 实现的简易高效的 k-v 存储引擎。 gochat : https://github.com/LockGit/gochat,一个 Go 语言实现的轻量级 im 系统,对网络方面熟悉或者感兴趣的可以看看。 7DaysGolang : https://github.com/geektutu/7days-golang,7 天使用 Go 从零实现 web 框架、分布式缓存、ORM 框架,、RPC 框架,代码量不多,但是质量挺不错的Go Web编程
书籍推荐
《Go Web编程》在线学习资料
可以学习下 web 框架 Gin、beego:两个框架都比较的流行,选择其中一个其实就可以了,推荐 Gin。官方文档都有中文,照着 demo 敲一下,了解下怎么处理 HTTP 请求的。其次还需要掌握一下比较流行的 ORM 框架 Gorm,有官方中文文档,照着 demo 敲一下基本上两天就能掌握了,后面遇到不会的再来查。Web框架相关的,基本上看官方文档就可以了,就不用再去找专门介绍的书籍,没有比官方文章更正宗的资料了。除框架之外,你还需要学会的是包括但不限于:web的逻辑,Http协议,grpc,session,cookie等这些web的基础知识数据库方面MySQL、Redis、MongoDB等中间件Kafka、Etcd等文件文件处理,XML、JSON、正则等安全与加密,预防CSRF攻击、XSS攻击、SQL注入等,加密解密等Go Web项目推荐
gin-vue-admin : https://github.com/flipped-aurora/gin-vue-admin,使用 Gin 框架构建的后台管理系统。 ferry : https://github.com/lanyulei/ferry,基于 Gin + Vue + Element UI 前后端分离的工单系统。 go-admin : https://github.com/go-admin-team/go-admin,Gin + Vue + Element UI 的前后端分离权限管理系统。Go 微服务
目前 Go 在微服务中的应用也比较广泛,但说实话,微服务是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚,而且也没条件,或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会。推荐一本微服务概述的基础书籍《微服务设计》、《微服务架构设计模式》,可以帮助你理解微服务的建模、集成、测试、部署和监控的一些基础知识。其次,你可以看一下《Go微服务实战》这本书,看后半部分即可,里面其实介绍的还是关于微服务方面的知识。推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等。其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档。在线学习的资料:
https://ewanvalentine.io/microservices-in-golang-part-1手把手实现一个简单的 Go 微服务项目,你可以通过这个项目来学习微服务的相关知识,并且有中文版。Go语言原理研究
如果你对Go语言底层原理感兴趣的话,可以看下这本书《Go语言底层原理剖析》。开源项目学习
在项目开发过程中,也会用到各种开源项目。一开始没必要直接钻研源码,先要学习开源项目背景,能解决什么问题,开源作者的项目理念,使用了哪些技术等等。这些清楚以后,可以找自己感兴趣的技术点或者模块去针对性的学习,千万不要想着一开始就想一网打尽式的学习,没有针对性意味着没有重点,没有重点很大概率就会白学或者学到的就会很少。先推荐几个经典的开源项目供你参考:www.docker.com 使用 docker 来做虚拟化https://github.com/nsqio/nsq 学习消息队列,学习 channel 和分布式https://github.com/coreos/etcd分布式应用如果你有自己比较看好的开源项目会更好,兴趣永远是前进的第一步。相对前几年,Go语言的书籍、教程,各种文章都如雨后春笋一般越来越多,学习起来也更加方便,但是同时也要注意不要过度陷入知识碎片而无法自拔,最重要的还是要去系统去学习一下,针对性的练习、实践和应用。不会php可以学thinkphp吗?
可以,但是非常不建议。因为这会让你的基础不牢固,你可能会用thinkphp快速模仿出一个网站,但是一些php的原理都会被你忽略掉。
php是一门web开发语言,而thinkphp是在这上面封装的框架。简单来说,thinkphp就是把常用的功能给你封装好,你可以自己调用,但是其实它的底层调用的还是php的函数和基本语法。
当然如果非常短时间就要使用thinkphp开发一些简单应用,也可以直接学习它,毕竟上手容易是php的一大特点。但是之后,你还是要去重新踏踏实实学习php基本语法,基本函数,它的常用功能,因为这些都是你深入理解框架的前提。
基本功是最简单的,但是也是最难的。我们常讲万变不离其中,这个中就是基本功。有了基本功,你可以很好地理解框架,更好地使用框架,而且你还可以自己开发框架,这些都是在你打好基础的前提下。
最后总结一下,不建议在不会php的前提下就直接学习thinkphp,基础永远都是最重要的,基本功是你攀登高峰的最好选择。
论小白想要学习IT怎么开始第一步?
第一步:
多买点黑芝麻枸杞什么的,先吃起来!
不然以后就追悔莫及!
就像下面这张图:
第二步:
没女朋友的,赶紧先找个女朋友,毕竟以后可能再也没时间找了[狗头]!
同时也要加强运动,
不然以后不是肩颈不行就是腰不行!!!
......
......
好了,以上这些纯属扯淡,仅供参加!
言归正传,说起成为程序员的第一步,一般就是先选一门编程语言啦。
一大部分人会推荐C语言,还一大部分会推荐Python,剩下的就看机缘了!
C语言
C语言一般都是作为本科专业为计算机或者计算机有搭边的专业作为编程入门课程,比如本人电子信息专业就是通过C语言入门的。
C语言很多人都觉得入门难,其实再难也都能啃下来,只要肯花时间,肯多练练手入门都不算事。
我刚大一就自学C语言,并高分过了计算机二级,虽然这在大牛眼中也不算什么,但对之后程序员之路帮助良多!
然后以C为基础,又学了C++,后面工作又关系又自学了Java、C#、Python、Lua、js等等等等,时至今日,过去十多年了,我又回到了C/C++[捂脸]
Python
Python的话作为解释型编程语言,语法对比C/C++、Java这些编程语言,那是相当相当简单明了。同时提供了很多高级数据结构,实际上只要逻辑上没啥问题,入门就跟学写简单作文的语法一样。
如果如果,你觉得入门Python很难,大概会劝你放弃成为程序员吧!
目前,Python是很多平台上作为脚本使用的,也可以作为很多平台快速开发应用的编程语言。
想初步掌握这门语言就跟C语言一样,多写多练,除了天才,没有其他方法了!
其他
其他随缘吧,看你个人兴趣,比如你热切想要学ios,可以考虑考虑swift,其他的就不说了。
那么PHP程序员在后期发展时该如何调整路线?
百度新浪、好未来目前是PHP工程师招聘岗位需求最多的几个大厂了,其他的大厂也有但是比上面三家大厂少
PHP相比Java有诸多局限性,无非就是,编译,性能、线程、并发方面的一些问题了
PHP程序员在后期可以进阶高级开发、架构师的方向,不一定非要跟Java相比较,每个语言都有它自己的优势,学习Swoole可以轻松解决一些PHP性能的问题
深入学习PHP底层原理,Swoole接口,微服务,Mysql底层优化等,才能保持核心竞争力,拥有一份25K左右的薪资!为晋升架构师打下基础
总有一些PHPer在提升过程中,遇到瓶颈、难以突破,所以我准备了一套中高级进阶学习教程还可加入大牛学习圈子,分享tp,laravel,Swoole,swoft微服务等教程,各种大牛都是3-8年PHP开发者,每天还有12年的架构师做讲解,助你进阶中高级PHP程序员,增值涨薪!需要可关注本头条号,并且发送私信关键词:PHP