"index" is not an "index":
So for 40 years, what I thought was
an index, is really an offset. This concept of an index "1" or "0" is
not a fair battle if the fundamental concept of "index" is wrong.
The "C" programming language made so many false paths for lemmings to
follow, that the dust from the herd has blinded us to the true nature
of the direction that I was following. The concept of an "Index" is just
one of the many false trails that we all follow.
What has been misused by software developers as an "index" of an
array, is really an offset from the first value in the array, and since
most initial uses of an array was for a byte array (the character
representation) offset became synonymous with index just because it had
similar uses in this byte context at the assembler level. So is index an
offset? no, and therefore is far better served starting at "one".
The assemblers and "C" language should not dictate the conventions of
software development when they no longer apply. With new concepts in
compilers, this concept of "offset" is wrong and hinders and slows down
Array index of "one" with more python like list loops which perform self
indexing looping capabilities.
As a developer the last thing I want to do is change anything. Change
just means more crap... but in this case I will risk it. I don't
want to see the next hundred years of billions of man-hours wasted on
"is it an index or is it an offset"?, when it should
always be clear the the "first element" has an index of 1 and an offset of "0". This
should give you a clear understanding just from the word "first": it is
not "0" but "1". The words "Index" and "offset" are not synonymous and
therefore the computer language should made a clear distinction and not
have the human alter his vocabulary to injected false concepts.
"It is not that I'm so smart. But I stay with the questions much
longer." ― Albert Einstein
"We learn from failure, not from success!" -- Dracula
"Spoon feeding in the long run teaches us nothing but the shape of
the spoon." ― E. M. Forster
"In youth we learn; in age we understand." -- Marie von
"Judge a man by his questions rather than his answers." --
"I alone cannot change the world, but I can cast a stone
across the waters to create many ripples." -- Mother Teresa
There is not much to say on this subject. I
looked at the Visual Studio 2017 C# enhancements and was not impressed.
thirty years to decide to make some basic changes to technology without
changing anything. Change for change sake is not an improvement.
PowerShell, I am not sure... new syntax and really-really complex
changes to the basic command level access to dos command with even more
strange syntax into the win32 & .Net worlds of software development.
A "Jane" Personal Server:
I have created what I have always needed, was an always available
active personal server that I can call upon to perform computer tasks.
I can take advantage of the browser technology to display stuff... and
the Jane personal server to store and retrieve any of my personal
information on my local machine. Turning the web browser into a desk-top
application with complete access with full security to my information.
Then installing a local area network Jane server to securely share
internal resources, and finally a www Jane server to securely share what
I deem as public.
The Jane compiler that runs on the browser and as either a local
emulated program on the Jane Personal Server, or as a windows
stand-alone executable. The compiler will have complete access to the
hardware, operating system and application dependent data structures.
The local area network is expanded into a private knowledgeable web
of information that can be accessed and shared of every local computer
and device with absolute security.
When a user logs in to windows/unix/... a service will attach a personal
assistant that is added to the task-bar similar to the "volume control".
She can be called from the browser to store and retrieve information as
if the information is resident to the browser's application. "a
= jane.environment.path" the information is load on demand.
So database access, file i/o device access, fonts, screen resources,
a view of the world accessible as a single executable language, that
requires no documentation for the development of new applications.
Information is always available to every application by a single
namespace from anywhere in the world. All information is always
available and changeable. Hardware terms: such as devices, cpu
registers, memory,... Operating System terms: system parameters, current
User, processes, windows, files, databases, fonts,... Application that
used to take thousands of lines of code, can now be done is a few
Layers upon layers:
The concept of software development has been on the wrong path since
its conception. Each path taken in the early days of computing are still
clearly visible and well traveled.
The beginning... hardware instructions: This path is a concept
of one "one instruction" to "one hardware implementation". A
simple solution that was the obvious choice for the first computer. We
have followed this path at a cost to software development. As hardware
changes and improves the same path has been followed, "lets just add
another instructions to the already bad set of instructions".
Fixing the instruction set would change the foundation of software
Then... Numbers: The really bad concept of numbers. The path of fixed
bit size numbers has devastated software development like no other
single choice in hardware implementation.
Then... characters: A whole maze of paths that all lead to a
bottomless pit of destruction. Basically there is no concept of
"characters" at the hardware level, so nothing really works. The
non-concept of characters cause wasted time in every software
I could continue for every path taken, but I will stop here. With
every slight change to concepts at the hardware level would make vast
improvements to the concept of software development.
Jane LAN server:
A duplicate of the Jane Personal Server that provides local area
access that permits sharing of information among all of the Personal
Servers in a local area network. I have 10 to 20 computers just in my
house that I can securely access as a single machine, independent of
hardware operating system or purpose.
Jane Web Server
Providing public information to the world wide web securely. Receive
information filtered and securely.