A New Era

This forum is meant for anything you would like to share with other visitors
Post Reply
Posts: 306
Joined: Wed Jan 03, 2018 11:58 am

A New Era

Post by Terry »

Reason for Post
There is no doubt in my mind that, in all aspects of life today, we are entering a new era. What will the future bring? No one can know for sure but we can all make our own guess. Potentially each person’s guess, at the finest level of detail, may, and almost certainly will, be different although, at a generic level, many will foresee things in a similar way.

Software (application) development itself will of course be embraced by new-era changes. In what exact way not one of us can be 100% sure, but it is my guess that, in the specific areas that forums such as this, the established ways of seeking help (by asking others if they have had to address similar problems and how those problems were overcome) will be gradually replaced by a need for developers to address their own specific problems based on a detailed understanding of their own developments.

That represents a shift, in problem solving: From considering the syntax of an application, or specific procedure within that application: To addressing the semantics of the overall application.

Despite standardization of APIs and so on, there will always be potential for some “exception to the rule” to raise its ugly head somewhere along the line: an exception, the exact nature of which, no one else has ever encountered before.

The following discusses how, in my opinion, any one of us can most easily transition “syntactical thinking” to “semantic thinking”. Of course, if we are lucky enough to be developing a new application from scratch it will also apply.

Transition of Thinking
We all think in different ways – based on our own individual experiences and the environments within which we have lived, worked and socialized over differing periods of time. No wonder then that we are likely to come to our own differing conclusions about things. Little wonder that sometimes we can end up with yes, it is/ no, it isn’t type arguments that lead nowhere.

An obvious fact is that in order to convey my thinking as the writer of this document is that I am relying on you as a reader(s) to interpret what I write in the way that I meant it. (of course, I don’t at this point know if anyone will read it unless I’m told at a later date!).
This point is significant it represents the difference between conjecture (the future) and certainty (the past). Our applications can only work correctly on the basis of certainty. (To be really accurate here I should say near certainty, but to follow that track would obscure the thrust of this post).

So, the problem is: how, given all these differences in perspective, can I convey commonly understandable meaning in what I write?

The answer is to base everything on what nature itself enforces – that is something we are all well aware of and luckily amounts to no more than what we may regard as common sense. It just needs to be flagged up.

One thing I always try to not do is let what I already know get in the way of understanding something else. That, believe me is something that I find easier said than done.

There is one other thing we are often advised to do and that is “Think outside the box”. But that immediately begs the questions “what is the box?” and “why did we get into it in the first place?”.

Getting out of the Box
We have no choice about getting into the box. Nature itself ensures that and I’ll come to that in a moment.

If we do get out of it where will we be? In the real world. A real world within an environment constrained by a number of factors, including:
Nothing can be done in zero time.
We cannot go backwards in time.
We are constrained to operate within 3 dimensions. (mathematically a 3-dimensional vector space)

As human beings we have further restrictions such as limits on how quickly we can do things – not too many 4-minute milers about!
The workings of a computer are similarly constrained. (after all a computer works in the real world). (Note that for similarly read almost identically constrained, and importantly proved to be so)

BUT, and it’s a big but, the human brain releases us from all these constraints. By so doing it brings an unsurpassed ease of understanding in all sorts of otherwise completely incomprehensible or difficult problems/tasks. Take for example the planets going round the sun. Our brains can take us to the sun in zero time and come back in zero time. Now imagine taking a sextant there and measuring angles etc. to say nothing of getting burnt alive.

Getting into the Box
So, how does nature put us in our boxes?

From our earliest moments in this world we are put into an “environmental box”. An environmental constraining box of our very own with our very own perspectives. Even identical twins in the same nursery will be in separate cots and see the box (in) sides form a very slightly different perspective.

As we get older, are moved to separate bedrooms, then on through schooling etc, it is our environment that is expanding and it is from that environment we are learning, or drawing our knowledge. Available knowledge from the real world is simply too great for any single individual to absorb. So, we all go our separate ways into our different boxes. This goes on: the engineer to the engineer box, the medic to the medic box. The boxes themselves can expand in both detail and breadth. It is time that puts a limit on how much information the individual within those boxes can absorb.

Well, what happens if the engineer cuts himself? He goes to the medic and gets bandaged up of course.
In other words, if you can’t do something yourself, ask someone who can.
This line of thinking can, legitimately, be carried across to the thinking behind the way in which a computer executes a running program, and hence give a visualization of the underlying code that structures that program.

Transference of Thinking (to the Computer)
We all know how to develop applications. Having said that I would invite you to ponder the following in which I hope to show how thinking in 3 dimensions can in fact simplify our understanding of what is going on when our applications are run. It is no magic wand; we still have to think things through ourselves. The simplifications come about because we can think of things in real-world terms and independently over time. Then leave their integration into a consolidated application to the computer (compiler).

Essentially applications are written in a language analogous to the way I am writing this document. It could be looked at as a one-dimensional script, which uses the developer’s knowledge of programming in a way that allows the computer (compiler) itself to change things into two-dimensional code. The first dimension is basically telling the computer what to use (e.g. 1 and 2) and the second dimension, by virtue of inheritance (programmer knowledge of compilation process) what to do and how to do it (e.g. add and generate result).

There is a third dimension, yet another to tax the brain of a developer, and that is the order in which things are done. (in computer terms trying to Get before Set would cause a hiccup).
When any one of us jumps out of our box encasement it will be into a 3-dimensional world with the level of understanding that we have at the time of the jump.
Although that level, at its most detailed point, will be different for each of us, it is fair to assume that we are all familiar with our cities, towns, villages, buildings, routes between them and so forth.

This means that we can think of classes as buildings housing everyday activities. We can think of program structure as roads, lanes etc around those buildings. We can think of how we would instruct others to do things for us and so on.
And, of course, when we have decided what to do and how to do it, we can use our programming knowledge to similarly instruct a computational device.

I hope the above illustrates how simple thinking in real-world terms makes things much easier to understand; whether it is trying to understand cryptic error messages or to solve seemingly intractable coding problems.

But there is an important point I want to make: that is the legitimacy of looking at things this way can be proved. The proof is a combination of scientific, mathematical (abstract and statistical), and straightforward logic. It extends into what some may call AI or Machine Learning.

Post Reply