编程除了语言还需要什么?我想跳出这个问题,从编程的整体进行分析。首先对于想要从事编程类行业的小伙伴,你们首先要有一个大体的前景远见。程序员大多都要从以下两个方向选择自己的行业目标:
1、面向用户的设计类方向
这个方向简单的举例来说基本不需要计算机理论基础也不需要什么编程理论基础。基本是所写所见即所得。比如html, css, 以及简单的Javascript。
这些功能包有一个共同的特点,就是都能通过很短的时间学习就可以做出成果。虽然它可能很丑,很土,但是随着你对它的要求不断的提高,你就会不断的进行完善学习。 这时你会针对性的选择书籍进行学习,比如《JavaScript权威指南》,当然随着学习的深入,你会不断的接触各类框架, 各类工具, 各类新语言, 最后在这棵树上你会成长为一名"前端工程师"
2、面向服务的计算类方向
对于纯新手来说,即使选择相对简单的python进行入门学习, 一开始需要迈过的门槛就是搭建开发环境到第一段程序执行的过程, 因为没有任何经验, 在这个过程中很多问题对有经验的人来说可能连问题都算不上,但是对于没有任何经验的新手来说可能是抓心挠肝,。
比如手册上需要配置环境变量,你可能因为环境变量是什么都不知道而折腾很长时间; 直到迈过这个小坑,正式进入开发学习阶段, 你就可以针对性的选择书籍或者网上的教程来学习了; 随着经验值的增长,你会不断的横向扩展到其他语言, 比例某些场景需要你用C/C++, 有些工作场景要求你用JAVA等等。
这时仅有的python知识是支撑不了后续的学习的, 这时你开始补充计算机理论,编译原理, 数据结构,算法等等理论知识; 同时有些业务场景需要用到数据库, 你还需要进一步补充数据库相关能力; 最后在这个方向上你会成长为一名"开发工程师"或者其他的什么乱七八糟名字。
从某方面说这两类方向如果作为一颗树的两支主干,下面有非常非常多的分支, 不同的公司,不同的项目,分工都不同,都会衍生出不同的分支, 每个分支都不可或缺且都能够大放异彩。
你首先要做的就是从这两个方向中找到自己想要做的,然后趋向其相对应的语言和学科知识。
基于方向的选择,我们再选定一门(一类)编程语言,然后才考虑还要学习什么。
理论基础。很多人在学习编程时陷入了一个思维误区,即编程语言要更加重要而忽视了理论基础的学习。我认为首先还是要学好理论,打好基础,诸如操作系统,数据结构与算法,编译原理,计算机网络,离散数学等,尤其是数据结构与算法,工作笔试面试中是重中之重。
这里简单推荐一些学习资源,在线课程比如浙大陈越老师在中国大学mooc的数据结构公开课,书籍的话入门者推荐《大话数据结构》《算法图解》,进阶推荐《算法导论》,当然面对工作更重要的是刷题,大名鼎鼎的LeetCode,牛客网等平台,还有《剑指offer》《编程之美》等有口皆碑的好书。
紧接着,我们要学习计算机的一些基础数学知识,如树、排序、图论、群、数据库组织之类的概念以及线性代数、概率论以及微积分等数理知识。在大型工程的创作当中,程序员需要完整而又系统的知识架构才能更加完整而又高效地完成。而所需的知识架构正是由这些基础的数学知识构成。
这里为大家简单介绍一下算法和数据结构所谓何物。
算法和数据结构是一个程序员成体系的完成一项工程的关键。大家思考一下,给定一行数字,如何最快地将其按大小排序。
注意,要用计算机的思维!
其实这里就涉及到了一个最简单的算法,我们叫它冒泡排序。即将相邻的两个元素依次比较并排序,不断走访,不断重排。很多互联网大厂的面试题都是以算法题为主,因为算法能力是最能体现程序员素质以及编程思维的。
再有就是数据结构,在科班IT类专业大学生眼里,数据结构是大学学习中最重要的一门课程。它之所以如此重要是因为它是程序员独立完成一项任务的基础。科班计算机学生以及步入工作的职员会经常听到诸如二叉树、红黑树等概念(假如连这都没听过,那么建议抓紧去学......)。这都来源于数据结构这门课,这门课程的培养目标是培养程序员完整系统地梳理一项工程的能力。鉴于题主目前所处阶段,可以先以C语言为基础进行尝试,在较为熟练地运用C++或Java后再进行进阶。
- 整理了一份关于java的系统化资料,从Javase- ssm-springcloud,包括了面试题,PDF电子书,网上商城项目,个人博客项目,分布式项目等都有想学习Java或者转行,大学生都非常实用,无任何套路免费提供,,在 679126598 下载,有什么问题都可以来问我
- 最新Java精讲视频,PDF书籍教程,面试题,学习手册
归根结底,我所说的其实还只是编程学习上的冰山一角。
无论什么学科,最看重的都是学科学习的系统性,即你需要充分学习这门科学的每一个方面。越高科技,技术含量越高的领域往往也伴随着更快的更新速度。
IT领域更是如此,可能你自以为自学或在补习班短时间学习的知识足以应付当前工作,但是当你逐渐深入,就会发现自己逐渐无法跟上时代的更新,以至于被行业无情淘汰。
系统性地学习需要科学的规划和长时间的练习!