Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di l'anna
    Registrato dal
    Aug 2008
    Messaggi
    103

    Implementare un linguaggio di programmazione

    Ciao a tutti, premesso che non intendo osare tanto, mettermi a scrivere un linguaggio di programmazione, non saprei proprio da dove iniziare e non ne ho le capacità!,
    comunque solo per curiosità vorrei chiedere:

    i linguaggi di programmazione sono a loro volta dei programmi, giusto?
    E in linguaggio sono stati scritti?
    Ad esempio, il C in che linguaggio è stato scritto?

    Scusate per la mia somma ignoranza

    Grazie!

  2. #2

    Re: Implementare un linguaggio di programmazione

    Originariamente inviato da l'anna
    i linguaggi di programmazione sono a loro volta dei programmi, giusto?
    I compilatori o gli interpreti.
    E in linguaggio sono stati scritti?
    In genere in C (o un po' più di rado in C++), dato che sono linguaggi estremamente efficienti, di livello sufficientemente basso per poter scrivere il runtime di altri linguaggi e ne esistono compilatori per praticamente qualunque piattaforma.
    Ad esempio, il C in che linguaggio è stato scritto?
    Può sembrare paradossale, ma praticamente tutti i compilatori C attuali sono scritti... in C, e sono "self-hosting" (ovvero, in genere sono compilati con sé stessi).
    Il trucco è che se devi creare un compilatore C per un'altra architettura, comunque hai già un computer su cui gira un compilatore C, per cui puoi scrivere un nuovo back-end (ovvero, generatore di codice, ottimizzatore, linker, ...) del compilatore C che già hai in modo che sia in grado di generare un eseguibile in formato comprensibile alla nuova piattaforma per cui vai ad effettuare il porting (il processo di compilare per un'altra piattaforma è detto "cross-compiling").
    A questo punto, si copia l'eseguibile così creato sul computer di destinazione (magari dopo averlo usato per compilarne il sistema operativo), e gli si fa ricompilare sé stesso diverse volte, ottenendo così un compilatore "nato" completamente sul nuovo sistema operativo.

    Se non è possibile effettuare questo processo (cosa però che ormai non capita praticamente più), si parte da zero, ovvero dall'assembly, con cui si scrive una versione ridotta all'osso del compilatore, con le sole caratteristiche fondamentali; a questo punto si può scrivere un compilatore più completo usando questo subset del linguaggio che si è implementato, e così via.

    L'intero processo è detto bootstrapping del compilatore, puoi leggere qualcosa in proposito qui.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di l'anna
    Registrato dal
    Aug 2008
    Messaggi
    103
    Grazie infinite per la esaustiva e chiara risposta, finalmente mi son tolta la curiosità,
    ora approfondisco nel link che hai suggerito:
    grazie!

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.