I was disappointed that something better than Smalltalk wasn't on the Mac and iPhone (Smalltalk was truly wonderful in the context of the 70s, but we considered it just a step in a good direction).
Not understanding Hypercard was one of Apple's largest mistakes in the world of end-users. It was a real breakthrough in something that end-users could really handle and be usefully programmable by them. Besides not understanding its significance on the Mac, we (old Parc hands) pleaded until we were blue in the face to make HC the basis of a really good web browser (it was a great model of a symmetric author-consumer media tool). Missing the latter was a tragedy.
In the light of the first comment, we could then contemplate an end-user system that combined what was great about Hypercard, Smalltalk, and some other experience from the 80s (e.g. the use-cases from Ashton-Tate "Framework", etc.).
Simula can't be praised too highly, and it was a huge influence. But if you take the care to check, you will find out that what I termed "Object Oriented" was quite different from Simula in (what I thought were) important ways. And if you are looking for the earliest inventions of ideas like these, there are several that predate Simula (take a look at that HOPL II chapter mentioned above)
See my comments above. And if you take a look to see what the Alto could really do graphically, and even more so the Dorado, you would not worry about speed. The decisions were for other reasons.
Brian Silverman, who has done some miraculous "bringing back software to life" (and some HW as well), has always wanted to do this.
The problem here is partly that no one is quite sure "which" TX-2 has to be emulated, and, worse, where to find the specs. The machine was a research computer and constantly tinkered with, including changing instructions and formats. Also, Sketchpad was written in a macro-assembler (Coral) which was idiosyncratic to say the least.
But I would advise contacting Brian to chat about this...
The Alto only had 1024 words (4k bytes) of microcode, so it is included in the estimate. The NoteTaker used several 8086s (the first ones) and was entirely in Smalltalk except for 6k bytes of 8086 code.
i.e. "math wins"! ... when coupled into the design of the entire system.
And ... we would have loved to have had more microcode!
What he means is that names are a local convention, and scaling soon obliterates the conventions. Then you need to go to descriptions that use a much smaller set of agreed on things (and you can use the "ambassador" idea from the 70s as well).
In 2004 I wrote a tribute to the research community I grew up in "The Power of the Context" (http://www.vpri.org/pdf/m2004001_power.pdf) and this will possibly help with some of your questions. I was just one of many in this community, and as I said at a recent Stanford lecture "The goodness of the results depends primarily on the goodness of the funders". Every era has enough of the kind of people who like to "ask what would real progress be?" and then try to make it happen. The large differences in "real progress" have fluctuated as the good funding has fluctuated (right now and for quite a few years, there has been almost none).
A very important first step in this is to put a lot of work into "learning to see the present" and then where it came from (this is a lot of work, and it's not what human minds generally want to do). This will free up most thinking, will open up many other parts of the useful past, and especially about much better futures.
1. The definitions are the boundary -- these are what are used to make the interior. The analogy is to definitions (used to be called axioms) in math. Simple for math (because it is only about itself). Difficult for science because we can't just make up the definitions, we have to try to find ones that have some mappings to "out there".
A boundary for chemistry is the physics standard model. Within physics the model is pretty accurate but unsatisfying as far as knowledge. They would like to have a better boundary, and get the standard model (and the key constants) from it. But it makes a good boundary for chemistry to make excellent chemical models.
Similarly (oversimplifying here) chemistry makes a good boundary of definitions for molecular biology.
Note that in this scheme of thinking, the "knowledge and meanings" exist inside the boundary, but don't include the boundary.
One of the issues addressed in this approach is how to make progress in "knowing" without infinite regresses. Philosophically, it is a kind of pragmatism.
As I mentioned elsewhere, science is a negotiation between two different kinds of things not a set of truths. It has many things in common with mapping (and making good maps is a branch of science, and one of the real starts of real science).
2. We are predisposed to believe things. Bacon's notion of why we needed to invent a "new science" is to create a set of processes and heuristics that would help us deal with and get around to some extent "what's wrong with our brains".
As a young scientist, I got the warning that is given to most young scientists "Beware, you always find what you are looking for!"
Some of the interesting examples of good science turning into belief revolve around Newton and both Maxwell's Equations and the orbit of Mercury (neither are "Newtonian"). And if you look at the history you'll see that Newton was a lot less Newtonian than many of his followers.
And yes, we also seem to have some things that are easier to imagine than others -- gods, demons, witches, etc seem easy, but future floods etc seem hard.
3. Sure. E.g. if you think things have to be circles, then this will be part of your implicit context for thinking about orbits. Geocentric used circular orbits and then epicycles to correct them and save the theory (and some great metaphors there for lots of human thinking). But it's important to realize that Copernicus also used circular orbits, and they also used epicycles to save that theory. Kepler worked with Brahe and admired him, so decided to trust his measurements. This led to a different model. The planets themselves didn't care about any of the models.
The definitions are still not -true- and the neighborhood is still not the phenomena. It's just better. You only get Newton from Kepler, not Maxwell or the orbit of Mercury and then Einstein for both.
Yes, it's not the apparent logic in the operations that counts but the choice of definitions (and these include the definitions of the operations). I wrote a paper for the "Mind-Body Conference" in 1975 that discussed this. The idea is that "reasonable things" are done within "stable neighborhoods of 'truth' " that can be thought of as regions whose boundaries are the definitions. Inside we pretend the definitions are true, while the larger view from above knows the neighborhood is arbitrary.
This is an old idea (e.g. Euclid). The "modern" part of it is that the definitions are not assumed to be true outside the neighborhood. This is simple and powerful because the results are larger worlds that can be compared to others and to phenomena and experiment (and without setting up dogmas and religions).
Because of the way human minds work, there will be tendencies to think the definitions are "actually true" (and so the logic inside the boundaries) if they and the conclusions are appealing. But the form of this knowledge helps keep us saner if we are diligent about drawing the maps and boundaries correctly.
Much of science has this character, and the model helps to understand what it means to "know" something scientifically. Science is a negotiation between "what's out there?" and what we can represent inside our heads via phenomena on the one hand and the "boundaries and neighborhoods" on the other. Einstein's nice line about "math vs. reality" hits it perfectly ("As far as the laws of mathematics refer to reality, they are not certain, and as far as they are certain, they do not refer to reality.").
Newton's Principia was a huge step along these (and many other lines). He completely separates out the math part in the first large parts of the work. And only then does he start looking to see how the math models map onto observed phenomena.
To say it again, Science is partly about being very careful about how the definitions map to "out there".
In terms of context, if you are aware that you are in contexts -- the first step! -- and aware and careful about the ones you are using -- the next steps! -- there is a chance that "reasonable thinking" might happen.
When Neil Postman was a grad student he followed Marshall McLuhan around for a few months. One thing he noted was that McLuhan -- when argued with or when asked a question never directly replied, but just came out with another one of his zinger "koans". Neil said he finally realized that McLuhan was not concerned about whether people were agreeing with him or even understanding him, but was most aimed at getting them to think at all!
I've never been able to pull this off, but McLuhan had a real point. Socrates had the idea (via Plato) that there "was truth" and careful thinking would get everyone to the same place. (Much of science has this assumption (if you throw in a lot of experimentation and debugging as part of the careful thinking). In any case, a reasonable explanation in science is not in the form of sentences.
One of the key ideas here is that modern understanding is a lot more than changing from one set of sentences to another. (This is a huge problem for humans because for tens of thousands of years and more there were no significant differences between our models and our sentences.) Now some of our models can't be reasonably represented in sentences, but for many cases we still have to use sentences to point at the models (or don't even use the models at all).
To me, the consequence of all this is that most of the work needed to be done on thinking about important difficult problems is not primarily "logic" (in the sense of dealing with premises, operations, and inferences) but "extra-logical" (trying to understand contexts and boundaries and models and tests before trying to do anything like classical thinking).
I often try to point out in talks that modern thinking is "not primarily logical" and this is what I'm driving at.
I'll avoid trying to reply to this. The Roman poet Juvenal quipped "But who will guard the guardians?" referring to one of the main problems of any republic. Plato had one suggested solution, and the US founders had another. Today we have something quite different than either had imagined.
One key question for "civilization" has usually centered around the extent to which enough children can learn to reach beyond their genes to embrace ideas and behaviors that have been invented for the better.
Another key question revolves around the trade-offs between individual choices vs "smartest choices". This reflects the distribution of talents, outlooks, skills, knowledge, etc in any population. And also the distribution of what various people need to "feel whole". (These are often at odds with larger organizations of societies.)
It's an extensible language with a meta system so you can make each and every level of it do what you want. And, as I mentioned, the first version of Smalltalk (-72) did not have a convention to use a selector. The later Smalltalks wound up with the convention because using "keywords" to make the messages more readable for humans was used a lot in Smalltalk-72.
You need to have "things that can answer questions". I'd like to get the "right answer" when I ask a machine for someone's date of birth, and similarly I'd like to get the right answer when I ask for their age. It's quite reasonable that the syntax in English is the same.
? Alan's DOB
? Alan's age
Here "?" is a whole computer. We don't know what it will do to answer these questions. One thing is for sure: we are talking to a -process- not a data structure! And we can also be sure that to answer the second it will have to do the first, it will have to ask another process for the current date and time, and it will have to do a computation to provide the correct answer.
The form of the result could be something static, but possibly something more useful would to have the result also be a process that will always tell me "Alan's age" (in other words more like a spreadsheet cell (which is also not "data" but a process)).
If you work through a variety of examples, you will (a) discover that questions are quite independent of the idea of data, and (b) that processes are the big idea -- its just that some of them change faster or slower than others.
Add in a tidy mind, and you start wanting languages and computing to deal with processes, consistency, inter-relations, and a whole host of things that are far beyond data (yet can trivially simulate the idea in the few cases its useful).
On the flip side, you don't want to let just anybody change my date of birth willy nilly with the equivalent of a stroke of a pen. And that goes for most answers to most questions. Changes need to be surrounded by processes that protect them, allow them to be rolled back, prevent them from being ambiguous, etc.
This is quite easy stuff, but you have to start with the larger ideas, not with weak religious holdovers from the 50s (or even from the way extensional way math thinks via set theory).
My perspective is that our planet is small but there are lots of people. "Biology is variation" so there are wide distributions of properties. I like the idea of "Equal Rights" (and also think that it's necessary). The systems that are critical, including the human systems, are non-linear and intertwined. The combination of these is that the human society needs to find - invent - how to organize itself.
This is very much in the spirit of the thinking that led to the American Constitution, and Tom Paine's "Instead of having the King be the Law, we can have the Law be the King".
We need solutions that allow further thinking and design to be done.
One way to look at this is to ask questions about "human nature" and to what extent does it need to be followed and to what extent should we try to teach (even train) the children to act in "designed ways" -- for example, not trying to take revenge.
The interesting and difficult parts of goals like these are that we have humans in the mix while trying to come up with better societal designs. For example, even the best forms of socialism have been "gamed" incessantly, and often fatally, by humans only interested in "harvesting" for themselves.
This is one of many reasons why well thought out versions of social reform have often been destroyed when the implementation phase is started "Every one loves Change, except for the Change part!"
Yes, "collections" and other such things in Smalltalk are "the Christian Scientists with appendicitis". Our implementations were definitely compromises between seeing how to be non-imperative vs already having the "devil's knowledge" of imperative programming. One of the notions we had about objects is that if we had to do something ugly because we didn't have a better idea, then we could at least hide it behind the encapsulation and the fact that message sending in the Smalltalks really is a request.
Another way of looking at this is if an "object" has a "setter" that directly affects a variable inside then you don't have a real object! You've got a data structure however much in disguise.
Another place where the "sweet theory" was not carried into reality was in dependencies of various kinds. Only some important dependencies were mitigated by the actual Smalltalks.
Two things that helped us were that we did many on the fly changes to the system over 8-10 years -- about 80 system releases -- and including a new language every two years. This allowed to avoid getting completely gobbed up.
The best and largest practical attempt at an ontology is in Doug Lenat's CYC. The history of this is interesting and required a number of quite different designs and implementations to gather understanding.
Mathematics is a plural for a reason. The idea is to invent ways to represent and infer that are not just effective but help thinking.
I don't think Smalltalk is well suited to represent any algebra (the earliest version (-72) was closer, and the next phase of this would have been much closer as a "deep" extensible language.
A data structure is something that allows fields to be "set" from the outside. This is not a good idea. My original approach was to try to tame this, but I then realized that you could replace "commands" with "requests" and imperatives with setting goals.
A selector is an object -- so that is pure -- and its use is a convention of the messaging, and the message itself is one object, that is an instance of Class message.
What's fun is that every Smalltalk contained the tools to make their successors while still running themselves. In other words, we can modify pretty much anything in Smalltalk on the fly if we choose to dip into the "meta" parts of it, which are also running. In Smalltalk-72, a message send was just a "notify" to the receiver that there was a message, plus a reference to the whole message. The receiver did the actual work of looking at it, interpreting it, etc.
This is quite possible to make happen in the more modern Smalltalks, and would even be an interesting exercise for deep Smalltalkers.
Not understanding Hypercard was one of Apple's largest mistakes in the world of end-users. It was a real breakthrough in something that end-users could really handle and be usefully programmable by them. Besides not understanding its significance on the Mac, we (old Parc hands) pleaded until we were blue in the face to make HC the basis of a really good web browser (it was a great model of a symmetric author-consumer media tool). Missing the latter was a tragedy.
In the light of the first comment, we could then contemplate an end-user system that combined what was great about Hypercard, Smalltalk, and some other experience from the 80s (e.g. the use-cases from Ashton-Tate "Framework", etc.).