Actions

Software Engineering structure definitions

From Santa Fe Institute Events Wiki

Draft

Structure is used in software engineering to provide abstractions that allow humans to develop and work with large computer programs.

Very early software was co-designed for hardware at the machine instruction (i.e. bit) level, which quickly becomes impossible as system became more complex. Programming languages were developed in order to formally describe the operation of software in a way that allows humans to manage this complexity.

The study of programming lanaguges and the underlying "grammatical" structures that allow a programming to be unambiguously translated into a description of the sequence of instructions executed by a program is an important branch of computer science. The practical goal is to develop programming languages that are expressive, while still ensuring that they are unambiguous and can be translated into an efficient sequence of computer instructions.

Two important kinds of strutures developed very early: One was the data structure, which allowed related pieces of data to be treated as a single logical entity in memory. An array x[1], x[2], x[3], is a of data structure that allows. Another is the abstract data structure, which describes the intended semantics of a piece of data, as in struct date {int year, month, day}. The other was the function, which described a re-usable sequence of instructions with well defined input and output. (Functional programming languages such as Scheme, Lisp and ML are derived from the lambda calculus and do not distinguish between function and data.)


As programs became larger, new structures were added to help manage the complexity. In particular, objects or classes, which encapsulate some data along with the functions that can access it were developed.