一、编码规范——做一个精致的程序员

本学期我采用GNU Coding Standards(GNU编码规范),链接如下:

http://www.sourceformat.com/pdf/cpp-coding-standard-gnu.pdf

 

通过网络我了解了一些C++语言的编码规范,对于不同的编程语言来说,具体的编码规范可以有很大的不同,但是其宗旨都是一致的,就是保证代码在高质量完成需求的同时具备良好的可读性、可维护性。例如我们可以规定某个项目的C语言程序要遵循这样的规定:变量的命名,头文件的书写和#include 等等。

 

下面是一些广为采用的编码规范:

 

  • GNU Coding Standards

  • Guidelines for the Use of the C Language in Vehicle Based Software

  • C++ Coding Guidelines

  • SUN Code Conventions for Java

 

以下是一些介绍编码、编码规范的书籍:

 

  • C++编码规范,陈世忠,人民邮电出版社,2002

  • 高质量程序设计指南:C++/C语言,林锐等,电子工业出版社,2003

 

注:以下只是根据课题组已有的经验给出的总结,并非对所有场景均适用。

 

对于高质量的工程,一般会做到:

 

1.代码简洁精炼,美观,可读性好,高效率,高复用,可移植性好,高内聚,低耦合,没有冗余,不符合这些原则,必须特别说明。

2.规范性,代码有规可循。特殊排版、特殊语法、特殊指令,必须特别说明。

 

二、数学之美——算法的无穷妙用

这几天浅读了《数学之美》这本书,我觉得收益匪浅,至少这是本好书!

看了目录后,我选看了两个我感兴趣的章节:《数学之美系列十六——不要把所有的鸡蛋放在一个篮子里--最大熵模型》(上、下两篇)。

先从投骰子开始说起,每一面朝上的概率都为六分之一,这是一个“熵最大化”的概率——也算是一种熵最大化的模型。

当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们称这种模型叫“最大熵模型”。“不要把所有的鸡蛋放在一个篮子里,其实就是最大熵原理的一个朴素的说法,因为当我们遇到不确定性时,就要保留各种可能性。

这个最大熵模型存在且唯一,具有简单的指数函数的形式,这个算法从GIS发展到IIS,迭代时间和稳定性都得到提高。此算法,集简与繁于一体,形式简单,实现复杂,但是应用广泛,在Google很多产品中,比如机器翻译,都直接或间接地用到了最大熵模型。

读完简短的两章内容,我对算法也颇感兴趣,一段类似“模板”或者说模型的代码就可以实现很难很复杂很繁琐的多个步骤。之前的我对记忆一些算法是不屑的,心想这些算法我不用也可以达到我想要的目标。现在想想实属幼稚,能够站在巨人的肩膀上眺望,何乐而不为呢?

 

三、学期目标——坚定的学习动力

    这学期学完算法设计与分析,我希望能够做出一个简单的查重的程序(先定个小目标),如果时间充裕、能力达到,我也想做一个语音识别或者功能多的地图程序。

posted on 2019-09-01 09:47  mikasawell  阅读(228)  评论(0编辑  收藏  举报