软件开发相关概念

下面的一些概念是一个普通程序员常常会遇到的,但对于写算法的程序员可能并不适用。javascript

 

1、计算机硬件css

一)我的电脑主要硬件html

CPU,中文名叫中央处理器,是一台计算机的计算和控制中心。前端

 RAM:随机存取存储器,俗称“内存”vue

 GPU,俗称显卡,是电脑进行数模信号转换的设备,承担输出显示图形的任务。html5

 硬盘,计算机存储数据的部件。java

 主板,是一个集成电路,用于存放各类电子部件,上面说的这些部件都插在主板上。react

 

二)手机的主要硬件,能够说是一种特别的计算机。jquery

1 CPU:中央处理器git

2 RAM:随机存取存储器,俗称“内存”

3 GPU,俗称显卡,是电脑进行数模信号转换的设备,承担输出显示图形的任务。

4 ROM:全称“只读内存镜像”,手机存储数据的部件,至关于电脑中的硬盘。

 

2、操做系统:

承上启下,操做系通通一管理计算机全部硬件资源,为应用程序提供最底层的技术支持。

一)       电脑操做系统

主要有一下四种

Windows系列:微软公司开发出来的。

Mac OS X: 苹果公司开发的出来的。

Unix类:不属于任何公司的技术大神开发出来的,彻底免费开源。 通常会存在一或多技术交流的社区网站。

Linux类:不属于任何公司的技术大神开发出来的,彻底免费开源。通常会存在一或多技术交流的社区网站。

注释:

1)开源的意思:

1开发源代码,任何人均可以避免费下载大神写的代码,一样任何人也能够上传本身基于这个操做系统开发的新功能。

2 提供详细的技术说明文档,文档中有各类各样的api使用方法的说明文字和案例,让开发人一看就明白怎么用这个api。

* Api ,中文名叫接口,是程序之间传递和处理信息的通道,不一样的接口有不一样的名称,调用它可使用他人已经开发好的一个功能,而不用本身再去实现这个功能。

 

二)       手机两大操做系统:

Android:谷歌创造出来的一种适合手机的操做系统

IOS:苹果公司开发的一种适合手机的操做系统

 

3、应用程序

是指为针对使用者的某种应用目的所撰写的软件。

按照手机和电脑可分为:

web应用程序:Web应用程序是一种能够经过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只须要有浏览器便可,不须要再安装其余软件。

App,手机应用程序,须要下载和安装。

 

注释:

*web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是创建在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级连接将Internet上的信息节点组织成一个互为关联的网状结构。 [1]

*Internet,中文正式译名为因特网,又叫作国际互联网。它是由那些使用公用语言互相通讯的计算机链接而成的全球网络。一旦你链接到它的任何一个节点上,就意味着您的计算机已经连入Internet网上了。Internet目前的用户已经遍布全球,有超过几亿人在使用Internet,而且它的用户数还在以等比级数上升。

 

4、两种架构

CS架构:Client/Server,   客户端/服务器架构。

BS架构:Browser/Server,浏览器/服务器架构。

对于非专业人员能够这样理解,只须要浏览器,不须要下载和安装的就是bs架构。须要下载和安装后才能使用的软件就是cs架构。

 

五)编程语言

编程语言俗称“计算机语言”,种类很是的多,总的来讲能够分红机器语言、汇编语言、高级语言三大类。 程序员常说的语言,若是不作解释,通常特指“高级语言”

高级语言按,先后端分类。

1)前端语言:前端编程语言主要就这三种。

1 Html:超级文本标记语言,是一种规范,一种标准,它经过标记符号来标记要显示的网页中的各个部分。网页文件自己是一种文本文件,经过在文本文件中添加标记符,能够告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,而后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不中止其解释执行过程,编制者只能经过显示效果来分析出错缘由和出错部位。但须要注意的是,对于不一样的浏览器,对同一标记符可能会有不彻底相同的解释,于是可能会有不一样的显示效果。

程序员说的html5或H5,就是html开发标准的第五个修订版。

2 CSS:层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不只能够静态地修饰网页,还能够配合各类脚本语言动态地对网页各元素进行格式化。

(就像word中样式控制字体和颜色、大小同样,css控制html网页的样式)

3 JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,普遍用于客户端的脚本语言,最先是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增长动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。由于Netscape与Sun合做,Netscape管理层但愿它外观看起来像Java,所以取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。 [1]

为了取得技术优点,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript一样可在浏览器上运行。为了统一规格,由于JavaScript兼容于ECMA标准,所以也称为ECMAScript。、

(简单的说javascript控制网页的行为,好比点击某个按钮提交填入的东西)

 

2)后端语言:后端语言很是丰富,下面是用的比较多的:

Java

C#

C++

C

PHP

Python

Basic

 

3)数据库操做语言

SQL

 

六)数据库

比较流行的数据模型有三种,即按图论理论创建的层次结构模型和网状结构模型以及按关系理论创建的关系结构模型。但软件开发用的最多的是关系型数据库,主流关系型数据库就三种: SqlServer、Oracle、MySql ,这些其实叫数据库管理工具,是一个功能强大的软件,为了交流方便程序员通常会说“Oracle数据库”或“Oracle”而省略掉“管理工具”。其完整意思是“咱们的数据库是用Oracle开发的”。

比较流行非关系型数据库有: MongoDB、Redis。

 

七)缓存系统

Memcached,一款开源分布式缓存系统

 

 

八)多端,一个软件可能有不一样的客户端。

web:咱们电脑和手机浏览器里看到的网页,咱们之因此能看到是由于浏览器将程序员编写的html、CSS、javascript等代码解释成咱们能看到的图形界面。然而浏览器种类很是多,这就致使一样一份代码在不一样浏览器呈现出不一样的样子甚至出现错误。为了解决各类浏览器不一致的问题,必须有一个标准,所以就出现了制定html css javascript标准的机构,Html5就是制定标准的机构发布的html标准的第五个版本。同理还有CSS二、CSS三、ECMAScript5(或ES5)等版本。这些标准规定明确了浏览器必须怎么解释代码,程序员必须怎么书写正确的代码。

 

App:手机应用程序,必须下载并安装才能使用,不须要浏览器就可使用。目前绝大多数app后端都是用java语言开发的。操做系统为应用程序提供底层基础的技术支撑,手机两种主流操做系统:Android和IOS,因此app还须要兼容这两个系统,若是没法同时兼容两种操做系统那么必须开发两个版本的app。一个是Android版,一个是IOS版。

 

微信小程序,微信里面能运行的“小程序”。

微信公众号,微信里面能运行的“公众号”,普通人能够直接使用,能够进行二次开发(其实是跳转到本身开发的网站)。

 

九)框架、库、UI组件

       前端框架、库、UI组件,本质是由html css javascript 三者组成。他们对程序员常常须要的东西进行了加工和整理,让程序员可以简单的调用api实现之前看了很是复杂的功能,大大提升开发效率。

1前端库:最出名就是 jquery,是javascript语言编写的一个代码仓库,它实现了程序员经常使用的多种功能,程序员只须要查看它的说明文档,学会调用它提供的接口就能够实现之前须要本身写不少代码才能实现的复杂功能。

后端库: 通常叫后端类库,使用某一种或多种后端语言编写的一个代码仓库,它实现了程序员经常使用的多种功能,程序员只须要查看它的说明文档,学会调用它提供的接口就能够实现之前须要本身写不少代码才能实现的复杂功能。

 

2前端框架:框架是一套架构,会基于自身的特色向用户提供一套至关于叫完整的解决方案,并且控制权的在框架自己,使用者要找框架所规定的某种规范进行开发。目前比较流行的有:

1)vue 官网 https://cn.vuejs.org/ 公司 第三方团队

2)react 官网https://reactjs.org/ 中文社区http://react-china.org/ 公司Facebook

3)angular 官网https://angularjs.org/ 中文管网 https://www.angular.cn/ 公司google

以上三个既能够用做web也能够用做app的基础。

 

3后端框架:目前主流是MVC架构,不过随着webapi的崛起和前端愈来愈强大,将来先后端代码将彻底分离。前端ajax请求,后端webapi回复。

 

       4前端UI组件:中文名前端界面组件。

1)  web UI库

a)基于vue:

iview 官网https://www.iviewui.com/ 公司:第三方团队

elementUI 官网 http://element-cn.eleme.io/#/zh-CN 公司:饿了么

b)基于 Rect、Angular

c)基于jquery , juqeryEasyUI,用jquery实现的一种前端UI组件,基本要淘汰了。

 

2)app UI库

A)Framework7 官网http://www.framework7.cn/ (有iOS 和 Android 两种样式集)

基于jquery 不过已有Vue、React 版本的实现了

Framework7-Vue http://vue.framework7.cn/ 基于 vue.js

Framework7-React http://framework7.io/react/ 基于 React

B)SUI Mobile 官网 http://m.sui.taobao.org/ 基于Framework7 公司:淘宝

C)React Native 官网 https://reactnative.cn/ 或者

NativeScript,官网https://docs.nativescript.org/

基于 React,根据你所使用的操做系统、针对的目标平台不一样,具体步骤有所不一样。若是想同时开发iOS和Android也没问题,你只须要先选一个平台开始,另外一个平台的环境搭建只是稍有不一样。

D)Ionic 官网https://ionicframework.com/ 基于angular 版本 angular2和Ionic2

E) FrozenUI 官网http://frozenui.github.io/

F) MUI 官网http://dev.dcloud.net.cn/mui/     http://dcloud.io/index.html    https://segmentfault.com/a/1190000005173713?_ea=841544

3)微信 UI库

WeUI https://weui.io/ 只是一个样式集无js操做。 应用举例 https://weui.io/weui.js/

vux https://vux.li/ 基于vue.js和WeUI

 

十)其它概念

Ajax: 一种异步想服务器请求数据的技术。

Json: 一种数据存储格式。常在ajax请求时使用。

服务器:是一种计算机,它与普通计算机的优势是:

1)工做很是稳定,超长时间运行,不会死机。

2)操做系统是服务器操做系统:Windows Server、Netware、Unix、Linux。

3)中央处理器、内存、硬盘都比普通计算机强不少倍,价格也是。

 

 

九)软件开发流程和分工

1通常流程

https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B/3430246?fr=aladdin

2分工

1)小微企业:

需求分析人员:将用户的需求梳理成为一个个功能模块

前端开发工程师:PhotoShop切图、功能界面设计、代码实现、测试

后端开发工程师:数据库设计、负责后端代码编写、测试、项目实施

2)中大型企业

https://wenku.baidu.com/view/91f3c5acdd3383c4bb4cd296.html?rec_flag=default&sxts=1539063114996

项目经理

系统架构师

需求分析师

系统分析师

数据库设计师

软件设计师

软件工程师

测试经理

测试工程师

实施经理

实施工程师

美术工程师

客户经理

产品经理

运维经理:领导运维人员,负责公司硬件设备的正常运营和维护。

运维工程师:负责公司硬件设备的正常运营和维护。

3)超大企业:项BATJ这样的企业,请百度。

 

十)算法

算法:https://baike.baidu.com/item/%E7%AE%97%E6%B3%95/209025?fr=aladdin

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能类似的方式作出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、天然语言处理和专家系统等。

https://baike.baidu.com/item/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/9180?fr=aladdin

人工智能的本质是算法。根据领域分工不一样,分为:机器人算法工程师、 图形识别算法工程师、天然语言算法工程师等。根据编程语言不一样,又可分为:NLP算法工程师、C++算法工程师等。下面是“前程无忧网”搜索“算法工程师”的结果:

https://search.51job.com/list/000000,000000,0000,00,9,99,%25E7%25AE%2597%25E6%25B3%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,3.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=

机械学习:机械学习是解决某类问题的某一类算法,是算法的一个分支。

  深度学习:机械学习的一个分支。

 

十一)举例分析

机械学习算法工程师:

任职资格:
1.计算机或者图像处理、模式识别、机器学习相关专业,本科以上学历;
2.有RNN,CNN模型训练和调参经验,熟悉经常使用的深度学习工具(如TensorFlow,caffe等),本科要求有5年以上该领域工做经验,硕士要求有3年以上该领域工做经验;
3.在图像识别、理解、分割领域有研究,有行人、车辆检测、物体检测等经验优先;
4.熟悉C++,Python,Matlab等语言;
5.熟悉安霸芯片架构优先;
6.在相关领域的知名国际会议发表过论文者优先。
岗位职责:
1.领导算法团队开展技术攻关、算法产品化工做,以及团队成员培养;
2.负责计算机视觉、机器学习(深度学习)的前沿算法研究、开发和实现;
3.基于公司ADAS产品,负责算法选型、框架搭建、调优等,解决具体应用问题。

 

注释:

1) RNN:循环神经网络  。https://baike.baidu.com/item/RNN/5707183?fr=aladdin

2) CNN:卷积神经网络 。

https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/17541100?fr=aladdin

3) ADAS:高级驾驶辅助系统 。

https://baike.baidu.com/item/%E9%AB%98%E7%BA%A7%E9%A9%BE%E9%A9%B6%E8%BE%85%E5%8A%A9%E7%B3%BB%E7%BB%9F/16837281?fr=aladdin&fromid=11003651&fromtitle=ADAS

4)MATLAB:是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。https://baike.baidu.com/item/MATLAB/263035?fr=aladdin

5)TensorFlow  是谷歌基于DistBelief进行研发的第二代人工智能学习系统。https://baike.baidu.com/item/TensorFlow/18828108?fr=aladdin

6)caffe 卷积神经网络框架,是一种经常使用的深度学习框架,主要应用在视频、图像处理方面的应用上。 https://blog.csdn.net/qq_27923041/article/details/77431833

 

十二)介绍编程知识的网站

菜鸟教程:http://www.runoob.com/),你能够用它了解一些编程概念。

 

至此,做为一名菜鸟级别的程序员,本人也已经进入彻底陌生的领域,没法在作更多的解释。

 

解决问题步骤总结:

1) 百度一下;

2) 问前辈,问专业人员;

3) 自主思考和尝试。

4) 向上级反映搞不定,让上级以为下一步怎么作。

 

遇到问题,伤心难过都是没用的,咱们要作的是千方百计的解决,这样,若是咱们成功了,咱们会笑的更开心;若是咱们失败了,也能不留遗憾的从新投入到另外一个本身喜欢的工做中。

 

写完才发现对你的工做可能没什么帮助,由于你要招聘的算法工程师,而我并不了解算法工程师。可能更有效的是去“博客园”、“CSDN”这样的知识分享网站注册帐号联系他们是否有工做意向,或者去“前程无忧”这样的招聘网站注册一个企业帐号发招聘消息并想方法主动联系他们。

相关文章
相关标签/搜索