徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
安装
比浏览器更快的访问!
 

动态调度

指数 动态调度

在计算机科学中,动态调度(Dynamic dispatch)是指运行时选择哪一个多态操作的实现(方法或函数)来调用的过程。动态调度通常被应用于面向对象编程(OOP)的语言和系统,并被认为是一个主要特点。 面向对象的系统把一个问题看作是一系列通过名字引用来制定操作的相互影响的物体。多态性是指一些可互换的物体虽有相同名字但却在行为上不同的现象。例如,一个文件对象和一个数据库对象都有一个储存记录的方法来记录需要存储的的个人记录,但是二者的实现却不同。一个程序可以有对文件或数据库的访问。当一个程序调用对象的存储记录时,有一些东西需要来决定采取哪种行为。如果有人认为OOP仅仅指给对象发送信息,那么在这个例子中程序仅仅把一条存储记录信息发送给了一个未知类型的对象,而把如何将这条信息发送给正确对象交给运行支持系统来处理。这个对象来决定它执行哪些行为。 与动态调度成对比的是静态调度,在静态调度中,对一个多态操作的实现是在编译时间就选择好的。动态调度的目的在于支持那些当在编译时间内无法决定一个多态操作的合适的实现因为这个决定取决于这个操作的一个或多个实际参数的运行类型的情形。 动态调度和动态绑定不同。在选择操作的上下文中,绑定把名称和操作相关联,而调度则在确定名称所引用的操作之后选择操作的实现。通过使用动态调度,名称可以在编译时被绑定到多态操纵中,但是直到运行时才执行该实现。虽然动态分派不暗示后期绑定,但后期绑定意味着动态分派,因为绑定决定了什么可以调度。.

16 关系: 執行期函数重载C++Common Lisp面向对象程序设计訊息傳遞 (軟體)计算机科学JavaJavaScriptJulia (编程语言)Objective-CPythonSmalltalkSpeXialSwift (程式語言)方法 (计算机科学)

執行期

執行時期(Run time)在電腦科學中代表一個電腦程式從開始執行到終止執行的運作、執行的時期。與執行時期相對的其他時期包括:設计時期(design time)、編譯時期(compile time)、鏈結時期(link time)、與載入時期(load time)。 而執行環境是一種為正在執行的程序或程式提供軟體服務的虛擬機械環境。它有可能是由作業系統自行提供,或由執行此程式的母程式提供。 通常由作業系統負責處理程式的載入:利用載入器(loader)讀入程式碼,接著進行基本的記憶體配置,並視需要聯結此程式指定的所有動態链接庫。有些程式語言會由此語言提供的運行環境處理上述工作。 程式碼的某些問題,只能在執行期間進行偵錯動作(或較有效率),例如邏輯錯誤或陣列邊際檢查等便屬此類。因此不管撰寫與測試得多麼精細,有些錯誤必須在實際上線並處理真實資料的情況下才能找出。因此,程式使用者也許會遇到諸如執行時期錯誤之類的訊息。.

新!!: 动态调度和執行期 · 查看更多 »

函数重载

函数重载(英語:Function overloading),是Ada、C++、C#、D和Java等编程语言中具有的一项特性,这项特性允许创建数项名称相同但功能的输入输出类型不同的子程序,它可以简单地称为一个单独功能可以执行多项任务的能力。.

新!!: 动态调度和函数重载 · 查看更多 »

C++

C++是一種使用廣泛的计算机程序設計語言。它是一種通用程序設計語言,支援多重编程模式,例如程序化程序設計、数据抽象、面向对象程序設計、泛型程序設計和设计模式等。 比雅尼·斯特勞斯特魯普博士在贝尔实验室工作期间在20世紀80年代發明並實現了C++。起初,這種語言被稱作“C with Classes”(“包含‘類’的C語言”),作為C語言的增強版出現。随后,C++不斷增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多繼承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(Runtime type information)、命名空間(namespace)等概念逐漸納入標準。1998年,國際標準組織(ISO)頒布了C++程序設計語言的第一個國際標準ISO/IEC 14882:1998,目前最新标准为ISO/IEC 14882:2017。根據《C++編--程思想》(Thinking in C++)一書,C++與C的代码执行效率往往相差在±5%之間。 C++語言發展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向对象語言,並且憑藉着接近C語言的效率,在工業界使用的開發語言中佔據了相當大份額;第二階段從1995年到2000年,這一階段由於標準模板庫(STL)和後來的Boost等程式庫的出現,泛型程序設計在C++中佔據了越來越多的比重。當然,同時由於Java、C#等語言的出現和硬體價格的大規模下降,C++受到了一定的衝擊;第三階段從2000年至今,由於以Loki、MPL(Boost)等程式庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最複雜的一員。.

新!!: 动态调度和C++ · 查看更多 »

Common Lisp

Common Lisp,縮寫為CL(不是組合邏輯的縮寫)是Lisp編程語言的一種方言,由ANSI INCITS 226-1994(R2004)(前身為ANSI X3.226-1994(R1999)),所定義的語言規範標準。Common Lisp HyperSpec是源自於ANSI Common Lisp標準的網頁超連結版本。 CL語言是為標準化和改良Maclisp而開發的後繼者。到20世紀80年代初,幾個工作群組已經在設計MacLisp各種後繼者,例如:Lisp Machine Lisp(又名 ZetaLisp),Spice Lisp,NIL和S-1 Lisp。CL是為了標準化和擴展此前眾多的MacLisp分支而開發,它本身並非具體的實作,而是對語言設立標準的規範。有數個實作符合Common Lisp規範,其中包括自由和開源軟件,以及商業化產品。CL支援了結構化、函數式和物件導向編程等範式。相对于各种嵌入在特定产品中的语言,如Emacs Lisp和AutoLISP,Common Lisp是一種用途廣泛的编程语言。不同於很多早期Lisp,Common Lisp如同Scheme,其中的變量是預設為詞法作用域的。 身為一種動態編程語言,它有助於進化和增量的軟件開發,並將其迭代編譯成高效的執行程序。這種增量開發通常是互動持續地改善,而不需中斷執行中的應用程序。它還支援在後期的分析和優化階段添加可選的型別註記與轉型,使編譯器產生更有效率的代碼。例如在硬體和實作的支援範圍內,fixnum能保存一個未封裝整數,允許比大整數或任意精度類型更高效率的運算。同樣地,在每個模組或函數的基礎上可聲明優化,指示編譯器要編譯成哪一類型的安全級別。 CL包含了支援多分派和方法組合的物件系統,縮寫為CLOS,它通常以元物件(Metaobject)協定來實現。 CL藉由標準功能進行擴展,例如Lisp宏(编译时期程序自身完成的代码重排(compile-time code rearrangement accomplished by the program itself))和阅读器宏(赋予用户自定义的語法以扩展具特殊意义的符号(extension of syntax to give special meaning to characters reserved for users for this purpose))。 CL為Maclisp和约翰·麦卡锡的原創Lisp提供了一些向後兼容性。這允許較舊的Lisp軟件移植到Common Lisp之上。.

新!!: 动态调度和Common Lisp · 查看更多 »

面向对象程序设计

面向对象程序设计(Object-oriented programming,缩写:OOP)是種具有物件概念的程式編程典範,同时也是一种程序开发的抽象方针。它可能包含資料、、程式碼與方法。对象則指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,物件裡的程序可以訪問及經常修改物件相關連的資料。在物件導向程式編程裡,電腦程式會被設計成彼此相關的物件。 面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。 当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和面向对象设计(Object Oriented Design,简称OOD)方面的知识。許多流行的程式語言是物件導向的,它們的風格就是會透由物件來創出實例。 重要的物件導向程式語言包含Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby 與 PHP等。.

新!!: 动态调度和面向对象程序设计 · 查看更多 »

訊息傳遞 (軟體)

在電腦科學中,訊息傳遞(Message passing)是一種通訊的形式,在并发计算、平行計算、物件導向程式設計與行程間通訊中使用。在這種模式中,行程或物件以傳送及接收訊息的方式來達成同步。 不同于传统程序设计通过名字直接调用(invoking)一个进程、子例程或者函数,訊息傳遞直接发送消息给一个进程,依赖进程或基础框架来调用实际执行的代码。 可分为同步方式与异步方式。.

新!!: 动态调度和訊息傳遞 (軟體) · 查看更多 »

计算机科学

计算机科学用于解决信息与计算的理论基础,以及实现和应用它们的实用技术。 计算机科学(computer science,有时缩写为CS)是系统性研究信息与计算的理论基础以及它们在计算机系统中如何与应用的实用技术的学科。 它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域;有些强调特定结果的计算,比如计算机图形学;而有些是探討计算问题的性质,比如计算复杂性理论;还有一些领域專注于怎样实现计算,比如程式語言理論是研究描述计算的方法,而程式设计是应用特定的程式語言解决特定的计算问题,人机交互则是專注于怎样使计算机和计算变得有用、好用,以及随时随地为人所用。 有时公众会误以为计算机科学就是解决计算机问题的事业(比如信息技术),或者只是与使用计算机的经验有关,如玩游戏、上网或者文字处理。其实计算机科学所关注的,不仅仅是去理解实现类似游戏、浏览器这些软件的程序的性质,更要通过现有的知识创造新的程序或者改进已有的程序。 尽管计算机科学(computer science)的名字里包含计算机这几个字,但实际上计算机科学相当数量的领域都不涉及计算机本身的研究。因此,一些新的名字被提议出来。某些重点大学的院系倾向于术语计算科学(computing science),以精确强调两者之间的不同。丹麦科学家Peter Naur建议使用术语"datalogy",以反映这一事实,即科学学科是围绕着数据和数据处理,而不一定要涉及计算机。第一个使用这个术语的科学机构是哥本哈根大学Datalogy学院,该学院成立于1969年,Peter Naur便是第一任教授。这个术语主要被用于北欧国家。同时,在计算技术发展初期,《ACM通讯》建议了一些针对计算领域从业人员的术语:turingineer,turologist,flow-charts-man,applied meta-mathematician及applied epistemologist。 三个月后在同样的期刊上,comptologist被提出,第二年又变成了hypologist。 术语computics也曾经被提议过。在欧洲大陆,起源于信息(information)和数学或者自动(automatic)的名字比起源于计算机或者计算(computation)更常见,如informatique(法语),Informatik(德语),informatika(斯拉夫语族)。 著名计算机科学家Edsger Dijkstra曾经指出:“计算机科学并不只是关于计算机,就像天文学并不只是关于望远镜一样。”("Computer science is no more about computers than astronomy is about telescopes.")设计、部署计算机和计算机系统通常被认为是非计算机科学学科的领域。例如,研究计算机硬件被看作是计算机工程的一部分,而对于商业计算机系统的研究和部署被称为信息技术或者信息系统。然而,现如今也越来越多地融合了各类计算机相关学科的思想。计算机科学研究也经常与其它学科交叉,比如心理学,认知科学,语言学,数学,物理学,统计学和经济学。 计算机科学被认为比其它科学学科与数学的联系更加密切,一些观察者说计算就是一门数学科学。 早期计算机科学受数学研究成果的影响很大,如Kurt Gödel和Alan Turing,这两个领域在某些学科,例如数理逻辑、范畴论、域理论和代数,也不断有有益的思想交流。.

新!!: 动态调度和计算机科学 · 查看更多 »

Java

Java是一種廣泛使用的電腦程式設計語言,擁有跨平台、物件導向、泛型程式設計的特性,广泛应用于企业级Web应用开发和移动应用开发。 任職於昇陽電腦的詹姆斯·高斯林等人于1990年代初开发Java語言的雛形,最初被命名为Oak,目標設定在家用电器等小型系統的程式语言,應用在电视机、电话、闹钟、烤面包机等家用电器的控制和通訊。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代網際網路的发展,Sun公司看見Oak在網際網路上应用的前景,于是改造了Oak,於1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的-zh-hans:指针; zh-hant:指標;-,改以-zh-hans:引用; zh-hant:參照;-取代,同時移除了C++中的--和多重继承特性,改用接口取代,增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。昇陽電腦对Java语言的解释是:「Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言」 Java不同於一般的编译語言或直譯語言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性。在早期JVM中,这在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的執行速度有了大幅提升。 与传统型態不同,Sun公司在推出Java時就将其作为开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是 Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同,此外,微软公司後來推出了与之竞争的.NET平台以及模仿Java的C#语言。後來Sun公司被甲骨文公司併購,Java也隨之成為甲骨文公司的產品。 現時,行動作業系統Android大部分的代碼採用Java 程式設計語言編程。.

新!!: 动态调度和Java · 查看更多 »

JavaScript

JavaScript,一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的直譯語言。它已经由ECMA(欧洲电脑制造商协会)通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。 虽然JavaScript与Java这门语言不管是在名字上,或是在语法上都有很多相似性,但这两门编程语言从设计之初就有很大的不同,JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一门函数式编程语言)的影响。在语法结构上它又与C语言有很多相似(例如if条件语句、while循环、switch语句、do-while循环等)。 在客户端,JavaScript在传统意义上被实现为一种解释语言,但在最近,它已经可以被即时编译(JIT)执行。随着最新的HTML5和CSS3语言标准的推行它还可用于游戏、桌面和移动应用程序的开发和在服务器端网络环境运行,如Node.js。.

新!!: 动态调度和JavaScript · 查看更多 »

Julia (编程语言)

Julia是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译语言相媲美的性能。.

新!!: 动态调度和Julia (编程语言) · 查看更多 »

Objective-C

Objective-C是一种通用、高级、面向对象的编程语言。它扩展了标准的ANSI C编程语言,将Smalltalk式的消息传递机制加入到ANSI C中。目前主要支持的编译器有GCC和Clang(採用LLVM作為後端)。 Objective-C的商標權屬於蘋果公司,蘋果公司也是這個程式語言的主要開發者。苹果在開發NeXTSTEP操作系統時使用了Objective-C,之后被OS X和iOS继承下來。現在Objective-C与Swift是OS X和iOS操作系统、及与其相关的API、Cocoa和Cocoa Touch的主要编程语言。.

新!!: 动态调度和Objective-C · 查看更多 »

Python

Python( ),是一种广泛使用的高级编程语言,属于通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以視之為一種改良(加入一些其他程式語言的優點,如物件導向)的LISP。作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比於C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。 与Scheme、Ruby、Perl、Tcl等动态类型编程语言一样,Python拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。其本身拥有一个巨大而广泛的标准库。 Python 解释器本身几乎可以在所有的操作系统中运行。Python的正式直譯器CPython是用C语言编写的、是一個由社群驱动的自由软件,目前由Python软件基金会管理。.

新!!: 动态调度和Python · 查看更多 »

Smalltalk

Smalltalk,被。Smalltalk由艾伦·凯,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。 Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:C++,C#,Objective-C,Actor,Java和Ruby等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。.

新!!: 动态调度和Smalltalk · 查看更多 »

SpeXial

SpeXial為可米國際影視旗下的藝人團體,團名「SpeXial」為「eXtra Special」的變形單字,意指「與眾不同的特別」。SpeXial於2012年12月7日以四人組合發行首張同名專輯《SpeXial》正式出道,其後經歷數次團員變動,現以八人組合活動。成員包括偉晉、明杰、子閎、Evan、Teddy、風田、易恩、Dylan,平均身高184公分平均年齡23歲。粉絲名為「特使」,意指「特別的守護天使」。 2016年5月21日至22日,出道三年多的SpeXial一連兩天於新莊體育館舉辦首場演唱會「SpeXial the 1st concert - SpeXial Land」《SpeXial Land 2016》。.

新!!: 动态调度和SpeXial · 查看更多 »

Swift (程式語言)

Swift是一種支持多编程范式和編譯式的編程語言,是用來撰寫macOS/OS X、iOS、watchOS和tvOS的语言之一。 2014年,其在苹果开发者年会(WWDC)發布。設計Swift時,蘋果公司有意讓Swift與Objective-C共存在蘋果公司的作業系統上。.

新!!: 动态调度和Swift (程式語言) · 查看更多 »

方法 (计算机科学)

#重定向 方法_(電腦科學).

新!!: 动态调度和方法 (计算机科学) · 查看更多 »

传出传入
嘿!我们在Facebook上吧! »