C_and_CPP 板


LINE

※ 引述《gauss760220 (宅哥)》之铭言: : ※ [本文转录自 Grad-ProbAsk 看板 #1KQe7Yfy ] : 作者: gauss760220 (宅哥) 看板: Grad-ProbAsk : 标题: [理工] 程式语言观念 : 时间: Tue Nov 18 07:16:47 2014 : 国考里面有个题目 : "为何Interpreter比Compiler更容易加入新的程式语言观念?" : 请问这题该怎麽回答? 这个命题根本就是错的。 Interpreter 是给一段程式码,它直接跑出结果送给你。 Compiler 是给一段程式码,它翻译成另一个语言、会跑出同样结果的程式码。 它们的差别只有在最後产出结果的地方不同, 而前面的 parsing 与 semantic check 则完全相同。 对程式语言来说,前面的部份才是关键。 现在的语言早就没在分什麽 interpreter 与 compiler, 都嘛是做在一起,像 python / ruby / haskell / ocaml, 它们都同时具备 compiler 与 interpreter, 也都有很丰富的语言特性。 就像「compiler产生的程式码跑得比interpreter快」之类的命题, 这些其实都是以讹传讹的错误印象。 compiler 与 interpreter 差别就只是一个做翻译、另一个给结果, 没有道理哪个比较容易修改、或哪个执行起来比较快。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.32.97
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1416285590.A.386.html
1F:→ carylorrk: interpreter 的特性通常还包括遇到才翻译并执行,所以 11/18 13:08
2F:→ carylorrk: JIT 通常算是 compilation,从 QEMU 的 TCI/TCG 也可以 11/18 13:09
3F:→ carylorrk: 看得出来并不是执行会顺便跑出结果的都被称作是 11/18 13:10
4F:→ carylorrk: interpreter。不过这之间的差异越来越小是真的。大多数 11/18 13:11
5F:→ carylorrk: interpreter 越来越复杂,像 python 也有很多实作往 11/18 13:16
6F:→ carylorrk: JIT 靠拢(虽然支援度都还有待加强。) 11/18 13:17
7F:推 carylorrk: 回到原本的问题,interpreter 比较简单在很多时候是对 11/18 14:00
8F:→ carylorrk: 的。 compiler 通常需要处理比较多 state 的问题,而 11/18 14:01
9F:→ carylorrk: interpreter 可以在 dispatcher 的地方处理而简化问题 11/18 14:03
10F:→ carylorrk: 不过当然现在成熟的语言有太多影响的因子在,实在很难 11/18 14:19
11F:→ carylorrk: 一概而论。(跟 target 也有关系) 11/18 14:20
12F:推 suhorng: 请问可以借转吗 11/18 23:05
13F:→ littleshan: 请转 11/19 12:21
suhorng:转录至看板 PLT 11/19 12:24
14F:→ littleshan: 所谓「遇到才翻译」实在不能称之为interpreter的特性 11/19 13:30
15F:→ littleshan: 若单一一行程式码无法构成AST,那也没办法马上执行 11/19 13:33
16F:→ littleshan: 而翻译成语法树後执行,或翻译成bytecode後执行 11/19 13:36
17F:→ littleshan: 以抽象的角度去看并没有什麽不同 11/19 13:37
18F:→ littleshan: 若硬要说前者是interpreter 後者是compiler 11/19 13:42
19F:→ littleshan: 中间的界限是很难明确定义的 11/19 13:42
20F:→ littleshan: 所以我认为一个给结果、一个做翻译是比较明确的定义 11/19 13:44
21F:→ carylorrk: 嗯...其实仔细想你说的也是对的,JIT 也是产生 code 11/19 18:57
22F:→ carylorrk: 但是有些直接给结果但实际上是 compilation + run 的却 11/19 18:58
23F:→ carylorrk: 也不被算在 interpreter 内(ex: go run) 11/19 18:58
24F:→ carylorrk: 所以应该说,遇到才翻算是 interpreter 可以实作的功能 11/19 19:00
25F:→ carylorrk: 但非必须?毕竟在很多时候遇到才翻的确比整个翻好简单 11/19 19:01
26F:→ carylorrk: 像是 dynamic language 里的 type ,或是像实作 11/19 19:02
27F:→ carylorrk: exception 这类东西,都不单单翻 AST 的问题。 11/19 19:04
28F:推 suhorng: 我觉得主要是 "功能" 跟 "怎麽实作/优化" 的差异 11/19 20:16
29F:→ suhorng: 就算要说是 compiler 能提供的功能也有可能吧 11/19 20:16
30F:→ suhorng: *能提供"遇到就翻"的功能 11/19 20:18
31F:→ suhorng: 要从这方面来分的话两者真的都会各种混杂, 但实际上把 11/19 20:18
32F:→ suhorng: "解释一种语言" (要说是"定义"也无妨), 把 compiler 看成 11/19 20:19
33F:→ suhorng: 做 code transformation 变成另一种 target 跑的东西满 11/19 20:19
34F:→ suhorng: 不错; 这是功能/目的的差异 11/19 20:20
35F:→ suhorng: 所以一个程式跑起来本来就有可能是 interpreter 跟 11/19 20:21
36F:→ suhorng: compiler 混杂, 不需要硬生生切开说哪样才是 interpreter 11/19 20:21







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灯, 水草

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

TOP