---
# System prepended metadata

title: CCMP 6
tags: [' ING1', ' compilateur', ' S6', CCMP]

---

---
lang: fr
tags: CCMP, compilateur, S6, ING1
title: CCMP 6
---

* 25/02/2019
* Etienne Renault

# CCMP 6


{%pdf https://www.lrde.epita.fr/~tiger/lecture-notes/slides/ccmp/05-names.pdf %}

#### Rappel:
++Role du binder++: gérer les scopes et les breaks pour les boucles.

++Variable en échappement++: Celle qui ne sont pas stocké dans les registres. On les repère car elles sont utilisé dans des fonctions plus profondes/imbriqués.

<hr>

{%pdf https://www.lrde.epita.fr/~tiger/lecture-notes/slides/ccmp/06-type-checking.pdf %}

## Types are not necessary !

Pendant plusieurs année on a écrit de assembleur sans avoir de type... Donc pourquoi des types ?

Du coup pour bckend on va être embeter car en tc les types sont sur les données alors qu'en assembleur elles sont sur les instructions.

Du coup pourquoi avoir des types ?
Car ça n'a pas de sens d'additioner un pointeur sur fonction avec un int par exemple.

Il y a deux type de coercision:
> Coercion is the automatic (implicit) conversion from a type to anothe
> 
- widening convertions: from a "smaller" type to a "larger one"
    - int i = 42;
    - float f = i;

- narrowing convertions: from a "larger" type to a "smaller one"
    - float f = 42.0;
    - int i = f;


### Type Equivalence

> Two types are equivalent if an operand of one type in an expression is
substituted for one of the other type, without coercion

- Name type equivalence
    - two variables have equivalent types if they are dened either in the same declaration or in declarations that use the same type name
    - int i = 42; int j = 51;

- Structure type equivalence
    - two variables have equivalent types if their types have identical structures
    - using celcius = int;
    - int i = 42; celcius j = 51;



### 3 types de check


:::info
Voir photo du 25/02/2019
:::

### Sous-typage

X est un sous type de:

1. Si X est une classe fille de Y
2. Si un objet  X peut etre utilisé à la place d'un objet Y
3. Si X se conforme à Y
