Tag Archives: data

Objects vs Functions

I learned to ‘programme computers’ long ago, almost before there was no “me” in ‘program’ and certainly before I knew how to ‘team’. I had a very brief and unsuccessful exposure to functional programming in LISP (not Lisp) then stopped. I did other ‘Data Processing’ things.

In recent years I’ve been working as an analyst, alongside people who write code according to the object model. I think I have a feel for objects but never having written code in an object-oriented language, I can’t be sure. I decided to try, in the Python language, then got distracted by the shiny Clojure language which is functional. I feel that right now I’m approximately equally confused by objects and functions, so I thought I’d write this quickly before I know what I’m talking about. I can come back later to laugh at my naivety, along with the rest of you.

Like the person who wrote this https://news.ycombinator.com/item?id=4246018 ,
I’ve been watching some talks online recently by Rich Hickey of Clojure fame”
The post asks “So if I follow Hickey’s advice, how am I supposed to represent a book? As a vector of vectors of vectors of vectors of strings? If so, then how do I prevent a change in the representation of the Book from breaking client code?”

I found the question very interesting because representing ‘books’ in a functional language is exactly what I want to do. I think differently to the author because  I’m not yet trapped inside the object paradigm. I can see that ‘book’ is a real-world class of objects, a very specific and limited implementation of the representation of a small subset of all the information in the world. That’s what my ‘book’ was going to be about and why I’m now playing with functions instead of writing it.

Objects are good at simulation of real life systems. They encapsulate small sub-systems of a process and it’s local data into an object. What I always struggled to understand was what you did with the data that didn’t want to be enclosed – “information wants to be free”. People seem to cope by inventing objects that don’t really exist: to be data shepherds.

Functions are good at abstraction. A book is a single output format from something much richer. That’s what I want to write. Data and processes are complex. Objects and functions are simplifying models; there may be others.

p.s. (not Lisp) Get it?


The British Computing Society

I just engaged in a debate about the BCS on LinkedIn . Yes, THAT again: https://andywootton.wordpress.com/2013/11/08/is-it-whats-in-a-name/

Officially, the three letters B, C and S, don’t stand for anything. They used to mean British Computer Society and that is what it still says on the Royal Charter that bestows upon the BCS the royal privilege of awarding Chartered status to members. I’ve suggested we get out the correcting fluid (or an appropriately skilled scribe) and change the middle word to “Computing”.

In his famous book title, Niklaus Wirth said, “Algorithms + Data Structures = Programs”

My suggestion was that ‘Computing + Information = what BCS members do’

Look what Wiki-P says about the word “computing”: https://en.wikipedia.org/wiki/Computing

“Computing is any goal-oriented activity requiring, benefiting from, or creating algorithmic processes—e.g. through computers. Computing includes designing, developing and building hardware and software systems; processing, structuring, and managing various kinds of information; doing scientific research on and with computers; making computer systems behave intelligently; and creating and using communications and entertainment media. The field of computing includes computer engineering, software engineering, computer science, information systems, and information technology.”

At the moment, the ambitions of BCS Council only extend as far as the ‘IT’, which comes last in the list. Some of us “software engineers, computer scientists and information systems” people feel we are not being adequately represented. I promise I didn’t change Wikipedia to prove my case.

There aren’t many things in informatics (the Anglicised version of what the rest of Europe call ‘computing + information’) that can’t be represented by a ‘directed graph’.

The ‘blobs’ normally show the ‘processes’ where the computing happens (people or machines) or ‘information at rest’, typically with a different colour or blob-shape. The ‘arcs’ or ‘edges’ typically show potential ‘flows of information’ or ‘control’. It is an unfortunate coincidence that the directed graph example I found shows us going around in circles.

But is IT art?

What is IT? It’s Information Technology, clearly but why is it that rather than “Information and Communication Technology”, as UK schools call it? Is communication simply information on the move? Are messages only data in transit? Conversely, ‘are’ data messages that have been frozen? Is communication more than messages? Perhaps communication is related to messages as information is related to data?

What are data, information, knowledge, wisdom and enlightenment? Most of modern computer science is built upon Claude Shannon’s Information Theory: http://en.wikipedia.org/wiki/Information_theory

“Information theory is a branch of applied mathematics, electrical engineering, and computer science” How would the worlds of applied mathematics, electrical engineering, and computer science take it if I publish a book that points out that Shannon’s definition of Information is, at best, unhelpful and possibly wearing holey clothes? Well, I’m sure that because of the enquiring minds of scientists etc.

In ‘A Mathematical Theory of Communication’:
http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf, Shannon said,

“The fundamental problem of communication is that of reproducing at one point either exactly or approximately a message selected at another point. Frequently the messages have meaning; that is they refer to or are correlated according to some system with certain physical or conceptual entities. These semantic aspects of communication are irrelevant to the engineering problem. The significant aspect is that the actual message is one selected from a set of possible messages.”

Shannon’s theory appears not to relate to what we would now call ‘information’ at all but to data or even pattern.

Since we are questioning the foundations of computer science, what is art?  Is art everywhere?

Donald Knuth produced a 3-volume ‘Art of Computer Programming’. Clearly he saw the creation of new algorithms as a creative act.

Does Software Engineering deserve it’s name? Or is it Software Craftsmanship? Agile software development is a recognition that the project management methods from hard engineering cannot be applied to software, where the butterfly effect of uncertainties in requirements can lead to chaos. Agile works by leaving decisions later in the process when a feedback loop from incrementally delivered software better informs the requirements and allows emergent designs. But are Agile/Lean teams doing incremental delivery ever able to create beautiful design? Does great art/design need an architect who owns and drives the creative vision?

I remember going to a talk about Smalltalk where the speaker claimed that “No worthwhile piece of software has ever been written by a team of more than 2, maybe 3 people.” to an audience largely made up of the Inland Revenue IT department.

How to make friends and influence people. You know that Shannon bloke? Pah!

Call yourself an ‘Information Systems Engineer’?

A few years ago, I was on the cusp of becoming a Chartered Information Systems Engineer. The night before my peer review interview, I sat imagining questions I might be asked. I had long been aware that there is no agreed, consistent, meaningful definition of the word “systems” but I suddenly realised I didn’t know what “engineer” meant either. Once again, the word has been so horribly misused that its value has been depleted. Luckily there remains a core meaning that an engineer applies scientific knowledge to solve practical problems. But everyone does that, surely? I preferred a definition I found that evening, “an engineer is someone who can do for ten shillings what any damned fool can do for a pound.” It has an element of quality and value. We were getting into Zen.

Many years later, I was working on a ‘Knowledge Management’ project; to capture snippets of information provided by engineers and scientists. I started to think about the difference between data, information and knowledge. I wasn’t convinced that you could build a computerised ‘information system’ that could store ‘knowledge’. At about the same time, several people around me were getting interested in blogs and wikis. With my colleague, a librarian, I attended a ‘Knowledge Management and Social Software’ event. There was an open question session so I asked the assembled experts what they understood to be the difference between information and knowledge. There was an awkward moment before someone tried to answer me, then a fairly rapid intervention by the chair, who said it was a very theoretical question and we all understood what we meant. A noticeable wave of relief radiated out as people retired to their comfort zones.

I’m still not sure if this had been discussed so many times, without reaching a satisfactory conclusion, that they were bored or if they didn’t want to think about it because it’s A Hard Question. I was forced to conclude that I didn’t even know what ‘information’ was. Awkward!

I’ve thought about the subject a lot since. I have a few ideas but I’m not there yet. I’ve decided to think of it as “Information Metaphysics”. What is information? Does it exist? What is it made from? How does it work? Some people think the universe is made of information. I think they are Wrong. I think information is related to matter, energy, order, disorder, chaos, entropy, intelligence and culture.  I think it is probably unwise to settle for ignorance. That is rarely a good idea. We need more information – whatever THAT is.