Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Conception de langage: communiquer avec la mach...
Search
monsieurbadia
November 19, 2021
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Conception de langage: communiquer avec la machine (DevFest Lille)
monsieurbadia
November 19, 2021
More Decks by monsieurbadia
See All by monsieurbadia
Conception de langage: communiquer avec la machine
monsieurbadia
0
79
Other Decks in Programming
See All in Programming
AWSに止められる覚悟してますか?
morizo_1984
2
540
contenteditable と日本語入力に向き合う
colorful12
0
200
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
1.5k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
最近”作らせてる” ローカルAIアプリの話
akit37
0
480
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
残高管理から台帳サービスへの進化
artoy
1
200
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1.6k
A Tale of Four Properties
chriscoyier
163
24k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
The Invisible Side of Design
smashingmag
301
52k
Product Roadmaps are Hard
iamctodd
55
13k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Fireside Chat
paigeccino
43
4.1k
What's in a price? How to price your products and services
michaelherold
247
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Transcript
CONCEPTION DE LANGUAGE communiquer avec la machine
THE INVISIBLE
THE INVISIBLE
THE INVISIBLE
Le manuscrit de Voynich
Kryptos
Ecriture égyptienne
Ecriture Gobekli Tepe
Ecriture Maya
Qui suis-je ? William | @monsieurbadia Software Engineer @ Sfeir
Artist
None
None
INTRODUCTION
DEFINITION
Compiler
Compiler High Level Language
Compiler High Level Language Low Level Language
None
Front-end Compiler pipe
Front-end Back-end Compiler pipe
Front-end Middle-end Back-end Compiler pipe
Front-end ANALYZE Middle-end Back-end Source Code Compiler pipe
Front-end ANALYZE Middle-end OPTIMIZATION Back-end Source Code Compiler pipe
Front-end ANALYZE Middle-end OPTIMIZATION Back-end GENERATION CODE Machine Code Source
Code Compiler pipe
Front-end ANALYZE Middle-end OPTIMIZATION Back-end GENERATION CODE Machine Code Source
Code Compiler pipe
Grammar
Grammar Notation BNF (Backus-Naur form) <if> ::= if <condition> “{“
<instructions> “}”
Grammar Notation BNF (Backus-Naur form) EBNF (Ext. Backus-Naur form) <if>
::= if <condition> “{“ <instructions> “}” if : if condition “{“ instructions “}”
Grammar Notation BNF (Backus-Naur form) EBNF (Ext. Backus-Naur form) if
true { return 0; } <if> ::= if <condition> “{“ <instructions> “}” if : if condition “{“ instructions “}”
PROJET
https://github.com/qhantoom/qhantoom
None
None
None
COMPILER
None
Tokenizer Parser Analyzer Codegen Input Executable Tokens AST AST
TOKENIZER
Tokenizer [ Token { kind: TokenKind, span: Span {
lo: u32, hi: u32, }, }, … ] Source Code
PARSER
Parser [ Token { kind: TokenKind, span: Span {
lo: u32, hi: u32, }, }, … ] Pkg { module: Mod { Items: [ Item {…} … ] }
Parser [ Token { kind: TokenKind, span: Span {
lo: u32, hi: u32, }, }, … ] Pkg { module: Mod { Items: [ Item {…} … ] }
ANALYZER
Analyzer Pkg { module: Mod { Items: [ Item {…}
… ] } Pkg { module: Mod { Items: [ Item {…} … ] }
CODEGEN
Codegen Hello world! Pkg { module: Mod { Items: [
Item {…} … ] } Scope
AOT
AOT - Generate bytecode
AOT JIT - Generate bytecode
AOT JIT - Generate bytecode - Generate bytecode - Run
bytecode
AOT JIT CRANELIFT - Generate bytecode - Generate bytecode -
Run bytecode
DEMO
CONCLUSION
None
@monsieurbadia
AST https://astexplorer.net Back-end https://github.com/bytecodealliance/wasmtime/tree/main/cranelift https://gitlab.com/taricorp/llvm-sys.rs Compiler https://github.com/DoctorWkt/acwj https://github.com/jamiebuilds/the-super-tiny-compiler http://www.craftinginterpreters.com Cryptology
https://fr.wikipedia.org/wiki/Manuscrit_de_Voynich https://fr.wikipedia.org/wiki/Kryptos_(sculpture) Framework https://svelte.dev https://github.com/malinajs/malinajs Grammar https://bnfplayground.pauliankline.com https://fr.wikipedia.org/wiki/Extended_Backus-Naur_Form https://fr.wikipedia.org/wiki/Forme_de_Backus-Naur Programming Languages https://fr.wikipedia.org/wiki/Liste_de_langages_de_programmation https://www.rust-lang.org/fr https://webassembly.org Side Project https://qhantoom.dev https://github.com/qhantoom/qhantoom https://github.com/qhantoom/qheops Streamers https://www.twitch.tv/j_blow https://www.twitch.tv/gamozo