Lịch sử của chữ viết rất đa dạng, phong phú, và có lịch sử lâu đời. Ai Cập với nền văn minh của mình đã có chữ viết từ khá sớm, khoảng 5000 trƣớc công nguyên. Chữ viết làm tăng quá trình nhận thức của con ngƣời cũng nhƣ có thể chuyển tải các ý niệm một cách đơn giản và dễ dàng. Đồng thời chữ viết cũng giúp cho con ngƣời có thể giao tiếp với nhau tốt hơn và đồng thời cũng giúp cho xã hội phát triển. Cùng với sự phát triển của ngôn ngữ tự nhiên còn có rất nhiều các ngôn ngữ ký hiệu khác ra đời nhƣ ngôn ngữ toán học, ngôn ngữ âm nhạc, ngôn ngữ hóa học... đã đem lại nhiều sự tiện ích để giải quyết các vấn đề phức tạp. Trong thế kỷ 20 có nhiều các ký hiệu ra đời trên nhiều các lĩnh vực khác nhau nhƣ toán học, logic và các phân tử DNA.
Sau đây chúng ta sẽ xem xét một số các mục đich cơ bản của việc tạo ra các ngôn ngữ : a. Chính xác
b. Cô đọng
c. Dễ đọc và dễ viết d. Đầy đủ
e. Dễ học
f. Đơn giản để giảm các lỗi g. Dễ dàng trong quá trình duy trì
k. Độ diễn cảm để tạo ra các hành động l. Có sức lôi cuối thị giác
Ngôn ngữ hiện nay có thể bao gồm:
m. Có đủ khả năng để lƣu lại các ký hiệu
n. Có sự tƣơng ứng giữa bản ghi và các phƣơng tiện hiển thị o. Sự tiện ích để nói
Kĩ thuật in ấn cũng là một trong những cách có thể kích thích sự phát triển của ngôn ngữ bởi khả năng truyền bá và khả năng dựa vào đó để giải quyết công việc. Máy tính cũng là một trong những cách để ngôn ngữ phát triển không những bởi máy tính thông qua Internet có thể truyền đến khắp nơi mà bởi vì máy tính cũng là một công cụ để thao tác trên máy tính.
Tuy nhiên máy tính không có nhiều ảnh hƣởng đối với các vấn đề liên quan đến nó so với những gì đã đạt đƣợc trong các ngôn ngữ viết. Các máy tính thế hệ đầu tiên đƣợc xây dựng để có thể tính toán số học, ngày nay máy tính có nhiều chức năng trong các thao tác về logic, dữ liệu, đồ họa, âm thanh... Điều đó cũng dẫn đến ngƣời thiết kế phải tìm ra các ký hiệu mới để đảm bảo tính thuận tiện trong quá trình điều khiển máy vi tính đồng thời vẫn đảm bảo cho ngƣời sử dụng có thể giao tiếp và giải quyết các vấn đề.
Bởi vậy, ngôn ngữ máy tính hiệu quả không những chỉ trình diễn tốt các nhiệm vụ và thoả mãn các yêu cầu của ngƣời dùng mà còn có phù hợp với các kĩ thuật lƣu trữ và thao tác dữ liệu và khả năng hiển thị chúng trên màn hình.
Các ngôn ngữ lập trình nhƣ FORTRAN, COLBOL, ALGOL và PASCAL phát triển trong những năm 60 và đƣợc sử dụng trong các môi trƣờng máy tính đơn thuần mà không có sự tƣơng tác ngƣời dùng. Ngƣời lập trình soạn các câu lệnh, kiểm tra và chạy chƣơng trình. Sau này cùng với sự phát triển của công nghệ, ngôn ngữ C đã đƣợc phát minh và đƣợc phổ biến rộng rãi. Sau đó khả năng tích hợp chƣơng trình thành một lớp đã tạo nên ngôn ngữ C++. Và cuối cùng với sự phát triển của mạng và công cụ chuẩn dẫn đến ngôn ngữ Java ra đời. Địa chỉ World Wide Web cũng đƣợc xem nhƣ là một dạng của ngôn ngữ. Địa chỉ Web đƣợc bắt đầu bởi giao thức http, ftp... theo sau là dấu hai chấm và gạch ngang.
Ngôn ngữ lập trình bắt nguồn từ các hệ điều hành có tính truyền cảm mạnh mẽ và khả năng ảnh hƣởng của chúng lên các thiết bị. Ngƣời dùng viết một câu lệnh và xem kết quả. Nếu kết quả là đúng các câu lệnh tiếp theo đƣợc viết, ngƣợc lại phải sửa chữa các câu lệnh trƣớc. Các
câu lệnh thƣờng ngắn và sự tồn tại của chúng là nhất thời. Ngôn ngữ lập trình khác với các thực đơn lựa chọn khi mà ngƣời sử dụng nhớ lại các ký hiệu và các hành động cần thực hiện. Ví dụ nhƣ câu lệnh Unix, đƣợc sử dụng để xóa đi dòng trống từ một file nhƣ sau:
Grep –v ^$ filea > fileb
Câu lệnh trên rất tối nghĩa và không đem lại cho ngƣời dùng bất kỳ một sự gợi ý nào cả. Các câu lệnh nói riêng cũng nhƣ các ngôn ngữ nói chung nhìn chung không mang nhiều tính logic. Điều này đƣợc chấp nhận rộng rãi trong quá khứ, tuy nhiên hiện nay đang có sự thay đổi. Trong khi vẫn còn có nhiều ngƣời lập trình, thì các ngôn ngữ đã không còn phát triển bởi sự xuất hiện của các thao tác trực tiếp và các giao diện thực đơn lựa chọn.
Các ngôn ngữ bao gồm có các câu lệnh đơn giản hoặc phức tạp. Ngôn ngữ thông thƣờng có một số chức năng nào đó. Ngôn ngữ có một cấu trúc nhất định hay cũng có thể kết nối để tạo ra một số dạng khác. Các phản hồi cho các câu lệnh hợp lệ, các thông báo lỗi cho các câu lệnh sai về cấu trúc.
2. 2. 2. Chức năng hỗ trợ nhiệm vụ của người dùng
Con ngƣời sử dụng các câu lệnh để thực hiện một chức năng nào đó trong cuộc sống từ đơn giản nhƣ soạn thảo cho tới các công việc điều khiển. Con ngƣời thƣờng sử dụng máy tính bởi vì chúng đem lại một sức mạnh nào đó. Nếu nhƣ sức mạnh này đủ lớn thì con ngƣời có thể sử dụng chúng ngay cả khi các giao diện không tốt. Do vậy, bƣớc đầu tiên mà ngƣời thiết kế phải xác định đó chính là nhiệm vụ của ngƣời dùng là gì bằng các nghiên cứu cụ thể các nhiệm vụ của ngƣời dùng. Kết quả là một danh sách các hành động và thực thể đƣợc trừu tƣợng hóa trong một tập các giao diện.
Lỗi cơ bản khi thiết kế đó chính là cung cấp quá nhiều các thực thể và chức năng vƣợt quá ngƣời dùng. Nhiều thực thể và chức năng cũng cần có nhiều các câu lệnh hơn, phải rà soát lỗi nhiều hơn, chạy chƣơng trình chậm hơn, yêu cầu có các màn hình trợ giúp, thông báo lỗi. Đối với ngƣời sử dụng nhiều chức năng sẽ làm giảm quá trình học, tăng nguy cơ mắc lỗi, nhiều sự rối trí... Mặt khác sự không đầy đủ của các thực thể và hành động khiến ngƣời sử dụng cảm thấy chán nản vì các nhiệm vụ cần thiết không đƣợc hỗ trợ. Các điều tra nghiên cứu thực tế thông qua thống kê có thể giúp cho ngƣời thiết kế nắm rõ hơn về các yêu cầu của ngƣời dùng. Các yêu cầu hay đƣợc sử dụng có thể đƣợc thực hiện dễ dàng hơn. Ngƣời thiết kế phải quyết định đâu là đối tƣợng phục vụ chính của hệ thống.
Các hành động nhƣ xóa bỏ hay định dạng lại cần phải đƣợc đảm bảo để sao cho có thể khôi phục lại đƣợc hay cũng có thể bảo vệ đƣợc trƣớc các hành động vô ý. Ngƣời thiết kế cần phải xác định rõ các khả năng lỗi và phải có thông báo lỗi khi cần thiết. Mối quan tâm lớn của các chuyên gia đó chính là thiết kế các macro cho phép kết nối một vài chức năng để tiến hành một nhiệm vụ đơn hay xâu chuỗi các ngôn ngữ để thực hiện một công việc nào đó. Sự tiện ích của macro là cho phép mở rộng mà ngƣời thiết kế không nhìn thấy hay phục vụ cho một nhóm nhỏ ngƣời có yêu cầu đặc biệt. Một macro có thể là một chƣơng trình ngôn ngữ đầy đủ bao gồm
trong những phƣơng pháp dẫn đến thảo luận về các vấn đề liên quan nhƣ là tạo file, thƣ mục, dữ liệu, hay thông báo. Vẫn chƣa có sự thống nhất về giao diện chức năng (tạo, chỉnh sửa, xóa... ), sự lựa chọn của một cặp nhƣ tải/lƣu, đọc/viết, mở/đóng...
Ngƣời thiết kế thƣờng nhầm lẫn lựa chọn một hình ảnh ẩn dụ gần gũi với máy vi tính hơn là với các nhiệm vụ của ngƣời dùng. Hình ảnh ẩn dụ có thể làm mất phƣơng hƣớng ngƣời sử dụng, tuy nhiên với sự thiết kế cẩn thận có thể thu đƣợc nhiều tiện ích trong khi lại giảm đi các vấn đề tầm thƣờng. Để có thể kết nối thuận tiện các khái nhiệm giao diện và các hình ảnh ẩn dụ về chức năng, ngƣời thiết kế cần phải lựa chọn cách thức cho các câu lệnh điều khiển. Kết hợp các phƣơng pháp là có thể tuy nhiên việc học, giải quyết các vấn đề và gợi nhớ đƣợc hỗ trợ bởi một tập giới hạn các vấn đề phức tạp.
Tập các câu lệnh đơn : Trong tập các câu lệnh đơn, mỗi câu lệnh đƣợc lựa chọn để thực hiện một nhiệm vụ duy nhất, và số lƣợng các câu lệnh tƣơng ứng với số lƣợng các nhiệm vụ. Khi mà chỉ có một số lƣợng nhỏ nhiệm vụ cần thực hiện, cách tiếp cận này tƣơng đối đơn giản và dễ học. Các câu lệnh phức tạp hơn có thể dẫn đến sự rối trí nhất định. Tất nhiên chúng ta vẫn có thể xây dựng một số chƣơng trình lớn từ các câu lệnh đơn nhƣ hệ điều hành Unix.
Câu lệnh kết hợp với lập luận a. C-n (next-line)
<DOWN> (an arrow key) Di chuyển con trỏ tới cuố cùng của dòng dƣới b. C-p (prev-line)
<UP> (an arrow key) Di chuyển con trỏ tới dòng kế tiếp c. C-a (beginning-of-line)
<Home> (on DOS/Windows only) Di chuyển con trỏ tới điểm đầu của dòng hiện tại
d. C-e (end-of-line)
<End> (on DOS/Windows only) Di chuyển con trỏ tới vị trí cuối cùng của dòng hiện tại
e. C-f (forward-char)
f. C-b (backward-char)
Hình 2. 2. 1 Sự khó khăn trong việc học các câu lệnh di chuyển con trỏ.
Câu lệnh với các tên : Cách thức thứ hai là cho phép mỗi câu lệnh đƣợc gắn với một đối tƣợng nhất định (FILEA, FILEB, FILEC) để chỉ ra rằng đối tƣợng đƣợc tiến hành thao tác
COPY FILEA, FILEB DELETE FILEA
PRINT FILEA, FILEB, FILEC
Các câu lệnh đƣợc tách rời khỏi các đối tƣợng thao tác bởi dấu cách hay một sự giới hạn nhất định và các đối tƣợng khác nhau cũng đƣợc tách bởi các dấu cách hay các giới hạn quy định trƣớc. Các nhãn chính cho các đối tƣợng thao tác có thể rất hữu dụng đối với một số ngƣời sử dụng ví dụ nhƣ
COPY FROM= FILEA TO=FILEB
Các nhãn này yêu cầu ngƣời sử dụng phải điền thêm các thông tin và do vậy tăng lên các lỗi in ấn, tuy nhiên tính dễ đọc có thể đƣợc tăng lên đồng thời thứ tự phụ thuộc cũng sẽ bị loại trừ.
Câu lệnh kết hợp với lựa chọn và lập luận : Câu lệnh cũng có thể có sự lựa chọn để chỉ ra các trƣờng hợp đặc biệt. Ví dụ nhƣ
PRINT /3, HQ FILEA PRINT (3, HQ) FILEA
Các câu lệnh trên có thể in ấn FILEA thành ba bản. Khi mà số lƣợng sự lựa chọn tăng lên thì sự phức tạp có thể quá nhiều và các thông báo lỗi có thể không đƣợc chú ý nhiều. Các đối tƣợng cũng có đƣợc những sự lựa chọn nhƣ địa chỉ trên ổ đĩa, các khóa riêng...
Số lƣợng các đối tƣợng, lựa chọn, các cú pháp có thể tăng lên nhanh chóng. Hệ thống kiểm tra chỗ tại sân bay sử dụng câu lệnh sau để kiểm ta chỗ ngồi trống vào ngay 21 tháng 8 từ Washington‟s National Airport (DCA) đến New York‟s Laguardia Airport (LGA) vào lúc 3h chiều :
A0821DCALGA300p
Cách tiếp cận trên có thể gây nên nhiều lỗi cho dù có sự đào tạo cẩn thận tuy nhiên đối với ngƣời sử dụng thƣờng xuyên có thể khắc phục đƣợc điều đó và thậm chí còn đánh giá cao các câu lệnh ngắn gọn và súc tích nhƣ vậy. Ngôn ngữ Unix đƣợc sử dụng rộng rãi mặc dù sự phức tạp trong đó điều mà nhiều ngƣời đã lên án gay gắt. Điều đó cho thấy rằng sự phức tạp không ngăn cản đƣợc ngƣời sử dụng nếu nhƣ chúng đem lại nhiều lợi ích cho ngƣời sử dụng. Số lƣợng mắc lỗi khi sử dụng hệ thống này từ 3 đến 53%. Mặc dù các câu lệnh thông thƣờng có thể sinh ra nhiều lỗi nhƣ mv (18%), cp (30%), tuy nhiên sự phức tạp có một sự thu hút hấp dẫn đối với ngƣời sử dụng. Ngƣời sử dụng có thể cảm thấy thoải mái sau khi đã vƣợt qua đƣợc khó khăn và hiểu đƣợc hệ thống về các chức năng trong đó.
XÓA Thƣ mục Màn hình
SAO CHÉP Máy in từ xa
Nếu nhƣ hệ thống cấu trúc đƣợc tìm thấy trong một tập các nhiệm vụ, chúng có thể đƣa ra một cấu trúc có ý nghĩa cho một số lƣợng lớn các câu lệnh. Trong trƣờng hợp này 5*3*4 = 60 nhiệm vụ đƣợc tiến hành chỉ với năm câu lệnh và một quy tắc cho việc định dạng. Một trong những ƣu điểm khác là cách tiếp cận thực đơn-câu lệnh có thể phát triển để hỗ trợ cho những ngƣời mới sử dụng hay không thƣờng xuyên.
2. 2. 4. Lợi ích của cấu trúc
Học, giải quyết các vấn đề hay trí nhớ đều cần có cấu trúc để thực hiện đƣợc dễ dàng hơn. Nếu nhƣ các câu lệnh đƣợc thiết kế tốt, ngƣời dùng có thể dễ dàng nhận ra cấu trúc và mã hóa chúng dựa vào sự hiểu biết của mình. Ví dụ nhƣ nếu nhƣ ngƣời dùng có thể dễ dàng thao tác với các đối tƣợng nhƣ ký tự, chữ, câu, đoạn văn... điều đó đồng nghĩa với họ sẽ dễ dàng trong việc học, ứng dụng và nhớ lại. mặt khác, nếu nhƣ ngƣời sử dụng bất kỳ một thao tác nào nhƣ xoá bỏ hay thay thế thì thách thức và khả năng mắc lỗi sẽ cao hơn bất kể thiết kế các câu lệnh có hoàn hảo đến đâu.
Cấu trúc khoa học có lợi cho các vấn đề về khái niệm, khái niệm máy vi tính và chi tiết cú pháp của các câu lệnh. Nhiều hệ điều hành không đáp ứng đƣợc khả năng này. Sự mặc định diễn ra không nhất quán, có nhiều cách viết tắt khác nhau, nhiều cách lựa chọn khác nhau. Thiếu sót này bắt nguồn từ sự thiếu hợp tác của các nhà thiết kế và phản ánh thiếu chính xác bởi các nhà điều hành đặc biệt là đối với các chức năng đã trở nên quá hạn.
Một trong những cách hữu hiệu cho việc thiết kế đƣợc thuận tiện đó chính là sử dụng bản hƣớng dẫn thiết kế cho các nhà thiết kế và điều hành. Những ngoại lệ đƣợc chấp nhận chỉ sau khi đã có cuộc thảo luận cẩn thận. Ngƣời sử dụng có thể tìm hiểm về hệ điều hành mà có chứa đựng sự không nhất quán nhƣng việc đó diễn ra chậm hơn và tăng nguy cơ mắc lỗi.
Nhất quán trong việc thứ tự : Có một vài nghiên cứu đã chỉ ra sự tiện ích trong việc sắp xếp có thứ tự. Sau đây chúng ta sẽ xem xét ví dụ nhƣ sau :
Không nhất quán Nhất quán
Search file no, message id Search meassage id, file no Replace message id, code no Replace message id, code no Thời gian thực hiện với các đối tƣợng nhất quán trong việc sắp xếp giảm xuống đáng kể so với các đối tƣợng không đƣợc sắp xếp.
Biểu tƣợng với bàn phím : Có một điều rõ ràng đó chính là cấu trúc của câu lệnh có ảnh hƣởng rất nhiều đến việc sử dụng của ngƣời dùng. Có sự so sánh giữa 15 câu lệnh sử dụng các biểu tƣợng và sử dụng bàn phím kết quả cho thấy có một số sự khác nhau. Sau đây là ba câu lệnh đơn giản
Biểu tƣợng Bàn phím
FIND : /TOOTH/;-1 BACK TO “TOOTH”
LIST;10 LIST 10 LINES
RS:/KO/, /OL/; CHANGE ALL “KO” TO “OK”
Các câu lệnh trên thực hiện cùng một chức năng giống nhau. Điểm khác biệt đó chính là việc sử dụng bàn phím có nghĩa trực quan hơn nhƣng lại không có một quy tắc nào cho việc định dạng cả. Kiểm nghiệm sau tiến hành với ba mức độ trình độ của ngƣời sử dụng sử dụng cả hai loại biểu tƣợng và bàn phím. Kết quả sau cho thấy rằng ngƣời dùng thích dùng bàn phím hơn so với biểu tƣợng, điều đó cũng cho thấy rằng định dạng câu lệnh cũng tạo nên sự khác nhau.
Phần trăm hoàn thành công việc Phần trăm mắc lỗi
Biểu tƣợng Bàn phím Biểu tƣợng Bàn phím