aboutsummaryrefslogtreecommitdiff
path: root/semestre 2/tpe
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 2/tpe')
-rw-r--r--semestre 2/tpe/.gitignore316
-rw-r--r--semestre 2/tpe/L'informatique au service du bien commun est-ce une nécessité démocratique.md8
-rw-r--r--semestre 2/tpe/La programmation objet expliquée par la théorie des Idées platonicienne.md48
-rw-r--r--semestre 2/tpe/La théorie des Idées de Platon expliquée par la programmation objet.md103
-rw-r--r--semestre 2/tpe/biblio.bib153
-rw-r--r--semestre 2/tpe/memoire.tex142
6 files changed, 667 insertions, 103 deletions
diff --git a/semestre 2/tpe/.gitignore b/semestre 2/tpe/.gitignore
new file mode 100644
index 0000000..300a4d9
--- /dev/null
+++ b/semestre 2/tpe/.gitignore
@@ -0,0 +1,316 @@
+*.pdf
+
+# Created by https://www.toptal.com/developers/gitignore/api/latex
+# Edit at https://www.toptal.com/developers/gitignore?templates=latex
+
+### LaTeX ###
+## Core latex/pdflatex auxiliary files:
+*.aux
+*.lof
+*.log
+*.lot
+*.fls
+*.out
+*.toc
+*.fmt
+*.fot
+*.cb
+*.cb2
+.*.lb
+
+## Intermediate documents:
+*.dvi
+*.xdv
+*-converted-to.*
+# these rules might exclude image files for figures etc.
+# *.ps
+# *.eps
+# *.pdf
+
+## Generated if empty string is given at "Please type another file name for output:"
+.pdf
+
+## Bibliography auxiliary files (bibtex/biblatex/biber):
+*.bbl
+*.bcf
+*.blg
+*-blx.aux
+*-blx.bib
+*.run.xml
+
+## Build tool auxiliary files:
+*.fdb_latexmk
+*.synctex
+*.synctex(busy)
+*.synctex.gz
+*.synctex.gz(busy)
+*.pdfsync
+
+## Build tool directories for auxiliary files
+# latexrun
+latex.out/
+
+## Auxiliary and intermediate files from other packages:
+# algorithms
+*.alg
+*.loa
+
+# achemso
+acs-*.bib
+
+# amsthm
+*.thm
+
+# beamer
+*.nav
+*.pre
+*.snm
+*.vrb
+
+# changes
+*.soc
+
+# comment
+*.cut
+
+# cprotect
+*.cpt
+
+# elsarticle (documentclass of Elsevier journals)
+*.spl
+
+# endnotes
+*.ent
+
+# fixme
+*.lox
+
+# feynmf/feynmp
+*.mf
+*.mp
+*.t[1-9]
+*.t[1-9][0-9]
+*.tfm
+
+#(r)(e)ledmac/(r)(e)ledpar
+*.end
+*.?end
+*.[1-9]
+*.[1-9][0-9]
+*.[1-9][0-9][0-9]
+*.[1-9]R
+*.[1-9][0-9]R
+*.[1-9][0-9][0-9]R
+*.eledsec[1-9]
+*.eledsec[1-9]R
+*.eledsec[1-9][0-9]
+*.eledsec[1-9][0-9]R
+*.eledsec[1-9][0-9][0-9]
+*.eledsec[1-9][0-9][0-9]R
+
+# glossaries
+*.acn
+*.acr
+*.glg
+*.glo
+*.gls
+*.glsdefs
+*.lzo
+*.lzs
+*.slg
+*.slo
+*.sls
+
+# uncomment this for glossaries-extra (will ignore makeindex's style files!)
+# *.ist
+
+# gnuplot
+*.gnuplot
+*.table
+
+# gnuplottex
+*-gnuplottex-*
+
+# gregoriotex
+*.gaux
+*.glog
+*.gtex
+
+# htlatex
+*.4ct
+*.4tc
+*.idv
+*.lg
+*.trc
+*.xref
+
+# hyperref
+*.brf
+
+# knitr
+*-concordance.tex
+# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
+# *.tikz
+*-tikzDictionary
+
+# listings
+*.lol
+
+# luatexja-ruby
+*.ltjruby
+
+# makeidx
+*.idx
+*.ilg
+*.ind
+
+# minitoc
+*.maf
+*.mlf
+*.mlt
+*.mtc[0-9]*
+*.slf[0-9]*
+*.slt[0-9]*
+*.stc[0-9]*
+
+# minted
+_minted*
+*.pyg
+
+# morewrites
+*.mw
+
+# newpax
+*.newpax
+
+# nomencl
+*.nlg
+*.nlo
+*.nls
+
+# pax
+*.pax
+
+# pdfpcnotes
+*.pdfpc
+
+# sagetex
+*.sagetex.sage
+*.sagetex.py
+*.sagetex.scmd
+
+# scrwfile
+*.wrt
+
+# svg
+svg-inkscape/
+
+# sympy
+*.sout
+*.sympy
+sympy-plots-for-*.tex/
+
+# pdfcomment
+*.upa
+*.upb
+
+# pythontex
+*.pytxcode
+pythontex-files-*/
+
+# tcolorbox
+*.listing
+
+# thmtools
+*.loe
+
+# TikZ & PGF
+*.dpth
+*.md5
+*.auxlock
+
+# titletoc
+*.ptc
+
+# todonotes
+*.tdo
+
+# vhistory
+*.hst
+*.ver
+
+# easy-todo
+*.lod
+
+# xcolor
+*.xcp
+
+# xmpincl
+*.xmpi
+
+# xindy
+*.xdy
+
+# xypic precompiled matrices and outlines
+*.xyc
+*.xyd
+
+# endfloat
+*.ttt
+*.fff
+
+# Latexian
+TSWLatexianTemp*
+
+## Editors:
+# WinEdt
+*.bak
+*.sav
+
+# Texpad
+.texpadtmp
+
+# LyX
+*.lyx~
+
+# Kile
+*.backup
+
+# gummi
+.*.swp
+
+# KBibTeX
+*~[0-9]*
+
+# TeXnicCenter
+*.tps
+
+# auto folder when using emacs and auctex
+./auto/*
+*.el
+
+# expex forward references with \gathertags
+*-tags.tex
+
+# standalone packages
+*.sta
+
+# Makeindex log files
+*.lpz
+
+# xwatermark package
+*.xwm
+
+# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
+# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
+# Uncomment the next line to have this generated file ignored.
+#*Notes.bib
+
+### LaTeX Patch ###
+# LIPIcs / OASIcs
+*.vtc
+
+# glossaries
+*.glstex
+
+# End of https://www.toptal.com/developers/gitignore/api/latex
diff --git a/semestre 2/tpe/L'informatique au service du bien commun est-ce une nécessité démocratique.md b/semestre 2/tpe/L'informatique au service du bien commun est-ce une nécessité démocratique.md
new file mode 100644
index 0000000..055928a
--- /dev/null
+++ b/semestre 2/tpe/L'informatique au service du bien commun est-ce une nécessité démocratique.md
@@ -0,0 +1,8 @@
+---
+tags:
+ - sorbonne
+ - philosophie
+ - informatique
+semestre: 2
+---
+Deuxième sujet \ No newline at end of file
diff --git a/semestre 2/tpe/La programmation objet expliquée par la théorie des Idées platonicienne.md b/semestre 2/tpe/La programmation objet expliquée par la théorie des Idées platonicienne.md
new file mode 100644
index 0000000..ab59e6f
--- /dev/null
+++ b/semestre 2/tpe/La programmation objet expliquée par la théorie des Idées platonicienne.md
@@ -0,0 +1,48 @@
+---
+tags:
+ - sorbonne
+ - philosophie
+ - informatique
+semestre: 2
+---
+## Introduction
+Je fréquente beaucoup de développeurs et une bonne partie d'entre eux est intéressée par la philosophie, mais ils ne savent pas du tout par où commencer. Cette absence de repère est totalement compréhensible quand nous faisons face à une montagne de connaissance s'étalant de l'Antiquité lointaine à maintenant. Trouver une entrée accessible dans ces plus de 2500 ans d'histoire est une tache dantesque pour une personne seule.
+
+En tant qu'étudiant en double licence Science-Philosophie, plus précisément en Informatique-Philosophie, je trouve qu'il est de mon devoir de lier ces deux disciplines que tout semble éloigner, notamment pour ceux venant de l'un cherchant à comprendre l'autre. Ce travail personnel encadré (TPE) de la faculté des lettres a été pensé en parallèle avec le sujet que je traite dans l'atelier de recherche encadré (ARE) de la faculté des sciences et d'ingénierie. Ici, j'essaierai de lier la philosophie à l'informatique tandis que mon projet en ARE s'occupera de lier l'informatique à la philosophie.
+
+Pour initier les philosophes à l'informatique, j'ai décidé de vulgariser la programmation objet (POO), un paradigme fondamental en informatique, à l'aide de la théorie des Idées de Platon. Cette théorie philosophe me parait être la meilleure manière d'initier à ce concept informatique particulièrement utilisé en entreprise et très répandu. En effet, de nombreux concepts de cette programmation se rapproche grandement de la théorie platonique de la connaissance : les objets en POO seraient les Idées de Platon et l'instance d'un objet serait l'équivalent de son image.
+
+Avant de plus détailler les liens entre la théorie des Idées et la programmation objet, il me semble essentiel de rappeler l'essence de cette théorie philosophique. Ensuite, je détaillerai ces liens étonnants pour finalement évoquer les limites de cette analogie.
+## La théorie des Idées platoniciennes
+Platon, philosophe antique majeur, a exercé une influence considérable sur toute la philosophie, notamment grâce à sa méthode didactique et ses théories métaphysiques.
+
+La plus importante de tout est sûrement celle stipulant l'existence d'Idées indépendamment de toute réalité sensible : le concept d'âme, de Beau ou de Juste font partie de cette réalité différente. Ces concepts, par opposition aux réalités changeantes du monde sensible, sont immuables : ils ne dépendent pas de notre perception ou de notre opinion. Cette propriété leur permet d'être les objets de la connaissance et de la définition. En effet, en étant immuable, et donc universelle et éternelle, tout savoir sur les Idées sera universellement vrai et applicable partout.
+
+La théorie des Idées permet de construire des objets stables de la connaissance : un cheval qu'il soit blanc ou noir, petit ou grand, maigre ou fort reste un cheval, peu importe ses variations accidentelles. Ce qui définit le cheval ne dépend donc pas de sa représentation sensible, comme pour toutes les autres définitions. C'est cette universalité que Platon appelle Idée.
+
+Ces Idées permettent de comprendre tous les objets en découlant : en étudiant le cheval en soi, j'étudie ce qui définit le cheval, permettant alors de comprendre tous les chevaux possibles. Cela s'oppose à l'étude des propriétés accidentelles des objets, comme la couleur de la robe du cheval, qui ne permettent de comprendre qu'un individu isolé.
+
+*Relation entre l'image et le modèle est le même que celui entre sensible et intelligible*, cf [[2- Intermède]]
+Cette relation est très similaire à celle liant la peinture à son modèle. En effet, la peinture représente le modèle d'une manière imparfaite : certaines proportions ne sont pas respectées, les couleurs ne sont pas identiques, sa position ressemble sans pour autant être la même. Toutes ces variations sont accidentelles puisqu'elles ne redéfinissent pas le modèle de la peinture : nous sommes toujours capables de voir un cheval dans une peinture représentant un cheval. Pour expliciter plus le parallèle entre peinture et modèle, la peinture serait l'équivalent de la représentation sensible (« dans notre monde ») de l'Idée intelligible, qui serait le modèle.
+
+Toute cette théorie permet d'expliciter l'importance de la définition tout en possibilisant la vérité : les connaissances ne portent que sur les Idées (il est inutile d'analyser les choses accidentelles puisqu'elles changent), ce qui les rend universelles, donnant ainsi accès à la vérité.
+## Explication de la programmation objet à l'aide la théorie des Idées
+Quand une développeur conçoit un programme, un logiciel, un site web, il a le choix entre plusieurs approches. Toutes possèdent des avantages comme la robustesse de sa conception et des inconvénients comme la difficulté d'utilisation de la technologie. La programmation objet (POO) est une approche spécifique d'un problème : elle vise à construire des objets génériques qui représentent les états du système. Cette vision de la programmation est si importante qu'elle est considérée comme un paradigme : ce choix modifie grandement l'approche du problème et donc sa résolution.
+
+La POO est très utilisée en entreprise pour sa robustesse et sa portabilité. En effet, en créant un objet représentant un état précis d'un sous-système, on contraint le système à être dans un état forcément connu. De plus, de nombreux langages mettant en place de la POO ne dépendent pas du système d'exploitation ou de l'architecture de la machine pour fonctionner, comme Java, Python ou Ruby. Par contre, son principal désavantage est son absence de flexibilité directement impliquée par sa grande robustesse. De plus, cette approche est souvent plus lourde sur les performances et sur l'écriture du programme.
+
+Mais, concrètement, quelle est l'essence POO ?
+
+Dans une application construite à l'aide la POO, toutes les choses sont représentées à l'aide d'objets, que ça soit la fenêtre de l'application, le texte qui s'affiche ou les boutons sur lesquels l'utilisateur peut appuyer. Ces objets sont définis à l'avance par le développeur : l'objet représentant un texte devra posséder le texte à afficher et l'objet « bouton » devra savoir quelle action effectuée si l'utilisateur clique dessus. Ces définitions ne sont pas particulières : elles sont générales. Elles doivent contenir toutes les représentations possibles des choses utilisant l'objet. Ce concept est l'équivalent des Idées chez Platon. En effet, l'Idée de bouton est immuable et sert à définir le bouton, ce qui s'apparente totalement au rôle de l'objet dans la POO.
+
+Pour utiliser un objet, on crée une instance de ce dernier. Cette instance est particulière et unique : elle possède ses propres caractéristiques découlant de l'objet. Par exemple, une instance de l'objet « bouton » possède sa propre action à exécuter quand l'utilisateur clique dessus. Le lien entre l'instance et l'objet est le même que celui entre le sensible et l'intelligible. L'objet est l'Idée et une instance particulière d'un objet est un objet sensible avec lequel nous pouvons rentrer en contacte numériquement. Cette vision est aussi confirmée par l'interaction de l'utilisateur avec le programme : ce dernier n’interagit numériquement qu'avec des instances d'objet (on ne peut pas interagir numériquement avec un objet, sinon cela reviendrait à interagir numériquement avec une définition, ce qui n'a pas de sens), comme nous qui ne pouvons interagir qu'avec des objets sensibles dans notre monde sensible.
+
+La POO facilite la création d'objet à l'aide de l'héritage, c'est-à-dire qu'un objet peut hériter les propriétés d'un autre. On peut ainsi créer l'objet « texte avec un lien » en héritant les propriétés de l'objet « texte » et en lui rajoutant la fonctionnalité permettant de cliquer. Cet héritage permet d'éviter de se répéter : on ne réexplique pas deux fois ce qu'est un texte, on indique juste à l'ordinateur de regarder comment fonctionne l'objet « texte » et d'appliquer la même logique pour le nouvel objet. L'équivalent de l'héritage dans le monde intelligible serait, par exemple, de donner l'Idée de « lit » puis d'en tirer l'idée de « lit double ». On aurait ainsi que les liens entre « texte » et « texte avec un lien » et entre « lit » et « lit double » est similaire.
+
+Pour résumé, la programmation orienté objet est une approche particulière de la programmation résolvant les problèmes à l'aide de la construction d'objet. Il s'agit d'un analogue à l'Idée platonicienne dans son rôle : ce dernier sert la définition et n'est pas directement accessible à l'utilisateur. L'instance de cet objet est la représentation numérique singulière de l'objet : elle est définie par l'objet, mais possède ses propres particularités accidentelles. Elle est l'analogue de l'objet sensible de la théorie des Idées puisqu'elle est définie par l'objet et que l'utilisateur interagit numériquement avec. Il existe aussi un système d'héritage entre les différents objets pour éviter de répéter des principes. Ce système ressemble au lien entre les Idées de « lit » et de « lit double ».
+## Conclusion
+La théorie des Idées est la théorie métaphysique centrale dans la pensée de Platon. C'est à l'aide de cette dernière qu'il peut justifier toute sa philosophie : les degrés de connaissance, l'utilité de l'âme et la réminiscence découlent des Idées. Ces concepts supplémentaires n'ont, à mes yeux, aucune équivalence en POO, ou plus généralement en programmation. Cette analogie est donc limitée à la théorie des Idées seule, ce qui est contrintuitif quand on connait l'importance des autres théories platoniciennes dans sa métaphysique.
+
+De plus, cette analogie reste une forme de vulgarisation de la POO, sans jamais rentrer dans les détails de son fonctionnement intrinsèque. Elle parait donc difficilement utilisable pour apprendre à développer.
+
+Par contre, elle ne se limite pas à un simple but éducatif. La POO peut véritablement être vue comme une manière de définir un monde intelligible numérique (tous les états possibles du sensible de ce monde sont représentés par des objets de son intelligible), ce que je trouve philosophiquement très intéressant. \ No newline at end of file
diff --git a/semestre 2/tpe/La théorie des Idées de Platon expliquée par la programmation objet.md b/semestre 2/tpe/La théorie des Idées de Platon expliquée par la programmation objet.md
deleted file mode 100644
index f5976d8..0000000
--- a/semestre 2/tpe/La théorie des Idées de Platon expliquée par la programmation objet.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-tags:
- - sorbonne
- - philosophie
- - informatique
-semestre: 2
----
-Idées : vulgariser la théorie des Idées de Platon aux développeurs
-|> demande aussi de vulgariser la programmation objet pour le professeur de philosophie
-|> est lié à mon objectif de devenir prof : vulgarisation est proche de l'enseignement
-## Introduction
-Je fréquente beaucoup de développeurs et une bonne partie d'entre-eux est intéressée par la philosophie, mais il ne savent pas du tout par où commencer. Cette absence de repère est totalement compréhensible quand nous faisons face à une montagne de connaissance s'étalant de l'Antiquité lointaine à maintenant. Trouver une entrée accessible dans ces plus de 2500 ans d'histoire est une tache dantesque pour une personne seule.
-
-En tant qu'étudiant en double licence Science-Philosophie, plus précisément en Informatique-Philosophie, je trouve qu'il est de mon devoir de lier ces deux disciplines que tout semble éloigner, notamment pour ceux venant de l'un cherchant à comprendre l'autre. Ce travail personnel encadré (TPE) de la faculté des lettres a été pensé en parallèle avec le sujet que je traite dans l'atelier de recherche encadré (ARE) de la faculté des sciences et ingénierie. Ici, j'essaierai de lier la philosophie à l'informatique tandis que mon projet de l'ARE s'occupera de lier l'informatique à la philosophie.
-
-Pour initier les développeurs à la philosophie, j'ai décidé de vulgariser la théorie des Idées de Platon en utilisant un paradigme fondamental en informatique : la programmation objet (POO). Ce concept particulièrement utilisé en entreprise et très répandu me semble comme étant la meilleure manière d'initier à l'entreprise philosophique de Platon, auteur essentiel de la philosophie antique ayant servi de fondement à la majorité de la philosophie continentale. En effet, de nombreux concepts de cette programmation se rapproche grandement de la théorie platonique de la connaissance : les objets en POO seraient les Idées de Platon et l'instance d'un objet serait l'équivalent de son image.
-
-Avant de plus détailler les liens entre la théorie des Idées et la programmation objet, il me semble essentiel de vulgariser le fonctionnement de cette théorie pour les philosophes. Ensuite, je détaillerai ces liens étonnant pour finalement critiquer cette analogie surprenante.
-## La programmation objet
-Quand une développeur conçoit un programme, un logiciel, un site web, il a le choix entre plusieurs approches. Toutes possèdent des avantages comme la robustesse de sa conception et des inconvénients comme la difficulté d'utilisation de la technologie. La programmation objet (POO) est une approche spécifique d'un problème : elle vise à construire des objets génériques qui représentent les états du système. Cette vision de la programmation est si importante qu'elle est considérée comme un paradigme : ce choix modifie grandement l'approche du problème et donc sa résolution.
-
-La POO est très utilisée en entreprise pour sa robustesse et sa portabilité. En effet, en créant un objet représentant un état précis d'un sous-système, on contraint le système à être dans un état forcément connu. De plus, de nombreux langages mettant en place de la POO ne dépendent pas du système d'exploitation ou de l'architecture de la machine pour fonctionner, comme Java, Python ou Ruby. Par contre, son principal désavantage est son absence de flexibilité directement impliquée par sa grande robustesse. De plus, cette approche est souvent plus lourde sur les performances et sur l'écriture du programme.
-
-Mais, concrètement, à quoi ressemble de la POO ?
-
-Prenons l'exemple d'un jeu vidéo. Son créateur souhaite intégrer une chaise pour que le joueur puisse s’asseoir. Le développeur devra donc créer l'objet chaise décrivant toutes les propriétés et tous les états possibles de la chaise. Il s'agit philosophiquement parlant de l'*essence* de la chaise. Cette déclaration s'écrit dans une classe, qui n'est que la représentation formelle de l'objet. Dans notre cas, la chaise doit être repérée dans l'espace : on doit donc lui rajouter des coordonnées.
-```
-classe Chaise = {
- Nombre x
- Nombre y
- Nombre z
-}
-```
-Ce pseudo-code représente la chaise telle qu'on la définit au-dessus : elle possède trois coordonnées nommées `x`, `y` et `z` qui sont des nombres.
-
-Cette définition très simple nous limite grandement : on ne peut pas s'asseoir dessus par exemple. On doit donc lui rajouter une nouvelle propriété binaire indiquant si quelqu'un est assis dessus ainsi que cette personne. On obtient donc :
-```
-classe Chaise = {
- Nombre x
- Nombre y
- Nombre z
-
- Binaire une_personne_est_elle_assise
- Personne personne_assise
-}
-```
-Notre chaise est maintenant plus intéressante, mais on ne peut toujours pas s'asseoir dessus : on peut juste représenter une personne assise. Pour rajouter cette fonctionnalité, on doit créer une méthode pour s'asseoir dessus. Pour appliquer la méthode, on a besoin de lui donner la personne à asseoir :
-```
-classe Chaise = {
- Nombre x
- Nombre y
- Nombre z
-
- Binaire une_personne_est_elle_assise
- Personne personne_assise
-
- méthode asseoir_une_personne(Personne personne_a_s_asseoir)
-}
-```
-Maintenant, notre chaise est totalement fonctionnelle : on peut la mettre dans l'espace et faire s'asseoir quelqu'un dessus, mais on ne peut pas la créer ! Pour ce faire, on rajoute une méthode de création appelée constructeur, qui ici a besoin des coordonnées dans l'espace :
-```
-classe Chaise = {
- Nombre x
- Nombre y
- Nombre z
-
- Binaire une_personne_est_elle_assise
- Personne personne_assise
-
- méthode asseoir_une_personne(Personne personne_assise)
-
- méthode constructeur(Nombre x, Nombre y, Nombre z)
-}
-```
-Notre classe `Chaise` est prête à être utilisée. On peut maintenant créer une nouvelle chaise en lui indiquant où elle est. Cette nouvelle instance ne modifie pas la classe `Chaise` : elle ne fait qu'utiliser ses propriétés. L'instance de la classe est accidentelle par rapport à sa classe.
-
-Après, si on le souhaite, on peut créer des relations entre les classes pour simplifier la représentation. Je peux, par exemple, créer une classe `ObjetDansEspace` qui possédera déjà les propriétés pour être représentée dans l'espace. On dit alors que la classe `Chaise` étend de la classe `ObjetDansEspace` ce qui peut être représenté comme ceci :
-```
-classe Chaise étend de ObjetDansEspace = {
- Binaire une_personne_est_elle_assise
- Personne personne_assise
-
- méthode asseoir_une_personne(Personne personne_assise)
-}
-```
-Nous n'avons plus besoin de définir les coordonnées et le constructeur car la classe `ObjetDansEspace` s'en occupe à notre place. Si on devait schématiser, on aurait quelque chose comme ça :
-```mermaid
-flowchart RL
- A[Chaise] ---> B[ObjetDansEspace]
-```
-La flèche indique que la chaise est un objet dans l'espace.
-
-D'un point de vue plus théorique, toutes les classes sont des objets - d'où le nom de programmation objet ! -, donc on aurait :
-```mermaid
-flowchart RL
- A[Chaise] ---> B[ObjetDansEspace]
- B ---> C[Objet]
-```
-
-Maintenant que l'on possède les bases en programmation objet, on peut passer à la théorie des Idées.
-## La programmation objet comme analogie de la théorie des Idées
-## Critique de l'analogie
-## Conclusion \ No newline at end of file
diff --git a/semestre 2/tpe/biblio.bib b/semestre 2/tpe/biblio.bib
new file mode 100644
index 0000000..47b2f1b
--- /dev/null
+++ b/semestre 2/tpe/biblio.bib
@@ -0,0 +1,153 @@
+@article{JavaTechnique2024,
+ title = {{Java (technique)}},
+ year = {2024},
+ month = dec,
+ journal = {Wikip{\'e}dia},
+ urldate = {2025-05-03},
+ abstract = {Java est une technique informatique d{\'e}velopp{\'e}e initialement par Sun Microsystems puis acquise par Oracle {\`a} la suite du rachat de l'entreprise. D{\'e}fini {\`a} l'origine comme un langage de programmation, Java a {\'e}volu{\'e} pour devenir un ensemble coh{\'e}rent d'{\'e}l{\'e}ments techniques et non techniques. Ainsi, la technologie Java regroupe : des standards (la plateforme Java) d{\'e}finis sous forme de sp{\'e}cification par le Java Community Process (JCP), en trois {\'e}ditions : Java SE (standard edition), Java EE (enterprise edition), s'appuyant sur Java SE, Java ME (micro edition), ind{\'e}pendante des deux pr{\'e}c{\'e}dentes ; des logiciels (langages informatiques, biblioth{\`e}ques, frameworks, serveurs d'application, outils d'aide au d{\'e}veloppement), dont : des impl{\'e}mentations (concurrentes) de ces sp{\'e}cifications, un {\'e}cosyst{\`e}me d'autres logiciels s'appuyant sur tout ou partie de ces standards, voire leur faisant concurrence ; des communaut{\'e}s d'entreprises, organisations {\`a} but non lucratif (fondations, Java User Groups, universit{\'e}s) et ind{\'e}pendants, membres ou non du JCP, poss{\'e}dant tout ou partie des marques, brevets, parts de march{\'e} li{\'e}s {\`a} la technologie Java. Java est un des termes les plus connus du monde de l'informatique et de l'Internet. Sa notori{\'e}t{\'e} est telle que Sun, avant d'{\^e}tre achet{\'e} par Oracle Corporation, a d{\'e}cid{\'e} de l'utiliser pour son symbole boursier au Nasdaq, symbole qui {\'e}tait SUNW {\`a} l'origine, et est devenu JAVA. Java est utilis{\'e} dans une grande vari{\'e}t{\'e} de plateformes depuis les syst{\`e}mes embarqu{\'e}s et les t{\'e}l{\'e}phones mobiles, les ordinateurs individuels, les serveurs, les applications d'entreprise, les superordinateurs, etc.},
+ copyright = {Creative Commons Attribution-ShareAlike License},
+ langid = {french},
+ annotation = {Page Version ID: 220847226},
+ file = {/home/anhgelus/Zotero/storage/ZUEV4X8H/Java_(technique).html}
+}
+
+@misc{MostUsedLanguages2024,
+ title = {Most Used Languages among Software Developers Globally 2024},
+ year = {2024},
+ month = jul,
+ journal = {Statista},
+ urldate = {2025-05-03},
+ abstract = {As of 2024, JavaScript and HTML/CSS were the most commonly used programming languages among software developers around the world, with more than 62 percent of respondents stating that they used JavaScript and just around 53 percent using HTML/CSS.},
+ howpublished = {https://www.statista.com/statistics/793628/worldwide-developer-survey-most-used-languages/},
+ langid = {english},
+ file = {/home/anhgelus/Zotero/storage/S2NIZPMG/worldwide-developer-survey-most-used-languages.html}
+}
+
+@article{ParadigmeProgrammation2025,
+ title = {{Paradigme (programmation)}},
+ year = {2025},
+ month = jan,
+ journal = {Wikip{\'e}dia},
+ urldate = {2025-05-03},
+ abstract = {Le paradigme de programmation est la fa{\c c}on (parmi d'autres) d'approcher la programmation informatique et de formuler les solutions aux probl{\`e}mes et leur formalisation dans un langage de programmation appropri{\'e}. Ce n'est pas de la m{\'e}thodologie contenant une m{\'e}thode ; cette derni{\`e}re organise le traitement des probl{\`e}mes reconnus dans l'{\'e}cosyst{\`e}me concern{\'e} pour aboutir {\`a} la solution conceptuelle et programme ex{\'e}cutable.},
+ copyright = {Creative Commons Attribution-ShareAlike License},
+ langid = {french},
+ annotation = {Page Version ID: 222561462},
+ file = {/home/anhgelus/Zotero/storage/9ESBWCFG/Paradigme_(programmation).html}
+}
+
+@inproceedings{pereiraEnergyEfficiencyProgramming2017,
+ title = {Energy Efficiency across Programming Languages: How Do Energy, Time, and Memory Relate?},
+ shorttitle = {Energy Efficiency across Programming Languages},
+ booktitle = {Proceedings of the 10th {{ACM SIGPLAN International Conference}} on {{Software Language Engineering}}},
+ author = {Pereira, Rui and Couto, Marco and Ribeiro, Francisco and Rua, Rui and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Saraiva, Jo{\~a}o},
+ year = {2017},
+ month = oct,
+ series = {{{SLE}} 2017},
+ pages = {256--267},
+ publisher = {Association for Computing Machinery},
+ address = {New York, NY, USA},
+ doi = {10.1145/3136014.3136031},
+ urldate = {2025-05-03},
+ abstract = {This paper presents a study of the runtime, memory usage and energy consumption of twenty seven well-known software languages. We monitor the performance of such languages using ten different programming problems, expressed in each of the languages. Our results show interesting findings, such as, slower/faster languages consuming less/more energy, and how memory usage influences energy consumption. Finally, we show how to use our results to provide software engineers support to decide which language to use when energy efficiency is a concern.},
+ isbn = {978-1-4503-5525-4},
+ file = {/home/anhgelus/Zotero/storage/ZHQPWXF7/Pereira et al. - 2017 - Energy efficiency across programming languages how do energy, time, and memory relate.pdf}
+}
+
+@article{Platon2025,
+ title = {{Platon}},
+ year = {2025},
+ month = mar,
+ journal = {Wikip{\'e}dia},
+ urldate = {2025-05-03},
+ abstract = {Platon (en grec ancien : {$\Pi\lambda\acute{\alpha}\tau\omega\nu$} / Pl{\'a}t{\^o}n /pl{\'a}.tɔːn/), n{\'e} en 428 / 427 av. J.-C. et mort en 348 / 347 av. J.-C. {\`a} Ath{\`e}nes, est un philosophe antique de la Gr{\`e}ce classique, contemporain de la d{\'e}mocratie ath{\'e}nienne et des sophistes qu'il critiqua vigoureusement. Il reprit le travail philosophique de certains de ses pr{\'e}d{\'e}cesseurs, notamment Socrate dont il fut l'{\'e}l{\`e}ve, ainsi que Parm{\'e}nide, H{\'e}raclite et Pythagore, afin d'{\'e}laborer sa propre pens{\'e}e. Celle-ci explore la plupart des champs importants, c'est-{\`a}-dire la m{\'e}taphysique, l'{\'e}thique, l'esth{\'e}tique et la politique. Il eut notamment comme {\'e}l{\`e}ve Aristote {\`a} l'Acad{\'e}mie qu'il a lui-m{\^e}me fond{\'e}e {\`a} Ath{\`e}nes. Son {\oe}uvre, compos{\'e}e presque exclusivement de dialogues, produit les premi{\`e}res formulations classiques des probl{\`e}mes majeurs de l'histoire de la philosophie. Chaque dialogue de Platon est l'occasion d'interroger un sujet donn{\'e}, par exemple le beau ou le courage. Il y d{\'e}veloppe une m{\'e}thode qu'il appelle dialectique ou ma{\"i}eutique. Il voua la majeure partie de son activit{\'e} {\`a} la philosophie premi{\`e}re, mais il se consacra aussi aux apparences et aborda l'histoire naturelle dans laquelle il voulut {\'e}tablir deux principes : l'un subissant, comme la mati{\`e}re, appel{\'e} r{\'e}cepteur universel ; l'autre agissant, comme une cause, qu'il rattache {\`a} la puissance du dieu et du Bien. Platon d{\'e}veloppe une r{\'e}flexion sur les Id{\'e}es commun{\'e}ment appel{\'e}e th{\'e}orie des formes ou th{\'e}orie des Id{\'e}es, dans laquelle la r{\'e}alit{\'e} sensible est consid{\'e}r{\'e}e comme un ensemble d'objets participant de leurs mod{\`e}les immuables. La Forme supr{\^e}me est le principe du Bien, englobant les arch{\'e}types du Juste, du Bon et du Beau. La philosophie politique de Platon consid{\`e}re que la Cit{\'e} juste doit {\^e}tre construite selon le mod{\`e}le du Bien en soi. Dans La R{\'e}publique, il d{\'e}veloppe en cons{\'e}quence l'id{\'e}e du philosophe roi. La pens{\'e}e de Platon n'est pas monolithique. Une partie de ses dialogues aboutissent {\`a} des apories philosophiques : apportant une solution aux probl{\`e}mes pos{\'e}s, ils ne constituent pas une r{\'e}ponse unique et d{\'e}finitive. Un long d{\'e}bat a donc agit{\'e} les commentateurs pour d{\'e}terminer si Platon professait une philosophie dogmatique ou sceptique. Il est g{\'e}n{\'e}ralement consid{\'e}r{\'e} comme l'un des premiers philosophes grecs, sinon comme l'inventeur de la philosophie, au point que Whitehead a pu dire : << La philosophie occidentale n'est qu'une suite de notes de bas de page aux dialogues de Platon >>. Th{\'e}ophraste, parlant des philosophes, dit de Platon qu'il fut le premier par la renomm{\'e}e et le g{\'e}nie, tout en {\'e}tant le dernier dans la chronologie.},
+ copyright = {Creative Commons Attribution-ShareAlike License},
+ langid = {french},
+ annotation = {Page Version ID: 223756163},
+ file = {/home/anhgelus/Zotero/storage/XWD9LJQT/Platon.html}
+}
+
+@book{platonPhedon1991,
+ title = {{Ph{\'e}don}},
+ author = {Platon},
+ year = {1991},
+ month = mar,
+ publisher = {Flammarion},
+ address = {Paris},
+ urldate = {2025-05-03},
+ abstract = {D{\'e}couvrez l'ouvrage Ph{\'e}don},
+ isbn = {978-2-08-070489-4},
+ langid = {french},
+ annotation = {Traduction par Monique Dixsaut},
+ file = {/home/anhgelus/Zotero/storage/JISTAEBE/phedon.html}
+}
+
+@book{platonSophiste2022,
+ title = {{Le Sophiste}},
+ author = {Platon},
+ year = {2022},
+ month = sep,
+ series = {{Les Dialogues de Platon}},
+ publisher = {Vrin},
+ address = {Paris},
+ urldate = {2025-05-03},
+ abstract = {D{\'e}couvrez l'ouvrage Le Sophiste {\textbar} Collection Les Dialogues de Platon},
+ isbn = {978-2-7116-3060-8},
+ langid = {french},
+ annotation = {Traduction de Monique Dixsaut},
+ file = {/home/anhgelus/Zotero/storage/IQPTXNJJ/le-sophiste.html}
+}
+
+@book{platonTheetete2016,
+ title = {{Th{\'e}{\'e}t{\`e}te}},
+ author = {Platon},
+ year = {2016},
+ month = jun,
+ publisher = {Flammarion},
+ address = {Paris},
+ urldate = {2025-05-03},
+ abstract = {D{\'e}couvrez l'ouvrage Th{\'e}{\'e}t{\`e}te},
+ isbn = {978-2-08-138670-9},
+ langid = {french},
+ annotation = {Traduction par Michel Narcy},
+ file = {/home/anhgelus/Zotero/storage/44QMZJQN/theetete.html}
+}
+
+@article{ProgrammationOrienteeObjet2025,
+ title = {{Programmation orient{\'e}e objet}},
+ year = {2025},
+ month = jan,
+ journal = {Wikip{\'e}dia},
+ urldate = {2025-05-03},
+ abstract = {La programmation orient{\'e}e objet (POO), ou programmation par objet, est un paradigme de programmation informatique. Elle consiste en la d{\'e}finition et l'interaction de briques logicielles appel{\'e}es objets ; un objet repr{\'e}sente un concept, une id{\'e}e ou toute entit{\'e} du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il poss{\`e}de une structure interne et un comportement, et il sait interagir avec ses pairs. Il s'agit donc de repr{\'e}senter ces objets et leurs relations ; l'interaction entre les objets via leurs relations permet de concevoir et r{\'e}aliser les fonctionnalit{\'e}s attendues, de mieux r{\'e}soudre le ou les probl{\`e}mes. D{\`e}s lors, l'{\'e}tape de mod{\'e}lisation rev{\^e}t une importance majeure et n{\'e}cessaire pour la POO. C'est elle qui permet de transcrire les {\'e}l{\'e}ments du r{\'e}el sous forme virtuelle. La programmation par objet consiste {\`a} utiliser des techniques de programmation pour mettre en {\oe}uvre une conception bas{\'e}e sur les objets. Celle-ci peut {\^e}tre {\'e}labor{\'e}e en utilisant des m{\'e}thodologies de d{\'e}veloppement logiciel objet, dont la plus connue est le processus unifi{\'e} (<< Unified Software Development Process >> en anglais), et exprim{\'e}e {\`a} l'aide de langages de mod{\'e}lisation tels que le Unified Modeling Language (UML). La programmation orient{\'e}e objet est facilit{\'e}e par un ensemble de techniques d{\'e}di{\'e}es : les langages de programmation : Ada, AS3, C++, Common Lisp, C\#, Dart, Eiffel, Fortran 2003, Haxe, Java, JavaScript, Kotlin, LOGO, Lua, Matlab, Objective-C, Object Pascal, Perl, PHP, Python, R, Raku, Ruby, Scala, Simula, Smalltalk, Swift, Vala, VB.NET ; les outils de mod{\'e}lisation qui permettent de concevoir sous forme de sch{\'e}mas semi-formels la structure d'un programme (Objecteering (en), UMLDraw, Rhapsody, DBDesigner{\dots}) ; les bus distribu{\'e}s (DCOM, CORBA, RMI, Pyro{\dots}) ; les ateliers de g{\'e}nie logiciel ou AGL (Visual Studio pour des langages Dotnet, NetBeans ou Eclipse pour le langage Java). Il existe actuellement deux grandes cat{\'e}gories de langages {\`a} objets : les langages {\`a} classes, que ceux-ci soient sous forme fonctionnelle (Common Lisp Object System), imp{\'e}rative (C++, Java) ou les deux (Python, OCaml) ; les langages {\`a} prototypes (JavaScript, Lua).},
+ copyright = {Creative Commons Attribution-ShareAlike License},
+ langid = {french},
+ annotation = {Page Version ID: 221726719},
+ file = {/home/anhgelus/Zotero/storage/IIY7EPIS/Programmation_orientée_objet.html}
+}
+
+@article{PythonLangage2025,
+ title = {{Python (langage)}},
+ year = {2025},
+ month = may,
+ journal = {Wikip{\'e}dia},
+ urldate = {2025-05-03},
+ abstract = {Python (prononc{\'e} /pi.t{\~ɔ}/) est un langage de programmation interpr{\'e}t{\'e}, multiparadigme et multiplateformes. Il favorise la programmation imp{\'e}rative structur{\'e}e, fonctionnelle et orient{\'e}e objet. Il est dot{\'e} d'un typage dynamique fort, d'une gestion automatique de la m{\'e}moire par ramasse-miettes et d'un syst{\`e}me de gestion d'exceptions ; il est ainsi similaire {\`a} Perl, Ruby, Scheme, Smalltalk et Tcl. Le langage Python est plac{\'e} sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plateformes informatiques, des smartphones aux ordinateurs centraux, de Windows {\`a} Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et peut aussi {\^e}tre traduit en Java ou .NET. Il est con{\c c}u pour optimiser la productivit{\'e} des programmeurs en offrant des outils de haut niveau et une syntaxe simple {\`a} utiliser. Il est {\'e}galement appr{\'e}ci{\'e} par certains p{\'e}dagogues qui y trouvent un langage o{\`u} la syntaxe, clairement s{\'e}par{\'e}e des m{\'e}canismes de bas niveau, permet une initiation ais{\'e}e aux concepts de base de la programmation. Selon l'Index TIOBE, notamment en raison de son efficacit{\'e} pour l'apprentissage automatique, sa popularit{\'e} va croissante ; et en 2022 n'a toujours pas montr{\'e} de signe de ralentissement.},
+ copyright = {Creative Commons Attribution-ShareAlike License},
+ langid = {french},
+ annotation = {Page Version ID: 225320605},
+ file = {/home/anhgelus/Zotero/storage/KGM73G3C/Python_(langage).html}
+}
+
+@article{Ruby2025,
+ title = {{Ruby}},
+ year = {2025},
+ month = mar,
+ journal = {Wikip{\'e}dia},
+ urldate = {2025-05-03},
+ abstract = {Ruby est un langage de programmation libre. Il est interpr{\'e}t{\'e}, orient{\'e} objet et multi-paradigme. Le langage a {\'e}t{\'e} standardis{\'e} au Japon en 2011 (JIS X 3017:2011), et en 2012 par l'Organisation internationale de normalisation (ISO 30170:2012).},
+ copyright = {Creative Commons Attribution-ShareAlike License},
+ langid = {french},
+ annotation = {Page Version ID: 224093127},
+ file = {/home/anhgelus/Zotero/storage/LJP5V966/Ruby.html}
+}
diff --git a/semestre 2/tpe/memoire.tex b/semestre 2/tpe/memoire.tex
new file mode 100644
index 0000000..de81111
--- /dev/null
+++ b/semestre 2/tpe/memoire.tex
@@ -0,0 +1,142 @@
+%%=====================================================================================
+%%
+%% Filename: cours.tex
+%%
+%% Description:
+%%
+%% Version: 1.0
+%% Created: 03/06/2024
+%% Revision: none
+%%
+%% Author: YOUR NAME (),
+%% Organization:
+%% Copyright: Copyright (c) 2024, YOUR NAME
+%%
+%% Notes:
+%%
+%%=====================================================================================
+\documentclass[a4paper, titlepage, 12pt]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage[french]{babel}
+\usepackage{amsmath, amssymb}
+\usepackage{amsthm}
+\usepackage[svgnames]{xcolor}
+\usepackage{thmtools}
+\usepackage{lipsum}
+\usepackage{framed}
+\usepackage[skip=12pt, indent=24pt]{parskip}
+\usepackage{titlesec}
+\usepackage{newtxtext}
+\usepackage{setspace}
+\usepackage{hyperref}
+
+% \renewcommand{\familydefault}{\sfdefault}
+
+\onehalfspacing
+% \geometry{
+% a4paper,
+% textwidth=160mm,
+% textheight=240mm
+% }
+% figure support
+\usepackage{import}
+\usepackage{xifthen}
+\pdfminorversion=7
+\usepackage{pdfpages}
+\usepackage{transparent}
+\newcommand{\incfig}[1]{%
+ \def\svgwidth{\columnwidth}
+ \import{./figures/}{#1.pdf_tex}
+}
+
+\pdfsuppresswarningpagegroup=1
+
+\newenvironment{AQT}{{\fontfamily{qbk}\selectfont AQT}}
+
+\usepackage{LobsterTwo}
+\titleformat{\section}{\LobsterTwo \huge\bfseries}{\thesection.}{1em}{}
+\titleformat{\subsection}{\vspace{2em}\LobsterTwo \Large\bfseries}{\thesubsection.}{1em}{}
+\titleformat{\subsubsection}{\vspace{1em}\LobsterTwo \large\bfseries}{\thesubsubsection.}{1em}{}
+
+\newenvironment{lititle}%
+{\vspace{7mm}\LobsterTwo \large}%
+{\\}
+
+\renewenvironment{proof}{$\square$ \footnotesize\textit{Démonstration.}}{\begin{flushright}$\blacksquare$\end{flushright}}
+
+\newenvironment{longquote}%
+{\vspace{-9pt}\begin{center}\begin{minipage}{120mm}\singlespacing\footnotesize «}%
+{»\end{minipage}\end{center}\vspace{9pt}}
+
+\title{La programmation objet expliquée par la théorie des Idées platonicienne}
+\author{
+ William Hergès\thanks{Sorbonne Université}
+}
+
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \newpage
+
+ J'utilise les acronymes suivants~:
+ \begin{itemize}
+ \item \verb|POO| pour programmation orientée objet, synonyme de programmation objet
+ \end{itemize}
+
+ \newpage
+ \section{Introduction}
+ Je fréquente beaucoup de développeurs et une bonne partie d'entre eux est intéressée par la philosophie, mais ils ne savent pas du tout par où commencer. Cette absence de repère est totalement compréhensible quand nous faisons face à une montagne de connaissance s'étalant de l'Antiquité lointaine à maintenant. Trouver une entrée accessible dans ces plus de 2500 ans d'histoire est une tache dantesque pour une personne seule.
+
+ En tant qu'étudiant en double licence Science-Philosophie, plus précisément en Informatique-Philosophie, je trouve qu'il est de mon devoir de lier ces deux disciplines que tout semble éloigner, notamment pour ceux venant de l'un cherchant à comprendre l'autre. Ce travail personnel encadré (TPE) de la faculté des lettres a été pensé en parallèle avec le sujet que je traite dans l'atelier de recherche encadré (ARE) de la faculté des sciences et d'ingénierie. Ici, j'essaierai de lier la philosophie à l'informatique tandis que mon projet en ARE s'occupera de lier l'informatique à la philosophie.
+
+ Pour initier les philosophes à l'informatique, j'ai décidé de vulgariser la programmation objet (POO), un paradigme fondamental en informatique, à l'aide de la théorie des Idées de Platon. Cette théorie philosophe me parait être la meilleure manière d'initier à ce concept informatique particulièrement utilisé en entreprise et très répandu~\cite{MostUsedLanguages2024}. En effet, de nombreux concepts de cette programmation se rapprochent grandement de la théorie platonique de la connaissance~: les objets en POO seraient les Idées de Platon et l'instance d'un objet serait l'équivalent de son image.
+
+ Avant de plus détailler les liens entre la théorie des Idées et la programmation objet, il me semble essentiel de rappeler l'essence de cette théorie philosophique. Ensuite, je détaillerai ces liens étonnants.
+
+ \newpage
+ \section{La théorie des Idées platoniciennes}
+ Platon, philosophe antique majeur, a exercé une influence considérable sur toute la philosophie, notamment grâce à sa méthode didactique et ses théories métaphysiques~\cite{Platon2025}.
+
+ La plus importante de tout est sûrement celle stipulant l'existence d'Idées indépendamment de toute réalité sensible~: le concept d'âme, de Beau ou de Juste font partie de cette réalité différente. Ces concepts, par opposition aux réalités changeantes du monde sensible, sont immuables~: ils ne dépendent pas de notre perception ou de notre opinion. Cette propriété leur permet d'être les objets de la connaissance et de la définition. En effet, en étant immuable, et donc universelle et éternelle, tout savoir sur les Idées sera universellement vrai et applicable partout~\cite{platonTheetete2016}.
+
+ La théorie des Idées permet de construire des objets stables de la connaissance~: un cheval qu'il soit blanc ou noir, petit ou grand, maigre ou fort reste un cheval, peu importe ses variations accidentelles. Ce qui définit le cheval ne dépend donc pas de sa représentation sensible, comme pour toutes les autres définitions. C'est cette universalité que Platon appelle Idée~\cite{platonTheetete2016}.
+
+ Ces Idées permettent de comprendre tous les objets en découlant~: en étudiant le cheval en soi, j'étudie ce qui définit le cheval, permettant alors de comprendre tous les chevaux possibles. Cela s'oppose à l'étude des propriétés accidentelles des objets, comme la couleur de la robe du cheval, qui ne permettent de comprendre qu'un individu isolé.
+
+ Cette relation est très similaire à celle liant la peinture à son modèle. En effet, la peinture représente le modèle d'une manière imparfaite~: certaines proportions ne sont pas respectées, les couleurs ne sont pas identiques, sa position ressemble sans pour autant être la même. Toutes ces variations sont accidentelles puisqu'elles ne redéfinissent pas le modèle de la peinture~: nous sommes toujours capables de voir un cheval dans une peinture représentant un cheval. Pour expliciter plus le parallèle entre peinture et modèle, la peinture serait l'équivalent de la représentation sensible («~dans notre monde~») de l'Idée intelligible, qui serait le modèle~\cite{platonSophiste2022}.
+
+ Toute cette théorie permet d'expliciter l'importance de la définition tout en possibilisant la vérité~: les connaissances ne portent que sur les Idées (il est inutile d'analyser les choses accidentelles puisqu'elles changent), ce qui les rend universelles, donnant ainsi accès à la vérité~\cite{platonTheetete2016}.
+
+ \newpage
+ \section{Explication de la programmation objet à l'aide la théorie des Idées}
+
+ Quand un développeur conçoit un programme, un logiciel, un site web, il a le choix entre plusieurs approches. Toutes possèdent des avantages comme la robustesse de sa conception et des inconvénients comme la difficulté d'utilisation de la technologie. La programmation objet (POO) est une approche spécifique d'un problème~: elle vise à construire des objets génériques qui représentent les états du système. Cette vision de la programmation est si importante qu'elle est considérée comme un paradigme~: ce choix modifie grandement l'approche du problème et donc sa résolution~\cite{ParadigmeProgrammation2025}.
+
+ La POO est très utilisée en entreprise pour sa robustesse et sa portabilité. En effet, en créant un objet représentant un état précis d'un sous-système, on contraint le système à être dans un état forcément connu. De plus, de nombreux langages mettant en place de la POO ne dépendent pas du système d'exploitation ou de l'architecture de la machine pour fonctionner, comme Java~\cite{JavaTechnique2024}, Python~\cite{PythonLangage2025} ou Ruby~\cite{Ruby2025}. Par contre, son principal désavantage est son absence de flexibilité directement impliquée par sa grande robustesse. De plus, cette approche est souvent plus lourde sur les performances~\cite{pereiraEnergyEfficiencyProgramming2017} et sur l'écriture du programme.
+
+ Mais, concrètement, quelle est l'essence POO~?
+
+ Dans une application construite à l'aide la POO, toutes les choses sont représentées à l'aide d'objets, que ça soit la fenêtre de l'application, le texte qui s'affiche ou les boutons sur lesquels l'utilisateur peut appuyer. Ces objets sont définis à l'avance par le développeur~: l'objet représentant un texte devra posséder le texte à afficher et l'objet «~bouton~» devra savoir quelle action effectuée si l'utilisateur clique dessus. Ces définitions ne sont pas particulières~: elles sont générales. Elles doivent contenir toutes les représentations possibles des choses utilisant l'objet~\cite{ProgrammationOrienteeObjet2025}. Ce concept est l'équivalent des Idées chez Platon. En effet, l'Idée de bouton est immuable et sert à définir le bouton, ce qui s'apparente totalement au rôle de l'objet dans la POO.
+
+ Pour utiliser un objet, on crée une instance de ce dernier. Cette instance est particulière et unique~: elle possède ses propres caractéristiques découlant de l'objet. Par exemple, une instance de l'objet «~bouton~» possède sa propre action à exécuter quand l'utilisateur clique dessus~\cite{ProgrammationOrienteeObjet2025}. Le lien entre l'instance et l'objet est le même que celui entre le sensible et l'intelligible. L'objet est l'Idée et une instance particulière d'un objet est un objet sensible avec lequel nous pouvons rentrer en contact numériquement. Cette vision est aussi confirmée par l'interaction de l'utilisateur avec le programme~: ce dernier n’interagit numériquement qu'avec des instances d'objet (on ne peut pas interagir numériquement avec un objet, sinon cela reviendrait à interagir numériquement avec une définition, ce qui n'a pas de sens), comme nous qui ne pouvons interagir qu'avec des objets sensibles dans notre monde sensible.
+
+ La POO facilite la création d'objet à l'aide de l'héritage, c'est-à-dire qu'un objet peut hériter les propriétés d'un autre. On peut ainsi créer l'objet «~texte avec un lien~» en héritant les propriétés de l'objet «~texte~» et en lui rajoutant la fonctionnalité permettant de cliquer. Cet héritage permet d'éviter de se répéter~: on ne réexplique pas deux fois ce qu'est un texte, on indique juste à l'ordinateur de regarder comment fonctionne l'objet «~texte~» et d'appliquer la même logique pour le nouvel objet~\cite{ProgrammationOrienteeObjet2025}. L'équivalent de l'héritage dans le monde intelligible serait, par exemple, de donner l'Idée de «~lit~» puis d'en tirer l'idée de «~lit double~». On aurait ainsi que les liens entre «~texte~» et «~texte avec un lien~» et entre «~lit~» et «~lit double~» est similaire.
+
+ Pour résumer, la programmation orienté objet est une approche particulière de la programmation résolvant les problèmes à l'aide de la construction d'objet. Il s'agit d'un analogue à l'Idée platonicienne dans son rôle~: ce dernier sert la définition et n'est pas directement accessible à l'utilisateur. L'instance de cet objet est la représentation numérique singulière de l'objet~: elle est définie par l'objet, mais possède ses propres particularités accidentelles. Elle est l'analogue de l'objet sensible de la théorie des Idées puisqu'elle est définie par l'objet et que l'utilisateur interagit numériquement avec. Il existe aussi un système d'héritage entre les différents objets pour éviter de répéter des principes. Ce système ressemble au lien entre les Idées de «~lit~» et de «~lit double~».
+
+ \newpage
+ \section{Conclusion}
+ La théorie des Idées est la théorie métaphysique centrale dans la pensée de Platon. C'est à l'aide de cette dernière qu'il peut justifier toute sa philosophie~: degrés de connaissance, utilité de l'âme et réminiscence découlent des Idées. Ces concepts supplémentaires n'ont, à mes yeux, aucune équivalence en POO, ou plus généralement en programmation. Cette analogie est donc limitée à la théorie des Idées seule, ce qui est contrintuitif quand on connait l'importance des autres théories platoniciennes dans sa métaphysique.
+
+ De plus, cette analogie reste une forme de vulgarisation de la POO, sans jamais rentrer dans les détails de son fonctionnement intrinsèque. Elle parait donc difficilement utilisable pour apprendre à développer.
+
+ Par contre, elle ne se limite pas à un simple but éducatif. La POO peut véritablement être vue comme une manière de définir un nouveau monde intelligible numérique (tous les états possibles du sensible de ce monde sont représentés par des objets de son intelligible), ce que je trouve philosophiquement très intéressant.
+
+ \newpage
+ \bibliographystyle{unsrt}
+ \bibliography{biblio}
+\end{document}