Download presentation
Presentation is loading. Please wait.
Published byBarnard Craig Modified over 8 years ago
1
Programming Language Design Issues Programming Languages – Principles and Practice by Kenneth C Louden
2
Programming Language Generations First Generation: Assembly language Second Generation: Unstructured high-level Languages e.g. Fortran Third Generation: Structured high-level languages e.g. Pascal, C, C++, Ada Fourth Generation: Application-specific languages for building database-oriented systems Fifth Generation: Very high-level languages, especially logic programming languages and other declarative languages. e.g. Prolog
3
Imperative versus Declarative Languages Imperative programming ◦ Comprises a sequence of commands imperatives Declarative programming ◦ Declare what results we want and leave the programming language to figure out how to produce them Declarative = “What” Imperative = “How”
4
Computational Paradigms Imperative/procedural Object-oriented Functional Logic
5
What Makes a Good language? Page 57 Louden Human criteria ◦ Learnability: Is language easy to learn and remember ◦ Writable: Easy to write correct programs ◦ Readable: Easy to understand programs ◦ Maintainable: Easy to change programs
6
What Makes a Good Language… Computer Criteria ◦ Implementable: Can language be implemented ◦ Efficient: Are programs translated and executed fast enough ◦ Portable: Is language available on most computers?
7
Learnability Simplicity. ◦ Simple syntax and semantics. Familiarity. ◦ Should use standard notations whenever possible. Uniformity. ◦ Language constructs that are similar should look and behave similarly. ◦ Constructs that are different should look different. Design goals for making languages easier to learn and remember:
8
Learnability… Orthogonality ◦ Language constructs can be combined in any meaningful way and should not interact in unexpected ways. Generality ◦ Have one general construct rather than several specific ones. Avoid restricting the ways constructs can be used. Preciseness ◦ Is the language precisely defined? ◦ ANSI/ISO. ◦ Does it have a formal semantics? Validation suites?
9
Writability Expressiveness ◦ Allows programs to be written in the most natural way. E.g. Build up high-level abstractions Error prevention ◦ Language makes some kinds of errors impossible Error Detection ◦ Language allows errors to be found and reported. E.g. array bounds checking, arithmetic overflow Language design goals for writability include:
10
Readability/Understandability Expressiveness ◦ Can also improve readability if the programmer has used it wisely Document support ◦ Essential for understanding large programs Language Environment ◦ e.g. browsers, cross-reference tools, pretty printers, debuggers Most of the learnability design goals help readabilty:
11
Maintainability Machine Independence ◦ Ban or isolate machine-specific features Modularity ◦ Good modularity constructs allow one part of a program to be changed without impacting other parts In addition to the readability and writability design goals, design goals that improve readability include:
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.