به وان خوش آمدید!
این یک زبان برنامه نویسی سیستمی، خود میزبان و منبع باز هست که طراحی نرم افزار های توسعه پذیر و سریع رو راحت می کند.
این زبان توسط مکس و جوهن و دیگرتوسعه دهندگان پروژه طراحی می شود.
- سادگی
- کامپایلری
- امکان ایجاد فایل خروجی قابل اجرا برای معماری های مختلف (x86_64, i386)
- زبان برنامه نویسی سیستمی
- سطح متوسط و نحو نزدیک به انسان
- شبکه و طراحی وبسرویس
- سازگار برای طراحی وب (در آینده ای نزدیک)
- بصورت خودکار کد های زبان های دیگر را برای شما تولید می کند و برای طراحی وب سایت شما نیاز به یادگیری زبان دیگری ندارید و تنها زبان وان است که استفاده می کنید.
- استفاده از متغییر در استایل CSS, بنابراین حتی می توانید مشخصات ظاهری و رنگ ها را از دیتابیس نیز دریافت کنید.
- امکان خودکار کوتاه کردن نتیجه های وب سایت (minify)
- عملکرد و سرعت بالا
- پشتیبانی از دستورات خطی اسمبلی در لابه لای برنامه (در آینده)
- عدم نیاز به ابزارها و کتابخانه های مخصوص بر روی سیستم کاربر در حالت معمول (در آینده)
- به کتابخانه زمان اجرای جانبی دیگری نیاز ندارد (در آینده)
- به کامپایلر خارجی دیگری برای کامپایل احتیاج ندارد (در آینده)
نحو و گرامر زبان وان
نیز در اینجا در دسترس است.
- Lexer/Parser (Mostly)
- AST Tree
- VM
- Code Generator (get inspired from LLVM-C)
- Develop a runtime library and add features
- Design web framework for the language
- Rewrite compiler in the
One
language
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!"
}
}
}
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
این معماری برای وبسایت ها و نرم افزار های محلی در حال طراحی است. در آینده، برای اپ های موبایل هم در دسترس خواهد بود. معماری موبایل هنوز تکمیل نشده و نیازمند فکر و توجه بیشتر است.
مثال برای نشان دادن کارکرد زبان:
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
برای پرسیدن سوال یا باز کردن بحث، یک موضوع بسازید یا به وان سرور دیسکورد بپیوندید.
اگر شما با نحوه ساختن درخواست pull در گیت هاب آشنا نیستید لطفا این راهنما را بخوانید.
اگر تصمیم به مشارکت گرفتید، لطفا ابتدا رهنمودها را از اینجا بخوانید.
شما همچنین میتوانید با کمک های مالی به توسعه وان
کمک کنید ❤️ Patreon.
تشکر از تمامی مشارکت کننده ها!!
اگر شما تمایل به مشارکت در توسعه این پروژه دارید، میتوانید به ما ایمیل بزنید: maxbasecode@gmail.com
وان
تحت لایسنس GNU General Public License v3.0 انتشار یافته. لطفا به شرایط در فایل لایسنس موجود در مخزن مراجعه کنید.