Posts Tagged ‘computer’

Writing and writing programs

December 12, 2019

The following is from the book, Computer Power and Human Reason by Joseph Weizenbaum, page 108. I think it’s great.

“Often when we think we understand something and attempt to write about it, our very act of composition reveals our lack of understanding even to ourselves. Our pen writes the word ‘because’ and suddenly stops. We thought we understood the ‘why’ of something but discover we don’t. We begin a sentence with ‘obviously,’ and then see what we meant to write is not obvious at all. Sometimes we connect two clauses with the word ‘therefore,’ only to then see that our chain of reasoning is defective. Programming is like that. It is, after all, writing too. But in ordinary writing we sometimes obscure our lack of understanding, our failure in logic, by unwittingly appealing to the immense flexibility of natural language and to its inherent ambiguity. The very eloquence that natural language permits sometimes illuminates our words and seems (falsely, to be sure) to illuminate our undeserving logic just as brightly. An interpreter of programming-language texts, a computer, is immune to the seductive influence of mere eloquence. And words like ‘obviously’ are not represented in the primitive vocabularies of any computers. A computer is a merciless critic.”

The computer has consumed my life

December 27, 2016

Yesterday on NPR they were talking about child expert’s current recommendations on the amount of time children should be allowed to spend in front of the computer. I think they recommend less than an hour each day. Interestingly they then went on to tell how much time their parents spend on average each day in front of the computer: 9 hours per day!

I then got to thinking about the time that I spend in front of the computer each day. Eek! I probably average 10-12 hours per day. That is a huge chunk of my life spent in front of a computer. I am starting to forget what I did with my time before the computer age.

What an amazing illusion we humans have created

May 19, 2016

What an amazing illusion we humans have created. We’ve created the illusion that the computer is filled with text and text has lines. The illusion is so complete, so compelling, that we have an incredibly hard time thinking there could be anything other than text inside our computers. And we’ve build a whole tower of stuff on top of the illusion: text editors, text data formats, text programming languages, social media, and so forth.

But in fact, there is no text in the computer, just numbers. And there are no lines. The numbers inside the computer are interpreted by clever software to represent letters and those letters are displayed on a monitor. Certain numbers are interpreted to represent an end-of-line marker, the succeeding numbers (er, letters) are displayed on the next line of the monitor.

The power of abstraction – amazing!

Is the binary file format dead?

October 30, 2013

In my mind, the universe of computer files falls into two categories:

1. Binary files
2. Text files

Of course, inside the computer there is no text (i.e., ‘a’, ‘b’, ‘c’, etc.) but only zeros and ones. So “text files” really means “a sequence of zeros and ones that we have agreed to represent an encoding of text”. The illusion that a computer file contains text is so complete, we rarely realize that it is an illusion. Lots of tools have been created to support this illusion (perhaps a better word is “abstraction”; yes, that’s the word I will use from now on), such as “text” editors and compilers.

I think the text abstraction was one of mankind’s most monumental achievements.

It makes me wonder why we would want computer files to be anything other than text files. There are such compelling advantages to the text abstraction: (1) ability to relate to a computer at a human level rather than a machine level – you can see the text, read it, make sense of it, (2) ability to create higher and higher levels of abstraction – “It’s not just text, it’s a “BookCatalogue”. And there are many other advantages.

I understand that binary files are typically smaller. And smaller is often desirable. And probably faster. Fine.

But today’s desktop computers have huge amounts of memory and are extremely fast. Surely size and speed are of relatively little concern nowadays. And even if size and speed are of concern, surely the ability to solve problems at a higher level of abstraction (as the text file format provides) is many orders of magnitude more important. Yes? Surely the binary format is a relic of past computing days and it is time to discard such antiquated things. Yes?

HTML is text. This document is text. Yea!

JPEG files are binary. So is PDF. And GIF. And PNG. And many others.

I’d like you to put on your prognostication hat: do you foresee the demise of the binary file format?

Is solving a problem harder than recognizing a solution?

August 25, 2013

Consider the following thirty-eight numbers:

14,175  15,055,  16,616,  17,495,  18,072,  19,390,  19,731,  22,161,  23,320,

23,717,  26,343,  28,725,  29,127,  32,257,  40,020,  41,867,  43,155,  46,298,

56,734,  57,176,  58,306,  61,848,  65,825,  66,042,  68,634,  69,189,  72,936,

74,287,  74,537,  81,942,  82,027,  82,623,  82,802,  82,988,  90,467,  97,042,

97,507, 99,564.

Those numbers sum to 2,000,000. Can you break them into two groups of 19 numbers, where each group of numbers sums to 1,000,000?

Not so easy, is it? There are over 17 billion ways to break those numbers into two groups.

Suppose I showed you a solution. You could easily and quickly check my solution to see if it is correct.

So it seems that solving a problem is harder than recognizing a solution (i.e., deciding that a solution is correct).

But is that true? Perhaps we are overlooking something. Perhaps, if a solution can be efficiently recognized then there also exists an efficient way of solving the problem. 

Can we answer this:

      For every problem that can be efficiently recognized
      is there an efficient way of solving the problem?

Suppose one day someone proves that the answer to that question is “Yes”.

The consequences will be revolutionary. Everything that was previously considered hard (cannot be solved by a computer) will be easily solved. We will be able to quickly learn just about everything, and the great mysteries of the world will fall quickly, from cures to deadly diseases, to the nature of the universe.

For example, consider its impact on cancer treatment. Modern cancer practice is to design custom treatments for individuals. Ideally a treatment would be customized to an individual’s specific DNA structure. But the human DNA consists of about 3 billion bases and the computations required for a completely customized treatment are astronomical, far beyond today’s computers. But if it were shown that all hard problems can be solved in an efficient way, then we could solve that customization problem quickly. That is, we could write software to determine the best treatment based on the individual’s specific 3 billion bases.

It has been an awakening for me to realize that it will be software and computing power that will be the key to solving many of today’s medical problems, meteorological problems, physics problems, etc. These problems require computations that are currently outside the capabilities of today’s computers. But in the future there will be computers capable of performing the necessary computations. Then the problems will fall.

The problem that I described above – for every problem that can be efficiently recognized, is there an efficient way of solving the problem – is a very famous problem. It is called the P = NP problem. It is one of the deepest questions that human beings have ever asked.

Most of the above material came from these two books:

  1. P,  NP, and the Search for the Impossible by Lance Fortnow
  2. Quantum Computing Since Democritus by Scott Aaronson