冒号课堂§6.2:平台语言

6.2平台语言——先搭台后唱戏

大巧在所不为,大智在所不虑                    ——《荀子·天论篇》

关键词:平台语言, Java,C#,C++

摘要:简谈Java和C#

!预览

Java的目的是让一种语言在多种平台上运行,而C# 的目的是让多种语言在一种平台上运行

两个平台语言(Java和C#),一个重在语言,让语言向平台扩散;一个重在平台,让平台来凝聚语言

C++提供了一马平川的大路,也提供了陷阱密布的小道;Java则在大路上铺设水泥,同时封锁了捷径小道;C#同样填平了大路上的坑坑洼洼,但把一些小道上“此路不通”的牌子悄悄换成了“此路危险”

?提问

在C++的基础上,Java 与C#作了哪些改进?

Java与C#在设计理念上有何不同?

Java与C#是如何互相借鉴的?

Java与C#为什么擅长企业应用开发?它们能作系统开发语言吗?

:讲解

逗号提出:“现在应该到了Java时间吧。”

冒号顺水推舟:“下面谈论的重心从刚才的系统语言转到平台语言——Java和C#。”

问号听得一头雾水:“平台语言?Java不是平台无关的语言吗?”

“平台的意义很广,可以是硬件平台,可以是软件平台,也可以是二者的结合。”冒号解释道,“你说的‘平台’主要指硬件和操作系统平台,而我说的‘平台’指的是运行环境平台。当然这两种平台是密不可分的,Java与C#之所以能独立于前一种平台,正因为它们自带了后一种平台。具体地说,Java运行于以Java Virtual Machine(JVM) 为核心的Java平台,而C#运行于以Common Language Runtime(CLR)为核心的.NET平台。”

句号打了个比方:“这就好比在不同的山路上铺设相同的沥青,车子跑到哪儿都没区别了。”

“是这么个理儿。”冒号表示同意,“从传承的角度看,二者皆为基于C++之上的改进,剔除了其中易于出错或不易掌握的语法特征。我们先来看看它们区别于C++的共同之处。首先,二者均编译成与机器无关的托管码(managed code)或称字节码(bytecode),运行于虚拟机(virtual machine)之上。其次,禁用或限用指针并支持自动垃圾回收,由此极大地解放了程序员的生产力。起初这种做法并不是没有争议的,但随着机器性能的提高以及软件规模的扩大,对软件的健壮性、安全性和生产率的要求超过了对运行效率的要求,屏蔽指针和自动内存管理逐渐得到认同。尽管如此,指针运算和手动内存管理对于系统软件和在性能、实时性方面要求极高的软件还是必不可少的。因为这个原因,C#还是留了一手:允许标有修饰符unsafe的代码包含指针操作。”

引号较起真来:“这是否意味着C#也能作为系统语言呢?”

“或许吧。”冒号淡淡地说,“C#的胃口很大,上管天、下管地、中间还要管空气。企业级应用和桌面应用自不必说,底层应用也不放过。早在2003年,微软研究院就开始了用C#开发的名为Singularity的操作系统研究项目,另外还有SharpOS、Cosmos等开源操作系统。虽然它们目前仅用于研究,但不难看出C#的勃勃野心。说起来这也不新鲜,1998年Sun就搞了个针对嵌入式系统的JavaOS,可惜没能成功,为Java ME所取代。”

轮到叹号糊涂了:“刚才还说Java和C#是平台语言,怎么又同C和C++一样当系统语言来用了呢?”

冒号释疑:“Java可通过JNI调用C、C++等程序;C#可通过P/Invoke访问系统API,加之保留了指针操作,用于系统编程更加方便。其实一种语言胜任多种领域并不难,难的是在每个领域都独占鳌头。可问题是,有谁不乐见自己支持的语言被广泛应用呢?无论是微软还是Sun,他们都会竭尽所能地将自己的语言扩张到每个角落。程序员作为语言的用户,虽然很多时候并没有选择语言的权力,但心中要有杆秤,可不要轻易被商家的广告迷惑啊。”

时间: 2024-08-04 07:37:07

冒号课堂§6.2:平台语言的相关文章

冒号课堂§5.4:语言误区

第五课 语言小谈(4) 5.4语言误区--语言的宗教情结 爱而不知其恶,憎而遂忘其善 --<吴兢·贞观政要> 关键词:编程语言,宗教,程序员,架构师 摘要:关于编程语言的一些误区 !预览 ·如果说编程范式是一种文化,那么编程语言更像是一种宗教--尽管它本不该是 ·语言只有两种:一种怨声载道,一种无人问津 ·对待一门语言的态度应该是:与其抱怨争执,不如扬长避短 ·过分拔高一种语言与抹煞语言之间的差别是两种极端,皆为秕言谬说 ·这些人若有幸拜关公为师,他们最艳羡的一定他的赤兔马和青龙偃月刀,或许还

冒号和他的学生们(连载19)——平台语言

19.平台语言 见其可欲也,则必前后虑其可恶也者:见其可利也,则必前后虑其可害也者 --<荀子·不苟> 逗号提出:"现在应该到了Java时间吧." 冒号顺水推舟:"下面谈论的重心从刚才的系统语言转到平台语言--Java和C#." 问号听得一头雾水:"平台语言?Java不是平台无关的语言吗?" "平台的意义很广,可以是硬件平台,可以是软件平台,也可以是二者的结合."冒号解释道,"你说的'平台'主要指硬件和操

冒号课堂§6.1:系统语言

第六课 语言简评(1) 课前导读 本课对一些主流语言进行了简单的比较和评价.一家之言,权作助兴. 本课共分四节-- 系统语言--权力的双刃剑 平台语言--先搭台后唱戏 前台语言--视觉与交互的艺术 后台脚本--敏捷开发的利器 6.1系统语言--权力的双刃剑 居高者形逸而神劳,处下者形劳而神逸 -<洪应明·菜根谭> 关键词:C族语言,C语言,C++,D语言 摘要:简谈C.C++和D !预览 ·通禅悟道者拈花不语,坐井观天者蛙鸣鼓噪 ·Java程序员大多被惯坏了,环保意识要淡薄得多 ·(指针)用得

冒号课堂§6.4:后台脚本

6.4后台脚本--敏捷开发的利器 操千曲而后晓声,观千剑而后识器 --<文心雕龙·知音> 关键词:后台脚本, Perl,PHP,Python,Ruby,RoR,LAMP 摘要:简谈Perl.PHP.Python和Ruby !预览 语言的发展趋势一定是动静结合.刚柔并济 Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯 或许优雅正是来自对细节和规范的重视 (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影 ?提问 Perl.Pyt

冒号课堂§4.3:汇总范式

第四课 重温范式(3) 4.3汇总范式--一张五味俱全的大烙饼 形者神之质,神者形之用 --<范缜·神灭论> 关键词: 编程范式,设计模式 摘要: 总结编程范式 ?提问 l 编程范式与设计模式有什么区别? l 编程范式的核心价值是什么? l 总结前面介绍的编程范式,它们各自有哪些代表语言?核心概念和运行机制是什么?针对的问题和主要的目的是什么?实现原理是什么?常见的应用有哪些?有什么不足之处? :讲解 稍事休整后,大家重新团结在以冒号为中心的周围. 问号再度发问:"编程范式与设计模式

Groovy一种新兴的Java 2平台语言1.7.6发布

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.Groovy 在 12月16日发布了两个版本,Groovy 1.7.6 是一个 bug 修复版本,而 1.8 Beta3 则包含一些新功能: ● extended command expressions can be used on the right-hand side of assignments ● the @Log AST transformation is cus

groovy v1.7.8发布 一种新兴的Java 2平台语言

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用. Groovy 是 JVM 的一个替代语言 - 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同. Groovy界面 ● 是一个基于 Java虚拟机的敏捷 动态语言. ● 构建在

Groovy v1.7.10和1.8-rc-3发布 新兴的Java 2平台语言

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用. Groovy界面 特点: ● 是一个基于 Java虚拟机的敏捷 动态语言. ● 构建在强大的Java语言之上 并 添加了从Python,http://www.aliyun.com/zixun/aggregation/13430.html">

Groovy v1.8发布 新兴的Java 2平台语言

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用. Groovy 1.8发行说明如下: The 1.8 release of Groovy comes with many new features that greatly enhance ·the dynamic expressiveness o