ความตั้งใจของผมคือศึกษาภาษาใหม่ทุกปี เหตุผลมี 2 อย่างคือ
- อัปเดตความรู้ตัวเองนอกจากภาษาที่ใช้ทำงานอยู่ก็ควรจะเรียนรู้ภาษาอื่นด้วย
- เรียนรู้ว่าภาษานี้ถูกสร้างขึ้นเพราะอะไร แก้ปัญหาอะไร ข้อดี-ข้อเสียมีอะไรบ้าง
สำหรับผมการเรียนรู้ภาษาใหม่ถือเป็นงานอดิเรกที่ชอบนะ ภาษาแปลกๆ ภาษาใหม่ๆ แม้ว่ามันจะไม่เป็นที่นิยมในเมืองไทย มีตำแหน่งงานรองรับ ส่วนตัวผมเองไม่ถือว่าเป็นเรื่องเสียเวลาครับเพราะการได้รู้อะไรหลายอย่างทำให้เรามีตัวเลือกในการแก้ปัญหาเพิ่มขึ้นครับ
การติดตั้ง
ส่วนตัวผมใช้ Linux อยู่ก็ติดตั้งง่ายๆ ผ่าน cURL ได้เลย
curl -sSf https://static.rust-lang.org/rustup.sh | sh
ส่วน OS อื่นสามารถโหลดไบนารี่ไปติดตั้งกันเองได้จากลิงก์นี้
https://www.rust-lang.org/downloads.html
ติดตั้งเสร็จถ้าไม่มีปัญหาอะไรก็ควรจะใช้งาน rustc และ cargo ได้แล้ว
$rustc -V rustc 1.7.0 (a5d1e7a59 2016-02-29) $cargo -V cargo 0.8.0-nightly (28a0cbb 2016-01-17)
- rustc คือ compiler ภาษา Rust ใช้ compile โค้ดเป็นไบนารี่ได้
- cargo คือ package manager ของ Rust เอาไว้ติดตั้ง lib ต่างๆ เหมือน npm ของ Node.js หรือ pip ของ Python
เครื่องมือและโครงสร้างโปรเจกต์
การเขียนภาษา Rust เราจะเขียนเป็นไฟล์เดียวแล้วใช้ rustc compile เป็นไบนารี่แล้ว แล้วสั่ง run เลยก็ได้
$rustc hello.rs $./hello Hello world!
แต่ถ้าเป็น project ใหญ่ผมแนะนำว่าใช้ cargo ดีกว่าครับ
$cd ~/projects $cargo new my-project --bin $cd my-project
cargo new เป็นการสร้างโปรเจกต์ใหม่ตัวอย่างข้างบนชื่อว่า “my-project” ส่วน option –bin เป็นการบอกว่าเป็น executable project สามารถสั่ง cargo build และ cargo run ได้ ถ้าเราไม่ระบุ –bin จะเป็นการสร้าง project ที่เป็น lib หรือ module ซึ่งเราสามารถ custom ทีหลังได้
เมื่อสั่ง cargo build จะมีไฟล์ Cargo.lock และ Cargo.toml เกิดขึ้นใน project
- Cargo.toml เป็นไฟล์สำหรับเก็บ config ของโปรเจกต์โดยสามารถระบุรายละเอียดโปรเจกต์, dependencies ที่ใช้, ระบุ target ที่ต้องการเมื่อสั่ง build และ run
- Cargo.lock คล้ายกับ Cargo.toml มีหน้าที่เก็บรายละเอียด lib ที่ใช้เมื่อสั่ง build ทำหน้าที่เหมือนนามสกุลไฟล์คือ lock version ของ lib หรือ package ว่าจริงๆ แล้วใช้ version อะไรกันแน่เพราะ Cargo.toml เราอาจจะกำหนด version เป็น “*” หรือ “> 0.3.0” ซึ่งทำให้เราไม่รู้ version ที่แท้จริง
เริ่มต้นเขียนและแหล่งเรียนรู้
ผมไม่เขียนตัวอย่างโค้ดละกันไปดูใน doc ดีกว่า :p
Resources:
- The Rust Programming Language เรียนรู้จากพื้นฐานก่อน
- Rust by Example ถ้าใจร้อนก็เริ่มจาก example โค้ดเลย แต่อาจจะงงได้ถ้าไม่รู้พื้นฐานก่อน