To Frank H. and all Pascal re-writers:
One of the main, if not the main, point of keeping Pascal updated is to extend its usefulness.
I want to address one area: scientific programming. It is what I do; I have done it in Pascal for vary many years, and continue doing so in Delphi. I even wrote a book, "Scientific Pascal", in 2 editions.
So here is my wish list:
Add types
Complex Rational
coded in assembler.
All the standard operations and functions should apply to these types:
Complex: +, -, *, /, ^ or ** Sqr, Sqrt, Sin, Cos, ..., Exp Ln
Rational: +, -, *, /, Sqr, LowestTerms,...
Even 40-year old FORTRAN has complex types. Obviously Complex is needed for numerical analysis, differential equations, electrical engineering, etc.
A rational type would be very useful for number theory.
Add higher precision floats (20 bytes, 24 bytes, user-chosen precision) again with all the standard operations and functions implemented in assembler.
Borland introduced type Extended (10 byte floats), possibly in Turbo Pascal 4 or 5. This was an enormous improvement over the Real type, (4 byte), and made full use of the 80x87 mathematical coprocessor.
Extended has remained the highest precision f.p. type in Borland Pascal and probably all other Pascals for 15-20 years, while computer speed and memory have improved by orders of magnitude. It is surely time for more accurate real types, coded in assembler.
The current real types (in Delphi) are Single (4 bytes), Real48 (6 bytes), Double (8 bytes), Extended (10 bytes), [and Comp and Currency].
Synonyms are in order,skipping the factor of 8: Real4, Real6, Real8, Real10, etc. for the hopefully new ones.
It is also time for more accurate integers. Borland introduced Int64 10-20 years ago, and it has remained the standard highest accuracy integer type.
Delphi wisely added the names (and unsigned types)
Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64.
(My preference again would be to drop the factor 8:
Int1, Int2, Int4, Int8, UInt1, UInt2, UInt4, UInt8.)
I would love to see Int16, Int32, Int64 and Int128, and their unsigned counterparts.
Add exponentiation, with the symbol ^ or ** overloaded for the special cases of the exponent: positive or negative integer [ (-0.02)^(-3) = -1.25E5 ], rational with odd denominator [ (-8)^(5/3) = -32 ]. FORTRAN and even BASIC have had exponentiation forever.
Allow genuine operator overloading, such as
operator "+" (const X, Y: MyType): MyType;
operator "*" (const X: Integer; const Y: IntegerVector): IntegerVector;
Delphi has made a mess of this so far, with overloading only possible with class functions and records. GNU Pascal and Free Pascal do much better.
It should be possible to overload all the standard operators:
+ - * / ^ = <> <= >= > <
There should be an abstract classes TRing which can be specialized to TField, etc.
TRing should have a Ring Element that can be specialized.
So one could define TMatrix, with elements in TRing, and define matrix multiplication A*B and Det (determinant) without specifying the elements in advance, and specialize them to any ring, such as the rings of rationals, of polynomials with complex coefficients, etc.
This is what OOP, polymorphism, abstraction, inheritance should be about.
Add Print Methods for TMemo, TStringGrid, TImage, and maybe a few other components.
Obviously if I compute data and store it in a table or memo, or create a graph, I want to print it. Currently this requires searching the WWW for someone's code. One of the advantages of unicode (see below): one can mix alphabets in tables. For instance a table of number theoretic functions will have Greek headings: Omega, Phi, omega, etc.
Any modern Pascal should use unicode, with all character and string procedures modified accordingly. This is a big advance Delphi started a year or so ago
Add some more fonts that include Greek letters and many math symbols, and which can be easily added to code (which should be WYSIWYG). Fonts for scientific use should be non-justified, so that "9", "1" and "." are the same width in displays of numbers. As far as I can tell, Courier New (OEM CharSet) is the only satisfactory font at present.
Harley Flanders