动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。
动态语言
有三个名词容易混淆: Dynamic Programming Language (动态语言或动态编程语言) Dynamically Typed Language (动态类型语言) Statically Typed Language (静态类型语言)
动态语言定义
所谓的动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断(注意是运行时的类型判断): def sum(a, b): return a + b
静态类型语言的类型
而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamic typing,常出现于脚本语言中。(idior不知道这能不能回答你对动态语言多态的疑问^_^) 这里我需要明确说明一点,那就是,是不是动态类型语言与这门语言是不是类型安全的完全不相干的,不要将它们联系在一起! 静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。顺便说一下,现在有这样一种趋势,那就是合并动态类型与静态类型在一种语言中,这样可以在必要的时候取长补短,Boo就是一个很好的试验性例子。^_^ 最后说一下Boo,Boo是一个静态类型语言,虽然用duck typing可以模拟dynamic typing,但是duck并不支持所有类型的操作替代,所以即使完全使用duck typing也不能达到dynamic typing。就像FantasySoft所述,Type Inference不是动态类型语言的特性,所以支持Type Inference不代表这门语言就是dynamically typed。 再特地为Ninputer这个VB的fans说一下VB.NET^_^,VB.NET是dynamically typed语言。
未来属于动态语言
在今天这个信息泛滥的时代,身为开发者,眼光比技术更重要。缺乏眼光的人,着眼于小,为细枝末节的所谓“创新”不惜肝脑涂地,赴汤蹈火,而面临真正变革时,或坐井观天,守旧拒新,或畏畏缩缩,裹足不前。具备眼光的人,着眼于大,平时稳扎稳打,不为世间纷扰所扰,一旦时机出现,则能抛却门户之见,枝节之争,以过人气概投身变革,成就自己的事业。这前后两者的差距之大,其实全在于对大趋势的把握上。 回顾IT技术不长的历史,我们会发现,每当重大变革发生的时候,在技术圈子里总是存在激烈的争论,总有那些着眼于小的人站在细枝末节上对技术变革本身表示质疑甚至否定。 当关系数据库和SQL语言把数据管理的繁琐工作从开发者和操作者身上解放出来的时候,有人抨击关系数据库性能低下;当微软开始用C语言开发PC应用程序时,汇编语言的拥护者轻蔑的说,只有汇编语言才能发挥PC机的全部能力;当Web进军企业计算时,一大批专家跑出来抨击HTML界面的呆板和HTTP协议的缓慢和幼稚。然而,所有这一切抱怨、质疑和信誓旦旦的否定,都被技术发展的大潮无情的吞噬,消失得无影无踪。原因很简单,所有这些声音,都是着眼于小,着眼于私,一叶障目,而不见IT技术发展的大势。IT技术发展的大趋势永远都是要更快,更简单。 从这个角度来看待动态语言,结论就异常的清晰。在今天这个时代、动态语言代表着更快更简单的技术大趋势,因此它将必然成为未来构建软件和互联网技术的主角。回顾2006年国内外动态语言的发展历程,也恰恰能够印证这一点。
分享到:
相关推荐
在qt程序切换语言标签可以动态的切换语言
WPF 多国语言实现与动态切换当前使用的语言。
Qt语言国际化,可动态切换多国语言,完整工程源码,可编译、可运行
确切地说,作者并非是想讨论JavaScript作为一种语言工具的用法或特性,更多地是希望用一种简洁的语言来讨论动态语言、函数式语言。而为了给这些语言范型以参照,以及讲述多范型如何“杂凑”在一起,也讨论了...
动态切换多语言简单的小Demo
程序实现多国语言的动态切换解决方案 实现思想:传统的做法是把所有的资源都放到动态库中,一种语言一个动态库,程序运行的时候通过加载不同的动态库来实现多语言功能。这样做的缺点是不能动态切换语言,如果更换...
在QT下实现动态切换语言,附源码和WORD说明文档
介绍了qml混合编程的多语言翻译,实现Qt、QML动态语言翻译切换功能
采用汇编语言实现动态链表,自己管理内存,实现malloc函数
Io语言是一门简单小巧采用原型编程范式的弱类型动态语言。虚拟机只有10K左右。初次遇见Io,你一定会惊叹于它的简洁。从Io官网就可以看出来,作者Steve Dekorte是个极度崇尚简洁的人。 io作为一门原型语言,其对象...
网络上很多的qt4动态语言切换讲到的都是一个主窗口的实现,如果主窗口中单击按钮弹出子菜单,子菜单的语言怎么切换,网络上很多都没讲到;这是我做的一个小例子,其中有7个子窗口,第一,二个我实现了动态的切换,...
Android动态系统语言切换https://blog.csdn.net/u012560369/article/details/89141075
【cocos creator】【TS】多语言插件DEMO,可在编辑器和运行中动态切换语言,支持文字、图集、散图 支持代码获取多语言文本,富文本,传参数
VS qt多语言国际化,动态切换菜单栏标题语言,不能用请打死我
动态加载dll中的string table实现多语言切换。
qt 多语言动态切换实例,建议用qtcreator打开编译
Soya是一门基于JVM上的动态编程语言,现在已经开源 它的特点是 直觉的: 简洁易懂的语法能让您舒服地完成日常所需 OO的: 一切皆为对象 函数式的:提供了必包、柯里化等函数式支持 强大的: 模式...
资源名称:Python源码剖析——深度探索动态语言核心技术资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Qml动态语言切换QmlLanguage.7z
实现多语言对话框程序动态库链接模式的动态多语言切换。