Forwarded from 《一天世界》博客 (Lawrence Li)
《一天世界》博客:《剩余价值》播客被中国封杀
https://blog.yitianshijie.net/2020/02/26/surplus-value-podcast-banned-by-china/
https://blog.yitianshijie.net/2020/02/26/surplus-value-podcast-banned-by-china/
一天世界
《剩余价值》播客被中国封杀
由三位女性媒体人发起的泛文化类播客《剩余价值》上周发布了第五十一期节目「瘟疫、语言和具体的人」,内容是对北京大…
个人感觉你了解得很广,但是深度比较欠缺,怀疑你会在实现这门语言解释器的时候出现问题,我给你总结下吧。
编程是用语言提供的基础逻辑结构实现自己的程序,编程语言依据范式提供一套基础的编程方法。
实践里,程序的简洁性(可读性)、可复用性、灵活性、安全性、健壮性都是很重要的,其中编程语言主要负责简洁性和复用性。
按照抽象层次大体划分,编程分为表述式(imperative) 和 定义式(declarative)。
更细地,无结构编程(unstructured programming)、结构化编程(structured programming) 或者说过程式、函数式(functional)、面向对象(object-oriented)、关系式(relational) 也即逻辑式。
其中机器汇编属于无结构编程。现代电子计算机是一种表述式的机器,每个处理器核心按照顺序执行指令,指令可能读写存储器,也可能执行(带条件)的跳转,以移步到程序的另一个部分继续执行。
在冯·诺依曼的存储式程序计算机里,代码也是数据。这种“动态解释”的模型比较灵活,只要有“执行资源”和随便什么程序,计算机可以“一机多用”。
再广一点就涉及二进制、数据编码和转化、ABI、目标文件格式、程序分段、广义的虚拟化资源共享化了,这方面我们不需要知道太多。
编程语言的实现一般而言就是最少一个解释器(interpreter),本质上和计算器一致,都是递归的树型结构的后序遍历器。
稍微高级一点的会增加或者直接换为去实现一个编译器(compiler),编译器和解释器都会实现语言的抽象语义,但是—多了一个代码生成(codegen) 的步骤,也就是所谓的“编译期”。
不过现代对开发工具的要求也是很高的,所以实现也要配套至少代码高亮/括号匹配的各种编辑器支持,甚至要帮忙运维社区的“生态环境”——如现实应用的各种基础依赖库,以及各种 guide/document/resource。
并非面向对象编程都需要 GC 来自动管理回收分配存储对象,实际上,面向对象只是指以 封装、抽象、继承、多态 为主的一种编程范式,“对象”可以理解为函数式里的闭包(closure),它包含了 this 里的数据以及依赖这些数据的操作(包括 get/set accessor),也即“方法(methods)”
对象可以被理解为 Ruby 里的 Kernel.send 方法,因为给它一个方法名,它就能“调用”这个方法。
https://zhuanlan.zhihu.com/p/108928060
编程是用语言提供的基础逻辑结构实现自己的程序,编程语言依据范式提供一套基础的编程方法。
实践里,程序的简洁性(可读性)、可复用性、灵活性、安全性、健壮性都是很重要的,其中编程语言主要负责简洁性和复用性。
按照抽象层次大体划分,编程分为表述式(imperative) 和 定义式(declarative)。
更细地,无结构编程(unstructured programming)、结构化编程(structured programming) 或者说过程式、函数式(functional)、面向对象(object-oriented)、关系式(relational) 也即逻辑式。
其中机器汇编属于无结构编程。现代电子计算机是一种表述式的机器,每个处理器核心按照顺序执行指令,指令可能读写存储器,也可能执行(带条件)的跳转,以移步到程序的另一个部分继续执行。
在冯·诺依曼的存储式程序计算机里,代码也是数据。这种“动态解释”的模型比较灵活,只要有“执行资源”和随便什么程序,计算机可以“一机多用”。
再广一点就涉及二进制、数据编码和转化、ABI、目标文件格式、程序分段、广义的虚拟化资源共享化了,这方面我们不需要知道太多。
编程语言的实现一般而言就是最少一个解释器(interpreter),本质上和计算器一致,都是递归的树型结构的后序遍历器。
稍微高级一点的会增加或者直接换为去实现一个编译器(compiler),编译器和解释器都会实现语言的抽象语义,但是—多了一个代码生成(codegen) 的步骤,也就是所谓的“编译期”。
不过现代对开发工具的要求也是很高的,所以实现也要配套至少代码高亮/括号匹配的各种编辑器支持,甚至要帮忙运维社区的“生态环境”——如现实应用的各种基础依赖库,以及各种 guide/document/resource。
并非面向对象编程都需要 GC 来自动管理回收分配存储对象,实际上,面向对象只是指以 封装、抽象、继承、多态 为主的一种编程范式,“对象”可以理解为函数式里的闭包(closure),它包含了 this 里的数据以及依赖这些数据的操作(包括 get/set accessor),也即“方法(methods)”
对象可以被理解为 Ruby 里的 Kernel.send 方法,因为给它一个方法名,它就能“调用”这个方法。
https://zhuanlan.zhihu.com/p/108928060
知乎专栏
为QQ机器人设计中文自然语言风格的编程语言(一)
为QQ机器人设计中文自然语言风格的编程语言(零)4.需求分析机器人主要面向人群是桌游玩家和设计师。而在此之前我其实也还做过一个桌游机器人:因为当初做这个机器人的时候是一边实现一边构思,没有好好规划,所以…
Forwarded from Deleted Account
就在刚刚我看见了一个 cat girl
央视曝光某高官和 cat girl 的惊天秘密!
震惊国人!曾是 cat girl 的小A 如今居然沦落到这步田地!
小林家的女仆竟然是 cat girl!大家看后都惊呆了!
千万别吃 cat girl!少碰这五个部位,多活十年!
赶快扔了 cat 碰过的物品!专家:这么脏的水,还敢给它喝吗?
癌症前兆!cat girl 对武汉男子的这番动作,能害死人!
被害惨了!cat girl 与同类之间的惊悚一幕
护肝降压、治病防癌!对 cat girl 的五个妙用
毒素最多!贝爷都不敢招惹这种 cat
山村小罐 cat girl 的神奇功效
价值千万世界 top 5 的 cat girl!难怪央视著名主持人不敢公开关系
差点丧命!某男子看完今日头条后直接崩溃,几乎要跳楼
某知名女星的绝密隐私公然被曝光,尺度不小!
意想不到!乔碧萝殿下的身份曝光,真实脸孔简直令人发指!
绝密隐私!小A整容失败,修复后仍是颜值堪忧!
高层揭秘!四旬大叔初遇 cat girl 后做了这三件事,竟然乖乖听话回家拜见父母?
北京震怒、全民炸锅!揭秘 cat girl 市场里灭绝人性的一幕
彻底玩完 cat girl 后,男子的这番言论给自己摊上了大麻烦
强硬反击!年仅 14 岁的年轻 cat girl 的一番话,全球沉默
大惊失色!从市场迎回的上品 cat girl 居然有这个?!
沦为炮灰!一英俊少年与 300 只 cat girl 不堪回首的往事:想停战都没办法
胆战心惊!1958 年长安街广场上的诡异一幕
难得机遇!一男子偶遇 cat girl,这通操作让他幸福终生!
绝不再忍!省长明确表示:立法严惩虐待 cat girl 的凶恶歹徒!
世界 girl 组织的渎职事故,国人哽咽、西方胆寒!
央视曝光某高官和 cat girl 的惊天秘密!
震惊国人!曾是 cat girl 的小A 如今居然沦落到这步田地!
小林家的女仆竟然是 cat girl!大家看后都惊呆了!
千万别吃 cat girl!少碰这五个部位,多活十年!
赶快扔了 cat 碰过的物品!专家:这么脏的水,还敢给它喝吗?
癌症前兆!cat girl 对武汉男子的这番动作,能害死人!
被害惨了!cat girl 与同类之间的惊悚一幕
护肝降压、治病防癌!对 cat girl 的五个妙用
毒素最多!贝爷都不敢招惹这种 cat
山村小罐 cat girl 的神奇功效
价值千万世界 top 5 的 cat girl!难怪央视著名主持人不敢公开关系
差点丧命!某男子看完今日头条后直接崩溃,几乎要跳楼
某知名女星的绝密隐私公然被曝光,尺度不小!
意想不到!乔碧萝殿下的身份曝光,真实脸孔简直令人发指!
绝密隐私!小A整容失败,修复后仍是颜值堪忧!
高层揭秘!四旬大叔初遇 cat girl 后做了这三件事,竟然乖乖听话回家拜见父母?
北京震怒、全民炸锅!揭秘 cat girl 市场里灭绝人性的一幕
彻底玩完 cat girl 后,男子的这番言论给自己摊上了大麻烦
强硬反击!年仅 14 岁的年轻 cat girl 的一番话,全球沉默
大惊失色!从市场迎回的上品 cat girl 居然有这个?!
沦为炮灰!一英俊少年与 300 只 cat girl 不堪回首的往事:想停战都没办法
胆战心惊!1958 年长安街广场上的诡异一幕
难得机遇!一男子偶遇 cat girl,这通操作让他幸福终生!
绝不再忍!省长明确表示:立法严惩虐待 cat girl 的凶恶歹徒!
世界 girl 组织的渎职事故,国人哽咽、西方胆寒!
🤔 以后我会把
至于不同的词性我不想多说,举个例子,unification type inference 是『一致化类型推导』、make unify 是『令_一致化』
理由是,如 a+1=b,一致化暗含了两者本来相等“一致”,但归一化给人感觉像是 a+1 本来不等 b,只是 apply 了这个操作以后才相等了
对 a+1=b 的一致化只可能成功或失败而没有结果,但有需要的副作用:求得 a+1=b 时 a 的值,使得等式成立的值,这才是 unify 最基本的操作
unification 翻译为『一致化』而不是『归一化』吧至于不同的词性我不想多说,举个例子,unification type inference 是『一致化类型推导』、make unify 是『令_一致化』
理由是,如 a+1=b,一致化暗含了两者本来相等“一致”,但归一化给人感觉像是 a+1 本来不等 b,只是 apply 了这个操作以后才相等了
对 a+1=b 的一致化只可能成功或失败而没有结果,但有需要的副作用:求得 a+1=b 时 a 的值,使得等式成立的值,这才是 unify 最基本的操作
秘技・智商量化
这个例子可以联想出,
中国(subject)、厕所(object)
是相对的 subject 重要呢,还是 object 更重要呢…… 如果 object 是 subject 的一部分,那么 会不会倾向朝 subject 这个更大的方向想呢……
还有一些不常见但很妥帖的联想,先逐一枚举某个 a 的所有属类,再取得其中和 b 有联系的部分,再选取时间/位置上最接近的事物……
但是所谓的智商 真的就能代表应对各种实际问题的能力吗?
这个例子可以联想出,
中国(subject)、厕所(object)
是相对的 subject 重要呢,还是 object 更重要呢…… 如果 object 是 subject 的一部分,那么 会不会倾向朝 subject 这个更大的方向想呢……
还有一些不常见但很妥帖的联想,先逐一枚举某个 a 的所有属类,再取得其中和 b 有联系的部分,再选取时间/位置上最接近的事物……
但是所谓的智商 真的就能代表应对各种实际问题的能力吗?
Forwarded from Deleted Account
CodeHz 熟不熟悉 对子程序作用域的实现
以及对 by-value, by-name, by-need 三种求值模型的实现
以及对 by-value, by-name, by-need 三种求值模型的实现
Forwarded from Deleted Account
如果只是实现解释器不带虚拟机,会不会显得太幼稚?
如果只有到高级语言的后端连作用域都不处理,会不会显得太前端?
如果没有实现 native 或者 bytecode 后端,是不是会显得不够好看呢
如果只有到高级语言的后端连作用域都不处理,会不会显得太前端?
如果没有实现 native 或者 bytecode 后端,是不是会显得不够好看呢
Forwarded from Deleted Account
啊,这么说蛮有道理的
可是 对求值来说 顺序也是最终程序要编码实现的一种语义吧
记得 LLVM IR 里 SSA,虽然重要的是“内联”表示 val ref,但其实有副作用的话是不能不顾赋值顺序的
可是 对求值来说 顺序也是最终程序要编码实现的一种语义吧
记得 LLVM IR 里 SSA,虽然重要的是“内联”表示 val ref,但其实有副作用的话是不能不顾赋值顺序的
Forwarded from Deleted Account
by-name 实现起来不好吧,都得传 block 进去,把那东西内联……
block closure 的实现有什么注意点呢
block closure 的实现有什么注意点呢
Forwarded from Deleted Account
就是说 by-value 调用前优先顺序求值?
function wtf() {
if [ a = 0 ]; $1
else; $0
}