Copyright © 1998 by Addison Wesley Longman, Inc. 1Chapter OnePreliminaries, including–Why study PL concepts?–Programming domains–PL evaluation criteria–What influences PL design?–Tradeoffs faced by programming languages–Implementation methods–Programming environmentsCopyright © 1998 by Addison Wesley Longman, Inc. 2Why study ProgrammingLanguage Concepts?• Increased capacity to express programming concepts• Improved background for choosing appropriate languages• Increased ability to learn new languages• Understanding the significance of implementation• Increased ability to design new languages• Overall advancement of computingCopyright © 1998 by Addison Wesley Longman, Inc. 3Programming Domains• Scientific applications• Business applications• Artificial intelligence • Systems programming• Scripting languages• Special purpose languagesCopyright © 1998 by Addison Wesley Longman, Inc. 4Language Evaluation Criteria•Readability•Writability•Reliability•Cost•Etc…Copyright © 1998 by Addison Wesley Longman, Inc. 5Evaluation Criteria: ReadabilityHow is it for one to read and understand programs written in the PL?Arguably the most important criterion!Factors effecting readability include:–Overall simplicity»Too many features is bad as is a multiplicity of features–Orthogonality»Makes the language easy to learn and read»Meaning is context independent–Control statements–Data type and structures–Syntax considerationsCopyright © 1998 by Addison Wesley Longman, Inc. 6Evaluation Criteria: WritabilityHow easy is it to write programs in the language?Factors effecting writability:–Simplicity and orthogonality–Support for abstraction–Expressivity–Fit for the domain and problemCopyright © 1998 by Addison Wesley Longman, Inc. 7Evaluation Criteria: ReliabilityFactors:- Type checking- Exception handling- Aliasing- Readability and writabilityCopyright © 1998 by Addison Wesley Longman, Inc. 8Evaluation Criteria: CostCategories:–Programmer training–Software creation–Compilation–Execution–Compiler cost–Poor reliability–MaintenanceCopyright © 1998 by Addison Wesley Longman, Inc. 9Evaluation Criteria: othersPortabilityGeneralityWell-definednessEtc…Copyright © 1998 by Addison Wesley Longman, Inc. 10Language Design InfluencesComputer architecture- We use imperative languages, at least in part, because we use von Neumann machines- John von Neuman is generally considered to be the inventor of the "stored program" machines -the class to which most of today's computers belong. - CPU+memory which contains both program and data- Focus on moving data and program instructions between registers in CPU to memory locationsCopyright © 1998 by Addison Wesley Longman, Inc. 11Language Design Influences: Programming methodologies• 50s and early 60s: Simple applications; worry about machine efficiency• Late 60s: People efficiency became important; readability, better control structures. maintainability• Late 70s: Data abstraction• Middle 80s: Object-oriented programming• 95-today: distributed programs, the webCopyright © 1998 by Addison Wesley Longman, Inc. 12Language CategoriesThe big four:Imperative or procedural (e.g., Fortran, C)Functional (e.g., Lisp, ML)Rule based (e.g. Prolog)Object-oriented (e.g. Smalltalk, Java)Others:Scripting (e.g., Perl, Tcl/Tk)Constraint (e.g., Eclipse)Copyright © 1998 by Addison Wesley Longman, Inc. 13Language Design Trade-offsReliability versus cost of executionAda, unlike C, checks all array indices to ensure proper range.Writability versus readability(2 = 0 +.= T o.| T) / T <- iN is an APL one liner that produces a list of the prime numbers from 1 to N inclusive.Flexibility versus safetyC, unlike Java, allows one to do arithmetic on pointers.Copyright © 1998 by Addison Wesley Longman, Inc. 14Implementation methods• Direct execution by hardware– E.g., machine language• Compilation to another language– e.g., C• Interpretation – Direct execution by software– E.g., csh, Lisp (traditionally)• Hybrid – Compilation to another language (aka bytecode) which is then interpreted– e.g., Java, PerlCopyright © 1998 by Addison Wesley Longman, Inc. 15Implementation issues• Complexity of compiler/interpreter• Speed of translation• Speed of execution• Portability of translated code• Compactness of translated code• Debugging easecompile interprethybridCopyright © 1998 by Addison Wesley Longman, Inc. 16Programming EnvironmentsThe collection of tools used in software development, often including an integrated editor, debugger, compiler, collaboration tool, etc.Examples:– UNIX -- Operating system with tool collection– EMACS – a highly programmable text editor– Borland C++ -- A PC environment for C and C++– Smalltalk -- A language processor/environment– Microsoft Visual C++ -- A large, complex visual environment– Your favorite Java environment: Jbuilder, J++, …Copyright © 1998 by Addison Wesley Longman, Inc.
View Full Document