"You like tomato and I like tomahto" - Let's call the whole
We will never agree on an individual's approach to names, design, or general
concepts. It is like trying to cook in someone else's kitchen. Actually
it's like trying to cook in millions of different kitchens all at the same time.
We invented language to communicate. In software development we do not
communicate... We are not developing software.. we waste time on terminology...
the wasted billions of hours looking for the forks... we known what a fork is,
we just do not know where someone else put it. Turn this around... have
the system GIVE me the "fork". "Wife bring me a beer", when that
day comes I will be in heaven.
First determine the purpose of a natural language. Is there a reason, and if there is, then we must first determine what that is.
We all assume that a natural language will make program development easier.
Wishful thinking and assumptions is not the approach needed. We must first start
with an actual purpose and have realistic benefits when designing software.
The first objective that I want to solve, is the uncertainty of purpose of
the names used by every programmer. I send more time trying to determine the
names of commonly known attributes, and how to alter them. Here I will use
natural language to provide common knowledge to programming. Very specifically
counter, indexes, and offset. Every program as thousands of uses for counters,
yet we spend more time in searching for the names and how to obtain and to alter
them, than we do in actual programming. So we start with "the number of"
what, "bytes", "rows", "columns", lines", "four byte
integers", "two byte counting numbers",.... Many of these
values can be determined by the compiler, those that cannot ,a request for
action will be sent to the target in a way that the request might be answered.
The point here is to not require the developer to know the internals and actual
names of values, but rather the common name. This separates the language from
The job is to not complicate the language so as to make it useless. No
matter what the application is, there should be common phrases that we could use that
will improve communication. Also are there common phrases that could be
implemented without any effort on the part of the developer?
The articles of speech should be limited to the most common uses.
- A = the first child of B
- if (A is a number) ...
- B = A as a byte array
- if (A has children)
- set A as a shared file
The next area for natural language are common verbs. These should be
designed to be as obvious as possible.
- Print A
- Show me the source code of A
- B = Copy of A
- B = View of A
- Tell me about A
- Delete A
- Remove A
- Download B
- Import A as a table
- Export A as a PDF
Words that we already know:
File, Folder, Compiler, Assembler, Executable, Disk Drive,
Thumb Drive, Screen, Monitor, Memory, CPU, Process, Application,
Number, Character, Text, Date, Time, Duration, Year, Email, Person, Address,
Company, Accounting, Supplies, Conference Room, Car, Bus, Travel, Hotel,
Index, Offset, Height, Width, Line, Point, Polygon, Matrix, Office, Lights,
Mouse, Keyboard, Sort, Select, Print, Open, Run, Close, Download, Upload,
Units, Measure, Speed, Child, Parent, Sibling, Route, Invoice, Purchase
Order, Table, Row, Column, Name, Identifier, Client, Server, Copy, Delete,
Change, Move, Replace, Find, Search, Backup, Restore, Archive, Lines,
Format, Structure, Student, Teacher, Man, Woman, Dog, Cat, First,
Give, Day, Week, Month, New, Public, Problem, Big, Small, And, Or, Anyone,
Back ,Forward, Bank, Best, Blue, Red, Build, Buy, Camera, Capital, Card,
City, State, Cold, College, Style, Create, Data, Direction, Doctor, Door,
Draw, Dawn, Event, Example, Expert, Hire, Fire, Factor, Average, Forget,
Forward, Give, Glass, Group, Owner, Heat, High, Hold, Hot, Image, Wife,
Husband, Interest, Interview, Item, Language, Large, Learn, Level, List,
Little, Local, Long, Manage, Medical, Message, Middle, Might, Military,
Music, Myself, None, Network, Drag, Occur, Old, Once, Option, Pay, Perform,
Plant, Play, Population, Power, Project, Quality, Race, Rate, Read, Remain,
Same, School, Science, Season, Sea, Sex, Single, Skin, Smile, Social, Speak,
Start, Step, Stop, Store, Story, Table, Today, Training, True, Up, Voice,
Wait, Wall, Want, When, Wide, Where, Young, You, Write...
Words that need no documentation. If you then add all the
words known to each disciple;
Doctor, Nurse, Medicine, Needle, Therapy, Prescription,
Hospital, Scrubs, Antigen, Echocardiography, Enzyme, Patient, Discharge,
Tissue, X-ray, MRI, Lungs,Monitor, Inject, Watch, Oncology, GI, Operation,
Plumber, Solder, Weld, Joint, PVC, Copper, Case Iron, Toilet, Install, Rough
in, Finish, Hang, Street 90, Cap, Inspection, Septic, Men's, Water,
Gas, Return, Heater, Sink,...
The task of software development becomes very small.