parent
5ea69e8957
commit
494746ee54
@ -1,2 +1,4 @@
|
||||
# CS322 Class Repository
|
||||
This repository contains all files needed by students fall semester 2025.
|
||||
|
||||
[lectures](./lectures/index.md)
|
@ -0,0 +1,26 @@
|
||||
## Chomsky Hierarchy
|
||||
|
||||
Academic studies of languages have focused heavily on the syntax of languages. This study included both natural languages and formal languages. A natural language is what we normally think of when we speak of languages. A **formal language** is a mathematical entity that follows strict rules. While a natural language has syntax, rules are frequently bent when a natural language is used. A formal language is usually defined by its syntax in a rigidly defined mathematical manner.
|
||||
|
||||
Noam Chomsky is a linguist who taught at MIT. While there he developed a classification of languages that has become known as the **Chomsky Hierarchy** (aka Chomsky-Schützenberger Hierarchy). This idea centers around the idea that there are four classes of formal grammars that have the capability of generating increasingly complex languages from a syntactical point of view.
|
||||
|
||||
An **automaton** is a machine that performs a function according to a predetermined set of coded instructions, especially one capable of a range of programmed responses to different circumstances.
|
||||
|
||||
This idea of a hierarch of grammars was fundamental in the development of the theory of formal languages. Of interest to computer science is the fact that each of these grammar types has a dual automaton that recognizes that language.
|
||||
|
||||
| grammar type | automaton |
|
||||
|-------------|-----------|
|
||||
| recursively enumerable | turing machine/lambda calculus |
|
||||
| context sensitive | linear bounded turing machine |
|
||||
| context free | pushdown automaton |
|
||||
| regular | finite state machine |
|
||||
|
||||
The **recursively enumerable languages** correspond in some sense to what used to be called computable functions. Any program you write in a modern programming language falls into this category. The idea that the effectively computable functions are the same as those that can be implemented with a Turing machine is known as the **Church-Turing thesis**.
|
||||
|
||||
The remaining languages are characterized by the structure of their syntax.
|
||||
|
||||
The **context sensitive languages** are not going to be described in this course.
|
||||
|
||||
The **context free languages** have a syntax structure that forms tree shapes. These are very useful in computing. Most programming languages will specify a context free grammar for the language and use a program called a parser to produce the corresponding tree structure.
|
||||
|
||||
The **regular languages** are known to programmers as regular expressions.
|
@ -0,0 +1,3 @@
|
||||
# CS322 lecture notes
|
||||
* [semiotics](./semiotics.md)
|
||||
* [languages and machines](./chomsky.md)
|
@ -0,0 +1,17 @@
|
||||
## Semiotics
|
||||
**Semiotics** is the study of signs and symbols and their use or interpretation.
|
||||
What is a sign?
|
||||
A **sign** is a token that represents something.
|
||||
What a sign represents depends upon the interpreter of that sign.
|
||||
The intended meaning is often referred to as the value of the sign.
|
||||
A **symbol** likewise is a token that represents something. (Interesting side note is to explore the entymology of the word.)
|
||||
|
||||
|
||||
### 3 Points of view of semiotics
|
||||
**syntax** - the grammar or structure of a language
|
||||
**semantics** - the meaning of a language
|
||||
**pragmatics** - the effective use of a language
|
||||
|
||||
Duality, in mathematics, principle whereby one true statement can be obtained from another by merely interchanging two words. It is a property belonging to the branch of algebra known as lattice theory, which is involved with the concepts of order and structure common to different mathematical systems. A mathematical structure is called a lattice if it can be ordered in a specified way (see order). Projective geometry, set theory, and symbolic logic are examples of systems with underlying lattice structures, and therefore also have principles of duality.
|
||||
|
||||
The development of symbolic logic led to the development of programming languages. **Programming languages depend upon the duality that exists between a language and the machine that recognizes that language**.
|
Loading…
Reference in new issue