Camille and Marcus, thank you for your response. I thought something was
missing, so the testing of Slots will be shelved for now; however, while
it is in the planning stage, I would like to add some thoughts on
targets and deliverable products (applications).
I agree that most devices like the iPad and iPhone would not be suitable
for development, they should be targets for application development and
I would expand that list to include all devices, even micro-controllers.
Look at the development process for the iPad and iPhone, the programming
is done on a Mac using Xcode and testing is done first on the simulator
running on the Mac and latter on the actual device. I find the Xcode
environment inferior to Smalltalk's and by no stretch of the imagination
is Objective-C a good substitute for Smalltalk. I think that development
of application programs could be done far better with Smalltalk,
provided that some tools were added to Smalltalk. Why not have the view,
if it can be programmed in C then it can be programmed in Smalltalk.
I think that the application process should be viewed as a series of
steps culminating in the production of a product for sale or
distribution: develop and test the program logic, test using constraints
imposed by the target device, performance testing, test on the target
device, and package for sale or distribution. A good examples of the
second step where the constraints of the target is imposed are the word
size and floating-point precision differences found in the target. If
the development of the application is on a 64-bit computer then integer
and floating-point calculated must be simulated for targets with smaller
word size and for 32-bit floating-point or no floating-point processor.
Implicit in those steps is the notion a gradual typing, the first uses
the Smalltalk model to generically test the logic of the program, while
the final step would require a fully compiled executable for some of the
targets. I would argue that one reason that Smalltalk was not a
commercial success was that you could not provide a fully compiled
executable to the customer. The tools that the Smalltalk environment
provides makes it a very productive application development environment,
but of what use are they to the end user of the application, say a clerk
or a business executive: why should any of the development tools be in
the final product?
It is clear that Slots will be used in the enforcement of typing at the
instance variable level, but what about temporary variables? Can a
compiler (machine not bytecode) be developed if temporary variables are
not typed? Then there is the question of how to handle the elements of
heterogeneous collections.
I have more thoughts, but the above are related to Slots. Any comments?
bw