Skip to content

Latest commit

 

History

History
418 lines (345 loc) · 10.7 KB

README_KR.md

File metadata and controls

418 lines (345 loc) · 10.7 KB

The One Programming Language

One 프로그래밍 언어 💚 💙 🧡 🤍 💖 🖤

Onelang.org | Help wanted

Patreon Discord Facebook Instagram Twitter License

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

One에 오신 것을 환영합니다!
오픈 소스, 자체 호스팅, 부트스트랩 시스템 프로그래밍 언어로 안정적이고 효율적인 소프트웨어를 구축합니다. Max, John 및 기타 오픈 소스 기여자.

Compiler for the One Language는 몇 달 안에 출시될 예정입니다.

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

목차

  1. One의 기능
  2. 로드맵
  3. 코드 예
  4. 시작하기
  5. 참여하기
  6. 라이선스

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

➤ One의 기능

  • 단순성
  • 컴파일러
  • 출력 파일 생성 기능(x86_64, i386)
  • 시스템 프로그래밍 언어
  • 중급
  • 네트워크 및 API 프로그래밍
  • 웹 프로그래밍 지원(향후)
    • CSS와 HTML 모두에 해당하는 코드의 자동 생성. 따라서 웹사이트를 개발하기 위해 '하나의' 언어 이상을 배울 필요가 없습니다.
    • CSS에서 변수를 사용하여 데이터베이스에서 색상이나 크기를 얻을 수 있습니다.
    • 페이지 결과 자동 축소
  • 성능 및 고속
  • 인라인 어셈블리 코드 지원(향후)
  • 일반 모드에서 사용자 시스템에 특정 라이브러리 및 도구가 필요하지 않음(향후)
  • 일반 모드에서 외부 런타임 라이브러리가 필요하지 않음(향후)
  • 컴파일을 위해 외부 컴파일러가 필요하지 않음(향후)

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

➤ 로드맵

'One' 언어의 문법은 여기에서 볼 수 있습니다.

  • 렉서/파서(대부분)
  • AST 트리
  • VM
  • 코드 생성기(LLVM-C에서 영감을 얻음)
  • 런타임 라이브러리 개발 및 기능 추가
  • 언어에 대한 웹 프레임워크 설계
  • One 언어로 컴파일러 재작성

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

➤ 코드

main {
   ret 0
}

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
}

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
}

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

또 다른 초안:

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
}

또 다른 초안:

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

이전 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

GUI 개발: (웹, 소프트웨어)

이 아키텍처는 웹 사이트 및 기본 소프트웨어용으로만 설계되었습니다. 앞으로 모바일 앱(네이티브)에서도 사용할 수 있습니다.
모바일 구조는 아직 완성되지 않았으며 더 많은 주의와 생각이 필요합니다.

언어 작동을 보여주는 예:

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

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>

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

➤ 시작하기

언어 학습을 시작하려면 이 링크를 참조하세요.

지원되는 환경

  • GNU / Linux
  • Windows
  • macOS (Not complete)
  • BSD

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

➤ 참여하기

버그 보고서, 기능 요청, 문서 개선 등을 포함한 모든 종류의 기여를 환영합니다. 질문을 하거나 토론을 열려면 문제를 만들거나 One Discord Server에 가입하세요.

GitHub에서 pull 요청하는 방법에 익숙하지 않다면 이 가이드.

기여하기로 결정하셨다면 먼저 여기 가이드라인을 읽어주세요.
❤️ Patreon에서 기부를 통해 'One' 개발에 도움을 줄 수도 있습니다.

모든 기고자에게 감사드립니다!!

이 프로젝트의 개발에 기여하고 싶다면 maxbasecode@gmail.com으로 메일을 보내주십시오.


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

➤ 라이선스

One은 GNU General Public License v3.0에 따라 출시되었습니다. 저장소에 포함된 라이센스 파일의 용어를 참조하십시오.