zoukankan      html  css  js  c++  java
  • 软件开发相关概念

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

    一、计算机硬件

    一)个人电脑主要硬件

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

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

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

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

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

    二)手机的主要硬件,可以说是一种特别的计算机。

    1 CPU:中央处理器

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

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

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

    二、操作系统:

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

    一)       电脑操作系统

    主要有一下四种

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

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

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

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

    注释:

    1)开源的意思:

    1开发源代码,任何人都可以免费下载大神写的代码,同样任何人也可以上传自己基于这个操作系统开发的新功能。

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

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

    二)       手机两大操作系统:

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

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

    三、应用程序

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

    按照手机和电脑可分为:

    web应用程序:Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。

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

    注释:

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

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

    四、两种架构

    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标准的第五个版本。同理还有CSS2、CSS3、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”这样的知识分享网站注册账号联系他们是否有工作意向,或者去“前程无忧”这样的招聘网站注册一个企业账号发招聘消息并想方法主动联系他们。

  • 相关阅读:
    php数据缓存到文件类设计
    php静态文件缓存示例
    php array_merge和“+”的区别和使用《细说php2》
    kafka环境安装及简单使用(单机版)
    Protobuf的上手使用
    Java8新特性概览
    Mock测试框架(Mockito为例)
    Java序列化与反序列化
    系统/项目环境搭建
    关于Tomcat服务器中的协议及请求过程
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/10868429.html
Copyright © 2011-2022 走看看