The definition:
Modern Pascal describes current Pascal today, such as freepascal, delphi, and other current Pascal compilers. The phrase "Modern Pascal" should be used in place of "object pascal" or "pascal" or "delphi language" due to numerous confusions with the Pascal language and heritage. Modern Pascal describes current Pascal without tying it to objects, structured programming, messages, low level programming, high level programming. Modern Pascal is a hybrid language composed of many programming philosophies and should not be called "functional pascal", "procedural pascal", or "object pascal".
Although over the years Modern Pascal has evolved to contain advanced classes and what they call old borland objects, Modern Pascal has always remained based around hybrids of structures: procedures, functions, function and procedure parameters, methods, classes, etc. Modern Pascal has never tried to be a pure object language like smalltalk or Ruby claims. Modern Pascal and Modern Pascal programmers do not consider "everything an object", nor do we consider "everything a procedure", nor do we consider "everything a function". Modern Pascal is not a "functional language", nor is it a "procedural language", nor is it an "object language". It may be a bit of all of the above, but it doesn't intend to be pure like Haskell and Smalltalk try to be pure functional and object languages respectively.
What is current Pascal?
I wrote this article because I'm tired of hearing numerous (about 20) different terms to describe current Pascal, such as "Object Pascal", "Delphi Language", "Pascal", "Delphi", "objpascal", "Turbo Pascal", "Turbo Pascal With Objects", "objective pascal", "Current Pascal Dialect", "Component Pascal", etc.
Since Modern Pascal is a hybrid language, it shouldn't' be called Object Pascal.
Since Delphi is a well known tool/trademark that was originally designed and is currently designed for mainly Windows GUI programming, current pascal shouldn't be called "Delphi".
Since current Pascal is constantly being updated for modern usage, and since there is more than one current pascal compiler, and since current pascal is not like old standard pascal, current pascal should be called Modern Pascal.
Objection, your honor!
I object, your honor. The defendant is calling the language "Object Pascal" when we have already clarified that the current Pascal is called "Modern Pascal". I object to the objection objected around Pascal!
"Object" is a vague buzzword and should not be used to describe a hybrid programming language that isn't pure object based. For those who truly believe objects are the only way - their languages should be called "Object Languages".
I'm not particularly fond of the idea that "everything is a message" or that "everything is an object" or that "everything is a function" or that "everything is a procedure". Modern Pascal should stay far away from these purisms, and do everything to discourage these purist attitudes. Object Pascal is even more pure sounding than "Object Oriented Pascal" since the phrase "Object Pascal" implies the Pascal language is based around objects, which it isn't.
Delphi Language, Freepascal, Virtual Pascal, Object Pascal, Objective Pascal?
The problem with using the term "Delphi" to describe the Pascal language, is that it is like a trademark.. you can't call current pascal "delphi" nowadays since delphi is owned by someone and it is not the only compiler available.
The problem with using the term "freepascal" to describe a language is similar to the above delphi issue. Freepascal is also like a trademark.. Free Pascal is the name of a compiler, but it isn't the name of the language used by programmers.
Same goes for "Virtual Pascal". Virtual Pascal was a compiler and doesn't describe the pascal language.
You can however call current pascal "Modern Pascal" since it perfectly describes the most current Pascal in a non-biased and general way.
There is no reason to name current pascal "Object Pascal", or "Procedural Pascal", or "Functional Pascal", or "Message Pascal" because that implies that it is focused on one paradigm. It wouldn't be smart to call current pascal FunctionProcedureObjectPascal because that is too long. Modern pascal is shorter and less paradigm focused.
Pascal contains:
- records, variables, types, functions, procedures
- dynamic arrays, fixed arrays, fixed strings, dynamic strings
- structures with methods (procedures and functions) which they call objects and classes, however not pure absolutely message based like an object oriented language is "truly supposed to be" according to the purists
- ansistrings, which are structures and do not have any "messages" sent to them and they do not have any methods.
- integers, bytes, words, longints, which are not objects according to modern pascal programmers
- pchars to be compatible with C language, and C language is not object oriented - again pointing out that modern pascal is focused more on compatibility and being a hybrid than it is trying to be an "object" or "message" language
- cdecl, stdcall declarations, for compatibility with other languages, again pointing out that it is not trying to be a pure object language, but rather trying to be a compatible and hybrid language
- even GOTO statements available for emergency, again pointing out that it is a hybrid language not focused on one true "paradigm"
- many types that do not have the ability to be inherited
- many types that are compatible with C structs, again pointing out that the language is hybrid and focused on compatibility
My main point is that pure "object languages" don't tend to have all these hybrid features.
See also:
"Ideas will first be ridiculed, then violently opposed, and finally accepted as self-evident" --A. Schopenhauer 1788-1860
|