INFLUENCES ON LANGUAGE DESIGN - PROGRAMMING DESIGN METHODOLOGIES

Programming Design Methodologies:
  • The late 1960s and early 1970s brought an intense analysis, begun in large part by the structured-programming movement, of both the software development process and programming language design.
  • The major cost of computing from hardware to software, as hardware costs decreased and programmer costs increased.
  • Increases in programmer productivity were relatively small. In addition, progressively larger and more complex problems were being solved by computers.
  • Solving sets of equations to simulate satellite tracks, as in the early 1960s, programs were being written for large and complex tasks, such as controlling large petroleum-refining facilities and providing worldwide airline reservation systems.
  • The new software development methodologies that emerged as a result of the research of the 1970s were called top-down design and stepwise refinement.
  • The primary programming language deficiencies that were discovered were incompleteness of type checking and inadequacy of control statements (requiring the extensive use of gotos).
  • In the late 1970s, a shift from procedure-oriented to data-oriented program design methodologies began. Data-oriented methods emphasize data design, focusing on the use of abstract data types to solve problems.
  • For data abstraction to be used effectively in software system design, it must be supported by the languages used for implementation.
  • The first language to provide even limited support for data abstraction was SIMULA 67, although that language certainly was not propelled to popularity because of it.
  • The benefits of data abstraction were not widely recognized until the early 1970s.
  • The latest step in the evolution of data-oriented software development, which began in the early 1980s, is object-oriented design.
  • Object-oriented methodology begins with data abstraction, which encapsulates processing with data objects and controls access to data, and adds inheritance and dynamic method binding.
  • Inheritance is a powerful concept that greatly enhances the potential reuse of existing software, thereby providing the possibility of significant increases in software development productivity.
  • Dynamic (run-time) method binding allows more flexible use of inheritance.
  • Object-oriented programming developed along with a language that supported its concepts: Smalltalk. Although Smalltalk never became as widely used as many other languages, support for object-oriented programming is now part of most popular imperative languages, including Ada 95, Java, C++, and C#.
  • Object-oriented concepts have also found their way into functional programming in CLOS and F#, as well as logic programming in Prolog++.

Comments