同构:编程中的数学(文末送书4本)

news2024/9/24 11:30:17

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


        近年来随着人工智能、大规模分布式计算、多核CPU和异构计算等的发展,计算机中的各种编程技术在编程语言、软件架构、编译器、硬件体系结构、集成电路设计等方面都有着剧烈的变化。编程语言方面,越来越多的主流语言引入函数式编程的概念。软件架构方面则有了更多并行计算的东西、各种分布式并发的模型,以充分利用多核CPU。编译器方面则有了更多领域应用方面的发展,比如MLIR、TVM等,充分利用异构计算中的硬件加速单元。硬件体系结构方面则随着各种硬件加速单元的兴起,改变了原来以CPU为计算中心的格局,计算更多地依赖各种硬件加速单元。集成电路设计方面则为了实现各种硬件加速单元,需要缩短电路设计的周期,以更快速地应对各种频繁变化的需求,近年来有不少公司使用Bluespec、Chisel、SpinalHDL等具有函数式特性的语言来设计集成电路。

        作为程序员,如何应对这些变化呢?如果每出现一种新的技术都去学习,那将会让我们疲于奔命,会有学不动的感觉——需要学习的东西太多了。但实际上这些新技术的基础变化并不大,有些甚至是在原有基础上的重新组合。所以,我们应该更多地学习基础的技术,提升抽象思维能力,善于发现各种不同技术的本质、不同技术之间的相似关系(更好的是同构关系)。这样我们就能够以不变应万变,对各种技术融会贯通,以较小的代价掌握新的技术。

        作者在这本书中非常详细、清晰地阐述了与编程相关的一些基本数学概念和抽象方式,并将这些概念在实际的编程中展示出来,使用函数式编程语言在实际编程中展示良好的抽象是如何做的。读者通过阅读本书,将会得到一个全新的编程思维方式、良好的抽象能力,对编程中的数学概念有更清晰的理解(特别是对近年来关注度越来越高的函数式编程的一些基础概念,比如lambda演算、递归、代数数据类型、函子、自然变换等)。本书对后续学习函数式编程语言或者理解主流语言中的函数式特性会非常有帮助。

内容简介:

        本书从数字、递归、对称、范畴、融合、无穷、悖论七个方面介绍了计算机程序的数学基础和原理,并以“同构”概念为线索揭示出编程本质上是和数学同构的。第1章介绍皮亚诺算术公理系统,通过5条公理,构筑了计算机程序大厦的基石;通过单向链表、斐波那契数列等例子,展示了和自然数同构的计算结构。第2章介绍递归,通过欧几里得算法作为开端,最终把递归的数学原理构建在Lambda演算和Y组合子之上。第3章介绍对称群、环、域等抽象代数结构,解释了伽罗瓦理论这一抽象思维的明珠。第4章介绍范畴论,把列表、异常、多态、类型系统、复合数据结构等众多编程概念构筑在范畴论的基础上。第5章介绍融合律,它是进行算法推导和优化的有力工具。第6章介绍无穷,给出了康托尔的无穷集合论和超限数概念,介绍了编程中流的概念和无穷的关系。第7章以罗素悖论、可计算性和哥德尔不完全性定理结束本书,介绍了计算能力的边界和对编程基础哲学的影响。
        本书还在各个章节中介绍相关数学家的人生经历和逸闻趣事,讲解他们如何克服困难、追求真理、创造奇迹,并穿插讲述编程、数学、艺术、音乐之间的有趣联系。  

作者简介:

刘新宇 

亚马逊中国研发中心研发经理,负责分布式仓储物流系统的开发。1999年和2002年在清华大学自动化系分别获得学士和硕士学位。长期专注于函数式基础算法,著有《算法新解》一书(2017年出版)。

专家推荐

培根言:“数学是思维的体操。”而编程是一项高度复杂的思维活动。学习数学思想对编程的益处不言而喻。本书作者阅读了大量的数学典籍,以同构视角从中挑选了诸如递归、对称等精妙的数学思想,构思成书呈现给大家,非常难得!这是一本浓缩思想的书,言简意赅,值得我们细细品味。

赵俊民 北京荣耀终端有限公司软件架构师

本书不仅把代数系统中深奥的同构理论讲解得完整透彻,还把数学发展的历史脉络交代得清清楚楚,特别是把数学理论应用到实际生活的方方面面,让我作为一个数学爱好者受益匪浅。此书如今得以出版,能让更多数学爱好者有机会看到,着实令人开心。

李曲 浙江工业大学计算机学院教师

本书以浅显易懂的文字将数理逻辑、抽象代数和函数式编程的知识娓娓道来,这是我读过的最好的范畴论入门书籍,每个计算机相关专业的本科生都应该读一读这本书。

chirsz GitHub读者

初读这本书,感觉是在看大学教材,不过大学教材很少有这么多生动的故事来烘托和关联。细读这本书,才发觉现实开发中的许多任务原来可以做得更有趣也更花哨,就算要玩点把戏也不会被人一眼看穿。觉得本书太复杂也不要紧,不妨先浏览一遍,只要大致了解书中讲了什么就足够,然后常备在案头,需要的时候按图索骥,在数学方面绝对能超越大部分同行了。

余晟 《正则指引》作者

文末福利

《同构:编程中的数学》免费包邮送出4本!

  • 抽奖方式:评论区随机抽取4位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-07-06 20:00:00
  •  京东自营店购买链接:https://item.jd.com/14015042.html
  • 当当自营店购买链接:http://product.dangdang.com/29585553.html

 名单公布时间:2023-07-06 21:00:00   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多项目管理难在哪,多项目同时进行该如何做好进度管理?

最近,听到群里的项目经理吐槽,手上有10多个项目同时进行,工作起来手忙脚乱,杂乱无章,让他压力特别大。 对于项目经理来说,多项目并行推进的情况已是常态。从工作层面来说,不仅在各项目之间抢资…

解决 fatal: Authentication failed for ‘https://github.com/*/*.git/‘

原因:github 的认证策略发生了改变,在 2021年8月13日 的时候,用户名加密码的认证方式被去掉了,换成了 个人令牌(Personal Access Token)的校验方式。 官网解决方案:管理个人访问令牌 - GitHub …

数分面试题- 面试智力题

目录标题 1、如何用3L和5L桶量取4L水2、有两圈蚊香,一圈烧完需要1小时,怎么才能确定出15分钟/45分钟时间3、提灯过桥问题4、开关灯问题5、赛道赛跑问题6、砝码称重问题6.1 有10瓶药,每瓶有10粒药,其中有一瓶是变质的。好药每颗重1…

家政保洁维修上门预约系统开发;

家政保洁维修上门预约系统开发; 保洁,家电清洗等上门业务系统,支持派单接单,按区域,就近分配、套餐年卡等; 育婴月嫂系统 保姆筛选,简历主页,推荐跟进,在线合同&#xf…

IPO观察丨背靠百度、专注医疗内容营销,为何健康之路举步维艰?

互联网医疗赛道竞争加剧下,相关企业不仅在市场扩张上角逐,也在IPO道路上持续追赶。 仅就6月份而言,就有药师帮、方舟云康、健康之路等几家企业在持续推进上市进程,其中,药师帮已于6月28日成功登陆港交所,而…

pycharm断点调试

第一步:打上断点 第二步:进入调试模式 第三步:分析button作用 Resume Program:进入下一个断点show execution point (F10) :显示当前所有断点step over(F8) :单步调试,若函数A内存在子函数时&a…

改变下拉框中内容显示的顺序方法

在官网上: 如图所示:先点击龙须面,再点击虾仔煎的时候,会在下拉框中按照用户的点击顺序显示出来。 问题:前端如何按照黄金糕-双皮奶-虾仔煎-龙须面的顺序显示点击的值呢?这样做的一个好处就是按后端的顺序…

【2023】性感美少女-InsCode Stable Diffusion 美图活动一期

作者:闲散的不务正业的运维目录 一、 Stable Diffusion 模型在线使用地址:二、Stable Diffusion如何使用三、模型相关版本和参数配置:四、图片生成提示词与反向提示词:五、种子及对应图片:六、总结 一、 Stable Diffus…

Qt的发展如何?它是否是一个就业的好选择?

Qt是一种流行的跨平台应用程序开发框架,被广泛用于构建图形用户界面(GUI)和嵌入式应用程序。它具有良好的可移植性和可扩展性,并支持多种编程语言,如C、Python和JavaScript。 Qt的发展一直稳步推进,并且在…

I.MX6ULL_Linux_驱动篇(39) 阻塞和非阻塞IO

阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式,在编写驱动的时候一定要考虑到阻塞和非阻塞。本章我们就来学习一下阻塞和非阻塞 IO,以及如何在驱动程序中处理阻塞与非阻塞,如何在驱动程序使用等待队列和 poll 机制。 阻塞…

HTML5+CSS3+JS小实例:可自由拖拽排序的表格

实例:可自由拖拽排序的表格 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=…

嗨爆全场!联诚发大屏与荧光棒闪耀周杰伦海口演唱会!

6月29日-7月2日&#xff0c;2023周杰伦嘉年华世界巡回演唱会海口站在海口五源河体育场震撼开唱&#xff0c;来自世界各地的数万名歌迷粉丝齐聚椰城&#xff0c;共享狂欢盛宴。联诚发LCF龙腾S系列LED透明屏和智慧荧光棒系列产品在演唱会现场大放异彩&#xff0c;陪伴粉丝朋友们一…

2023 全球数字经济大会人工智能高峰论坛,和鲸科技入选北京市人工智能行业赋能典型案例

7月&#xff0c;由国家发展改革委、工业和信息化部、科技部、国家网信办、商务部、中国科协联合北京市人民政府共同主办“2023全球数字经济大会”在京召开&#xff0c;本届活动主题为“数据驱动发展&#xff0c;智能引领未来”。其中“人工智能高峰论坛”重点围绕通用人工智能大…

Leetcode-每日一题【61.旋转链表】

题目 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3] 示例 2&#xff1a; 输入&#xff1a;head [0,1,2], k 4输出&#xff1a…

网页的动静分离设置

我们都知道nginx处理静态网页是强项,而tomcat处理动态网页是强项.我们可以发挥他们共同的优点.nginx处理静态页面而tomcat处理动态页面 进入nginx配置文件改 总结 1.改配置文件最好复制一份 2.做一步验证一步 才知道哪里出错了 3.出错了别着急先看页面在浏览器能不能打开 不…

Python 字节数组方式写入kafka(含报错return ‘<SimpleProducer batch=%s>‘ % self.async)

一、背景 项目开发了一个类似kafka tools查询工具的kafka 查询&#xff0c;现在需要测试一下如果通过字节数组的形式写入&#xff0c;看看查询有没有问题 二、kafka查询代码 Python代码示例&#xff1a; from kafka import KafkaProducer import json# 创建Kafka生产者 pro…

搭建高性能数据库集群之三:Keepalived实现MySQL集群高可用

搭建高可用集群&#xff0c;2台HAProxy 可实现Mycat多节点的集群高可用和负载均衡&#xff0c;而HAProxy 的高可用&#xff0c;由Keepalived来实现。Keepalived负责为该台服务器抢占vip(虚拟IP)&#xff0c;抢到后对该主机访问。 搭建高可用集群&#xff1a; 上图&#xff0…

开源全新H5充值系统源码/自定义首页+充值页面/灵活对接上游渠道接口

开源全新H5充值系统源码&#xff0c;系统基于thinkphp框架开发&#xff0c;功能已全完善&#xff0c;可灵活对接其他上游渠道接口&#xff0c;默认对接了大猿人接口&#xff0c;另外可无限制自定义创建充值页面&#xff0c;首页支持后台自定义修改&#xff0c;支持三级分销&…

No1.精选前端面试题,享受每天的挑战和学习

文章目录 如何实现分页功能如何实现vue虚拟列表功能浏览器的渲染原理JS中Map、WeakMap和Object的区别 如何实现分页功能 要实现分页功能&#xff0c;主要涉及以下几个方面的步骤&#xff1a; 数据源&#xff1a;首先需要有一个数据源&#xff0c;可以是数据库、文件、API接口等…

Centos7修改root密码

1.首先启动系统&#xff0c;在这个开机界面按e&#xff0c;进入编辑模式 2.进入编辑界面&#xff0c;上下光标键移动&#xff0c;找到linux16这一行&#xff0c;在末尾追加内容init/bin/sh,然后按Ctrlx键进入单用户模式。 3.在单用户模式下输入mount -o remount, rw /,挂载…