Functional Programming



Yüklə 13,58 Kb.
səhifə1/3
tarix22.03.2024
ölçüsü13,58 Kb.
#183045
  1   2   3

Independentwork №4

Done by: Rasulov A

Checked by: Karshieva T


Karshi branch of the Tashkent University of Information Technologies named after Muhammad Al – Khorazmi

Evolution of Languages

  • 1940’s: connecting wires to represent 0’s and 1’s
  • 1950’s: assemblers, FORTRAN, COBOL, LISP
  • 1960’s: ALGOL, BCPL (→ B → C), SIMULA
  • 1970’s: Prolog, FP, ML, Miranda
  • 1980’s: Eiffel, C++
  • 1990’s: Haskell, Java, Python
  • 2000’s: D, C#, Spec#, F#, X10, Fortress, Scala, Ruby, . . .
  • 2010’s: Agda, Coq
  • . . .
  • Evolution has been and is toward higher level of abstraction

Implementing a Programming Language – How to Undo the Abstraction


Source
program
Lexer
Parser
Type
checker
Interpreter
Optimizer
Code
generator
Machine code
Bytecode
Machine
Virtual machine
I/O
JIT
I/O
I/O

Compiling and Interpreting (2)

  • Borderline between interpretation and compilation not clear (not that important either)
  • Same goes with machine code vs. byte code.
  • Examples of modern compiling/interpreting/executing scenarios:

Lexical Analysis

From a stream of characters

if (a == b) return;

to a stream of tokens

keyword[‘if‘]

symbol[‘(‘]

identifier[‘a‘]

symbol[‘==‘]

identifier[‘b‘]

symbol[‘)‘]

keyword[‘return‘]

symbol[‘;‘]

Syntactic Analysis (Parsing)

From a stream of characters

if (a == b) return;

to a stream of tokens

keyword[‘if‘]


Yüklə 13,58 Kb.

Dostları ilə paylaş:
  1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə