SICP : The Elements of Programming
好的计算机编程语言应具备的三个特性
- 基础单元表达式,计算机编程语言最最最基础单元,理应具备的表达式
- 组合的能力,能够通过基础单元表达式组合成更复杂的元素
- 抽象的能力,能通过复杂的元素抽象成更高层的单元
基础单元表达式
加 减 乘 除。
其实加 减 乘 除才是最牛逼的接口,左边和右边提供输入参数,最后返回计算结果,又是最基础的可以组合成更复杂单元的基础单元表达式接口。
SICP javascript版本,可以在网页版解释运行环境中写代码
在线快乐地编写javascript代码并运行
137 + 349;
4861000 - 334;
6665 * 99;
49510 / 4;
2.52.7 + 10;
12.73 * 2 * (3 - 5 + 4) + 27 / 6 * 10;
Naming and the Environment
const pi = 3.14159;
const radius = 10;pi * radius * radius;
314.159const circumference = 2 * pi * radius;
circumference;
62.8318
Evaluating Operator Combinations
One of our goals in this chapter is to isolate issues about thinking procedurally.
(2 + 4 * 6) * (3 + 12);

== In general, we shall see that recursion is a very powerful technique for dealing with
hierarchical, treelike objects.==
Compound Functions
- Numbers and arithmetic operations are primitive data and functions.
- Nesting of combinations provides a means of combining operations.
- Constant declarations that associate names with values provide a limited means of abstraction.
function square(x)
{return x*x;
}square(21);square(2 + 5);
function square(x)
{return x*x;
}square(21);square(2 + 5);square(square(3));// x² + y² can be expressed as
// square(x) + square(y)function sum_of_squares(x,y)
{return square(x) + square(y);
}sum_of_squares(3,4);
25// now we can use sum_of_squares as a building block in constructing further functions.
function f(a)
{return sum_of_squares(a + 1,a * 2);
}f(5);
136
上述计算模型 square及sum_of_squares都可以是外部领域模型,所以一个大型系统可以由很多外部领域模型组合成复杂功能。

突然间恍然大悟上面这个计算机中的精灵图:EVAL计算出规则APPLY的结果,计算得到的结果又再次成为规则APPLY的输入,然后EVAL又再次计算得到规则APPLY的结果
Conditional Expressions and Predicates
function abs(x)
{return x >= 0 ? x : -x;
}abs(3);abs(-43);function greater_or_equal(x,y)
{return x > y || x === y;
}greater_or_equal(3,4);greater_or_equal(4,4);greater_or_equal(6,2);function greater_or_equal(x,y)
{return !( x < y);
}
练习题
10;5 + 3 + 4;9 - 1;6 / 2;2 * 4 + (4 - 6);const a = 3;
const b = a + 1;a + b + a * b;a === b;b > a && b < a * b ? b : a;a === 4 ? 6 : b === 4 ? 6 + 7 + a : 25;
exercise 1.1 exercise 1.2 exercise 1.3
(5 + 4 + (2 - (3 - (6 + 4 / 5)))) / (3 * (6 - 2) * (2 - 7));function square(x)
{return x * x;
}function square_of_the_larger_two(x,y,z)
{return x > y ? (y > z ? (square(x) + square(y)) : (square(x) + square(z))) :(x > z ? (square(x) + square(y)) : (square(y) + square(z)));
}square_of_the_larger_two(2,3,4);square_of_the_larger_two(2,1,3);
相关文章:
SICP : The Elements of Programming
好的计算机编程语言应具备的三个特性 基础单元表达式,计算机编程语言最最最基础单元,理应具备的表达式组合的能力,能够通过基础单元表达式组合成更复杂的元素抽象的能力,能通过复杂的元素抽象成更高层的单元 基础单元表达式 加 …...
支付宝、学习强国小程序input、textarea数据双向绑定
前言 和 vue 的绑定有些区别,需要注意。直接 value"{{inputValue}}" 是无法双向绑定的。 正确思路 文档说的比较详细,不过没有组合使用的案例,需要自行理解。这里正确的方法是先用 value 绑定数据,再使用 onInput 事件…...
AI“百模大战”现状:向垂直、B端谋场景,算力仍是主要制约因素
文章目录 每日一句正能量前言AI(人工智能)大模型正“飞入”百姓家和行业中。向垂直、B端谋场景算力仍是主要制约因素构建“数据-模型-应用”飞轮后记 每日一句正能量 我们必须在失败中寻找胜利,在绝望中寻求希望。 前言 在当前快速发展的人工…...
手机上的软件怎么修改网络IP地址
在手机上修改网络IP地址通常需要通过以下两种方法: 1. 使用VPN(虚拟私人网络)或代理软件: 步骤如下: - 下载并安装一个可靠的VPN或代理软件到你的手机上。 - 打开VPN或代理软件,选择一个你希望获取IP地址…...
返回按钮点击坐标
返回按钮的点击坐标(按钮本身的相对位置)主要用于自绘控件时响应点击对应的数据变化。效果如下图: 代码实现 private void button1_MouseClick(object sender, MouseEventArgs e){Point p e.Location;this.Text p.ToString();} 利用 Mouse…...
arm32 arm64 读取PMCCNTR cpu cycle counter
ARM 的时钟周期计数保存在PMCCNTR 寄存器,不像x86用户态可以直接读取,需内核态使能,一种是在内核中使能,比如init,比较简单的是在模块中使能。 本来写了两个,arm32一个,arm64一个,方…...
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
下载安装HBuilder X编辑器 https://www.dcloud.io/hbuilderx.html 新建 5APP 项目 打开 HBuilder X,新建项目 此处项目名以 ‘test’ 为例 含跨域代理的vue项目改造 若 vue 项目中含跨域代理,如 vue.config.js module.exports {publicPath: "./&…...
面试复盘4——后端开发——一面
前言 本文主要用于个人复盘学习,因此为保障公平,所以本文不指出公司名,题目编号只是为了自己区别而已。对待面经,望读者还是更多从其中学习总结,而不是去碰原题。 面试岗位信息 北京某初创,go开发&#…...
使用 Postman 进行并发请求:实用教程与最佳实践
背景介绍 最近,我们发起了一个在线图书管理系统的项目。我负责的一个关键模块包括三个主要后台接口: 实现对books数据的检索。实施对likes数据的获取。通过collections端点访问数据。 应对高流量的挑战 在设计并部署接口时,我们不可避免地…...
河南工程学院第六届程序设计竞赛-A组-题解
更好的阅读体验 \color{red}{更好的阅读体验} 更好的阅读体验 远古时期的签到题 原题链接 描述: 远古时期奇妙的事情… 远古时期有一个比赛,里面有这样一道签到题: 给定一个正整数 N N N求这个整数转化为二进制后的数有多少位是 0 0 0。…...
韩版传奇 2 源码分析与 Unity 重制(二)客户端启动与交互流程
专题介绍 该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过…...
JVM面试——运行时数据区
一:JVM的运行时内存区域是怎样的? 根据Java虚拟机规范的定义,JVM的运行时内存区域主要由程序计数器、虚拟机栈、本地方法 栈、Java堆、方法区和以及运行时常量池组成。其中堆、方法区以及运行时常量池是线程之间共享的区域,而栈(…...
ssh工具 向指定的ssh服务器配置公钥
此文分享一个python脚本,用于向指定的ssh服务器配置公钥,以达到免密登录ssh服务器的目的。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,确认 or 选择ssh服务器 👇第三步,输入ssh登录密码,以完成公钥配置 👇验证,我们通过ssh登录…...
uni-app pages.json之globalStyle全局页面样式配置
锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...
Blazor 混合开发_MAUI+Vue_WPF+Vue
Blazor 混合开发_MAUIVue_WPFVue 背景混合开发的核心为什么必须使用 wwwroot 文件夹放置 Web 项目文件 创建 MAUI 项目创建 wwwroot 文件夹服务注册创建 _import.razor添加 Main.razor 组件修改 MainPage.xaml 文件 创建 WPF 项目创建 wwwroot 文件夹服务注册创建 _import.razo…...
udp异步方式接收消息
C#实现 //定义结构体 public struct UdpState { public UdpClient u; public IPEndPoint e; } private UdpClient _client; //_client的初始化请参考其他资料 IPEndPoint remoteEP null; //TODO //public static bool mess…...
【RocketMQ笔记01】安装RocketMQ消息队列运行环境
这篇文章,主要介绍如何安装RocketMQ消息队列运行环境。 目录 一、RocketMQ消息队列 1.1、下载RocketMQ 1.2、解压安装包 1.3、配置RocketMQ环境变量 1.4、修改启动脚本 1.5、启动RocketMQ (1)启动NameServer (2࿰…...
使用 Privoxy 实现对多域名的定向转发
需求与思路 内网一台主机想要访问公网的两个不同站点, 想要实现访问两个站点时表现出不同的公网 IP 地址. 即在公网的站点服务器端看到的客户端 IP 是不同的. 思路是搭建两台具有不同公网 IP 的服务器, 分别安装配置 Privoxy 后进行串联, 并将其中一台作为主服务器暴露给内网…...
《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍
📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…...
图解LRU缓存
图解LRU缓存 OJ链接 介绍 LRU 缓存机制可以通过哈希表辅以双向链表实现,我们用一个哈希表和一个双向链表维护所有在缓存中的键值对。 双向链表按照被使用的顺序存储了这些键值对,靠近尾部的键值对是最近使用的,而靠近头部的键值对是最久未…...
VSCode 高效开发:配置 Pixel Dream Workshop 模型调用的代码片段与插件
VSCode 高效开发:配置 Pixel Dream Workshop 模型调用的代码片段与插件 1. 为什么需要优化开发工作流 如果你经常使用Pixel Dream Workshop这类AI模型进行开发,可能会遇到一个共同痛点:每次调用API时都要重复编写相似的请求代码,…...
AI图像放大神器Upscayl:告别模糊时代的终极解决方案
AI图像放大神器Upscayl:告别模糊时代的终极解决方案 【免费下载链接】upscayl 🆙 Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy. 项目地址: https://gitcode.com/GitHub_Trendi…...
前端面试高频考点总结(不仅有考点,还有对应解答)
2026年 AI面试 经验分享 前端面试核心要点 技术考察转向实际场景与新兴技术,重点包括: JavaScript/TypeScript核心机制与编码能力React/Vue3的高阶特性与原理工程化与性能优化体系网络/安全与综合性场景题 3-5年经验者需突出: 技术原理深度&a…...
Python爬虫实战:如何绕过央视频加密获取高清视频源(附完整代码)
Python爬虫进阶:视频流媒体解析技术深度剖析 在数字内容消费爆炸式增长的今天,视频平台的技术防护手段也在不断升级。对于开发者而言,理解现代流媒体平台的加密与传输机制,不仅能提升技术视野,更能为合法合规的数据分析…...
实战指南:基于快马生成的原型开发智能设备手机管理后台
实战指南:基于快马生成的原型开发智能设备手机管理后台 最近在做一个智能家居设备的项目,需要给用户提供一个手机端的配置管理界面。想到很多家用路由器都是用192.168.1.1这样的地址进行管理,就决定用这个作为切入点,开发一个类似…...
从零部署Jetson Xavier NX:Ubuntu 20.04系统烧录、CUDA环境配置与深度学习框架实战指南
1. 开箱与硬件准备 第一次拿到Jetson Xavier NX开发板时,我差点被它小巧的尺寸骗了——这个巴掌大的板子居然藏着384个CUDA核心和48个Tensor核心。我入手的是带128GB SSD的EMMC版本,实测下来这套配置跑YOLOv5这类中等规模的模型完全够用。开箱清单里除了…...
告别格式混乱:用pdf2docx实现PDF到Word的无损转换
告别格式混乱:用pdf2docx实现PDF到Word的无损转换 【免费下载链接】pdf2docx Open source Python library converting pdf to docx. 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2docx 你是否曾经遇到过这样的情况:从网上下载了一份重要的PD…...
2026年SCI论文AI率5%以下怎么做到?这3款降AI工具帮你稳过顶刊
投了三篇SCI,AI率问题折腾了快半年。 第一次投稿时完全不知道期刊有AI率要求,论文被直接拒稿,编辑在邮件里特别说明了AI生成内容的问题。从那以后就开始认真研究这个。先说结论:嘎嘎降AI(www.aigcleaner.comÿ…...
百川2-13B-4bits量化原理解析:OpenClaw任务中的精度损失补偿方案
百川2-13B-4bits量化原理解析:OpenClaw任务中的精度损失补偿方案 1. 从一次失败的自动化任务说起 上周我尝试用OpenClaw自动整理一批技术文档时遇到了奇怪的现象:当AI助手处理到第37个Markdown文件时,突然开始重复生成相同的段落内容。查看…...
避坑指南:金融风控建模中最容易被忽略的5个数据陷阱(以贷款违约预测为例)
金融风控建模实战:避开数据处理的五大隐形陷阱 在金融风控领域,数据科学家们常常陷入一个怪圈:模型越调越复杂,但预测效果却停滞不前。我曾见证过一个团队花费三个月优化算法,最终发现问题的根源竟是数据预处理阶段的…...
