Skip to content

Latest commit

 

History

History
418 lines (345 loc) · 10.7 KB

README_IT.md

File metadata and controls

418 lines (345 loc) · 10.7 KB

Il linguaggio di programmazione One

Il linguaggio di programmazione One 💚 💙 🧡 🤍 💖 🖤

Onelang.org | Chiedi aiuto

Patreon Discord Facebook Instagram Twitter License

English   عربي   Español   فارسی   Filipino   Français   Italiano   日本語   한국어   русский   Türkçe   Українська

Benvenuto!
One è un linguaggio di programmazione open source, auto-hostato, che rende semplice creare software efficiente e affidabile. È sviluppato da Max, John e altri collaboratori open-source.

Il compilatore per il linguaggio One sarà rilasciato tra pochi mesi

-----------------------------------------------------

Indice

  1. Funzionalità di One
  2. RoadMap
  3. Esempi di codice
  4. Per iniziare
  5. Per partecipare
  6. Licenza

-----------------------------------------------------

➤ Funzionalità di One

  • Semplicità
  • Compilatore
  • Possibilità di creare file in output (x86_64, i386)
  • Linguaggio di programamzione di sistema
  • Livello intermedio
  • Programmazione network e API
  • Supporto per la programamzione Web (in futuro)
    • Generazione automatica del testo corrispondente sia per CSS che per HTML. Così non dovrai imparare più di One linguaggio per sviluppare un sito web
    • Utilizzo delle variabili in CSS, in modo tale da ottenere i colori o le dimensioni da un database
    • Minimizzazione automatica dei risultati della pagina
  • Performance e alta velocità
  • Supporto inline per il codice Assembly (in futuro)
  • Non richiede librerie o tool specifici nel sistema dell'utente in modalità normale (in futuro)
  • Non richiede librerie di runtime esterne in modalità normale (in futuro)
  • Non richiede compilatori esterni per effettuare la compilazione (in futuro)

-----------------------------------------------------

➤ RoadMap

La sintassi del linguaggio One è disponibile qui.

  • Lexer/Parser (Quasi completamente)
  • Albero sintattico
  • VM
  • Generatore di codice (ispirato da LLVM-C)
  • Sviluppare una libreria di runtime e aggiungere funzionalità
  • Creare un web framework per il linguaggio
  • Riscrivere il compilatore in linguaggio One

-----------------------------------------------------

➤ Esempi di codice

main {
   ret 0
}

Equivalente in C:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   return (int) 0;
}

i32 main {
   ret 10
}

Equivalente in C:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   return (int) 10;
}

main {
   string in = "Hello, World!"
   __ in
   return in.length
}

Equivalente in C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   char *in = "Hello, World!";
   printf("%s\n", in);
   return (int) strlen(in);
}

Un altro esempio:

import web
home {
    _ "Hi, Welcome"
}
error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    _ "<h1>404></h1>"
}
main {
    if system.args.length === 2 {
        port = system.args[1]
    } else  {
        port = 8080;
    }
    web.route.add("/", home)
    web.route.add("*", error)
    web.listen(port)
    return 0
}

Un altro esempio:

error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    _ `<!doctype html><html><head><title>Error 404</title><meta charset="utf-8"></head><body><h1>404></h1></body></html>`
}

vs

error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    page {
        title: 'Error 404'
        label {
            type: 'h1'
            _ "Not found!"
        }
    }
}

Vecchio sviluppo CLI

main:
   // __ "Hello, World!"
   _ "Hello,"
   io.write(' ')
   io.write("World")
   __ '!'
end
@start
customName:
   _ "Hello, World!\n"
end
@start
void app:
   __ "Hello, World!"
end
@start
int customName:
   _ "Hello, World!\n"
   return 0
end

Vecchio sviluppo GUI: (Web, Software)

Questa architettura è disegnata solo per siti web e software nativo. In futuro, sarà disponibile anche per applicazioni mobili (native).
Le strutture mobili non sono ancora complete e hanno bisogno di più attenzione.

Esempio per dimostrarne il funzionamento:

title "Name - Main"
description "Descriptions"
/*
il tag keyword non è usato nel software, solo sul web.
*/
keyword "keywords"
style {
  * {
    margin 0
    padding 0
  }
  header {
    width "100%"
    height "auto"
  }
  list {
    color "red"
  }
  list item {
    display "inline"
    padding "10px"
    background "yellow"
  }
}
header {
  list {
    item {
      _ "Home"
    }
    item {
      _ "About"
    }
    item {
      _ "Contact Us"
    }
  }
}

Equivalente in CSS/HTML/JS:

<html>
  <head>
    <title>Name - Main</title>
    <meta name="description" content="Descriptions" />
    <meta name="keyword" content="keywords" />
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      header {
        width 100%;
        height: auto;
      }
      ul {
        color: red;
      }
      ul li {
        display: inline;
        padding: 10px;
        background: yellow;
      }
    </style>
  </head>
  <body>
    <header>
      <ul>
        <li>Home</li>
        <li>About</li>
        <li>Contact Us</li>
      </ul>
    </header>
  </body>
</html>

-----------------------------------------------------

➤ Per iniziare

Fai riferimento a questo link per iniziare ad imparare il linguaggio.

Ambienti supportati

  • GNU / Linux
  • Windows
  • macOS (Incompleto)
  • BSD

-----------------------------------------------------

➤ Per partecipare

Sono benvenute tutte le tipologie di contributo, inclusi bug reports, richieste di nuove funzionalità, miglioramento della documentazione etc. Per fare una domanda o aprire una discussione, crea un'issue o unisciti al server Discord di One.

Se non sai come fare una Pull Request su GitHub per favore leggi questa guida.

Se vuoi contribuire, per favore leggi le linee guida qui.
Puoi anche aiutare nello sviluppo di One facendo una donazione su ❤️ Patreon.

Grazie a tutti i collaboratori!!

Se vuoi contribuire allo sviluppo di questo progetto, puoi contattarci a: [email protected]


Creato da Max Base @ 2019 -----------------------------------------------------

➤ Licenza

One è rilasciato sotto la GNU General Public License v3.0. Per favore fai riferimento ai termini nel file LICENSE incluso nel repository.