Steve Wallis’ socialist website

Email

revolutionarysocialiststeve@yahoo.co.uk

Telephone: 07725 735255

Note: Some platforms warn you about “active content” that could access your computer. If you don’t trust me not to give your computer a virus, you can browse this website without allowing the active content. The only difference is that the buttons below would not be highlighted when the cursor moves over them.

HomeNews & EventsRed Day (my socialist band)My Musical PoetryConspiracy TheoriesAssassinationsMind Reading/ControlInfiltrationThe ParanormalInternational IssuesFor Democracy in IraqFreedom for PalestineElectionsUS Electoral Fraud - Kerry won!Campaign for DemocracyAgainst ID CardsAbolish the MonarchyBanks & Building SocietiesAnti-Capitalism/G8Direct ActionThe EnvironmentRacism & FascismAsylum & ImmigrationHuman RightsWomen's RightsCrimeDisability & Mental HealthHealthEducationPensionersTaxesFood & DrinkSport & GamesTrade UnionsSocialist OrganisationsBooksNewspapers & MagazinesFilms & TelevisionMusicMartine McCutcheonIsaac AsimovDouglas AdamsRosa LichtensteinPriya Reddy (warcry) of War Cry CinemaMurray Smith of the French LCRDerren BrownMarxismScientific TheoriesComputer ScienceSDML (my Artificial Intelligence/simulation language)Computer GamesGenetics & EvolutionReligionCharitiesDocuments & LeafletsAutobiographical InformationInternet ForumsLinks

Computer Science

Note: This page currently contains the text that used to be on my SDML page. I confess to having rambled a lot on this page; I intend to update it soon. For a description of my Artificial Intelligence/simulation language SDML, and my viewpoint on its role in the world, visit the newly constructed SDML page.

My greatest achievement to date has been the development of a computer simulation language called SDML – which stands for ‘Strictly Declarative Modelling Language’. The language’s official home page is at

http://sdml.cfpm.org but I have also set up a ‘strictly-declarative-modelling-language’ discussion group which has a description that provides a socialist perspective on the language as well as advice for learning it.

I now regard my computing experience before I started developing SDML as training for that task.

 

I studied computing at school, just as the subject was being introduced into the curriculum – and got ‘A’ grades at both ‘O’ and ‘A’ levels (at the ages of 16 and 18) – but most of my experience took place at home.

 

When my family was discussing buying a computer, the serious choice was between a Commodore Pet and a Sharp MZ-80K, which were roughly the same price (of the order of £500). Apple had brought out a far more expensive personal computer, which had colours and a pixel-based display, but that cost more than my parents were willing to spend. [My father called himself a ‘theoretical astrophysicist’ and studied comets – alongside the Indian scientist Chandra Wickramasinghe at Cardiff University and collaborating with the famous Sir Fred Hoyle; they pioneered the idea that life is spread through the galaxy by comets before the idea became accepted by mainstream science. I personally think they were wrong, as I explain on my scientific theories page. Due to my father’s insistence on studying comets, even when he wasn’t paid for the work, and the large mortgage on our six bedroom house in Penarth, my parents were often short of money when I was growing up in that town (despite the fact that my mother also had a job, at Cardiff University’s computing centre).] At the same time, Sinclair was bringing out its very cheap computers (the ZX-80 and ZX-81 which cost about £100) that only had 1K (one kilobyte, i.e. 1024 bytes) of memory, including those needed to represent characters on the screen! A byte has 8 bits (binary digits) and can represent integers (whole numbers) between 0 and 255.

 

The Sharp MZ-80K had two big advantages over the Commodore Pet – it had sound and some good graphics characters. I played some games that had been written for the Pet, before we decided to get an MZ-80K, and they had very bad graphics, including letter As moving around the screen! Furthermore, Sharp is a Japanese company whereas Commodore is an American one.

 

I tend to avoid products made by US firms nowadays since that country is the main bastion of capitalism in the world, whereas Japanese firms can be much better due to that country’s horrific experience of the nuclear bombs dropped by the US on Hiroshima and Nagasaki at the end of the Second World War (the latter after the Japanese regime had surrendered) and the fact that Japanese workers are generally treated better than those in other countries (the

Militant Tendency ‘line’ was that it was to buy off the unions but it should be regarded as a good sign because some bosses are on the side of the working class).

 

However, most electronic products are now manufactured in less developed countries (particularly China), due to the much cheaper labour costs (i.e. much greater exploitation of workers) in those countries – which obviously limits the advantage of buying from Japanese firms. I used to find that Sony was a reliable firm, but my opinion changed when I asked them to repair a Sony laptop and after it came back from Belgium lots of things started going wrong. Sony Europe’s policy of centralising repairs in Belgium is particularly bad, because it is a country in which a fascist organisation (the Vlaams Blok) is strong (despite the great work of Militant’s sister organisation in that country in setting up and leading an organisation called ‘BlokBusters’, the Belgian component of Youth Against Racism in Europe which organised a 30,000-strong anti-racist demo in Brussels). The most obvious problem was “System shutdown” messages saying that the computer will be shut down in one minute, but since I could get round that problem by changing the system clock, the crippling bug was laptop’s internet access was gradually getting slower and slower, until it reached the point when I could access at most a single web page before needing to restart Windows XP to access another page. I found out from an icon in the bottom right hand corner of the screen that the laptop was sending far more bytes of data than it was receiving! I have subsequently discovered that even when a PC is functioning correctly, large quantities of data are transferred from it to who knows where – obviously indicating that programs elsewhere on the internet are spying on us to a large extent when we are on-line! The same pair of bugs that occurred on the laptop occurred on the Time desktop PC that I have owned since March 2000 much more recently – which necessitated me reinstalling Windows XP.

 

I started work as a Research Associate (a step up from Research Assistant on the career ladder) on a multimedia communications project called ‘MultiComms’ during my final year as a postgraduate – since the quango that allocated my grant refused to support me after my first three years, despite the fact that I had taken a break of six months. Fortunately, my MultiComms supervisor Trevor Hopkins was one of my undergraduate supervisors. Trevor specialized in object-oriented programming (OOP) and taught what was then and still is the best OOP language, Smalltalk, alongside Mario Wolczko. I used Sun workstations at the University of Manchester, which were very good machines but they became much worse value for money than PCs (originally known as ‘IBM-compatible personal computers’ – IBM produced the first ones but other companies soon started producing much cheaper clones) even with very large academic discounts. Mario later moved to the USA to work for Sun Microsystems and helped develop the much more well-known OOP language Java, which was Sun’s attempt to reverse the decline in its share of the market to PCs. The idea was to create a portable language which is the same on every platform and which can be used to develop mini applications (applets) that can be placed on web pages. However, Sun blundered by releasing a very inefficient version for its own workstations, in which bytecodes were interpreted (even though compilation techniques had already been developed and used in Smalltalk). This allowed Microsoft to develop more efficient versions for PC platforms. Microsoft have also undermined Sun by deliberately introducing new features which don’t work on Sun workstations. There have been quite a lot of different versions of Smalltalk (I originally used ‘Smalltalk-80’, which was superceded by ‘ObjectWorks’ and then ‘VisualWorks’), but the underlying language has not changed; big advances have been achieved using new ‘primitives’ (routines in machine code) and other ‘methods’ (routines implemented in Smalltalk). The language has become much faster due to compiling rather than interpreting ‘bytecodes’ (using caching to keep compiled versions of frequently used methods in memory while discarding many of the others; the compiled methods are usually very efficient since the code is optimised for the situation in which the classes of values of variables stay the same from one execution to the next) and having very efficient garbage collection algorithms (which are programmable, enabling programs to take advantage of more memory if it is available, but avoid the ‘thrashing’ which can massively slow programs down by continuously paging areas of memory in and out when there is a shortage of memory). Garbage collection techniques have now improved to the extent where it is generally faster to let objects be disposed of automatically when they are no longer required (by putting similar objects on the same ‘pages’ of memory and replacing entire pages with new objects to get rid of all the old objects on them at once) and it avoids the necessity for complicated code to keep track of objects and dispose of them – which leads to bugs in many C and C++ programs due to ‘memory leaks’ (objects not being disposed of and the memory eventually filling up) or objects being placed on top of each other (which can happen if an old object has been disposed of twice). There are additionally two features of Smalltalk without which I could never have implemented SDML – ‘blocks’ and ‘large integers’.

 

A block is a piece of code, which is used to generate a ‘block closure’ (originally known as a ‘block context’) when it is encountered in a method, making it specific to the position in the stack of methods so that variables can be accessed or modified. Block closures, which can take any number of arguments to make them even more specific, can be passed around from one method to another and ‘evaluated’ any number of times. What makes blocks far superior to the procedures or functions that can be passed around in inferior languages is that they can include a return character (‘^’), to move back to the enclosing method of the one that created the block closure – which makes jumping out of methods to higher ones in the stack in exceptional circumstances much easier.

 

A great advantage of Smalltalk is that everything is an object, whereas C++ (being a hybrid between C and an OOP language) has C-style ‘structures’ and integers (whole numbers) of varying lengths as well as objects. Smalltalk has ‘small integers’, which fit into a single 32-bit word (with the most significant bits used to distinguish them from objects stored in memory), which are entirely compatible with ‘large positive integer’ and ‘large negative integer’ classes that can represent integers of any length in areas of memory. The fact that integers are not objects in C or C++ is another source of bugs, because programs that work on small scale problems are unlikely to scale up to problems of arbitrary complexity. When I implemented a compiler from SDML into Smalltalk, I needed the Smalltalk code to work for integers of an arbitrary size – if the compiler yielded C++ code, it would have been much less efficient than Smalltalk in the situation in which small integers would be adequate (which is virtually all the time).

 

A very frequent programming technique I used to implement SDML was using integers as ‘bitcodes’, where 0 represents the absence of a number from a set and 1 represents its presence in a set, in their binary representations. Since Smalltalk contains fast implementations of logical operations like ‘and’ and ‘or’, an integer can be used as a very fast optimisation of a set of numbers (as long as those numbers are very small positive integers themselves).

 

I implemented a ‘profiler’ for SDML, which identifies the time spent firing (or attempting to fire) particular rules and performing other important tasks. It was a very useful tool in enabling me to identify the biggest performance bottlenecks so that I knew where it was best to spend my time optimising the Smalltalk code. It is also a useful tool for SDML users who are trying to optimise some of the rules they have written in the language. The overhead when the profiler is turned off is virtually zero (due to my use of a class called ‘NoProfiler’) and is very small even when it is turned on due to efficient Smalltalk primitives to read the system clock and the use of blocks in my Smalltalk profiling code.

 

Another major advantage of Smalltalk over C++ and Java is the language’s syntax. Smalltalk code looks very much like English whereas C++ code is very complex and contains many symbols. This makes Smalltalk code much easier to debug (and the presence of very good debugging facilities in the language aids this process). I did most of the design and all of the implementation (apart from a tiny bit of code written by my boss Scott Moss which I used as a starting point) of SDML in several years.

 

Bruce Edmonds, who called himself ‘an inactive anarchist’, was my main source of help in developing the language – and he covered up the fact that I had the website of the

Committee for a Workers’ International (CWI), to which the Militant Tendency/Militant Labour/Socialist Party is affiliated, in my work webspace. I also ran an unofficial CWI mailing list using work facilities – since I already ran an SDML mailing list, it was easy enough to obtain another list. Bruce spent a lot of time searching the extremely complicated AI and logic literature to determine what logic SDML was related to, and eventually determined that it is Kurt Konolige’s strongly grounded auto-epistemic logic.

 

This page is not complete. Visit the

SDML discussion group for a socialist perspective on SDML and advice on how to use it. SDML’s official home page is http://sdml.cfpm.org.

Note: This page currently contains the text that used to be on my SDML page. I confess to having rambled a lot on this page; I intend to update it soon. For a description of my Artificial Intelligence/simulation language SDML, and my viewpoint on its role in the world, visit the newly constructed SDML page.

Ø      Back to Steve Wallis’ socialist home page