动态语言的好处是什么?

2014-12-31 10:20:51 +08:00
 wangxiaoxiao
维基百科上这样介绍动态语言
它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化
以python为例,由于只写过简单的脚本,一直体会不到动态语言这种“运行改变结构”的强大特性,因此求大神介绍一下开发中,哪些地方会用到“运行时可以改变其结构”?
10647 次点击
所在节点    Python
25 条回复
knightzorro
2014-12-31 10:25:36 +08:00
受到的限制少啊,更容易表意。douban有个牛逼的工程师用python写了个dpark, python版本的spark, 处理大数据的效率比hadoop高很多。总共代码不到2万行的样子。

你说的“新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化”, 这个有时候被当作一个feature, 用来patch原有代码的行为,使用得当能让编程的时候思维非常流畅。
14
2014-12-31 10:32:44 +08:00
Angular.js的实现方式就是用toString()把函数源代码导入成字符串然后再解析函数
tini8
2014-12-31 10:36:12 +08:00
思维不受束缚,可以任意发挥,把更多的精力放在产品本身上。java入门的程序员很难理解动态语言的优点,看见过很多java程序员把python和ruby的代码写的跟java似的,心痛
axe
2014-12-31 10:39:00 +08:00
@knightzorro 可以上具体的代码举个例子吗?

不是很理解的说
cancan
2014-12-31 10:42:03 +08:00
膜拜xiaoxiao巨巨
cszjutstar
2014-12-31 10:42:27 +08:00
膜拜超巨巨
yasonyyx
2014-12-31 10:44:19 +08:00
膜拜超巨巨
msg7086
2014-12-31 10:57:09 +08:00
本来想说些什么,结果看到楼上两楼,顿时吓得躲到角落里去了。
levn
2014-12-31 11:00:46 +08:00
一般说的应该是指“动态类型语言”,相对于“静态类型语言”

其实它就像是一种类型信息上的延迟绑定
zts1993
2014-12-31 11:02:50 +08:00
F5即可见,,这是用PHP的唯一理由,弥补了没有静态检查的缺憾。2333333
fooevr
2014-12-31 11:03:51 +08:00
@tini8 思维不受束缚之后带来的问题恐怕难让你把精力放在产品本身上,之后一个版本的产品除外。
wangxiaoxiao
2014-12-31 11:26:28 +08:00
@cancan 求不要黑~菜菜的~

@levn 动态类型的确写起来比较爽,但是我想问的是“运行时可以改变其结构”,这一点开发的时候怎么用到呢?
ffffwh
2014-12-31 11:39:58 +08:00
原始的lambda calculus是图灵完全的。
加上类型限制,simple typed lambda calculus就要引入额外的递归操作符。
可见类型对表达能力的限制。
laoyuan
2014-12-31 12:15:16 +08:00
以PHP为例,我朴素的认为 $$x 和 $x() 都算是动态吧,变量名和函数名可以是变量
kmvan
2014-12-31 12:19:35 +08:00
@laoyuan 以PHP为例,我朴素的认为 $$x 和 $x() 都算是动态吧,变量名和函数名可以是变量
没错,PHP中 $$x 这种变量叫“可变变量”,非常实用的技巧。
spacewander
2014-12-31 12:24:07 +08:00
@wangxiaoxiao 有空可以看一下《Ruby元编程》。虽然是讲Ruby的,但是用Python或者Javascript也可以实现。
spacewander
2014-12-31 12:27:09 +08:00
用Python实现了一个动态添加方法的例子,虽然没有结合什么业务逻辑
LZ可以看一下:
http://paste.ubuntu.com/9649012/
laoyuan
2014-12-31 13:08:26 +08:00
@kmvan
PHP 如果不使用 eval 运行动态生成的函数(安全起见),是不是只有把字符串存一个 php 文件然后include?
pertersonvv
2014-12-31 13:12:23 +08:00
弱类型,动态绑定?
kmvan
2014-12-31 13:31:56 +08:00
@laoyuan PHP 如果不使用 eval 运行动态生成的函数(安全起见),是不是只有把字符串存一个 php 文件然后include?
不一定啊,你可以把字符串存成 txt 文件,然后再include也行。或者存成 exe 文件也能解析。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/158111

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX