目录
21 关系: Arithmetic overflow,动态调度,即時編譯,安德斯·海尔斯伯格,专有软件,应用程序接口,微软开发者网络,公共语言运行时,C Sharp,C++,C语言,类型擦除,线程,面向对象程序设计,自由软件,Java,LINQ,Platform Invocation Services,Sun Microsystems,指针,斐波那契数列。
- .NET
- C語言家族
- Java
Arithmetic overflow
#重定向 算術溢出.
查看 比較C♯和Java和Arithmetic overflow
动态调度
在计算机科学中,动态调度(Dynamic dispatch)是指运行时选择哪一个多态操作的实现(方法或函数)来调用的过程。动态调度通常被应用于面向对象编程(OOP)的语言和系统,并被认为是一个主要特点。 面向对象的系统把一个问题看作是一系列通过名字引用来制定操作的相互影响的物体。多态性是指一些可互换的物体虽有相同名字但却在行为上不同的现象。例如,一个文件对象和一个数据库对象都有一个储存记录的方法来记录需要存储的的个人记录,但是二者的实现却不同。一个程序可以有对文件或数据库的访问。当一个程序调用对象的存储记录时,有一些东西需要来决定采取哪种行为。如果有人认为OOP仅仅指给对象发送信息,那么在这个例子中程序仅仅把一条存储记录信息发送给了一个未知类型的对象,而把如何将这条信息发送给正确对象交给运行支持系统来处理。这个对象来决定它执行哪些行为。 与动态调度成对比的是静态调度,在静态调度中,对一个多态操作的实现是在编译时间就选择好的。动态调度的目的在于支持那些当在编译时间内无法决定一个多态操作的合适的实现因为这个决定取决于这个操作的一个或多个实际参数的运行类型的情形。 动态调度和动态绑定不同。在选择操作的上下文中,绑定把名称和操作相关联,而调度则在确定名称所引用的操作之后选择操作的实现。通过使用动态调度,名称可以在编译时被绑定到多态操纵中,但是直到运行时才执行该实现。虽然动态分派不暗示后期绑定,但后期绑定意味着动态分派,因为绑定决定了什么可以调度。.
即時編譯
即时编译(Just-in-time compilation),又译及时编译、实时编译,动态编译的一种形式,是一种提高程序运行效率的方法。通常,程序有两种运行方式:静态编译与動態直譯。静态编译的程序在执行前全部被翻译为机器码,而直譯执行的则是一句一句边运行边翻译。 即时编译器则混合了这二者,一句一句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗。相对于静态编译代码,即时编译的代码可以处理延迟绑定并增强安全性。 即时编译器有两种类型,一是字节码翻译,二是动态编译翻译。 微软的.NET Framework,还有绝大多数的Java实现,都依赖即时编译以提供高速的代码执行。Mozilla Firefox使用的JavaScript引擎SpiderMonkey也用到了JIT的技術。Ruby的第三方实现Rubinius和Python的第三方实现PyPy也都通过JIT来明显改善了解释器的性能。.
安德斯·海尔斯伯格
安德斯·海尔斯伯格(Anders Hejlsberg,),丹麦人,Borland Turbo Pascal编译器的主要作者。进入微软公司后,先后主持了Visual J++、.Net, C# 和 TypeScript。.
专有软件
专有软件,又称非自由软件、专属软件、私有软件、封闭性软件等,是指在使用、修改上有限制的软件。此外,有些软件也有复制和分发的限制,它也属于专有软件的范畴。通常,与专有软件对应的是自由软件。这些限制是由软件的所有者制定的。 这些限制是通过法律或者技术上的手段实现的,有时这两种手段被同时采用。最常见的技术限制方式是保留能够被大家读懂的源代码,而只发布只有计算机才能读懂的程序(如二进制格式)。法律上的限制包括使用版权(附带软件许可证)和专利。这些程序的源代码往往被其持有者视为商业机密。如果第三方要查看源代码时,往往需要签署保密协议。.
应用程序接口
应用程序接口(Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由於近年來软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。.
微软开发者网络
微软开发者网络(MSDN, Microsoft Developer Network)是早期微軟公司在推廣Win32 程式設計以及開發工具時,專門為開發人員所提供的一個服務,是使用微軟技術開發軟體或應用程式時必定會參訪的地方,同時它也有提供訂閱的服務,由微軟不定時供應最新的軟體及技術文件,MSDN的技術文件庫是免費開放讓所有人在線上閱讀,但光碟的版本必須要利用MSDN Library Subscription才可以拿到,不過自從Visual Studio 2005開始,MSDN Library即提供免費的網路下載。 也許是受到MSDN成功與廣為開發人員所知的影響,昇陽也將它們的Java文件庫定名為。.
公共语言运行时
#重定向 通用語言運行庫.
C Sharp
#重定向C♯.
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语言
C是一种通用的程式語言,广泛用于系统软件与应用软件的开发。于1969年至1973年間,為了移植與開發UNIX作業系統,由丹尼斯·里奇與肯·汤普逊,以B语言为基础,在贝尔实验室設計、开发出來。 C语言具有高效、灵活、功能丰富、表达力强和較高的可移植性等特点,在程式設計中备受青睐,成为最近25年使用最为广泛的编程语言。目前,C语言編譯器普遍存在於各種不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了众多後來的程式語言,例如C++、Objective-C、Java、C#等。 二十世纪八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言訂定了一套完整的國際標準語法,稱為ANSI C,作為C語言的標準。二十世纪八十年代至今的有关程式開發工具,一般都支持符合ANSI C的語法。.
类型擦除
类型擦除是计算机程序设计时,在编译期明确去掉所编程序(某部分)的类型系统。 操作语义不需要程序伴随着类型,这称作“类型擦除语义”(type-erasure semantics)。 类型擦除语义的一种可能是通过,确保程序在运行时执行不依赖类型信息。 与之相对的是类型传递语义(type-passing semantics)。如通过具体化。。类型擦除的逆操作是类型推断。.
线程
线程(thread)是操作系统能夠進行運算调度的最小單位。它被包含在进程之中,是进程中的實際運作單位。一条线程指的是进程中一个单一顺序的控制流,一個进程中可以並行多個线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。 线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。 一个进程可以有很多线程,每条线程并行执行不同的任务。 在多核或多CPU,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。在单CPU单核的计算机上,使用多线程技术,也可以把进程中负责I/O处理、人机交互而常被阻塞的部分与密集计算的部分分开来执行,编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。.
查看 比較C♯和Java和线程
面向对象程序设计
面向对象程序设计(Object-oriented programming,缩写:OOP)是種具有物件概念的程式編程典範,同时也是一种程序开发的抽象方针。它可能包含資料、、程式碼與方法。对象則指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,物件裡的程序可以訪問及經常修改物件相關連的資料。在物件導向程式編程裡,電腦程式會被設計成彼此相關的物件。 面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。 当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和面向对象设计(Object Oriented Design,简称OOD)方面的知识。許多流行的程式語言是物件導向的,它們的風格就是會透由物件來創出實例。 重要的物件導向程式語言包含Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby 與 PHP等。.
自由软件
自由軟體(free software),根據自由軟體基金會对其的定義,是一类可以不受限制地自由使用、複製、研究、修改和分發的,尊重使用者自由的軟體。這方面的不受限制正是自由軟體最重要的本質,與自由軟體相對的是专有软件(proprietary software),或被稱為私有軟體、封閉軟體(其定義與是否收取費用無關──自由軟體不一定是免費軟體)。自由軟體受到選定的「自由軟體授權協議」保護而發佈(或是放置在公有領域),其發布以原始碼為主,二進制檔案可有可無。自由軟體許可證的類型主要有GPL许可证和BSD许可证兩種。.
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 程式設計語言編程。.
LINQ
LINQ可以指:.
Platform Invocation Services
#重定向 平台叫用服務.
查看 比較C♯和Java和Platform Invocation Services
Sun Microsystems
#重定向 昇陽電腦.
指针
指针可以指:.
查看 比較C♯和Java和指针
斐波那契数列
--(意大利语:Successione di Fibonacci),又譯為費波拿契數列、費波那西數列、費氏數列、黃金分割數列。 在數學上,費波那契數列是以遞歸的方法來定義:.
另见
.NET
- .NET基金會
- C#与Visual Basic .NET的比较
- Entity Framework
- Microsoft Messenger service
- Mono
- SQL CLR
- Singularity
- WCF Data Services
- 比較C♯和Java
- 通用Windows平台
- 通用Windows平台应用
C語言家族
- Cg語言
- Cilk
- C语言
- C#与Visual Basic .NET的比较
- Dart
- D語言
- GLSL
- Go
- HMPP开放标准
- Handel-C
- Java
- MISRA C
- Newsqueak
- Not eXactly C
- Objective-C
- OpenACC
- OpenMP
- Perl
- Unified Parallel C
- 比較C♯和Java
- 高级着色器语言
Java
- .properties
- IBATIS
- JDK
- Java
- Java applet
- Java和C++的對照
- Java注解
- Java类加载器
- Java虚拟机
- OpenJDK
- 名字修饰
- 接口 (Java)
- 控制反转
- 比較C♯和Java
- 深入浅出系列
- 统一表达式语言
- 詹姆斯·高斯林