昨天同事接到了一位朋友的电话,咨询如何学习软件编程?因为其已经过了学习的最佳年龄,况且还有自己的职业,所以一直苦劝其放弃此想法,但这哥们极其执着。本以为是其奔着软件的高薪去的,结果细聊才得知,是其想搞个项目,其中一部分涉及软件,为了节约成本,所以想自己搞,在这哥们的概念中,软件编程不就是三五个月就学成出山了么?嗯,理想很丰满,现实很骨感。软件不是学驾照,花三五个月就可以搞定的。广告误人啊。——引言
今儿就正儿八百的讲讲,小白如何学习软件编程。首先,负责任的说,软件编程的学习绝不是考驾照,认真学它三五个月,就可以出山了。三五个月,对于有一定基础的人,这只是入门的时间,甚至,有可能连入门的时间都不够。所以我们来看看零基础学习软件,都需要过几关,花多长时间?
既然是零基础的小白,那就需要从零开始学起。下面我们来整理整理从零开始学起,需要过几关。
第一关、计算机基础知识体系
非常重要。任何一个软件开发工程师,都需要熟知计算机基础知识。这一关必须过,当然也有跳过的,认为其太简单,跳关了。结果呢,就是在你的职业生涯中会遇到很多问题,你根本不知从何下手去解决。
很多初学者,都有一个共性,不会用百度,究其原因,第一是对百度搜索策略不是很熟悉,另外重要的一点就是输入的关键词不准确,为何?因为你都不知道出现的问题关键点在哪里,还是那句话,基础不够扎实。
举个例子:乱码。乱码的问题至今任然存在于各个软件中,如果你不知乱码形成的原因,你就永远不知该从何处下手去解决它。幸运的话,你不会遇到乱码,因为现在的软件从底层开始就在解决此问题,不幸的是,任然在很多技术中需要对中文进行严格的处理才可避免乱码。实战,为何有些网站下载的文件就可以正常显示中文,为何有些网站就不可以呢?
学习内容:
计算机基础知识又包括哪些内容呢?如果你是一个计算机专业的学生,那么就该恭喜你了,这个在你的大学生涯中都会学到。如果不凑巧,你需要学习这样的内容,则开始从计算机系统知识、操作系统、软件基础、网络基础、数据结构及算法、数据库基础等等开始掌握。每个内容都可以展开成为一本书。貌似很多啊。
学习方法:
至于具体学习,这部分,可以自学,加之网上的一些视频教程,也可以借助一些交流群、论坛来解决问题。当然,如果银子充足,可以选择一些培训机构,但要审慎,还是那句话,广告误人啊。
我们的建议是:自学+咨询。最好可以找到一个靠谱的人,来给你划个重点,把重点内容精学,其他内容粗学。这个过程有两点要注意:建立完整的计算机知识体系框架,充分理解计算机原理,包括计算机工作原理、操作系统原理、软件原理、数据库原理。
重点:此阶段肯定会涉及一些编程语言,譬如:C/VB什么的,不用太在意的去掌握这些语法,但要了解语言的基本概念。譬如:与或非、变量、常量、循环、条件等,但这个说法有点矛盾,所以,在此可以读懂程序,但不一定完全会写即可。
学习时长:
这部分的时长是最不好计算的,因为除了在校大学生专业课授课以外,这部分的学习在任何地方都不会系统化的讲解,基本都是选取一些重点来讲。大学的学业是三年时间(第四年实习),你说你得用多长时间搞定三年的课程。短则两三个月,长则半年以上。所以,还得看你本身的基础。
闯关了
罗列几个问题,请过关同学尝试回答。
1、为什么现在计算机的性能瓶颈是在硬盘?
2、谁可以解释一下计算机启动的步骤和过程?Win10的快启有何不同?
3、请说说ASCII、Unicode、UTF-8之间的区别。
4、你知道的数据结构有哪些?并来说说他们的应用场景。
5、你认为最快的排序算法是哪一个?原因是什么?
6、数据库索引的目的是什么?使用索引带来的最大问题是什么?
7、解释一下进程和线程的区别,Windows和Linux的进程和线程有何不同?
第二关、软件编程知识体系
选择一门编程语言
具备了计算机基础知识之后,就可以开始软件编程的学习了。编程之旅即将起航。又是一个老问题,编程语言学什么?Java、C#或Python,任选。不做推荐,觉得自己所掌握的资源更有助于学习哪一个,就学哪一个。对了,程序员不仅仅是掌握一门语言的,入门先从一门语言开始吧。
有同学就问了,那C或C++呢?坦率的讲,如果你确认从C/C++开始学起,我认为这是一件好事,因为C/C++的起点一定比Java/C#之类的要高,需要的知识面也极为广泛。C/C++多用于开发一些更接近系统的软件,还有一些游戏开发,但其学习成本较其他语言高,且难度也大,周期也长一些。Java/C#之类的都可以理解为快速开发语言,企业化开发多用这类语言,但C/C++无可替代。
基本语法关
这一关主要是编程语言的基本语法了。基本语法这个没什么可说的,自学即可。我们的观点,能自学的就自学吧,省点钱是点钱,这叫用时间换钱,也是一种创收,等真正工作了,就真没时间了。而且基础语法还算是比较简单,也是可以通过自学完成的。你说ifelse有多难,for有多难,与或非有多难,都简单么。
上一环节在学习软件基础的时候,涉足了编程的内容,那么用你选择的语言去练习吧,不仅仅要读懂,更要写明白。
理论实践关
这个环节真的就需要对一些重点知识进行深入了,只有理解了才能去实现。譬如: