Help - Background - Remarks - Learning to program
Like mathematics, like playing the violin, and like very many other human capacities, programming just is NOT for everyone or indeed for most. But this notion seems NOT popular with most Smalltalkers, who much rather believe that their language is fit for "all children of all ages to program in" (a bit like the believers of each and any religion: My religion, dear heathen, is perfectly fit for all children of all ages to believe and profess!).
ANY universal computing language is difficult to learn to a level one can use it comfortably, with ease and understanding, and write the sort of programs one sees, or contribute to the writing of these.
The truth is simply that learning to program in a universal language is difficult and time-consuming, is not something "just anyone" can do (if not a pure genius - and these are truly rare), and does take a lot of persistence, and effort, and the solving all manner of none to obvious problems of many kinds.
Personally, I also find it quite beautiful, for coding and programming has a strange kind of beauty, like mathematics, but with the difference that it is you who creates the structures that do the things you want - hopefully, if you thought well enough and coded sensibly enough. It is a way of dealing with dynamic structures and their representation as language, fit for a processor that is a universal Turing machine, that is in many ways very interesting, since it sits astride so very many aspects of being human and being rational, and using language, and using formal thinking, all about anything whatsoever that's amenable to computation and that may be done by what we presently call a PC or Mac (etc.).
Computing and programming conceived of and talked anout in terms of objects sending messages to objects - Object Oriented Programming, in short. Now this is a very good idea - and it is a metaphor that confuses quite a few levels that are in fact involved when one tries to program:
- One's
own mind
- The
language one uses
- The
hardware one addresses
-
The (hardwired) code that hardware runs on
-
The things - processes, events, whatever - one tries
to model
-
The real innards and interdependencies of these things
One may fondly exclaim that what all these levels have in common is "objects sending messages", and perhaps that is so - on some level(s), but then it seems to me misleading on other levels, especially since "an object" and "a message" are quite different sorts of entities on these diverse levels.
For example: Presumably I am an "object" and this text you read is a "message" - but the computer I am using and sending my objects and messages through, although quite capable in its own ways, definitely is not the sort of "object" that I am (it doesn't feel, it doesn't fall in love, and it doesn't dislike Windows, for example: in fact it doesn't think or feel at all: it merely shifts pulses in an orderly way, and very rapidly), while also the sort of "message" I am writing right now is not the sort of message any computer can make sense of, by itself.