课堂内容总结
1、软件
(1)计算机的物理设备有自己的驱动(driver),相当于接口,用户通过操作系统(Windows,DOS等)对硬件进行管理和操作,这就需要软件。软件是用户和硬件(计算机硬件只是硬件的一部分,硬件范围很广,只要是能看得见的物理实体,就叫硬件)之间的接口。相当于java中的jdbc,jdbc就是为了让JAVA代码能更好的与数据库连接而由数据库厂商提供的接口,驱动是其实现类。
Q:软件和驱动的关系?
驱动就是软件,但软件并不是驱动,驱动只是软件的一种。
驱动只是针对特定的硬件而言的,比如声卡驱动、显卡驱动等等;而软件并不针对特定的硬件,只是需要一个合适的运行平台。
没有安装合适的驱动,电脑的功能和性能会受到很大影响,但仍然可以用来做很多事情,比如打字等等;没有安装任何软件的电脑,没有任何作用。
(2)软件=程序+数据+文档
软件安装在操作系统中,一个软件安装在电脑里,有它对应的程序(本质为源代码),数据(程序运行的参数和中间数据,存在内存,硬盘,云端等),文档(表达自己相关算法思想等的文件,read me等)
(3)软件的分类
系统软件:
1>操作系统软件:DOS,Windows,Linux等
2>支撑软件:JDK(集成开发环境),接口软件(通常用c和c++)等
应用软件(Application):是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合。通讯软件,office等
按工作方式:
1>实时处理软件:航天局对卫星的实时监测,时间天气等的实时更新
2>分时软件:将时间分块,先处理什么,再处理什么。(自己的猜想)有时一个程序没有响应,就会卡在这里,别的软件也无法运行,因为它未处理完,其他软件接收不到可以运行的信号
3>交互式软件:人机交互,游戏等,现在大部分软件都可以交互
4>批处理软件:对数据/作业进行批量处理,群发消息,可以同时调用多个函数的按键,或者就像教室的灯的开关,同时控制多盏灯的开闭
2、软件架构
软件架构是一个抽象的概念,是一张系统的草图,根据功能对组件进行抽象化分类。
3、操作系统(operating system)
图解形式:
操作系统主要有Windows 操作系统(微软)(闭源)、Unix及类Unix操作系统(Linux、谷歌)(开源)、Mac操作系统(苹果)
4、软件开发过程
软件危机:正确性常常得不到保障
软件工程(SE)(Software Engineering):工程化方法----有效,实用,高质量软件
软件是有生命周期的,要设计一个软件,首先需要做问题定义,可行性研究和调查用户需求,其次才开始构架,才开始编写程序,最后进行运营和维护。
UI(User Interface)
UI是对软件的人机交互、操作逻辑、界面美观的整体设计。它实现信息的内部形式与人类可以接受形式之间的转换。
用户界面和用户体验:要找到目标用户,要适应用户的习惯。我们目前写的程序都是让自己看的,为了实现自己想实现的某些功能,得到想要的结果。但是交互是一个过程,是给用户使用的,外观,提示窗口等都需要设计,用户体验是最重要的。
5、程序设计语言的分类及编程模式
1>汇编语言:采用助记符来编写语言,将机器语言(难以直观读懂的二进制代码)用符号表示
2>高级语言:Java,C,C++,Python,Fortran等
1>面向过程:Fortran,Ada,C,Basic等(只针对解决面前的这个问题)
2>面向对象:Java,C++,Vb,Smalltalk等(写出一个通用的方法,每次要执行关于这个对象的一些功能直接调用这个方法就好,易于维护)
举例:
拿学生早上起来这件事说明面向过程,粗略的可以将过程拟为:
(1)起床
(2)穿衣
(3)洗脸刷牙
(4)去学校
而这4步就是一步一步地完成,它的顺序很重要,你只需要一个一个地实现就行了。
而如果是用面向对象的方法的话,可能就只抽象出一个学生的类,它包括这四个方法,但是具体的顺序就不一定按照原来的顺序。
谷歌设计规范精简(一)http://www.ui.cn/detail/332834.html
从程序化设计到面向对象程序设计https://www.cnblogs.com/nihaoCPP/p/object-oriented-programming.html?utm_source=tuicool
面向过程百度百科https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E8%BF%87%E7%A8%8B/9957246?fr=aladdin