【赠书活动】同构:编程中的数学

news2024/10/7 14:26:21

写在前面

近年来随着人工智能、大规模分布式计算、多核CPU和异构计算等的发展,计算机中的各种编程技术在编程语言、软件架构、编译器、硬件体系结构、集成电路设计等方面都有着剧烈的变化。编程语言方面,越来越多的主流语言引入函数式编程的概念。软件架构方面则有了更多并行计算的东西、各种分布式并发的模型,以充分利用多核CPU。编译器方面则有了更多领域应用方面的发展,比如MLIR、TVM等,充分利用异构计算中的硬件加速单元。硬件体系结构方面则随着各种硬件加速单元的兴起,改变了原来以CPU为计算中心的格局,计算更多地依赖各种硬件加速单元。集成电路设计方面则为了实现各种硬件加速单元,需要缩短电路设计的周期,以更快速地应对各种频繁变化的需求,近年来有不少公司使用Bluespec、Chisel、SpinalHDL等具有函数式特性的语言来设计集成电路。
作为程序员,如何应对这些变化呢?如果每出现一种新的技术都去学习,那将会让我们疲于奔命,会有学不动的感觉——需要学习的东西太多了。但实际上这些新技术的基础变化并不大,有些甚至是在原有基础上的重新组合。所以,我们应该更多地学习基础的技术,提升抽象思维能力,善于发现各种不同技术的本质、不同技术之间的相似关系(更好的是同构关系)。这样我们就能够以不变应万变,对各种技术融会贯通,以较小的代价掌握新的技术。

在这里插入图片描述

同构:编程中的数学
作者:刘新宇
从数字、递归、对称、范畴、融合、无穷、悖论
七个方面介绍了计算机程序的数学基础和原理

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

内容简介

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

作者简介

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

专家推荐

培根言:“数学是思维的体操。”而编程是一项高度复杂的思维活动。学习数学思想对编程的益处不言而喻。本书作者阅读了大量的数学典籍,以同构视角从中挑选了诸如递归、对称等精妙的数学思想,构思成书呈现给大家,非常难得!这是一本浓缩思想的书,言简意赅,值得我们细细品味。
赵俊民 北京荣耀终端有限公司软件架构师
本书不仅把代数系统中深奥的同构理论讲解得完整透彻,还把数学发展的历史脉络交代得清清楚楚,特别是把数学理论应用到实际生活的方方面面,让我作为一个数学爱好者受益匪浅。此书如今得以出版,能让更多数学爱好者有机会看到,着实令人开心。
李曲 浙江工业大学计算机学院教师
本书以浅显易懂的文字将数理逻辑、抽象代数和函数式编程的知识娓娓道来,这是我读过的最好的范畴论入门书籍,每个计算机相关专业的本科生都应该读一读这本书。
chirsz GitHub读者
初读这本书,感觉是在看大学教材,不过大学教材很少有这么多生动的故事来烘托和关联。细读这本书,才发觉现实开发中的许多任务原来可以做得更有趣也更花哨,就算要玩点把戏也不会被人一眼看穿。觉得本书太复杂也不要紧,不妨先浏览一遍,只要大致了解书中讲了什么就足够,然后常备在案头,需要的时候按图索骥,在数学方面绝对能超越大部分同行了。
余晟 《正则指引》作者

写在最后

参与方式:关注博主,点赞、收藏本博客并进行评论
抽奖方式:
方式一:赠书评论点赞最多的博主!!!
方式二:文末添加博主联系方式:ZICOLBB,进博主交流群
群内不定期送书
截止时间:2023年7月15日

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

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

相关文章

Zotero+百度网盘同步空间多电脑设置方法

Zotero百度网盘同步空间多电脑设置方法 之前一直用的Onedrive和Zotero来同步,原理差不多,但是百度网盘同步空间毕竟是国内的,(开了会员)速度快很多,记录一下多台电脑使用百度网盘同步空间来同步Zotero和相…

第六章.­ ­ Theory of Generalization

第六章. Theory of Generalization 上一章节我们主要探讨了M数值的大小对机器学习的影响。若M很大,我们就不能保证机器学习有很好的泛化能力,所以我们的问题就转换成验证M有限,最好是按照多项式成长,然后引入了成长函数mH(N)和二…

微服务一 实用篇 - 4.RabbitMQ

《微服务一 实用篇 - 4.RabbitMQ》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 4.RabbitMQ》 《微服务一 实用篇 - 4.RabbitMQ》1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比 2.快速入门2.1.安装RabbitM…

viewsets.ViewSet 详解

目录 零、前提(这一段可以忽略) 一、地址 二、viewsets.ViewSet介绍 2.1 viewsets.ViewSet介绍 三、viewsets.ViewSet默认方法(增删改查等方法) 四、 生成路由 4.1 使用路由器注册 viewset,自动生成 URL 配置(推…

Git下载与安装(windows)

文章目录 Git 简介Git 下载Git 安装Git 环境变量配置 Git 简介 Git 是一种分布式版本控制系统,用于快速、高效地处理任何大小规模的项目。它是由 Linus Torvalds 在 2005 年开始开发的,Git 最初是为了管理 Linux 内核源代码而创建的。现在 Git 是一个广…

python脚本(Word转PDF格式小工具)

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QMessageBox from PyQt5.QtCore import Qt import sys import os from comtypes import client#文件转换脚本 class FileDropWidget(QWidget):def __init__(self):super().__init__()self.initUI()de…

IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

IDEAJavaSpring BootMyBatisshiroLayuiMysql停车位管理系统源码 一、系统介绍1.环境配置 二、系统展示1.登录2.注册3.个人信息4.修改密码5.我的订单6.我的留言7.查车位8.管理员登录9.公告列表10.车位列表11. 订单列表12. 积分排行13. 留言列表14.管理员列表15. 用户列表16.修改…

MySQL:整型类型的显示列宽

整型类型的显示列宽 1、概述2、显示宽度3、总结 1、概述 大家好,我是欧阳方超。 关于定义整型时括号中的数值,再补充一下。 2、显示宽度 定义整型类型,比如int(10),这个括号中的值被称为展示宽度(display width&…

Hive查询操作

Hive基本查询语法 基本使用规则 基本查询语句组成 select .. from ..join [tableName] on ..where ..group by ..having ..order by ..sort by ..limit .. union | union all ...执行顺序 第一步: FROM <left_table> 第二步: ON <join_condition> 第三步: <join…

python使用matplotlib库绘制数学函数

** 任务一&#xff1a;使用matplotlib绘制yx的曲线图 ** matplotlib是python的绘画库&#xff0c;它可以与NumPy一起使用&#xff0c;提供了一种轻量级的MatLab开源高效替代方案。它可以和图形工具包PyQt等工具 一起配合使用&#xff0c;能够完成日常科学计算中多种数学库图可…

RuoYi(分离版) 使用代码生成器添加子模块(idea版)

右键总文件夹&#xff0c;选择新模块添加新模块 新建的业务模块 新建的业务模块中添加若依通用模块工具 <dependencies><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId></dependency></depen…

窨井水位监测的重要性

窨井是排水管网的检查井&#xff0c;能够直观准确的反映城市排水管网的运行状态&#xff0c;在城市排水系统中扮演着重要的角色。窨井水位监测是指对城市下水道或雨水收集系统中的窨井水位进行实时或定期的监测和测量。 窨井水位监测的重要性 预防溢流&#xff1a;窨井水位监测…

Nacos 无缝支持 confd 配置管理

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

Android Studio实现内容丰富的安卓物业管理平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号102 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告…

调用接口异常的原因及解决方法

在进行接口调用时&#xff0c;调用有时会遇到各种异常情况&#xff0c;接口解决例如连接超时、异常因及返回值错误等。调用的原这些异常情况可能会导致程序无法正常运行&#xff0c;接口解决因此需要及时解决。异常因及本文将介绍。调用的原 一、接口解决连接超时 连接超时是异…

面试题-Spring 面试集

Spring 面试集 基于Spring Framework 4.x 总结的常见面试题&#xff0c;系统学习建议还是官方文档走起&#xff1a;https://spring.io/projects/spring-framework#learn 一、一般问题 开发中主要使用 Spring 的什么技术 ? IOC 容器管理各层的组件 使用 AOP 配置声明式事务 整…

Vue2+vue-cli使用Tailwind CSS

1.执行以下命令安装依赖 npm install tailwindcssnpm:tailwindcss/postcss7-compat tailwindcss/postcss7-compat postcss^7 autoprefixer^92.cmd执行命令npm i 下载项目所用到的依赖 npm i3.在项目根目录下创建一个 postcss.config.js 文件 module.exports {plugins: [requ…

fcpx插件:Kingluma Radiance(发光和光线过渡效果)

Kingluma Radiance是一款为Final Cut Pro X&#xff08;FCPX&#xff09;设计的插件&#xff0c;它提供了丰富的光效和发光效果&#xff0c;可用于增强视频的视觉效果。 Radiance插件为用户提供了多种发光效果和光晕效果&#xff0c;如光晕、镜头光晕、梦幻效果等。它具有直观的…

推荐信模版(英文)计算机专业

推荐信模版&#xff08;英文&#xff09;计算机专业 ✅ 内容已校对 润色 ©️ 文章来源&#xff1a;https://blog.csdn.net/IYXUAN&#xff0c;原创内容&#xff0c;转载请注明&#xff01; 推荐信&#xff08;一&#xff09; January 4, 2023 Dear Admissions Committe…

7.4黄金能否继续上行?今日行情如何发展

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周二(7月4日)亚市早盘&#xff0c;美元指数继续承压&#xff0c;目前略低于103关口;现货黄金保持在1923美元/盎司附近。由于悲观的美国数据未能支持美联储的鹰派倾向…