每日一书|世界上代码量很少的经典算法是什么样的?

Posted 《新程序员》编辑部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一书|世界上代码量很少的经典算法是什么样的?相关的知识,希望对你有一定的参考价值。

杜甫诗云:“读书破万卷,下笔如有神”。开发者多读书、读好书,能打好基础、掌握实践、答疑解惑、拓展视野。正基于此,2021年11月1日起,CSDN、《新程序员》推出“每日一书”栏目,为你推荐精选好书,助力你的开发工作如行云流水。

代码越少,能力越强的“潜规则”在程序员中广为流传,而那些代码量极少的经典算法自然就是程序员们心向往之的了。
今天异步君就给大家介绍几个代码量非常少的算法,不仅经典,还让人拍案叫绝!

 1 洗牌算法

仅需两行代码,即可高效“洗牌”

for(int i = n - 1; i >= 0 ; i -- )
swap(arr[i], arr[rand(0, i)]) // rand(0, i) 生成 [0, i] 之间的随机整数

短短两行代码,但是却可以实现这个功能:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置。也就是说,每一个位置都能等概率地放置每个元素。

 2 AI“核心”代码

这可能就是人工智障的代码

while True:
print(input('').replace('吗','').replace('?','!'))

这两行代码能实现什么效果呢?来看看这个示范:

问:在吗?

AI:在!

问:在学习吗?

AI:在学习!

问:真的吗?

AI:真的!

 3 no code

最厉害的代码,是没有代码

GitHub 上有这样一个项目,基于轻量级跨平台全自动不可描述工具,采用了不可描述的高级语言语法,不用写一行代码,即可部署运行,提供检测、编译、打包、安装、运行一条龙服务。

项目地址:

https://github.com/kelseyhightower/nocode

看完代码后,不少程序员纷纷留言夸奖。

心中有码,无码胜有码。学到了,明天给业务方的代码就准备以这个框架去实现了。

传说中的无字天书

看山是山,看山不是山,看山还是山

其实,代码量越少越好其实并不是编程界的铁律。优秀的代码一般具有执行效率高、代码可读性高的优点,其次才是代码量尽可能的少。

执行效率的重要性不必多说,计算机行业发展至今始终在探寻能否更高效。而为什么要求可读性高呢?

毕竟,程序员工作中的沟通,不只是电子邮件或者面对面语言交流,代码也是沟通方式之一。用代码实现需求有时候并不是一个人能完成的,必须让代码表达自己的编码思想。

如果代码结构清晰、注释合理,看代码的人一目了然,不用频繁的询问代码疑点,不用打断你的工作。

就像老师看到字迹潦草的卷面会不由自主打低分一样,大家都在追求高效,没有人会喜欢凌乱不堪的代码。写出让别人读得懂的代码,减少阅读障碍,为整个团队创造有价值代码,是在当下大部分工作需要协作的情况下,最高效的解决办法。

有很多率性的程序员会觉得追求整洁之道是不是有“洁癖”心理,见不得代码里有累赘,有脏东西等。但他们写出的代码,确实可读性更强,代码可以发挥的价值更高。

在编程领域,关于整洁代码操作实践方面,Bob大叔的《代码整洁之道》是一本不可多得的好书。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

代码整洁之道
作者:[美] Robert C. Martin
译者:韩磊

同系列还有《代码整洁之道:程序员的职业素养》,以自己以及身边的同事走过的弯路、犯过的错误为例,告诉大家成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。助其职业生涯迈上更高台阶!

代码整洁之道:程序员的职业素养
作者:[美] Robert C. Martin
译者:余晟  章显洲

当然最新的《敏捷整洁之道:回归本源》,是Bob大叔从一个真正热爱构建高品质软件的工程师和全力为团队争取尊重的敏捷先锋人物的视角,带着我们重温敏捷初衷,同时又对如何能实现真正的敏捷提出犀利的见解。

敏捷整洁之道:回归本源
作者:[美] Robert C. Martin
译者:申健 何强 罗涛 
审校者:熊节 韩磊

(声明:本文转载自人民邮电出版社IT专业图书旗舰品牌“异步图书”微信公众号。)

以上是关于每日一书|世界上代码量很少的经典算法是什么样的?的主要内容,如果未能解决你的问题,请参考以下文章

每日一书|评分9.4 ,这本书带无数读者入门算法

每日一书丨从微不足道开始改变世界

世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?

世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?

每日一书|领域特定语言:软件开发“教父“经典再现

每日一书|CSS新世界:专业讲解CSS新特性