事隔半年,重新回看以前的回答,感觉的确这半年来对计算机世界的认识提高了不少,看到有答得不准确的地方,便来改一改。--2017/06/26
以下正文
=============人生总是如此奇妙=================
好久没有写知乎回答了,本篇回答就说说本人的学习代码之路吧。
首先说说我本人的情况:
我是一个完全非计算机专业的学生,如果非个人选择的话,我的一生都可以不用跟计算机语言打交道。然而我打交道了,因为我喜欢计算机,喜欢享受撸代码的乐趣。所以,现在我接触的语言还算多吧。从小学6年级到初二的期间,当时是有一台步步高的电子词典,就撸起了RBG代码,一种还算简单的代码,然后初二看了大半本的大学C语言的教材。之后搁置了很久,到了大学,才重新学起了计算机的东西。大一上课是有教C语言,不过这个时候已经觉得不难。大二暑假是因为要处理大量数据,要用到excel的宏处理,自学了VB,还有MatLab,然后大三上学期学了C++,并通过了全国二级的考试。大三寒假参加了网络的培训,学习了网络的很多原理,因为觉得比较重要又自学了Linux和Python。之后实习是做了.Net的开发,开始自学了C#,JavaScript,Html。现在毕业季出来了,因为工作,真正地用C++开发了一些工具,同时也基本了解了PHP,Java语言。
接下来说说本人觉得可行的语言学习之路
=======第一阶段,刚入门========
刚入门的时候,我的建议是看C的前面基础部分,因为这个时候最重要的是学到编程的基本思维。基本的逻辑概念。如:
1,数据类型:像void,int,string,float等等。
2,数据的运算:加减乘除的写法,i++和++i 的区别等等。
3,逻辑:像if 判断,do, while, for 循环等。
4,整体概念:不同函数的调用 def(),递归等。
像这些,其实,看哪本书都差不多,而C这本书会写得比较详细吧,C++,C#对这些也不太多讲,因为每个语言的侧重不一样,而看C对于以上四个点能够了解得比较充分。另外要提醒的是,如果看C的时候,看到指针之类的其实可以先放一放,涉及到内存,占用空间这些都是比较深入底层了,以后不一定会用到呢。
=======第二阶段,牛刀小试========
牛刀小试,我建议是学VBs , Python ,Html + CSS + js + php
这个时候可以开始试着写自己的代码,实现自己的需求了。所以这个阶段最重要的是——反馈。你写的东西的效果要立马呈现出来,这样你就能在不断地尝试中不断进步,不断地知道,原来要这样呀,这样进步是最快的,又不会感觉到枯燥,灭了兴致。
1,学会搭环境:比如python的环境,path系统变量等。
2,对文本的处理:Excel用宏处理VBS写,自动处理表格内容。用python也写写处理txt文件文字。
3,搭简单的界面:用VB就行啦,并能够写些弹出窗口。
4,做一些简单的网页,当然就是用Html+Css+php啦,不用一个星期就能做出成果来了。
5,学一学正则表达式咯
这个时候能处理文件是一件很高兴的事,能用宏处理那简直已经是对工作效率有很大的提升了。这里建议也学是因为python难度其实是跟vbs差不多的啦,因为我当时写vbs也遇到无数的坑,所以要论学一个代码的艰难的话,python其实还是跟vbs并肩的。但是Python的扩展性更高,学python能实现你以后更多的需求。
======第三阶段,小型应用程序=======
这个时候建议是开始学”Class类“,建议是看C++及C#的书。
面向对象,是一个飞跃,真的是一种思维的转变。所以我学的时候也是感觉难度挺大的。学会了这个,就可以用C#写一些简单的小程序。
1,学习类相关的概念,比如公有成员,私有成员,继承,派生,多态,父类,子类等等。
2,写一些小的有界面的程序,比如用VS2013,先下载大量的C#代码源码,看一看,基本就懂了。然后写一些解决日常需求的工具,像我写了个《绩点统计工具》。
========第四阶段,学习框架=========
框架啊框架,就是别人封装好了,你在别人的框架上面开发你自己的东西。
这个部分嘛,我只接触MVC框架,和前端框架Ext JS,jQuery
这个部分要学的话我建议可以用VS,直接新建一个MVC框架的Project,然后你就会看到这个是http://ASP.Net的用来做动态网页的程序。然后开始学习这个框架是怎么用的咯。
========第五阶段,数据交互==========
数据交互的话,就是像ajax,XML,Json,以及跟数据库交互的方法。
要求了解前端后端数据的传输。
========第六阶段,深入底层=========
涉及的是C,C++,Linux等等。
这一部分开始对数据类型控制,算法(时间复杂度,空间复杂度)有需求。
如果不是实际需求,其实也不会到了这一步啦。要学到深入底层一般就已经是想要专门做开发或是做嵌入式的程序员。
老实说,我也只是走到这一步,正在学算法,所以我没办法往下码字了,嘿嘿嘿。各位观众大佬爷,如果以上说得有如有不妥,请批评指正呐。
========文末:费点口舌=========
总的来说,靠实践带动学习。真正你学会一个东西,不是你看完了多少书,笔记做了多少。而是你:
1、能不能用所学实现自己的想法;
2、能不能在脑海里构建好流程,开发的时候能有写作文一样的大纲;
3、能不能在遇到问题时攻克难点;
3、面对不熟悉的东西开发时是否有不间断Debug的能力。
因为我想起了大三下学期,看了三个月左右的Linux和Python,是怎么看的呢,抱着几样厚厚的书,一页一页地看。看完了,然而一点实操的能力都没有,后来就忘光了。所以我现在非常后悔,浪费了这多时间。这给我的教训就是:
1、开始学一个东西,好,打开编辑器,学了什么,必须要复现出来,如果出错,就调试到成功为止,并通过不断改变其参数,去了解它的机制。
2、以实际实现带动学习,比如学andorid开发,先想好,我要开发一个二维码扫码工具app,然后去下源码,一个部分一个部分分解出来查每个函数的作用。