一、学习编程好不好
1、如果你只是想玩玩,想做点小东西的话。就学学Java,然后买几本实例教程,慢慢练。
2、如果你想系统的学习。说说我的想法啊。你要有一个目标,学到什么样,你变成才算入门。精通啥的就不说了,文无第一,你说你自己精通,总会有大牛站出来鄙视你。
3、那什么叫做入门呢,我的理解是,你看到一个现有的程序,用脑袋想想,大体能明白他是怎么实现的。当然不用完全明白,这不太可能,但是让你照着这个程序写一个差不多的程序不会毫无想法。到了这个程度你就差不多入门了。说白了就是学习的第一阶段模仿,不用创新,你只要能看着现存的东西去模仿就好了。会了模仿才能更进一步。不过这个模仿可不是让你照着code抄,而是黑箱。不求一模一样,只要有个大体的思路,可以去实现就行。
4、那么为了实现这个入门,你需要一系列的系统学习。像那种用实例来学习的,也只能学习表面,总有你没有见过的事物,所以你需要学习的是本质,是原理。当然通过实例由浅入深是可以的,但是你不能舍本逐末。
5、编程与理论是两条线,但是这两条线是伴随关系。很多初学者不知道该怎么学,所以说科班是很有必要的,起码实用。
6、那么我在说说这个学习的过程。首先你要选择一门编程语言,如果你是那种肯吃苦,耐得住寂寞的人,我建议你从C开始学。为啥这么说呢,因为C比较底层,你想用C开发点有意思的程序特别是带GUI的,不说痴心妄想吧,起码很累。但是C的好处是语法简单,学好C以后,上可以实现数据结构,算法,下可以用来研究OS,算是学习期间比较全能的一套语言了。如果你比较急于求成,想短期内做点有意义的小程序,那就学Java。Java的库比较多,比较容易写一个带GUI的程序。而且OO的思想你早晚都要有。
7、与此同时,去把理论学习了,什么离散数学,计算机结构,数据结构,算法,一个一个来。
8、这时候你可以学学汇编和机器语言,这个不是说要你用汇编去干啥,而是为了让你明白CPU的工作原理,然后试着自己用or,and,xor这类的原件自己设计一个CPU。不是让你真的去做一个实体CPU出来,只是画画电路图。当你明白CPU工作原理之后,你会有一种豁然开朗的感觉,原来计算机是这么精巧的。
9、之后你可以开始学习操作系统原理的。这时候你可以去装一个Linux,然后熟悉熟悉那些system call。研究研究文件结构什么的。羡慕那些天在shell里面敲命令的前辈们吗?其实这些一点都不难,等你熟悉了,你就会觉得windows太不适合编程了。很多人都说Windows写程序好,VS是IDE神器什么的。可是假如没有VS还有人用Windows写程序吗?所以他们与其说Windows好还不如说VS好,Windows只是附属品。Linux随意的多,想C这类的语言,没啥lib可用的时候,有没有IDE都差不多。但是像Java这个变态语言,我反正不会用VIM这类软件去写,累死了。
10、学习系统的时候,你就要学平行处理和线程控制了,parallel和concurrent这些。计算机的CPU就那么几个核,甚至是单核。但是计算机同时运行这么多程序,就是靠OS的平行处理功能的。学好这些很有用。
11、在向上一层可以学的东西可就多了,Network这一块可以学学那些协议比如TCP,UDP或者HTTP之类的,然后尝试着用C写一个简单的服务器,监听一个端口发点信息啥的。你也可以用Java写,Java做这些比C简单点。但是C更贴近系统,因为Java用的是虚拟机,毕竟隔着一层。
12、如果你对3D图像感兴趣就学学OpenGL。简单的小程序用C就够了。太复杂了就要学学C++。反正我是很不喜欢C++的。虽然功能强大,但是开发起来太累了,特别是学了Java之后,你会觉得C++这么能这么麻烦?可是想做底层开发你又不得不学C++。所以看你自己的定位了,如果不是很想深入,C就够了。学到OpenGL你就能体会到Linux的优势了,配置环境从网上找一些命令一敲就好了。当年我上graphics的课时,第一次作业,我都写完了,那些用Windows的同学们还在研究配置环境呢。他们本以为第一次配置好了之后就能体现出VS的优势的时候,才悲剧的发现这学期每个作业都要用一两个新的lib。所以他们只能忧郁的看着我那云淡风轻的一边喝咖啡一边敲代码。
13、计算机的分支太多了,你能学的还有很多,比如数据库。其实数据库语言很简单,学学MySQL你就能学个大概。与此同时你可以学学网页开发,html+css+js为前端,后端的选择太多了,比较传统的比如PHP,如果你Java学的好就学JSP。微软那些就不说了,Python什么的也不错。
14、说到这里,这个脚本语言你也是有必要学习一个的,Python是比较常见的选择。学完python你可以比较一下,C,Java,Python,你会发现越底层的语言功能越少但是很方便去实现那些基础结构,比如数据结果啥的。越是高级的语言功能越多,什么都是现成的,但是那些基础的东西都被隐藏了。这也是为啥10行的python,java要写30行甚至更多的原因。可是底层的语言却更快。当你习惯了Python的开发效率的时候,你可以能不会再去碰其他的语言,但是这并不代表你一开始就不用学,否则你怎么会理解其中的原理呢。
15、说的编程语言,你就不得不学一下编译器开发了,compiler可是一个很神奇的东西,但是一句两句说不清楚,买本书自己研究一下,这个也是非常实用的。
16、学到这里基本上基础的东西就学的差不多了,但是学无止境,CS既然是是一门科学,那就总也没有尽头,但是当你理解并明白了基础知识之后,一切新的知识学起来都不会太难。