Examen 2 Flashcards
Reasons for studying Concepts of Programming Languages
- Increased ability to express ideas.
- Improved background for choosing appropiate languages.
- Increased ability to learn new languages.
- Better use of languages that are already known.
- Overall advancement of computing.
Programming Domains
- Scientific applications (Fortran)
- Business applications (COBOL)
- Artificial Intelligence (LISP)
- Systems Programming (C)
- Web Software (HTML, PHP, JavaScript, Java)
Language Evaluation Criteria
- Readability - the ease with which programs can be read and understood.
- Writeability - the ease with which a language can be used to create programs.
- Reliability - conformance to specifications.
- Cost - the ultimate total cost.
Languages Categories
- Imperative - algorithm is specified in great detail, and specific order of execution of instructions or statements must be included. (C, Java, Perl, JavaScript, Visual BASIC .NET, C++)
- Functional - main means of making computations is by applying functions to given parameters. (LISP, Scheme, ML, F#)
- Logic - rule-based; no particular order. (Prolog)
- Markup/programming hybrid - markup languages extended to support some programming. Used to specify layout of information on web documents. (HTML, XML, JSTL, XSLT)
Implementation Methods
- Compilation - programs are translated into machine language. Very fast program execution once translation is complete. Large commercial applications.
- Pure Interpretation - programs are interpreted by another program known as an interpreter. Easy implementation of many source-level debugging operations. Small programs or when efficiency is not an issue.
- Hybrid Implementation Systems - a compromise between compilers and pure interpreters. Faster than pure interpretation. Small and medium systems when efficiency is not the first concern.
Programming Environments
A collection of tools used in software development. May consist of only a file system, a text editor, a linker, and a compiler. Or may include a large collection of integrated tools. (Visual Studio Code, Eclipse, Sublime, Xcode, Android Studios, PyCharm)
1843: The beginning of all
Ada Lovelace (often cited as first programmer) wrote the instructions for the analytical engine. Considered the first published algorithm specifically tailored for implementations on a computer.
1945: Zuse’s Plankalkul
First high-level programming language designed for a computer.
1949: Assembly Language
A type of low-level language. It mainly consist of instructions that only machines could understand.
1957: FORTRAN
FORTRAN is often credited with being the first compiled high-level language.
1958: ALGOL 60
ALGOL 60 was the result of efforts to design a universal language. It strongly influenced subsequent programming languages.
1959: COBOL
It has had little effect on the design of subsequent languages. Few have attempted to design a new language for business applications.
COBOL historical background - based on FLOW-MATIC.
Design goals: must look like simple English, easy to use, broaden the base of computer users. First language required by DoD.
1960: LISP
Interest in AI appeared in the mid-50’s. Investigation concluded that some methods must be developed to allow computers to process symbolic data in linked lists. Most computation was on numeric data in arrays.
Functional Programming: LISP - AI research needed a language to process data in lists rather than arrays, and symbolic computation rather than numeric.
LISP Evaluation - pioneered functional programming. No need for variables or assignment. Control via recursion and conditional expressions.
1964: BASIC
Design goals: easy to learn and use for non-science students. Must be pleasant and friendly, fast turnaround for homework, and free and private access. First widely used language with time sharing.
1971: PASCAL
Designed for teaching structured programming. Small, simple, nothing really new, largest impact was on teaching programming.
1972: C
It’s general-purpose, procedural programming language and the most popular programming language until now. Mother of almost all higher-level programming languages.
1972: SQL
Programming language for storing and processing information in a relational database.