Những ngôn ngữ lập trình thú vị như Java2k, Sorted!, Brainfuck,... đã thôi thúc hai chàng trai trẻ Hasselstrom và Aslund tự chế ra ngôn ngữ lập trình của riêng mình.
Lịch sử ra đời
Hai nhà sáng lập Kalle Hasselström và Jon Åslund đã kể câu chuyện khai sinh ra Shakespeare một cách hết sức chân thành trên trang web chính thức của ngôn ngữ lập trình này.
Một đêm khuya tháng 2 năm 2001, Kalle Hasselstrom và Jon Aslund đang ngồi…vật vã với đống bài tập lập trình để chuẩn bị thuyết trình vào sáng hôm sau. Bài tập này là dự án thứ tư họ phải thực hiện trong khóa học Syntax Analysis. Tuy nhiên, không được thú vị như những dự án trước khi họ được toàn quyền sáng tạo, dự án này khiến họ mệt mỏi vì quá cứng nhắc.
Nhà văn Shakespeare đã truyền cảm hứng cho hai nhà sáng lập SPL
Chính vì vậy mà thay vì ngồi hoàn thành nốt bài, cả hai đã cao hứng ngồi lên ý tưởng mới cho dự án thứ năm – tạo ra thứ gì đó con người ta chỉ có thể hiểu được khi đang…thực sự buồn ngủ.
Chỉ một vài tuần trước đó, họ mới khám phá ra một số ngôn ngữ lập trình hết sức thú vị và mang tính giải trí cao như Java2k, Sorted!, Brainfuck và Malbolge. Những ngôn ngữ này đã thôi thúc cả hai tự chế ra ngôn ngữ lập trình của riêng mình. Hasselstrom và Aslund thú nhận không hiểu tại sao hôm đó lại tự nhiên nghĩ tới Shakespeare và hình thành nên ý tưởng về ngôn ngữ lập trình mang tên ông: Shakespeare Programming Language, gọi tắt là SPL.
Mục tiêu
Mục tiêu của hai nhà sáng lập khi thiết kế ra SPL là viết ra những đoạn mã nguồn…đẹp như các vở kịch của Shakepeare. Mã nguồn của SPL sẽ không có những thành tố mà chỉ bao gồm các toán tử số học cơ bản và các lênh goto, hay nói đúng hơn là kết hợp khả năng biểu thị của BASIC với tính dễ dùng của hợp ngữ (assembly language).
Có thể nói SPL là một dạng ngôn ngữ lập trình esoteric, được thiết kế ra để thách thức giới hạn của lập trình, biến nó thành một môn nghệ thuật hoặc chỉ đơn cử là để giải trí.
Mỗi nhân vật xuất hiện trong một chương trình SPL biểu thị một số stack mà cụ thể ở đây là những cái tên như “Romeo” hay “Juliet”. Những nhân vật này xuất hiện bước vào các cuộc hội thoại với nhau trong đó chúng kiểm soát các giá trị lớn nhất của mình và đôi khi là thực hiện cả I/O. Các nhân vật có thể hỏi nhau các câu hỏi đóng vai trò như những câu lệnh có điều kiện (kiểu if…then...). Nhìn tổng thể thì SPL rất giống hợp ngữ nhưng phong phú về văn vẻ hơn.
Khai báo biến trong SPL sẽ có dạng
Name, Description
Chẳng hạn:
Romeo, a young man with a remarkable patience. Juliet, a likewise young woman of remarkable grace. Ophelia, a remarkable woman much in dispute with Hamlet. Hamlet, the flatterer of Andersen Insulting A/S.
Code trong SPL được chia thành các Act và Scene (hoạt cảnh trong kịch) trong đó các nhân vật (các biến) tương tác với nhau. Mỗi Act và Scene đều được đánh số La Mã (I, II, III,...), code đi liền sau dấu hai chấm được coi là comment, chẳng hạn:
Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo.
Biến và gán giá trị:
Hamlet: You lying stupid fatherless big smelly half-witted coward! Juliet: You are as villainous as the square root of Romeo!
Câu lệnh If:
Juliet: Am I better than you? Hamlet: If so, let us proceed to scene III.
Ví dụ về đoạn code Hello World, không đơn giản chút nào:
Romeo, a young man with a remarkable patience. Juliet, a likewise young woman of remarkable grace. Ophelia, a remarkable woman much in dispute with Hamlet. Hamlet, the flatterer of Andersen Insulting A/S.
Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo. [Enter Hamlet and Romeo] Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer's day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind! You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind. Speak your mind! [Exit Romeo] Scene II: The praising of Juliet. [Enter Juliet] Hamlet: Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind! [Exit Juliet] Scene III: The praising of Ophelia. [Enter Ophelia] Hamlet: Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind! Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind! [Exeunt Ophelia and Hamlet]
Act II: Behind Hamlet's back. Scene I: Romeo and Juliet's conversation. [Enter Romeo and Juliet] Romeo: Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind! Juliet: Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind! [Exit Romeo] Scene II: Juliet and Ophelia's conversation. [Enter Ophelia] Juliet: Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind! Ophelia: Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind! [Exeunt]
0 comments: