在目标C之前,Apple开发的“标准”语言是什么?


27

我认为从苹果硬件开发之初就没有使用过ObjectiveC。应用程序开发人员在早期的Apple计算机(例如Apple II或Mac Classic)上使用了哪些语言?

Answers:


35

1985年,拉里·泰斯勒(Larry Tesler)为苹果公司开发了一种Pascal风格的对象,即对象Pascal,它成为System 6的标准语言。它基于Clascal,这是1983年为Lisa设计的 Pascal变体,也是由Apple开发的。

当时,Apple Pascal 的主要应用程序框架MacApp中使用了对象Pascal 。1991年发布的MacApp 3.0用C ++重写,随后苹果从摩托罗拉的68K芯片转移到PowerPC时,放弃了对Object Pascal的支持,转而支持C ++。

Borland的Object Pascal(如今以Embarcadero Delphi的名称存在)始于1986年,最初是Turbo Pascal的一组扩展,旨在与Apple的Object Pascal相似。Apple和Borland都曾向Pascal的创始人Niklaus Wirth咨询了各自的变体。

相反,Objective C是NeXTSTEP的主要语言,直到1996年他们购买NeXT后才在Apple推出。


4
很好的答案,但是由于它是公认的,所以您应该为Pascal和C真正添加提及。从一开始,Mac Toolbox和OS就使用Pascal调用约定,并且在Pascal中进行了大量记录。有许多Pascal编译器可用。最受欢迎的大概是Lightspeed Pascal。C从一开始就也很流行,并且在Think购买了Lightspeed C和Lightspeed Pascal时,C可能是独立开发人员的“标准”选择。另外,值得一提的是Metrowerks C ++和PowerPlant。
Caleb

1
这个答案似乎更倾向于使用什么框架进行开发,而不是使用哪种语言。OP的问题是关于Objective-C(语言),而不是Cocoa(框架),但是答案有一个关于MacApp(框架)的段落,除了将MacApp移植到C / C ++之外几乎没有提及C / C ++。一个很大的应用程序是针对++ Mac OS的工具箱帕斯卡尔,C,和/或C直接写入。否则,答案很好,但是需要更广泛的C / C ++覆盖。
morgant 2012年

12

Apple] [通常使用BASIC或6502机器代码进行编程。

Lisa通常在Pascal中编程。

早期的Macintosh应用程序是用Pascal编写的,首先是在Lisa上,然后是在Mac上。

Think Pascal是有史以来最流行的开发环境,然后是ThinkC。ThinkC具有轻量级对象,有时称为C ++,后来又称为C ++。它还有自己的类库,适当地称为Think Class Library。

Apple的MPW也很受欢迎,因为它允许您混合语言(通常为Pascal,C,C ++和汇编器)和类似于UNIX环境的脚本构建,尽管语法非常不同。

MacApp是用Object Pascal编写的,正如有人所说,后来转移到了C ++。随着使用PowerPC系统,许多程序员将Metrowerks CodeWarrior用作开发环境及其C ++类库PowerPlant。

尽管Mac OS X应用程序也可以通过Apple的“ Carbon” API用C / C ++编写,但NeXT和Mac OS X都使用了Objective-C。如今,大多数Mac和iOS应用程序都是用Cocoa / Obj-C编写的,尽管许多应用程序下面都有C或C ++库。


1
Apple ///也用Pascal编程(ISTR也有BASIC的变体)。我认为我们使用了UCSD pSystem,但是也有一个Apple Pascal编译器。
TMN 2012年

Apple ///是我从未编程过的唯一Apple计算机。我确实还记得苹果公司的UCSD pSystem [],但是我认为没有很好的方法来分发用它编写的应用程序。
EricS

8

Mac OS Classic的标准语言是Pascal。操作系统的API文档全部是为Pascal编写的,与未通过手工优化的ASM编写的一样多的操作系统都是用Pascal编写的。

过渡到PowerPC架构后,他们用C ++重写了OS,并伴随着系统稳定性的显着下降,这对于熟悉Pascal和C ++的人来说并不奇怪。但是,API文档仍然主要是为Pascal写的,直到史蒂夫·乔布斯回来并开始试图迫使Objective-C陷入困境。


4
“伴随着系统稳定性的显着下降,这对于熟悉Pascal和C ++的任何人都不会感到惊讶”:使用这两种语言后,我很容易相信这一点。我有时还是想知道为什么Pascal(或其任何面向对象的扩展)目前不如C ++流行:毕竟,开发和错误修复时间要花钱。也许是因为Pascal无法建立一个类似于C ++的强大而紧凑的社区。
乔治

3
Pascal失败的主要原因是没有标准(标准来得太晚了)并且公共子集过于严格(您必须依靠扩展来进行单独的编译,您必须依靠扩展来编写能够接受数组的子例程)长度不同,您必须依靠扩展来...您将其命名)
AProgrammer,2012年


4
@KeithThompson,不幸的是,许多人引用该文章作为反对任何Pascal扩展名的论据。这就像援引一位叫假想文章“为什么C不是我喜欢的编程语言”,这将假设谈论缺乏适当的类和继承的,并把它作为对无论是C ++或Objective C.参数
acelent

2
@Paulo:哎呀,我认为C ++仍然没有适当的类和继承。如果对象是值类型,而不是引用类型,则从一开始就破坏了LSP(LSP是继承和OOP本身的核心原理)的作用。这就是为什么所有其他主要面向对象语言(包括Simula的,它起源的概念,和Smalltalk,它起源术语“面向对象编程)并没有这样做的。
梅森惠勒

2

...并且在Mac(Apple II)之前,大多数编程都使用BASIC。(适用于Apple II至IIg的所有变体)

我还记得使用Metroworks CodeWarrior在System 7上进行C ++开发-(当然)在PowerPC之后。


4
并不是的。早期的苹果内置了BASIC,但即使是按今天的标准,由于其性能较差且对声音和图形的支持最少,因此仍被视为玩具语言。当然,也有例外,但是Apple II系统上最严肃的编程是在Pascal或ASM上完成的。
梅森惠勒

2
啊-谢谢 我在Apple II上的编程经验全都是BASIC,因为这是我第一次接触一般编程。(因此,我们坚持使用BASIC和该指令集。)。我也记得做过“ Logo”,但是我不知道是否有人做过认真的工作。
乍得·汤普森

我记得UCSD Pascal是可用于Apple []的唯一“真实”语言,但是很少有应用程序使用它。如果BASIC对您来说太慢,则通常直接进行组装。

尽管有其局限性,但我毫不怀疑那些“大多数编程”是在BASIC中完成的。
dan04

@ dan04:据我所知,汇编程序通常用于编写Apple] [。切换到监视模式是黑客学习的第一件事。
乔治
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.