Skip to content

Latest commit

 

History

History
418 lines (345 loc) · 11.5 KB

README_JA.md

File metadata and controls

418 lines (345 loc) · 11.5 KB

Oneへようこそ!
これは、オープン ソースの自己ホスト型ブートストラップシステム プログラミング言語であり、 信頼性が高く効率的なソフトウェアを構築します。 これは、MaxJohnおよびその他のオープンソースのコントリビュータによって開発されています。

One 言語用のコンパイラは数か月以内にリリースされます

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

目次

  1. Oneの特徴
  2. ロードマップ
  3. コード例
  4. 入門
  5. 参加する
  6. ライセンス

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

➤ Oneの特徴

  • シンプルさ
  • コンパイラ
  • 出力ファイルを作成する機能(x86_64、i386)
  • システムプログラミング言語
  • 中間レベル
  • ネットワークおよび API プログラミング
  • Web プログラミングに対応(将来予定)
    • CSS と HTML の両方に対応したコードを自動生成します。そのため、ウェブサイトを開発するために複数のOne言語を学ぶ必要がない
    • 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 開発: (Web, GUI 開発)

このアーキテクチャは、Web サイトとネイティブソフトウェアのみを対象として設計されています。将来的には、モバイルアプリ(ネイティブ)でも利用できるようになる予定です。
モバイル構造はまだ完全ではないので、もっと注意深く考える必要があります。

言語の動作を示す例:

title "Name - Main"
description "Descriptions"
/*
キーワードタグはソフトウェア内では使用せず、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 (未完成)
  • BSD

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

➤ 参加する

バグレポート、機能リクエスト、ドキュメントの改善など、あらゆる種類のコントリビュートを歓迎します。 質問やディスカッションを行うには、issue を作成するか、One Discord Serverに参加してください。

GitHub でのプルリクエストのやり方がよくわからないという方は、こちらのガイドをご覧ください。

投稿を決意された方は、まずこちらのガイドラインをお読みください。
また、❤️ Patreonでいくらかの寄付をすることで、Oneの開発に協力することができます。

コントリビュータの皆様、ありがとうございました!!

このプロジェクトの開発にコントリビュートしたい方は、次のアドレスにメールを送ってください: maxbasecode@gmail.com


作成者:Max Base @ 2019 -----------------------------------------------------

➤ ライセンス

Oneは GNU General Public License v3.0 の下でリリースされています。リポジトリに含まれるLICENSEファイルに記載されている条件を参照してください。