Xref: utzoo comp.object:1530 comp.lang.c++:8733 Path: utzoo!attcan!uunet!decwrl!ucbvax!pasteur!argon!lozinski From: lozinski@argon.uucp (Chris Lozinski) Newsgroups: comp.object,comp.lang.c++ Subject: Choice of language for manufacturing Applications Message-ID: <26686@pasteur.Berkeley.EDU> Date: 2 Aug 90 16:01:03 GMT Sender: news@pasteur.Berkeley.EDU Reply-To: lozinski@argon.UUCP (Chris Lozinski) Lines: 153 INTRODUCTION After trying Basic, Fortran, Scheme, C, APL, and Objective-C, I became firmly convinced that Objective-C was the best language choice for the manufacturing applications that I work with. Then when C++ became a common language, I carefully researched the language, read the manuals, talked to people and generally tried to make a wise long term decision. This article summarizes the reasons behind my growing conviction that Objective-C is a preferable language to C++ for manufacturing application. EVOLUTIONARY DIFFERENCES Objective-C has evolved from Smalltalk where the emphasis is on programmer productivity. C++ has evolved from C where the emphasis is on speed and memory requirements. With the falling prices of workstations, and rising costs of software development, the tradeoffs need to be carefully considered. I.M.H.O. Objective-C is the better choice in manufacturing applications. ORGANIZATIONAL DIFFERENCES C++ is the computer scientists language where the focus is on technical aspects of the language. Objective-C is the businessman's language, where the emphasis is on organizing large groups of people into cooperating communities assembling components into final applications. Technically this is caused by the default structures of the objective-C language where the target class of a message does not need to be known at compile time. In contrast the default in C++ is that the target class does need to be known at compile time. BUSINESS DIFFERENCES Stepstone is tightly focussed on creating tools for software developers. AT&T by contrast is not in the market of selling software tools, and therefore cannot be expected to react as quickly to market requirements. TECHNICAL DIFFERENCES 1) The key feature that distinguishes Objective-C from C++ is the maintenance of symbol tables. Here I must agree with jsweet of Nasa. Objective-C allows the user to issue the following command [anObject perform: "aMessage"]; or alternatively aSelector = convertToSelector("aMessage"); [nObject perform aSelector]; This command means send the message "aMessage" to the object called anObject. This ability is critical for simplifying interprocess communication, either between objects on different operating systems, or between a person and the computer. I highly recommend that people take a close look at the design of the NextStep user interface which profits from this approach. As for distributed processing, time alone will demonstrate the power of this approach. 2) The key feature that distinguishes C++ from Objective-C is operator overloading. This allows the user to deal with structures such as vectors scalars and matrices in a very natural fashion. float aScalar; vector aVector; matrix aMatrix, anotherMatrix; aVector = aScalar * aVector; anotherMatrix = aVector * aMatrix; In manufacturing applications the more powerful Objective-C messaging is more valuable to me than the operator overloading of C++. EASE OF USE C++ supports and encourages the use of pointers to data structures. The type of the data structure is known at run time. Pointers, and dereferencing dominate the minds of the users and invariably confuse the beginners. In contrast Objective-C supports and encourages the use of sending messages to objects, and historically discourages the manual navigation of pointers. My experience has been that the concept of sending messages to objects proves much easier to understand (and debug) than the whole issue of navigating pointers and dereferencing locations. DEVELOPMENT TIME. Both of the people I have known who have extensive development experience in both C++ and Objective-C claimed that software could be developed in Objective-C faster. As a professional software developer, my primary cost is software development time, so this is a critical advantages. PLENTIFUL TOOLS There is a growing list of Objective-C tools. Here is my current list. StepStone Compiler Stepstone Foundation Library Stepstone User Interface Library StepStone Browser GNU debugger GNU compiler CNS Microsoft Windows Bindings. CNS Browser for DOS CNS Application code streamliner CNS Objective-C make utility NeXTStep libraries for NeXT and IBM machines. GEMSTONE INTERFACE (rumored) CONCLUSION The choice of language is totally driven by the application's needs. My area of expertise is distributed customized manufacturing applications, where the emphasis is on speed of development, a powerful user interface paradigm and flexibility of the tools. For these needs Objective-C is wonderfully suited. I highly recommend the language to everyone in this field. NON-STANDARD DISCLAIMER My enthusiasm for the language is so strong that I have chosen to base my product on it. This makes me a biased observer.