Skip to content

Latest commit

 

History

History
417 lines (344 loc) · 10.9 KB

README_ES.md

File metadata and controls

417 lines (344 loc) · 10.9 KB

The One Programming Language

El lenguaje de programacion ONE 💚 💙 🧡 🤍 💖 🖤

Onelang.org | Colaboraciones

Patreon Discord Twitter Instagram License Facebook

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

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/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
}

Otro ejemplo:

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!"
        }
    }
}

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: [email protected]


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.