skip to main content
research-article
Open Access

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

Published:12 June 2020Publication History
Skip Abstract Section

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.Google ScholarGoogle Scholar
  2. Federico Biancuzzi and Shane Warden. 2009. Objective-C. In Masterminds of Programming (1st ed.). O’Reilly Media, Sebastopol, CA, 241–275. OCLC: 434042370.Google ScholarGoogle Scholar
  3. Barry W. Boehm. 1973. Software and its impact: A quantitative assessment. Datamation 19, 5 (May), 48–59.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  5. Frederick P. Brooks. 1987. No silver bullet: Essence and accidents of software engineering. Computer 20, 4, 10–19. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  7. Brad J. Cox. 1983b. The object oriented pre-compiler: Programming Smalltalk 80 methods in C language. SIGPLAN Not. 18, 1 (Jan.), 15–22. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Brad J. Cox. 1984. Message/object programming: An evolutionary change in programming technology. IEEE Software 1, 1 (Jan.), 50–61. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Brad J. Cox. 1986. Object-Oriented Programming: An Evolutionary Approach (1st ed.). Addison-Wesley, Reading, MA.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarCross RefCross Ref
  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. Google ScholarGoogle ScholarCross RefCross Ref
  12. Brad J. Cox. 1990a. Planning the software industrial revolution. IEEE Software 7, 6 (Nov.), 25–33. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  15. Brad J. Cox and Bill Hunt. 1986. Objects, icons, and software-ICs. Byte 11, 8 (Aug.), 161–176.Google ScholarGoogle Scholar
  16. Brad J. Cox and Andrew J. Novobilski. 1991. Object-Oriented Programming: An Evolutionary Approach (2nd ed.). AddisonWesley, Reading, MA.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Edsger W. Dijkstra. 1968. Letters to the editor: go to statement considered harmful. Commun. ACM 11, 3 (March), 147–148. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Nathan L. Ensmenger. 2010. The “Computer Boys” Take Over: Computers, Programmers, and the Politics of Technical Expertise. MIT Press, Cambridge, MA.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  22. Adele Goldberg and David Robson. 1983. Smalltalk-80 : The Language and its Implementation. Addison-Wesley, Reading, MA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  24. Michael A. Hiltzik. 1999. Dealers of Lightning : Xerox PARC and the Dawn of the Computer Age (1st ed.). HarperBusiness, New York.Google ScholarGoogle Scholar
  25. Ted Kaehler and Dave Patterson. 1986. A small taste of Smalltalk. Byte 11, 8 (Aug.), 145–158.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Glenn Krasner. 1984. Smalltalk-80: Bits of History, Words of Advice. Addison-Wesley, Reading, MA. OCLC: 266966827.Google ScholarGoogle Scholar
  28. Lamar Ledbetter and Brad J. Cox. 1985. Software-ICs: A plan for building reusable software components. Byte 10, 6 (June), 307–316.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarCross RefCross Ref
  31. Tom Love. 1993. Object Lessons: Lessons Learned in Object-Oriented Development Projects. SIGS Books, New York, NY. OCLC: 612808297.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  33. Donald MacKenzie. 2001. Mechanizing Proof: Computing, Risk, and Trust. MIT Press, Cambridge, MA.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  36. Michael S. Mahoney. 2004. Finding a history for software engineering. Annals of the History of Computing, IEEE 26, 1, 8–19. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  38. Steve Naroff and Alan Watt. 1987. Design issues for Objective-C v.?.? DRAFT. 3 July 1987. Google ScholarGoogle ScholarCross RefCross Ref
  39. Kurt J. Schmucker. 1986a. MacApp: An application framework. Byte 11, 8 (Aug.), 189–193.Google ScholarGoogle Scholar
  40. Kurt J. Schmucker. 1986b. Object-oriented languages for the Macintosh. Byte 11, 8 (Aug.), 177–185.Google ScholarGoogle Scholar
  41. Rebecca Slayton. 2013. Arguments that Count: Physics, Computing, and Missile Defense, 1949-2012. The MIT Press, Cambridge, MA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Larry Tesler. 1981. The Smalltalk Environment. Byte 6, 8 (Aug.), 90–147.Google ScholarGoogle Scholar
  44. Larry Tesler. 1986. Programming experiences. Byte 11, 8 (Aug.), 195–206.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  50. Eva White and Rich Malloy. 1986. Object-oriented programming. Byte 11, 8 (Aug.), 137.Google ScholarGoogle Scholar
  51. Xerox Learning Research Group. 1981. The Smalltalk-80 system. Byte 6, 8 (Aug.), 36–48.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar

Index Terms

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

                    Recommendations

                    Comments

                    Login options

                    Check if you have access through your login credentials or your institution to get full access on this article.

                    Sign in

                    Full Access

                    • Article Metrics

                      • Downloads (Last 12 months)853
                      • Downloads (Last 6 weeks)120

                      Other Metrics

                    PDF Format

                    View or Download as a PDF file.

                    PDF

                    eReader

                    View online with eReader.

                    eReader