Modula-2 Reloaded

A Modern Typesafe & Literate Programming Notation

Site Menu

Project

Specification

Implementation

Recommendations

Reference

Needs Updating

Work in Progress

Wastebasket

Wiki Manual

edit SideBar

Design Principles

Spec.DesignPrinciples History

Hide minor edits - Show changes to output

2015-09-21 17:32 by trijezdci -
Changed line 19 from:
All built-in facilities must be type safe by default. Where type safety needs to be broken, it may be facilitated through explicit unsafe features. These must be marked unsafe and enabled by import from pseudo-module @@UNSAFE@@ or optional pseudo-module @@ASSEMBLER@@. No other source of unsafe facilities shall be permitted.
to:
All built-in facilities must be type safe by default. Where type safety needs to be broken, it may be facilitated through explicit unsafe features. These must be marked unsafe and enabled by import from pseudo-module @@UNSAFE@@ or optional pseudo-module @@ASSEMBLER@@. No other source of unsafe facilities shall be permitted.
2015-09-21 17:32 by trijezdci -
Changed line 19 from:
All built-in facilities must be type safe by default. Where type safety needs to be broken, it may be facilitated through explicit unsafe features. These must be marked unsafe and enabled by import from pseudo-module UNSAFE or optional pseudo-module ASSEMBLER. No other source of unsafe facilities shall be permitted.
to:
All built-in facilities must be type safe by default. Where type safety needs to be broken, it may be facilitated through explicit unsafe features. These must be marked unsafe and enabled by import from pseudo-module @@UNSAFE@@ or optional pseudo-module @@ASSEMBLER@@. No other source of unsafe facilities shall be permitted.
2015-09-20 12:00 by trijezdci -
Changed line 27 from:
When considering the addition of a feature, we looked at in the context of the weight of the entirety of features, not in isolation. We observed an imaginary baggage allowance, whereby items had to be removed to make space for others to be added. Our aim was to avoid feature creep.
to:
When considering the addition of a feature, we looked at it in the context of the weight of the entirety of features, not in isolation. We observed an imaginary baggage allowance, whereby items had to be removed to make space for others to be added. Our aim was to avoid feature creep.
2015-09-18 08:57 by trijezdci -
Changed line 19 from:
All built-in facilities must be type safe by default. Where type safety needs to be broken, it may be facilitated through explicit unsafe features. These must be marked unsafe and enabled by import from pseudo-modules UNSAFE or optional pseudo-module ASSEMBLER. No other source of unsafe facilities shall be permitted.
to:
All built-in facilities must be type safe by default. Where type safety needs to be broken, it may be facilitated through explicit unsafe features. These must be marked unsafe and enabled by import from pseudo-module UNSAFE or optional pseudo-module ASSEMBLER. No other source of unsafe facilities shall be permitted.
2015-09-18 08:56 by trijezdci -
Changed line 16 from:
We followed the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.”'' but we did not elevate simplicity to the status of dogma. Simplicity is a means to an end, not an end of itself. The end must be one of the primary design goals. Simplicity may thus sometimes be sacrificed for correctness, reliability and safety. '''Orthogonality''' of syntax is desirable when possible, but not at the expense of simplicity and clarity.
to:
We followed the '''Einsteinian simplicity''' principle ''“as simple as possible, not any simpler.”'' but we did not elevate simplicity to the status of dogma. Simplicity is a means to an end, not an end of itself. The end must be one of the primary design goals. Simplicity may thus sometimes be sacrificed for correctness, reliability and safety. '''Orthogonality''' of syntax is desirable when possible, but not at the expense of simplicity and clarity.
2015-09-18 08:55 by trijezdci -
Changed line 16 from:
We followed the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.”'' but we did not elevate simplicity to the status of dogma. Simplicity is a means to an end, not an end of itself. The end must be one of the primary design goals. Simplicity may therefore sometimes be sacrificed for correctness, reliability and safety. '''Orthogonality''' of syntax is desirable when possible, but not at the expense of simplicity and clarity.
to:
We followed the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.”'' but we did not elevate simplicity to the status of dogma. Simplicity is a means to an end, not an end of itself. The end must be one of the primary design goals. Simplicity may thus sometimes be sacrificed for correctness, reliability and safety. '''Orthogonality''' of syntax is desirable when possible, but not at the expense of simplicity and clarity.
2015-09-18 08:55 by trijezdci -
Changed line 16 from:
We followed the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.”'' but we did not elevate simplicity to the status of dogma. Simplicity is a means to an end, not an end of itself. The end must be one of the primary design goals. Simplicity may at times be sacrificed for correctness, reliability and safety. '''Orthogonality''' of syntax is desirable when possible, but not at the expense of simplicity and clarity.
to:
We followed the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.”'' but we did not elevate simplicity to the status of dogma. Simplicity is a means to an end, not an end of itself. The end must be one of the primary design goals. Simplicity may therefore sometimes be sacrificed for correctness, reliability and safety. '''Orthogonality''' of syntax is desirable when possible, but not at the expense of simplicity and clarity.
2015-09-18 08:54 by trijezdci -
Changed line 10 from:
* Suitability for mathematics and engineering.
to:
* Suitability for mathematics, engineering and mission critical systems.
2015-09-18 08:52 by trijezdci -
Changed line 4 from:
* '''Prohibition of magic''', intuitive '''explicit syntax''' instead of magic implicit syntax.
to:
* '''Prohibition of magic''' — Intuitive '''explicit syntax''' instead of magic implicit syntax.
2015-09-18 08:51 by trijezdci -
Changed line 2 from:
* '''Modern''' — meet today’s programming requirements.
to:
* '''Modern''' — Meet today’s programming requirements.
2015-09-18 08:51 by trijezdci -
Changed line 2 from:
* '''Modern''' -- meet today’s programming requirements.
to:
* '''Modern''' — meet today’s programming requirements.
2015-09-18 08:51 by trijezdci -
Changed line 2 from:
* '''Modern''', meet today’s programming requirements.
to:
* '''Modern''' -- meet today’s programming requirements.
2015-09-18 08:50 by trijezdci -
Changed line 3 from:
* '''Correctness''', '''Reliability''' and '''Safety''' may not be sacrificed.
to:
* '''Correctness''', '''reliability''' and '''safety''' may not be sacrificed.
2015-09-18 08:50 by trijezdci -
Changed line 9 from:
* Suitability as a '''safe''' alternative to C in systems development.
to:
* Suitability as a '''safe alternative to C''' in systems development.
2015-09-18 08:49 by trijezdci -
Changed lines 1-10 from:
!!!Primary Design Goals
* '''Revision''' of the language in the general context of today’s programming requirements.
* Following the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.''
* Suitability as a '''safe''' alternative to C in systems implementation and systems programming.
* '''Clarity''' and '''maintainability''' of source code, specifically for readers other than the author.
* '''No magic''', intuitive '''explicit syntax''' is always preferable to magic implicit syntax
.
* '''Orthogonality''' of syntax where possible, but not at the expense of simplicity and clarity.
* Non-interference of backwards compatibility concerns with any of the above principles.

!!!Feature Omission Guidelines
to:
!!! Primary Design Goals
* '''Modern''', meet today’s programming requirements.
* '''Correctness''', '''Reliability''' and '''Safety''' may not be sacrificed
.
* '''Prohibition of magic''', intuitive '''explicit syntax''' instead of magic implicit syntax.
*
'''Clarity''' and '''maintainability''' of source code through '''literate syntax''', especially for readers other than the author.
* Obsolescence when necessary, non-interference of backwards compatibility concerns with any of the above principles
.

!!! Targeted Areas of Application
* Suitability as a '''safe''' alternative to C in systems development
.
* Suitability for mathematics and engineering.
* Suitability as a core language for domain specific supersets
.
* Suitability as a general purpose application development language.
* Suitability as a teaching language to teach engineering principles and best practises.

!!! Simplicity Guidelines
We followed the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.”'' but we did not elevate simplicity to the status of dogma. Simplicity is a means to an end, not an end of itself. The end must be one of the primary design goals. Simplicity may at times be sacrificed for correctness, reliability and safety. '''Orthogonality''' of syntax is desirable when possible, but not at the expense of simplicity and clarity.

!!! Safety Guidelines
All built-in facilities must be type safe by default. Where type safety needs to be broken, it may be facilitated through explicit unsafe features. These must be marked unsafe and enabled by import from pseudo-modules UNSAFE or optional pseudo-module ASSEMBLER. No other source of unsafe facilities shall be permitted.

!!!
Feature Omission Guidelines
Changed line 24 from:
!!!Feature Addition Guidelines
to:
!!! Feature Addition Guidelines
Changed lines 29-30 from:
!!!Backwards Compatibility Guidelines
If a certain practise is outdated, such as the use of octal numerals, then a feature that has no other use than to support that practise can no longer be justified and consequently we removed it without any regard for backwards compatibility of source code. Instead, a source to source translator tool should be seen as a suitable solution to backwards compatibility issues that arise from removal of outdated features.
to:
!!! Backwards Compatibility Guidelines
If a certain practise is outdated, such as the use of octal numerals, then a feature that has no other use than to support that practise can no longer be justified and consequently we removed it without any regard for backwards compatibility of source code. Instead, a source to source translator tool should be seen as a suitable solution to backwards compatibility issues that arise from removal of outdated features.
2015-09-18 08:04 by trijezdci -
Changed line 6 from:
* '''No Magic''', intuitive '''explicit syntax''' is always preferable to magic implicit syntax.
to:
* '''No magic''', intuitive '''explicit syntax''' is always preferable to magic implicit syntax.
2015-09-18 08:04 by trijezdci -
Added lines 1-19:
!!!Primary Design Goals
* '''Revision''' of the language in the general context of today’s programming requirements.
* Following the Einsteinian '''simplicity''' principle ''“as simple as possible, not any simpler.”''
* Suitability as a '''safe''' alternative to C in systems implementation and systems programming.
* '''Clarity''' and '''maintainability''' of source code, specifically for readers other than the author.
* '''No Magic''', intuitive '''explicit syntax''' is always preferable to magic implicit syntax.
* '''Orthogonality''' of syntax where possible, but not at the expense of simplicity and clarity.
* Non-interference of backwards compatibility concerns with any of the above principles.

!!!Feature Omission Guidelines
In the context of modern programming practise, if we found the omission of a feature to be reasonable and justified then we considered its removal. Conversely, if we found its omission to to be unreasonable and unjustified then we rejected its removal. We aimed to avoid oversimplification.

!!!Feature Addition Guidelines
We considered a new feature for adoption if a clear need could be demonstrated and if we found it to be reasonable and consistent with the overall design philosophy. We put a particular emphasis on suitability for systems implementation and systems programming as well as interfacing to C. We aimed for the ability to replace C as a systems implementation language.

When considering the addition of a feature, we looked at in the context of the weight of the entirety of features, not in isolation. We observed an imaginary baggage allowance, whereby items had to be removed to make space for others to be added. Our aim was to avoid feature creep.

!!!Backwards Compatibility Guidelines
If a certain practise is outdated, such as the use of octal numerals, then a feature that has no other use than to support that practise can no longer be justified and consequently we removed it without any regard for backwards compatibility of source code. Instead, a source to source translator tool should be seen as a suitable solution to backwards compatibility issues that arise from removal of outdated features.