编程语言发展历史:赋值与相等运算符的变迁历程
本文摘取自笔者书稿《编程语言发展历史》
赋值运算符是编程语言最基础的运算符,其发展历史也非常有趣。最早的赋值语句就是使用等号“=”来表示,一些语言为了让赋值运算在数学形式上更加严谨(形如“x = x + 1”的表达式在数学上不成立),将赋值运算符改为“:=”表示,这类语言以ALGOL、Simula、Pascal、Ada、Smalltalk为代表。
很多语言的赋值和比较两个运算符的形式是不同的,但也有例外。在MySQL中,“:=”和“=”都能用于赋值,“=”也是比较运算符,其语义取决于运算符的上下文。PL/I 语言的比较和赋值都是“=”,其具体的含义也取决于运算符的上下文。很多编程语言的赋值表达式都会返回表达式的值,这种做法在一些场景下能简化代码,但如果在if语句中将“==”笔误写为“=”时则很难排查发现问题,于是一些语言(如Python、Swift)规定赋值表达式不返回表达式的值来避免这个问题。
ALGOL 58首先让“:=”具有声明变量的语义,Python 3.8引入赋值表达式运算符(又被形象地称为海象运算符)“:=”,支持将表达式的值赋值给尚不存在的变量,并返回变量值(Python的“=”运算符不返回表达式的值),Go语言也将声明并赋值运算符定为“:=”。这些设计让“=”和“:=”在同一个语言中同时具有赋值的语义,而“:=”更进一步还具有声明变量的额外语义,简化了支持类型推导语言声明变量的代码形式,提高了语言的表现力。在硬件描述语言如Verilog中,赋值甚至被分成两种场景:阻塞赋值采用“=”运算符,而非阻塞赋值采用“<=”。
图1-1展示了主流编程语言中赋值与相等运算符的发展历史。

赋值与相等运算符的变迁经历了从简单到复杂,再到简单的过程;从编写不便到便于编写,再到不容易出错的过程。这个过程是编程语言许多语法特性的发展的缩影,揭示了编程语言内在的发展规律。
截取片段进行分享,不知道大家是否喜欢这类历史性的内容~
相关文章:
编程语言发展历史:赋值与相等运算符的变迁历程
本文摘取自笔者书稿《编程语言发展历史》 赋值运算符是编程语言最基础的运算符,其发展历史也非常有趣。最早的赋值语句就是使用等号“”来表示,一些语言为了让赋值运算在数学形式上更加严谨(形如“x x 1”的表达式在数学上不成立࿰…...
求职Leetcode题目(2)
1.柱状图中最大的矩形 据说这是2024年字节二面的题目,我感觉这道题跟接雨水有点类似,最重要的思路还是要找到什么时候能形成矩形的这么个情况,某个范围的矩形的高度,是由最短的柱形来决定的。 我们先整理一下,解决这道…...
深入探索 Postman:使用 API 性能测试优化你的 Web 服务
引言 在当今快速发展的互联网时代,Web 服务的性能至关重要。API 作为服务之间的桥梁,其性能直接影响到整个应用的响应速度和用户体验。Postman,作为一个多功能的 API 开发工具,提供了强大的性能测试功能,帮助开发者评…...
校车购票小程序的设计
管理员账户功能包括:系统首页,个人中心,学生管理,我的乘车信息管理,车辆信息管理,座位管理,系统管理 微信端账号功能包括:系统首页,车辆信息,我的 开发系统…...
拯救数据危机!2024年最受欢迎的数据恢复软件评测
现在大家快速传输资料的方式都变成了电子档,有些数据是存储在电脑上,有些存储在手机,有的存储在U盘甚至其他一些电子设备上。电子设备存储数据方便,丢失数据也总在意料之外。很多时候我们多学会一个工具,比如转转大师数…...
记一次因为在html两个地方引入vue.js导致组件注入失败的问题
这个问题我遇到两次了,是在恼火,不对,三次了,我如果不做这个笔记,我确定我还会遇到第三次。 尾部这个去掉就行 因为头部有了 遇到这种bu g好恼火,解决了又怎么样呢?重蹈覆辙的滋味不好受...
Postman中的智慧重试:API测试用例的错误处理与重试逻辑设置
Postman中的智慧重试:API测试用例的错误处理与重试逻辑设置 在API测试过程中,错误处理和重试逻辑是确保测试准确性和可靠性的重要环节。Postman提供了多种功能来处理测试中可能出现的错误,并允许自定义重试逻辑以适应不同的测试场景。本文将…...
docker部署本地词向量模型
开源项目:GitHub - huggingface/text-embeddings-inference: A blazing fast inference solution for text embeddings models 1. 下载词向量模型 参考我的另一篇博客:langchain 加载本地词向量模型 2. 部署词向量模型 就三行命令 model/data/BAAI/…...
接口自动化中对于文件上传的处理方法
正常的接口自动化基本都是json的格式,对于文件上传是一种特殊的格式是表单格式针对这种表单格式在接口自动化中怎么处理,主要通过工作中使用的一个实际的例子进行分享 举例:web上需要导入一个文件实现相关的功能,主要通过两个接口…...
Java高频面试题分享
文章目录 1. 策略模式怎么控制策略的选取1.1 追问:如果有100种策略呢?1.2 追问:什么情况下初始化Map 2. 什么是索引?什么时候用索引?2.1 追问:怎么判断系统什么时候用量比较少2.2 追问:如何实时…...
kvm虚拟化平台部署
kvm虚拟化平台部署 kvm概念简介 kvm自linux2.6版本以后就整合到内核中,因此可以看做是一个原生架构. kvm虚拟化架构 硬件底层提供物理层面的硬件支持 linux(host),就相当于这个架构中的宿主机,上面运行了多个虚拟机。…...
利用arthas热更新class文件
利用arthas热更新class文件 背景:发现一个bug,家里难以复现,需要在现场环境更新几行代码验证。 arthas-boot version: 3.7.1 java -jar arthas-boot.jar启动arthas 1、利用arthas的sc命令查找确定类名称 sc com.**2、反编译为java文件 …...
天机学堂 第四天 高并发优化总结
前端每隔15秒就发起一次请求,将播放记录写入数据库。 但问题是,提交播放记录的业务太复杂了,其中涉及到大量的数据库操作: 如何进行优化 单机并发能力 变同步为异步 合并写请求 提高单机并发:优化SQL,尽…...
Canva收购Leonardo.ai,增强生成式AI技术能力
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
前端练习<HtmlCSS>——照片墙(附完整代码及实现效果)
这个小练习也来源于b站up小K师兄,大家可以通过下面的链接学习哦~up讲的非常详细。 纯CSS写一个简单酷炫的照片墙效果~ 先看一下这个照片墙的效果: 1.鼠标没有放到图片上时,照片同比例,每张照片都有倒影的效果。 2.然…...
PHP基于微信小程序的打车平台-计算机毕业设计源码78689
摘 要 本文介绍的是基于PHP开发的打车平台小程序。该系统旨在为用户提供一个便捷、高效的平台,以实现网约车的打车功能。随着社交媒体和互联网的普及,网约车已成为日常交通中常见的形式。然而,传统的打车方式存在不方便、不及时等问题。 微信…...
Vue element ui分页组件示例
https://andi.cn/page/621615.html...
redis存储结构
一、整体结构图 二、redisDb结构体 Redis是一个高性能的键值存储系统,它支持多种类型的数据结构,如字符串、列表、集合、散列等。Redis数据库由多个数据库组成,每个数据库用一个redisDb结构体来表示。 dict *dict; dict指向一个字典结构的指…...
SQL Server 数据误删的恢复
在日常的数据库管理中,数据的误删操作是难以避免的。为了确保数据的安全性和完整性,我们必须采取一些措施来进行数据的备份和恢复。本文将详细介绍如何在 SQL Server 中进行数据的备份和恢复操作,特别是在发生数据误删的情况下。假设我们已经…...
墨烯的C语言技术栈-C语言基础-018
char c; //1byte字节 8bit比特位 int main() { int a 10; //向内存申请四个字节,存储10 &a; //取地址操作符 return 0; } 每个字节都有地址 而a的地址就是它第一个字节的地址 要先开始调试才可以查看监控和查看内存 左边是地址 中间是内存中的数据 最后面的是…...
5分钟上手MouseClick:让重复点击自动化的3个核心技巧
5分钟上手MouseClick:让重复点击自动化的3个核心技巧 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观 ,操…...
【05-log-+-diff:看懂你改了什么、历史是什么】
第五篇:log diff:看懂你改了什么、历史是什么会提交只是第一步,会"读"历史才是真的用上了 Git。这篇教你把 log 和 diff 玩出花来。git log:查看提交历史 git log默认输出太详细,通常用这些参数来精简&…...
亚马逊/Shopee关键词排名高就一定好?你可能陷入了“数据幻觉”
关键词排名高只说明“看得见”,不代表“卖得动”,更不等于“值得投”。理论锚点信息经济学信号噪音理论:排名只是表层信号,可能混杂品牌词截流等无关信息。SEO 搜索意图分类:信息型搜索不等于交易型搜索。一、误区揭露…...
HunyuanVideo-Foley效果评测:与AudioLDM、MERT等主流音效模型横向对比
HunyuanVideo-Foley效果评测:与AudioLDM、MERT等主流音效模型横向对比 1. 评测背景与测试环境 1.1 评测目标 本次评测旨在对比HunyuanVideo-Foley与当前主流音效生成模型(AudioLDM、MERT)在音效质量、生成速度、资源占用等方面的表现。测试…...
Phi-3-mini-4k-instruct-gguf完整指南:模型原理、部署、调参、运维一体化
Phi-3-mini-4k-instruct-gguf完整指南:模型原理、部署、调参、运维一体化 1. 模型概述 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理问答、文本改写、摘要整理和简短创作等任务。相比完整版模型,…...
Java服务在Istio中Metrics丢失、Tracing断链?OpenTelemetry + Istio Telemetry V2精准对齐配置
第一章:Java服务在Istio中Metrics丢失与Tracing断链的根因剖析当Java应用以Sidecar模式接入Istio时,常出现Prometheus采集不到服务间HTTP指标(如istio_requests_total)、Jaeger/Zipkin中Span链路在Java服务入口处中断等现象。这些…...
KT0803K FM发射芯片Arduino驱动开发与射频工程实践
1. KT0803系列FM发射芯片Arduino库深度解析与工程实践指南1.1 芯片定位与系统级约束KT0803及其衍生型号(KT0803K/L/M)是高度集成的单芯片FM广播发射器,专为低功耗、小体积音频广播应用设计。该系列芯片内部集成了PLL频率合成器、立体声编码器…...
BAR和BA
BAR 是请求方发出的“问题”:“我刚才发的那批数据包,你收到了哪几个?”BA 是接收方回复的“答案”:“我收到了第1、3、4、5个包,第2个没收到。”BAR - Block Ack Request(块确认请求) 角色与发…...
STM32智能剪枝机:嵌入式系统与传感器集成实践
1. 项目背景与需求分析作为一名从事嵌入式开发多年的工程师,我最近完成了一个基于STM32的智能绿化带剪枝机项目。这个项目的初衷源于我在城市公园散步时的观察:园艺工人手持笨重的剪枝工具,在烈日下长时间弯腰作业,不仅效率低下&a…...
抑制素A抗体如何提升妊娠中期唐氏综合征筛查的效能?
一、为何抑制素A成为妊娠期的重要生物标志物?抑制素A是一种由α和βA亚基通过二硫键连接形成的异源二聚体糖蛋白。在非妊娠期,它主要由卵巢颗粒细胞分泌,作为反馈调节因子,选择性地抑制垂体前叶分泌卵泡刺激素。进入妊娠状态后&am…...
