Website đang trong giai đoạn hoàn thiện và chạy thử nghiệm, rất mong nhận được sự đóng góp ý kiến của mọi người để website hoàn thiện tốt hơn! Đóng góp

Ngôn ngữ lập trình kì bí - Phần 2

Những ngôn ngữ lập trình thú vị và kì lạ

Trong số ngày hôm nay, hãy cùng Sata STEM tiếp tục tìm hiểu về 2 ngôn ngữ lập trình kì quái cuối cùng mà chúng mình mang đến cho các bạn trong serie này nhé.

Ngôn ngữ lập trình kì bí - Phần 2
Ngôn ngữ lập trình kì bí - Phần 2

Whitespace

Whitespace được phát triển bởi Edwin Brady và Chris Morris, phát hành vào năm 2003. Tên của ngôn ngữ này ám chỉ các kí tự trống (space, tab, linefeed). Trong hầu hết các ngôn ngữ bình thường khác, những kí tự này không có ý nghĩa lớn, tuy nhiên lại có ý nghĩa vô cùng lớn trong Whitespace. Điều đó cũng có nghĩa: ngôn ngữ này có thể “tàng hình” khi mà về mặt thị giác thì các kí tự trống không để lại bất kì dấu vết nào trên màn hình.

Whitespace
Whitespace

Đặc biệt, khi viết chương trình bằng ngôn ngữ này, các kí tự khác không phải kí tự trống sẽ bị bỏ qua, nghĩa là bạn có thể viết 1 văn bản trong đó chứa được chương trình sử dụng ngôn ngữ Whitespace, song song với chương trình sử dụng 1 ngôn ngữ khác. (Ngoại trừ một số ngôn ngữ như Python, khi mà các kí tự trống là một phần của cú pháp)

Ngôn ngữ Whitespace có 5 kiểu câu lệnh là: nhập Input/Output; thực hiện phép toán; thao tác trên stack; quy định trình tự thao tác; truy cập heap.

Trong đó, các con số được viết dưới dạng nhị phân, theo quy định [Space] = 0; [Tab] = 1 và kí tự đầu tiên của số cho biết dấu của số đó với [Space] là số dương, [Tab] là số âm. Số nguyên khi viết bằng ngôn ngữ Whitespace sẽ kết thúc bằng kí tự [LineFeed] và không có cách biểu diễn số thập phân.

Lí do mà ngôn ngữ này được liệt vào danh sách Esolang, ngoài việc chúng tàng hình, gây khó khăn về mặt trực quan thì việc viết code chỉ dựa vào quá ít kí tự cũng khiến việc đọc hiểu trở nên khó khăn khi mà đặc tính của các kí tự thay đổi liên tục dựa trên vị trí của chúng trong dòng code và tương quan với các kí tự xung quanh chúng.

Piet

Trái ngược với sự trống trơn của Whitespace, Piet mang đến cho bạn những dòng code, chính xác là một bức tranh nhiều màu sắc được vẽ bởi ngôn ngữ lập trình. Bậc thầy duyên số với những ngôn ngữ kì quái gọi tên David Morgan-Mar, khi Piet cũng là một ngôn ngữ được thiết kế bởi ông, với mục đích biến các dòng code nhìn giống các bức tranh trừu tượng và ngôn ngữ này được đặt tên theo tên của một họa sĩ tiên phong cho trường phái nghệ thuật trừu tượng hình học - Piet Mondrian.

Piet
Piet

Trong Piet, các dòng code được thể hiện bằng các hình khối khác nhau. Các khối hình có thể có 20 màu, bao gồm trắng, đen và 18 khác được chia thành 6 màu cơ bản với 3 sắc độ khác nhau. Piet sẽ dựa vào chênh lệch tông màu và sắc để tạo ra các kiểu lệnh khác nhau (ở đây chúng ta có tổng là 17 dạng lệnh). Tuy nhiên có thể thấy ở hình minh họa, có rất nhiều khối màu trong 1 đoạn code, vậy làm thế nào để biết cần so sánh 2 khối màu nào với nhau? Quá trình này khá phức tạp nhưng tóm gọn lại, ngôn ngữ sẽ có một cái “mũi tê” để chỉ hướng của ô so sánh và một loại biến được dùng để chỉ xem ô được chọn ở bên trái hay bên phải. Ô được chọn này sẽ so sáng với ô gốc - ô ở đầu câu để tính độ chênh lệch màu sắc qua đó thực hiện được cá câu lệnh.

Tuy nhiên, có thể dễ dàng nhận thấy rằng màu sắc của mỗi khối màu phải bị ràng buộc với các lệnh code, đồng nghĩa các khối màu có thể được sắp xếp rất hỗn loạn không giống gì một bức tranh. Do đó, khối màu đen và khối màu trắng tuy có chức năng giúp sắp xếp các khối màu mà không ảnh hưởng đến các câu lệnh khác. Với khối màu trắng, chúng không có chức năng gì nên được coi là đơn vị cách để các dòng code trông trực quan hơn, còn khối màu đen có tác dụng xoay mũi tên chỉ hướng 90 độ theo chiều kim đồng hồ.

"Hello world" được viết bằng Piet
"Hello world" được viết bằng Piet

Và vì đây là ngôn ngữ được tạo ra cho vui, nhằm thỏa mãn niềm đam mê nghệ thuật trừu tượng của David, nên những đặc tính quan trọng của 1 ngôn ngữ lập trình có tính ứng dụng cao thường có thể bị bỏ qua, như tính tối ưu hóa độ dài của câu lệnh, sự dễ dàng trong việc ghi nhớ và viết các kiểu lệnh.

Post a Comment

Copyright © SATA JSC. All rights reserved. Developed by Code Pro