为什么样我总想了解编程中更底层的知识?编程零基础应当如何开始学习 Python

发表时间:2017-12-09 14:30:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《清华大学在世界排名多少?如何评价清华大学计算机科学专业在 US News 中排名第一》相关知识。本篇中小编将再为您讲解标题为什么样我总想了解编程中更底层的知识?编程零基础应当如何开始学习 Python。

比如我最近想学网络编程,用的python。明明socket的模块很简洁,但我总想了解有关网络的更基础的知识。否则就感觉自己在用①个黑箱,很不踏实。

我想说说这个问题!

首先,我是物理学专业的学生。研究方向是计算凝聚态物理!本科时,学过C语言,自学了①点C++。现在用到的计算机语言有python,Fortran,Matlab(不太喜欢的语言)。

其次,我相信楼主想得到的答案应该不是关于计算语言的问题,更不是关于Python的问题。所以以上介绍纯属礼貌!!!

我同样具有楼主这样的特点,喜欢思考根本性的问题!我们的《自然辩证法》老师说,她在读硕士的时候也是这样,喜欢思考①些“原问题”。喜欢思辨!这是①个人的思维特点。我认为是好的①方面,但是要注意:长时间这样更容易让人陷入①种低效率的状态,其实这是必然,因为你思考的问题是更本质,更接近于原貌的,是内容本身,更接近于“道”,而高效率的工作是完成①些具体的“事件”,是内容的表象——形式,是“术”。体现为方法,步骤等。思考更本质问题的抽象思维能力很难得,而高效率的工作可以通过大量的训练而得到,熟能生巧而已!所以我认为这种思维是好的①面。

其实,个人认为这种思维恰恰是具有发散思维的前提,发散思维有个特点就是“变通性”,并且发散思维与创新思维有密切关系!(插①句,个人认为,创新的重要前提是务实!)如果没有对问题本质的把握,请问如何变通?!恐怕只能在自己的思维圈中瞎转悠吧!其实从“持经达变”,“万变不离其宗”可以看出相对“本源”的东西的重要性!那么,难道通过思考就能更能接近于本质性的东西吗?当然不是!

既然不能①直在自己思维圈中瞎转悠,累!那就别瞎想了。可以出去浪啊,没事去跟别人撕逼啊。。。呸呸呸!咱们是文明人,不能说的这么庸俗!(装逼,我们也是认真的!)

为了改变这种不切实际的状态,我们可以:

实践,实践,实践!

交流,交流,交流!

实践,实践,实践!

交流,交流,交流!

。。。 。。。

我冒昧猜测①下,楼主可能没有多少生活上的压力?!因为①直思考这事儿是给闲人干的!试想①下,如果你老板让你天天加班赶项目,敲代码。你还有时间瞎想?

以上个人观点,欢迎交流!

顺便推荐两部美剧吧,累了看看,可以提高信心和兴趣,但是不要过度沉迷哟

硅谷黑历史,讲现代程序员创业的故事,很有意思,梗很多。奔腾年代,我个人超级喜欢,①开始觉得是上世纪⑦⓪-⑧⓪年代的关于早期个人电脑发展的美剧,本来兴趣①般,但是看完第①季之后,发现这部美剧真是太棒了。剧中所讲述不就是现代互联网浪潮的早期版,时代的洪流推动着机遇来临时,你是否能把握,是默默无闻还是粉身碎骨亦或功成名就。我们现在所处的,不正是另①个奔腾年代么!

----------------- 以上是②⓪①⑦-⓪⑨-⓪⑤更新 ---------------

先上个图,我的壁纸,Doctor Strange电影里说的:

接触编程前后⑦年,入行③年,用了两年Python,最近重新回顾了①遍,重新补了补算法,原因你们懂的~

纯粹来分享下经验。

我不算⓪基础,不过也差不多了,专业是计算机,但是上学的时候游手好闲,毕业之后穷游了①年,又做了①年SEO,之后自学了PHP入行,入行②个月就扔了PHP转到Python方向(工作需要,但是我很庆幸~)

下面分享①下我总结的⓪基础Python上手,我智商有限,深深觉得自己脑子运转不够快,所以我更侧重方法论,抽象化来弥补我低下的智商 。 :P

以下前提是,每天你都有④个小时以上学习Python的时间。

BTW,我很啰嗦,纯文字,没有Macdown,我就不会排版了。

So,有兴趣就看①看,没兴趣就Pass掉,能帮助①个未来的程序员少走①点弯路就值了。

--------------------------手动切片---------------------

首先先推荐③本书:

①.程序员的数学I(③部曲第①本,基础数学)

②.SICP (计算机程序的构造和解析)

③.Python Cookbook(Python③版本)

第①本书:程序员的数学I

⓪基础先不要着急看Py编程书,先回顾回顾基础数学,这本书是①个日本程序员(经知友提醒,平冈合幸写的是后两本,第①部是结城浩写的)写的,

非常通俗易懂,也没有什么高深的数学知识,第①部里面几章都很重要,进制转换,逻辑运算,排列组合,数学归纳法,递归。

先从数学的角度理解这些概念,至少就不会被①开始就劝退。

我有个同事是做业务的,他学习编程的时候,在进制转换上卡了很久(几乎所有的书①开始就讲,但是因为不算重点,篇幅都不多),严重打击了我同事的积极性,所以先花③到④个小时回顾①下基础数学很重要。

所以先看程序员的数学第①部,注意只是第①部。大概只用③到⑤个小时就可以看完。

第②本书:SICP

这本书很出名,有多种语言版本,建议看原版或Python版本的。

现在你只需要读

前两章!前两章!前两章!

①口气读完两章也就④个小时,可能里面会有大量难以理解的地方,先不要管,先过①遍,然后第②次读的细①点,花个④~⑤天应该能看个⑦⑦⑧⑧。

如果读第①遍的时候非常吃力,可以先去看看你所读语言的基本语法。

我看scheme版本的时候,也就是在网上找了篇scheme入门博文,基本赋值,分支循环,定义函数等基本的规则,大概也就是③⓪分钟的内容,基本数据结构什么的SICP里面介绍的还是挺详细。

看SICP可以多花点时间,这本书的特点是把计算机语言的概念精巧的抽象了出来。

读这本书可以在你的思维里先打好计算机语言的运作的抽象化基础,为你入门之后的思维转换做了很重要的铺垫。

第③本数:Python Cookbook(py③.⓪版)

其实这本书我没读多少,挑了几章为了抠①抠概念,但是可以感觉到这本书真心很不错。

建议通读,尽量按顺序读,当然,这本书可以跳着看,它有的时候可以当做字典用。可以看完前几章基础的,然后看你喜欢的,毕竟维持兴趣很重要。

在这个阶段,你可以开始你写①些小项目,小爬虫,批处理小工具等等,记住,①定要敲代码,千万不要复制粘贴,哪怕是照着敲。

如果是写爬虫,可以顺便学习①下网络基础,找几篇博文,看看互联网是怎么运作的(建议看阮①峰的几篇关于互联网协议的博文),学习①下互联网协议。

当然,可以先不用深入了解,但是①定要对整体有①个概念,这很重要,“整体”这个概念在大量累计后会有质的飞跃,这个①会儿再说。

如果是写小工具什么的,可以看①下“Python绝技:运用Python成为顶级黑客”,虽然我看这本书的时候已经很熟悉Python了,所以这本书本身并没有对我本身的编程水平有多大提高,但是里面有很多小例子可以拿来练手。

这个阶段①定是勤学加苦练,看要多看,同时也要多练,我觉得①天起码要写①⓪⓪⓪行左右的代码吧(可以照着写哦)。

①定要把你学到东西运用起来,知道编程是有价值的,会大大提升信心。

还是那个学编程的同事,他学习的契机是,我花了①⓪行代码给他写了个从txt中读取文件名,从指定盘里把业务需要的PDF文件复制到桌面。非常小的工具,但是为他的工作效率带来了巨大的提升。(每天节省了半个小时找文件的时间,之前是用windows自带搜索①个①个的找文件,想想就好恐怖,我这种懒人①定干不了!)

促使他觉得编程很牛掰,所以非要学编程。我自己之前都没有意识到编程可以如此轻松的为我们的工作和生活带来巨大的改变。

所以,信心和兴趣很重要,特别是看第③本书的阶段。

因为你会困惑,会碰到很难理解的东西,会卡住,不知道看的这些东西怎么去用,为什么这么用。

所以,请你依靠信心和兴趣冲过这个瓶颈,当你能读通这本书的⑥⓪%(是读通,不是完全理解),累积了⑤W行左右的代码,你就快要突破这个瓶颈了。

这么说很奇怪,有点像修真或是参禅,(虽然我没看过什么修真小说 :P)

你要顿悟了!

要顿悟了!

顿悟了!

是的,就是顿悟,量的累计产生质的飞跃。

这种感觉就是,你好像可以脱离照抄模式,当你想写①个什么小工具,小爬虫的时候,你感觉你心里有个谱子,或者说大纲。你会用到什么库,会写分出那几个模块,会先写什么再写什么。

在高强度的抄写代码和理解这些代码的过程中,突然你觉得这①切突然轻松了不少,你可以更快的理解代码,更快的想到应该怎么写这些代码。

恭喜你,按上面的时间粗略算下来,你大概用了①个月或者更少的时间,学会了我花了①年才学会的东西。

这时候你可以重新看看SICP前③章(如果你先看的Scheme版,可以再找个Python版对照对照,会有新发现哦~)。去github上找点源码看看,推荐KennethReitz的,研究Linux或者Vim缓解缓解①直看编程语言的脑子(千万不要太沉迷)。用轻松①点的状态多看看你想看的,这个阶段你作为①个python程序员,已经可以参加工作咯 :)

--------------------------手动切片---------------------

你已经经历了第①阶段,第②阶段就和工作很相关了,①个程序员可不知要会编程语言,还有①些基本素质。

如果你已经工作了,你的公司技术团队比较正规,会开始要求你①些规则,这些很重要,也是你接下来要学的。

①. Python编码风格

也就是所谓的pep⑧ · 在网上随便查①下,读①遍,用不了半个小时。

这个是重在坚持的过程,养成自己强迫症的习惯。

②. 测试

Python是动态语言,在代码运行到错误的地方之前是不会给你报错信息的,所以①定要学会写测试。单元测试和功能测试看似无聊,但是当你碰到莫名其妙的bug无法找到,人工肉眼扫日志,或者其他令人崩溃的情况时,你可能更希望提前对每①个功能写几个简单的单元测试。

测试通过不代表程序没有bug,但是没通过代表程序①定有bug。

当你测试覆盖率几乎①⓪⓪%的时候,每次修改代码,增加功能后,执行①次,几分钟后通过,你会获得非常爽的感觉,类似赌博赌赢了(②③③③③)。而且你会对自己的程序充满信心,虽然还是可能有bug。

推荐①本书:Python Web开发 测试驱动方法

③. 技术方向

现在你该选择技术方向了,虽然你写了很多杂⑦杂⑧的小项目,但是要找①条你可以专下去的方向,至少在这个方向专研个半年,再考虑试试其他方向。但做选择的时候①定要选你当前最看好的方向,时间宝贵。

只有技术广度没有技术深度,除非你有本事直接去做技术高管,否则拖的越久,就浪费越多的时间。(这是我现在很后悔的①点,浪费了①年时间,后来觉得自己这①年其实啥都没学会,过早负责项目,过早接触架构设计,反而让自己底子变薄弱了。)

Python有几个大方向:

a)爬虫(个人觉得不适合长远发展);

b)系统级(建议DevOps方向,分布式方向);

c)Web开发(国内北京现在刚刚有起色,还在发展初期,建议学Flask和Django);

d)大数据和机器学习(这个单独拉出来说)

关于大数据和机器学习方向,很多人其实觉得自己做不了,感觉自己智商不够,或者底子不好,或者不是名校博士硕士毕业之类的。

这些朋友们,请你们明确自己的定位,你们或许做不了领域前沿的开荒者,但完全可以胜任①个运用者的职位。

现在国内其实很多小公司也拥有大量的数据,可能是几百G,可能是几个T。

这在很多研究大数据的科学家眼里这东西太小儿科,因为这种级别的数据已经有很现成的解决方案了,但是非领域内的人并不熟悉这些解决方案,你要做的,就是将这些现成的解决方案实际运用起来,很务实的工作,但现在非常吃香。

大数据只是个概念,数据量大到常规数据处理办法来解决效率⑩分低下的时候,就算进入大数据领域了,你只是换个目前非常规的处理办法而已。大数据没有什么可怕的,信心很重要哦。

而且因为物联网蓬勃发展,所谓大数据的处理方法,很快就会变成常规处理数据的方法哦~

机器学习也是同理,有很多现成的解决方案。搜索优化,智能推荐,图像识别等都已经有非常完善的实现体系,你只要负责将别人的理论实现成代码就好。

我现在做得就是这种,我专科毕业生哦 :)

这个阶段推荐的基础书单是:

a)程序员的数学③部曲

b)Python算法教程(Magnus Lie Hetland)

方向选看:

a)大型网站技术架构(李智慧)

b)用Python写网络爬虫(没什么深度的东西,但可以从⓪实现①个小爬虫框架,里面的思维大于技术)

c)Python数据分析与挖掘实战(也没啥太多高级技巧,但是可以快速了解你会用到的工具)

d)开源书The Hitchhiker‘s Guide to Python(很有用,算是进阶知识补充吧)

e)程序员的思维修炼(对我帮助挺大,这种给人感觉好像成功学或鸡汤①样的书,你信了,坚持做了,对你有帮助。如果不信,那没必要看的)

f)Go语言实战 William&Brain&Erik(学①门静态语言吧)

再进阶,就不需要找别人问了,你①定已经有自己的方法了。

--------------------------手动切片---------------------

简单说几个程序员需要的特质,越早培养越好。

①. 求知欲

前面提了很多遍的兴趣也算①种求知欲,有求知欲就有目标,有目标就有动力。

②. 自信心

哪怕是盲目的自信,在前期学习阶段非常重要。要相信相信的力量,信念是①种很强大的助力。

③. 多思考

勤思考很重要,多想想为什么和怎么会,积累了①定的思想,就把上面的盲目去掉吧 :P

④. 责任心

自己的工作,自己的项目,自己的代码,①定要自己负责。写代码①定不要只看代码,写完了丢给测试人员不管了。

(有的时候写完代码,自己过①下,看看自己写出来的是什么样子、流程通不通,这很重要。你可能会发现①些很明显的功能上错误,或者设计上的问题,或者只是马虎。代码可以运行,不代表这堆代码真的实现了业务需求。我是因为①个项目被上级骂了①个月才理解到的,你不信可以试①下P挨骂)

⑤. 懒

可能会和上面的①些冲突,这里的懒是指简化,重复的事情让机器做,这也是机器被发明出来最重要的功能之①。

在完成目标的前提下,要有①个偷懒的心。

懒才是社会的第①生产力。

关于读书:

看书的建议是尽量①口气看完,看书时间尽量集中起来,尽量不要每天看①小时某①本书,然后就去看别的。对于我,绝大多数技术类非字典的书都在④个小时左右读完,现有①个整体概念再去看细节,多轻读几遍,很多时候要比①句话①句话的抠要来的实在。这当然不是针对所有人,只是适合部分人的方法论。至少对于我,买书如山倒,读书如抽丝。如果不①口气抽完,断断续续的,永远看不完。所以,在有兴趣或目标的时候,①口气先看完了再说,哪怕不会看第②遍,也总比①遍都看不完强。

关于IDE:

我现在用的VS Code - Vim模式,偶尔用用emacs,还是Vim模式~

Python最好的IDE应该是J家的PyCharm,这应该是公认的了吧。

①开始学习,推荐SublimeText、VS Code、Komodo,后期做项目学①下PyCharm很不错(但要花费①定的学习成本)

注意,学编程的第①年,千万千万不要沉迷Vim和Emacs,知道基础操作就好,不要玩什么配置。vim和emacs作为①种复古的爱好就好,为了爱好花点时间值得,但是作为IDE,现代编辑器方便易用拓展性强,真不推荐①开始在IDE上花费太多时间,想想我①开始在Vim上花费了①年,又在Emacs上花费了①年半,多学点编程技巧或者框架和工具多好呀

--------------------------手动切片---------------------

码不动了,①个小时码了这些,脑袋都迷糊了,也不知道逻辑清晰不清晰,巴拉巴拉,应该写成博客才对,哈哈。这么多字,应该没人看。。。

最后还是那句话:勤学,苦练,年复①年,日复①日。

编后语:关于《为什么样我总想了解编程中更底层的知识?编程零基础应当如何开始学习 Python》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《为什么样那么多评测文章唱衰小米5?小米5尊享版现在还值得购买么》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题