Skip to content
Snippets Groups Projects
Commit 233e4a58 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added start of presentation

parent 5b31711e
No related branches found
No related tags found
No related merge requests found
Pipeline #
REVEALOPTIONS = -t revealjs
REVEALOPTIONS += --template ../default.revealjs
REVEALOPTIONS += -V margin=0
# REVEALOPTIONS += -V minScale=0.2
# REVEALOPTIONS += -V maxScale=2.0
REVEALOPTIONS += -V width="1500" -V height="1500" -V margin=0 -V center=false
REVEALOPTIONS += -V include-after="<script src="../js/playRust.js"></script> \
<script src="../js/remote-code.js"></script> \
<script src="../js/remote-diagrams.js"></script> \
<script src="../js/em-artiste.js"></script> \
<script src="../reveal.js/plugin/highlight/highlight.js"></script>"
REVEALOPTIONS += -V header-includes="<link rel="stylesheet" href="../reveal.js/lib/css/vs.css" >\
<link rel="stylesheet" href="../reveal.js/css/theme/simple.css" id="theme">\
<link rel="stylesheet" href="../css/console.css" id="theme">\
<script src="../jquery/dist/jquery.min.js"></script>"
REVEALOPTIONS += --section-divs
# REVEALOPTIONS += -V fontsize=tiny
REVEALOPTIONS += -V slideNumber=true
REVEALOPTIONS += --slide-level=1
# REVEALOPTIONS += --highlight-style espresso
# REVEALOPTIONS += --self-contained
REVEALOPTIONS += -V revealjs-url="../reveal.js"
MD=$(wildcard *.md)
HTML=$(MD:%.md=%.html)
all: $(HTML)
%.html: %.md Makefile
pandoc -s $(REVEALOPTIONS) -o $@ $<
clean:
rm -rf *.html
This diff is collapsed.
---
title: Cours de programmation séquentielle
author: Orestis Malaspinas
date: 11 janvier 2019
sansfont: Sans Serif
<!-- header-includes:
<link rel="stylesheet" href="../reveal.js/lib/css/zenburn.css" >
<link rel="stylesheet" href="../reveal.js/css/theme/simple.css" id="theme">
<link rel="stylesheet" href="../css/console.css" id="theme">
<script src="../jquery/dist/jquery.min.js"></script> -->
<!-- include-after:
<script src="../js/playRust.js"></script>
<script src="../js/remote-code.js"></script>
<script src="../js/remote-diagrams.js"></script>
<script src="../js/em-artiste.js"></script> -->
pdfMaxPagesPerSlide:
1
<!-- slide-numbers: true -->
---
# Historique
## Une brève histoire du Rust
- Créé comme projet personnel par Graydon Hoare chez Mozilla en 2006.
- Financé par Mozilla dès 2010.
- Rendu public la première fois en 2012 (version 0.4).
- Orientation vers la programmation système.
- Première version stable (1.0) en 2015.
- La très grande majorité des fonctionnalités du langages ont été retirées.
- Stabilisation de fonctionnalités tous les 6 semaines.
- Version stable actuelle 1.31. <!-- TODO UPDATE -->
# Projets basés sur Rust
- Firefox:
* Servo (moteur parallèle de navigateur en collaboration avec Samsung)
* Quantum (Moteur du navigateur de Firefox)
- Gnome (en remplacement du C).
- Dropbox.
- Npm.
- Cargo.
- Tor (en phase de tests).
- Redox (microkernel).
- <https://www.rust-lang.org/en-US/friends.html>
# Concepts de base
## Généralités
- Des garanties de sûreté
- Pas de seg-faults.
- Pas d'accès concurrents.
- Un système de type expressif.
- Sans coût de performance
- Pas de garbage collector.
- Pas d'overhead à l'exécution.
- **Un langage "système" dans lequel on peut avoir confiance.**
<!-- Productivité: efficacité et maintenance "simple". -->
# Sûreté mémoire
## Un peu de C++
```{.cpp}
{
vector<string> v;
...
auto &elem = v[0];
...
}
```
##
- Fortement typé.
- Pas d'accès mémoire illégal.
- La désallocation est automatique.
- Les fuites de mémoires sont TRÈS difficiles à faire.
# Concurrence
- *Concurrency without fear*.
- Le système de type empêche un accès concurrent à des données.
- La synchronisation des données doit être explicitement faite.
- Détection si l'accès asynchrone est sûr à la compilation.
- Protection contre les accès concurrents.
## Rapidité
- Abstractions à coût nul (langage moderne **ET** efficace).
- Les conditions de sécurité sont gérées *à la compilation* (pas de coût à l'exécution).
- Le compilateur est basé sur la LLVM.
- On paie pour ce qu'on utilise seulement.
## On peut contourner les règles
- Le compilateur a des règles très strictes...
- ... mais il est possible de contourner les règles.
- Syntaxe spéciale pour autoriser les comportement potentiellement dangereux (`unsafe`{.lang-rust}).
- Un guide pour bien vivre dangereusement <https://doc.rust-lang.org/nomicon/>.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment