Chương trình xấu, đẹp, ướt át, khô khan, tồi, tốt

Khi dạy lớp mạng máy tính, tôi cho sinh viên viết chương trình trên mạng. Dù nội dung chính của lớp là mạng máy tính, tôi vẫn đặt tiêu chuẩn cao trong kỹ năng lập trình và cách trình bày chương trình. Tôi rất thích một đoạn trong quyển sách “cấu trúc và biên dịch các chương trình máy tính” của các giáo sư Harold Belson và Gerald Jay Sussman:

  • Ngôn ngữ máy tính không chỉ dùng để bảo máy tính làm các tác vụ này khác. Ngôn ngữ máy tính còn là phương tiện truyền tải các ý tưởng về mặt phương pháp. Vì thế, các chương trình máy tính phải được viết để cho người đọc; việc máy tính hiểu và chạy một chương trình chỉ là mục tiêu phụ.

Đây là một trong những quyển sách về máy tính hay nhất mà tôi biết (dù là nó được viết trong ngữ cảnh của ngôn ngữ Scheme). Cá nhân tôi rất ghét các chương trình viết cẩu thả. Vì thế, tôi thường cho sinh viên các ví dụ về các chương trình loại này. Sau đây là ví dụ của một chương trình tồi và chương trình tốt.

Để cho lớp học thêm sinh động, tôi cho cả các ví dụ các chương trình ướt át, khô khan, đẹp, và xấu. Đoạn chương trình xấu là đoạn đáng chú ý. Nó là một ví dụ của một chương trình C được cố ý làm cho rối rắm lên (obfuscated C code). Có cả một cuộc thi quốc tế hàng năm cho các chương trình loại này. Lần tới ta sẽ bàn thêm về chúng.

Chủ đề : Giáo dục, Vui - Giải TríBookmark the permalink. Trackbacks are closed, but you can post a comment.

4 Comments

  1. Anonymous
    Posted 17/05/2005 at 7:52 am | Permalink

    Ca’c vi’ du. ve^` ca’c chu+o+ng tri`nh “kho^ khan, u+o+’t a’t, xa^’u, dde.p” ho+i buo^`n cu+o+`i va` kho^ng thu+.c te^’ la(‘m (ho+i pho’ng dda.i).

    Vi’ du. ve^` chu+o+ng tri`nh “to^”t” ho+i gio^’ng nhu+ ca’ch vie^’t trong Java (co’ the^m pha^`n cho Javadoc). Co’ le~ ne^n no’i ky~ the^m ve^` pha^`n na`y. Ne^n the^m ca’c lo+`i khuye^n the^’ na`o la` to^’t, to^`i, ddi.nh nghi~a, ghi chu’ ca’c bie^’n, ca’c ha`m ca’c Class, …

  2. Anonymous
    Posted 08/08/2005 at 3:26 am | Permalink

    Tôi thích bài viết này của anh và rất đồng ý với đoạn trích trong cuốn “Cấu trúc và biên dịch các chương trình máy tính”. Tuy nhiên mong anh nói chi tiết hơn về cái Chuẩn để đánh giá và viết một chương trình tốt..
    Rất cám ơn anh! 

    Viết bởi Hoàng Việt Nguyên

  3. Posted 28/11/2005 at 7:25 am | Permalink

    Giup toi phan tich cau nay bang ngon ngu may tinh duoc khong?
    “Mất bao lâu để sửa chữa xe hơi ?
    Will you call me when the car is ready
    (S1 (SQ (MD Will) (NP (PRP you)) (VP (VBP call) (NP (PRP me)) (SBAR (WHADVP (WRB when)) (S (NP (DT the) (NN car)) (VP (AUX is) (ADJP (JJ ready))))))))”

  4. Posted 28/03/2012 at 7:04 pm | Permalink

    Cái tiêu chuẩn mỗi dòng không nên quá 80 ký tự không biết có phải xuất phát từ việc màn hình máy tính thời xưa chỉ có 80 ký tự trên mỗi dòng, hay còn có lý do khác? Em nghĩ thực ra lên khoảng 120 hay thậm chí hơn thì vẫn đọc tốt. Chương trình ngày càng phức tạp nên nhiều câu lệnh khá dài (ngay tên cũng dài rồi), nếu giới hạn chỉ 80 ký tự có khi lại còn khó đọc hơn. 🙂

Post a Comment

Your email is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*