diff --git a/bib/programming.bib b/bib/programming.bib new file mode 100644 index 0000000..ecf95fb --- /dev/null +++ b/bib/programming.bib @@ -0,0 +1,45 @@ +@misc{Hurd, + title = {GNU/Hurd homepage}, + howpublished = {\url{https://www.gnu.org/software/hurd/index.html}} +} + +@misc{unionmount, +title = {Unionmount project for GNU/Hurd}, +author = {Sergiu Ivanov}, +howpublished = {\url{https://github.com/scolobb/unionmount}} +} + +@misc{nsmux, +title = {Namespaced-based translator selection for GNU/Hurd}, +author = {Sergiu Ivanov}, +howpublished = {\url{https://github.com/scolobb/nsmux}} +} + +@misc{sympy, +title = {SymPy homepage}, +howpublished = {\url{http://www.sympy.org}} +} + +@misc{categories, +title = {A category theory module for SymPy}, +author = {Sergiu Ivanov}, +howpublished = {\url{https://github.com/scolobb/sympy}} +} + +@misc{compdev, +title = {Definitions of some basic computing devices}, +author = {Sergiu Ivanov}, +howpublished = {\url{https://github.com/scolobb/computing-devices}} +} + +@misc{brsim, +title = {A Basic Reaction System Simulator}, +author = {Sergiu Ivanov}, +howpublished = {\url{https://github.com/scolobb/brsim}} +} + +@misc{brsimweb, +title = {Web interface to the reaction system simulator}, +author = {Sergiu Ivanov}, +howpublished = {\url{http://combio.abo.fi/research/reaction-systems/reaction-system-simulator/}} +} diff --git a/candidature.tex b/candidature.tex index adcab4f..b14678c 100644 --- a/candidature.tex +++ b/candidature.tex @@ -32,6 +32,7 @@ \addbibresource{bib/psystems.bib} \addbibresource{bib/mcrs.bib} \addbibresource{bib/arrays.bib} +\addbibresource{bib/programming.bib} \newcommand{\targetname}{Université des Licornes Violettes} \newcommand{\targetnr}{1337} diff --git a/recherche.tex b/recherche.tex index e04b038..c3ae81b 100644 --- a/recherche.tex +++ b/recherche.tex @@ -380,5 +380,63 @@ avec les structures à membranes ; nous avons montré que ce genre de systèmes atteignent la complétude computationnelle avec des règles restreintes et avec deux membranes seulement. +\subsection{Projets de programmation} +Lors de mon parcours universitaire et doctoral j'ai réalisé plusieurs +projets de programmation aussi bien accessoires à mon activité de +recherche qu'indépendants. J'ai notamment contribué au système +d'exploitation libre à micro-noyau GNU/Hurd~\cite{Hurd}, qui est fondé +sur le principe des translateurs ({\em translator}) --- des +applications spéciales qui peuvent être installés par dessus certains +fichiers pour offrir une vue modifiée du contenu. J'ai développe un +translateur capable de monter plusieurs systèmes de fichiers sous un +seul dossier (montage union)~\cite{unionmount} et j'ai aussi travaillé +sur une extension du gestionnaire du système de fichiers qui +permettrait d'installer des translateurs en utilisant une syntaxe +étendue de chemins d'accès~\cite{nsmux}. Ce travail a été effectué +lors de l'édition 2009 de «~Google Summer of Code~». + +Je me suis aussi intéressé aux modèles d'interaction asynchrone en +réseaux et je me suis proposé d'implémenter le modèle acteur ({\em + actor model}). Les entités centrales de ce modèle sont les acteurs +--- les processus qui s'exécutent en parallèle et qui possèdent des +boîtes à messages. Les acteurs peuvent s'envoyer des messages de façon +asynchrone, c'est-à-dire l'expéditeur n'attend pas que le message soit +reçu. Afin de rendre mon implémentation plus succincte et flexible, je +l'ai réalisée en le langage fonctionnel strictement typé Haskell. + +Un autre projet de programmation non relié directement à mes pistes de +recherche principales était ma contribution au système de calcul +formel SymPy~\cite{sympy} qui à consisté à initier un module de +théorie des catégories~\cite{categories}. Je me suis concentré sur la +présentation informatique des diagrammes commutatifs --- un outil de +base en algèbre abstraite --- et j'ai programmé la mise en page +automatique d'un tel diagramme. J'ai travaillé ensuite sur un +algorithme de déduction automatique de la commutativité d'un diagramme +à partir d'un ensemble de diagrammes dits axiomes. Cette contribution +a été faite lors de l'édition 2012 de «~Google Summer of Code~». + +Un de mes premiers projets afférents aux domaines de recherche dans +lesquels j'ai travaillé était le développement d'un simulateur de +systèmes à membranes capable de représenter la plupart des variation +du modèle en utilisant plusieurs moteurs de simulation. J'ai +implémenté un moteur OpenCL qui s'exécutait sur la carte graphique et +un autre, en Haskell, qui était moins performant mais offrait la +possibilité de faire tourner le système simulé pas à pas. + +Un autre projet était d'automatiser la construction des réseaux de +Petri universels, ce qui m'a amené à la réalisation d'un ensemble +d'outils pour la gestion informatique de ces objets, ainsi que de +quelques autres objets connus de la théorie de la calculabité, +notamment les machines à registres. Une partie de ces outils est déjà +disponible en ligne~\cite{compdev} ; d'autres sont en état d'ébauche +et seront disponibles au public dès leur finalisation. + +Finalement, afin de faciliter la conception et la vérification de +systèmes à réactions, j'ai implémenté un simulateur de ce modèle. Le +code source du simulateur, ainsi qu'une documentation, est disponible +en ligne~\cite{brsim}. J'ai aussi réalisé une interface +Web~\cite{brsimweb} qui permet d'utiliser mon simulateur sans à avoir +à télécharger et compiler le code. + \printbibliography \end{refsection}