类型 编程语言

devtools/2025/1/16 1:47:06/

探究技术的本质,追寻技术的乐趣!如题,今天我们来聊聊类型,这里的类型需要限定范围,特指编程语言中的类型。如果要给众多编程语言按照类型来分类的话,可以分为两类,一类是静态类型的语言,一类是动态类型的语言。静态类型的语言的典型代表Java,动态类型的语言的典型代表Python。无论是动态还是静态都逃不出类型,就如同小说中常说的一样,"跳出三界之外,仍在五行之中",显而易见,类型是编程语言最基本的语法元素,就如同句子的主语一般,不可缺少。基本有时候会省略主语,那也是在上下文的环境中隐含了主语。就如同编程语言中的类型推导一般,比如Go中 var name = "pandaer"。既然类型如此基础,那么类型究竟代表了什么呢?我认为我们看待类型有两个视角,一个对内,一个对外。

对内:CPU的视角

CPU才不管你是什么类型,CPU只认机器码,也就是0101序列。根据机器码执行指令操作内存,如果你写过汇编代码,那么你一定有感触,读写内存的方式是使用内存地址,而且稍不注意就容易写错内存地址。这种没有边界检查式的读写内存,心智压力极大。也是因为这个原因,各个高级编程语言就利用类型来限定我们能够操作内存的范围。在高级编程语言中,变量就可以看成内存地址,因为内存地址是一串数字不方便记忆,所以利用变量来替代。而为变量赋予类型就是就是限定这个变量能操作的内存的范围。比如 var num int64要表达的意思就是num这个变量能操作的内存单元大小只有8个字节。通过类型来限制能够操作的内存范围,极大的减少了心智负担。这也是为什么C语言中的指针容易出错的原因所在,即失去了内存的范围限制。

对外:建模的视角

建模,其实就在在构建我们的程序的时候,只抽取对我们程序而言相关的属性,比如对于书而言,如果我们构建的是一个在线图书馆程序,我们可能更加关注书的名字,出版社,书的分类。而如果我们开发的是一个书店项目,我们可能更加关心书的价格,书的销量这些属性。而类型就提供了建模的能力,比如对于书而言,我们可以使用String类型来表示书的名字,使用Int类型来表示书的页码。

总结

类型对内限定了变量能够访问的内存范围,提高程序的安全性,对外提供了建模的手段。


http://www.ppmy.cn/devtools/107643.html

相关文章

springweb获取请求数据、spring中拦截器

SpringWeb获取请求数据 springWeb支持多种类型的请求参数进行封装 1、使用HttpServletRequest对象接收 PostMapping(path "/login")//post请求//spring自动注入public String login(HttpServletRequest request){ System.out.println(request.getParameter("…

如何在Mac电脑上本地部署Stable Diffusion:详细教程(webUI)

Stable Diffusion是一款强大的AI生成图像模型,它可以基于文本描述生成高质量的图像。对于想要在本地运行此模型的用户来说,使用Mac电脑部署Stable Diffusion是一个非常吸引人的选择,特别是对于M1或M2芯片的用户。本文将详细介绍如何在Mac上本…

开源模型应用落地-qwen2-7b-instruct-LoRA微调-ms-swift-单机多卡-RTX 4090双卡(十四)

一、前言 本篇文章将使用ms-swift去高效微调QWen2系列模型,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略…

【代码随想录|图论part03之后】

代码随想录|数组 704. 二分查找,27. 移除元素 一、part031、101. 孤岛的总面积1.1 dfs版本1.2 BFS版本2.102. 沉没孤岛3、103. 水流问题4、104.建造最大岛屿二、part041、110. 字符串接龙2、105.有向图的完全可达性3、106. 岛屿的周长三、part05-06 并查集理论1、107. 寻找存在…

yocto | 基于Linux的定制系统跑Qt app(第三集)yocto任务与语法

点击上方"蓝字"关注我们 yocto | 基于Linux的定制系统跑Qt app(第一集)yocto | 基于Linux的定制系统跑Qt app(第二集)bitbake工作流程 01、任务 >>> 【空任务】 如果不想使用某个任务可以在配方文件将任务定义为空,比如将do_install任务定义为…

Qt Creator 配置pcl1.14.1

1.安装pcl1.14.1 地址:Releases PointCloudLibrary/pcl (github.com) 下载前两个 下载完成后双击exe文件,修改一下安装路径,然后一路下一步。 OpenNI2 默认安装到C:\Program Files 下了,想修改OpenNI2 的安装路径,可…

腾讯云Linux服务器运维,安装JDK、rabbitmq、nginx、Redis、ClickHouse

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 CODING 代码托管目录 1、…

vue在生产环境和测试环境去掉 console 打印日志 只保留 “error“、 “warn“

vue在生产环境和测试环境去掉 console 打印日志 只保留 “error”、 “warn” 文章目录 vue在生产环境和测试环境去掉 console 打印日志 只保留 "error"、 "warn"一、安装插件二、babel.config.js配置 一、安装插件 npm install babel-plugin-transform-r…