update
This commit is contained in:
parent
c50d69aa3d
commit
465816b766
4
.obsidian/community-plugins.json
vendored
4
.obsidian/community-plugins.json
vendored
@ -40,7 +40,6 @@
|
||||
"zotlit",
|
||||
"obsidian-style-settings",
|
||||
"obsidian-hider",
|
||||
"inline-math",
|
||||
"quick-preview",
|
||||
"obsidian42-brat",
|
||||
"obsidian-vault-statistics-plugin",
|
||||
@ -49,5 +48,6 @@
|
||||
"obsidian-footnotes",
|
||||
"better-fn",
|
||||
"math-in-callout",
|
||||
"cloze"
|
||||
"cloze",
|
||||
"obsidian-hypothesis-plugin"
|
||||
]
|
25
.obsidian/plugins/obsidian-hypothesis-plugin/data.json
vendored
Normal file
25
.obsidian/plugins/obsidian-hypothesis-plugin/data.json
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"token": "6879-Ka3wxKY_YdZncP3FC4iv5YlkmIlub0QmodRke6Ytl-A",
|
||||
"user": "acct:OsKaR31415@hypothes.is",
|
||||
"highlightsFolder": "sources/hypothesis",
|
||||
"isConnected": true,
|
||||
"template": "{% if is_new_article %}{% if author %}author:: [[{{author}}]]\nurl:: [{{author}}]({{url}})\n{% else %}\nurl:: {{url}}\n{% endif %}{% endif %}\n\n{% if is_new_article %}\n## Annotations\n{% for highlight in highlights %}\n> [!zotero] [{{highlight.updated}}]({{highlight.incontext}}){% for line in highlight.text.split(\"\\n\") %}\n> {{line}}{% endfor %}{% if highlight.annotation %}\n> > [!note] Annotations{% for line in highlight.annotation.split(\"\\n\") %}\n> > {{line}}{% endfor %}\n{% endif %}{% endfor %}{% endif %}\n\n{% if is_new_article %}\n## Notes de pages\n{% for highlight in page_notes %}\n> [!note] [{{highlight.updated}}]({{highlight.incontext}})\n> {{highlight.annotation}}\n{% endfor %}\n{% endif %}\n",
|
||||
"syncOnBoot": false,
|
||||
"autoSyncInterval": 0,
|
||||
"dateTimeFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"history": {
|
||||
"totalArticles": 1,
|
||||
"totalHighlights": 5
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"id": "__world__",
|
||||
"name": "Public",
|
||||
"public": true,
|
||||
"type": "open",
|
||||
"selected": true
|
||||
}
|
||||
],
|
||||
"useDomainFolders": false,
|
||||
"lastSyncDate": "2024-05-14T10:11:14.434Z"
|
||||
}
|
2
.obsidian/plugins/obsidian-hypothesis-plugin/main.js
vendored
Normal file
2
.obsidian/plugins/obsidian-hypothesis-plugin/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/obsidian-hypothesis-plugin/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-hypothesis-plugin/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"id": "obsidian-hypothesis-plugin",
|
||||
"name": "Hypothes.is",
|
||||
"version": "0.1.19",
|
||||
"minAppVersion": "0.11.0",
|
||||
"description": "Sync your Hypothesis highlights",
|
||||
"author": "weichenw",
|
||||
"authorUrl": "https://github.com/weichenw",
|
||||
"isDesktopOnly": false
|
||||
}
|
@ -5,12 +5,12 @@
|
||||
{
|
||||
"id": 2,
|
||||
"name": "memoire-L3",
|
||||
"lastUpdate": 1715610303854
|
||||
"lastUpdate": 1715677571514
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Ma bibliothèque",
|
||||
"lastUpdate": 1715610303930
|
||||
"lastUpdate": 1715677571539
|
||||
}
|
||||
],
|
||||
"renderCitations": true,
|
||||
|
@ -43,7 +43,7 @@
|
||||
"singlelineCardSeparator": "::",
|
||||
"singlelineReversedCardSeparator": ":::"
|
||||
},
|
||||
"buryDate": "2024-05-13",
|
||||
"buryDate": "2024-05-14",
|
||||
"buryList": [],
|
||||
"historyDeck": ""
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"snippets_file": "def : > [!definition] \ndéf : > [!définition] \nddef : > [!definition] $end$\\n> \\n^definition\nddéf : > [!définition] $end$\\n> \\n^definition\nquery : > [!query]\nnote : > [!note]\nquestion : > [!question]\nimportant : > [!important]\nexemple : > [!example] Exemple \ninfo : > [!info] \ntodo : > [!todo] \ndone : > [!done] \nwarning : > [!warning] \nattention : > [!attention] \ntldr : > [!tldr] \nexercice : > [!tldr] Exercice\nidea : > [!idea] \n\nfm : ---\\n$end$\\n---\nalias : ---\\nalias: [ \"$end$\" ]\\n---\n\nev : [[espace vectoriel]]\nkev : $\\mathbf{K}$-[[espace vectoriel]]\n\nqdef : ::: {.callout-note icon=false}\\n## Définition\\n\\n$end$\\n:::\nqnote : ::: {.callout-note}\\n## $end$\\n\\n:::\nqtip : ::: {.callout-tip}\\n## $end$\\n\\n:::",
|
||||
"snippets_file": "def : > [!definition] \ndéf : > [!définition] \nddef : > [!definition] $end$\\n> \\n^definition\nddéf : > [!définition] $end$\\n> \\n^definition\nquery : > [!query]\nnote : > [!note]\nquestion : > [!question]\nimportant : > [!important]\nexemple : > [!example] Exemple \ninfo : > [!info] \ntodo : > [!todo] \ndone : > [!done] \nwarning : > [!warning] \nattention : > [!attention] \ntldr : > [!tldr] \nexercice : > [!tldr] Exercice\nidea : > [!idea] \n\navantages : > [!check] Avantages\ninconvenients : > [!fail] Inconvénients\ninconvénients : > [!fail] Inconvéninents\npc : > [!check] Avantages\\n> $end$\\n\\n> [!fail] Inconvénients\\n> \\n\n\nfm : ---\\n$end$\\n---\nalias : ---\\nalias: [ \"$end$\" ]\\n---\n\nev : [[espace vectoriel]]\nkev : $\\mathbf{K}$-[[espace vectoriel]]\n\nqdef : ::: {.callout-note icon=false}\\n## Définition\\n\\n$end$\\n:::\nqnote : ::: {.callout-note}\\n## $end$\\n\\n:::\nqtip : ::: {.callout-tip}\\n## $end$\\n\\n:::\n\n",
|
||||
"snippets": [
|
||||
"def : > [!definition] ",
|
||||
"déf : > [!définition] ",
|
||||
@ -18,6 +18,10 @@
|
||||
"tldr : > [!tldr] ",
|
||||
"exercice : > [!tldr] Exercice",
|
||||
"idea : > [!idea] ",
|
||||
"avantages : > [!check] Avantages",
|
||||
"inconvenients : > [!fail] Inconvénients",
|
||||
"inconvénients : > [!fail] Inconvéninents",
|
||||
"pc : > [!check] Avantages\\n> $end$\\n\\n> [!fail] Inconvénients\\n> \\n\n",
|
||||
"fm : ---\\n$end$\\n---",
|
||||
"alias : ---\\nalias: [ \"$end$\" ]\\n---",
|
||||
"ev : [[espace vectoriel]]",
|
||||
|
@ -1 +1 @@
|
||||
{"garbage collection":{"garbage collection":{"internalLink":{"count":1,"lastUpdated":1715606605864}}},"changement de base d'une forme bilinéaire":{"test":{"internalLink":{"count":1,"lastUpdated":1715676329297}}},"test_patat":{"test_patat":{"internalLink":{"count":1,"lastUpdated":1715676413667}},"bonjour":{"internalLink":{"count":1,"lastUpdated":1715676438324}}}}
|
||||
{"garbage collection":{"garbage collection":{"internalLink":{"count":1,"lastUpdated":1715606605864}}},"changement de base d'une forme bilinéaire":{"test":{"internalLink":{"count":1,"lastUpdated":1715676329297}}},"test_patat":{"test_patat":{"internalLink":{"count":1,"lastUpdated":1715676413667}},"bonjour":{"internalLink":{"count":1,"lastUpdated":1715676438324}}},"éducation nationale":{"éducation nationale":{"internalLink":{"count":1,"lastUpdated":1715682802695}}}}
|
1
.obsidian/snippets/custom_callouts.css
vendored
1
.obsidian/snippets/custom_callouts.css
vendored
@ -110,6 +110,7 @@
|
||||
.callout[data-callout="zotero"] > .callout-title {
|
||||
border-bottom: 1pt solid rgb(80, 80, 80);
|
||||
filter: brightness(0.9) saturate(2);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
.callout[data-callout="zotero"] > .callout-title > .callout-icon > .svg-icon {
|
||||
/* display: none; /1* hide icon in favor of the colored one *1/ */
|
||||
|
@ -4,12 +4,6 @@ kung_fu: 0
|
||||
---
|
||||
|
||||
## Todo
|
||||
- [ ] #task demander SSU copie dossier 1/3 temps ⏫ 📅 2024-06-04
|
||||
- [ ] #task envoyer culture internet (feldup, myhouse, la maison des livres) à julien
|
||||
- [ ] #task remettre camille
|
||||
- [ ] #task courrier recommandé pour annuler plainte 🔺
|
||||
- [ ] #task payer felix
|
||||
- [ ] #task gérer CERCIP ⏫
|
||||
- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]`
|
||||
- kung-fu : `INPUT[number:kung_fu]` minutes
|
||||
|
||||
|
26
daily/2024-05-14.md
Normal file
26
daily/2024-05-14.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
spaced_repetition: 0
|
||||
kung_fu: 0
|
||||
---
|
||||
|
||||
## Todo
|
||||
- [ ] #task demander SSU copie dossier 1/3 temps ⏫ 📅 2024-06-04
|
||||
- [ ] #task envoyer culture internet (feldup, myhouse, la maison des livres) à julien
|
||||
- [ ] #task remettre camille
|
||||
- [ ] #task courrier recommandé pour annuler plainte 🔺
|
||||
- [ ] #task payer felix
|
||||
- [ ] #task gérer CERCIP ⏫
|
||||
- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]`
|
||||
- kung-fu : `INPUT[number:kung_fu]` minutes
|
||||
|
||||
## I did
|
||||
- fait fonctionner le [[obsidian plugin hypothesis]]
|
||||
|
||||
> [!smallquery]+ Modified files
|
||||
> ```dataview
|
||||
> LIST file.mtime
|
||||
> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc
|
||||
> ```
|
||||
|
||||
## I am gratefull to
|
||||
|
9
hypothes.is.md
Normal file
9
hypothes.is.md
Normal file
@ -0,0 +1,9 @@
|
||||
up:: [[outils de pkm]]
|
||||
#PKM
|
||||
|
||||
Outil pour faire des annotations
|
||||
- n'importe où (pages web et pdf)
|
||||
- centralisées (dans les serveurs de hypothes.is)
|
||||
- éditables en groupe
|
||||
- partage de notes
|
||||
- annotation d'un même document à plusieurs
|
33
obsidian plugin hypothesis.md
Normal file
33
obsidian plugin hypothesis.md
Normal file
@ -0,0 +1,33 @@
|
||||
up:: [[obsidian plugins]]
|
||||
#obsidian #PKM
|
||||
|
||||
|
||||
Plugin pour importer les annotations de [[hypothes.is]] dans obsidian
|
||||
|
||||
# Importation des annotations
|
||||
|
||||
## Template
|
||||
```
|
||||
{% if is_new_article %}{% if author %}author:: [[{{author}}]]
|
||||
url:: [{{author}}]({{url}})
|
||||
{% else %}
|
||||
url:: {{url}}
|
||||
{% endif %}{% endif %}
|
||||
|
||||
{% if is_new_article %}
|
||||
## Annotations
|
||||
{% for highlight in highlights %}
|
||||
> [!zotero] [{{highlight.updated}}]({{highlight.incontext}}){% for line in highlight.text.split("\n") %}
|
||||
> {{line}}{% endfor %}{% if highlight.annotation %}
|
||||
> > [!note] Annotations{% for line in highlight.annotation.split("\n") %}
|
||||
> > {{line}}{% endfor %}
|
||||
{% endif %}{% endfor %}{% endif %}
|
||||
|
||||
{% if is_new_article %}
|
||||
## Notes de pages
|
||||
{% for highlight in page_notes %}
|
||||
> [!note] [{{highlight.updated}}]({{highlight.incontext}})
|
||||
> {{highlight.annotation}}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
```
|
@ -2,4 +2,17 @@
|
||||
|
||||
|
||||
> [!idea] Payer les enseignants en fonction du nombre d'étudiants
|
||||
> Par exemple : $\text{salaire} = \text{taux horaire} \times \text{nombre d'étudiants}$
|
||||
> Par exemple :
|
||||
> - $\text{salaire} = \text{taux horaire} \times \text{nombre d'étudiants}$
|
||||
|
||||
> [!check] Avantages
|
||||
> - permet un prix par élève constant quelle que soit la taille de la classe
|
||||
> - encourage moins l'[[éducation nationale]] à faire des calsses plus grandes
|
||||
> - rétribution en fonction de la difficulté
|
||||
> - classe plus grande $\implies$ plus de travail (correction, garder l'attention, être à l'écoute...)
|
||||
|
||||
> [!fail] Inconvénients
|
||||
> - [[salaire attaché au poste|salaire au poste]] et pas [[salaire attaché à la qualification|salaire à la qualification]] ou [[salaire à la personne|à la personne]]
|
||||
> - encourage les enseignants à avoir des classes plus grandes
|
||||
> - équilibre naturel possible ? (rétribution $\leftrightarrow$ difficulté)
|
||||
|
||||
|
12
salaire attaché au poste.md
Normal file
12
salaire attaché au poste.md
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
aliases:
|
||||
- salaire au poste
|
||||
---
|
||||
up:: [[salaire]]
|
||||
sibling:: [[salaire attaché à la qualification]], [[salaire à la personne]]
|
||||
#politique #science/économie
|
||||
|
||||
> [!definition] salaire attaché au poste
|
||||
> Lorsque le salaire dépend du poste de travail.
|
||||
^definition
|
||||
|
14
salaire attaché à la qualification.md
Normal file
14
salaire attaché à la qualification.md
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
aliases:
|
||||
- salaire à la qualification
|
||||
---
|
||||
up:: [[salaire]]
|
||||
sibling:: [[salaire attaché au poste|salaire au poste]], [[salaire à la personne]]
|
||||
#politique #science/économie
|
||||
|
||||
> [!definition] salaire à la qualification
|
||||
> Lorsque le salaire dépend de la [[qualification]] (personnelle) de l'employé.
|
||||
> - s'oppose au [[salaire attaché au poste]]
|
||||
> - même en changeant de poste, le salaire ne peut pas diminuer (car la qualification ne diminue pas)
|
||||
> -
|
||||
^definition
|
@ -0,0 +1,54 @@
|
||||
---
|
||||
doc_type: hypothesis-highlights
|
||||
url: >-
|
||||
https://osk42.quarto.pub/posts/informatique/docstring%20challenges/docstring%20challenges%20-%2013%20ao%C3%BBt%202023.html
|
||||
---
|
||||
author:: [[osk42.quarto.pub]]
|
||||
url:: [osk42.quarto.pub](https://osk42.quarto.pub/posts/informatique/docstring%20challenges/docstring%20challenges%20-%2013%20ao%C3%BBt%202023.html)
|
||||
|
||||
|
||||
|
||||
## Annotations
|
||||
|
||||
> [!zotero] [2023-08-25 13:30:24](https://hyp.is/yIwatEM6Ee6p5MsYO_LDzw/osk42.quarto.pub/posts/informatique/docstring%20challenges/docstring%20challenges%20-%2013%20ao%C3%BBt%202023.html)
|
||||
> in"aeiou"for
|
||||
> > [!note] Annotations
|
||||
> > Tous les espaces inutiles ont été returés. En général, on sait que l'on a pas besoin de mettre d'espaces autour des opérateur, des `"` et des parenthèses.
|
||||
|
||||
> [!zotero] [2023-08-25 13:37:19](https://hyp.is/v77OikM7Ee610a_gupolHw/osk42.quarto.pub/posts/informatique/docstring%20challenges/docstring%20challenges%20-%2013%20ao%C3%BBt%202023.html)
|
||||
> sum(l in"aeiou"for l in p)
|
||||
> > [!note] Annotations
|
||||
> > Il n'est pas nécessaire de mettre des crochets autour de la boucle :
|
||||
> >
|
||||
> > ```python
|
||||
> > sum([l in"aeiou"for l in p])
|
||||
> > ```
|
||||
> >
|
||||
> > Lorsque l'on ne met pas de crochets, mais des parenthèses, la boucle ne va pas créer une liste, mais un [générateur](https://python.doctor/page-iterateurs-iterator-generateur-generator-python).
|
||||
> >
|
||||
> > Cela ne change pas le résultat, mais peut éventuellement donner des performances différentes sur un grand nombre de valeurs.
|
||||
> >
|
||||
|
||||
> [!zotero] [2023-08-25 13:37:58](https://hyp.is/1tSwikM7Ee693IMmcZxmpA/osk42.quarto.pub/posts/informatique/docstring%20challenges/docstring%20challenges%20-%2013%20ao%C3%BBt%202023.html)
|
||||
> certains principes
|
||||
> > [!note] Annotations
|
||||
> > Notamment, ici, l'héritage et les objets aggrégateurs.
|
||||
|
||||
> [!zotero] [2023-08-25 13:39:16](https://hyp.is/BYq5fkM8Ee6pquMffDjeQQ/osk42.quarto.pub/posts/informatique/docstring%20challenges/docstring%20challenges%20-%2013%20ao%C3%BBt%202023.html)
|
||||
> Cet objet est un Callable
|
||||
> > [!note] Annotations
|
||||
> > On définit un `Callable` en surchargeant la méthode `__call__` dans un objet. Cette méthode a les mêmes arguments que ceux de l'objet créé, et va retourner la valeur que l'objet doit retourner.
|
||||
|
||||
> [!zotero] [2023-08-25 13:43:43](https://hyp.is/pKLaCkM8Ee6pq_uURmbtdQ/osk42.quarto.pub/posts/informatique/docstring%20challenges/docstring%20challenges%20-%2013%20ao%C3%BBt%202023.html)
|
||||
> y n’est pas pris en compte
|
||||
> > [!note] Annotations
|
||||
> > En anglais, y n'est pas toujours une voyelle. Voici un article qui détaille la question :
|
||||
> >
|
||||
> > [The truth about 'Y' : It's mostly a vowel](https://www.merriam-webster.com/grammar/why-y-is-sometimes-a-vowel-usage)
|
||||
> >
|
||||
> > On peut également imaginer que cela est un piège posé par le créateur de la question pour détecter ceux qui lisent les consignes trop vite.
|
||||
|
||||
|
||||
## Notes de pages
|
||||
|
||||
|
@ -1,35 +0,0 @@
|
||||
---
|
||||
zotero-key: HK8W8STHg5383243
|
||||
zt-attachments:
|
||||
- "121"
|
||||
citekey: EffetBordInformatique2023
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/HK8W8STH) [attachment](file:///Users/oscarplaisant/Zotero/storage/FHGCUVX5/Effet_de_bord_(informatique).html)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Effet de bord (informatique)](zotero://select/groups/5383243/items/HK8W8STH) - [Page ](zotero://open-pdf/groups/5383243/items/FHGCUVX5?annotation=BAIZ4M66)
|
||||
> En informatique, une fonction est dite à effet de bord (traduction mot à mot de l'anglais side effect, dont le sens est plus proche d'effet secondaire) si elle modifie un état en dehors de son environnement local, c'est-à-dire a une interaction observable avec le monde extérieur autre que retourner une valeur.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > effet de bord = modification en dehors de l'environnement local
|
||||
> ^BAIZ4M66aFHGCUVX5g5383243
|
||||
|
||||
> [!cite]+ [Effet de bord (informatique)](zotero://select/groups/5383243/items/HK8W8STH) - [Page ](zotero://open-pdf/groups/5383243/items/FHGCUVX5?annotation=FRXYERKZ)
|
||||
> Par exemple, les fonctions qui modifient une variable locale statique, une variable non locale ou un argument mutable passé par référence, les fonctions qui effectuent des opérations d'entrées-sorties ou les fonctions appelant d'autres fonctions à effet de bord[
|
||||
> ^FRXYERKZaFHGCUVX5g5383243
|
||||
|
||||
> [!cite]+ [Effet de bord (informatique)](zotero://select/groups/5383243/items/HK8W8STH) - [Page ](zotero://open-pdf/groups/5383243/items/FHGCUVX5?annotation=RGPC6369)
|
||||
> La programmation impérative permet l'emploi des effets de bord dans le fonctionnement de ses programmes, voire l'utilise délibérément
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > La modification (effet de bord) est un mécanisme important de la programmation impérative.
|
||||
> ^RGPC6369aFHGCUVX5g5383243
|
||||
|
||||
> [!cite]+ [Effet de bord (informatique)](zotero://select/groups/5383243/items/HK8W8STH) - [Page ](zotero://open-pdf/groups/5383243/items/FHGCUVX5?annotation=LAQR2DNM)
|
||||
> La programmation fonctionnelle cherche au contraire à les minimiser et les isole souvent pour cela dans des structures prévues entre autres pour cela : les monades.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > La programmation fonctionnelle est une solution aux problèmes des effets de bord.
|
||||
> ^LAQR2DNMaFHGCUVX5g5383243
|
@ -1,18 +0,0 @@
|
||||
---
|
||||
zotero-key: BNI9449Ng5383243
|
||||
zt-attachments:
|
||||
- "127"
|
||||
citekey: EnregistrementStructureDonnees2023
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/BNI9449N) [attachment](<file:///Users/oscarplaisant/Zotero/storage/HMUFH5Z7/Enregistrement_(structure_de_donn%C3%A9es).html>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Enregistrement (structure de données)](zotero://select/groups/5383243/items/BNI9449N) - [Page ](zotero://open-pdf/groups/5383243/items/HMUFH5Z7?annotation=B5KK3HH2)
|
||||
> En programmation, un enregistrement est une structure de données qui rassemble plusieurs champs, ceux-ci contenant des valeurs qui peuvent être de types différents[1]. Typiquement, le nombre de champ et leur séquence sont fixés[1]. Les champs d'un enregistrement peuvent aussi être nommés "membres", en particulier dans la programmation orientée objet. Les champs peuvent encore être appelés "éléments", mais cela entraîne un risque de confusion avec les éléments d'une collection.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > entregistrement := structure qui rassemble des champs
|
||||
> > champ := contient des valeurs (leur type peut changer)
|
||||
> ^B5KK3HH2aHMUFH5Z7g5383243
|
@ -1,55 +0,0 @@
|
||||
---
|
||||
zotero-key: L9WYV33Pg5383243
|
||||
zt-attachments:
|
||||
- "130"
|
||||
citekey: ExpressivePowerComputer2023
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/L9WYV33P) [attachment](file:///Users/oscarplaisant/Zotero/storage/Q9KCGU98/Expressive_power_(computer_science).html)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Expressive power (computer science)](zotero://select/groups/5383243/items/L9WYV33P) - [Page ](zotero://open-pdf/groups/5383243/items/Q9KCGU98?annotation=4FGMWNP7)
|
||||
> In computer science, the expressive power (also called expressiveness or expressivity) of a language is the breadth of ideas that can be represented and communicated in that language.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > expressivité := étendue des idées qui peuvent être représentées par un langage
|
||||
> ^4FGMWNP7aQ9KCGU98g5383243
|
||||
|
||||
> [!cite]+ [Expressive power (computer science)](zotero://select/groups/5383243/items/L9WYV33P) - [Page ](zotero://open-pdf/groups/5383243/items/Q9KCGU98?annotation=ENM5Z4IE)
|
||||
> The more expressive a language is, the greater the variety and quantity of ideas it can be used to represent.
|
||||
> ^ENM5Z4IEaQ9KCGU98g5383243
|
||||
|
||||
> [!cite]+ [Expressive power (computer science)](zotero://select/groups/5383243/items/L9WYV33P) - [Page ](zotero://open-pdf/groups/5383243/items/Q9KCGU98?annotation=MCRWAN6W)
|
||||
> For example, the Web Ontology Language expression language profile (OWL2 EL) lacks ideas (such as negation) that can be expressed in OWL2 RL (rule language). OWL2 EL may therefore be said to have less expressive power than OWL2 RL. These restrictions allow for more efficient (polynomial time) reasoning in OWL2 EL than in OWL2 RL. So OWL2 EL trades some expressive power for more efficient reasoning (processing of the knowledge representation language).
|
||||
> ^MCRWAN6WaQ9KCGU98g5383243
|
||||
|
||||
> [!cite]+ [Expressive power (computer science)](zotero://select/groups/5383243/items/L9WYV33P) - [Page ](zotero://open-pdf/groups/5383243/items/Q9KCGU98?annotation=UL4ZYIV6)
|
||||
> The term expressive power may be used with a range of meaning. It may mean a measure of the ideas expressible in that language:[2]
|
||||
>
|
||||
> regardless of ease (theoretical expressivity)
|
||||
> concisely and readily (practical expressivity)
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > 2 sens d'expressivité :
|
||||
> > - expressivité théorique
|
||||
> >
|
||||
> > - expressivité pratique
|
||||
> ^UL4ZYIV6aQ9KCGU98g5383243
|
||||
|
||||
> [!cite]+ [Expressive power (computer science)](zotero://select/groups/5383243/items/L9WYV33P) - [Page ](zotero://open-pdf/groups/5383243/items/Q9KCGU98?annotation=8W7EHIJN)
|
||||
> The first sense dominates in areas of mathematics and logic that deal with the formal description of languages and their meaning, such as formal language theory, mathematical logic and process algebra
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > expressivité théorique :
|
||||
> > mathématique / logique.
|
||||
> > en rapport avec la description formelle d'un langage.
|
||||
> ^8W7EHIJNaQ9KCGU98g5383243
|
||||
|
||||
> [!cite]+ [Expressive power (computer science)](zotero://select/groups/5383243/items/L9WYV33P) - [Page ](zotero://open-pdf/groups/5383243/items/Q9KCGU98?annotation=T3UDRGGG)
|
||||
> The design of languages and formalisms involves a trade-off between expressive power and analyzability. The more a formalism can express, the harder it becomes to understand what instances of the formalism say. Decision problems become harder to answer or completely undecidable.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > design d'un langage => compromis entre expressivité et analysabilité.
|
||||
> > formalisme peut exprimer + de concepts => ses instances deviennent + dures à analyser (les problèmes de décision devienent plus complexes, voire indécidables)
|
||||
> ^T3UDRGGGaQ9KCGU98g5383243
|
@ -1,22 +0,0 @@
|
||||
---
|
||||
zotero-key: ZKL3R2ZEg5383243
|
||||
zt-attachments:
|
||||
- "214"
|
||||
citekey: FermetureInformatique2024
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/ZKL3R2ZE) [attachment](file:///Users/oscarplaisant/Zotero/storage/JNZ49HIA/Fermeture_(informatique).html)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Fermeture (informatique)](zotero://select/groups/5383243/items/ZKL3R2ZE) - [Page ](zotero://open-pdf/groups/5383243/items/JNZ49HIA?annotation=P8UFCIK5)
|
||||
> Dans un langage de programmation, une fermeture ou clôture (en anglais : closure) est une fonction accompagnée de son environnement lexical. L'environnement lexical d'une fonction est l'ensemble des variables non locales qu'elle a capturées, soit par valeur (c'est-à-dire par copie des valeurs des variables), soit par référence (c'est-à-dire par copie des adresses mémoires des variables)[1]. Une fermeture est donc créée, entre autres, lorsqu'une fonction est définie dans le corps d'une autre fonction et utilise des paramètres ou des variables locales de cette dernière.
|
||||
> ^P8UFCIK5aJNZ49HIAg5383243
|
||||
|
||||
> [!cite]+ [Fermeture (informatique)](zotero://select/groups/5383243/items/ZKL3R2ZE) - [Page ](zotero://open-pdf/groups/5383243/items/JNZ49HIA?annotation=N5UF45WT)
|
||||
> Une fermeture peut être passée en argument d'une fonction dans l'environnement où elle a été créée (passée vers le bas) ou renvoyée comme valeur de retour (passée vers le haut). Dans ce cas, le problème posé alors par la fermeture est qu'elle fait référence à des données qui auraient typiquement été allouées sur la pile d'exécution et libérées à la sortie de l'environnement. Hors optimisations par le compilateur, le problème est généralement résolu par une allocation sur le tas de l'environnement.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Le passage *vers le haut* d'une fermeture demande l'accès à des données qui sont libéréres de la pile d'exécution.
|
||||
> > Cela est résolu par une allocation sur le tas.
|
||||
> ^N5UF45WTaJNZ49HIAg5383243
|
@ -1,17 +0,0 @@
|
||||
---
|
||||
zotero-key: NPLAN6RUg5383243
|
||||
zt-attachments:
|
||||
- "203"
|
||||
citekey: FonctionOrdreSuperieur2023
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/NPLAN6RU) [attachment](<file:///Users/oscarplaisant/Zotero/storage/94RE4PDX/Fonction_d'ordre_sup%C3%A9rieur.html>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Fonction d'ordre supérieur](zotero://select/groups/5383243/items/NPLAN6RU) - [Page ](zotero://open-pdf/groups/5383243/items/94RE4PDX?annotation=YZKT9G5G)
|
||||
> En mathématiques et en informatique, les fonctions d'ordre supérieur sont des fonctions qui ont au moins une des propriétés suivantes :
|
||||
>
|
||||
> elles prennent une ou plusieurs fonctions en entrée ;
|
||||
> elles renvoient une fonction.
|
||||
> ^YZKT9G5Ga94RE4PDXg5383243
|
@ -1,14 +0,0 @@
|
||||
---
|
||||
zotero-key: 9RYAKXF2g5383243
|
||||
zt-attachments:
|
||||
- "266"
|
||||
citekey: LogiqueCombinatoire2023
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/9RYAKXF2) [attachment](file:///Users/oscarplaisant/Zotero/storage/5ZRIGAB3/Logique_combinatoire.html)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Logique combinatoire](zotero://select/groups/5383243/items/9RYAKXF2) - [Page ](zotero://open-pdf/groups/5383243/items/5ZRIGAB3?annotation=6UG45AG4)
|
||||
> En logique mathématique, la logique combinatoire est une théorie logique[1] introduite par Moses Schönfinkel[2] en 1920 lors d'une conférence[Laquelle ?] et développée dès 1929 par Haskell Brooks Curry[3] pour supprimer le besoin de variables en mathématiques, pour formaliser rigoureusement la notion de fonction et pour minimiser le nombre d'opérateurs nécessaires pour définir le calcul des prédicats à la suite de Henry M. Sheffer. Plus récemment, elle a été utilisée en informatique comme modèle théorique de calcul et comme base pour la conception de langages de programmation fonctionnels.
|
||||
> ^6UG45AG4a5ZRIGAB3g5383243
|
@ -1,26 +0,0 @@
|
||||
---
|
||||
zotero-key: BCTII35Rg5383243
|
||||
title: Paradigme (programmation)
|
||||
citekey: ParadigmeProgrammation
|
||||
---
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/BCTII35R)
|
||||
|
||||
|
||||
> [!cite]
|
||||
> > Le **paradigme de programmation** est la façon (parmi d'autres) d'approcher la [programmation informatique](https://www.wikiwand.com/fr/Programmation_informatique "Programmation informatique") et de formuler les solutions aux problèmes et leur formalisation dans un [langage de programmation](https://www.wikiwand.com/fr/Langage_de_programmation "Langage de programmation") approprié[](https://www.wikiwand.com/fr/Paradigme_(programmation)#cite_note-1). Ce n'est pas de la [méthodologie](https://www.wikiwand.com/fr/Méthodologie "Méthodologie") contenant une méthode ; cette dernière [organise le traitement des problèmes reconnus dans l'écosystème concerné](https://www.wikiwand.com/fr/Système_d'information "Système d'information") pour aboutir à la [solution conceptuelle et programme exécutable](https://www.wikiwand.com/fr/Génie_logiciel "Génie logiciel").
|
||||
> >
|
||||
> - paradigme = façon d'approcher la programmation, de formuler et formaliser les problèmes
|
||||
> - paradigme $\neq$ méthodologie
|
||||
> - la méthodologie organise le traîtement des problèmes pour obtenir un programme exécutable
|
||||
> - un paradigme définit la vision et le rapport à l'execution d'un programme
|
||||
|
||||
|
||||
|
||||
> [!cite]
|
||||
> > Un paradigme de programmation fournit (et détermine) la vue qu’a le [développeur](https://www.wikiwand.com/fr/Développeur "Développeur") de l’exécution de son [programme](https://www.wikiwand.com/fr/Programme_informatique "Programme informatique") en situation d'exploitation. Par exemple, en [programmation orientée objet](https://www.wikiwand.com/fr/Programmation_orientée_objet "Programmation orientée objet"), les développeurs peuvent considérer le programme comme une collection d’[objets](https://www.wikiwand.com/fr/Objet_(informatique) "Objet (informatique)") en interaction, tandis qu’en [programmation fonctionnelle](https://www.wikiwand.com/fr/Programmation_fonctionnelle "Programmation fonctionnelle") un programme peut être vu comme une suite d'évaluations de fonctions sans [états](https://www.wikiwand.com/fr/Automate_fini "Automate fini"). Lors de la programmation d’ordinateurs ou de systèmes [multi-processeurs](https://www.wikiwand.com/fr/Multiprocesseur "Multiprocesseur"), la programmation orientée processus permet aux développeurs de voir les applications comme des ensembles de [processus](https://www.wikiwand.com/fr/Processus_(informatique) "Processus (informatique)") agissant sur des [structures de données](https://www.wikiwand.com/fr/Structure_de_données "Structure de données") localement partagées.
|
||||
> >
|
||||
> > - définition d'un paradigme
|
||||
> > - définit la vue sur l'exécution d'un programme
|
||||
> > - définit la façon de voir l'implémentation des problèmes
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
---
|
||||
zotero-key: XUWRH447g5383243
|
||||
zt-attachments:
|
||||
- "139"
|
||||
citekey: toalProgrammingParadigms
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/XUWRH447) [attachment](file:///Users/oscarplaisant/Zotero/storage/LQGLTH3D/paradigms.html)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Programming Paradigms](zotero://select/groups/5383243/items/XUWRH447) - [Page ](zotero://open-pdf/groups/5383243/items/LQGLTH3D?annotation=QVDN27WM)
|
||||
> Control flow in imperative programming is explicit: commands show how the computation takes place, step by step. Each step affects the global state of the
|
||||
> computation.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > impératif :
|
||||
> >
|
||||
> > - flot de contrôle explicite: explication pas-à-pas de ce qui doit être fait
|
||||
> > - chaque pas affecte l'état global du calcul
|
||||
> ^QVDN27WMaLQGLTH3Dg5383243
|
||||
|
||||
> [!cite]+ [Programming Paradigms](zotero://select/groups/5383243/items/XUWRH447) - [Page ](zotero://open-pdf/groups/5383243/items/LQGLTH3D?annotation=SW38ETVU)
|
||||
> Structured programming is a kind of imperative programming where control flow is defined by nested loops, conditionals, and subroutines, rather than via gotos. Variables are generally local to blocks (have lexical scope).
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Programmation structurée:
|
||||
> > - structures de contrôle plutôt que `goto`
|
||||
> > - variables généralement locales à un block
|
||||
> ^SW38ETVUaLQGLTH3Dg5383243
|
||||
|
||||
> [!cite]+ [Programming Paradigms](zotero://select/groups/5383243/items/XUWRH447) - [Page ](zotero://open-pdf/groups/5383243/items/LQGLTH3D?annotation=KRIHCS5Q)
|
||||
> OOP is based on the sending of messages to objects. Objects respond to messages by performing operations, generally called methods. Messages can have arguments. A society of objects, each with their own local memory and own set of operations has a different feel than the monolithic processor and single shared memory feel of non object oriented languages.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > OOP : basé sur l'envoi de messages à des objets.
|
||||
> ^KRIHCS5QaLQGLTH3Dg5383243
|
||||
|
||||
> [!cite]+ [Programming Paradigms](zotero://select/groups/5383243/items/XUWRH447) - [Page ](zotero://open-pdf/groups/5383243/items/LQGLTH3D?annotation=3SBD24AE)
|
||||
> Control flow in declarative programming is implicit: the programmer states only what the result should look like,
|
||||
> not how to obtain it.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > déclaratif :
|
||||
> > le flot de contrôle est implicite.
|
||||
> > on déclare ce que le résultat doit être plutôt que comment l'obtenir.
|
||||
> ^3SBD24AEaLQGLTH3Dg5383243
|
||||
|
||||
> [!cite]+ [Programming Paradigms](zotero://select/groups/5383243/items/XUWRH447) - [Page ](zotero://open-pdf/groups/5383243/items/LQGLTH3D?annotation=8L7P34B2)
|
||||
> In functional programming, control flow is expressed by combining function calls, rather than by assigning values to variables:
|
||||
> ^8L7P34B2aLQGLTH3Dg5383243
|
||||
|
||||
> [!cite]+ [Programming Paradigms](zotero://select/groups/5383243/items/XUWRH447) - [Page ](zotero://open-pdf/groups/5383243/items/LQGLTH3D?annotation=JRBMX3NW)
|
||||
> Logic programming and constraint programming are two paradigms in which programs are built by setting up relations that specify facts and inference rules, and asking whether or not something is true (i.e. specifying a goal.) Unification and backtracking to find solutions (i.e.. satisfy goals) takes place automatically.
|
||||
> ^JRBMX3NWaLQGLTH3Dg5383243
|
@ -1,19 +0,0 @@
|
||||
---
|
||||
zotero-key: BKPQ7QSMg5383243
|
||||
zt-attachments:
|
||||
- "168"
|
||||
citekey: abelsonStructureInterpretationComputer1996
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/BKPQ7QSM) [attachment](<file:///Users/oscarplaisant/Zotero/storage/KNH433ZX/Abelson%20et%20Sussman%20-%20Structure%20and%20Interpretation%20of%20Computer%20Programs.pdf>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Structure and Interpretation of Computer Programs](zotero://select/groups/5383243/items/BKPQ7QSM) - [Page 28](zotero://open-pdf/groups/5383243/items/KNH433ZX?page=56&annotation=88QKQ5JP)
|
||||
> The contrast between function and procedure is a reflection of the general distinction between describing properties of things and describing how to do things, or, as it is sometimes referred to, the distinction between declarative knowledge and imperative knowledge. In mathematics we are usually concerned with declarative (what is) descriptions, whereas in computer science we are usually concerned with imperative (how to) descriptions.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > fonction : connaissance déclarative
|
||||
> > procédure : connaissance impérative
|
||||
> ^88QKQ5JPaKNH433ZXg5383243p56
|
||||
|
@ -1,171 +0,0 @@
|
||||
---
|
||||
zotero-key: 785JFFET
|
||||
zt-attachments:
|
||||
- "309"
|
||||
citekey: antoninPOURDESIGNMINIMAL
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/library/items/785JFFET) [attachment](<file:///Users/oscarplaisant/Zotero/storage/SRGAVEY9/Antonin%20-%20POUR%20UN%20DESIGN%20MINIMAL.pdf>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ <span style="color: #ffd400; --link-external-color: #ffd400;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 12](zotero://open-pdf/library/items/SRGAVEY9?page=12&annotation=QUKCR9MS)</span>
|
||||
> Sauf dans de rares cas, tout est en interaction, mélangé, différent à toutes les échelles…
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Ces rares cas sont des substances (ce dont le concept peut être formé sans avoir besoin d'autre chose).
|
||||
> ^QUKCR9MSaSRGAVEY9p12
|
||||
|
||||
> [!cite]+ <span style="color: #ffd400; --link-external-color: #ffd400;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 12](zotero://open-pdf/library/items/SRGAVEY9?page=12&annotation=P7DBX43I)</span>
|
||||
> Pour créer un objet qui remplit exactement sa fonction, ni plus ni moins, il faut réussir à faire plus simple que la nature.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > La nature est un tout substantiel :
|
||||
> > rien n'existe en dehors de la nature tout découle d'elle, et elle ne nécessite aucune autre chose pour exister.
|
||||
> >
|
||||
> > En ce sens de "Nature", je ne crois pas que "faire plus simple que la nature" aie du sens.
|
||||
> > Peut être "faire plus simple que le spontané" ?
|
||||
> ^P7DBX43IaSRGAVEY9p12
|
||||
|
||||
> [!cite]+ <span style="color: #ffd400; --link-external-color: #ffd400;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 12](zotero://open-pdf/library/items/SRGAVEY9?page=12&annotation=6NRFY88T)</span>
|
||||
> un objet qui remplit exactement sa fonction, ni plus ni moins
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Cela suppose que la fonction est entièrement contenue dans l'objet.
|
||||
> > Il est pourtant possible d'étendre la fonction d'un objet sans changer l'objet lui-même.
|
||||
> > Par exemple, un marteau peut aujouter des fonction à un clou, sans que le clou en tant qu'objet soit changé (sans marteau, un clou ne peut pas clouer).
|
||||
> > Même sans ajout d'un autre objet, beaucoup d'objets, aussi simples qu'ils soient, peuvent être détournés de leur fonction. Un bon exemple est l'expression "every tool is a hammer" (tous les outils sont des marteaux), qui suggère que tout objet lourd peut être utilisé comme un marteau.
|
||||
> > Pour qu'un objet remplisse exactement sa fonction, il faudrait qu'il soit impossible de le détourner, par la nature même de cet objet.
|
||||
> > Je ne trouve pas d'exemple d'objet qui ne puisse pas être détourné.
|
||||
> >
|
||||
> > Il y à une différence entre :
|
||||
> > - "un objet qu'on ne peut ni simplifier ni réduire sans empêcher la fonction X"
|
||||
> > - "un objet qui remplit exactement la fonction X, ni plus ni moins"
|
||||
> ^6NRFY88TaSRGAVEY9p12
|
||||
|
||||
> [!cite]+ <span style="color: #ff6666; --link-external-color: #ff6666;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 12](zotero://open-pdf/library/items/SRGAVEY9?page=12&annotation=N2FHNHU2)</span>
|
||||
> C’est cette obsession de la simplicité qui a fait la réussite d’Apple.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > ref nécessaire
|
||||
> >
|
||||
> > cela reste à prouver.
|
||||
> > Est-ce que ça n'est pas plutôt le *marketting sur le minimalisme* qui a fait sa réussite, plutôt que le minimalisme lui-même ?
|
||||
> ^N2FHNHU2aSRGAVEY9p12
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 14](zotero://open-pdf/library/items/SRGAVEY9?page=14&annotation=BE9TVEK8)</span>
|
||||
> La plupart des gens ont déjà allumé un interrupteur avec le dos de la main, un coude, voire même un genou
|
||||
> ^BE9TVEK8aSRGAVEY9p14
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 14](zotero://open-pdf/library/items/SRGAVEY9?page=14&annotation=U7D6SNE6)</span>
|
||||
> Un design qui fonctionne dans votre tête n’est probablement pas adapté aux contraintes des utilisateurs.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Erreur d'ergonomie : solution n'est pas adaptée aux **besoins fonctionnels**.
|
||||
> ^U7D6SNE6aSRGAVEY9p14
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 14](zotero://open-pdf/library/items/SRGAVEY9?page=14&annotation=HMVQYXQQ)</span>
|
||||
> Si tous les boutons sont au même endroit, on mélange toutes les routines, et c’est l’erreur assurée !
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Erreur d'ergonomie : problème de robustesse.
|
||||
> ^HMVQYXQQaSRGAVEY9p14
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 14](zotero://open-pdf/library/items/SRGAVEY9?page=14&annotation=WQZDXNLS)</span>
|
||||
> Mais retenir la signification de 6 items identiques seulement à partir de leur position, c’est long. Voir impossible.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Erreur d'ergonomie : problème d'apprenabilité.
|
||||
> ^WQZDXNLSaSRGAVEY9p14
|
||||
|
||||
> [!cite]+ <span style="color: #ffd400; --link-external-color: #ffd400;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 15](zotero://open-pdf/library/items/SRGAVEY9?page=15&annotation=Q3Z3DEM4)</span>
|
||||
> une partie de moi a envie que l’idéal du minimalisme triomphe.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Reformulation que je trouve plus jolie :
|
||||
> > "[...] une partie de moi a [désire|souhaite] le triomphe de l'idéal minimaliste."
|
||||
> ^Q3Z3DEM4aSRGAVEY9p15
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 16](zotero://open-pdf/library/items/SRGAVEY9?page=16&annotation=MBC797NJ)</span>
|
||||
> vouloir simplifier, c’est se battre contre un standard.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Concept de dette technique.
|
||||
> ^MBC797NJaSRGAVEY9p16
|
||||
|
||||
> [!cite]+ <span style="color: #2ea8e5; --link-external-color: #2ea8e5;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 17](zotero://open-pdf/library/items/SRGAVEY9?page=17&annotation=7N28TI33)</span>
|
||||
> Quelque chose de compliqué, c’est quelque chose qui n’est pas simple, car constitué de beaucoup d’entités ou de règles.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > compliqué := grand nombre de parties
|
||||
> ^7N28TI33aSRGAVEY9p17
|
||||
|
||||
> [!cite]+ <span style="color: #2ea8e5; --link-external-color: #2ea8e5;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 17](zotero://open-pdf/library/items/SRGAVEY9?page=17&annotation=XB99K2XX)</span>
|
||||
> quelque chose de complexe, c’est quelque chose qui n’est pas simple car composé de parties qui interagissent de manière imprévisible.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > complexe := richesse des relations/interactions entre les parties
|
||||
> ^XB99K2XXaSRGAVEY9p17
|
||||
|
||||
> [!cite]+ <span style="color: #ffd400; --link-external-color: #ffd400;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 17](zotero://open-pdf/library/items/SRGAVEY9?page=17&annotation=UN4VX4Z4)</span>
|
||||
> Typiquement, une pièce de puzzle est simple, un puzzle est compliqué, et le cerveau de celui qui le résout est complexe.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Je n'ai pas compris l'exemple tout de suite à cause du fait que le cerveau est à la fois compliqué et complexe.
|
||||
> ^UN4VX4Z4aSRGAVEY9p17
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 18](zotero://open-pdf/library/items/SRGAVEY9?page=18&annotation=NFHZIPLI)</span>
|
||||
> Une approche pour résoudre ce problème est de cacher les fonctionnalités non essentielles.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Cela a un nom en ergonomie (il faudrait que je cherche dans mon cours).
|
||||
> ^NFHZIPLIaSRGAVEY9p18
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 18](zotero://open-pdf/library/items/SRGAVEY9?page=18&annotation=JQ2LD2DD)</span>
|
||||
> l’apprentissage du logiciel n’est pas intuitif.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Erreur d'ergonomie : mauvaise apprenabilité.
|
||||
> ^JQ2LD2DDaSRGAVEY9p18
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 18](zotero://open-pdf/library/items/SRGAVEY9?page=18&annotation=JX34ZBD2)</span>
|
||||
> on assiste à des comportements inattendus, et on ne comprend pas ce qui se passe
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Erreurs d'ergonomie : problèmes de guidage, de causalité, de cohérence interne ou externe.
|
||||
> ^JX34ZBD2aSRGAVEY9p18
|
||||
|
||||
> [!cite]+ <span style="color: #ff6666; --link-external-color: #ff6666;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 19](zotero://open-pdf/library/items/SRGAVEY9?page=19&annotation=AUAS6ZMA)</span>
|
||||
> Atteindre ce niveau de maîtrise nécessite de comprendre l’objet dans ses moindres détails.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > La plupart des sportifs ne comprennent pas les lois de l'aérodynamique, le fonctionnement physique précis de leur outil.
|
||||
> > Ils ont plutôt une compréhension des conséquences.
|
||||
> ^AUAS6ZMAaSRGAVEY9p19
|
||||
|
||||
> [!cite]+ <span style="color: #ffd400; --link-external-color: #ffd400;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 19](zotero://open-pdf/library/items/SRGAVEY9?page=19&annotation=R9B66PQZ)</span>
|
||||
> Dans le domaine de l’art, maîtriser l’outil prend quelques heures, et devenir doué prend des années.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Je ferais ici une nuance entre "maîtriser l'outil" et "comprendre le fonctionnement de l'outil".
|
||||
> > Pour moi, maîtriser l'outil demande parfois un long travail.
|
||||
> > Typiquement, un pinceau est simple à *comprendre*, mais très complexe à *maîtriser*.
|
||||
> ^R9B66PQZaSRGAVEY9p19
|
||||
|
||||
> [!cite]+ <span style="color: #5fb236; --link-external-color: #5fb236;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 19](zotero://open-pdf/library/items/SRGAVEY9?page=19&annotation=PU8SCM43)</span>
|
||||
> Je pense également au tricot : Avec seulement un fil et deux aiguilles, on peut créer un nombre de motifs incroyable.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Pour moi, tu parles ici d'émergence : un système simple qui permet une grande diversité de comportements / résultats.
|
||||
> ^PU8SCM43aSRGAVEY9p19
|
||||
|
||||
> [!cite]+ <span style="color: #ffd400; --link-external-color: #ffd400;">[POUR UN DESIGN MINIMAL](zotero://select/library/items/785JFFET) - [Page 19](zotero://open-pdf/library/items/SRGAVEY9?page=19&annotation=IG65VNHW)</span>
|
||||
> Celui ci permet de rester plus concentré, d’être focalisé entièrement sur la tâche.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > ref nécessaire.
|
||||
> >
|
||||
> > Je vois des contre-exemples :
|
||||
> > - un ordinateur est meilleur qu'une machine à écrire pour produire des documents propres, parce qu'on peut corriger a-posteriori, on ne gache pas sa concentration sur les éventuelles typos
|
||||
> > -
|
||||
> ^IG65VNHWaSRGAVEY9p19
|
@ -1,53 +0,0 @@
|
||||
---
|
||||
zotero-key: E829XCHJg5383243
|
||||
zt-attachments:
|
||||
- "57"
|
||||
citekey: brown10ThingsSoftware2023
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/E829XCHJ) [attachment](<file:///Users/oscarplaisant/Zotero/storage/SQN4T6Z8/Brown%20et%20al.%20-%202023%20-%2010%20Things%20Software%20Developers%20Should%20Learn%20about%20L.pdf>)
|
||||
|
||||
> [!cite] Page 81
|
||||
> build up a mental library of patterns
|
||||
> ^FRG2D6DIaSQN4T6Z8g5383243p4
|
||||
|
||||
> [!cite] Page 81
|
||||
> seeing a variety of programming paradigms will help further.
|
||||
> ^2PSW4XYMaSQN4T6Z8g5383243p4
|
||||
|
||||
> [!cite] Page 81
|
||||
> reading and working with more code, and more types of code, will increase proficiency at programming.
|
||||
> ^JLZDJ894aSQN4T6Z8g5383243p4
|
||||
|
||||
> [!cite] Page 82
|
||||
> you continuously switch between the abstract definition and several diverse examples of the concept
|
||||
> ^KBAKKDKEaSQN4T6Z8g5383243p5
|
||||
|
||||
> [!cite] Page 82
|
||||
> Deeper understanding stems from recognizing how multiple details from the examples connect to the one abstract concept in the definition, a process called repacking.
|
||||
> ^AU4GAXNAaSQN4T6Z8g5383243p5
|
||||
|
||||
> [!cite] Page 82
|
||||
> as we learn abstract concepts, they become more concrete to us
|
||||
> ^7Z9P6GJMaSQN4T6Z8g5383243p5
|
||||
|
||||
> [!cite] Page 83
|
||||
> One common (but incorrect) idea in software development is to directly teach problem-solving as a specific skill,
|
||||
> ^M25NHP8MaSQN4T6Z8g5383243p6
|
||||
|
||||
> [!cite] Page 83
|
||||
> While we can learn to reason, we do not learn how to solve problems in general
|
||||
> ^5T98PK5CaSQN4T6Z8g5383243p6
|
||||
|
||||
> [!cite] Page 84
|
||||
> Knowing multiple languages can be beneficial once they have been mastered, but sometimes transferring knowledge from one programming language to another can lead to faulty knowledge
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > le transfert de connaissances d'un langage à un autre peut être avantageux, mais peut aussi créer de la connaissance fausse (si le transfert n'est pas pertinent à ce moment).
|
||||
> ^588UCYYDaSQN4T6Z8g5383243p7
|
||||
|
||||
> [!cite] Page 84
|
||||
> This is known as the expertise-reversal effect: Hints and guides that help beginners can get in the way of experts and make them less productive.
|
||||
> ^R7Q7VJ7RaSQN4T6Z8g5383243p7
|
||||
|
||||
#pkm #zotero
|
@ -1,14 +0,0 @@
|
||||
---
|
||||
zotero-key: ZH92H67Gg5383243
|
||||
title: The paradigms of programming
|
||||
citekey: floydParadigmsProgramming1979
|
||||
---
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/ZH92H67G)
|
||||
|
||||
> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")`
|
||||
> ```breadcrumbs
|
||||
> title: false
|
||||
> type: tree
|
||||
> dir: down
|
||||
> ```
|
||||
|
@ -1,69 +0,0 @@
|
||||
---
|
||||
zotero-key: Y8NDFJ8Wg5383243
|
||||
zt-attachments:
|
||||
- "46"
|
||||
citekey: floydParadigmsProgramming1979a
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/Y8NDFJ8W) [attachment](<file:///Users/oscarplaisant/Zotero/storage/WWITR642/Floyd%20-%201979%20-%20The%20paradigms%20of%20programming.pdf>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 1](zotero://open-pdf/groups/5383243/items/WWITR642?page=1&annotation=WUIEE8HU)
|
||||
> In the first phase, that of top-down design, or stepwise refinement, the problem is decomposed into a very small number of simpler subproblems.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > programmation structurée:
|
||||
> > étape 1 :
|
||||
> > top-down, décomposition du problème en sous-problèmes très simples.
|
||||
> ^WUIEE8HUaWWITR642g5383243p1
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 1](zotero://open-pdf/groups/5383243/items/WWITR642?page=1&annotation=6HFBN6P7)
|
||||
> This gradual decomposition is continued until the subproblems that arise are simple enough to cope with directly.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > programmation structurée:
|
||||
> > étape 1:
|
||||
> > la décomposition se fait jusqu'à obtenir des probèmes triviaux.
|
||||
> ^6HFBN6P7aWWITR642g5383243p1
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 1](zotero://open-pdf/groups/5383243/items/WWITR642?page=1&annotation=48AUNBVN)
|
||||
> The second phase of the structured programming paradigm entails working upward from the concrete objects and functions of the underlying machine to the more abstract objects and functions used throughout the modules produced by the top-down design.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > programmation structurée:
|
||||
> > étape 2:
|
||||
> > remonter vers des concepts de + en + abstraits.
|
||||
> ^48AUNBVNaWWITR642g5383243p1
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 2](zotero://open-pdf/groups/5383243/items/WWITR642?page=2&annotation=2AQEQRR4)
|
||||
> This approach is referred to as the method of levels of abstraction, or of information hiding.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > *information hiding* (cacher l'information) :
|
||||
> > approche pour la programmation structurée :
|
||||
> > encapsulation des détails dans des abstractions utiles et manipulabes
|
||||
> ^2AQEQRR4aWWITR642g5383243p2
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 2](zotero://open-pdf/groups/5383243/items/WWITR642?page=2&annotation=AK2234X5)
|
||||
> In computer science, one sees several such communities, each speaking its own language and using its own paradigms. In fact, programming languages typically encourage use of some paradigms and discourage others.
|
||||
> ^AK2234X5aWWITR642g5383243p2
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 2](zotero://open-pdf/groups/5383243/items/WWITR642?page=2&annotation=7Y455I6W)
|
||||
> John Cocke's experience and mine illustrate the likelihood that continued advance in programming will require the continuing invention, elaboration, and communication of new paradigms.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > avancées en programmation => nouveaux problèmes => nécessité de nouveaux paradigmes
|
||||
> ^7Y455I6WaWWITR642g5383243p2
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 3](zotero://open-pdf/groups/5383243/items/WWITR642?page=3&annotation=R6BAAFNA)
|
||||
> If the advancement of the general art of programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires that he expand his repertory of paradigms.
|
||||
> ^R6BAAFNAaWWITR642g5383243p3
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 3](zotero://open-pdf/groups/5383243/items/WWITR642?page=3&annotation=QWLFQ9JA)
|
||||
> After solving a challenging problem, ! solve it again from scratch, retracing only the insight of the earlier solution. I repeat this until the solution is as clear and direct as I can hope for. Then I look for a general rule for attacking similar problems, that would have led me to approach the given problem in the most efficient way the first time. Often, such a rule is of permanent value.
|
||||
> ^QWLFQ9JAaWWITR642g5383243p3
|
||||
|
||||
> [!cite]+ [The paradigms of programming](zotero://select/groups/5383243/items/Y8NDFJ8W) - [Page 5](zotero://open-pdf/groups/5383243/items/WWITR642?page=5&annotation=TRZIWYSU)
|
||||
> To the teacher of programming, even more, I say: identify the paradigms you use, as fully as you can, then teach them explicitly. They will serve your students when Fortran has replaced Latin and Sanskrit as the archetypal dead language.
|
||||
> ^TRZIWYSUaWWITR642g5383243p5
|
@ -1,32 +0,0 @@
|
||||
---
|
||||
zotero-key: 6RZUZSFRg5383243
|
||||
zt-attachments:
|
||||
- "193"
|
||||
citekey: hughesWhyFunctionalProgramming1989
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/6RZUZSFR) [attachment](<file:///Users/oscarplaisant/Zotero/storage/H9SGRTMQ/Hughes%20-%201989%20-%20Why%20Functional%20Programming%20Matters.pdf>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Why Functional Programming Matters](zotero://select/groups/5383243/items/6RZUZSFR) - [Page 1](zotero://open-pdf/groups/5383243/items/H9SGRTMQ?page=1&annotation=WSXGN3RM)
|
||||
> ![[images/zotero/5383243WSXGN3RM.png]]
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > programme écrit comme des fonctions qui reçoivent l'entrée en argument et renvoie le résultat.
|
||||
> ^WSXGN3RMaH9SGRTMQg5383243p1
|
||||
|
||||
> [!cite]+ [Why Functional Programming Matters](zotero://select/groups/5383243/items/6RZUZSFR) - [Page 1](zotero://open-pdf/groups/5383243/items/H9SGRTMQ?page=1&annotation=58PSUPND)
|
||||
> ![[images/zotero/538324358PSUPND.png]]
|
||||
> ^58PSUPNDaH9SGRTMQg5383243p1
|
||||
|
||||
> [!cite]+ [Why Functional Programming Matters](zotero://select/groups/5383243/items/6RZUZSFR) - [Page 2](zotero://open-pdf/groups/5383243/items/H9SGRTMQ?page=2&annotation=3TVGD5RH)
|
||||
> ![[images/zotero/53832433TVGD5RH.png]]
|
||||
> ^3TVGD5RHaH9SGRTMQg5383243p2
|
||||
|
||||
> [!cite]+ [Why Functional Programming Matters](zotero://select/groups/5383243/items/6RZUZSFR) - [Page 2](zotero://open-pdf/groups/5383243/items/H9SGRTMQ?page=2&annotation=Y7Z762JM)
|
||||
> ![[images/zotero/5383243Y7Z762JM.png]]
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Pour augmenter la capacité à modulariser, il faut augmenter les types de colle disponibles.
|
||||
> ^Y7Z762JMaH9SGRTMQg5383243p2
|
@ -1,23 +0,0 @@
|
||||
---
|
||||
zotero-key: TLUTFXJ8g5383243
|
||||
zt-attachments:
|
||||
- "146"
|
||||
citekey: jenkisWhatFunctionalProgramming2015
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/TLUTFXJ8) [attachment](file:///Users/oscarplaisant/Zotero/storage/8P4TX53J/what-is-functional-programming.html)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [What Is Functional Programming?](zotero://select/groups/5383243/items/TLUTFXJ8) - [Page ](zotero://open-pdf/groups/5383243/items/8P4TX53J?annotation=S979DXY2)
|
||||
> A function is called 'pure' if all its inputs are declared as
|
||||
> inputs - none of them are hidden - and likewise all its outputs are
|
||||
> declared as outputs.
|
||||
> ^S979DXY2a8P4TX53Jg5383243
|
||||
|
||||
> [!cite]+ [What Is Functional Programming?](zotero://select/groups/5383243/items/TLUTFXJ8) - [Page ](zotero://open-pdf/groups/5383243/items/8P4TX53J?annotation=IU2KWY7L)
|
||||
> Functional programming is about writing pure functions, about removing
|
||||
> hidden inputs and outputs as far as we can, so that as much of our
|
||||
> code as possible just describes a relationship between inputs and
|
||||
> outputs.
|
||||
> ^IU2KWY7La8P4TX53Jg5383243
|
@ -1,21 +0,0 @@
|
||||
---
|
||||
zotero-key: FJG2FWGGg5383243
|
||||
zt-attachments:
|
||||
- "175"
|
||||
citekey: minskyFormContentComputer1970
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/FJG2FWGG) [attachment](<file:///Users/oscarplaisant/Zotero/storage/H39XI9D9/Minsky%20-%201970%20-%20Form%20and%20Content%20in%20Computer%20Science%20(1970%20ACM%20turing%20lecture).pdf>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Form and Content in Computer Science (1970 ACM turing lecture)](zotero://select/groups/5383243/items/FJG2FWGG) - [Page 5](zotero://open-pdf/groups/5383243/items/H39XI9D9?page=5&annotation=JHPJBREL)
|
||||
> Here, the function names come immediately inside their parentheses. The clumsi- ness, for humans, of writing all the parentheses is evident; the advantages of not h~ving to learn all the conventions, such as that (X + A ÷ X) is (+ X (÷ A X)) a n d not (÷ (+ X A) X), is often overlooked.
|
||||
> ^JHPJBRELaH39XI9D9g5383243p5
|
||||
|
||||
> [!cite]+ [Form and Content in Computer Science (1970 ACM turing lecture)](zotero://select/groups/5383243/items/FJG2FWGG) - [Page 9](zotero://open-pdf/groups/5383243/items/H39XI9D9?page=9&annotation=CCMAKXHC)
|
||||
> - To help people learn is to help them build, in their heads, various kinds of computational models.
|
||||
> - This can best be done by a teacher who has, in his head, a reasonable model of what is in the pupil's head.
|
||||
> - For the same reason the student, when debugging his own models and procedures, should have a model of what he is doing, and must know good debugging techniques, such as how to formulate simple but critical test cases.
|
||||
> - It will help the student to know something about computational models and programming. The idea of debugging itself, for example, is a very powerful concept - in contrast to the helplessness promoted by our cultural heritage about gifts, talents, and aptitudes. The latter encourages "I'm not good at this" instead of "How can I make myself better at it?"
|
||||
> ^CCMAKXHCaH39XI9D9g5383243p9
|
@ -1,18 +0,0 @@
|
||||
---
|
||||
zotero-key: WCBTJR4Hg5383243
|
||||
zt-attachments:
|
||||
- "298"
|
||||
citekey: perlisSpecialFeatureEpigrams1982
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/WCBTJR4H) [attachment](<file:///Users/oscarplaisant/Zotero/storage/E4IWF2MD/Perlis%20-%201982%20-%20Special%20Feature%20Epigrams%20on%20programming.pdf>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Special Feature: Epigrams on programming](zotero://select/groups/5383243/items/WCBTJR4H) - [Page 1](zotero://open-pdf/groups/5383243/items/E4IWF2MD?page=1&annotation=S4DXQU4T)
|
||||
> A programming language is low level when its programs require attention to the irrelevant.
|
||||
> ^S4DXQU4TaE4IWF2MDg5383243p1
|
||||
|
||||
> [!cite]+ [Special Feature: Epigrams on programming](zotero://select/groups/5383243/items/WCBTJR4H) - [Page 7](zotero://open-pdf/groups/5383243/items/E4IWF2MD?page=7&annotation=YP4AULVD)
|
||||
> You think you know when you learn, are more sure when you can write, even more when you can teach, but certain when you can program.
|
||||
> ^YP4AULVDaE4IWF2MDg5383243p7
|
@ -1,186 +0,0 @@
|
||||
---
|
||||
zotero-key: 673TMQRTg5383243
|
||||
zt-attachments:
|
||||
- "8"
|
||||
citekey: royProgrammingParadigmsDummies
|
||||
---
|
||||
up:: [[zotero literature notes]]
|
||||
link:: [Zotero](zotero://select/groups/5383243/items/673TMQRT) [attachment](<file:///Users/oscarplaisant/Zotero/storage/P4L4LCJZ/Roy%20-%20Programming%20Paradigms%20for%20Dummies%20What%20Every%20Prog.pdf>)
|
||||
#pkm #zotero
|
||||
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 10](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=2&annotation=2294PTUD)
|
||||
> A programming paradigm is an approach to programming a computer based on a mathematical theory or a coherent set of principles.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Paradigme: approche (éventuellement mathématique) de la programmation
|
||||
> >
|
||||
> > - chaque paradigme est défini à partir de principes de base (éventuellement une théorie mathématique)
|
||||
> ^2294PTUDaP4L4LCJZg5383243p2
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 10](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=2&annotation=4LQTA3Q8)
|
||||
> Each paradigm supports a set of concepts that makes it the best for a certain kind of problem. For example, object-oriented programming is best for problems with a large number of related data abstractions organized in a hierarchy. Logic programming is best for transforming or navigating complex symbolic structures according to logical rules. Discrete synchronous programming is best for reactive problems, i.e., problems that consist of reactions to sequences of external events.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Les concepts supportés par les différents paradigmes les rendent adaptés pour la résolution de différents problèmes.
|
||||
> ^4LQTA3Q8aP4L4LCJZg5383243p2
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 10](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=2&annotation=4YR7745Q)
|
||||
> A language should ideally support many concepts in a well-factored way, so that the programmer can choose the right concepts whenever they are needed without being encumbered by the others.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Les langages devraient tous être multiparadigmes, pour pouvoir choisir les bons concepts en fonction du problème.
|
||||
> ^4YR7745QaP4L4LCJZg5383243p2
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 13](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=5&annotation=RSNADR57)
|
||||
> Figure 2. Taxonomy of programming paradigms
|
||||
> ^RSNADR57aP4L4LCJZg5383243p5
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 13](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=5&annotation=97T2RAYP)
|
||||
> This explains why functional programming is so important: it is based on the concept of first-class function, or closure, which makes it equivalent to the λ-calculus which is Turing complete.
|
||||
> ^97T2RAYPaP4L4LCJZg5383243p5
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 14](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=6&annotation=DCATKHXK)
|
||||
> nondeterminism is when the execution of a program is not completely determined by its specification, i.e., at some point during the execution the specification allows the program to choose what to do next. During the execution, this choice is made by a part of the run-time system called the scheduler
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > non-déterminisme = la spécification du programme ne détermine pas complètement le résultat
|
||||
> > cela implique que le programme "choisit" ce qu'il doit faire parfois.
|
||||
> ^DCATKHXKaP4L4LCJZg5383243p6
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 14](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=6&annotation=BIUNAM6V)
|
||||
> We conclude that observable nondeterminism should be supported only if its expressive power is needed.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > C'est le pouvoir d'expression apporté qui peut justifier d'accepter certains problèmes de certains paradigmes.
|
||||
> ^BIUNAM6VaP4L4LCJZg5383243p6
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 14](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=6&annotation=RSLMGUYK)
|
||||
> State is the ability to remember information, or more precisely, to store a sequence of values in time.
|
||||
> ^RSLMGUYKaP4L4LCJZg5383243p6
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 16](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=8&annotation=SVNS3KNF)
|
||||
> Concepts are not combined arbitrarily to form paradigms. They can be organized according to the creative extension principle. This principle was first defined by Felleisen [18] and independently rediscovered in [50].
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Le principe de l'*extension créative* permet d'organiser les concepts pour former réellement un paradigme.
|
||||
> ^SVNS3KNFaP4L4LCJZg5383243p8
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 17](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=9&annotation=VAZ8DBMA)
|
||||
> If we need to model updatable memory, that is, entities that remember and update their past, then we will have to add two arguments to all function calls relative to that entity. The arguments represent the input and output values of the memory. This is unwieldy and it is also not modular because the memory travels throughout the whole program. All this clumsiness is unnecessary if we add one concept to the language: named state.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Les *états nommés* sont une solution efficace pour modéliser la mémoire que l'on peut mettre à jour.
|
||||
> >
|
||||
> > Cela évite d'avoir à ajouter des arguments à toutes les fonctions qui utilisent cet état.
|
||||
> ^VAZ8DBMAaP4L4LCJZg5383243p9
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 17](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=9&annotation=NKKRZRU4)
|
||||
> If we need to model error detection and correction, in which any function can detect an error at any time and transfer control to an error correction routine, then we need to add error codes to all function outputs and conditionals to test all function calls for returned error codes. All this complexity is unnecessary if we add one concept to the language: exceptions.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > les exceptions sont une solution efficace pour éviter d'avoir à gérer soi-même les codes d'erreurs, leur propagation etc.
|
||||
> ^NKKRZRU4aP4L4LCJZg5383243p9
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 17](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=9&annotation=6ZNVVQGI)
|
||||
> The common theme in these three scenarios (and many others!) is that we need to do pervasive (nonlocal) modifications of the program in order to handle a new concept. If the need for pervasive modifications manifests itself, we can take this as a sign that there is a new concept waiting to be discovered. By adding this concept to the language we no longer need these pervasive modifications and we recover the simplicity of the program.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Modification envahissante = signe qu'un nouveau concept peut être découvert
|
||||
> >
|
||||
> > ajouter ce concept au langage => éviter les modifications envahissantes => retrouver la simplicité
|
||||
> ^6ZNVVQGIaP4L4LCJZg5383243p9
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 18](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=10&annotation=242M9EKU)
|
||||
> Prolog: The first paradigm is a logic programming engine based on unification and depth-first search. The second paradigm is imperative: the assert and retract operations which allow a program to add and remove program clauses.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > prolog supporte 2 paradigmes :
|
||||
> > - programmation logique
|
||||
> >
|
||||
> > - programmation impérative (ajout et rétraction de clauses)
|
||||
> ^242M9EKUaP4L4LCJZg5383243p10
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 18](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=10&annotation=TPDCZ85D)
|
||||
> Modeling languages (e.g., Comet, Numerica [48]): The first paradigm is a solver: constraint programming (see Section 7), local search (see the chapter by Philippe Codognet [8]), satisfiability (SAT solvers), and so forth. The second paradigm is object-oriented programming.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Langages de modélisation : supportent 2 paradigmes :
|
||||
> > - programmation par contraintes (avec un solver)
|
||||
> > - OOP
|
||||
> ^TPDCZ85DaP4L4LCJZg5383243p10
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 18](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=10&annotation=TN6TDYPD)
|
||||
> Solving libraries (e.g., Gecode): The first paradigm is a solver library based on advanced search algorithms, such as Gecode [43, 47]. The second paradigm is added by the host language, e.g., C++ and Java support object-oriented programming.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > certaines librairies peuvent ajouter un paradigme à un langage (comme les librairies de *solver*).
|
||||
> ^TN6TDYPDaP4L4LCJZg5383243p10
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 18](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=10&annotation=E7N7DG39)
|
||||
> Language embedding (e.g., SQL): SQL already supports two paradigms: a relational programming engine for logical queries of a database and a transactional interface for concurrent updates of the database. The host language complements this by supporting object-oriented programming, for organization of large programs. This example goes beyond two paradigms to show a design with three complementary paradigms.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > L'intégration d'un langage (embedding) permet de créer une architecture où plusieurs paradigmes complémentaires interagissent.
|
||||
> >
|
||||
> > exemple : SQL supporte le paradigme relationnel, et le paradigme par transactions. Il peut être intégré dans un langage objet.
|
||||
> ^E7N7DG39aP4L4LCJZg5383243p10
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 19](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=11&annotation=X8JQ43BW)
|
||||
> Erlang Programming highly available embedded systems for telecommunications. This project was undertaken by Joe Armstrong and his colleagues at the Ericsson Computer Science Laboratory starting in 1986. The Erlang language was designed and a first efficient and stable implementation was completed in 1991 [5, 6]. An Erlang program consists of isolated named lightweight processes that send each other messages. Because of the isolation, Erlang programs can be run almost unchanged on distributed systems and multi-core processors. The Erlang system has a replicated database, Mnesia, to keep global coherent states. Erlang and its programming platform, the OTP (Open Telecom Platform) system, are being used successfully in commercial systems by Ericsson and other companies [57, 17].
|
||||
> ^X8JQ43BWaP4L4LCJZg5383243p11
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 19](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=11&annotation=CBQAJDG2)
|
||||
> E Programming secure distributed systems with multiple users and multiple security domains. This project was undertaken over many years by different institutions. It started with Dennis and Van Horn’s capability model in 1965 [13] and Carl Hewitt’s Actor model in 1973 [24] and it led via concurrent logic programming to the E language designed by Doug Barnes, Mark Miller, and their colleagues [32, 31]. Predecessors of E have been used to implement various multiuser virtual 19 Peter Van Roy environments. An E program consists of isolated single-threaded vats (processes) hosting active objects that send each other messages. Deterministic concurrency is important in E because nondeterminism can support a covert channel.
|
||||
> ^CBQAJDG2aP4L4LCJZg5383243p11
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 23](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=15&annotation=8QWDQKJU)
|
||||
> A record is a data structure: a group of references to data items with indexed access to each item.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > enregistrement = un ensemble de références à des données avec un accès indexé
|
||||
> > enregistrement = concept derrière le dictionnaire
|
||||
> ^8QWDQKJUaP4L4LCJZg5383243p15
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 23](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=15&annotation=E7BNJFPV)
|
||||
> A symbolic programming language is able to calculate with records: create new records, decompose them, and examine them.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > programmation symbolique => calculer avec des enregistrements
|
||||
> ^E7BNJFPVaP4L4LCJZg5383243p15
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 23](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=15&annotation=LVLX8ZD6)
|
||||
> Many important data structures such as arrays, lists, strings, trees, and hash tables can be derived from records.
|
||||
> ^LVLX8ZD6aP4L4LCJZg5383243p15
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 24](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=16&annotation=BRVCUS8M)
|
||||
> From an implementation viewpoint, a closure combines a procedure with its external references (the references it uses at its definition).
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > fermeture = combiner une fonction avec ses références externes
|
||||
> ^BRVCUS8MaP4L4LCJZg5383243p16
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 24](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=16&annotation=6H6T7X9L)
|
||||
> From the programmer’s viewpoint, a closure is a “packet of work”: a program can transform any instructions into a closure at one point in the program, pass it to another point, and decide to execute it at that point. The result of its execution is the same as if the instructions were executed at the point the closure was created.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > fermeture := permet que le résultat soit le même que si les instructions étaient éxécutées à l'endroit où la fermeture à été créée.
|
||||
> ^6H6T7X9LaP4L4LCJZg5383243p16
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 24](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=16&annotation=F2A5ZRPP)
|
||||
> We have separated the definition of <stmt> from its execution. With this ability we can define control structures such as an if statement or while loop.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > Les fermetures permettent de définir les structures de contrôle (`if`, `while`...).
|
||||
> ^F2A5ZRPPaP4L4LCJZg5383243p16
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 24](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=16&annotation=Z3JJ32SZ)
|
||||
> Instantiation and genericity, normally associated with object-oriented programming, can be done easily by writing functions that return other functions. In object-oriented programming the first function is called a “class” and the second is called an “object”.
|
||||
>
|
||||
> > [!note] Notes
|
||||
> > les fermetures permettent l'instantiation et la généricité, en définissant des fonctions d'ordre supérieur (qui retournent d'autres fonctions).
|
||||
> ^Z3JJ32SZaP4L4LCJZg5383243p16
|
||||
|
||||
> [!cite]+ [Programming Paradigms for Dummies: What Every Programmer Should Know](zotero://select/groups/5383243/items/673TMQRT) - [Page 25](zotero://open-pdf/groups/5383243/items/P4L4LCJZ?page=17&annotation=DEJEICNP)
|
||||
> Separation of concerns, normally associated with aspect-oriented programming, can be done easily by writing functions that take other functions as arguments. For example, Erlang has a function that implements a generic fault-tolerant client/server. It is called with a function argument that defines the server’s behavior. Aspectoriented programming in object-oriented languages is explained in the chapter by Pierre Cointe [9]. It is usually done by syntactic transformations
|
||||
> ^DEJEICNPaP4L4LCJZg5383243p17
|
@ -1,4 +1,4 @@
|
||||
[!cite]+ <span style="<%- if (it.color) { _%> color: <%= it.color %>; --link-external-color: <%= it.color %>;<%_ } -%>">[<%= it.docItem.title%>](<%= it.docItem.backlink%>) - [Page <%= it.pageLabel%>](<%= it.backlink%>)</span>
|
||||
[!zotero]+ <span style="<%- if (it.color) { _%> color: <%= it.color %>; --link-external-color: <%= it.color %>;<%_ } -%>">[<%= it.docItem.title%>](<%= it.docItem.backlink%>) - [Page <%= it.pageLabel%>](<%= it.backlink%>)</span>
|
||||
<%= it.imgEmbed %><%= it.text %>
|
||||
<% if (it.comment) { %>
|
||||
> [!note] Notes
|
||||
|
Loading…
x
Reference in New Issue
Block a user