作者lgd1008 (lgd1008)
看板Soft_Job
标题Re: [请益] 请问学哪个比较实用
时间Sun Feb 21 20:14:58 2010
高阶语言不会是eye candy
高阶语言compile出来之所以会比较慢/大, 是因为它引入的更多的附加物
如果引入OOP, 参考物件需更多的dereference...
如果引入try-catch之类的error-handling, error发生时需更多的处理时间...
如果引入VM, GC, 分配记忆体时需更多时间...
...
可是也因为引入附加物, 可能得到的好处可能有 runtime optimization,
程式易读易改, 易debug, 与development tool更容易结合, 或更适合"某类型"的计算
而且像linked list, 一般的+-*/, 之前的observer pattern ,或相似简单的algorithm
高低阶语言compile出来的结果根本"差不多", 如果效率差不是因为附加物
那根本就是作者太弱, 语言未成熟
反过来说, 一些较复杂的algorithm, 或复杂的应用
你用低阶语言也不一定做得出它的 performance
因为光要做出与高阶语言特色能匹敌的library, 可能就是一件难事
例如有些语言, 提供你不限大小的型别去做运算
你用低阶语言去实作, 参考, 组合, 包装 .... 一些大数运算的library
可能弄了半天都没有办法做出那样的 performance, 或写出相同简洁的程式.
个人意见
※ 引述《Aurim (Who cares?)》之铭言:
: ※ 引述《yauhh (哟)》之铭言:
: : 所谓linked就是一个结构包含另一个结构.
: : Linked list则是结构的包含方式比较有规律.
: : 在这方面,我觉得要说语言不重要,在linked list上面不是如此.
: : Linked list用C或C++写才会特别把link带出来. 用Python,谈什麽link呢?
: : 而真要说不被语言绑住的,是stack,queue,tree,graph这些language-free的东西.
: 我说个有些人可能不爱听的话,所有高阶语言处理的资料都要放在计算机结构内。
: 这代表什麽呢?有的语言可能没明确的指标,像Java,可是实际上物件型态的变数
: 都是动态物件,每个物件型态的变数都有个object reference,不像C++的物件有
: 分动态静态。高阶语言没指标就不能实作linked list?那不是要哈哈哈了吗?
: 有些人说linked list就是解决array有固定长度的问题,可是在我来看,
: 每个电脑的记忆体量都是有限的,位址空间也是有限的。
: 说到底,大家都是在一个由CPU提供的byte/word/dword array中玩来玩去而已。
: 如果机械语言/组语能实作linked list,所有有array的语言就都可以实作它。
: 没有人规定linked list的link一定要是指标或者以某个形态出现的啊。
: 你高兴的话,只要能够在现在的计算机结构下实作,
: 你也可以把link隐含在自己发明的语言所提供的某种语意样式里。
: 其他资料结构没有一个不可以这样玩,第一次想到那样的想法、发明那样语言的时候,
: 肯定很爽,我高中时很想自己来搞一个。
: 不过那又如何,现在的我来看,都是eye candy,拘泥於有形与无形的差别而已。
: 程式生产力真的有比较好吗?有时候吃eye candy是要多付出代价的。
: Eye candy吃得愈多,离真正最底层的实作愈遥远,
: 对各种事务到底是怎麽运作的,就愈容易缺乏了解。
: 也许有的工作把愈底层的细节从真正要做的事情中抽离得愈远愈好,
: 但是也有的工作本来就是要从最底层的细节了解起,才能做得好的。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.138.35.146
1F:推 keyword1983:同意! 02/22 07:57
2F:推 yauhh:说别的语言语法是eye candy只是见树不见林罢了 02/22 12:02