什么不是跨平台的语言-- 真心求教

宏哥 发布于 2012/12/27 14:14
阅读 4K+
收藏 2

经常听说java拿跨平台说事, 回想起来, 差不多所有的语言都是跨平台的

C, python,php, perl ,lua, C#, delphi, C++, tcl,javascript......................

有没有什么语言不是跨平台的?

以下是问题补充:

@宏哥:看了大家的评论, 得出一个结论. 跨平台就和阉割一样, 任何东西, 只要阉割了, 就跨平台了, 就没有平台依赖性了. 像java没有小JJ一样, 这样就不会痿了. (2012/12/27 17:54)
加载中
0
random_walk
无量
无量
一看就是维基的
qycms_cn
qycms_cn
请问上面图片是哪个网站的截图?我想去看看。
4
南湖船老大
南湖船老大

    楼主是来找喷的么?想黑java还是体现你的睿智?不要拿你250的思维成天搅混水。别以为你每种语言会点皮毛,知道一点语言特性就出来装大拿。你不就是会点PHP和python的皮毛,知道点数据库特性么?论开发水平,好像也不见你有什么拿得出手的作品,OSC也没找到你开发的东西,在OSC也不见你写过什么高深莫测的代码。要代码没代码,要理论水平没理论水平,讨论高深的问题你不敢,讨论编译原理你不敢,讨论算法你不敢,讨论操作系统内核你不敢,你只敢插科打诨。就是那种天天闲着没事看文章,看到一些奇技淫巧,就以为自己知道了别人所不知道的东西,好比一个菜鸟看了《七天七语言》就以为自己精通七种语言,能讲出七种语言的特性,真把自己当高手了。知道几种语言皮毛算什么,我也会十多种语言皮毛呢。我写FORTRAN的时候还不认识你呢。

要是C跨平台的话,我不知道为什么还有那么多人鄙视linux的QQ客户端。windows下的QQ客户端多好用,直接拷到linux不就行了?为什么还有那么多人苦等linux下的搜狗的输入法,把windows下的文件拷到linux下不就行了?

而Java就能做到,把java下的jar拷到linux就就能运行。别跟我说虚拟机的事。java的虚拟机只要安装一次。C在win和linux下需要改很多代码,用很多宏来做兼容性,每个C程序从WIN移植到linux下都要重新编译,还不是每个人都会编译。

本来这问题也没啥,可是你一向劣迹斑斑。我喷的就是你,天天装大牛,装世外高手,有能耐就写点自己的作品,搞个拿的出手的东西,为开源世界做点实际的贡献,让所有人仰视你。不要有Linus的脾气,没Linus的水平。就知道那些陈词滥调,颠来倒去的说啊说。这么多人附和你,不是真心佩服你,只是想看你热闹而已。

有本事哪怕写个框架也行,让别人看看你的真本事。早就看你不爽了。

只会百度的程序员
只会百度的程序员
他可能是个阉人。。
th小米粥
th小米粥
果断的关注。
紅顏為君笑
紅顏為君笑
好好好 舒服了
一号男嘉宾
一号男嘉宾
老夫很久没有看见如此犀利的言辞了,顶你。
Y-QTCe
Y-QTCe
C当然是跨平台的,不信你问问人家做嵌入式的。
下一页
2
ghostdom
ghostdom

引用来自“妖魔舞”的答案

    楼主是来找喷的么?想黑java还是体现你的睿智?不要拿你250的思维成天搅混水。别以为你每种语言会点皮毛,知道一点语言特性就出来装大拿。你不就是会点PHP和python的皮毛,知道点数据库特性么?论开发水平,好像也不见你有什么拿得出手的作品,OSC也没找到你开发的东西,在OSC也不见你写过什么高深莫测的代码。要代码没代码,要理论水平没理论水平,讨论高深的问题你不敢,讨论编译原理你不敢,讨论算法你不敢,讨论操作系统内核你不敢,你只敢插科打诨。就是那种天天闲着没事看文章,看到一些奇技淫巧,就以为自己知道了别人所不知道的东西,好比一个菜鸟看了《七天七语言》就以为自己精通七种语言,能讲出七种语言的特性,真把自己当高手了。知道几种语言皮毛算什么,我也会十多种语言皮毛呢。我写FORTRAN的时候还不认识你呢。

要是C跨平台的话,我不知道为什么还有那么多人鄙视linux的QQ客户端。windows下的QQ客户端多好用,直接拷到linux不就行了?为什么还有那么多人苦等linux下的搜狗的输入法,把windows下的文件拷到linux下不就行了?

而Java就能做到,把java下的jar拷到linux就就能运行。别跟我说虚拟机的事。java的虚拟机只要安装一次。C在win和linux下需要改很多代码,用很多宏来做兼容性,每个C程序从WIN移植到linux下都要重新编译,还不是每个人都会编译。

本来这问题也没啥,可是你一向劣迹斑斑。我喷的就是你,天天装大牛,装世外高手,有能耐就写点自己的作品,搞个拿的出手的东西,为开源世界做点实际的贡献,让所有人仰视你。不要有Linus的脾气,没Linus的水平。就知道那些陈词滥调,颠来倒去的说啊说。这么多人附和你,不是真心佩服你,只是想看你热闹而已。

有本事哪怕写个框架也行,让别人看看你的真本事。早就看你不爽了。

顶你
Gmail.com
Gmail.com
我怎么看到了一幅,气急败坏的嘴脸呢,让别人拿出真本事之前,最好自己先亮一亮自己的真本事不是么?
dreamhack
dreamhack
恩,我们也是来看你热闹的!
1
自风
自风
摘自维基百科第一段: http://zh.wikipedia.org/wiki/%E8%B7%A8%E5%B9%B3%E5%8F%B0
大部分计算机语言从绝对意义而言,都是跨平台的:因为都是以高级的、人类可读的方式来对CPU发号指令,这样也就没必要依赖于任何操作系统。但如果要用系统的部件工具箱,来新建用户图形界面(GUI),就可能会用到开发员特定系统中的API函数或库类。虽然C++是跨平台的,但Windows下用到Win32 API的C++程序,一般就不能在Unix机器上编译。不同编译器对语言规范的解释也有所差异。这样的话,在针对不同系统进行构建之前,程序就得加以考虑。 一些如Java这样的语言,从一开始就意识到要在各个平台下运行,所以跨平台在其平台的本地语言环境中已经实现。例如,Java可以跨平台使用,正是由于Swing库在许多平台下的实现。类似的,能进行跨平台的文件访问,是因为有各自平台下文件访问的库。以此类推,各种跨平台问题,都需要各自的本地库来解决。wxWidgets框架就是这样的一个跨平台库,根据不同的跨平台问题,提供了许多不同的解决方案;类似的库有许多,可以根据不同语言的跨平台开发,而采用相应的库。 针对每种操作系统、CPU,而提供并测试各自的编译版本,这种做法的可行性很小;开源软件则允许用户自己来编译目的码(object code),这样在跨平台方面更好一些。类似的,那些解释型语言,或者需要虚拟机的语言,也更加符合跨平台的要求,因为用户也要自己进行编译。Sun公司的Java虚拟机HotSpot,只针对几种而不是全部平台,提供编译好的二进制文件。例如,Sun对于GNU/Linux,只支持i386平台,但如果谁在PowerPC或者SPARC计算机上运行Linux,就只好自己编译本地的机器码(machinecode),或者使用第三方软件,才能运行Java程序。 许多API(应用程序接口)依赖于平台。OpenGL可以看作是跨平台的,因为其不依赖于任何特定的操作系统、CPU构架或者某个牌子的图形设备。特定平台的API可以在其他系统上作为兼容层而新建,例如WINE的库,Windows程序就可以在UNIX系统上运行。 另外许多编程语言还有跨平台的扩展以及中间件,这样程序员对于同样的源代码,只要进行一点小修改,就可以在不同平台下编译/运行,例如Qt和wxWidgets。

1
崔钢
崔钢

总的来说,JVM还是很先进的,那些脚本语言,python和ruby从性能以及健壮性上来说,其实都不如java。(http://www.csdn.net/article/2009-11-16/273155-214803),而JVM其实已经是一个平台了,现在上面的语言很多,许多新的语言也都在这个平台之上运行,比如scala,比如clojure。这从另一个角度说明java平台的优秀。当然我们国内是没有什么创造力的,批评的人却很多,不知道这些批评者是不是真正关心技术发展的轨迹和趋势?另外,python和ruby其实也都有jvm的版本。总是JVM是一个优秀的平台,你可以有偏见,这没有关系,但是我觉得你可以对这个优秀的平台保持一点点尊重。因为其实我们很多人都在使用这个平台,同时它也在不断的发展这。

计算机语言的目的其实是方便人类给计算机下命令,同时这些命令也要利于人类理解,所以计算机语言(以后简称语言)的发展有两个方向,一个是越来越贴近自然语言,一个是越来越贴近领域术语语言。至于能否跨越操作系统平台,那是必然的,只在一个平台上生存的语言,发展必定受限制。而语言本身就不应该关心操作系统的细节,比如两个人之间的对话,其实是非常抽象的,不可能去说那么多的细节,因此,未来的语言,也一定是这样的。java不可能一直生存下去,但绝不会是因为有没有小XX这样的原因。

http://www.nowamagic.net/librarys/news/detail/524  节选《黑客与画家》保罗 格雷厄姆

gtd
gtd
有道理!
三日月
三日月
为什么总是有人把jvm绑在java上呢,难道jvm上其他语言不堪用?
0
醪糟儿蛋
醪糟儿蛋

语言本身没什么,关键得有平台给你跨

假设有天 你做个平台,就没有jvm,java在你的平台上也就是个球

景愿
景愿
arm 感觉压力很大,虽然有的平台有arm的jdk,但是不靠谱啊
0
流浪的猫
我理解Java跨平台是强调编译一次,且编译出来的东西在多个平台下都可以直接运行;而其他一些高级语言(例如C/C++)的跨平台至少还是需要重新再编译嘛,还是有区别的
0
mallon
mallon
语法好说,主要得看函数库/类库
0
Jooooooker
Jooooooker
在不使用平台特有API的基础上能够尽可能高的抽象化。不用拘泥于32bits还是64bits等细节。所以关键部分还是得多用int64_t
0
宏哥
宏哥

引用来自“Mallon”的答案

语法好说,主要得看函数库/类库

实际上,几乎 所有语言都是跨平台的. 如果不调用操作系统的那些特有的东西.

Java 之所以跨平台, 是因为不能调用任何平台特有的东西.

就像一个人没有小JJ, 就不会阳痿一样.

想要跨平台, 就做阉割手术.

返回顶部
顶部