Is code too hard for humans to think about?

in #tauchain7 years ago (edited)

Software is different. Just by editing the text in a file somewhere, the same hunk of silicon can become an autopilot or an inventory-control system. This flexibility is software’s miracle, and its curse. Because it can be changed cheaply, software is constantly changed; and because it’s unmoored from anything physical—a program that is a thousand times more complex than another takes up the same actual space—it tends to grow without bound. “The problem,” Leveson wrote in a book, “is that we are attempting to build systems that are beyond our ability to intellectually manage.”

The phrases like "software is eating the world" and "code is law" are common in crypto circles. One problem with code is that it is possible for programmers to write code which is so complex, so intricate, so delicate, that no one has a complete understanding of what the code is doing or how it works. Sophisticated large projects try to make this more managable by relying on paradigms like object oriented which in some ways can help to organize and manage the problem but only with limited effect. In essence without the ability to reason about the behavior of the code there is no way to as a human or as humans scale up our understanding with the complexity of the code we write.

This is the trouble with making things out of code, as opposed to something physical. “The complexity,” as Leveson puts it, “is invisible to the eye.”

What is Tauchain and how might it help solve this problem?

The findings surprised him. “Visual Studio is one of the single largest pieces of software in the world,” he said. “It’s over 55 million lines of code. And one of the things that I found out in this study is more than 98 percent of it is completely irrelevant. All this work had been put into this thing, but it missed the fundamental problems that people faced. And the biggest one that I took away from it was that basically people are playing computer inside their head.”

The problem is that in order to be a successful programmer today you have to do computational thinking. In a way, you have to think like a computer to be a programmer. Tauchain is unique in that it can allow the human(s) to open a line of communications on their terms with the machine(s) which can then open open a line of communication back to the human(s). So in Tauchain it is:Human(s) <-> Machine(s) <-> Humans(s). The machines in theory can handle the complexity that the individual humans cannot but the individual humans can provide the meaning and knowledge to the machines to help machines to be useful in a sort of language translation process. The question is will humans have to think like a computer to communicate over Tauchain to machines in the first place?

Formal languages are used so that humans can open a line of formal communication to the machines. Machines can only work with formal languages (not natural languages like English). Theoretically could it be possible for the humans to initially communicate in formal languages to create learners or even a neural network capacity so that over time the machines can learn to understand natural language communication for translation of natural language communication into formal communication? That is the big question which Tauchain may be able to help answer if it is built and is one of the main experiments.

Computers had doubled in power every 18 months for the last 40 years. Why hadn’t programming changed?

While at this time I cannot say definitively that Tauchain will work, and while at this time we must take on trust that it will be developed, the idea or theory is an attempt to resolve exactly this kind of question. If Tauchain works then it will change programming as we know it and it will be interesting to see how the crypto community reacts if in 2018 we see that the code proves the theory.

References

  1. https://www.theatlantic.com/technology/archive/2017/09/saving-the-world-from-code/540393/
  2. http://www.tauchain.org
  3. https://bitcointalk.org/index.php?topic=950309.0
Sort:  

It's all about system design. System designers are not engineers. Designers choose functions and algorithm . Software guys just work on the algorithm.
The programme is done, we just execute.

@mohammedfelahi I support with your comment 👌
Upvoted

In my degree I was trained as both a designer and an engineer. It is not really possible to create reliable system designs without also being an engineer to some extent.

The main reason, in my experience, that engineers don't know the full system is due to the absence of a formal design process in almost all cough professional software systems being made. Without full respect being given to the documentation process there is no way to know what exactly is being made and for what purpose. This is partially an issue of lack of education and partially an economic/political issue - since it is 'cheaper' in the minds of uneducated project managers to cut back on design time and it is also financially beneficial for contracted programmers to be the 'specialist' who 'knows the system' since there is no real documentation available for others to read.

I checked out the link to tauchain but it's broken because they don't support https there. I then went here and reviewed the basics of what it is but I don't really understand how it relates to the launguage concepts that you have written about here - did I miss something?

I fixed the link.

I feel like as humans we are capable of so much if we take time to learn it . We can't be like computers but humans have created this technology

The main pb for this imois that cpu remain very simplistic, focusing on memory access and arithmetics operations, interupt etc and it become very complex to write complex program that are meaningful, safe, and reliable, based on pure abstraction with only very basic operation at silicon level.

Many moons ago, in a galaxy far far away, I worked in usability and human factors for a large computer OEM. Which made me "persona non-grata" because I was the one who got to tell a bunch of developers that their superbly elegant batch of code had relatively little bearing on the bahvior patterns of real human beings walking around in the streets. Who'd ultimately USE the software.

Philosophically, where do we stand, in the world? It seems to me that we're getting too close to a world where we build machines (and code) with an intention to do certain things, and then users have to adapt to the automation.

That flies a bit in the face of much of the original philosophy behind the purpose of automation... namely that IT is adaptable to serve human needs and desires.

What you're describing here sounds like it is trying to come back across that divide.

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.033
BTC 62937.86
ETH 3092.40
USDT 1.00
SBD 3.87