Slots

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Slots

Bob Williams
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
Reply | Threaded
Open this post in threaded view
|

Re: Slots

Marcus Denker-4

On 09 Jun 2014, at 13:55, Bob Williams <[hidden email]> wrote:

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?


I don’t think that the main power of Slots if typing… its more slots with behavioural changes or meta data.
Slots can be used for providing typed slots, but these would just do a runtime check, slowing down everything.
It’s much more interesting for things like ProperySlots, BooleanSlots (which would be very memory efficient, typing
would be just a side effect).

For typing, the actually annotations (of ivars, temps, and casting of expressions, return types…) is not that problem…designing
a good type system is the real thing, e.g.:


Marcus
Reply | Threaded
Open this post in threaded view
|

Re: Slots

Marcus Denker-4

On 09 Jun 2014, at 14:20, Marcus Denker <[hidden email]> wrote:


On 09 Jun 2014, at 13:55, Bob Williams <[hidden email]> wrote:

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?


I don’t think that the main power of Slots if typing… its more slots with behavioural changes or meta data.
Slots can be used for providing typed slots, but these would just do a runtime check, slowing down everything.
It’s much more interesting for things like ProperySlots, BooleanSlots (which would be very memory efficient, typing
would be just a side effect).

For typing, the actually annotations (of ivars, temps, and casting of expressions, return types…) is not that problem…designing
a good type system is the real thing, e.g.:



In general, I do not think that we should make Pharo more static. To the extreme opposite, we should explore what a dynamic
(reflective, late bound) system can do that a static one can not do… and this means actually using the dynamic features
(in a controlled way) even in deployment. 

Of course this might mean that we can not be everything for everyone. But do we really want that? E.g. Is it the goal to be
a perfect development system for today’s resource constrained mircro controllers? Or should we not better explore what the
new embedded world that already starts to show will get from a more dynamic point of view? 

The real challenge of embedded is the embedded nature, we now see a class of embedded systems that have *real* resources
and that are actually always network connected.
Here we can (we must!) take a complete different point of view to the standard “as static as possible, we have no resources” view that
people focus on now.

Marcus
Reply | Threaded
Open this post in threaded view
|

Re: Slots

jfabry

On Jun 9, 2014, at 8:28 AM, Marcus Denker <[hidden email]> wrote:

> In general, I do not think that we should make Pharo more static. To the extreme opposite, we should explore what a dynamic
> (reflective, late bound) system can do that a static one can not do… and this means actually using the dynamic features
> (in a controlled way) even in deployment.

+1 on that. The dynamism of Smalltalk always and forever is a powerful too that we should not have to do without.

> Of course this might mean that we can not be everything for everyone. But do we really want that? E.g. Is it the goal to be
> a perfect development system for today’s resource constrained mircro controllers? Or should we not better explore what the
> new embedded world that already starts to show will get from a more dynamic point of view?

In the super constrained micro controllers development is typically some C-like thingy (hacked together), we should not try to change those customs and that culture, that’s not realistic. The new embedded world is indeed the place to go. For example, the raspberry pi running Pharo, that kind of hardware is becoming really wide-spread now. Other example is the Parrot AR Drone quadcopter, that’s a FLYING embedded system that has a 32 bit ARM Cortex A8 processor @ 800MHz, 1GB DDR2 RAM, WIFI and runs Linux 2.6.x.  … while it is flying … Now that’s cool! :-)

> The real challenge of embedded is the embedded nature, we now see a class of embedded systems that have *real* resources
> and that are actually always network connected.
> Here we can (we must!) take a complete different point of view to the standard “as static as possible, we have no resources” view that
> people focus on now.

Even the parrot drone is always network connected … its remote control is over wifi :-)

---> Save our in-boxes! http://emailcharter.org <---

Johan Fabry   -   http://pleiad.cl/~jfabry
PLEIAD lab  -  Computer Science Department (DCC)  -  University of Chile