操作系统和语言的关系(转载)

“我一直弄不懂windows程序是什么?也不知道c++windows程序有什么关系,哪位高手知道,能不能告诉我一下,谢谢……”

反正天黑,我就胡扯一通,才发现完全答非所问。写到这里来。

--------------------------------------------------

Windows 是一个操作系统……

操作系统必须支持他人(软件开发人员)在它上面开发出新程序……

开发程序,自然要有开发语言的选择,c? c++? pascal? BASIC? C#? java?Python? 

这些语言在这个层面上,并不是平等的……

因为,为windows等操作系统最初只提供了一种语言的开发接口——

那就 C语言。

这当然也不能怀疑微软开发人员偷懒,而是因为……

因为历史的原因,C语言尾随汇编被选为操作系统开发的主要语言。

而在对外(提供给软件开发人员上)接口语言选择上,汇编不仅太复杂了,而且是硬件相关的……

所以(加上种种其它原因),历史让C语言成为了操作系统开发接口上的第一语言。

事情当然不会仅仅是这样……

因为如果仅仅操作系统的支持,那C语言也称霸不了多久……

关键是,既然操作系统不直接支持其它语言……

那其它语言就只好倒过来去支持操作系统——

所谓既然没办法让山走向穆罕默德,但穆罕默德可以走向山。

而c++,c,pascal,java,python等等语言,虽然在走的方式上有所不同,

但都要走向操作系统这座山,

既然操作系统这座山的近乎唯一的路是C语言——

所有开发语言就只好放下身段

都提供了对C的支持(编译的或者链接的)。

关于C就这样了:

 操作系统是天子

其它语言是诸侯

那句曹孟德说的话,我就不说了。

C的江山就是这样打下的。


八仙过海,各显神通……

现在来说说它们各用各的什么招数走入C的内心……


C++

既然你问的C++,那我就先说它,并且说得正经一点——

c++,噢,它是走得最近的,基本在语言,语法上都完全兼容C。

当初世上最早的C++编译器,不过是把C++语言直接翻译成C语言,

然后再调用C语言的编译器……

如果那时候有马甲这个词——

Cer 一定要嘲笑Cpper了,说它们是马甲,是山寨,是……

但随着名称为“C with class”到"C++"的变换……

这一切都是过去式了,C++终于有了真正的编译器,

可以直接将C++搞成汇编,不再需要通过C的中转。

当然了,C++也可以直接使用汇编 。

而语言的兼容,以及库的兼容依然不变。

虽然后面二者慢慢的也有一些各走各的路了,但——

C++永远是众多语言中,对C最直接的支持者。

 Pascal

Pascal曾经是C的竞争者……

曾经在在欧洲大陆,它的使用者甚至比C还多……

因为,它是学院里首选的语言。

它有自己的库……比如那些数学库,这其中原因,当然是因为:

它同样可以骄傲直接使用汇编语言,以及

它觉得其实自己在效率上根本不比C差。

WINDOWS提供的函数接口形式,最初就命名为PASCAL

不过……历史没有选择它,大概是因为……

人类总是懒的,谁让在用花括号的地方,pascal偏偏喜欢用begin和end呢?

当然,这是一句玩笑话。

谁当真谁是250——C采用的{},在N多国家的键盘上,根本找不到。

这一点还得倒过来说pascal有国际观……

言归正传,历史在发展,操作系统作用突然变大……

于是pascal终于还是要能调用C的函数……

用于Delphi的老人都知道,它要调用windows的某个DLL,那个方便的,VB简直要流汗——

MS自家的VB,在这点上竟然比不过别人家的delphi……

也没有什么神奇的,不过是borland的程序员兄弟们比较勤快,

早早的将一大堆的Windows C形式的接口,翻译成了Pascal的。

停,关于pascal,我说太多了。

还是要补充一句,操作系统已经在又一次变得不重要了……

 Python

我要跳过java,先说说可爱的python.

啊,它当然可以有 Java的实现,也可以有.NET的实现。

因为它的发明者说:实现了python的语言,及它的必须运行时库,那就是一门python。

(原话是怎么说的?要不怕被某奇怪的事实给伤到我的心,可以去官方查一查)

但CPython必然是Python中的Python。

它和C语言可以双向互调——

它可以非常方便地调C写的模块

C也可以嵌一个它的解释器,有肚子里运行Python写的脚本。

对C++也有很好的支持,包括数据结构……推荐一下boost.python。

Pythoner已经不认为Python只是一个解释器,他们说:

Python其实已经是一个虚拟机。

其实这根本是侮辱Python.

Python真正强大的地方在于:有C/C++的XXX

基本上,就会有一个pyXXX在神奇地那儿候着——

什么叫老牌脚本语言!

不管啥场子内,都有人认识他,这才尊称“老”。

 Java

好吧说到虚拟机,Java当然应该要出场。

虽然VM这个东西,60年代Pascal就在玩了……但

谁叫它出生得太早?没遇上Internet?

 (网络当然只是表象,关键是那用K计的内存喝两杯啤酒就得溢)

操作系统是汇编和C写的,猜一下虚拟机会是谁写的?

Java.exe 是操作系统万千进程中的的一个进程……

而所有java写成的class

都活在是java.exe这个进程从OS里分来的内存里……

其中某个带有静态的,名叫main的函数的类,是某个java程序的最外面的那个门。

进了这个门,那叫一个大同世界……

再也没有人世间闹人的差距……就差连贫富分化也解决了。

偶尔Javaer也觉得不爽,于是在那个门口,伸出了一只脚。

脚上一只鞋,牌子 JNI。(结论:Java仍然没有放弃对C的支持)

若要问Java和Windows的关系?你可以一并问:

Java和Linux/UNIX的关系? Java和Android的关系?

我来回答你:没什么关系,因为它是平台无关的,操作系统就是平台。

原因?

因为Java很牛,这么多年来,只有它真正成为语言界的穆罕默德……

它逼着操作系统走向了它——

方法不过几句话:

先说: “当今操作系统,跨平台是主流……”

然后说: “你是一个操作系统?”

关键一问:“可是你居然不支持java语言?”

结论:“那你还是一个正常的操作系统吗?”。

大多数男人在一句“那你还是一个正常的男人吗?"

就生气地脱下裤子证明一下……

但也有不吃这一套的,像微软,反正已经是微软,

脱了也还是微软。

没办法,曾经的“日”公司,只好自己替它写一个。

用什么写? C和C++啊。

还有其它的每个操作系统的厂商,也一样。

操着C写一个JVM实现了Java抢走了c++的曾经的大块地盘。



C# 和 .NET


那一天一定是特别的一天……

Windows的开发人员学着上帝说:

操作系统要有支持多种语言的API!

于是有了COM形工的编程接口。

它果真支持C——当然,没有它也支持C。

它还支持C++,还是面向对象的,当然用起来那是怪怪的。

还愿意支持其它语言,不过数来数去,

也就Borland亦敌亦友跟着他玩啊啊……

生气,直接从borland挖走它们的灵魂人物:Anders Hejlsberg

于是一切有了很大的改观:

先是终于borland也没法陪他玩了——因为

Borland没有了Ander Hejlberg,拖再久也终要在语言这条路上玩完。

而跑到微软的Ander Hejlberg也没闲着

先是搞了java比sun还要快,雷得SUN公司里焦外嫩……

硬是不允许这世上有MS自己写的JVM。

后来sun也……落幕。


突然的悲哀啊,这段就不写了……

还好有gooooooogle,还有它们的go.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,302评论 2 35
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,793评论 25 707
  • MySQL Enterprise Edition
    simtech2win阅读 124评论 0 0
  • NO.7 女孩发短信给男生:“我对你已经彻底死心” 男生回复:“我中了500万!” 女生秒回:“塌地了”
    山的那一边_ChenLei阅读 84评论 0 0
  • 有些劳务同行有时候一定很奇怪,明明自己的劳务公司资历证书一应俱全,公司上下员工也十分努力,也有很多企业和公司合作,...
    劳务圈阅读 956评论 0 0