Computer Languages
Course Outline
​
I. Introduction to Computer Languages
A. Overview of Computer Languages
B. History and Evolution of Computer Languages
C. High-Level vs. Low-Level Languages
II. Imperative Programming Languages
A. Overview of Imperative Programming
B. Introduction to C: Syntax, Control Structures, Functions
C. Introduction to Python: Syntax, Control Structures, Data Structures, and Libraries
III. Functional Programming Languages
A. Overview of Functional Programming
B. Introduction to Lisp and Scheme: Syntax, Recursion, and Functional Constructs
C. Introduction to Haskell: Syntax, Type System, and Functional Constructs
IV. Object-Oriented Programming Languages
A. Overview of Object-Oriented Programming
B. Introduction to Java: Syntax, Object-Oriented Principles, and Java Libraries
C. Introduction to C++: Syntax, Object-Oriented Principles, and C++ Libraries
V. Scripting Languages
A. Overview of Scripting Languages
B. Introduction to JavaScript: Syntax, DOM Manipulation, and Event Handling
C. Introduction to Python: Advanced Features, Scripting Applications
VI. Logic Programming Language
A. Overview of Logic Programming
B. Introduction to Prolog: Syntax, Facts, Rules, and Queries
VII. Markup Languages
A. Overview of Markup Languages
B. Introduction to HTML and XML: Syntax, Tags, Attributes
C. Introduction to CSS: Syntax, Selectors, and Properties
VIII. Query and Transformation Languages
A. Introduction to SQL: Syntax, Queries, and Database Operations
B. Introduction to XSLT: Syntax and Transformation Operations
IX. Concurrent and Distributed Programming Languages
A. Overview of Concurrency and Distributed Programming
B. Introduction to Erlang and Go: Syntax, Concurrency Models
X. Domain-Specific Languages
A. Overview of Domain-Specific Languages
B. Examples of DSLs: MATLAB for numerical computing, R for statistical computing, SQL for database management
XI. Programming Paradigms and Language Design
A. Comparison of Programming Paradigms
B. Principles of Programming Language Design
C. Trends in Programming Languages: Quantum Computing Languages, Bioinformatics Languages, etc.
Textbook: "Concepts of Programming Languages" by Robert W. Sebesta.
Lecture 1: Introduction to Computer Languages
​
We will discuss the basics of computer languages, their history and evolution, and the distinction between high-level and low-level languages.
​
A. Overview of Computer Languages
​
A computer language, also known as a programming language, is a set of instructions, commands, and syntax that is used to create software programs. These languages are used to control the performance of a computer. They define a set of grammatical rules for instructing a computer to perform specific tasks.
For example, a simple command in Python, a popular high-level language, to print "Hello, world!" to the console is:
print("Hello, world!")
B. History and Evolution of Computer Languages
​
The evolution of programming languages has been marked by a continual drive toward higher levels of abstraction:
-
First Generation: Machine Language (1940s) - Machine language is the only language a computer can process directly without a previous transformation. It's composed of binary code, strings of 1s and 0s, each of which represents an instruction for the computer's processor.
-
Second Generation: Assembly Language (1950s) - Assembly language represents a slight abstraction over machine language. Instead of writing in binary, programmers could use human-readable short codes (mnemonics), which would then be translated back into machine language by an assembler.
-
Third Generation: High-Level Languages (1950s - 1980s) - High-level languages introduced more abstraction, allowing programmers to write instructions in a more human-readable form, independent of the machine's hardware. Examples include Fortran, COBOL, C, C++, Java, Python, and many others.
-
Fourth Generation: Very High-Level Languages (1980s - present) - These languages enable programmers to work even more abstractly, focusing on what the program should accomplish rather than how to accomplish it. They include query languages (like SQL), scripting languages (like JavaScript), and languages oriented toward problem-solving in specific domains.
​
C. High-Level vs. Low-Level Languages
​
A high-level language is a programming language that is more user-friendly, to some extent platform-independent, and abstract from low-level details of the computer's machine language. Examples include Python, Java, C++, and Ruby.
​
In contrast, a low-level language is closer to the hardware, such as Assembly language or Machine code. These languages are not as abstract as high-level languages and are usually specific to the hardware they are running on. They provide a higher degree of control but at the expense of complexity.
The key difference between high-level and low-level programming languages is abstraction. High-level languages are closer to human language, making them easier to learn and write. However, low-level languages provide a greater degree of control over the computer's hardware.