Skip to content

Latest commit

 

History

History
420 lines (346 loc) · 10.9 KB

README_ES.md

File metadata and controls

420 lines (346 loc) · 10.9 KB

The One Programming Language

El lenguaje de programacion ONE 💚 💙 🧡 🤍 💖 🖤

Onelang.org | Colaboraciones

Bienvenidos a One!
Es un lenguaje de programación de código abierto, autohospedado y de arranque que facilita construir software confiable y eficiente. Está siendo desarrollado por Max, John Y otros contribuyentes de código abierto.

El compilador para el lenguaje One estará disponible en los próximos meses

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

Tabla de Contenidos

  1. Características de One
  2. Hoja de Ruta
  3. Ejemplos del código
  4. Primeros Pasos
  5. Involucrarse
  6. Licencia

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

➤ Características de One

  • Simplicidad
  • Compilador
  • Capacidad de crear archivo de salida (x86_64, i386)
  • Lenguaje de programación de sistema
  • Nivel intermedio
  • Programacion Network y API
  • Soporta programación Web (próximamente)
    • Generación automática del código correspondiente para CSS y HTML. Así que no tendrás que aprender sino el lenguaje One para desarrollar un sitio web
    • Emplea variables en CSS, de manera que podemos obtener los colores o tamaños de la base de datos
    • Auto minifica los resultados de la página
  • Desempeño y alta velocidad
  • Soporta inline Assembly code (próximamente)
  • No requiere librerías y herramientas específicas en el sistema del usuario en modo normal (próximamente)
  • No requiere bibliotecas de ejecución externas en modo normal (próximamente)
  • No requiere compiladores externos para llevar a cabo la compilación (próximamente)

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

➤ RoadMap

La gramática del lenguaje One está disponible aquí.

  • Lexer/Parser (Mayormente)
  • Arbol AST
  • VM
  • Generador de código (inspirado en LLVM-C)
  • Desarrollar una biblioteca en tiempo de ejecución y agregar funciones
  • Diseñar arquitectura (framework) web para el lenguaje
  • Reescribir el compilador en el lenguaje One

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

➤ Ejemplos del código

main {
   ret 0
}

Convertir a 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
}

Convertir a 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
}

Convertir a 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);
}

Otro ejemplo:

import web
home {
    _ "Hi, Welcome"
}
error {
    headers.add('HTTP-Type: 404')
    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
}

Otro ejemplo:

error {
    headers.add('HTTP-Type: 404')
    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-Type: 404')
    headers.add('Content-Type: text/html;charset=utf-8')
    page {
        title: 'Error 404'
        label {
            type: 'h1'
            _ "Not found!"
        }
    }
}

Desarrollo anterior de la 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

Desarrollo anterior de la GUI: (Web, Software)

Esta arquitectura está diseñada solo para sitios web y software nativo. En el futuro, también estará disponible para aplicaciones móviles. (native).
Las estructuras móviles aún no están completas y aún requieren de atención y dedicación.

El siguiente es un ejemplo de como funciona el lenguaje:

title "Name - Main"
description "Descriptions"
/*
Keyword tag not used in the software, only on the 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"
    }
  }
}

Convertir a base 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>

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

➤ Primeros Pasos

Puedes revisar este link para comenzar a aprender el lenguaje.

Ambientes soportados

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

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

➤ Involucrarse

Aceptamos cualquier tipo de contribuciones, incluyendo reportes de bugs, solicitud de funciones, mejoras en la documentación, etc. Para hacer una pregunta o iniciar una conversación, create an issue o únete al One Servidor de Discord.

Si no estás familiarizado con el procedimiento para hacer un pull request en GitHub puedes revisar esta guía.

Si has decidido contribuir, por favor revisa los lineamientos aquí.
También puedes ayudar al desarrollo de One a través de donaciones en ❤️ Patreon.

Gracias a todos los colaboradores!!

Si te gustaría contribuir al desarrollo de este proyecto, puedes esctibirnos a: maxbasecode@gmail.com


Created By Max Base @ 2019 -----------------------------------------------------

➤ Licencia

One está publicado bajo la Licencia Pública General GNU v3.0. Por favor revisa los términos en el archivo LICENCIA incluido en el repositorio.