The perfect system:
My vision for a new software development
foundation. Before starting, the system: there can only be one, only one
language, one data format, one communication protocol, one convention,
one authority, one way to do things, one version. It should also have
zero limitations and zero assumptions.
A new compiler as a natural language. A Work Piece Indicator should
be applied to the complete programming language, as an indicator to the
correctness of each line of code. Just as a craftsman tuning a piano has
immediate feedback to his work. A programmer should have absolute
confidence as he types each character. We must remove all assumptions on
logic. The language should strive for completeness in logic, that is,
handle all knowledge and logic that is already known. We already know
about numbers, characters, text, images, video, graphics, math, units,
use, transfer, storage, and forms so these are handled by the compiler
completely, thus removing the need for training or documentation in the
The language must handle all information flow. The complete use,
transfer, and storage is handled by the system. A single hardware
interface for all devices is used, therefore every information packet to
all devices is handled from a single "Jane" implemented device driver. I
will get rid of all 3rd party device drivers.
All digital information is application independent. Therefore the
system allows for any size of binary numbers, from one to infinite any
number of bits is permitted. A one bit integer ranges from -1 to 0, and
a one bit counting number ranges from 0 to 1. The compiler has integers
-infinity to +infinity, and counting numbers from 0 to +infinity.
The system will handle all knowledge as a single language.
Language we already have, just as I can read any book because of a
commonly accepted used of words, the system will also take advantage of
this already known knowledge. How many words would it take
to tell the computer to "fire on the Klingons", I'm not sure what
the people are there to do.
"damn it Jim, I'm a programmer not a writer" -- Clif
"Idealism is fine, but as it approaches reality, the costs become
prohibitive." -- William F. Buckley, Jr.
"The first responsibility of a leader is to define reality. The
last is to say thank you. In between, the leader is a servant." --
Max de Pree
"A goal without a plan is just a wish." -- Larry Elder
"Do what you say you're going to do. And try to do it a little
better than you said you would." -- Jimmy Dean
"Normal is an illusion, What is normal for the spider is chaos for the
fly" -- Morticia Addams
Over the past few years, I have been asked a
few times to look at heading up projects to redesign a major company's
complete software systems or some of their major products. I look at the
history of the existing products, and it always comes down to the
foundation that was used to build the products, in its inability to be
changed to meet new expectations.
I started looking into all software development foundations, to see
if there are alternatives in which to build a new systems. I also
looked at trying to fix the existing systems. I concluded that the only
way to build the type of systems people want is to first build a better
software development foundation. I'd would be a fool to think that
I could build a better product using the same tools the designers and
users of the original system used. The flaws are not in the people (at
least not all of it) or the approach, but in the tools.
All the sub-systems that developers relay on the write software
products all use the same basis. So before I start I must determine is
any of that base is useful. I am looking into projects that exceed four
hundred man-years of effort. Anything under this can always be brute
I looked at the cost and purpose at every character used and every
man-hour required when using all the popular software compilers,
assemblers, scripts, and
(COTS) packages. The cost of product development is an
exponential curve based on line-of-codes with a limit at manageability.
This cost curve is directly relayed to the capabilities of the
existing development foundation. By changing the foundation the shape of
the curve could be linear with very little slope. I believe the slope
will approach zero over time, and no limit on manageability.
The cost of changing the foundation is almost nothing. My
estimate is twenty man years to create a foundation that would be
obvious to anyone as a workable system. Unlike building a boat, which is
easy to envision, software is a somewhat more difficult. It is not that
we cannot envision the end product, but rather we cannot envision the
steps needed to built it, this is due to the complexity of using the
current foundation, far too many assumptions and partial solutions.
The customer envisions the product, a developer envisions the
steps. I find that as long as I do not change the customer's vision and
he does not try to change mine, the work progresses at a study pace.
was on the review of FORTRAN-90 in 1985. I quit because of the same
pipes, arrow functions, ... stupid changes with absolutely no benefit.
Actually they are harmful because it allows for more variations to
programming style, thus less compatibility between individuals. I
fixed, but amateurs wanting fame or something... I see no vision in the
changes that are being made.
The dollar cost of software development is really not the
question, but rather the cost to technology due to our software
Tragedy and greed holding the reigns of technology, every thing from
birth to death. It is the simple things that hold back technology, not
the complex. The inability to access information, from the characters we
type, to basic numbers, we use are locked out from their use and access.
Characters, Fonts, Real Numbers, Dates, Images, Video, Maps, Graphics,
Equations, Units, Graphs, Memory, Screen, Mouse, Keyword, and Hardware
are just a few with restrictions that have throttled down computer
Impossible to access information... how stupid, lossy Images how
stupid..., no access to the hardware how stupid..., limited character
representations how stupid..., fixed bit size numbers how stupid...,
fuzzy dates (utc) how stupid..., limited dates (expires in 2034)
how stupid..., 4Gig limit how stupid, no case insensitive text compare
how stupid..., time only to milliseconds how stupid..., no units how
stupid..., no database how stupid..., fix these and 98% of the human
effort in software development goes away.
I remember when
transparency could set in ms-Paint. When we could insert a form-feed
into text files to page break printouts. When we could read the mouse.
When we could write our own editors. When we could trust numbers, When
we thought someone would move forward. But we are moving backwards for
the sake of 4 lines of code someone found a profit in.
"programmers" are having a lot of fun, but it is not fun I'm after. Quit
wasting time on the trivial, student's research wasting 80% of their
effort on software. Teacher, doctors, engineers, I don't care about
lawyers, companies, wildlife, crops, the environment all could be
The dark ages were a direct result of the church's control
on society. So is it presumptuous of me to think that control of
information is any less devastating. I remember the first attempts at
the PC, (before the Apple) I was all excited about the Altair and
Heathkit, and other attempts at motherboards in kit form. I thought it
would change the world... I am not sure any of my initial excitement has
been satisfied. My real desire was for more direct access to hardware
during the time when I was programming the Honeywell 6600. Time has gone
by and now I have even less access to hardware and information than I
had in 1976 on the Honeywell.