skip to main content
research-article
Open access

The origins of Objective-C at PPI/Stepstone and its evolution at NeXT

Published: 12 June 2020 Publication History

Abstract

The roots of Objective-C began at ITT in the early 1980s in a research group led by Tom Love investigating improving programmer productivity by an order of magnitude, a concern motivated by the perceived "software crisis" articulated in the late 1960s. In 1981, Brad Cox, a member of this group, began to investigate Smalltalk and object-oriented programming for this purpose, but needed a language compatible with the Unix and C environments used by ITT. That year, Cox quickly wrote up the Object-Oriented Pre-Compiler (OOPC) that would translate a Smalltalk-like syntax into C.
Love felt there was a market for object-oriented solutions that could coexist with legacy languages and platforms, and after a brief stint at Schlumberger-Doll, co-founded with Cox Productivity Products International (PPI), later renamed as Stepstone, to pursue this. At PPI, Cox developed OOPC into Objective-C. Cox saw Objective-C as a crucial link in his larger vision of creating a market for "pre-fabricated" software components ("software-ICs"), which could be bought off the shelf and which, Cox believed, would unleash a "software industrial revolution."
Steve Naroff joined Stepstone in 1986 as Steve Jobs' NeXT Computer became an important customer for Objective-C, as it was being used in its NeXTSTEP operating system. Naroff became the primary Stepstone developer addressing NeXT's issues with Objective-C, solving a key fragility problem preventing NeXT from deploying forwards-compatible object libraries. Impressed with NeXT, Naroff left Stepstone for NeXT in 1988, and once there, added Objective-C support to Richard Stallman's GNU GCC compiler, which NeXT was using as its C compiler, removing the need to use Stepstone's ObjC to C translator. Over the next several years, Naroff and others would add significant new features to Objective-C, such as "categories," "protocols," and the ability to mix in C++ code. When Stepstone folded in 1994, all rights to Objective-C were acquired by NeXT. This eventually transferred to Apple when NeXT was acquired by Apple in 1997. Objective-C became the basis for Apple's Mac OS X and then iOS platforms, and Naroff and others at Apple added additional features to the language in the late 2000s as the iPhone App Store greatly expanded Objective-C's user base.

References

[1]
Janet Abbate. 2012. Software crisis or identity crisis? Gender, labor, and programming methods. In Recoding Gender: Women’s Changing Participation in Computing. MIT Press, Cambridge, MA, 73–111.
[2]
Federico Biancuzzi and Shane Warden. 2009. Objective-C. In Masterminds of Programming (1st ed.). O’Reilly Media, Sebastopol, CA, 241–275. OCLC: 434042370.
[3]
Barry W. Boehm. 1973. Software and its impact: A quantitative assessment. Datamation 19, 5 (May), 48–59.
[4]
Frederick P. Brooks. 1975. The Mythical Man-Month: Essays on Software Engineering (1st ed.). Addison-Wesley, Reading, MA. Copy used: Jim Warren Book Collection, Lot X2595.2004, Box B14, Catalog 102676578, Computer History Museum, Mountain View, CA.
[5]
Frederick P. Brooks. 1987. No silver bullet: Essence and accidents of software engineering. Computer 20, 4, 10–19.
[6]
Brad J. Cox. 1983a. The message/object programming model: A small change, at a deep conceptual level. In Proceedings of Softfair: A conference on software development tools, techniques, and alternatives. IEEE Computer Society Press, Arlington, VA (25–28 July), 51–60.
[7]
Brad J. Cox. 1983b. The object oriented pre-compiler: Programming Smalltalk 80 methods in C language. SIGPLAN Not. 18, 1 (Jan.), 15–22.
[8]
Brad J. Cox. 1984. Message/object programming: An evolutionary change in programming technology. IEEE Software 1, 1 (Jan.), 50–61.
[9]
Brad J. Cox. 1986. Object-Oriented Programming: An Evolutionary Approach (1st ed.). Addison-Wesley, Reading, MA.
[10]
Brad J. Cox. 1988. The Objective-C environment: past, present, and future. In Digest of Papers. COMPCON Spring 88 Thirty-Third IEEE Computer Society International Conference. IEEE, San Francisco, CA, USA (Feb.), 166–169.
[11]
Brad J. Cox. 1989. Planning for software manufacturing. In Proceedings of the Thirteenth Annual International Computer Software Applications Conference. IEEE, Orlando, FL, USA (Sept.), 331–332.
[12]
Brad J. Cox. 1990a. Planning the software industrial revolution. IEEE Software 7, 6 (Nov.), 25–33.
[13]
Brad J. Cox. 1990b. There is a silver bullet: A software industrial revolution based on reusable and interchangeable parts will alter the software universe. Byte 15, 10 (Oct.), 209.
[14]
Brad J. Cox. 2016. Oral history. 2 Aug. 2016. https://www.computerhistory.org/collections/catalog/102717175 (retrieved 3 March 2020). CHM Oral History Collection, Lot X7863.2017, Catalog 102717175, Computer History Museum, Mountain View, CA.
[15]
Brad J. Cox and Bill Hunt. 1986. Objects, icons, and software-ICs. Byte 11, 8 (Aug.), 161–176.
[16]
Brad J. Cox and Andrew J. Novobilski. 1991. Object-Oriented Programming: An Evolutionary Approach (2nd ed.). AddisonWesley, Reading, MA.
[17]
Brad J. Cox and Kurt J. Schmucker. 1987. Producer: A tool for translating Smalltalk-80 to Objective-C. SIGPLAN Not. 22, 12, 423–429.
[18]
Edsger W. Dijkstra. 1968. Letters to the editor: go to statement considered harmful. Commun. ACM 11, 3 (March), 147–148.
[19]
Nathan L. Ensmenger. 2010. The “Computer Boys” Take Over: Computers, Programmers, and the Politics of Technical Expertise. MIT Press, Cambridge, MA.
[20]
Nathan L. Ensmenger and William Aspray. 2002. Software as labor process. In History of Computing: Software Issues, Ulf Hashagen, Reinhard Keil-Slawik, and Arthur L Norberg (Eds.). Springer, Berlin, 139–165.
[21]
Blaine Garst. 2016. Oral history part 1. 25 July 2016. https://www.computerhistory.org/collections/catalog/102717171 (retrieved 3 March 2020). CHM Oral History Collection, Lot X7853.2017, Catalog 102717171, Computer History Museum, Mountain View, CA.
[22]
Adele Goldberg and David Robson. 1983. Smalltalk-80 : The Language and its Implementation. Addison-Wesley, Reading, MA.
[23]
James Gosling. 2019. Oral history part 2 of 2. 22 April 2019. https://www.computerhistory.org/collections/catalog/102781105 (retrieved 3 March 2020). CHM Oral History Collection, Lot X8971.2019, Catalog 102781105, Computer History Museum, Mountain View, CA.
[24]
Michael A. Hiltzik. 1999. Dealers of Lightning : Xerox PARC and the Dawn of the Computer Age (1st ed.). HarperBusiness, New York.
[25]
Ted Kaehler and Dave Patterson. 1986. A small taste of Smalltalk. Byte 11, 8 (Aug.), 145–158.
[26]
Alan C. Kay. 1993. The early history of Smalltalk. In The second ACM SIGPLAN conference on History of programming languages ( HOPL-II ). Association for Computing Machinery, Cambridge, MA (March), 69–95.
[27]
Glenn Krasner. 1984. Smalltalk-80: Bits of History, Words of Advice. Addison-Wesley, Reading, MA. OCLC: 266966827.
[28]
Lamar Ledbetter and Brad J. Cox. 1985. Software-ICs: A plan for building reusable software components. Byte 10, 6 (June), 307–316.
[29]
Tom Love. 1983. Experiences with Smalltalk-80 for application development. In Proceedings of Softfair: A conference on software development tools, techniques, and alternatives. IEEE Computer Society Press, Arlington, VA (25–28 July), 61–65.
[30]
Tom Love. 1988. The economics of reuse (of software). In Digest of Papers. COMPCON Spring 88 Thirty-Third IEEE Computer Society International Conference. IEEE, San Francisco, CA, USA (Feb.), 238–241.
[31]
Tom Love. 1993. Object Lessons: Lessons Learned in Object-Oriented Development Projects. SIGS Books, New York, NY. OCLC: 612808297.
[32]
Tom Love. 2019. Skype interview. 17 April 2019. https://www.computerhistory.org/collections/catalog/102781110 (retrieved 12 March 2020). CHM Oral History Collection, Lot X9026.2019, Catalog 102781110, Computer History Museum, Mountain View, CA.
[33]
Donald MacKenzie. 2001. Mechanizing Proof: Computing, Risk, and Trust. MIT Press, Cambridge, MA.
[34]
Michael S. Mahoney. 1990. The roots of software engineering. CWI Quarterly 3, 4, 325–334. http://www.princeton.edu/ ~hos/Mahoney/articles/sweroots/sweroots.htm (retrieved 3 March 2020). PDF version available at: http://thecorememory. com/TROSE.pdf (retrieved 3 March 2020). Extracts also available in Michael S. Mahoney. 2011. Histories of Computing. Harvard University Press, Cambridge, MA; London, England, 86–89.
[35]
Michael S. Mahoney. 2002. Software: The self-programming machine. In From 0 to 1: An Authoritative History of Modern Computing, Atsushi Akera and Frederik Nebeker (Eds.). Oxford University Press, New York, 91–100. Also available in Michael S. Mahoney. 2011. Histories of Computing. Harvard University Press, Cambridge, MA; London, England, 77–85.
[36]
Michael S. Mahoney. 2004. Finding a history for software engineering. Annals of the History of Computing, IEEE 26, 1, 8–19.
[37]
Steve Naroff. 2018. Oral history, part 1 of 2. 8 Oct. 2018. https://www.computerhistory.org/collections/catalog/102717385 (retrieved 3 March 2020). CHM Oral History Collection, Lot X8800.2019, Catalog 102717385, Computer History Museum, Mountain View, CA.
[38]
Steve Naroff and Alan Watt. 1987. Design issues for Objective-C v.?.? DRAFT. 3 July 1987.
[39]
Kurt J. Schmucker. 1986a. MacApp: An application framework. Byte 11, 8 (Aug.), 189–193.
[40]
Kurt J. Schmucker. 1986b. Object-oriented languages for the Macintosh. Byte 11, 8 (Aug.), 177–185.
[41]
Rebecca Slayton. 2013. Arguments that Count: Physics, Computing, and Missile Defense, 1949-2012. The MIT Press, Cambridge, MA.
[42]
Bjarne Stroustrup. 1993. A history of C++: 1979–1991. In The second ACM SIGPLAN conference on History of programming languages (HOPL-II ). Association for Computing Machinery, Cambridge, MA, USA (March), 271–297.
[43]
Larry Tesler. 1981. The Smalltalk Environment. Byte 6, 8 (Aug.), 90–147.
[44]
Larry Tesler. 1986. Programming experiences. Byte 11, 8 (Aug.), 195–206.
[45]
Larry Tesler. 2013. Oral history. 13 Feb. 2013. https://www.computerhistory.org/collections/catalog/102746675 (retrieved 26 Feb. 2020). CHM Oral History Collection, Lot X6762.2013, Catalog 102746675, Computer History Museum, Mountain View, CA.
[46]
Larry Tesler. 2016. Oral history, part 2 of 3. 16 Dec. 2016. https://www.computerhistory.org/collections/catalog/102717269 (retrieved 3 March 2020). CHM Oral History Collection, Lot X8020.2017, Catalog 102717269, Computer History Museum, Mountain View, CA.
[47]
James E. Tomayko. 2002. Software as engineering. In History of Computing: Software Issues, Ulf Hashagen, Reinhard Keil-Slawik, and Arthur L Norberg (Eds.). Springer, Berlin, 139–165.
[48]
John W. Verity. 1987. The OOPS revolution. Datamation 33 (May), 72–78. Copy used: Smalltalk press and clippings, 1983–2002, Adele Goldberg papers, Lot X5774.2010, Box 2, Folder 14, Catalog 102739382, Computer History Museum, Mountain View, CA.
[49]
John W. Verity and Evan I. Schwartz. 1991. Software made simple. BusinessWeek (30 Sept.), 92–100. Copy used: Smalltalk press and clippings, 1983–2002, Adele Goldberg papers, Lot X5774.2010, Box 2, Folder 14, Catalog 102739382, Computer History Museum, Mountain View, CA.
[50]
Eva White and Rich Malloy. 1986. Object-oriented programming. Byte 11, 8 (Aug.), 137.
[51]
Xerox Learning Research Group. 1981. The Smalltalk-80 system. Byte 6, 8 (Aug.), 36–48.
[52]
Apple Inc. 2020a. Extensions. https://docs.swift.org/swift- book/LanguageGuide/Extensions.html (retrieved 26 Feb. 2020) This website describes the Extensions feature in Swift, which allows the addition of new functionality to types for which the programmer does not have access to the source code, similar to categories in Objective-C. We refer to it to illustrate how important categories in Objective-C became to Apple’s language idioms and have continued in Swift, albeit under a new name.
[53]
Mark Dalrymple. 2012. Objective-C Literals, Part 1. March 2012. https://www.bignerdranch.com/blog/objective- c- literalspart- 1/ (retrieved 12 March 2020) This blog post describes three new features available in Apple’s open source Clang compiler front end: more concise NSNumber, NSArray, and NSDictionary creation syntax via literals, and more concise NSArray and NSDictionary access syntax via subscripting.
[54]
Microsoft. 2015. Extension Methods — C# Programming Guide (July). https://docs.microsoft.com/en- us/dotnet/csharp/ programming- guide/classes- and- structs/extension- methods (retrieved 2 Aug. 2019) This website describes Extension methods in C#, which enable the addition of methods to a class without subclassing, recompiling, or otherwise modifying the original type. We refer to this website to document that C# has a feature similar to categories in Objective-C.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 4, Issue HOPL
June 2020
1524 pages
EISSN:2475-1421
DOI:10.1145/3406494
Issue’s Table of Contents
This work is licensed under a Creative Commons Attribution International 4.0 License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 June 2020
Online AM: 07 May 2020
Published in PACMPL Volume 4, Issue HOPL

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Apple
  2. C++
  3. ITT
  4. NeXT
  5. OOPC
  6. Objective-C
  7. PPI
  8. Smalltalk
  9. Stepstone
  10. categories
  11. dynamic binding
  12. message passing
  13. protocols
  14. software crisis
  15. software-ICs

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 12,459
    Total Downloads
  • Downloads (Last 12 months)924
  • Downloads (Last 6 weeks)95
Reflects downloads up to 04 Oct 2024

Other Metrics

Citations

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media