Skip to content

Latest commit

 

History

History
417 lines (344 loc) · 11 KB

README_TR.md

File metadata and controls

417 lines (344 loc) · 11 KB

One'a hoşgeldiniz!
One açık kaynak kodlu, kendini barındıran ve fonlayan ve bu özellikleri sayesinde güvenilebilir ve verimli yazılımlar yaratmayı kolaylaştıran bir sistem programlama dilidir. Max, John ve diğer katılımcılar tarafından geliştirilmektedir.

One dilinin Compiler'ı birkaç ay içerisinde yayınlanacaktır

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

İçindekiler

  1. One dilinin özellikleri
  2. Yol Haritası
  3. Kod Örnekleri
  4. İlk kullanım kılavuzu
  5. Dahil olun
  6. Lisans

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

➤ One Dilinin Özellikleri

  • Basit.
  • Compiler.
  • Çıktı dosyası oluşturabilir. (x86_64, i386)
  • Sistem Programlama Dilidir.
  • Orta Düzey.
  • Network ve API programlama yapılabilir.
  • Web programlama desteği sunar. (gelecek)
    • Hem CSS hem de HTML'e karşılık gelen kodlar otomatik olarak üretilir. Yani, bir websitesi geliştirmek için One dışında herhangi bir dil öğrenmenize gerek yok.
    • CSS'de variables kullanır, böylece veritabanından renkleri ve boyutları çekebilir.
    • Sayfa sonuçlarını otomatik olarak küçültür.
  • Yüksek hızlı performans vaad eder.
  • İnline Assembly code destekler. (gelecek)
  • Normal modda, kullanıcının sisteminde belirli kütüphane ve araçlar olmasına ihtiyaç duymaz. (gelecek)
  • Normal modda, external runtime kütüphanelerine ihtiyaç duymaz. (gelecek)
  • Compile etmek için harici compiler'lara ihtiyaç duymaz. (gelecek)

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

➤ Yol Haritası

One dilinin kurallarını burada bulabilirsiniz.

  • Lexer/Parser (Mostly)
  • AST Tree
  • VM
  • Code Generator (LLVM-C'den esinlenildi.)
  • Bir runtime kütüphanesi geliştmek ve yeni özellikler eklemek
  • Dil için bir web framework geliştirmek
  • Compiler'ı One dili içerisinde yeniden yazmak

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

➤ Kod Örnekleri

main {
   ret 0
}

C'ye çevirelim:

#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'ye çevirelim:

#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'ye çevirelim:

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

Başka bir taslak:

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
}

Başka bir taslak:

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

Eski CLI Geliştirmesi

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

Eski GUI Geliştirmesi: (Web, Yazılım)

Bu mimari sadece websiteler ve native yazılımlar için tasarlanmıştır. Gelecekte, mobil uygulamalar için de kullanılabilir olacaktır.(native).
Mobil yapılar henüz tamamlanmadı ve daha fazla düşünceye ve ilgilenilmeye ihtiyaçları var.

Dilin çalışma şeklini göstermek için bir örnek:

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 temelli kodlara çevirelim:

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

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

➤ İlk Kullanım Kılavuzu

Dili öğrenmeye başlamak için bu linke göz atabilirsiniz.

Desteklenen Ortamlar

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

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

➤ Bize katılın

Bug raporlamaları, özellik istekleri, dokümentasyon geliştirmeleri vb. dahil olmak üzere her türlü katkıyı nezaketle karşılıyoruz. Soru sormak ya da bir tartışma başlatmak için bir issue oluşturun ya da One Discord Server'ına katılın.

Eğer GitHub'da nasıl pull request oluşturacağınızı bilmiyorsanız şu rehberi inceleyebilirsiniz.

Eğer katkıda bulunmak istiyorsanız, lütfen ilk olarak burada yer alan esasları okuyunuz.
Ayrıca ❤️ Patreon üzerinden bize maddi destek sağlayarak da bu projeye katkıda bulunabilirsiniz..

Katkı sağlayan herkese teşekkürler!

Eğer projenin geliştirilmesinde katkıda bulunmak isterseniz, bize mail atabilirsiniz: maxbasecode@gmail.com


Max Base tarafından oluşturuldu! @ 2019 -----------------------------------------------------

➤ Lisans

One GNU General Public License v3.0 lisansı altında yayınlanmıştır. Lütfen LICENSE dosyası içerisinde yer alan detaylara göre hareket ediniz.