Mã Morse được phát minh bởi Samuel Finley Breese Morse (1791-1872), ta sẽ gặp ông nhiều hơn ở các chương sau. Nó còn được phát triển thêm bởi nhiều người nữa, nổi bật nhất là Alfred Vail (1807-1859), và đã tiến hoá thành nhiều phiên bản khác nhau. Hệ thống được mô tả trong sách này được biết đến với tên mã Morse Quốc tế.
Mã Morse ra đời cùng lúc với máy điện báo mà tí nữa chúng ta sẽ soi kĩ hơn. Nếu mã Morse giới thiệu cho ta tính chất của mã thì máy điện báo gồm phần cứng cũng có thể đóng vai một máy tính.
Nhiều người nghĩ gửi mã Morse dễ hơn là nhận. Bạn chả cần phải nhớ mã, mà chỉ cần dùng bảng này, được xếp thuận tiện theo thứ tự bảng chữ cái:
Bảng mã Morse theo thứ tự bảng chữ cái
Nhận và dịch mã Morse khó hơn và tốn thời gian đáng kể so với gửi bởi bạn phải truy ngược lại để tìm ra chữ cái ứng với chuỗi chấm và gạch ngang cụ thể. Nếu bạn không nhớ mã và nhận gạch-chấm-gạch-gạch, bạn phải rà từng chữ một trên bảng mới tìm thấy chữ Y cho mã đó.
Vấn đề ở chỗ ta có một bảng giúp dịch theo kiểu:
Bảng chữ cái → Chấm và gạch ngang của mã Morse
Nhưng lại không có bảng giúp làm ngược lại:
Chấm và gạch ngang của mã Morse → Bảng chữ cái
Khi mới học mã Morse thì một bảng như này sẽ rất tiện lợi. Tuy nhiên cách tạo ra nó không được rõ cho lắm. Làm sao có thể xếp những chấm và gạch ngang theo thứ tự bảng chữ cái?
Thế nên hãy quên cái thứ tự đó đi. Có lẽ một cách tốt hơn để tổ chức đám mã này là nhóm chúng dựa theo số lượng chấm và gạch. Ví dụ, một chuỗi mã Morse chứa một chấm hoặc một gạch chỉ có thể biểu thị cho hai chữ cái, là E và T:
E & T
Một sự kết hợp chuẩn xác hai chấm hoặc hai gạch cho ta bốn chữ nữa — I, A, N và M:
I, A, N & M
Một tổ hợp của ba chấm, gạch cho ta thêm tám chữ:
Chữ cái với 3 chấm gạch
Và cuối cùng (nếu như ta muốn dừng bài tập này trước khi chơi với số và dấu), chuỗi bốn chấm gạch cho ta thêm 16 ký tự:
Chữ cái với 4 chấm gạch
Cùng với nhau, bốn bảng này có 2 cộng 4 cộng 8 cộng 16 mã cho tổng cộng 30 ký tự, nhiều hơn 4 ký tự cho bảng chữ cái Latin. Vì vậy, bạn thấy 4 mã trong bảng cuối dành cho chữ cái có dấu.
Với bốn bảng này, việc dịch mã Morse sẽ dễ dàng hơn. Sau khi nhận một mã cho một chữ cái cụ thể, bạn biết có bao nhiêu chấm và gạch ngang trong đó để ít nhất có thể dò tới đúng bảng. Mỗi bảng đều được tổ chức theo kiểu mã toàn chấm ở trên bên trái và mã toàn ngang ở dưới bên phải.
Bạn có thấy một mẫu hình số lượng mã của bốn bảng? Bảng sau có gấp đôi mã so với bảng trước. Có nghĩa là: Mỗi bảng có tất cả mã của bảng trước thêm vào trước một dấu chấm hoặc gạch.
Ta có thể tóm tắt khuynh hướng thú vị này như sau:
Tương quan số chấm gạch và số mã
Mỗi bảng có số mã gấp đôi với bảng trước nó, nên nếu bảng đầu có 2 mã thì bảng thứ hai có 2 x 2 mã, và bảng thứ ba có 2 x 2 x 2 mã. Một cách mô phỏng khác là:
Cách mô phỏng tương quan khác
Khi gặp một số nhân với chính nó nhiều lần, ta có thể dùng luỹ thừa. Ví dụ, 2 x 2 x 2 x 2 có thể viết lại là 2^4 (2 lũy thừa 4). Các số 2, 4, 8 và 16 đều là lũy thừa của 2 bởi bạn có thể tính ra nó bằng cách nhân 2 với chính nó. Nên bảng tóm tắt có thể thành:
Bảng luỹ thừa số mã
Bảng này trở nên rất đơn giản. Số mã chỉ là 2 lũy thừa với số chấm gạch. Có thể thu gọn bảng trên thành công thức đơn giản:
số mã = 2^(số chấm gạch)
Lũy thừa 2 xuất hiện rất nhiều trong mã, ta sẽ xem các ví dụ khác ở chương tới.
Để làm cho quá trình giãi mã Morse dễ dàng hơn, bạn sẽ muốn vẽ gì đó giống như sơ đồ dạng cây được mô phỏng dưới đây.
Sơ đồ cây của mã Morse
Sơ đồ này thể hiện các chữ cái tương ứng với mỗi trình tự cụ thể của các chấm gạch. Để giải mã trình tự nào đó, hãy cứ theo hướng mũi tên từ trái qua phải. Giả sử bạn muốn biết chữ cái nào ứng với mã chấm-gạch-chấm. Bạn bắt đầu từ bên trái và chọn dấu chấm; sau đó tiếp tục sang phải theo đường mũi tên rồi chọn gạch ngang rồi một dấu chấm nữa. Chữ cái cần tìm là R, đứng kế bên dấu chấm cuối cùng.
Nếu bạn nghĩ về nó, lúc đầu có lẽ xây dựng một bảng như vậy là cần thiết cho việc xác định mã Morse. Trước tiên, nó đảm bảo rằng bạn không mắc phải những lỗi ngớ ngẩn như dùng một mã cho hai chữ cái khác nhau! Thứ hai, bạn có thể đảm bảo dùng tất cả các mã có nghĩa mà không tạo ra các chuỗi chấm gạch dài không cần thiết.
Nguy cơ từ việc mở rộng bảng này đến từ giới hạn trang in, ta có thể tiếp tục với những mã có năm chấm gạch. Một trình tự chuẩn xác năm chấm gạch cho ta thêm 32 mã (2 x 2 x 2 x 2 x 2, hay 2^5). Thường thì 10 chữ số và 16 dấu câu định nghĩa trong mã Morse là đã đủ, và thật ra các chữ số được mã hóa với 5 chấm gạch. Tuy nhiên các chuỗi năm chấm gạch khác đại diện cho các chữ có dấu nhiều hơn là cho dấu câu.
Muốn có thêm mấy dấu chấm câu thì hệ thống phải được mở rộng ra sáu chấm gạch, khi đó ta có thêm 64 (2 x 2 x 2 x 2 x 2 x 2 hay 2^6) mã để thành tổng lên đến 2 + 4 + 8 + 16 + 32 + 64 hay 126 ký tự. Khi đó sẽ quá nhiều cho mã Morse, có thêm nhiều mã “không xác định (undefined)” dài thòng. Từ undefined được dùng ở đây để ám chỉ một mã không có nghĩa (không đại diện cho ký tự nào hết). Nếu bạn đang nhận mã Morse mà có một mã không xác định trong đó thì chắc chắn là có người mắc lỗi rồi.
Bời vì ta đủ thông minh để triển khai công thức nhỏ này,
số mã = 2^(số chấm gạch)
ta có thể tiếp tục tính ra bao nhiêu mã nhận được khi dùng những chuỗi chấm gạch dài hơn:
Nhiều chấm gạch hơn
May mắn thay, ta không phải viết ra hết tất cả các mã có thể có để xác định số lượng bao nhiêu. Việc ta cần làm chỉ là tăng số lần nhân 2 với chính nó lên.
Mã Morse được gọi là binary (nhị phân) (nghĩa đen là hai lần hai) vì những phần tử của mã chỉ gồm hai thứ – một chấm và một gạch. Tương tự như đồng xu, khi đáp đất cũng chỉ hiện mặt sấp hoặc ngửa. Đồng xu tung 10 lần có thể có 1024 chuỗi sấp ngửa khác nhau.
Tổ hợp các vật nhị phân (như đồng xu) và mã nhị phân (như mã Morse) luôn được mô tả bởi lũy thừa hai. Hai là một số rất quan trọng trong cuốn sách này.