首页   注册   登录
 zhicheng 最近的时间轴更新

zhicheng

V2EX 第 14055 号会员,加入于 2011-11-28 13:16:44 +08:00
今日活跃度排名 14017
zhicheng 最近回复了
如果想从头到尾了解一下一个编程语言是如何工作的话可以了解一下我写的 http://www.lemon-lang.org/ 标准 C 实现,核心无外部依赖。

代码 https://github.com/lemon-lang/lemon

如果有什么问题或想法也可以找我讨论。
“ 640K 内存对任何人来说都足够了”
2018-11-02 16:01:33 +08:00
回复了 absente 创建的主题 程序员 我就知道很多人会黑中文编程
说得轻巧,代码拿来看看?
不反对你在自己的项目里用汉语日语韩语法语德语意大利语编程。但想要获得关注和反驳无用论,拿出东西来堵住他们的嘴啊。
既然目标是 C 语言,请不要拿 APL 这种理论型的东西来讲。真正能在工业中使用的,是能够降低人的心智负担的,这也是为什么 APL 这种东西看起来美好,实质无用的原因。
对于数学符号,问题的关键也不是好不好看,而是统一,你写一个公式别人能看得懂。
对于楼主,我看到的是一个人看了几篇 APL 的文章,仿佛找到了新世界的大门,兴奋不已要嚷嚷着要用 APL 改变世界。

这样的见得多了。
@wizardforcel 刚好相反,高级工程师根本就不会关心 UB 会产生什么样的行为,因为无论它产生什么样的行为,都是错的,哪怕程序看起来正确。

你知道 UB 会产生什么样的行为能避免被黑?程序能更安全?不,能让程序更安全的是从一开始就尽量避免引入 UB。

没有什么实现是完全正确的,但你明显不能往肯定错误的方向走啊。
@zmj1316 你说的那不是废话吗?用了 UB 基本上都是要出 Bug 的,大部分 Bug 也是由 UB 引起的,是我语文没学好,还是你逻辑没学好?还是知道 UB 会出现 Bug 是件很牛逼的事?
@zmj1316 工作这么多年,头一回听说用 Ub 的行为来 debug,你知道 ub 这是哪两个词的缩写?调试内存问题,你可以用 valgrind 可以用 addresssanitizer,能通过 ub 的行为来定位 bug ?我猜你是神。
因为你的代码本来就是错的,你在为错的代码强行找原因,你今天的 glibc 版本是这个行为,下一个可能是另一个行为,甚至不同的编译参数产生的行为也不一样。你要讨论 glibc 和 linux 就直接讨论,出个错的题目要“考”一下别人也是有趣。

如同法律上写了红灯不要过马路,你非要去讨论什么样的情况下红灯可以过马路,抱歉我理解不了这种行为。
我并没有争论,我只是在说你在误人子弟。
你的这个代码,不是什么底层,也不是什么知识,更不能在生产环境使用,除了那种要求指出错误的面试题,不应该用在任何地方。C 语言里明确表明了是未定义行为,就不要花时间去研究如果这样做了会是什么样的结果,因为它真的可以是任何行为,C 语言是一个标准并不是一个 C 实现。

初级工程师总觉得“了解”一点儿别人不知道的很厉害,殊不知这是高级工程师尽量避免的情况。

未定义行为的代码 == 错的代码
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4133 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 14ms · UTC 08:15 · PVG 16:15 · LAX 00:15 · JFK 03:15
♥ Do have faith in what you're doing.