Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!purdue!mentor.cc.purdue.edu!pur-ee!hankd From: hankd@pur-ee.UUCP (Hank Dietz) Newsgroups: comp.lang.misc Subject: Re: Evaluating Programming Languages Summary: Classify lang. on type of programming it was designed for Message-ID: <14399@pur-ee.UUCP> Date: 5 Feb 90 15:25:19 GMT References: <3069@caesar.cs.montana.edu> Reply-To: hankd@pur-ee.UUCP (Hank Dietz) Distribution: usa Organization: Purdue University Engineering Computer Network Lines: 98 In article <3069@caesar.cs.montana.edu> icsu8209@caesar.cs.montana.edu (Glassy) writes: >I would like to develop some set of criteria for evaluating >programming languages (both microscopically, on the 'feature' level, >and macroscopically, examining the language in toto). ... >My starting point for a set of assessment criteria, is to try to >classify some of the common languages in (reasonable?) groups. > >The languages I've used or read about seem to fall into about 5 distinctive >categories: > >a. Homegrown: FORTRAN', C', BASIC', FORTH' >b. Algol: Algol-60, Pascal', Modula >c. Functional: Lisp', Scheme, APL >d. Monsters: Algol-68, PL/1, Ada' >e. Others: Smalltalk, SNOBOL' > >(For reference, I've only written programs in the languages listed >with a '. I trust that partisans of each language will correct any >misperceptions I may have of _their_ fave :) .) I classify languages based on the types of programs they were designed to implement... the following is a QUICKIE PARTIAL LIST. Notice that some languages appear in more than one group. (I've also marked languages I've actually used with a tick suffix.) I'm curious if others generally agree with my list: Teaching languages: (Simple, fast-compile because student programs usually don't get any further than that, only one programming idiom to force good programming style, often has friendly graphics) Pascal', Karel', RatFor', various language subsets introduced in textbooks -- especially data structure/algorithm textbooks, Smalltalk', Logo' Prototyping: (For testing/defining algorithms, highly interactive, inefficient execution in many cases due to high-level primitives) BASIC', Lisp', Prolog', APL', SetL', CSP', FP', Id' Numerical applications: ForTran', other languages also called "Fortran" (;-), Sisal', APL' String/text processing: (Text manipulation, pattern/image orientation) CoBOL', SNOBOL', Awk', sed', Teco', Emacs (any version)', Lisp', Prolog' General purpose: (Usually big languages with many alternative idioms, synthesized as best from other languages, usually merging numerical and string processing, e.g., ForTran and CoBOL) Algol', PL/I', Ada', Scheme' (and other "efficient" Lisp dialects ;-) Systems: (Support for large program development and maintenance, efficient execution, low-Level HW access) BLISS, BCPL, B, C', C++', PL/M', Ada', Modula (pick any number ;-), various assembly languages AI: (Artificial intelligence languages... really symbol-oriented) Lisp', Prolog', SAIL', OPS5 CAI: (Computer-Aided Instruction) Pilot', Plato', PILE' Mathematical exploration: (Tools for numeric visualization and/or symbolic transformation) Macsyma, MuMath', IGL', NGL', Lotus, any language with a name ending in "calc" Control of automatic test equipment: Gaelic, Atlas' Query languages: (The database/dictionary is THE data/knowledge structure) DBase, Ingres, SEQUEL, Forth', MUMPS, Prolog', OPS5 Asynchronous parallelism: (Typically associated with MIMD execution) CSP', Occam', Linda, Concurrent C', Euclid Synchronous parallelism: (Typically associated with SIMD execution) Glypnir, Actus, Parallel C', C*', *Lisp SPMD parallelism: (Single program, multiple data -- multiple paths through same code) PL/I', Ada', The Force', EPEX', BBN Uniform System, XPC', PCF Fortran Languages designed for automatic parallelization: (Language constructs to help flow analysis for parallelization) Refined Languages (Refined C, Fortran, Pascal, and Lisp)', Blaze', Sisal' -hankd@ecn.purdue.edu