编程零基础应当如何开始学习 Python?
怎么样才能学好python, 怎么样才能学好django,怎么样才能学好编程?
虽然我还没有学好python和django,但是我想我找到了学习的方法。
动手!动手!动手!
对,就是三个动手,但是每个动手的含义是不一样的。
先来说说我的经历:
- 从大二到研究生毕业,我用了5年的matlab
- 从12年工作到现在,我用了4年的c#
- 今年年初公司开始推行全栈,开始学习c++
- 两三个月前,出于个人兴趣开始学习python和django
先别急着骂我好高骛远,同时学习好几门语言我也是被逼的!python和django才是我的真爱!
你们肯定以为我想说兴趣是最好的老师,NO!听我接着吹!
想当初~
学matlab是因为接了学校的一个自然科学基金,你懂的,通过了就有1000块钱拿。听到消息后,3个饿货就组团去报名了,过程是这样的:喜欢各种兼职各种发小广告的学渣室友找到了我,只是因为我大一在电脑城搞了一个暑假的兼职(对,就是修电脑),然后因为项目需要3到5个人就去找了一个天天打DOTA的东北哥们儿,只是因为这哥们只要名不要利,钱到手后他那块拿出来喝酒!妈蛋,现在回过头来想想,当初的奇葩组合竟然迎合了现如今最流行的商业模式:一个能搞项目的,带着一两个能干活的,还有十几个靠关系进来啥也不干就等分钱的!好吧,扯远了,最后项目也是如期完成了。怎么完成的?是我一个函数一个函数的百度回来的:matlab怎么加载图像,I = imread('image.png');matlab怎么得到图像大小,[M,N] = size(I);matlab怎么做循环:for i = 1 :m ... end。再到后来如法炮制,给另外两个同学写了毕业设计的程序,再再后来就当了枪手专业代写matlab图像处理程序,读研没拿家里一分钱还买了手机和笔记本。。。
c#学的也很奇葩。毕业之后阴差阳错的去做了桌面程序开发,当初都没听说过c#,还以为是叫c井呢。。。上来就扔到项目里去了:给你一个星期时间看书,一个星期之后开始修bug。。。好吧,看书,看的什么书?《c#高级编程》!对,没错,就是1557页的那本!哥们头两天还背着它公司宿舍来回跑,第三天就把它给拆了,把第一部分弄出来重新粘了个书皮。。。当然一个星期就连第一部分也没看完,反正就上去修bug了,还好流程控制语句跟matlab也差不多,还好哥们逻辑能力也锻炼出来了,扯着百度咱就开始风风火火的干了,任务也都能按时甚至提前完成。。。
三四年的工作经验之后,我知道了设计模式,知道了面向对象编程,知道了要提高代码的可读性,知道了代码简洁之道。
那么问题也来了,同志们!
从今年年初开始学习c++到现在,我看了好几本书,而且时间很充裕,我是很认真的在看。但是截止到今天为止,我还是不敢去接公司的c++项目!
两个月前,当我准备学习python和Django的时候,我习惯性的打开了知乎。想看看大牛们会推荐哪些入门书籍和教程。 分别搜索python和Django两个关键字,看到了很多我感兴趣的话题:
Python 的练手项目有哪些值得推荐?
python django学的很迷茫怎么办?
Python 应该怎么去练习和使用?
Python 学习完基础语法知识后,如何进一步提高?
Django 学习顺序及入门要求?
想用Django+ Bootstrap写一个网站, 有哪些比较系统完整的书或者视频可以参考?
学完python后,该如何开始django学习?
想学习Python Django,请推荐从入门到精通各个阶段的好书?
说实话我看完了这些问题的所有答案,答主们都很认真,让我对于这个自己不熟悉的领域有了简单的了解。
也是精心挑选吧,对于python,我选择了廖雪峰的官方网站这个教程;对于django,我选择了 Tango With Django。以这两个为主,当然还有其他的,head first啊,官方文档啊。。
当我利用下班后的空闲时间读完两个教程后,也确实不再是一头雾水了,这让我有了一点小小的成就感。感觉至少自己比身边的人多懂一些。但是短暂的喜悦过后我同样遇到了这样的问题:
python django学的很迷茫怎么办?
本人学生,零编程基础,在学习python的过程中越学越迷茫,感觉像无头苍蝇一样,来知乎取经,下面进入正题吧: 我是先看了中谷的python教学视频,然后跟着慕课网上的python教程把题目做了一遍,然后就开始看django,看了“django web开发指南”,又看“django官方文档”,在看django这两本书的时候简直是一头雾水,我有种感觉是python基础没学好的原因所以理解不了django,实在不知道在说什么,就照着书上的例子练,同时我也在网上找了好多blog应用的实例,想试着自己写一个blog网站,来增加一下对django的认识,才发现前端也需要学习,然后就在w3c上学基本的前端,发现前端要学一大堆,然后学着学着就迷茫了,最近一直很迷茫不知道自己该干什么,下一步该干什么,实在不想像无头苍蝇一样。
这哥们简直就是在说我嘛!
但是怎么办?我始终相信这句话:“临渊羡鱼,不如退而结网”。所以我不会因为迷茫而停止不前。
回想起自己刚开始用matlab做图像处理的时候,什么都不会就敢接活帮别人做毕设,现如今做了几年编程工作之后再学习新语言反倒是有点扭捏了!我在想什么呢?为啥就没了当年的锐气了呢?我在想面向对象,我在想代码规范,我在想怎么写高质量的代码。。
TMD,傻了吗,低质量的代码还写不出来呢,谈什么高质量啊!!!
所以,如果一个完全不懂编程的人和一个有若干年编程经验的人同时学python,我反倒会看好那个完全不懂编程的人!
哎呀,我这也算是顿悟了吗?哈哈。那就动手干起来吧!
这个时候当然还是要先问问自己这样的一个问题:
学会了Python你要用它干什么?学会了Django你要用它干什么?
我很清楚自己一直想搭一个博客,写博客的好处我就不多说了。如果你还没想到用python干什么,我建议先来搭个博客。这里当然说的是自己建站写博客,而不是在csdn什么的。为什么要自己建站?找工作的时候这可是看的见摸的着的项目经验啊,亲们。
有了目标就不要让手闲着,动手!动手!动手! 照着教程操作不是真正的动手,动手找方向,动手找解决办法,动手做,这才是真正的动手!动手!动手
我果断的跑到Github搜索了“django blog”,然后就自然而然的找到了zinnia。为什么用现有的框架?因为我给自己制定了这样的学习曲线:
- 用框架搭一个博客,博客上线,理解博客框架内部机制
- 用python写一个blog框架
- 读zinnia源码
当然这不是一个短期内能实现的目标,也许需要一年、两年甚至更多时间。但是一旦你开始动手了,你就会找到更细致的目标。比如,目前我的第一个目标完成了60%左右,我的博客已经上线了,在动手的过程中,我找到了更具体的方向,为了达成这个目标,下面的东西是我要学的:
- zinnia搭建博客,部署到阿里云ECS服务器--------------------已完成
- 掌握Git基本命令,用于版本控制和代码上传服务器----------已完成
- 入门python和django,基本概念和语法需要有------------已完成
- 掌握基本的linux命令,用于部署 ----------------------------已完成
- markdown,用于写博客 ------------------------------------已完成
- 理解web请求,MVC,MVT等blog框架内部机制 ------------未完成
- 其它网站建设技巧---------------------------------------------未完成
- 拥有一个微信公众号 ------------------------------------------未完成
- 待发掘 -------------------------------------------------------未完成
我是一边动手做,一边截图做记录以便写blog,这样速度至少慢了一半,但是很扎实。每一步我都可以回过头去看,为了让读者更好的理解我会重新组织语言、组织逻辑、看看是不是有几个步骤可以合并。。。
学而不思则罔 思而不学则殆!写博客让我做到了边学边思考。
我还申请了知乎专栏,因为是知乎开阔了我的视野,让我从“不知己不知”过渡到“知己不知”。
个人认为帮助你过渡到“知己不知”的人是最值得感谢的,想一想你要学习新的知识打开了搜索引擎却想不到用什么关键字,或者你压根不知道自己该学什么,无知是多么可怕啊!
这就是老话说的,“师傅领进门”。
希望我的一大通废话领你进门了,让你找到了学习的方法~
我会把所有的学习过程记录在这里,欢迎大家一起来讨论。如果你开始动手了却找不到下一步的方向,也欢迎来参考我的记录。
最后几句话与大家共勉:
- 照着教程操作不是真正的动手,动手找方向,动手找解决办法,动手做,这才是真正的动手,动手,动手
- 想一想自己是真正的有十年工作经验,还是一年的经验重复了九年!
- 活到老,学到老。学到的不止是知识,进步让人身心愉悦,整个人都是正能量