计算生态(从开源运动说起)
1983年,Richrad Stallman启动GNU项目 (大教堂模式)
1989年,GNU通用许可协议诞生,自由软件(软件产品不再像工业产品一样,通过商业来分发和销售,而是通过互联网,通过免费的拷贝和使用来进行分发,让更多的人能用得起或能用得上软件)时代到来
1991年,Linus Torvalds发布了Linux内核(集市模式)
1998年,网景浏览器开源产生了Mozilla
1998年,标志着开源生态逐步建立
开源思想深入演化和发展,形成了计算生态
计算生态以开源项目为组织形式,充分利用“共识原则”和“社会利他”组织人员,在竞争发展,相互依存和迅速更迭中完成信息技术的更新换代,形成了技术的自我演化路径。
计算生态没有顶层设计,以功能为单位,具备三个特点:竞争发展,相互依存和迅速更迭
1.以开源项目为代表的大量第三方库
python语言提供了13万个第三方库
网络爬虫(requests库)
数据处理(基础库Numpy(是底层C语言编写的)接口是python语言,可以达到跟C语言编程运行相当的效率。Matplotlib、Pandas等一系列数据处理的第三方库都是基于.Numpy来编写的上层功能)
2.库的建设经过野蛮生长和自然选择
同一个功能,python语言2个以上第三方库
3.库之间相互关联使用,依存发展
python库间广泛联系,逐级封装
社会庞大,新技术更迭迅速
AlphaGo,深度学习算法采用python语言开源
API!=生态
应用程序编写接口
创新:跟随创新、集成创新、原始创新
加速科技类应用创新的重要支撑
发展科技产品商业价值的重要模式
国家科技体系安全和稳固的基础
刀耕火种--->站在巨人的肩膀上
编程的起点不是算法而是系统
编程如同搭积木,利用计算生态为主要模式
编程的目标是快速解决问题
优质的计算生态
用户体验:实现功能---关注体验
用户体验指用户对产品建立的主观感受和认识
关心功能实现:更要关心用户体验,才能做出好产品
编程只是手段,不是目的,程序最终为人类服务
提高用户体验的方法:
方法1:进度展示
如果程序需要计算时间,可能产生等待,请增加进度展示
如果程序有若干步骤,需要提示用户,请增加进度展示
如果程序可能存在大量次数的循环,请增加进度展示
进度条示例如下:
文本进度条
1.采用字符串方式打印可以动态变化的文本进度条
代码示例如下:
import time#采用import函数调用time库
scale=50#变量scale=50,这样子文本进度条的宽度为50
print("{:-^25}".format('执行开始'))#文本进度条的输出宽度为20,居中输出,用-进行填充。
start=time.perf_counter()#使用time.perf_counter()函数进行测量时间。
for i in range(scale+1):#循环次数为scale+1次,即0-10.即0%-100%。因为他的输出格式里面有两类填充字符,所以我们需要分类别进行循环。
a='*'*i #n*x或x*n: 复制n次字符串x,即复制i次字符串'*',i值为临时变量,用于保存每次循环访问的目标对象中的元素,即从0开始。
# 同时'*'*i指当前的百分比所表达的信息。即%几有几个*。
b='.'*(scale-i)#文本进度条的宽度为scale=10,里面除了字符*之外剩下的即为.,所以通过循环的改变,*之外即为.。与当前剩余的进度条的比例的乘积。
c=(i/scale)*100#即进度条所进行的进度的百分比
dur=time.perf_counter()-start#过程时间为循环结束后的时间减去开始时间即为过程时间。
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
'''
3.0f与3f输出的结果不一样,会有精度的影响。
\r:在打印字符串输出之前,能够使光标退回到当前行的行首
其中end="",他是print函数的一个参数,默认情况下我们不增加它,指的是在输出一个信息之后,默认在最后增加一个换行换到下一行
如果我们在输出的信息之后增加end=""这样一个参数,能够改变每一次print输出最后增加的那个信息
通俗点说即为输出字符中增加什么信息,我们就在end参数里增加什么信息。
如果不希望增加换行,则end的参数即被赋值为空字符串。
'''
time.sleep(0.1)#time库的sleep函数,让程序去休眠或产生一定的时间
print("\n"+"执行结束".center(scale//2,'-'))
'''字符串的对齐方法之一为.center方法,
格式为str.center(width[,fillchar),其中width为字符串的宽度,fillchar为参数width指定的长度大于原字符串长度时填充的字符,默认为空格。
宽度为scale//2,填充字符为-。其中//为整除:使两个操作数相除,获取商的整数部分。
'''
方法2:异常处理
当获得用户输入,对合规性需要检查,需要异常处理
当读写文件时,对结果进行判断,需要异常处理
进行输入输出时,对运算结果进行判断,需要异常处理
其他类方法:
打印输出:特定位置,输出程序运行的过程信息
日志文件:对程序异常及用户使用进行定期记录
帮助信息:给用户多种方式提供帮助信息
软件程序-->软件产品
用户体验是程序到产品的关键环节。