Folds / osmosian

Plain English Programming: the CAL compiler, editor, writer, and desktop.
27 stars 7 forks source link

Initial Commit comments are rife with inaccuracies and misrepresentations #1

Open GerryRzeppa opened 10 years ago

GerryRzeppa commented 10 years ago

The "Initial Commit" comments are rife with inaccuracies and misrepresentations of the project and need to be corrected. I couldn't find any way to edit those comments, however.

Incidently, it's not clear to me why the editor I'm using to post this issue (1) isn't wysiwyg but requires "GitHub Flavored Markdown", and (2) is different from the GitHub Wiki editor.

GerryRzeppa commented 10 years ago

ORIGINAL: This version includes all of the core functionality of the Win32 compiler / editor / finder written by the Osmosian Order of Plain English Programmers, as of March 5, 2014. It also includes the lexicon and the source code of the instructions. It does not include the sample project (Cal Monet).

CORRECTED: This version is a copy of the official version which can be found at www.osmosian.com/cal-3040.zip. It is a complete development environment for Plain English programming including an iconoclastic interface, a simplified file manager, an elegant text editor, a hexadecimal dumper, a native-code-generating compiler/linker, and a wysiwyg page layout facility for documentation. A 65,000 word lexicon is provided for spell-checking; the lexicon is not used by the compiler since the vocabulary and much of the grammar of a Plain English program are defined by the programmer. Documentation is included in both native and PDF versions. (PDFs can be generated directly from within the integrated development environment.) A sample program is described in the included instructions. All of this is already in the documentation. Stop reading this and get the facts straight from the source: www.osmosian.com/instructions.pdf.

ORIGINAL: Version 3040 has the following features and limitations:

CORRECTED: Version 3040 runs on Windows, and has the exact same look, feel, and sound on all versions, regardless of a particular user's local configuration. This, alone, is a remarkable accomplishment, and much appreciated by programmers and users who don't like Microsoft telling them when to upgrade or how their working applications should be forced to change.

ORIGINAL: The programming paradigm is "speak to a young child in plain English":

CORRECTED: The programming paradigm is "code what you're thinking; say it like you would say it to another person; write pseudo-code that actually runs, and skip the translation to an artificial syntax." All statements in the language are English sentences; local vocabularies (defined by the programmer), grammatical variations in dialect (interchangeability of prepositions, for example), and even "sub-standard" and vulgar English expressions (like "ain't" and "WTF") are supported.

ORIGINAL: Common impressions of the language include:

CORRECTED: The language reminds some people of COBOL; but the language resembles COBOL only as far as COBOL resembles English -- it is both more consistent and more flexible than COBOL.

ORIGINAL: - It is designed to be Lisp-like, but without the parentheses.

CORRECTED: The language is nothing like LISP, where the most obvious feature is LISP's unreadability by humans; Plain English, on the other hand, is as easy to read as any thing else written in English.

ORIGINAL: Typical data structures are int32, strings, and doubly linked lists.

CORRECTED: The language is Turing-complete. A minimum of essential data types and structures are built-in to the compiler; all other imaginable types and structures are defined and/or can be defined in libraries.

ORIGINAL: The system is designed as a top-to-bottom immersive environment

CORRECTED: The system was designed to be iconoclastic: to make the programmer question practically every pre-conceived notion a modern practitioner might have.

ORIGINAL: and designed to encourage customization and hacking, similar to early 1980s Lisp Machines and Smalltalk machines.

CORRECTED: The system was designed to promote a different way of thinking about programming, design, and application development, but is nothing like 1980's LISP and Smalltalk machines.

ORIGINAL: - Object oriented programming is theoretically possible.

CORRECTED: Object oriented programming is explicitly and roundly rejected due to fundamental and ultimately fatal flaws in the paradigm.

ORIGINAL: Language features include mix-ins,

CORRECTION: I have no idea what a "mix-in" is.

ORIGINAL: ...flexible procedure naming, records, pointers, and vtables.

CORRECTED: [delete vtables]

ORIGINAL: There are no namespaces, no object hierarchies, and no polymorphism.

CORRECTED: There are no special namespaces, no object hierarchies, and no polymorphism because such "features" are unnecessary. The program itself is offered as proof.

ORIGINAL: The user interface is very rough:

CORRECTION: The user interface has an elegant and Spartan simplicity about it.

ORIGINAL: - The user interface has two choices: minimized or full screen. It uses Windows' restore mode, but at the full screen size. There are not features for changing the main windows size or location.

CORRECTED: The user interface occupies the entire screen; it is expected that applications developed with the system will also occupy the entire screen, though with significantly different interfaces suitable to the application area (point-of-sale, video-rental, medical instrumentation, games, etc). At any time, the programmer is either "in the Plain English world" (full screen) or "in the outside world" (minimized or shut down). Compromise between the two is discouraged since, as Osmosians say, "Compromise is when nobody gets what he wants."

ORIGINAL - It defaults to a custom font (included in the software).

CORRECTED: It defaults to a custom, proportionally-spaced font suitable for writing sentences in English. The font is automatically installed when the program starts up, and is removed when the program shuts down; no user intervention is required. The font is the same on all versions of Windows, and is also used in the documentation.

ORIGINAL: The font is fun, but harder to read than most text editors' fonts.

CORRECTION: The font is friendly for young children just learning to program, yet crisp and clear and horizontally narrow enough for professionals.

ORIGINAL: The user interface includes alphabetical menus, not categorized menus.

CORRECTED: The user interface boasts alphabetical menus: no more wondering where that "Run" command is! It's under "R". Like a printed book's index, these menus are the go-to place for finding things (traditional menus are more like a printed book's table of contents, which is not good for finding something whose name you know). The menus include synonyms for commands that are typically known by more than one name.

ORIGINAL - The menus' unused letters of the alphabet are not grayed out.

CORRECTED: Menus with no commands are not "grayed out" to insure that the whole menu bar will appear as a single visual element on the interface; it is also assumed that most (if not all) of the letters will eventually have commands under them.

ORIGINAL: - It has a tabbed interface, but it does not hide unused tabs.

CORRECTED: Ten work areas are provided with convenient tabs at the bottom of the screen; tabs can be moved left and right simply by dragging with the mouse. The current work area occupies the full screen (minus the menu bar and the tabs themselves). There is no need for "sizing areas" and "grow boxes" and "shrink" boxes. Scroll bars have also been eliminated; an "incremental find" function coupled with right-mouse pushing allows for consistent and convenient access to any portion of a list, page, or other file.

ORIGINAL: - Windows and buttons are either simple rectangles, or "roundy rectangles", without any up-versus-down shading.

CORRECTED: The interface is devoid of garish and unnecessary 3D embellishments. Except for error messages, which appear in red, the interface is entirely grayscale -- this allows the user to focus on his data, while the interface quickly fades into the background where it belongs.

ORIGINAL: - It does not distinguish between the Ctrl- and Alt- keys.

CORRECTION: The interface treats the CTRL and ALT keys as synonymous so shortcuts can be keyed with the little finger or the thumb. The exception is ALT-TAB which is the standard Windows' shortcut for switching applications.

ORIGINAL: The system is not modular:

CORRECTED: The system is complete and stand-alone. No other software (except for the operating system, of course) and no other documentation is needed for productive use.

ORIGINAL: - It has 23,000 lines of code (including white space), in just 6 files.

CORRECTED: It consists of about 23,000 lines of Plain English code in just 6 files, which is remarkable when you consider that the system includes a unique desktop, an effective file manager, an efficient text editor, a handy hexadecimal dumper, a native-code-generating compiler with smart linker, and a full-function wysiwyg page layout facility for documentation. It is written entirely in Plain English and can re-compile itself in less than three seconds on a bottom-of-the-line machine from Walmart.

ORIGINAL: - Source code files are defined to be any text files (that do not have file extensions) in the compiler's folder.

CORRECTED: Each Plain English program is stored entirely in a single folder; source files are text files in that folder without extensions; the compiler ignores all other files in the folder. The resulting executable is stored in the same folder and is given the same name as the folder with a ".exe" extension. Executables are stand-alone and can be moved and renamed at will. Other compiler-generated files (such as listings, etc) are also stored in the project folder. No special "project management" facility or "make files" are needed. All of this is already in the documentation. Stop reading and download www.osmosian.com/instructions.pdf.

ORIGINAL: - Within each file, most code blocks are sorted alphabetically (ignoring initial keywords). - There are no namespaces.

CORRECTED: The types, variables, and routines in a file can be defined in any order. Names are not case-sensitive. All of this is already in the documentation. Stop reading and download www.osmosian.com/instructions.pdf.

ORIGINAL: The system does not use the Windows common dialog box, so:

CORRECTED: The system provides the user with a single file-system interface (unlike Windows, where the "explorer" and the "open dialog box" and the "save dialog box" and the "save as dialog box" are all different from each other.

ORIGINAL: - The system only uses the default printer.

CORRECTED: The system is wysiwyg and uses the default printer for hardcopy output. This greatly simplifies printing, the typical user having only to hit CTRL-P (or select "Print..." from the "P" menu), enter the number of copies when asked, and press ENTER (or click the "M'kay" button with the mouse).

ORIGINAL: - The user interface does not provide a way to change the font.

CORRECTED: The Osmosian font is part of the look and feel of the Plain English world.

ORIGINAL: The system has very limited debugging tools:

CORRECTED: The system has all the debugging tools any competent programmer should need.

ORIGINAL: - It is a compiled language.

CORRECTED: Debuggers are for sloppy programmers.

ORIGINAL:

CORRECTED: The compiler checks for a wide variety of both syntactic and semantic errors at compile time. A run-time check made for memory leaks is performed at the end of each program execution.

ORIGINAL:

CORRECTED: True; nor are they needed. The thing was coded in just six months and with the exception of about a dozen inconsequential errors, has proven itself virtually bug-free over eight years of productive use.

ORIGINAL: - The standard types each have a DEBUG feature, allowing popping up their values at runtime.

CORRECTED: The system has all you need to debug a program: a buzzer and two ways to display data values (pop-up and console).

ORIGINAL: - It includes an extensive demo: the instructions for writing the sample project (Cal Monet).

CORRECTED: no change

ORIGINAL: Technical themes:

CORRECTED: Variables are named as things in the real world are typically named: an article, one or more optional adjectives, and a noun: "the table", for example, or "the red box". Note that spaces are allowed in names. This method of naming variables is a remarkable advance in the science of programming languages (which have traditionally required very artificial and unnatural naming conventions).

ORIGINAL: - Variables are declared implicitly, using indefinite articles.

CORRECTED: Local variables are declared implicitly, using indefinite articles. Subsequent references use the definite article. For example, "Add 1 to a counter. If the counter is 10, exit." All of this is already in the documentation. Stop reading and download www.osmosian.com/instructions.pdf.

ORIGINAL: - The most commonly used classes are strings and linked lists.

CORRECTED: There are no "classes" in Plain English.

ORIGINAL: - It uses 32-bit signed integers as the basis for all calculations and numeric types. The numeric types include booleans, 32-bit integers

CORRECTION: "Booleans" are not a numeric type.

ORIGINAL: ...ratios, and mixed (improper) fractions.

CORRECTED: Since the system attempts to communicate with the programmer in ways average humans communicate, a variety of functions have been provided for handling fractions. (Consider, for example, how nobody ever answers, "Do you want a piece of cake?" with a statement like, "I'm really not that hungry; how about 0.5 of a piece?", but rather, "...how about half a piece?".) Units of measure are automatically converted, as necessary: for example, the numeric quantities in both "Draw a circle 12 inches in diameter" and "Draw a circle 1 foot in diameter" will be automatically converted to the appropriate number of twips (the internal measurement used for all graphic operations).

ORIGINAL: - The classes are statically-typed structs called "records".

CORRECTED: There are no classes in Plain English.

ORIGINAL: - It dynamically chooses mixed-in procedures based on the best fit between the caller's syntax and the procedures' declarations.

CORRECTED: Routines are matched to routine calls (imperative sentences) through a remarkably effective yet "sloppy" parsing that looks for a best fit, taking into account the number of parameters, the types of the parameters, and the words surrounding the parameters.

ORIGINAL: Memory management is a compromise between manual and automatic:

CORRECTED: Memory for basic types, including strings of any length, is automatically managed.

ORIGINAL: - Dynamically created structures (such as linked lists) need to be explicitly destroyed.

CORRECTED: Dynamically created structures (such as linked lists) need to be explicitly destroyed, but only at the uppermost level -- the compiler generates the necessary code for cleaning up the lower levels. Pointers in complex structures marked "(reference") are ignored in such clean-up operations.

ORIGINAL: - At the end of each program run, the program reports the amount of leaked heap space. This is meant to encourage debugging memory leaks promptly.

CORRECTED: As above; but don't all competent programmers debug memory leaks promptly? In any case, the next version of our compiler will probably have automatic memory management for everything.

ZiCog commented 8 years ago

The whole idea of a source code management system is to maintain a history of changes in a project over time.

If your initial commit is wrong just push the corrections.