thảo luận Nhật kí tự học lập trình Rust - phát triển ứng dụng Desktop (Both CLI + GUI)

  • Người tạo chủ đề Người tạo chủ đề duykhanh471
  • Ngày bắt đầu Ngày bắt đầu

duykhanh471

Member
LƯU Ý: Đây không phải là Thread bàn ưu nhược điểm của một ngôn ngữ. Làm ơn đừng bình luận bất kì điều gì không liên quan đến Rust hoặc ít nhất, không liên quan đến lập trình.

Cộng đồng học Khoa học máy tính (và có Rust):

CẬP NHẬT: Đầu tháng 8 sẽ bắt đầu kế hoạch học Backend cho Rust, thử nghiệm xây dựng toàn bộ Website bằng Rust và HTML/HTMX (Hoặc thuần HTML/CSS/JS).

Đây là nhật kí lập trình của cá nhân mình, vừa học vừa làm để đóng góp cho Open Source

Đa phần nhiều người dùng Rust làm Backend, thậm chí Rust Fullstack luôn.

Lý do chơi Rust (Ít nhất là của mình):
  • Không có Null (Từng mê null handler bên Kotlin, nhưng mê cách rust làm hơn)
  • không garbage collection nhưng không phải manual memory management (Tất nhiên là C/C++ có thể dùng RAII)
  • nhanh (Nhanh hơn tất cả các ngôn ngữ dùng garbage collection)
  • lập trình ít khi phải tra StackOverflow (Thật sự là từ lúc lập trình Rust đến giờ mình chỉ có đọc Documentation với phân tích lỗi Compiler in ra thôi). Cập nhật thêm thì giờ phải tra rồi này :LOL: lý do là do dùng một số các crate ngoài với documentation khó hiểu nên thi thoảng phải soi code để tìm thuộc tính với các thứ :LOL:
  • Tương thích code: Không phải update codebase quá thường xuyên (Nhìn các dev còng lưng là biết)
  • Tuân theo quy tắc lập trình: Không để biến thừa, không dùng các câu lệnh chuyển đổi thừa thãi, buộc phải tuân theo kiểu biến (Thứ lỗi nếu mình sai nhưng mình nhớ không nhầm là Python đóng biến vào một Object), xử lý match, result, option, còn nhiều thứ khác nhưng các bạn sẽ được trải nghiệm nếu để Compiler dạy bạn
  • Khiến mình cảm thấy mình đỉnh vl, lập trình bằng Rust khiến mình cảm thấy mình thông minh hơn, hiểu thêm về máy tính (Phải hiểu thì mới hiểu các Rustacean khác nói gì).
  • BỔ SUNG: cargo this, cargo that, trầm cảm với cách mà một số ngôn ngữ khác muốn build dự án, thử nghịch C/C++ thì nó bắt động meson, ninja rồi cái tệp build của nó nhìn mà muốn buồn không muốn đọc luôn. Nếu dự án viết thuần Rust thì dù to dù nhỏ hay như nào thì đều cargo build hoặc cargo build --release
Lý do tránh:
  • Documentation: Thấy nhiều ông chê khá nhiều crate có Documentation kém.
  • Không có GC: Là điểm cộng cho Performance nhưng là điểm trừ cho mấy ông lười. Đọc tin gần đây thì Rust có kế hoạch hỗ trợ partial borrow, nhưng về cơ bản tui nghĩ vẫn sẽ xoay quanh Lifetime, Ownership.
  • Học khó: Syntax lạ, nhiều khái niệm trời ơi đất hỡi
  • Bắt tuân theo các programming convention từ đầu: Nếu mấy ông lười thì đây là ác mộng.
  • Hệ sinh thái (Theo các Rustacean khác) chưa quá trưởng thành, ra được gần 10 năm tính đến năm 2024, không thể nào xịn bằng JS, Python, Java, C++ với các thứ được vì hỗ trợ, Documentation, Framework, Libraries hoặc các thứ. Nhưng tốc độ phát triển của Rust cũng nhanh vd

Không biết có là nói quá không khi nói điều này, mình thực sự thấy Rust giúp mình hoàn thành công việc, cho mình cảm giác mình là một người lập trình chuyên nghiệp. Nó nghiêm khắc, nó bắt mình tuân theo rất nhiều luật, xử lý rất nhiều lỗi. Tuy hiện tại chương trình của mình chưa đạt đến độ chín như các Rustacean mình có cơ hội được trò chuyện trên mạng. Nhưng mình vẫn sẽ tiếp tục học để đưa phần mềm của mình đạt đến chất lượng gần như không thể bàn cãi.

Tính đến thời điểm hiện tại mình đã
  1. Hoàn thành The Book (Sách học lập trình Rust, tên đầy đủ là “Rust Programming Language Book”). Bản dịch của chú daohainam` trên Github mới đến Chương 11 (Tiếng Việt) nên còn lại là đọc Tiếng Anh, bị lỗi thuật ngữ chút, cũng may là từ đầu học bằng The Book xong rồi mới chuyển về Tiếng Việt học lại. Mất mấy tuần trời mới hiểu được tương đối cơ chế Ownership, Borrowing và Reference rồi cả Result<> và Option, unwrap() và Lifetime các kiểu :LOL:
  2. Đọc được một chút (Mình chỉ tham khảo trong lúc học The Book thôi) Rust By Example.
  3. Hoàn thiện hết 98 Problems trong Rustlings
  4. (09/06/2024) - Đang thực hiện 20 dự án CLI Programs ngắn trên Github (Thử thách trên Github). Đồng thời tự mò thêm trong The Coding Den và The Rust Programming Community trên Discord (Có nhiều ông chỉ cho các coding practices rồi cách lập trình safe
  5. Đang đọc sách Rust CLI, Nursery, Rust Patterns, Too Many Lists .v.v. thử áp dụng các quy tắc lập trình ở đó vào trong dự án của mình (18/07/2024)
Cập nhật tiếp ở trong Thread

Cập nhật ngày 18/07: Mãi mới biết đến cargo clippy, giờ nghiện Rust không lối thoát (IDE: Lapce)

2024-07-18-13:56:52-screenshot.png
 
Sửa lần cuối:
Viết cat bằng Rust (không có highlight syntax cho Rust ;-;)
Ruby:
use std::{fs::File, io::{BufRead, BufReader}};
use clap::Parser;

#[derive(Debug, Parser)]
struct Args {
    filename: String
}

fn main() {
    let filename = Args::parse().filename;
    if let Err(err) = run(&filename) {
        println!("{err}: {filename}");
        return;
    }  
}

fn run(filename: &str) -> Result<(), std::io::Error> {
    let reader = BufReader::new(File::open(filename)?);
    for line in reader.lines() {
        let line = line?;
        println!("{line}")
    }
    Ok(())
}
 
:LOL: Mình chưa lập trình nhiều nên không rõ mà hình như khái niệm về Lifetime này là của riêng Rust, vì Lifetime đi kèm với Ownership, mà chỉ có Rust mới dùng Ownership, một là manual, hai là bên GC
comment chủ yếu khịa thánh nhân võ mồm @buonnguqua10

đoạn "một là manual, hai là bên GC" chắc đúng ra là "một bên là manual, một bên có GC"?
 
tại hạ van xin cao nhân đừng có dời cái khung thành
Tôi trước có đi học toàn giải bài môn giải thuật bằng C++ và cũng qua môn được 5 điểm nên hem biết mấy cái các hạ đang nói
Đi thi 2 bài thì bài sau không học nên chịu chết, chỉ làm được 1 bài nên được có 5 điểm bọ
 
Sửa lần cuối:
Còn làm backend CRUD bằng Rust tràn mem thế nào được
Các hạ cũng đâu viết ra được db, Redis, messegeQueue bằng Rust. Chỉ là đi sử dụng lại những thứ sẵn có như tôi
 

Thống kê chủ đề

Ngày tạo
duykhanh471,
Người trả lời cuối
emlameo4`,
Trả lời
142
Lượt xem
27.158
Quay lại
Lên đầu trang