<?xml version="1.0" encoding="UTF-8"?><mets:mets xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mets="http://www.loc.gov/METS/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tef="http://www.abes.fr/abes/documents/tef" xmlns:metsRights="http://cosimo.stanford.edu/sdr/metsrights/" xmlns:mads="http://www.loc.gov/mads/">
<mets:metsHdr ID="rennes1-ori-wf-1-16488" CREATEDATE="2022-04-08T19:32:24" LASTMODDATE="2022-04-08T19:32:24">
  <mets:agent ROLE="CREATOR">
            <mets:name>Université de Rennes 1</mets:name>
        </mets:agent>
</mets:metsHdr>
<mets:dmdSec ID="desc_expr" CREATED="2022-04-08T19:32:24">
  <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_these">
            <mets:xmlData>
                <tef:thesisRecord>
     <dc:title xml:lang="en">IDE as Code : reifying language protocols as first-class citizens</dc:title>
     <dcterms:alternative xml:lang="fr">Environnements de développement programmables : réification des protocoles de langage en objets de première classe</dcterms:alternative>
     <dc:subject xml:lang="fr">Génie logiciel</dc:subject><dc:subject xml:lang="fr">Générateurs (logiciels)</dc:subject><dc:subject xml:lang="fr">Langages dédiés</dc:subject><dc:subject xml:lang="fr">Interpréteurs (logiciels)</dc:subject>
     <dc:subject xml:lang="en">Software engineering</dc:subject><dc:subject xml:lang="en">Generators (Computer programs)</dc:subject><dc:subject xml:lang="en">Domain-specific programming languages</dc:subject><dc:subject xml:lang="en">Interpreters (Computer programs)</dc:subject>
     <tef:sujetRameau><tef:vedetteRameauNomCommun>
						<tef:elementdEntree autoriteSource="Sudoc" autoriteExterne="027673529">Génie logiciel</tef:elementdEntree>
					</tef:vedetteRameauNomCommun><tef:vedetteRameauNomCommun>
						<tef:elementdEntree autoriteSource="Sudoc" autoriteExterne="030929962">Générateurs (logiciels)</tef:elementdEntree>
					</tef:vedetteRameauNomCommun><tef:vedetteRameauNomCommun>
						<tef:elementdEntree autoriteSource="Sudoc" autoriteExterne="229785298">Langages dédiés (informatique)</tef:elementdEntree>
					</tef:vedetteRameauNomCommun><tef:vedetteRameauNomCommun>
						<tef:elementdEntree autoriteSource="Sudoc" autoriteExterne="027313492">Interpréteurs (logiciels)</tef:elementdEntree>
					</tef:vedetteRameauNomCommun></tef:sujetRameau>
     
     
     
     <dcterms:abstract xml:lang="fr">L'utilisation de langages de programmation modernes et complexes nécessite des environnements de développement dédiés, capables d'assister les programmeurs. Les environnements de développement intégrés (IDE) sont les environnements les plus utilisés aujourd'hui, fournissant tous les outils nécessaires pour utiliser efficacement les langages qu'ils ciblent. Fournir un IDE complet pour un langage spécifique est cependant très coûteux, ce qui conduit leurs mainteneurs à ne se concentrer que sur quelques langages pour chaque IDE, divisant ainsi leurs utilisateurs. Afin de rester pertinents, les petits langages tels que les langages dédiés (DSL) doivent être correctement intégrés dans l'environnement de leurs utilisateurs, ce qui nécessite de vastes ressources et ne peut pas prendre en compte la fragmentation entre les IDEs. Dans cette thèse, nous explorons l'idée de déployer des environnements de développement adaptés aux besoins de leurs utilisateurs, et de tirer parti d'outils de langages complètement séparés de tout IDE spécifique. Nous commençons par considérer les protocoles de langage, tels que LSP, et concevons une alternative modulaire et extensible qui correspond mieux aux spécificités des DSLs. Ensuite, nous nous concentrons sur les interprèteurs REPL, des interprèteurs de langage interactifs qui ont une grande valeur pour l'éducation et l'exploration, mais qui ne sont pas facilement dérivés à partir des techniques d'ingénierie des langages existantes. Nous proposons une approche formelle pour définir les REPLs, ainsi qu'une approche générative, et discutons de leur intégration dans les environnements de développement. Enfin, nous unifions la sémantique de plusieurs outils d'exécution (moteurs d'exécution, REPLs et débogueurs) par la spécification de l'interface commune entre eux.</dcterms:abstract>
     <dcterms:abstract xml:lang="en">The use of modern and complex programming languages requires dedicated development environments to support programmers. Integrated Development Environments (IDEs) are the most used environments today, providing all the necessary tools to use efficiently the languages they target. Providing a complete IDE for a specific language is however very costly, which lead to their maintainers to only focus on a few languages for each IDE, splitting their users. In order to stay relevant, small languages such as domain-specific languages (DSLs) need to be properly integrated in the environment of their users, which requires vast resources and cannot scale to the fragmentation of IDEs. In this thesis, we explore the idea of deploying development environments customized to the needs of their users, and leveraging language tools completely separated from any specific IDE. We start by considering language protocols, such as LSP, and designing a modular and extensible alternative that is more in line with the specificities of DSLs. Then, we focus on REPL interpreters, interactive language interpreters which offer great value for education and exploration but are not easily derived from existing language engineering techniques. We provide a formal approach to define REPLs, as well as a generative approach, and discuss their integration in development environments. Finally, we unify the semantics of several execution tools (execution engines, REPLs and debuggers) through the specification of the common interface between them.</dcterms:abstract>
     <dc:type>Electronic Thesis or Dissertation</dc:type><dc:type xsi:type="dcterms:DCMIType">Text</dc:type>
     <dc:language xsi:type="dcterms:RFC3066">en</dc:language>
    </tef:thesisRecord>
            </mets:xmlData>
        </mets:mdWrap>
</mets:dmdSec>
<mets:dmdSec ID="desc_edition" CREATED="2022-04-08T19:32:24">
  <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_edition">
            <mets:xmlData>
                <tef:edition><dcterms:medium xsi:type="dcterms:IMT">application/pdf</dcterms:medium><dcterms:extent>1 : 3023 Ko</dcterms:extent><dc:identifier xsi:type="dcterms:URI">https://ged.univ-rennes1.fr/nuxeo/site/esupversions/2eee39ab-afbe-42ad-ae8b-1d0f3f07076b</dc:identifier></tef:edition>
            </mets:xmlData>
        </mets:mdWrap>
</mets:dmdSec>
<mets:amdSec>
        <mets:techMD ID="admin_expr">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_admin_these">
                <mets:xmlData>
                    <tef:thesisAdmin>
                        <tef:auteur>
       <tef:nom>Jeanjean</tef:nom>
       <tef:prenom>Pierre</tef:prenom>
       
       <tef:dateNaissance>1995-08-29</tef:dateNaissance>
       <tef:nationalite scheme="ISO-3166-1">FR</tef:nationalite>
       <tef:autoriteExterne autoriteSource="Sudoc">266091857</tef:autoriteExterne>
       <tef:autoriteExterne autoriteSource="mailPerso">jeanjean.pie@gmail.com</tef:autoriteExterne>
      </tef:auteur>
                        <dc:identifier xsi:type="tef:NNT">2022REN1S033</dc:identifier>
                        <dc:identifier xsi:type="tef:nationalThesisPID">http://www.theses.fr/2022REN1S033</dc:identifier>
                        <dcterms:dateAccepted xsi:type="dcterms:W3CDTF">2022-04-29</dcterms:dateAccepted>
                        <tef:thesis.degree>
                            <tef:thesis.degree.discipline xml:lang="fr">Informatique</tef:thesis.degree.discipline>
                            <tef:thesis.degree.grantor>
        <tef:nom>Universite de Rennes 1</tef:nom><tef:autoriteInterne>thesis.degree.grantor_1</tef:autoriteInterne>
        
        <tef:autoriteExterne autoriteSource="Sudoc">02778715X</tef:autoriteExterne>
       </tef:thesis.degree.grantor>
                            <tef:thesis.degree.level>Doctorat</tef:thesis.degree.level>
                        </tef:thesis.degree>
                        <tef:theseSurTravaux>non</tef:theseSurTravaux>
                        <tef:avisJury>oui</tef:avisJury><tef:directeurThese><tef:nom>Combemale</tef:nom><tef:prenom>Benoît</tef:prenom><tef:autoriteInterne>intervenant_1</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">127677321</tef:autoriteExterne></tef:directeurThese><tef:directeurThese><tef:nom>Barais</tef:nom><tef:prenom>Olivier</tef:prenom><tef:autoriteInterne>intervenant_2</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">094608946</tef:autoriteExterne></tef:directeurThese><tef:presidentJury><tef:nom>Taïani</tef:nom><tef:prenom>François</tef:prenom><tef:autoriteInterne>intervenant_3</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">081430264</tef:autoriteExterne></tef:presidentJury><tef:membreJury><tef:nom>Erdweg</tef:nom><tef:prenom>Sebastian</tef:prenom><tef:autoriteInterne>intervenant_4</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">26609208X</tef:autoriteExterne></tef:membreJury><tef:membreJury><tef:nom>Söderberg</tef:nom><tef:prenom>Emma</tef:prenom><tef:autoriteInterne>intervenant_5</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">266092160</tef:autoriteExterne></tef:membreJury><tef:rapporteur><tef:nom>Van Den Brand</tef:nom><tef:prenom>Mark</tef:prenom><tef:autoriteInterne>intervenant_6</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">162109202</tef:autoriteExterne></tef:rapporteur><tef:rapporteur><tef:nom>Paige</tef:nom><tef:prenom>Richard</tef:prenom><tef:autoriteInterne>intervenant_7</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">139213317</tef:autoriteExterne></tef:rapporteur>
      
      
      
      
      
      
      
      
      
                        
                        
                        <tef:ecoleDoctorale>
       <tef:nom>MATHSTIC</tef:nom><tef:autoriteInterne>ecoleDoctorale_1</tef:autoriteInterne>
       
       <tef:autoriteExterne autoriteSource="Sudoc">204770424</tef:autoriteExterne>
      </tef:ecoleDoctorale>
                        <tef:partenaireRecherche type="laboratoire">
       <tef:nom>
IRISA
</tef:nom><tef:autoriteInterne>partenaireRecherche_1</tef:autoriteInterne>
       
       <tef:autoriteExterne autoriteSource="Sudoc">
026386909
</tef:autoriteExterne>
      </tef:partenaireRecherche>
                        <tef:oaiSetSpec>ddc:004</tef:oaiSetSpec>
                        
                        
                        
                    









     <tef:MADSAuthority authorityID="intervenant_1" type="personal"><tef:personMADS><mads:namePart type="family">Combemale</mads:namePart><mads:namePart type="given">Benoît</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="intervenant_2" type="personal"><tef:personMADS><mads:namePart type="family">Barais</mads:namePart><mads:namePart type="given">Olivier</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="intervenant_3" type="personal"><tef:personMADS><mads:namePart type="family">Taïani</mads:namePart><mads:namePart type="given">François</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="intervenant_4" type="personal"><tef:personMADS><mads:namePart type="family">Erdweg</mads:namePart><mads:namePart type="given">Sebastian</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="intervenant_5" type="personal"><tef:personMADS><mads:namePart type="family">Söderberg</mads:namePart><mads:namePart type="given">Emma</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="intervenant_6" type="personal"><tef:personMADS><mads:namePart type="family">Van Den Brand</mads:namePart><mads:namePart type="given">Mark</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="intervenant_7" type="personal"><tef:personMADS><mads:namePart type="family">Paige</mads:namePart><mads:namePart type="given">Richard</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="thesis.degree.grantor_1" type="corporate"><tef:personMADS><mads:namePart>Universite de Rennes 1</mads:namePart><mads:description>Sciences et technologie, medecine, pharmacie, odontologie, droit, economie, gestion, philosophie</mads:description></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="ecoleDoctorale_1" type="corporate"><tef:personMADS><mads:namePart>MATHSTIC</mads:namePart><mads:description>École doctorale Mathématiques et sciences et technologies de l'information et de la communication (Rennes)</mads:description></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="partenaireRecherche_1" type="corporate"><tef:personMADS><mads:namePart>
IRISA
</mads:namePart></tef:personMADS></tef:MADSAuthority></tef:thesisAdmin>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:techMD><mets:techMD ID="file_1"><mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_tech_fichier"><mets:xmlData><tef:meta_fichier>
     <tef:encodage>ASCII</tef:encodage>
     <tef:formatFichier>PDF</tef:formatFichier>
     
     
     
     <tef:taille>3095547</tef:taille>
    </tef:meta_fichier></mets:xmlData></mets:mdWrap></mets:techMD>

        
        <mets:rightsMD ID="dr_expr_thesard">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_auteur_these">
                <mets:xmlData>
                    <metsRights:RightsDeclarationMD>
                        <metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
                            <metsRights:Permissions DISCOVER="true" DISPLAY="true" COPY="true" DUPLICATE="true" MODIFY="false" DELETE="false" PRINT="true"/>
                        </metsRights:Context>
                    </metsRights:RightsDeclarationMD>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:rightsMD>
        <mets:rightsMD ID="dr_expr_univ">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_etablissement_these">
                <mets:xmlData>
                    <metsRights:RightsDeclarationMD>
                        <metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
                            <metsRights:Permissions DISCOVER="true" DISPLAY="true" COPY="true" DUPLICATE="true" MODIFY="false" DELETE="false" PRINT="true"/>
                        </metsRights:Context>
                    </metsRights:RightsDeclarationMD>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:rightsMD>
        <mets:rightsMD ID="dr_version">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_version">
                <mets:xmlData>
                    <metsRights:RightsDeclarationMD>
                        <metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
                            <metsRights:Permissions DISCOVER="true" DISPLAY="true" COPY="true" DUPLICATE="true" MODIFY="false" DELETE="false" PRINT="true"/>
                        </metsRights:Context>
                    </metsRights:RightsDeclarationMD>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:rightsMD>
    </mets:amdSec>
<mets:fileSec>
  <mets:fileGrp ID="FGrID1" USE="archive"><mets:file ID="FID1" ADMID="file_1" MIMETYPE="application/pdf" USE="maitre"><mets:FLocat LOCTYPE="URL" xlink:href="https://ged.univ-rennes1.fr/nuxeo/site/esupversions/2eee39ab-afbe-42ad-ae8b-1d0f3f07076b"/></mets:file></mets:fileGrp>
 </mets:fileSec>
<mets:structMap TYPE="logical">
        <mets:div DMDID="desc_expr" ADMID="dr_expr_thesard dr_expr_univ admin_expr" TYPE="THESE" CONTENTIDS="http://ori-oai-search.univ-rennes1.fr/uid/rennes1-ori-wf-1-16488/oeuvre">
            <mets:div ADMID="dr_version" TYPE="VERSION_COMPLETE" CONTENTIDS="http://ori-oai-search.univ-rennes1.fr/uid/rennes1-ori-wf-1-16488/oeuvre/version">
                <mets:div DMDID="desc_edition" TYPE="EDITION" CONTENTIDS="http://ori-oai-search.univ-rennes1.fr/uid/rennes1-ori-wf-1-16488/oeuvre/version/edition">
                    <mets:fptr FILEID="FGrID1"/>
                </mets:div>
            </mets:div>
        </mets:div>
    </mets:structMap>
</mets:mets>