epicours/Algo/Séminaire/Introduction.md

1.5 KiB

An algorithm is

  • a set of rules (finite)
  • sequence (finite)
  • The goal is to take an input and give an output with the solution

How to write an algorithm

  1. What do you have available ; What is the output that your searching for => this is call specifications
  2. How : find resolution methods and choose the best one
  3. Formalism : shape it like a computer talk
  4. Translate :

Compilation and interpretation

Compiler

flowchart TD

A[High Level source code] -->|Compiler| B[Machine code]

B --> C[execution]

B --> D[execution 2]

B --> E[execution ...]

The compiler depends on

  • Language of the source code
  • The computer it will run the code

Advantages :

  • 1 translation
  • Optimises the code

C or C++ language use the compiler

Interpretation

The interpretor is a live compiler that translate in realtime.

Disavantages:

  • Don't optimize the code

Avantages:

  • We can share only the original source code

Javascript use interpretation

Language families

There is two families in the language word, the imperative and the declarative

Imperative

  • State (of the memory)
  • Instruction that will modify the state of the memory
  • and again...
  • output

Declarative

  • Defines relations between the input and the output

In the declarative languages we have

  • The functional languages
  • f:x -> x+1
  • The logical languages
x\in{N} x>1 x<3 \text{-> } x=2