== Past Criticism ==
While very popular (although more so in the 1980s and early 1990s than at the time of writing), early versions of Pascal have been widely criticised for being unsuitable for "serious" use outside of teaching. [[Brian Kernighan]], co-creator of the [[C programming language]], outlined his most notable criticisms of Pascal as early as 1981, in his paper [http://www.lysator.liu.se/c/bwk-on-pascal.html Why Pascal Is Not My Favourite Programming Language]. Since that time Pascal has continued to evolve and most of his points do not apply to current implementations. The summary of Kernighan's criticism of early Pascal in that paper is as follows:
As mentioned above, the currently available compilers address most of these issues. Many uninformed people still subscribe to the old belief that Pascal is not for "serious" programming and do not realize the benefits it currently offers. This stigma, more than any actual deficiency, is Pascal's biggest liability. ▼
#Since the size of an array is part of its type, the programmer can't create procedures that deal with general arrays, without regard to their size. This is particularly a problem for string handling.
#The lack of static variables, initialization and a way to communicate non-hierarchically combine to destroy the ``locality'' of a program - variables require much more scope than they ought to.
#The one-pass nature of the language forces procedures and functions to be presented in an unnatural order; the enforced separation of various declarations scatters program components that logically belong together.
#The lack of separate compilation impedes the development of large programs and makes the use of libraries impossible.
#The order of logical expression evaluation cannot be controlled, which leads to convoluted code and extraneous variables.
#The 'case' statement is emasculated because there is no default clause.
#The standard I/O is defective. There is no sensible provision for dealing with files or program arguments as part of the standard language, and no extension mechanism.
#The language lacks most of the tools needed for assembling large programs, most notably file inclusion.
#There is no way to override the type system, most notably, no casting.
▲As mentioned above, the currently available compilers address most of these issues. Many uninformed people still subscribe to the old belief that Pascal is not for "serious" programming and do not realize the benefits it currently offers. This stigma, more than any actual deficiency, is Pascal's biggest liability.
=== Further reading ===
|