< Return to Video

Josh Matthews - An Introduction To Rust

  • 3:16 - 3:18
    --Con người không quan trọng --
  • 3:19 - 3:23
    --Không có con người trong công nghệ,
    chỉ có các phần thay thế được --
  • 3:23 - 3:28
    (Cười)
  • 6:16 - 6:17
    Được rồi, bắt đầu thôi.
  • 6:21 - 6:26
    Tôi sẽ cho các bạn biết
    Rust là gì,
  • 6:26 - 6:29
    tại sao Rust là một phần việc của Mozilla
  • 6:29 - 6:32
    và khi nào Rust sẽ bắt đầu
    là một phần việc của Mozilla.
  • 6:33 - 6:33
    Bắt đầu thôi.
  • 6:34 - 6:36
    Rust là một ngôn ngữ lập trình mới
  • 6:36 - 6:40
    được tạo ra tại Mozilla
  • 6:41 - 6:42
    và chia sẻ với thế giới.
  • 6:43 - 6:45
    Mục tiêu
  • 6:45 - 6:46
    đơn thuần là
  • 6:46 - 6:49
    cứ khi nào bạn, một lập trình viên,
  • 6:49 - 6:50
    theo truyền thống
  • 6:51 - 6:52
    cần tới C++
  • 6:52 - 6:55
    để đảm bảo, ví dụ như
    hiệu suất chẳng hạn,
  • 6:55 - 6:57
    thì Rust sẽ là lựa chọn thay thế khả thi
  • 6:57 - 6:58
    trong mọi tình huống.
  • 6:58 - 7:01
    Sẽ không còn lý do dùng C++ thay vì
  • 7:01 - 7:02
    dùng Rust,
  • 7:03 - 7:04
    tương lai lí tưởng là vậy.
  • 7:07 - 7:09
    Rust khởi đầu là dự án bên lề
  • 7:09 - 7:11
    của một thành viên Mozilla, Graydon Hoare,
  • 7:11 - 7:14
    trước năm 2009.
  • 7:14 - 7:16
    Anh ấy bắt đầu dành toàn thời gian
    cho dự án
  • 7:16 - 7:18
    năm 2009
  • 7:18 - 7:21
    vì Mozilla thấy ý tưởng và đề xuất:
  • 7:21 - 7:23
    "Chúng ta có thể dùng vào Firefox...
  • 7:23 - 7:26
    ...và cải thiện sản phẩm
    nếu chúng ta hoàn thiện ngôn ngữ này."
  • 7:26 - 7:30
    Đó là lúc chúng tôi bắt đầu đầu tư
    thời gian và tài nguyên cho dự án.
  • 7:32 - 7:33
    Vài năm sau,
  • 7:33 - 7:37
    chúng tôi hiện có một đội
    thuộc Mozilla Research
  • 7:37 - 7:39
    dành toàn thời gian
    phát triển Rust.
  • 7:40 - 7:44
    Chúng tôi cho ra
    phiên bản 1.0 năm ngoái
  • 7:44 - 7:47
    và hiện cứ 6 tuần chúng tôi
    cho ra một phiên bản mới
  • 7:47 - 7:48
    chúng tôi vừa cho ra phiên bản 1.13.
  • 7:49 - 7:51
    Và có một cộng đồng lớn
  • 7:51 - 7:53
    đang quan tâm đến ngôn ngữ,
  • 7:54 - 7:56
    nên không chỉ mỗi phát triển viên
  • 7:56 - 7:57
    ở Mozilla phát triển Rust.
  • 7:58 - 8:01
    Một số các phát triển viên này
    thuộc Nhóm Lõi,
  • 8:01 - 8:03
    là những người
    quyết định tương lai của ngôn ngữ
  • 8:03 - 8:06
    và giúp định hình hướng phát triển
    theo thời gian.
  • 8:07 - 8:08
    Ngoài nhân viên,
  • 8:08 - 8:09
    còn có tình nguyện viên
  • 8:09 - 8:11
    và nhân viên từ các công ti
  • 8:11 - 8:15
    hiện đang dùng Rust
    để phát triển sản phẩm.
  • 8:15 - 8:17
    Họ cũng giúp định hình hệ sinh thái Rust
  • 8:17 - 8:21
    với rất nhiều thư viện
  • 8:21 - 8:24
    hiện đang được phát triển bởi
  • 8:24 - 8:25
    những người hứng thú với ngôn ngữ.
  • 8:25 - 8:29
    Rust nhận được rất nhiều lượt tải.
    Từ lần thuyết trình cuối của tôi,
  • 8:29 - 8:32
    đã có thêm 10 triệu lượt tải
    và 300 thư viện mới,
  • 8:32 - 8:35
    nói chung là rất sôi nổi.
    Còn có các bạn của Rust,
  • 8:35 - 8:38
    để tôi giới thiệu với các bạn.
  • 8:38 - 8:43
    Đây là trang ghi lại rất nhiều các
    công ty đã cho chúng tôi biết rằng
  • 8:43 - 8:45
    họ đang dùng Rust
    trong sản xuất...
  • 8:45 - 8:49
    ... và họ rất hào hứng
    với triển vọng của Rust.
  • 8:50 - 8:52
    Tóm lại, rất nhiều thứ hay ho
    đang diễn ra.
  • 8:58 - 9:01
    Tại sao chúng tôi tạo ra Rust
  • 9:01 - 9:04
    là vì trước đây,
  • 9:04 - 9:07
    chúng tôi có khoảng
    hơn 10 năm dùng Firefox
  • 9:07 - 9:08
    và Javascript trong Firefox
  • 9:08 - 9:10
    xin lỗi, C++ và Javascript trong Firefox.
  • 9:10 - 9:12
    Chúng tôi nhận ra
  • 9:13 - 9:15
    có một vài vấn đề toàn diện
  • 9:16 - 9:18
    do việc dùng C++ gây ra,
  • 9:19 - 9:23
    cụ thể là việc viết code
    sử dụng các luồng cục bộ
  • 9:23 - 9:24
    là rất khó.
  • 9:24 - 9:26
    Rất dễ viết code sai
  • 9:26 - 9:30
    và rất dễ viết code
    không an toàn
  • 9:30 - 9:31
    dẫn đến việc tạo ra
  • 9:31 - 9:33
    các khai thác bảo mật
  • 9:33 - 9:36
    mà được các chính phủ
  • 9:36 - 9:37
    và tin tặc
  • 9:37 - 9:38
    khắp thế giới
  • 9:38 - 9:39
    lưu trữ và sử dụng nhằm
  • 9:40 - 9:41
    đánh cắp dữ liệu người dùng
  • 9:41 - 9:43
    và kiểm soát máy tính,
  • 9:43 - 9:44
    dùng trình duyệt làm véc-tơ.
  • 9:44 - 9:48
    Rất nhiều khai thác kiểu này
    được công bố hàng năm
  • 9:48 - 9:52
    bởi các nhà điều tra an ninh
  • 9:52 - 9:54
    và còn có các cuộc thi tìm xem
  • 9:54 - 9:57
    ai có thể đánh hạ trình duyệt nhanh nhất.
  • 9:58 - 10:02
    Chúng tôi tìm cách xử lý vấn đề
  • 10:02 - 10:03
    qua một ngôn ngữ mới.
  • 10:03 - 10:04
    Hóa ra
  • 10:04 - 10:06
    hai vấn đề
  • 10:06 - 10:08
    mà vừa cản trở việc viết code song song
  • 10:08 - 10:10
    nhằm tận dụng phần cứng hiện đại
  • 10:11 - 10:14
    vừa cản trở việc viết code
    an toàn và tránh bị khai thác
  • 10:14 - 10:15
    đều có thể giải quyết
  • 10:15 - 10:18
    bằng khái niệm "Quyền sở hữu".
  • 10:18 - 10:21
    Để tôi làm rõ khái niệm cho các bạn.
  • 10:21 - 10:24
    Khái niệm "Quyền sở hữu"
    bao hàm hai ý niệm.
  • 10:25 - 10:28
    Một là chủ sở hữu của giá trị là ai
  • 10:28 - 10:30
    và liệu có nhiều chủ sở hữu
    cùng một giá trị
  • 10:30 - 10:34
    hay nhiều người dùng đang chia sẻ
    một giá trị hay không.
  • 10:34 - 10:38
    Hai là khi nào giá trị mới
    thực sự hợp lệ.
  • 10:38 - 10:41
    Chỗ nào trong chương trình
  • 10:41 - 10:44
    mà việc tương tác với giá trị
    mới thực sự an toàn?
  • 10:45 - 10:47
    Từ đây ta có thể rút ra vài quy tắc.
  • 10:48 - 10:50
    Nếu chỉ có một chủ sở hữu
    cho một giá trị,
  • 10:50 - 10:54
    có thể hủy giá trị
    khi chủ sở hữu ra khỏi tầm vực
  • 10:54 - 10:57
    vì không còn cách nào
    để tham chiếu giá trị đó nữa.
  • 10:58 - 11:00
    Tương tự, các giá trị
    chỉ có một chủ sở hữu
  • 11:00 - 11:02
    được phép thay đổi
  • 11:02 - 11:06
    vì không ai quan sát được
    việc giá trị bị biến đổi.
  • 11:06 - 11:07
    Cuối cùng,
  • 11:08 - 11:10
    trong trường hợp đa chủ sở hữu,
  • 11:10 - 11:11
    ta cần đưa ra
  • 11:11 - 11:12
    khái niệm Mượn,
  • 11:12 - 11:14
    tức là tuy vẫn chỉ có một chủ sở hữu,
  • 11:14 - 11:15
    người khác có thể quan sát,
  • 11:15 - 11:18
    khiến giá trị không thể thay đổi.
  • 11:18 - 11:21
    Một ví dụ tương đồng,
  • 11:22 - 11:24
    tôi có một sách tô màu
    và một cái bút màu
  • 11:24 - 11:25
    cùng một nhóm bạn,
  • 11:25 - 11:27
    chúng tôi có thể đề ra vài quy tắc sau.
  • 11:28 - 11:31
    Cuốn sách và cái bút màu
    là sở hữu của tôi.
  • 11:31 - 11:33
    Tôi đi đâu thì chúng theo đấy.
  • 11:33 - 11:35
    Tôi bỏ về thì không ai khác
    quan sát được cuốn sách
  • 11:35 - 11:36
    hay tô màu được nữa.
  • 11:37 - 11:41
    Nhưng tôi có thể cho ai đó
    mượn cuốn sách,
  • 11:41 - 11:43
    nói cách khác là người ta
    mượn của tôi.
  • 11:43 - 11:45
    Tôi không tô màu được
    khi người ta mượn
  • 11:45 - 11:46
    vì thế không hay.
  • 11:47 - 11:49
    Người tôi cho mượn cũng có thể
    cho người khác mượn
  • 11:50 - 11:53
    với điều kiện là
    người đang mượn
  • 11:53 - 11:55
    phải trả sách cho tôi
    trước khi đi
  • 11:55 - 11:56
    vì tôi là chủ sở hữu,
  • 11:56 - 11:58
    chỉ tôi mới mang được sách đi.
  • 12:00 - 12:00
    Một điều nữa,
  • 12:03 - 12:04
    nếu tôi có bút màu
  • 12:04 - 12:05
    thì tôi có thể tô màu được
  • 12:05 - 12:06
    nếu tôi cũng có sách.
  • 12:07 - 12:09
    Tôi cũng có thể cho mượn bút,
  • 12:09 - 12:12
    người mượn bút sẽ tô màu được
    nếu người ta có sách
  • 12:12 - 12:14
    nhưng tôi thì không còn
    tô màu được nữa
  • 12:14 - 12:16
    vì chỉ có một cái bút.
  • 12:16 - 12:17
    Cuối cùng,
  • 12:17 - 12:20
    nếu tôi muốn về nhưng lại
    không có sách trong tay
  • 12:20 - 12:25
    thì chết rồi, tôi phải đợi
    đến khi có người trả lại sách cho tôi
  • 12:25 - 12:27
    hoặc tôi phải cho sách
    cho ai khác và nói
  • 12:27 - 12:30
    "Tao không còn sở hữu sách nữa,
    mày đi mà giải quyết."
  • 12:32 - 12:34
    Quyền sở hữu ở Rust.
  • 12:37 - 12:41
    Hình dung ta có một kiểu dữ liệu
    gọi là ColouringBook.
  • 12:41 - 12:42
    Nó cho ta một hàm khởi tạo
  • 12:42 - 12:44
    trả về một thực thể mới
    của kiểu ColouringBook.
  • 12:44 - 12:45
    Tiếp đó,
  • 12:45 - 12:48
    ta có một biến tên là book
  • 12:48 - 12:50
    và ta cho nó
  • 12:50 - 12:52
    lưu giá trị của kiểu ColouringBook này.
  • 12:52 - 12:53
    Giờ ta có thể
  • 12:53 - 12:54
    gọi phương thức colour()
  • 12:54 - 12:57
    và thay đổi ColouringBook
    thế nào đó,
  • 12:57 - 12:58
    tô màu chẳng hạn.
  • 12:58 - 13:00
    Ta có thể thay đổi
  • 13:00 - 13:01
    vì hiện chỉ có một chủ sở hữu.
  • 13:04 - 13:05
    Để xem chuyện gì xảy ra nếu
  • 13:05 - 13:07
    ai đó mượn sách?
  • 13:07 - 13:09
    Ta có thêm một biến
    tên là borrowed_book
  • 13:09 - 13:11
    ta dùng dấu &
  • 13:11 - 13:13
    để cho biết ta đang mượn giá trị
  • 13:13 - 13:16
    được lưu trữ trong giá trị tên là book này
  • 13:16 - 13:17
    - trong biến book.
  • 13:17 - 13:19
    Đây gọi là Mượn Không Thay Đổi Được.
  • 13:20 - 13:23
    Không còn có thể
  • 13:23 - 13:25
    thay đổi giá trị ban đầu nữa
  • 13:25 - 13:27
    vì nó đã bị mượn.
  • 13:27 - 13:28
    Ta không thể
  • 13:28 - 13:30
    tô màu
    trong khi ai đó đang mượn sách
  • 13:31 - 13:33
    như ví dụ tôi nói đến.
  • 13:34 - 13:35
    Tuy nhiên,
  • 13:35 - 13:38
    dù một ai khác đã
    mượn sách,
  • 13:38 - 13:39
    người đó cũng chưa tô màu được
  • 13:39 - 13:40
    do chưa có bút.
  • 13:40 - 13:45
  • 13:45 - 13:46
  • 13:49 - 13:51
  • 13:51 - 13:53
  • 13:53 - 13:54
  • 13:54 - 13:55
  • 13:56 - 13:59
  • 13:59 - 14:01
  • 14:01 - 14:03
  • 14:03 - 14:04
  • 14:04 - 14:06
  • 14:06 - 14:06
  • 14:06 - 14:09
  • 14:09 - 14:10
  • 14:13 - 14:15
  • 14:15 - 14:19
  • 14:19 - 14:20
  • 14:20 - 14:22
  • 14:22 - 14:24
  • 14:24 - 14:26
  • 14:30 - 14:32
  • 14:33 - 14:34
  • 14:34 - 14:36
  • 14:36 - 14:37
  • 14:37 - 14:38
  • 14:38 - 14:40
  • 14:41 - 14:43
  • 14:43 - 14:44
  • 14:44 - 14:45
  • 14:45 - 14:46
  • 14:46 - 14:47
  • 14:48 - 14:49
  • 14:50 - 14:53
  • 14:53 - 14:54
  • 14:54 - 14:57
  • 14:57 - 14:59
  • 14:59 - 15:01
  • 15:01 - 15:03
  • 15:03 - 15:06
  • 15:06 - 15:08
  • 15:08 - 15:10
  • 15:10 - 15:12
  • 15:12 - 15:15
  • 15:15 - 15:17
  • 15:17 - 15:18
  • 15:18 - 15:20
  • 15:20 - 15:21
  • 15:21 - 15:24
  • 15:24 - 15:26
  • 15:26 - 15:30
  • 15:30 - 15:31
  • 15:31 - 15:32
  • 15:32 - 15:34
  • 15:34 - 15:37
  • 15:37 - 15:39
  • 15:39 - 15:41
  • 15:43 - 15:46
  • 15:46 - 15:49
  • 15:49 - 15:51
  • 15:52 - 15:54
  • 15:54 - 15:57
  • 15:58 - 15:59
  • 15:59 - 16:02
  • 16:02 - 16:04
  • 16:04 - 16:05
  • 16:07 - 16:08
  • 16:08 - 16:10
  • 16:10 - 16:13
  • 16:13 - 16:15
  • 16:15 - 16:16
  • 16:16 - 16:18
  • 16:18 - 16:20
  • 16:22 - 16:25
  • 16:25 - 16:28
  • 16:28 - 16:32
  • 16:32 - 16:33
  • 16:36 - 16:36
  • 16:37 - 16:39
  • 16:39 - 16:41
  • 16:41 - 16:43
  • 16:43 - 16:46
  • 16:46 - 16:48
  • 16:49 - 16:56
  • 16:57 - 16:57
  • 16:58 - 17:01
  • 17:02 - 17:05
  • 17:05 - 17:08
  • 17:08 - 17:09
  • 17:09 - 17:11
  • 17:11 - 17:13
  • 17:13 - 17:15
  • 17:15 - 17:17
  • 17:17 - 17:20
  • 17:20 - 17:21
  • 17:21 - 17:22
  • 17:22 - 17:24
  • 17:25 - 17:27
  • 17:27 - 17:28
  • 17:29 - 17:32
  • 17:33 - 17:34
  • 17:34 - 17:37
  • 17:38 - 17:39
  • 17:39 - 17:41
  • 17:41 - 17:45
  • 17:45 - 17:51
  • 17:54 - 17:55
  • 17:55 - 17:56
  • 17:56 - 18:00
  • 18:00 - 18:01
  • 18:01 - 18:05
  • 18:05 - 18:08
  • 18:08 - 18:10
  • 18:10 - 18:12
  • 18:12 - 18:15
  • 18:15 - 18:19
  • 18:19 - 18:20
  • 18:21 - 18:24
  • 18:25 - 18:27
  • 18:27 - 18:29
  • 18:29 - 18:32
  • 18:32 - 18:34
  • 18:34 - 18:37
  • 18:37 - 18:40
  • 18:40 - 18:42
  • 18:42 - 18:44
  • 18:44 - 18:50
  • 18:50 - 18:51
  • 18:51 - 18:54
  • 18:54 - 18:55
  • 18:55 - 18:58
  • 18:58 - 18:59
  • 18:59 - 19:02
  • 19:02 - 19:04
  • 19:04 - 19:05
  • 19:05 - 19:11
  • 19:13 - 19:14
  • 19:14 - 19:15
  • 19:15 - 19:17
  • 19:17 - 19:20
  • 19:20 - 19:23
  • 19:23 - 19:25
  • 19:25 - 19:27
  • 19:27 - 19:29
  • 19:29 - 19:31
  • 19:31 - 19:33
  • 19:33 - 19:35
  • 19:35 - 19:37
  • 19:37 - 19:39
  • 19:39 - 19:40
  • 19:40 - 19:44
  • 19:44 - 19:46
  • 19:46 - 19:48
  • 19:48 - 19:50
  • 19:50 - 19:53
  • 19:53 - 19:56
  • 19:56 - 19:58
  • 19:58 - 20:00
  • 20:00 - 20:03
  • 20:03 - 20:05
  • 20:05 - 20:10
  • 20:10 - 20:11
  • 20:11 - 20:13
  • 20:13 - 20:17
  • 20:17 - 20:18
  • 20:18 - 20:21
  • 20:21 - 20:23
  • 20:23 - 20:24
  • 20:24 - 20:26
  • 20:26 - 20:27
  • 20:27 - 20:28
  • 20:28 - 20:30
  • 20:31 - 20:33
  • 20:33 - 20:36
  • 20:36 - 20:38
  • 20:38 - 20:40
  • 20:40 - 20:42
  • 20:42 - 20:44
  • 20:44 - 20:46
  • 20:46 - 20:48
  • 20:48 - 20:50
  • 20:50 - 20:52
  • 20:53 - 20:56
  • 20:56 - 20:57
  • 20:58 - 21:00
  • 21:00 - 21:07
  • 21:07 - 21:09
  • 21:09 - 21:12
  • 21:12 - 21:13
  • 21:13 - 21:15
  • 21:15 - 21:17
  • 21:17 - 21:19
  • 21:19 - 21:21
  • 21:21 - 21:24
  • 21:24 - 21:27
  • 21:28 - 21:29
  • 21:29 - 21:30
  • 21:30 - 21:32
  • 21:32 - 21:35
  • 21:35 - 21:37
  • 21:37 - 21:39
  • 21:39 - 21:41
  • 21:41 - 21:43
  • 21:43 - 21:44
  • 21:44 - 21:47
  • 21:48 - 21:50
  • 21:50 - 21:52
  • 21:52 - 21:55
  • 21:55 - 21:57
  • 21:57 - 21:58
  • 21:58 - 22:01
  • 22:04 - 22:06
  • 22:06 - 22:07
  • 22:07 - 22:09
  • 22:09 - 22:12
  • 22:12 - 22:13
  • 22:13 - 22:15
  • 22:15 - 22:18
  • 22:18 - 22:19
  • 22:19 - 22:23
  • 22:23 - 22:27
  • 22:27 - 22:30
  • 22:30 - 22:32
  • 22:32 - 22:35
  • 22:37 - 22:38
  • 22:38 - 22:39
  • 22:40 - 22:42
  • 22:42 - 22:43
  • 22:49 - 22:50
  • 22:53 - 22:56
  • 22:57 - 22:59
  • 22:59 - 23:02
  • 23:05 - 23:06
  • 23:06 - 23:09
  • 23:09 - 23:10
  • 23:11 - 23:14
  • 23:14 - 23:16
  • 23:16 - 23:17
  • 23:17 - 23:18
  • 23:18 - 23:22
  • 23:22 - 23:25
  • 23:25 - 23:27
  • 23:27 - 23:30
  • 23:30 - 23:32
  • 23:33 - 23:36
  • 23:36 - 23:38
  • 23:38 - 23:41
  • 23:41 - 23:45
  • 23:47 - 23:49
  • 23:49 - 23:52
  • 23:53 - 23:55
  • 23:58 - 23:59
  • 24:16 - 24:19
  • 24:19 - 24:25
  • 24:27 - 24:29
  • 24:29 - 24:32
  • 24:32 - 24:34
  • 24:34 - 24:37
  • 24:37 - 24:39
  • 24:39 - 24:41
  • 24:41 - 24:44
  • 24:45 - 24:48
  • 24:48 - 24:51
  • 24:51 - 24:53
  • 24:54 - 24:58
  • 24:58 - 24:59
  • 24:59 - 25:03
  • 25:03 - 25:06
  • 25:06 - 25:08
  • 25:08 - 25:10
  • 25:10 - 25:11
  • 25:15 - 25:18
  • 25:18 - 25:20
  • 25:20 - 25:21
  • 25:21 - 25:23
  • 25:24 - 25:25
  • 25:25 - 25:28
  • 25:30 - 25:32
  • 25:32 - 25:34
  • 25:34 - 25:36
  • 25:36 - 25:40
  • 25:40 - 25:41
  • 25:41 - 25:44
  • 25:50 - 25:52
  • 25:52 - 25:55
  • 25:55 - 25:57
  • 25:59 - 26:02
  • 26:02 - 26:03
  • 26:03 - 26:06
  • 26:06 - 26:08
  • 26:08 - 26:10
  • 26:10 - 26:14
  • 26:15 - 26:35
  • 26:40 - 26:41
  • 26:42 - 26:44
  • 26:45 - 26:50
  • 26:50 - 26:54
  • 26:54 - 26:56
  • 26:56 - 26:58
  • 26:58 - 27:00
  • 27:00 - 27:01
  • 27:01 - 27:03
  • 27:03 - 27:04
  • 27:04 - 27:06
  • 27:06 - 27:08
  • 27:08 - 27:12
  • 27:12 - 27:14
  • 27:14 - 27:16
  • 27:17 - 27:19
  • 27:19 - 27:21
  • 27:21 - 27:23
  • 27:23 - 27:26
  • 27:26 - 27:27
  • 27:28 - 27:30
  • 27:30 - 27:32
  • 27:32 - 27:33
  • 27:33 - 27:37
  • 27:43 - 27:45
  • 27:45 - 27:47
  • 27:47 - 27:50
Title:
Josh Matthews - An Introduction To Rust
Description:

more » « less
Video Language:
English
Duration:
28:19

Vietnamese subtitles

Incomplete

Revisions