一些杂七杂八的笔记

程序结构,扩展为5种

顺序,金,金主时间,就像时间轴
分支,木,木有分岔
循环,水,水无形
调用,火,用一行句子引燃多行句子
并行,土,土主混合,并行是种混合任务

编程序的三个层次

一,仅能完成任务,但需求一改就得通宵加班。
二,能应对许多需求,轻松地修改程序。
三,编写出会编程序的程序。
其中第一层相当于照片,第二层相当于有骨架的模型,第三层才是有生命的个体。
如果有第四层,那应该是许多个体构成的群体。

期待新的编译原理

求[25]和[37]的最小公倍数至[N]
在新的编译原理出现之前,上边这一句只能写成C语言函数的样子,而且还是英文简写。

特别长的标识符和好的输入法

我是一个函数(那个名字特别长以至于我都记不清它叫什么的变量名啊, 那个名字也特别长但是我又不得不把它一遍一遍地写出来的另一个变量名啊)
特别长的标识符会消耗程序员的时间,所以,好的输入法就十分关键。

编译原理

先处理优先级低的符号,能把源代码拆分成一段一段的,每一段单独处理,便于发挥更高的灵活性。以算数运算为例,逆序的优先级是:代码块、换行符、赋值、小括号、函数、加减、乘除、乘方……例如,1+2×3,先拆分成1和2×3,再单独处理2×3。东方人和西方人,思维方式似乎是反过来的?

排列组合

求“下一个排列”的算法已经有了。求“排列序数”的算法也有了。对于一个处理排列问题的程序,它有两个选择:一、每次都调用下一个排列,遍历所有排列。二、先求排列序数,再给它加几,再反求对应的排列。这两个选择对应于迭代器遍历(next)、和for循环遍历(i++)。当需要不完全遍历时,后者就派上用场了。若需要遍历每一个情况,还是第一个更好。

人工智能和梯度下降法

人工智能是对人脑的模拟,采用神经元网络的形式。用梯度下降法求神经元网络的局部最优解,但梯度下降法不一定只能作用于神经元网络。换做其他带参数的、可优化的函数,也可以用梯度下降法进行优化。数学上,用许多Acos(ωx+θ)的和,也能表示任意函数?

C++之于Perl

Perl语言是一种“弱类型”语言,其中只有三个基本数据结构:标量、数组、哈希。用惯了C++,会不会怀疑,只有3种数据类型,够用吗?但是Perl语言活的好好的,应用于C++,有SUV特别重要。SUV不是汽车,而是:String+Unordered_map+Vector。这三个一定要牢记。

大整数

处理超出int和long表达范围的大整数,方案一,用二进制,这么做运算效率高;方案二,用ASCII码表示数字,这么做接近人的思维方式;取上述两个方案的折中,以8位十进制数为单位,编程方面选用32位的int。仍然是int的数组,但不是纯二进制,应该说是一亿进制。对于“取出一串数的第几位”这类操作,它比纯二进制有更高效率。同时,它一次计算8位数,比ASCII码方案快一些。

你可能感兴趣的:(算法)