Programming 板


※ 引述《[email protected] ( )》之铭言: > ※ 引述《[email protected] (汀)》之铭言: > > 而且是针对 flex & bison 的: > > 当初 4.0 之所以把 C++ parser 整个拿纯 C 手工重写, > > 有一大原因就是 flex & bison 生出来的 code 太难 debug 了, > > 而 C++ 的 syntax 又是极其复杂 (对 compiler 而言), > C++ 语法不复杂, 但是容易搞错, 排列组合过多 对人来说是这样, 对 compiler 来说比较难处理。 > parser 对 compiler 来说是很小的一部份, 甚至该当成独立的模组 本来就是如此, 但是就 user 的角度来看, 送合法的 syntax 进去连 parsing 都不过, 那後面的东西什麽都不用谈。 > C++ 的 templates 是 define 扩充版, 这玩意个人认为比 define 更难 debug > trace 的时候还更是困难, 跳来跳去, 而且不同 compiler 连 STL 版本都不同 > 不是每个写 C++ 的人都会去钻一堆特殊写法, 可读性不是只针对 C++ 上瘾者 C++ 没有什麽所谓的特殊写法, 基础书籍 (圣经本) 读过一遍什麽都可以看得懂, 只是有没有那个毅力去慢慢解析而已。 #define 根本连 debug 都不用讲, 因为没有一种 debugger 能 step into macro, 如果你用 #define 做了一个 function-like macro 内含 100 行 code, 你用 debugger 去 step into 也是直接一口气飞过那 100 行, 如果这 100 行里面有问题根本求助无门 (好吧,自己复制贴上去再取代文字是一种方法), 而 template 你却可以直接很快乐的 step into。 至於 trace 这种东西是有技巧的, 没事你不需要进去看 STL 写了什麽, 会拿 debugger 去 step into 到 STL 里面的人大概也是因为不懂 STL, 该用 step over (next) 的时候就该用 step over, 什麽都 into 进去那还得了, 不管是 debug 还是 trace 都不应该是这样玩的。 有非常多人在 debug C++ 程式都忘记了一件事, 今天是因为很多 C++ compiler 不支援 export, 所以才把 template 相关的 library 实作码放在 header 上, 以致於它的实作码在多数情况下是可见的, 结果在 debug 的时候就傻傻的 step into 进去, 这是不对的, 就像你在 debug C 程式的时候, 你不会闲到 step into 进 printf()、strcpy() 之类的 lib function 一样, 你没有理由在使用 STL 的时候 step into 到 vector::push_back() 里面。 唯一受人诟病的应该是 template 实际引数表示法的易读性, 像是 string 会被展开成 std::basic_string<...> 一大串的状况, 但这种东西其实是 compiler 和 debugger 偷懒没加工所致, 其实如果每套 STL 实作能提供相关的资讯档, 这个资讯档以 compiler 和 debugger 规范的某种公约来撰写, 这类讯息就能够被化简, 事实上就算没有化简, 写了几个月的人多少有能力去抓到重点是哪, 抓不到重点的大概也是白学白写了。 > 真正优良的程式靠的是规划, 如 mozilla 用的 apple coding style > mozilla 的程式非常好 debug, 其中的 javascript parser 比 C++ 不知麻烦多少倍 当你使用到 library 或是 tool (code generator) 时, debug 的难度本来就会上升, 这时跟「自己写的部分」的程式规划优劣没有什麽关联性, library 通常会提供「逐步建构」和「启动」的介面, 而 tool 通常是事先建构好再产生一个启动介面, 前者 user 可以很清楚的知道过程 (主要流程还是自己写的 code), 所以非常的容易 debug 和 trace, 後者的主要流程则是被 tool 自动产生, 像是从一个都是数字的巨大 array 读出某某值做一些事情, 然後送进 case label 成千上万又都是 magic number 的 switch 叙述里, 只有次要流程才是自己写的 code, 何者容易 debug 其实显而易见。 > javascript 充满着例外, 不完整的语句也还是要能跑, 它的 parser 才算经典 就我所知 browser 有权利拒绝这种东西并送出错误讯息, 只是因为 user 会觉得这种 browser 很难用, 所以不少 browser 才设计容错机制应对, 但是容错机制跟语法复杂度是两个不同面向的技术, 跟 C++ parser 牵涉的复杂度有着本质上的不同, 并没有任何可以加以比较的空间存在。 -- Name: Tseng, Ling-hua E-mail Address: [email protected] School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-229-51.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不驯;属於年少的轻狂色彩
1F:推 Dungeon:推220.141.249.204 04/18 23:20
2F:推 Arton0306:推 123.195.22.165 04/29 16:08
3F:推 twisters121:再推 61.70.53.157 05/01 16:35







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草
伺服器连线错误,造成您的不便还请多多包涵!
「赞助商连结」






like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP