Trò chơi thẻ bài UNIX Pipe
(punkx.org)- Đây là trò chơi giúp trẻ em học cách kết hợp pipe bằng cách nối các lệnh UNIX cơ bản như
cat,grep,tail,head,wc,sort,uniqbằng thẻ bài - Trò chơi giả định phụ huynh biết các lệnh cơ bản và trình diễn cách chạy thực tế; nếu không có môi trường UNIX, có thể dùng jslinux trên trình duyệt
- Người chơi tạo chuỗi lệnh phù hợp với mục tiêu trên thẻ nhiệm vụ, chẳng hạn dùng pipeline như
cat 03.txt | sort | uniq -c | sort -n | tail -1 - Mỗi vòng, người chơi nhỏ tuổi nhất chọn cách thắng là chuỗi ngắn nhất hoặc chuỗi dài nhất, và người hoàn thành nhiệm vụ trước sẽ ghi điểm
- PDF thẻ bài và mã nguồn được công khai để có thể tự in và sử dụng; cũng có gói mở rộng khó hơn về Process Substitution
Mục tiêu và vật dụng chuẩn bị của trò chơi thẻ bài
- UNIX Pipe Card Game là trò chơi thẻ bài dạy trẻ em cách kết hợp các lệnh UNIX bằng pipe
- Các lệnh được đề cập trong trò chơi cơ bản là
cat,grep,tail,head,wc,sort,uniq - Phụ huynh cần chạy lệnh trên máy tính thật để trình diễn; nếu không có hệ thống UNIX, có thể dùng jslinux trên trình duyệt
- Tài liệu để tự in và mã nguồn được công khai
- unix-pipe-cards.pdf: PDF thẻ bài
- unix-pipe-box.pdf: PDF hộp
- unix-pipe-game: mã nguồn
- Gói mở rộng khó hơn, UNIX Pipe Game - Process Substitution, đề cập đến process substitution và
paste,tr,cut,bc
Diễn tiến vòng chơi và ví dụ chuỗi lệnh
- Mục tiêu của vòng ví dụ là in ra dòng xuất hiện nhiều nhất trong tệp
- Đọc tệp bằng
cat - Sắp xếp các dòng bằng
sort - Đếm số dòng trùng lặp bằng
uniq -c - Áp dụng sắp xếp theo số bằng
sort -n - In dòng cuối cùng bằng
tail -1
- Đọc tệp bằng
- Chuỗi lệnh ví dụ để giải mục tiêu này như sau
cat 03.txt | sort | uniq -c | sort -n | tail -1
- Cách chơi cơ bản diễn ra theo thứ tự sau
- Người chơi nhỏ tuổi nhất chọn thể thức vòng chơi
- Người tạo được chuỗi pipe nhỏ nhất hoàn thành nhiệm vụ sẽ thắng
- Người tạo được chuỗi pipe lớn nhất hoàn thành nhiệm vụ sẽ thắng
- Người chơi nhỏ tuổi nhất chọn một nhiệm vụ từ thẻ nhiệm vụ, và cùng một nhiệm vụ không được chọn hai lần
- Xáo thẻ và đặt úp trên bàn
- Mỗi người chơi rút lá trên cùng của bộ bài theo chiều kim đồng hồ và cố gắng hoàn thành nhiệm vụ
- Người chơi đầu tiên hoàn thành nhiệm vụ sẽ ghi điểm
- Khi không còn nhiệm vụ nào nữa, trò chơi kết thúc
- Người chơi nhỏ tuổi nhất chọn thể thức vòng chơi
Các bài toán mà thẻ nhiệm vụ yêu cầu
- Ví dụ nhiệm vụ gồm các mục tiêu có thể giải bằng cách kết hợp lệnh UNIX, như chọn dòng, tìm kiếm chuỗi, đếm số lượng và điều khiển đầu ra
- In dòng thứ hai
- In dòng áp chót
- In dòng thứ 7
- In dòng xuất hiện nhiều nhất
- In dòng xuất hiện hiếm nhất
- Đếm số dòng có
"rises" - In dòng đầu tiên có chứa
W - Đếm số dòng có
"in" - Hiển thị hai dòng ngẫu nhiên
- Đếm số từ trong hai dòng cuối
- In dòng thứ 7 và thứ 8
- Đếm số dòng có
! - Đếm số dòng không có
! - Tạo chuỗi lệnh không in ra gì
2 bình luận
Ý kiến trên Hacker News
Tôi đã làm các bộ bài này (https://punkx.org/) để dạy con gái, và cho đến nay chúng khá hiệu quả
Đặc biệt Unix pipe, mã máy 4917 (https://punkx.org/4917/), bộ bài con trỏ (https://punkx.org/c-pointer-game/) rất tốt, còn bộ Python thì chỉ dùng khoảng 10 lá
Bạn cũng có thể thích board game về buffer overflow bằng hợp ngữ RISC-V https://punkx.org/overflow/, và tùy trình độ của trẻ, cũng có thể chơi trò Rắn và Thang bằng goto https://punkx.org/overflow/build/snakes-and-ladders.pdf
Nếu có con, tôi cũng khuyên nên in thử https://punkx.org/panic/. Nó có những trò nghịch nằm gọn trên một lá bài poker, chẳng hạn cứ mỗi 30 giây lại ngẫu nhiên nhấn backspace hoặc space, hoặc nếu Minecraft đang mở thì ngẫu nhiên nhấn W
Tôi đang tặng nhiều bộ bài cho giáo viên và trường học, nên nếu quan tâm thì cứ gửi email
Tái bút: Tôi sẽ còn ở London thêm 1 tuần nữa nên nếu đặt hàng bây giờ thì giao sẽ chậm, nhưng bù lại tôi sẽ bỏ thêm 1~2 bộ bài vào gói hàng
Nhân tiện, bộ mở rộng Unix pipe toàn là process substitution; tôi không nghĩ nó hữu ích cho trẻ em, nhưng các câu đố thì ổn
Một điều tôi để ý là trong trò chơi có các nhiệm vụ như “in dòng thứ hai”, “in dòng thứ bảy”, nhưng cả hai dòng đó đều trống. Vì vậy, nói chặt chẽ thì
grepkhông khớp gì cũng có thể là đáp án đúngTôi tò mò muốn biết phần in ấn được xử lý thế nào. Bạn tự làm, in theo yêu cầu, hay đặt số lượng lớn rồi tự gửi hàng? Tôi luôn thấy thú vị cách vận hành việc bán sản phẩm vật lý quy mô nhỏ
Các con gái tôi vẫn còn quá nhỏ để dùng, nhưng tôi nghĩ các bộ bài rất tuyệt và mong đến ngày khoảng 8 năm nữa sẽ lôi ra sử dụng
Tôi tự hỏi liệu trẻ em ngày nay có thực sự hiểu được những thứ như thế này không
Tôi không có con và cũng không có dịp ở gần trẻ em, nên mong mọi người xem đây là một câu hỏi chân thành
Khó khăn là phải cạnh tranh với Snapchat và Google/Meta để giành sự chú ý của con bé. Trường học cũng khiến bé khá mệt, còn streak của Snapchat thì thật sự phiền phức. Càng nhiều bạn thì càng nhiều streak phải duy trì, thành ra mỗi ngày phải gửi khoảng 400 tin nhắn và không có hồi kết
Tôi dạy con rằng mỗi ngày có 100.000 lập trình viên, nhà tâm lý học, phụ trách sản phẩm, v.v. đi làm và suy nghĩ cách khai thác tối đa giá trị từ sự chú ý của con. Vì vậy tôi bảo con phải luôn ý thức được “thuật toán” đang khiến mình làm gì
Con bé hiểu Unix pipe khá nhanh nhưng không dùng thường xuyên. Dù vậy, bé đã nắm được khái niệm một chương trình đọc đầu ra của chương trình khác, và việc hiểu dòng lệnh cũng không quá khó
Tuy nhiên tôi đã dùng nhiều mẹo. Ví dụ, trên PC Windows của con, tôi đổi shell từ
explorersangcmd.exeđể khi khởi động lên là vào ngay command prompt, rồi để con tự khám phá và tự sửa. Tôi cũng tạo trò săn kho báu trong filesystem, dùngdir,cd, v.v. để tìm tệp, và với trò Bandit của https://overthewire.org/wargames/bandit/, mỗi lần qua một level tôi thưởng RobuxTôi muốn dạy con máy tính hoạt động như thế nào, và cách khiến máy tính làm điều mình muốn. Thanh ghi là gì, lệnh là gì, chương trình và tiến trình là gì — có thể nói là những điều cơ bản nhất
Trong quá trình đó, tôi cũng dạy cách chia nhỏ vấn đề, cách suy nghĩ, và quan trọng nhất là cách học. Tôi cố dạy phần cốt lõi của sự vật, để không còn điều gì bí ẩn giữa việc nhấn bàn phím thì chữ hiện trên màn hình hay cách ChatGPT dự đoán từ tiếp theo. Hiện tôi đang làm một board game mạng nơ-ron hồi quy với 3 nơ-ron, trò dạy nó biết đếm: https://punkx.org/move-37/rnn.pdf
Rốt cuộc thì tôi cũng không chắc việc dạy trẻ điều gì có quan trọng đến thế hay không
Trong lớp, đồng nghiệp của tôi phải giải thích từ các khái niệm như tệp, thư mục
Thành thật mà nói tôi không nghĩ điều đó quá tệ. Tôi nghĩ máy tính cũng sẽ đi theo con đường giống ô tô. Đa số chỉ biết những thứ rất cơ bản cần để vận hành món đồ, còn kiến thức sâu hơn sẽ dành cho người đam mê và chuyên gia
Vì vậy, dù bên trong máy tính có trở nên phức tạp hơn, cách sử dụng thông thường có lẽ sẽ ngày càng thu hẹp
Muốn chơi game thì chắc chắn phải sửa xử lý pipe trên https://exaequos.com
Nếu chơi trò dùng số pipe tối thiểu với những người lớn lên cùng
awk,perl... thì độ khó sẽ tăng ngayHoặc cứ chơi đúng với tinh thần của trò chơi: học từng công cụ theo đúng mục đích ban đầu của nó
Với các tác vụ xử lý nhanh dùng một lần, người ta hay dùng
awk/sed, và thường xử lý theo một mô hình tư duy tương tự. Kiểu như tạo luồng đầu vào, dùngsedđể biến dữ liệu thành dạng record, dùngawkxử lý record, rồi tinh chỉnh đầu ra bằngsort/uniqTrong nhiều trường hợp
sedvàawkcó thể thay thế cho nhau, nhưng làm vậy thì sẽ mất nhiều thời gian hơn để hình dung trong đầu và cũng khó tái sử dụng hơnLuật nói rằng người chơi hoàn thành nhiệm vụ trước sẽ thắng vòng đó, nhưng tôi tò mò không biết dạng chuỗi pipe dài nhất hoạt động thế nào
Chắc sắp có người đến trao giải
uuocrồiĐặt
catở đầu giúp việc thêm thứ gì đó vào phần đầu pipeline đơn giản hơnViệc có thể tự in ra thật sự rất hay
Tôi đang phân vân có nên in ngay bằng máy in ở văn phòng không
Điểm hay của trò này là người biết UUoC sẽ thắng
cat file.txt | tr a-z A-Z | sortlà kẻ thua, còntr < file.txt a-z A-Z | sortlà người thắngPhí giao hàng đến Canada là $19 thì có vẻ hơi quá
Không biết có ai ở Greater Vancouver muốn gom đơn cùng không
Dù vậy, mỗi bộ bài đều có PDF nên bạn có thể tự in ở tiệm in địa phương. Nếu không in hộp thì sẽ rẻ hơn
Chỉ in lên giấy A4 rồi cắt bằng kéo cũng không vấn đề gì lớn. Thậm chí điều đó đôi khi còn hữu ích khi giải thích cho ai đó bằng bút và giấy
Trong trường hợp này, hộp là https://punkx.org/unix-pipe-game/unix-pipe-box.pdf, còn các lá bài là https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
8.000₩ nhỉ, nếu ai có bản sao thì xin hãy chia sẻ cảm nhận nhé