Ziglangに関する私の見解
Originally posted on
Zigは汎用プログラミング言語である.これは簡単ですし、任意の隠しコントロールの流れや割り当てをしていません.
言語は明確で、まっすぐに、読みやすい.
私がZiglangが好きであるもの:
簡単な言葉を作るのは言うより易しい.プログラマはプログラミング言語に豊富な機能を必要とするが、プログラミング言語がより多くの特徴をサポートするとき、それは低迷し、肥大化する.
例えば、Zigの簡単なHello Worldプログラムはこのようになります.
次に、
関数名
次に、我々は
最後に、私たちは
それです.このZIGコードを使うことができます
あなたが見ることができるように、関数はシンプルで理解しやすいです.言語はマクロを持たず、結果を魔法に印刷しません.
魔法はここに!
ジグにはない
我々は、安全にアクセスすることができます
Zigはエラーも含んでいます.エラーを値として扱います.ZIGコンパイラはエラーが処理され、それらがないときに不平を保証します.
例えば、
ジグは、Aを提供します パラメータ 変数 式
ZigはCOUNTimeをパラメータでダック型に使用し、ジェネリックを実装します.
変数のcomptimeはzigのもう一つの良い特徴です.コンパイラがコンパイル時にすべてのロードとストア操作を実行することを保証します.
同様に、式をマークすることができます
目立つ特徴は次のとおりです. CとCのような他の言語とのより簡単な統合. stdライブラリのコードは読み込み可能です. 言語の簡単な文法. Zigで改善する必要のあるものは以下の通りです. エラー処理はさわやかですが、エラーでコンテキストを渡す方法はありません. 読みやすさの重要性は、低レベルのコードを書くことができます. 言語は非常に初期の時代にあり、それがどのように進化するかを見ることが興味深いでしょう. 全体的に、ジグは素晴らしい未来を持っています.それはCの代わりになります、そして、私はそれが成功することを望みます.
Why Zig? Zig documentation Ziglings My AOC experiments in Zig
Zigは汎用プログラミング言語である.これは簡単ですし、任意の隠しコントロールの流れや割り当てをしていません.
言語は明確で、まっすぐに、読みやすい.
Zig directly competes with C and will be a better alternative for C in the future.
私がZiglangが好きであるもの:
簡易言語
簡単な言葉を作るのは言うより易しい.プログラマはプログラミング言語に豊富な機能を必要とするが、プログラミング言語がより多くの特徴をサポートするとき、それは低迷し、肥大化する.
例えば、Zigの簡単なHello Worldプログラムはこのようになります.
// hello.zig
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
try stdout.print("Hello!, {s}\n", .{"world"});
}
最初の行では、std
図書館(好奇心)@
以前import
チェックhere ). 我々は、インポートstd
ライブラリとそれを割り当てるstd
使用const
キーワード.次に、
main
関数.他の言語と同様に、メインはプログラム実行を始めるZIGコンパイラを指定します.関数定義はpub fn
キーワード.推測したようにpub fn
パブリック関数を意味します.Note: The
pub
specifier exports the function.
関数名
main
. 関数名とargs(この場合は何も持っていません)の後、return
種類ここの返り値は!void
. The !
関数が返すことを指定しますerror
. 我々は、拡張することができます!void
好きなもの<error-type> or <void>
.次に、我々は
writer
インポートからの関数std
図書館.Note: It is too long!!! But it clearly says what the programmer is trying to do and what the compiler will do.
最後に、私たちは
print
からの方法からstdout
実際の文字列を出力するにはprint文は、C/Rustのような他の低レベル言語でどうするかに似ています.Note:
.{}
. in the second argument to theanonymous
struct literal.
それです.このZIGコードを使うことができます
zig run hello.zig
.あなたが見ることができるように、関数はシンプルで理解しやすいです.言語はマクロを持たず、結果を魔法に印刷しません.
魔法はここに!
ヌルポインタ
Oh yeah! Everyone agrees Null Pointer is a billion-dollar mistake.
ジグにはない
null
, しかし、彼らは提供するoptional
. オプション型は安全性と読みやすさを提供します.const optional_world_answer: ?i32 = 42;
The ?
type 1 i型を指定するoptional
. それは受け入れることができるnull
またはi32
整数.null
はZiglangで許されるタイプです.我々は、安全にアクセスすることができます
optional
使用if-let
構文.if (optional_world_answer) |world_answer| {
// here `world_answer` is i32 and not null.
}
Optional makes your language verbose, the benefits of them in safety, readability stands out.
エラー処理
Zigはエラーも含んでいます.エラーを値として扱います.ZIGコンパイラはエラーが処理され、それらがないときに不平を保証します.
例えば、
fn get_i64() !i64 {
return error.notImplemented;
}
pub fn main() void {
// we are basically discarding the result
_ = get_i64();
}
上記のコードはエラーを処理していないコンパイラエラーをスローし、エラーを破棄します.エラーは常に値です.我々はそれを使用して修正することができますcatch
or try
.// error handling with `catch`
let number = get_i64() catch |err| {
// do something with error
};
// error handling with `try`
let number = try get_i64();
// well when you are sure that it won't error
let number = try get_i64() catch unreachable
Zigはリフレッシュエラー処理を提供します.コンプタイム
ジグは、Aを提供します
comptime
特定の値と型がコンパイル時に使用可能であることを指定するキーワード.使えますcomptime
つの異なる場所で.パラメータのcomptime
ZigはCOUNTimeをパラメータでダック型に使用し、ジェネリックを実装します.
fn generic_fn(comptime T: type, a: T, b: T) {...}
我々は呼び出すことができますgeneric_fn
次のようにします.generic_fn(i32, 10, 11);
関数呼び出しサイトは、型をcomptimeパラメーターとして期待します.変数のcomptime
変数のcomptimeはzigのもう一つの良い特徴です.コンパイラがコンパイル時にすべてのロードとストア操作を実行することを保証します.
表現のcomptime
同様に、式をマークすることができます
comptime
コンパイル時に評価します.目立つ特徴は次のとおりです.
さらに探る
Reference
この問題について(Ziglangに関する私の見解), 我々は、より多くの情報をここで見つけました https://dev.to/sendilkumarn/my-views-on-ziglang-159nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol