1638357981
Rustについて初めて読んだときは🦀興味をそそられませんでした。2年ほど前、私は主にJavaScriptを使用してWeb開発者として働いていましたが、Rustはその時点では非常に難しいように見えたので、私には向いていないと思いました。
今年の初めに、私は自分でRustを学び始めることにしました。この間に何が変わったのですか?私はまだWeb開発者ですが、Rustでプログラムを作成し、WebAssemblyにコンパイルしてブラウザーで実行できることを知っていることが、私のモチベーションに火をつけました。
この投稿では、JavaScript開発者の観点からRustを紹介し、いくつかの比較を行います。ぜひお試しください!
Rustプログラミング言語はMozillaによって作成され、その最初の安定バージョンは2015年頃にリリースされました。次のようになります。
fn main() {
println!("Hello, World!");
}
怖くないですよね?JavaScriptのように見えると言えますが、これはhello worldプログラムであり、もう少し複雑です。言語のいくつかの機能を見る前に、Rustを次のようなプログラミング言語のスペクトルに配置しましょう。
プログラミング言語には明確な違いがあります。
さびは高速かつ安全であると見なすことができますが、無料ではありません。学習曲線が急であり、小さな例でもコンパイル時間が少し長くなる可能性があります。
他のプログラミング言語と同様に、カバーすることがたくさんありますが、私は言語を学び、それに取り組み始めるために不可欠な4つのトピックに焦点を当てることに決めました。
JavaScriptは動的に型付けされた言語であり1
、文字列wat
から数値を減算して予期しない結果を得るなど、いくつかの楽しいことができます。これは、型システムが厳密ではないために可能です。Rustでは、同じタイプではない2つの数値を単純に加算しようとすると、コンパイルエラーが発生します。
fn main() {
let a: i32 = 42;
let b: f64 1.0;
println!("{}", a + b); // ERROR: a and b are not of the same type.
}
Rustで作業を開始すると、多くのエラーが発生し、最初はコンパイラが嫌いになるでしょう。
この犬のように感じ、常にRustコンパイラと戦っている場合でも、心配する必要はありません。私たちは皆そこにいました。
関数型言語は、不変の構造を扱うことで非常によく知られています。JavaScript開発者として、私たちは不変性を扱うことを強制されていませんが、ReduxやImmutable.jsのような人気のあるライブラリは私たちにこれらの良い習慣を教えてくれました。今日、可変変数と不変変数をそれぞれ宣言するためのキーワードlet
とconst
キーワードがあります。
Rustでは、let
変数を宣言するためだけに使用します。デフォルトでは不変です。可変データを使用する場合はmut
、次のように宣言にキーワードを追加する必要があります。
fn main() {
let a = 42;
let mut b = 1;
a = 43; // ERROR: a is not mutable
b = 2;
}
私の意見では、これは私が取り組んだ他の言語とは本当に異なるため、Rustを学ぶのが最も難しい概念ですが、これがRustを高速かつ安全に使用できるようにする鍵です!
あるデータを変数に割り当てると、その変数がそのデータを所有し、すべてのデータが所有できるのは1人だけであると言われます。これを実際に見てみましょう:
fn main() {
let x = String::from("hello"); // x owns the "hello" string
let a = x; // At this point a owns the "hello" string and x is no longer valid
do_something(x); // ERROR: x cannot be used anymore!
}
サビでは何もありませんnull
し、undefined
我々は値を持たない変数を使用することはできませんので、値。私たちが割り当てられ、前の例でa
にx
私たちがしている移動から値をx
するa
この時点ではそれほどx
有効な値を持っていません。同じことが関数でも起こります:
fn main() {
let x = String::from("hello");
do_something(x);
do_other_thing(x); // ERROR: x cannot be used anymore!
}
fn do_something(s: String) {
// Do something with s
}
メソッドを呼び出すと、do_something
値をからx
に移動しますs
。これは、関数が受け取る引数です。機能を実行した後、我々はに戻るmain
とx
、もはや有効な値を持っていません。
以前の動作が常に望ましいとは限りません。それが、Rustで物事を借りることができる理由です。変数から別の変数に値を移動したくない場合は、次のような参照を使用します。
fn main() {
let x = String::from("hello");
do_something(&x);
do_other_thing(&x); // This is ok now because we are not moving the value
}
fn do_something(s: &String) {
// Do something with s
}
私たちが所有権を扱っていて、Rustコンパイラーを借りているとき、私たちがうまくプレイすることを望んでいるので、何か間違ったことをしようとすると警告が表示されます。
あなたが所有権について学び、借りた後に混乱しているなら、それは大丈夫です!あなたの脳は記憶管理に対処し始めており、それは時々傷つく可能性があります。このトピックの詳細については、このビデオをご覧になることをお勧めします。
Rustはオブジェクト指向言語ではありませんが、その種の言語に存在するいくつかの動作をエミュレートできるいくつかの機能があります。JavaScriptでクラスを操作するときは、データとメソッドの両方を同じ場所で処理します。Rustでは、データ表現を次のように操作するメソッドから分離します。
struct Dog {
name: String,
score: i32
}
impl Dog {
fn say_something(self: &Dog) {
println!("Hey, my name is {}... I mean WOOF!", self.name);
}
}
fn main() {
let dog = Dog { name: String::from("Boira"), score: 13 };
dog.say_something();
}
struct Dog
JavaScriptオブジェクトにかなり似ていますが、そうではありません。これstruct
は、2つの名前付きフィールドを持つデータの形状です:name
とscore
。以下に、struct
実装ブロック(impl
略して)を示します。このようにデータを操作するメソッドを宣言すると、関数をそのデータに関連付ける場合はself
、最初の引数として渡す必要があることに注意してください。Pythonのように見えますね。
self
値を省略すると、特定のデータに関連付けられていないメソッドを宣言することになります。これは、JavaScriptクラスの静的メソッドと考えることができます。
最初に行う必要があるのはRustをインストールすることであり、これは簡単なことではありません。訪問https://rustup.rs/の公式ツールチェインのインストーラをダウンロードしてウェブを。これは、JavaScriptで一般的に使用されるnvmプロジェクトに似ています。
次に、いくつかのライブラリが必要になるので、最初から始めないでください。JavaScriptでNodeパッケージを使用するのと同じ方法で、Rustでクレートを処理します。Rustクレートの詳細については、クレートの公式レジストリであるcrates.ioにアクセスしてください。
Rustは非常に用途が広いため、Rustを使用できるトピックはたくさんあり、コミュニティはさまざまなWebサイトでそれらを追跡するために多大な努力を払っています。
最後に、あなたがウェブ開発をしているなら、あなたは幸運です!プログラムを作成してコンパイルし、既存のJavaScriptコードと一緒に使用できます。これを可能にしたテクノロジーはWebAssemblyであり、現在すべての最新ブラウザーで使用できます。
試してみたい場合は、Rust andWebAssemblyの公式本を読むことをお勧めします。
Rustは学ぶのに本当にクールな言語であり、それを使ってたくさんのものを作ることができます!私のようなWeb開発者であれば、WebAssemblyのトピック全体が非常に興味深いものであり、今後の投稿を書けることを願っています。
Rustを使い始めたい場合は、公式の本をチェックして、Rustを使用して既存のJavaScriptプログラムをいくつか作成することをお勧めします。多くのこととして練習が鍵です!
最後に、このブログ投稿は、JS Codersのミートアップイベントで発表した講演に触発されたもので、スライドはこちらで確認できます。
カバー写真フィル・ヒアリング
リンク: https://www.codegram.com/blog/rust-for-js-developers/
1638357981
Rustについて初めて読んだときは🦀興味をそそられませんでした。2年ほど前、私は主にJavaScriptを使用してWeb開発者として働いていましたが、Rustはその時点では非常に難しいように見えたので、私には向いていないと思いました。
今年の初めに、私は自分でRustを学び始めることにしました。この間に何が変わったのですか?私はまだWeb開発者ですが、Rustでプログラムを作成し、WebAssemblyにコンパイルしてブラウザーで実行できることを知っていることが、私のモチベーションに火をつけました。
この投稿では、JavaScript開発者の観点からRustを紹介し、いくつかの比較を行います。ぜひお試しください!
Rustプログラミング言語はMozillaによって作成され、その最初の安定バージョンは2015年頃にリリースされました。次のようになります。
fn main() {
println!("Hello, World!");
}
怖くないですよね?JavaScriptのように見えると言えますが、これはhello worldプログラムであり、もう少し複雑です。言語のいくつかの機能を見る前に、Rustを次のようなプログラミング言語のスペクトルに配置しましょう。
プログラミング言語には明確な違いがあります。
さびは高速かつ安全であると見なすことができますが、無料ではありません。学習曲線が急であり、小さな例でもコンパイル時間が少し長くなる可能性があります。
他のプログラミング言語と同様に、カバーすることがたくさんありますが、私は言語を学び、それに取り組み始めるために不可欠な4つのトピックに焦点を当てることに決めました。
JavaScriptは動的に型付けされた言語であり1
、文字列wat
から数値を減算して予期しない結果を得るなど、いくつかの楽しいことができます。これは、型システムが厳密ではないために可能です。Rustでは、同じタイプではない2つの数値を単純に加算しようとすると、コンパイルエラーが発生します。
fn main() {
let a: i32 = 42;
let b: f64 1.0;
println!("{}", a + b); // ERROR: a and b are not of the same type.
}
Rustで作業を開始すると、多くのエラーが発生し、最初はコンパイラが嫌いになるでしょう。
この犬のように感じ、常にRustコンパイラと戦っている場合でも、心配する必要はありません。私たちは皆そこにいました。
関数型言語は、不変の構造を扱うことで非常によく知られています。JavaScript開発者として、私たちは不変性を扱うことを強制されていませんが、ReduxやImmutable.jsのような人気のあるライブラリは私たちにこれらの良い習慣を教えてくれました。今日、可変変数と不変変数をそれぞれ宣言するためのキーワードlet
とconst
キーワードがあります。
Rustでは、let
変数を宣言するためだけに使用します。デフォルトでは不変です。可変データを使用する場合はmut
、次のように宣言にキーワードを追加する必要があります。
fn main() {
let a = 42;
let mut b = 1;
a = 43; // ERROR: a is not mutable
b = 2;
}
私の意見では、これは私が取り組んだ他の言語とは本当に異なるため、Rustを学ぶのが最も難しい概念ですが、これがRustを高速かつ安全に使用できるようにする鍵です!
あるデータを変数に割り当てると、その変数がそのデータを所有し、すべてのデータが所有できるのは1人だけであると言われます。これを実際に見てみましょう:
fn main() {
let x = String::from("hello"); // x owns the "hello" string
let a = x; // At this point a owns the "hello" string and x is no longer valid
do_something(x); // ERROR: x cannot be used anymore!
}
サビでは何もありませんnull
し、undefined
我々は値を持たない変数を使用することはできませんので、値。私たちが割り当てられ、前の例でa
にx
私たちがしている移動から値をx
するa
この時点ではそれほどx
有効な値を持っていません。同じことが関数でも起こります:
fn main() {
let x = String::from("hello");
do_something(x);
do_other_thing(x); // ERROR: x cannot be used anymore!
}
fn do_something(s: String) {
// Do something with s
}
メソッドを呼び出すと、do_something
値をからx
に移動しますs
。これは、関数が受け取る引数です。機能を実行した後、我々はに戻るmain
とx
、もはや有効な値を持っていません。
以前の動作が常に望ましいとは限りません。それが、Rustで物事を借りることができる理由です。変数から別の変数に値を移動したくない場合は、次のような参照を使用します。
fn main() {
let x = String::from("hello");
do_something(&x);
do_other_thing(&x); // This is ok now because we are not moving the value
}
fn do_something(s: &String) {
// Do something with s
}
私たちが所有権を扱っていて、Rustコンパイラーを借りているとき、私たちがうまくプレイすることを望んでいるので、何か間違ったことをしようとすると警告が表示されます。
あなたが所有権について学び、借りた後に混乱しているなら、それは大丈夫です!あなたの脳は記憶管理に対処し始めており、それは時々傷つく可能性があります。このトピックの詳細については、このビデオをご覧になることをお勧めします。
Rustはオブジェクト指向言語ではありませんが、その種の言語に存在するいくつかの動作をエミュレートできるいくつかの機能があります。JavaScriptでクラスを操作するときは、データとメソッドの両方を同じ場所で処理します。Rustでは、データ表現を次のように操作するメソッドから分離します。
struct Dog {
name: String,
score: i32
}
impl Dog {
fn say_something(self: &Dog) {
println!("Hey, my name is {}... I mean WOOF!", self.name);
}
}
fn main() {
let dog = Dog { name: String::from("Boira"), score: 13 };
dog.say_something();
}
struct Dog
JavaScriptオブジェクトにかなり似ていますが、そうではありません。これstruct
は、2つの名前付きフィールドを持つデータの形状です:name
とscore
。以下に、struct
実装ブロック(impl
略して)を示します。このようにデータを操作するメソッドを宣言すると、関数をそのデータに関連付ける場合はself
、最初の引数として渡す必要があることに注意してください。Pythonのように見えますね。
self
値を省略すると、特定のデータに関連付けられていないメソッドを宣言することになります。これは、JavaScriptクラスの静的メソッドと考えることができます。
最初に行う必要があるのはRustをインストールすることであり、これは簡単なことではありません。訪問https://rustup.rs/の公式ツールチェインのインストーラをダウンロードしてウェブを。これは、JavaScriptで一般的に使用されるnvmプロジェクトに似ています。
次に、いくつかのライブラリが必要になるので、最初から始めないでください。JavaScriptでNodeパッケージを使用するのと同じ方法で、Rustでクレートを処理します。Rustクレートの詳細については、クレートの公式レジストリであるcrates.ioにアクセスしてください。
Rustは非常に用途が広いため、Rustを使用できるトピックはたくさんあり、コミュニティはさまざまなWebサイトでそれらを追跡するために多大な努力を払っています。
最後に、あなたがウェブ開発をしているなら、あなたは幸運です!プログラムを作成してコンパイルし、既存のJavaScriptコードと一緒に使用できます。これを可能にしたテクノロジーはWebAssemblyであり、現在すべての最新ブラウザーで使用できます。
試してみたい場合は、Rust andWebAssemblyの公式本を読むことをお勧めします。
Rustは学ぶのに本当にクールな言語であり、それを使ってたくさんのものを作ることができます!私のようなWeb開発者であれば、WebAssemblyのトピック全体が非常に興味深いものであり、今後の投稿を書けることを願っています。
Rustを使い始めたい場合は、公式の本をチェックして、Rustを使用して既存のJavaScriptプログラムをいくつか作成することをお勧めします。多くのこととして練習が鍵です!
最後に、このブログ投稿は、JS Codersのミートアップイベントで発表した講演に触発されたもので、スライドはこちらで確認できます。
カバー写真フィル・ヒアリング