数组为什么这么有用?

Lisp只用原子和表就构建了整个世界,其实数组是表的超集,也就是说表是数组,但数组不是表,这个略作思考就能发现,无需证明。JS的关联数组是红黑树,关联数组并不是C数组的超集,因为C数组可以当成一片连续内存使用。也许有用的不是数组,而是运算符[],C++只用重载[]就实现了数组。[]只是一个函数调用而已,一种函数调用的简写形式。这种简写或者说语法糖非常重要,因为它让代码的可读性更好。[]是一个运算符重载,即a[1]会变换为标准的函数调用operator[](a,1)。再看看其他的运算符,1+2变换为operator+(1,2)。两者的共性是变换,这个变换只是一个简单的文本替换,没错,它就是宏。我很早就意识到C++的模板其实是一种宏(这点在我的代码里也可以看出),也就是说宏是模板的超集。现在居然发现运算符重载也是一种宏!我一直以为模板和运算符重载才是C++的精髓,它们构建了整个C++世界。我错了,宏才是C++的根本。难道宏就是世界的终极原子?至少C++的if、for目前还不是宏,我试试能不能把它们变成宏。


总结如下:
表是数组,数组是运算符重载,运算符重载是宏,模板是宏,所以大家都是宏。


精彩评论:


电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……


电脑内存或文件内容只是一个字节数组,上面已经证明了数组是宏,所以,电脑内存是宏。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值