Lập trình

Scratch: Ngôn ngữ lập trình dạng khối cho trẻ em

Huy Erick

Scratch là một ngôn ngữ lập trình dạng khối hướng đến trẻ em như một công cụ giáo dục, với độ tuổi mục tiêu từ 8 đến 16 tuổi. Người dùng trên trang web có...

Scratch là một ngôn ngữ lập trình dạng khối hướng đến trẻ em như một công cụ giáo dục, với độ tuổi mục tiêu từ 8 đến 16 tuổi. Người dùng trên trang web có thể tạo các dự án trên trang web bằng giao diện dạng khối. Scratch được phát triển bởi MIT Media Lab và đã được dịch sang hơn 70 ngôn ngữ và được sử dụng ở hầu hết các vùng trên thế giới.

Scratch là một công cụ giáo dục phổ biến được sử dụng trong các trung tâm học ngoại khóa, trường học và đại học, cũng như các tổ chức tri thức công cộng khác. Theo số liệu cộng đồng trên trang web chính thức của ngôn ngữ này, hiện có hơn 123 triệu dự án được chia sẻ bởi hơn 103 triệu người dùng, hơn 804 triệu dự án đã từng được tạo ra và hơn 95 triệu lượt truy cập vào trang web mỗi tháng.

Scratch lấy cảm hứng từ kỹ thuật "scratching" của các DJ, nơi các đĩa vinyl được cắt ghép và điều khiển trên đĩa quay để tạo ra các hiệu ứng âm thanh và nhạc cụ thú vị. Tương tự như scratching, trang web Scratch cho phép người dùng kết hợp các phương tiện truyền thông khác nhau (bao gồm đồ họa, âm thanh và các chương trình khác) theo cách sáng tạo thông qua việc tạo và "remix" các dự án như trò chơi video, hoạt hình, âm nhạc và mô phỏng.

Scratch 3.0

Giao diện của Scratch được chia thành ba phần chính: vùng sân khấu, bảng khối và vùng lập trình để đặt và sắp xếp các khối thành kịch bản có thể chạy bằng cách nhấn vào lá cờ xanh hoặc nhấp vào mã chính nó. Người dùng cũng có thể tạo các khối mã của riêng mình và chúng sẽ xuất hiện trong phần "Khối của tôi".

Phần sân khấu hiển thị kết quả (ví dụ: hoạt ảnh, đồ họa cua con rùa, có thể hiển thị ở kích thước nhỏ hoặc bình thường, cũng như có tùy chọn toàn màn hình) và các hình ảnh thu nhỏ của tất cả các nhân vật đang được liệt kê ở phía dưới. Sân khấu sử dụng tọa độ x và y, với 0,0 là trung tâm sân khấu.

Khi chọn một nhân vật ở phía dưới của vùng sân khấu, các khối lệnh có thể được áp dụng vào nó bằng cách kéo chúng từ bảng khối vào khu vực lập trình. Tab Trang phục cho phép người dùng thay đổi diện mạo của nhân vật bằng một trình chỉnh sửa vector và bitmap để tạo ra các hiệu ứng khác nhau, bao gồm hoạt ảnh. Tab Âm thanh cho phép đính kèm âm thanh và âm nhạc vào một nhân vật.

Ngoài ra, người dùng có thể tự vẽ nhân vật và cảnh nền của riêng mình, chọn một nhân vật từ thư viện hoặc tải lên một hình ảnh.

Bảng dưới đây hiển thị các danh mục của các khối lập trình:

  • Motion: Di chuyển của nhân vật như góc và hướng di chuyển.
  • Looks: Điều khiển hình ảnh của nhân vật.
  • Sound: Chơi các tệp âm thanh và hiệu ứng.
  • Events: Xử lý các sự kiện và gửi thông điệp.
  • Control: Câu lệnh điều kiện, vòng lặp và tạo bản sao.
  • Sensing: Nhân vật có thể tương tác với nhân vật khác, con trỏ chuột và phông nền.
  • Operators: Các toán tử toán học, liên từ và so sánh.
  • Variables and Lists: Các khối để truy cập và thiết lập biến. Biến đám mây có thể được truy cập bởi tất cả các phiên bản đang chạy của dự án.
  • My Blocks: Các chức năng tự định nghĩa, có thể truy cập dưới dạng các khối. Chúng có thể chạy mà không cần làm mới màn hình.
  • Extensions: Mở rộng được giải thích ở phần tiếp theo.

Sửa đổi ngoại vi

Trong Scratch, các ngoại vi cung cấp thêm khối và tính năng có thể sử dụng trong các dự án. Trong Scratch 2.0, các ngoại vi hoàn toàn dựa trên phần cứng. Các ngoại vi dựa trên phần mềm đã được thêm vào Scratch 3.0, chẳng hạn như giọng nói thành văn bản và một số ngoại vi mới dựa trên phần cứng như micro:bit. Các ngoại vi được liệt kê dưới đây.

  • Ngoại vi vật lý:

    • LEGO Mindstorms EV3: Điều khiển động cơ và nhận dữ liệu cảm biến từ Lego Mindstorms EV3.
    • Makey Makey: Sử dụng Makey Makey để kiểm soát dự án.
    • LEGO Education WeDo 2.0: Điều khiển động cơ và nhận dữ liệu cảm biến từ Lego WeDo.
    • micro:bit: Sử dụng micro:bit để kiểm soát dự án.
    • LEGO BOOST: Mang các sáng tạo robot vào cuộc sống.
    • Go Direct Force & Acceleration: Cảm nhận lực kéo, đẩy, chuyển động và quay.
  • Ngoại vi số:

    • Âm nhạc: Chơi các nhạc cụ số (trống, kèn, đàn viô-lông, đàn piano và nhiều hơn nữa).
    • Bút: Vẽ trên Sân khấu với độ dày và màu sắc đa dạng.
    • Dò phim: Phát hiện chuyển động với máy ảnh.
  • Ngoại vi mới:

    • Text to Speech: Chuyển đổi từ văn bản thành giọng nói (có nhiều giọng, do Amazon cung cấp).
    • Translate: Sử dụng Google Translate để dịch văn bản từ một ngôn ngữ sang nhiều ngôn ngữ khác, bao gồm tiếng Ả Rập, tiếng Trung, tiếng Hà Lan, tiếng Anh, tiếng Pháp, tiếng Hy Lạp, tiếng Na Uy và tiếng Nhật.

Một bài báo được xuất bản vào năm 2019 bởi NYU đã lập luận và minh họa rằng, đối với việc lập trình âm nhạc với Scratch, "các khối âm nhạc và âm thanh hiện được thực hiện trong Scratch có thể giới hạn và làm thất vọng khả năng tạo ra âm nhạc có ý nghĩa cho trẻ em, đối tượng người dùng chính của Scratch".

Cộng đồng người dùng

Scratch được sử dụng trong nhiều môi trường khác nhau: trường học, bảo tàng, thư viện, trung tâm cộng đồng và gia đình. Scratch được thiết kế chủ yếu cho người dùng từ 8-16 tuổi, nhưng được sử dụng bởi mọi độ tuổi và có một cộng đồng người lớn đáng kể từ năm 2009 trở đi.

Cộng đồng rộng lớn này đã tạo nên nhiều cộng đồng xung quanh, cả về mặt vật lý và kỹ thuật số. Scratchers có khả năng chia sẻ dự án của họ và nhận phản hồi. Dự án có thể được tải lên trực tiếp từ môi trường phát triển lên trang web Scratch và bất kỳ thành viên trong cộng đồng nào cũng có thể xem và tải xuống mã nguồn đầy đủ để nghiên cứu hoặc remix thành các dự án mới.

Scratchers cũng có thể tạo ra các studio dự án, bình luận, yêu thích và "yêu" các dự án khác, theo dõi các thành viên khác để xem dự án và hoạt động của họ và chia sẻ ý tưởng. Dự án có sự đa dạng từ trò chơi và hoạt ảnh cho đến các công cụ thực tế. Ngoài ra, để khuyến khích việc tạo ra và chia sẻ giữa người dùng, trang web thường tổ chức các thách thức "Scratch Design Studio".

The MIT Scratch Team làm việc để đảm bảo cộng đồng này duy trì một môi trường thân thiện và tôn trọng đối với mọi người.

Giáo viên có cộng đồng trực tuyến riêng của họ được gọi là ScratchEd, được phát triển và hỗ trợ bởi Trường Cao đẳng Giáo dục Harvard. Trong cộng đồng này, giáo viên Scratch chia sẻ câu chuyện, trao đổi tài nguyên và đặt câu hỏi .

Trang Wiki Scratch là một nguồn thông tin hỗ trợ cho Scratch và thông tin về trang web, lịch sử và các hiện tượng xung quanh Scratch. Mặc dù được hỗ trợ bởi Scratch Team, nhưng Wiki Scratch chủ yếu được viết bởi người dùng Scratch và được lưu trữ độc lập khỏi trang web chính của Scratch.

Mỗi tài khoản trên trang web Scratch có một vai trò/tình trạng phụ thuộc vào mức độ hoạt động của người dùng trên nền tảng này hoặc nếu giáo viên thiết lập một tài khoản cho một môi trường lớp học. Khi một người tạo tài khoản, nó được gán vai trò "New Scratcher" với những hạn chế áp đặt, bao gồm không thể sử dụng Dữ liệu Đám mây và phải chờ lâu hơn giữa các bài đăng trên diễn đàn hoặc nhận xét. Sau một thời gian tương tác với trang web và chia sẻ dự án, họ được trao vai trò "Scratcher", loại bỏ các hạn chế về Dữ liệu Đám mây, tần suất nhận xét và chỉnh sửa bài đăng.

Người điều hành chính thức và nhà phát triển Scratch được gán nhãn là phần của "Scratch Team" và có dấu hoa thị (*) ở cuối tên người dùng trong hầu hết các trường hợp hiển thị tên người dùng trong nội dung trang web.

Scratch cũng có các loại tài khoản đặc biệt dành cho Sinh viên và Giáo viên, cho phép Scratch được sử dụng trong các lớp học.

Trong tháng 8 năm 2020, GreatFire công bố rằng chính phủ Trung Quốc đã chặn truy cập vào trang web Scratch. Khi đó, ước tính có hơn ba triệu người ở Trung Quốc đang sử dụng Scratch. Lý do được chỉ ra là Macau, Hồng Kông và Đài Loan được liệt kê là các quốc gia trên trang web.

Mã nguồn

Mã nguồn cho trình soạn thảo dự án trong cả ba phiên bản chính và hầu hết trang web hiện tại được lưu trữ công khai trên GitHub trong các kho lưu trữ khác nhau. Scratch 3.0 được viết bằng JavaScript, 2.0 được lập trình bằng ActionScript và các phiên bản 1.X được dựa trên Squeak, dựa trên Smalltalk-80.

Phiên bản 2.0 có một trình thông dịch JavaScript thử nghiệm đang được phát triển song song với phiên bản ActionScript.

Trong 3.0, các khối Scratch được triển khai bằng Blockly, một thư viện JavaScript được phát triển bởi Google để tạo ra các ngôn ngữ lập trình dạng khối.

Vào ngày 13 tháng 5 năm 2014, một năm sau khi phiên bản 2.0 được phát hành, một nhà phát triển trên diễn đàn Scratch thông báo rằng phiên bản 2.0 sẽ trở thành mã nguồn mở.

Sự kiện

Giáo viên Scratch có thể tụ họp trực tiếp tại các cuộc gặp gỡ Scratch Educator. Tại các buổi gặp gỡ này, giáo viên Scratch học hỏi lẫn nhau và chia sẻ ý tưởng và chiến lược hỗ trợ sáng tạo tính toán.

Mỗi năm, "Tuần Scratch", trước đây được biết đến với tên "Ngày Scratch", được tuyên bố vào tháng 5 hàng năm. Các thành viên cộng đồng được khuyến khích tổ chức một sự kiện trong hoặc xung quanh ngày này, lớn hoặc nhỏ, để kỷ niệm Scratch. Các sự kiện này được tổ chức trên toàn cầu và có thể tìm thấy danh sách trên trang web Scratch Day. Tuần Scratch là một chuỗi tập trung vào các hoạt động Scratch trên trang web Scratch.

Vào mỗi ngày cá tháng tư, Đội Scratch sẽ đùa và bổ sung trứng phục sinh, ví dụ như chuyển tất cả các khối sự kiện thành phiên bản khác của khối tương tự như mèo.

Lịch sử

Vào những năm đầu 2000, nhóm Lifelong Kindergarten của MIT Media Lab đang phát triển các ngôn ngữ lập trình dạng khối dành cho trẻ em. Vào năm 2003, Mitchel Resnick, Yasmin Kafai và John Maeda đã được trao một hợp đồng từ Quỹ Khoa học Quốc gia để phát triển môi trường lập trình mới cho trẻ em thể hiện bằng mã.

Scratch được phát triển dựa trên việc tương tác liên tục với các thành viên trẻ em và nhân viên trong các trung tâm Computer Clubhouse. Việc sử dụng Scratch tại Computer Clubhouse đã trở thành một mô hình cho các trung tâm học ngoại khóa khác, chứng minh cách các cài đặt học không chính thức có thể hỗ trợ sự phát triển về sự thành thạo công nghệ.

Scratch 2.0 được phát hành vào ngày 9 tháng 5 năm 2013. Bản cập nhật này đã thay đổi giao diện của trang web và bao gồm cả trình soạn thảo dự án trực tuyến và trình soạn thảo ngoại tuyến. Các khối tùy chỉnh hiện có thể được xác định trong các dự án, cùng với một số cải tiến khác. Trình soạn thảo ngoại tuyến của Scratch 2.0 có thể được tải xuống cho Windows, Mac và Linux trực tiếp từ trang web Scratch, mặc dù hỗ trợ cho Linux sau đó đã bị ngừng. Phiên bản di động không chính thức phải được tải xuống từ diễn đàn Scratch.

Scratch 3.0 được công bố lần đầu bởi nhóm Scratch vào năm 2016. Nhiều phiên bản alpha công khai đã được phát hành từ đó đến tháng 1 năm 2018, sau đó phiên bản "Preview" trước phiên beta được phát hành. Một phiên bản beta của Scratch 3.0 được phát hành vào ngày 1 tháng 8 năm 2018 và được sử dụng trên hầu hết các trình duyệt, trừ Internet Explorer.

Scratch 3.0, phiên bản chính thức đầu tiên của phiên bản 3.x, được phát hành vào ngày 2 tháng 1 năm 2019. Trong ngày 28 tháng 6 năm 2023, tiêu đề và liên kết trên trang web Scratch đã thay đổi từ màu xanh sang màu tím và mở ra tùy chọn màu khối tương phản cao để làm cho trang web dễ đọc và sử dụng hơn cho những người mù màu.

Kiểu tệp

Trong Scratch 1.4, tệp *.sb là định dạng tệp được sử dụng để lưu trữ các dự án.

Một tệp *.sb được chia thành bốn phần:

  • "header": phần đầu 10 byte chứa chuỗi ASCII 'ScratchV02'.
  • "infoSize": mã hóa độ dài của infoObjects của dự án. Một số nguyên 32 bit, 4 byte.
  • "infoObjects": một phần dữ liệu định dạng từ điển. Nó chứa: "thumbnail", một hình thu nhỏ của sân khấu; "author", tên người tạo dự án; "comment", Ghi chú về dự án; "history", lịch sử lưu và tải lên; "scratch-version", phiên bản Scratch được sử dụng để lưu tệp;
  • "contents": một bảng đối tượng với Sân khấu là gốc. Tất cả các đối tượng trong chương trình được lưu trữ ở đây dưới dạng tham chiếu.

Scratch 2.0 sử dụng định dạng tệp *.sb2. Đây là tệp nén chứa một tệp .json cùng với nội dung của dự án Scratch bao gồm âm thanh (lưu dưới dạng .wav) và hình ảnh (lưu dưới dạng .png). Mỗi loại tệp, ngoại trừ project.json, được lưu trữ dưới dạng một số, bắt đầu từ 0 và đếm lên với mỗi tệp bổ sung. Tệp hình ảnh được gán nhãn '0.png' luôn là một hình ảnh trắng 480x360, nhưng '0.wav' vẫn là tệp sớm nhất không bị xóa.

ScratchX là một phiên bản thử nghiệm của Scratch sử dụng định dạng tệp .sbx.

Scratch 3.0 sử dụng định dạng tệp .sb3, rất tương tự như .sb2, khác biệt duy nhất là âm thanh.

1