计算机算法设计与分析第一次博客作业
读《数学之美》有感
虽然之前在大一的工程线性代数课上就已经听老师提起过《数学之美》这本书的相关内容,但其实我自己对数学的兴趣不是很大,所以也就没有去仔细阅读这本书的相关内容,但后来仔细阅读过后,我发现这本书并没有像我想象的那样充满着枯燥的逻辑与公式,其实在这本书里让我在对数学有了一个全新的认识,以及,思想上的提升。
对于学计算机的我来讲,在进入这个专业学习后,一个比较深刻的感受就是在以前的印象里,计算机好像不能干什么,但现在我觉得计算机以及程序能做到很多看起来不可能的事情。计算机就像一个万能的工具一样,同样数学也是强大的工具。而数学和计算机的结合给了信息时代很多IT公司巨头强大的技术支撑。给我印象比较深的一点就是《数学之美》展示了Google如何运用数学和计算机网络,带领现代社会进入云计算和大数据时代。所以我认识到的第一点现代社会强大的基础就在于要拥有先进强大的工具,而科学必定是作为这些强大的工具的最基本的支撑的。每一门学科要成为科学,都少不了数学。用数学工具来分析艺术。数学是一种语言,它源于具体的世界,又高于具体的世界。
而对于算法在现代软件开发中可以说是灵魂所在,每一个从事软件开发的人员都必须具备将现实的软件需求抽象化要解决的算法问题,而后运用数学逻辑思想进行问题解决,而这只是基础,随后又会运用数学这个强大的工具,想着如何把初级算法更加优化,满足用户更多样化的使用需求。而这样优良的算法也构成了一个评价比较高的软件的核心。只有懂得如何将数学与计算机这两种强大的工具相结合,才会有好的算法,从而才能开发出比较好的软件。简单来说算法是抽象复杂的数学问题的解决方法,而算法的另一面是将人们的需求告诉计算机,同时将解题指令一并告诉计算机,在我的理解里,这也是软件开发所要解决的最关键的问题吧。
而在本学期在对计算机算法设计与分析这门课程的学习中,我希望能更好的培养自己的算法思维,懂得如何很好地优化一个算法,同时我希望可以在本学期设计出一个可以实现计算代码原创率以及平时编程过程中算法思维提示的一个软件。主要是源于我们平时编程时看到编程问题时,有时候会一时间想不出可以解决问题的算法或者是好的算法,如果能够根据问题,给编程者一些很好的算法提示,我觉得会很好。
我的代码规范(修改版)
在学习编程与程序设计一年后,我自己也渐渐认识到了代码规范对一个程序员以及程序修改的重要性。其实一开始学习编程,老师就已经在强调要养成良好的习惯,这也是严谨编程的基础吧。但是刚开始并没有对这个问题很看重,但随着后来编写的程序逐渐复杂,代码量逐渐加大,自己发现这些良好的变成习惯也能为自己修改程序bug,有更加清晰明确的算法思路有莫大的帮助,而我现在的养成的编码规范也是在参考Google 开源项目风格指南里的相关代码规范的基础上形成的,下面便是我个人的一些编码规范。
一. 命名规则
不使用单词缩写,这样容易在敲代码时出现字母错误,而且使用单词能让自己更加清楚明白自己的代码含义与算法思路。
变量名:
小写字母,下划线连接,一般用名词,如error_count
类的成员变量以下划线结尾,如my_exciting_member_variable_
结构体的数据变量,小写字母,下划线连接
全局变量,前缀G_ ,如G_global_variable
常量:
加前缀K如KDaysInAWeek
统一的命名规则以及前缀方便在代码量比较大的情况下很快辨认出变量所属类,结构体成员等
类型名:每个单词大写首字母,不含下划线,如MyClass
函数名:
常规函数:每个单词首字母大写,没有下划线 DeleteElement()
取值或设值函数:与存取的变量名匹配(如取得成员变量的值)
如:
void set_num_entries(int num_entries)
{
num_entries_ = num_entries;
}
宏命名: 全大写,下划线连接
文件命名:全部小写,可以用下划线(_)连接
my_useful_class.cpp
二. 注释
风格:
// /**/只使用一种,而我习惯使用的是//
文件注释:
版权声明,许可证,作者标识
文件内容注释:
文件对声明的类的功能和用法做简单说明
文件对实现细节或算法技巧 简单描述
类注释:
每个类的定义都要附带一份注释,描述类的功能和用法
因为自己的类与结构体比较薄弱,所以采用这样类的注释描述的办法,便于自己理清算法思路
函数注释:
函数声明:描述函数功能和用法
* 函数的输入输出
* 参数是否可以为NULL
* 描述函数对空间的分配和释放
函数定义:描述函数功能和实现要点,如大致实现步骤、为何如此实现
变量注释:
我一般不注释普通变量
全局变量:必须注释含义及用途
类数据成员:说明用途,如变量可接受NULL或-1等警戒值
实现注释:
代码前注释:对巧妙或复杂的代码段前注释,解释一下算法思路
行注释:在行尾空2格注释 (如果连续多行注释,对齐)
三. 格式
函数声明和定义:
函数类型和函数名必须同一行;
函数名和左圆括号之间无空格;
圆括号和参数之间无空格;
左大括号在函数最后一个参数同一行的末尾处;
右大括号单独一行
注意层次与缩进
int functions(double x, double y) {
return x+y;
}
函数返回值:
return表达式不用圆括号,
return x; // not return(x);
条件/循环语句:
* if 和左圆括号之间有个空格,右圆括号与左大括号之间有个空格
if (condition) {
} else
{
}
* 简短并且没有else的条件语句写在同一行
if (i == 0) return NULL;
}
* 单行不需要大括号
指针和引用表达式:
句号或箭头前后不要有空格. 指针/地址操作符 (*, &) 之后不能有空格.
小结:
这就是我目前养成的代码编码规范,其实在养成过程还挺困难的,毕竟写代码的时候一开始比较追求简化,这样多的细节要求其实后来给自己的是一种很严谨的编程习惯吧,习惯成自然。
链接:http://zh-google-styleguide.readthedocs.org/en/latest/contents/