Dernière mise à jour... plus de suivi après

This commit is contained in:
Yannick Francois
2018-10-29 22:09:23 +01:00
parent d8eed09285
commit 482cf9e459
5 changed files with 114 additions and 46 deletions
@@ -0,0 +1,87 @@
```
local function strsplit(delimiter, text)
if delimiter == "" then
error("delimiter matches empty string!")
end
local list, pos, first, last = {}, 1
while true do
first, last = text:find(delimiter, pos, true)
if first then -- found?
table.insert(list, text:sub(pos, first - 1))
pos = last + 1
else
table.insert(list, text:sub(pos))
break
end
end
return list
end
M.private.strsplit = strsplit
```
## statements
### keyword:
`local` `function` `if...then..[else]...end` `while...do...end` `return` `break` `private`
### operators/symbols:
`==` `.` `=` `,` `.` `:` `+` `-` `()` `--`
Éléments syntaxiques du langage qui permettent d'effectuer une action détérminé par
l'interpréteur ou le compilateur, selon qu'il s'agisse d'un langage scripté ou compilé.
Il peut s'agir d'un nom ou d'un symbole que l'on applique à 0 ou plusieurs opérandes.
Ces opérandes peuvent être des valeurs, des variables ou des expressions composées).
J'ai regroupé les opérateurs et les keywords dans la même catégorie car leur utilisation
et syntaxes sont similaires quand bien même, leurs usages peuvent varier grandement et ne
pas servir, du tout, le même but.
Exemple de ce que j'entend par là : un `+` permet de réduire deux operandes à un seul en
appliquant une addition tandis qu'un `if` permet, en fonction d'un opérande booléen de
décider d'éxecuter un set d'opérandes plutôt qu'un autre.
Peut-être pouvons-nous parler de compound statement pour les (`if`/`while`)... ? ;D
#### Exemple `+`:
```
operand operator operand
3 + 2
```
#### Exemple `while...do...end`:
```
operator operatand operator
operand
...
operand
operator
while operand_1 do
operand_2
...
operand_n
end
```
## functions/callable expressions/routines/methods:
`strsplit` `error` `find` `insert` `sub`
Ces expressions agissent comme un opérateur mais à leur différence, ils ne sont pas
définies dans la grammaire du langages et ne sont donc pas des mots réservés.
## constants/values:
`true` `""` `"delimiter matches empty string!"` `{}` `1`
Ces noms, au moment de l'éxécution du programme, représentent un état de la mémoire
invariable. Seules les opérations de lectures sont autorisés.
## variables:
`delimiter` `text` `list` `pos` `first` `last` `table` `M`
Ces noms représentent aussi un état variable de la mémoire. Les actions d'écritures sont
autorisés autant que les actions de lectures.
@@ -0,0 +1,24 @@
Concernant mes retours, je dirai que j'ai trouvé l'exercice difficile au début, car il m'a manqué un peu de contexte. Du coup, j'ai eu l'impression de devoir faire des choix sur la manière dont j'allais conduire l'exercice avant de pouvoir le commencer. Peut-être est-ce volontaire ?
Mes deux remarques sont d'ailleurs liées à ça.
En tout cas, cela m'a énormément plu de participer à cet exercice et j'attends la suite avec impatience.
Première remarque : j'ai eu du mal à comprendre l'objectif de l'exercice.
J'aurai bien aimé savoir ce que cet exercice permet d'évaluer chez moi : la compréhension, les connaissances, ou autre(s)... ?
S'agit-il, plutôt, de récolter des informations pour l'auteur de l'exercice et non pour ses participants, comme une sorte de sondage ou d'expérience ?
Je rajouterai aussi : que feras-tu des réponses ? Aurons-nous un retour ? ...
Deuxième remarque : doit-on analyser les éléments syntaxique d'un langage de programmation ou spécifiquement de celui du langage utilisé dans le boutdecode ?
En gros, je me suis demandé si je devais me mettre dans le contexte du langage utilisé et de son paradigme ou si je pouvais y aller plus librement et réfléchir aussi par rapport à des langages dont la grammaire est moins "conventionnelle". Exemple, s'agissait-il d'éléments syntaxique ou de macros ? Et comme je ne connais pas le langage utilisé (existe-t'il ?), j'ai un peu mixé selon mes "goûts" sans forcément attendre de viser juste...
Aussi, en me mettant dans la peau de qqn qui part de zéro, je me suis demandé si l'exercice me demandait de :
- faire des recherches sur les éléments syntaxique d'un langage de programation au sens large
- faire des recherches sur les éléments syntaxique du langage de programmation utilisé dans le boutdecode.txt (à identifier d'abord)
- ne pas faire de recherche et répondre à l'instinct (aussi difficile que cela puisse paraître).
Concernant le format, rien à redire, les mails sont au top ! Et si jamais tu souhaites automatiser le tout, je me dis qu'un repo git avec une branche par personne peut être une bonne solution. Il faudrait faire une toute petite doc (3 lignes) pour expliquer comment clone/checkout une branche spécifiquement. Les épisodes seraient alors des dossiers.
Nous n'aurions qu'à clone notre branche et avec un accès en lecture sur les autres branches nous pourrions voir ce que font les autres (s'ils le permettent).
Voilà, voilà, j'ai fait le tour :)
+1
View File
@@ -0,0 +1 @@
ls: cannot access '/bin/usr': No such file or directory
-45
View File
@@ -1,45 +0,0 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>10 000 lignes de code</title>
<style>
button { background:none;border:none; }
</style>
<h1>10 000 lignes de code</h1>
<code id="codeZone">
</code>
<script>
const insertCodeWord = (codeWord) => {
var clickButton = document.createElement("button")
var codeWord = document.createTextNode(codeWord)
clickButton.append(codeWord)
return clickButton
}
var piecesOfCode = ["local function strsplit(delimiter, text)", " if delimiter == '' then -- this would result in endless loops"]
piecesOfCode.forEach( (pieceOfCode) => {
pieceOfCode = pieceOfCode.replace('(', ' ( ')
pieceOfCode = pieceOfCode.replace(')', ' ) ')
pieceOfCode = pieceOfCode.replace(',', ' , ')
console.log(pieceOfCode)
var blankSplittedPieceOfCode = pieceOfCode.split(' ')
console.log(blankSplittedPieceOfCode)
blankSplittedPieceOfCode.forEach((element) => {
codeZone.append(insertCodeWord(element))
});
codeZone.append(document.createElement('br'))
})
</script>
+2 -1
View File
@@ -2,7 +2,6 @@
Episode 1: Episode 1:
En attente de réponse: En attente de réponse:
- Thomas
- Sakada - Sakada
- Carole Gombauld - Carole Gombauld
- Christophe - Christophe
@@ -16,11 +15,13 @@ Envoyé et répondu:
- Étienne puydebois - Étienne puydebois
- Eric - Eric
- Elodie - Elodie
- Thomas
Episode 1 phase 2: Episode 1 phase 2:
A envoyer: A envoyer:
- Thomas
- Anna-Livia - Anna-Livia
- Étienne puydebois - Étienne puydebois
- Eric - Eric