农民的种类很多,有粮农、菜农、果农、奶农、花农、码农(新时代的代码民工)等。码农对信息化社会的进步起了很大的作用,我们基本上每天都会用到或看到的,像手机app、电脑软件、网站、电话通讯等,这些都是码农的辛勤付出。那么成为一个合格码农需要哪些技术知识呢,这里简单分析一下。
一、数据结构--把数据元素看成有结构的事物
就拿家里盖房子或城市盖高楼大厦来比较,一般像窗户、门、楼梯、厨卫等都有定制好的部件。这个就类似于数据结构的结构,我们没有必要一块一块的垒砖了。
二、操作系统
我们熟悉的操作系统有windows XP、windows 7、windows 10、苹果系统、Android系统等都属于操作系统的范畴。操作系统本身是一个非常庞大的软件系统,很复杂。学好操作系统基本原理对我们以后学习或者是开发操作系统相关的软件帮助很大。
三、计算机网络
计算机网络技术,只要是有通讯的地方,都可以用到网络,它就像我们城市里的各种管道、交通设施、电网、排水排污、暖气、燃气等,网络技术包括 等。
计算机网络技术是通信技术与计算机技术相结合的产物。主要课程内容有OSI模型、各种网络协议等
四、计算机组成原理
就像盖楼一样,我们不仅要关心砖块、钢筋、水泥等,还需要关心他们是之间的关系,各个部件是如何工作的,才能保证一座大楼在多少年没有质量问题。
五、数据库系统概率
数据库系统类似于仓储管理。现实中储存的是各种物资,而数据库存的是数据。数据库系统就像以人为本的思想,一座大楼是以人为根本出发点设计的,服务于人才有意义。软件系统也是一样,如果开发一个软件系统,不处理好数据库(如数据库性能瓶颈、安全性、一致性等)的问题,那这个软件系统一般也没有什么实际意义。
六、算法
计算机编程开发的灵魂,也是数据结构课程的一个延伸学科,学习算法主要是了解算法的原理,一般可以画图、表等辅助理解。具体是用什么编程语言来实现,只有在应用的时候才有意义,编程语言不是重点。学校学的毕竟很有限,最重要的是养成训练算法的好习惯。网上有很多算法学习的网站,可以一日一题的去练习,增强自己的算法能力。
七、离散数学、线性代数、概率论与数理统计
对于这些数学课程,有些“搬砖的码农”可能用不到它们,但是目前的大数据开发分析(开发)、人工智能、机器学习等都可能用到它们,如果不了解这些数学课程去学习相关技术,那么只能当“调参侠”了。
八、面向对象思想及设计模式
面向过程基础包括顺序、选择、循环、方法等概念,相对很少。面向对象思想,博大精深,除了概念多,也需要的有较深的领悟能力。一切皆对象,可以说用在软件开发的方方面面,不仅仅是代码开发层面,还有软件工程层面。
九、软件工程思想
软件开发是个系统工程,类似于修桥铺路建房盖楼,都有工程的一般特性。工程是多人协作的,除了自身的专业技能素养之外,还需要有管理、领导、沟通、协作、人品、三观(人生观、世界观、价值观)等软实力。
十、终身学习思想
学习知识和软件开发一样,都是如逆水行舟,不进则退。不能有学校学的好,工作以后就不需要重点学习的思想。也不能有某个技术我学好了,以后就轻松了的思想。现实中技术更新迭代太快了,基本不会给你留喘息的余地,只有正视问题,养成终身学习的好习惯,才能使自己长期立于不败之地。
十一、英语
英语没有必要过多的累述,基本学好英语对各个学科都有用。英语能力强的同学在技术文档阅读、编程编码、信息获取等各个方面都会有很大的帮助。
总结:
万丈高楼平地起,厚积才能薄发,打好基础才能盖高楼!
本人十年软件开发经验,现致力于软件开发基础传播和人工智能的CNN、RNN领域的研究,欢迎常来,一起探讨成长!