🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #6783

Q Design Goals

#6783
From: brnstnd
Date: Thu, 22 Feb 1990 06:42
63 lines
3380 bytes
The working name for this language is hereby Q.

Here's the start of a list of Q design goals, in no particular order.
If I'm going to put my foot down on anything, I'll start with these.
Follow up in this thread only to comment on design issues. If you want
to criticize on religious grounds, move to alt.religion.computers: we
want to design a language, not justify its existence.

Portability: It is easy to write Q programs that run on many different
platforms with few changes.

Efficiency: Q compiles naturally to efficient code. Q can do most of
what the computer can with a minimum of fuss. Efficiency takes back seat
to portability by default; only in a small and thoroughly considered set
of cases is portability sacrificed to efficiency.

Compilability: Q is easy to compile and optimize. There are various ways
(perhaps, e.g., assertions, antialiasing) for the programmer to both aid
coding and maintenance and to help the compiler.

Interoperability: If the OS supports it, Q can be linked with existing
code from similar languages, without any special effort. (This is very
important under UNIX.)

Readability: Any code can be written without much fuss in a form that
the average programmer can read. It takes at least a bit of effort to
write obfuscated code.

Flexibility: Q works for a wide variety of applications. (Ada's mistake
is achieving flexibility at the expense of simplicity, cleanliness,
efficiency, etc.)

Simplicity: Whenever two constructions are merely syntactic manglings of
each other, only the simpler one is part of the basic Q language, except
in particular well-discussed cases where both constructions are natural.
This implies a (smart) preprocessor. It's also the most important way in
which Ada fails.

Reliability: This includes a lot of different items.

Cleanliness: Q isn't just a compendium of hacks. It's a sensible,
straightforward language. Special cases are rare.

Scale: Q supports the features needed for large programs: some form of 
modules, logical and physical information hiding and data abstraction,
and so on. (One of C's major faults is that physical information hiding
is the only straightforward way to achieve logical information hiding.
``Straightforward'' basically means without defeating type checking.)

Extensibility: Compilers can add any kind of feature (new types, new
operations, new control sequences, whatever) to Q without kludging too
hard. (Kludging is a verb? Oh, well.) In other words, Q recognizes the
existence of extensions and provides standard ways to introduce them.

Implementation Quality: Q compilers must do more than just compiling.
For example, a compiler that provides extensions must have a way to turn
them off. The particular quality-of-implementation requirements or
suggestions aren't as important as the idea that they're part of a
language.

Likability: Q is easy to like.

---Dan
Technical Details
Message-ID: <24995:06:42:28@stealth.acf.nyu.edu>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!rpi!uupsi!cmcl2!stealth.acf.nyu.edu!brnstnd
References: <22569:05:10:24@stealth.acf.nyu.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!rpi!uupsi!cmcl2!stealth.acf.nyu.edu!brnstnd
From: brnstnd@stealth.acf.nyu.edu
Newsgroups: comp.lang.misc
Subject: Q Design Goals
Message-ID: <24995:06:42:28@stealth.acf.nyu.edu>
Date: 22 Feb 90 06:42:28 GMT
References: <22569:05:10:24@stealth.acf.nyu.edu>
Reply-To: brnstnd@stealth.acf.nyu.edu (Dan Bernstein)
Organization: IR
Lines: 63