转载:计算机知识储备
浅谈计算机开发技术人员的基础知识储备2016-04-28 转载 黑客与编程
转载
标签
计算机技术范围巨大,现代生活和生产的方方面面,已经离不开计算机技术了。而这几年计算机技术的极速发展,每天都有更新、更好、更有思想性的技术出现,这个领域完全是爆炸式的发展。一个有志于计算机开发技术的人员,刚开始总是会遇到摸不到头脑,不知如何开始学习。大学里的教育,偏重于计算机理论,对实际应用偏轻;理论知识学起来晦涩难懂,教学内容时常落后且脱离实际,很多人毕业后,对于市场需求的技术很多人还没听说过。而市场上的各类培训班,又及其功利,都是就某个市场需求热点做皮毛应用教学,相关的理论思想完全没有涉足,培养了一堆只懂皮毛、眼界狭小的初级码农,很难在能力上做突破。
如今这个行业的技术已经越来越细分。但是就整个行业而言,各个细分领域是有着千丝万缕联系关系的,一个开发人员的技术广度,决定了他的技术眼界和能力拓展的范围。在企业的计算机人才需求中,经常会遇到这样的情况:
这个页面显示是前端人员的事,前端我不懂,问他们去。--这个数据的处理,是后端开发的,他们那套东西我不懂,别问我。--系统为啥运行的这么慢。。。这个我也不知道啊,我代码写的没问题,找运维吧!
且不说企业能不能承受这么多细分领域专门人才的储备,作为一个优秀的开发人员,一定要对大范围的技术广度有所了解,不能只知道自己领域而对整体完全不清楚。而作为项目经理,更需要有整体的技术概念,否则面对客户的需求、老板的压力、和开发的沟通,就不可能做专业化的沟通。较为完整技能的工程师---被称之为全栈工程师,市场上极少当需求极为抢手,也是因为他们有着全局技术的观念,自身具备独立完成整个项目建设的能力,更能带领有分工的团队进行技术的开发。
我个人认为,学习计算机技术,需要打破既有的思维,从大的方面先理清思路,首先要做的是拓宽眼界广度,尽可能多的了解整个领域的方方面面,然后再具体到某一特定领域,做深入的细致深度研究。最关键的是要与时俱进,随时了解最新的技术动态,将知识储备的范围尽量扩大。
就具体而言,计算机技术开发人员的基础技术储备,我总结了以下需要了解并学习的六大框架,包括且不限于:
运维技术(基本的设备硬件组成,系统环境,网络数据交互原理,维护及优化)
运维技术是开发的基础,贯穿于整个开发过程中。如果不了解网络原理,是无法了解代码开发中数据的交互方式的,不懂linux的操作,意味着大部分的服务器、大部分的移动设备操作系统内核、嵌入式设备的开发根本无从谈起;不懂得网络路由,也无法明白web应用的后台优化,大型服务的架构无法实现。
一、操作系统的使用,最基本的有两大操作系统WINDOWS的操作,linux的操作,虚拟机理论,沙箱、容器概念;
二、计算机网络原理,熟悉根本的OSI模型,TCI/IP模型及协议,数据传输的HTTP/HTTPS的协议;
三、运维服务,知道基本的网络设备运行原理,IP设置,DNS,局域网和互联网路由原理等;
四、设备硬件基础,知道电脑、移动设备零部件的基本组成和特点,简单的维护技能
五、大数据分布式架构,
前端开发(客户表现端)---页面设计,HTML/CSS/JS ,类库使用
前端是直接展示在使用者面前的界面。狭义的就特指浏览器中的页面显示的部分。这部分包含前端的结构、布局、元素,元素的样式表现,以及元素的行为事件处理。
一、基础视觉UI理论,交互方法理论;安卓、苹果和WP系统的UI特点,交互规范及其原理;
二、HTML/HTML5 的设计
三、CSS/CSS3 样式设计
四、前端Java Script语言设计
五、不同浏览器核心和版本,其核心(渲染引擎和JS引擎)对代码解析运行的兼容性分析
六、在这三大设计基础上实现功能加强和管理的各类类库(如jquery)、框架(extJS、angulaJS、等等)
现在已经有了“富前端”设计的倾向。随着客户端设备的性能提升,原先需要由后端完成再传输到前端显示的业务功能正在往前端倾斜。而最新的HTM5/CSS3/JS ES6标准的日趋完善,浏览器的核心支持,使得向本地缓存、离线运行和本地简单数据库的开发更加富有能力,从而大大减轻服务器端运行压力和互联网数据传输压力。
后端开发(后台模型以及业务端)
这里的后端开发,包含了作为服务提供端的业务模型、控制代码开发,以及处于底层的驱动类硬件开发,还涵盖和运维相关的应用开发等。分为以下几类:
一、设备端的本地程序开发。和硬件配合多,经常使用的有汇编/C/C++等语言。
二、作为服务端,和前端交互的网络应用开发,经常使用的有.NET/JAVA/PHP 三大体系;还有一些较新的如NODE.JS,PYTHEN,GO语言等。在这些体系上大多都有面向设计模式的应用框架,如java的SSH/MYBAITS、PHP的thinkPHP、YII等。也还有基于应用平台的服务开发。
三、数据库语言技术,分为关系型和非关系型两大类,典型的有mySQL、sqlSERVER、Oracle、mogonDB等数据库。还涉及到架构运维技术,后端服务器的负载均衡设计开发,redis等分布式数据库管理及维护等。
五、移动开发。移动开发目前看有三类,一类是原生开发,即安卓/苹果/WP端的原生设计程序,用不同的语言做开发,每个不同的平台需要不同的开发环境;另一类是基于前端HTML5/CSS3和JS的web跨平台,然后通过中间件做app包装,实现跨平台的开发。web app是一种趋势,但其由于内核还是基于浏览器的,实际应用的用户体验和性能还不如原生程序,但不失是一种快速、低成本的方法。还有一类是基于某个大型应用平台的移动开发,如微信平台,此类开发按照平台标准的接口,实现在此平台上的应用。
四、专业领域编程技术。如金融数据分析语言、数学计算语言等等,典型的如matLab
五、大数据平台开发如hadoop,spark网络分布式计算开发
六、嵌入式设备开发技术
程序开发理论(模型、需求、设计、模式、代码)---软件工程/软件开发理论
这里是理论范畴,但是和一个系统的开发息息相关。一个项目,从客户提出想法开始,最后到完成功能代码,上线交付整个过程中管理人员和开发人员所涉及到的相关理论。最简单的,一个脚本文件,代码实现单一功能。但随着需求的增多,代码的复杂程度立刻指数型上涨,如何管理?
一、客户的需求,可能是个模糊的概念,这时候首先需要建立模型,UML建模工具的使用
二、建模后需求的具体呈现,包括美工UI设计、交互设计、原型设计等技术
三、具体需求的实现,用什么语言开发,用哪些工具,用什么样的开发方法,如何保证客户需求变更所带来的影响,开发的周期和成本分析,版本控制;
四、软件开发中面向结构、面向对象、基于对象的设计方法,计算机语言理论
五、具体实现的代码过程,代码MVC/MVP/MVVP开发思路,开发模式理论,产品的移植和维护方法。
算法理论 ----数学理论,数据结构,复杂度计算,各类算法
在代码的开发过程中,实际业务的实现,经常会遇到算法理论。这些内容更偏向数学和逻辑分析,程序设计中一定回到。经常遇到的有:
一、计算机原理,算法理论,复杂度计算,图灵机理论
二、数据结构理论,各类数据结构的应用优缺点
三、数据压缩、加密理论,计算机图形计算理论
四、人工智能算法,神经网络,遗传算法,图像识别,逻辑论,自然语言识别算法,虚拟设备理论,。。。
开发实务(平台,工具,框架等)---成熟软件使用,开发工具、插件使用,开发框架的使用
大量的成熟软件平台,给技术人员开发提供了很好的基础。作为一个开发人员,学会一些必备的软件系统和工具,能大大节省开发时间,减少重复劳动和机械操作。这些软件和工具涉及到上面说到的方方面面,熟练应他们,是基础技能之一。优秀的产品层出不穷,希望大家能多探索,找到最适合自己应用的工具。在以后的博客里,我会尽量列出相关清单,供大家参考。
以上是本人计算机领域技术学习心得和分析总结,一定无法涵盖所有的内容,错误也难免,只是抛砖引玉,望更专业的人员补充、指正。就更广泛的层次而言,除了以上的知识储备,开发人员更需要的是永恒的好奇心,保持对所有新奇事物科学的认识态度,和积极地接触、学习的永恒动力。要知道这个世界的变化是无时无刻的在进行的。
我本人当前的深入的领域是前端技术。web为王的时代,前端技术蓬勃发展,一入前端深似海! {:10_261:}哈哈 LZ的题目起的不恰当, 应该改为" 浅谈web开发技术人员的基础知识储备"
页:
[1]