欢迎光临散文网 会员登陆 & 注册

【D1N910】编程习惯养成与思维学习笔记

2023-06-27 11:14 作者:爱交作业的D1N910  | 我要投稿

正常操作,正常分析,大家好我是D1N910。


下面是学习

https://linklearner.com/#/learn/detail/60

编程习惯养成与思维 的内容




1/7 防御性编程的基本思想

假设A:不要指望用户提供您所需的完美输入。即使您要求的是正数,用户可能会提供其他类型的输入。


假设B:即使您是程序的编写者(可能是我,也可能是您自己),程序可能存在错误。因此,您应该意识到不仅用户可能会犯错,程序的其他部分也可能会出错。


进行多样化的测试:为了应对可能出现的问题,您需要进行各种不同的测试。您的假设是宁愿在某些事情出错的情况下发现错误,而不知道问题的具体来源。


主要原则:要记住的重要事情是,人们普遍有犯错的倾向。因此,编写程序的目标是避免在用户犯错时发生灾难性后果。


养成防御性编码的习惯:为了实现上述目标,您需要培养编写防御性编码的习惯,即考虑可能出现的错误和异常情况,并采取相应的措施来防止灾难发生。


2/7 科学分析思维 

迭代问题逻辑

1、选择一个可以计算的变量(Choose variable that "count")


2、在外部需要初始化它(Initiative outside the loop)


3、需要设置正确的最终测试(Setup and test)


4、构建代码块(Conctract block)


5、清楚当代码运行结束后该怎么做(What to do when done)


代码效率

目前需要解决问题的增长速度高于电脑计算速度的增长


在时间、空间恒定的情况下,需要考虑的是:


1、计算需要多少内存

2、输入大小的函数所需的基本步骤数量是多少


3/7 图灵完备语言

图灵完备语言包含三部分

1、数据:数组、字符串、布尔值

2、操作:数字运算,如+、-、and、or等

3、命令:赋值、输入/输出、条件/分支、循环机制

有了这三部分,我们就可以做任何事情,包括自然语言学习,图像识别,语音识别等


4/7 Debugger的思路

debugging的目标是朝着没有错误的程序进行运行。做这个最好的两个工具是打印阅读代码(带着怀疑的眼光看) 首先要发现产生问题的最小输入,然后进行打印测试。


采用二分法进行测试:

    每次是在代码中进行打印,每次测试可以排除一半的代码块。

    * 自己先预测一下结果会是什么,耐心冷静的减小搜索出现问题的地方。


请教别人:

    在请教别人的时候,自己会把问题逻辑整理清楚再去问。有时候在问的时候,问了一下,自己就会恍然大悟,原来是这样。


5/7 抽象化、模块化、封装代码

这部分是为了解决阅读代码的问题。几十万行的代码直接理解起来不是一件简单的事情。通常会把代码进行分成几个模块,一个模块负责对应相关的操作。这样不仅有利于阅读代码,同时也方便后续的debugger。

例如:机器学习的相关代码会分为数据清洗、训练、测试,三个大模块。


6/7 如何知道运行代码的时间

经过基础部分的学习大家已经了解到运行不同的代码是需要不一样的时间的。影响代码运行时间包括但不限于:机器性能、使用的语言、数据量。因此我们不能直接预估运行代码的时间,毕竟机器性能、使用的语言、数据量等都会不同。但是在知道运行我们的程序的实际步骤后会有利于缩短我们运行代码的时间。


举个例子:魔方复原,在复原魔方的时候,如果一开始不知道怎么复原,没有思维逻辑进行复原,可能需要的时间需要很久。通过查阅相关资料与思考,最终可以将复原魔方几个步骤,就可以顺利复原。


所以运行代码的时间在于你知道你的代码需要运行多少步。思考的逻辑决定了你的运行代码时间。


7/7 如何修复他人的代码

在编程的时候,我们常常会借鉴别人的代码。但因为版本、运行环境等的影响,并不是每一份代码都可以完整复现,这时候就要修复他人的代码为我所用。


思路如下(参考(4)Debugger

0、进行系统性思考(参考之前的内容


1、记录下每个你尝试过的方式、修改过地方


2、考虑重新假设


3、调试代码


4、放下自己的骄傲,寻找他人的帮助


5、离开一段时间再回来修复


End

【D1N910】编程习惯养成与思维学习笔记的评论 (共 条)

分享到微博请遵守国家法律