Tag Archives: lập trình viên

Quá trình tiến hóa của một Lập trình viên

Hì hì… chắc mọi người sẽ cảm thấy buồn cười khi đọc cái tiêu đề bài viết của mình, nghe cứ như là các bước tiến hóa từ Vượn thành Người ấy nhỉ!? Thật ra tiêu đề của bài viết này nguyên văn tiếng Anh là “The Evolution of a Programmer”, nhưng tôi muốn hài hước nó lên một chút, vì thực sự đây cũng là bài viết có chút hài hước về dân Lập trình viên (Programmer). Để thể hiện sự hài hước tác giả đã sử dụng ngôn ngữ lập trình làm ngôn từ cho bài viết của mình, tôi xin mạn phép tác giả dịch sang tiếng Việt (và có đôi chút thay đổi cho phù hợp, xin được lượng thứ). Do tính đặc thù của bài viết nên có lẽ một số người sẽ không hiểu lắm, vì vậy tôi sẽ sẵn sàng trả lời các câu hỏi. Tuy nhiên các bạn cũng cứ thử đọc xem, cũng không khó hiểu lắm đâu.

Nào, chúng ta thử xem trình tự quá trình tiến hóa của một Programmer ra sao và thử xem xét nó có giống với những gì bạn biết không nhé.

1. Trường PTTH (High School/Jr.High)

Đây là những dòng code của anh ta:

10 PRINT "HELLO WORLD";
20 END

2. Năm thứ nhất ĐH/CĐ (First year in College)

Lúc này những dòng code có vẻ đã sáng sủa hơn:

program Hello(input, output)
begin
       writeln('Hello World');
end

3. Sau vài năm là sinh viên (Senior year in College)

Có ăn có học vẫn hơn, lại có vài năm kinh nghiệm và học thêm nhiều ngôn ngữ:

(defun hello
       (print
              (cons 'Hello (list 'World))))

4. Ra trường, làm lính mới (New professional)

Các dòng code chững chạc và chuyên nghiệp hơn rồi, ngôn ngữ lập trình đặc sệt C:

#include
void main(void){
       char *message[] = {“Hello “, “World”};
       int i;
       for(i = 0; i < 2; ++i)
              printf(“%s”, message[i]);
       printf(“n”);
 }

5. Chiến sĩ dày dạn kinh nghiệm (Seasoned professional)

Những dòng code bây giờ đã đạt cấp Prồ rồi, nhìn khó hiểu lắm nhất là đối với dân chưa làm lập trình bao giờ, vì vậy chỉ xin trích 1 phần code mà thôi:

#include
#include
class string{
       private:
       int size;
       char *ptr;
        …
        …
}
main(){
       string str;
       str = "Hello World";
       cout << str << endl;
       return(0);
}

6. Lập trình sư (Master Programmer)

Khỏi cần bàn cãi nữa, mỗi khi anh ta chạm vào bàn phím là các dòng code hiện ra như rồng bay, phượng múa,… người phàm khó mà sánh kịp. Cũng chỉ dám trích dẫn một phần code mà thôi(1/10 đấy).

[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]

library LHello{
       // bring in the master library
       importlib("actimp.tlb");
       importlib("actexp.tlb");
       …
       …
       // print a string out
       pHello->PrintSz(wcsT);
       Sleep(2000);
       ulCnt = pHello->Release();
  }else
       printf("Failure to connect, status: %lx", hRslt);

       // Tell OLE we are going away.
       CoUninitialize();
  }
  return(0);
}

7. Tập tọe làm Hacker (Apprentice Hacker)

Kinh nghiệm đầy mình rồi, ngôn ngữ lập trình đông tây đều biết tuốt, anh ta chuyển qua lĩnh vực mới, học viết các chương trình hack. Giai đoạn này nếu không có một định hướng đúng đắn rất dễ anh ta thành kẻ phá hoại trong xã hội, ít ra cũng là trên lĩnh vực IT. Các bạn thấy không, để viết một chương trình có ích người ta cần nhiều công sức như vậy nhưng để phá hoại nó chỉ đơn giản thế này thôi! Cần cảnh báo ngay!!! 😀

#!/usr/local/bin/perl
$msg="Hello, world.n";
if ($#ARGV >= 0) {
       while(defined($arg=shift(@ARGV))) {
              $outfilename = $arg;
              open(FILE, ">" . $outfilename) || die "Can’t write $arg: $!n";
              print (FILE $msg);
              close(FILE) || die "Can’t close $arg: $!n";
       }
 } else {
       print ($msg);
 }
 1;

8. Hacker rồi đấy (Experienced Hacker)

Bây giờ khi anh ta đã có chút kinh nghiệm rồi, lúc này việc viết một chương trình hack khá nhanh gọn và đơn giản đối với anh ta.

#include
#define S "Hello, World"
main(){
       exit(printf(S) == strlen(S) ? 0 : 1);
}

9. Cáo già hacker (Seasoned Hacker)

Có thể thấy ngay mức độ cao thủ:

% cc -o a.out ~/src/misc/hw/hw.c
% a.out

10. Bậc thầy về hacker(Guru Hacker)

Từ một cao thủ lập trình anh ta đã trở thành một cao thủ hệ thống, sử dụng các hệ thống như UnixLinux nhoay nhoáy. Với đẳng cấp này anh ta có thể làm admin cho các hệ thống đòi hỏi bảo mật cao và tất nhiên cũng có thể trở thành một cao thủ phá hoại hệ thống. Nhìn mà xem, để in ra màn hình dòng chữ “Hello, world” anh ta có mất nhiều công sức nữa đâu.

% echo "Hello, world.";

11. Chuyển qua làm quản lý (New Manager)

Có kinh nghiệm, có trình độ anh ta được cất nhắc qua làm quản lý (thường ở ta là thế), bắt đầu giã từ sự nghiệp của một tay thuần túy làm về kỹ thuật. Mặc dù vậy, kinh nghiệm làm quản lý chưa có, kinh nghiệm code thì nhiều nên bước đầu anh ta làm quản lý chẳng khác gì dân mới học lập trình (Hệt như anh chàng trung học thuở nào).

10 PRINT "HELLO WORLD"
20 END

12. Có tý kinh nghiệm về quản lý (Middle Manager)

Thấy chưa?! bây giờ để có một chương trình in ra dòng chữ “Hello, world.”, anh ta đã biết phải làm gì? Gửi ngay email cho đàn em và nhờ vả. Quen ra lệnh, lười code và nói chung thời gian đã làm cho kiến thức lập trình mai một mất rồi. Nhưng anh ta vẫn cao thủ đấy chứ, gửi mail bằng console chứ không bằng web hay phần mềm đâu nhá! Xem đây.

mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello, world."?
I need it by tomorrow.
^D

13. Già đời trong quản lý (Senior Manager)

Ngay lập tức ra lệnh và ép thời gian cho nhân viên, các bạn đọc email anh ta gửi cho Jim mà xem. Đố dám không hoàn thành!

% zmail jim
I need a "Hello, world." program by this afternoon.

14. Giám đốc điều hành (Chief Executive)

Ha ha ha… anh ta quên tất cả rồi, đến cái email cũng không soạn nổi nữa, lại còn chửi thề với cái máy tính nữa chứ! Chán quá anh ta logout.

% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout

Thế đấy các bạn ạ! Có bao giờ bạn nghĩ cuộc đời IT mình cũng sẽ “tiến hóa” như thế ko nhỉ??!!
Hi hi hi… chúc bạn vui vẻ!

Dịch và biên tập: Nguyễn Việt Khoa