The Tar Pit

The Tar Pit

Lược dịch

Een schip op het strand is een baken in zee

Con thuyền trên bờ biển là hải đăng với đại dương

Trong thập kỉ qua, lập trình hệ thống lớn tựa như một tar pit – vũng rỉ dầu khổng lồ, có khả năng nhấn chìm bất kì con quái thú hung hăng mạnh mẽ nào, với sự khó khăn đang dần làm mọi người kinh ngạc. Rất khó để hiểu rõ bản chất tự nhiên của nó, nhưng để giải quyết nó, đó là điều chúng ta phải làm.
Chúng ta hãy bắt đầu bằng việc xác định cấu tạo, cũng như niềm vui và nỗi nỗi thống khổ của một hệ thống lập trình.

Sản phẩm của hệ thống lập trình
Công sức của một hệ thống công nghiệp hơn 1000 thành viên làm việc nhiều năm cũng có thể không bằng 2 con người làm việc trong một garage cũ.
Cần phải hiểu rõ cái gì đang được tạo ra.
Một Chương trình – Program là một sản phẩm hoàn chỉnh, có thể chạy và sử dụng trên chính hệ thống phát triển ra nó, thường được tạo ra bởi các cá nhân độc lập.
Một Chương trình Thành phẩm – Programming Product là chương trình có thể được chạy, kiểm tra và mở rộng bởi bất kì ai. Nó phải chạy được trên nhiều hệ thống khác nhau, với càng nhiều dạng input trong khả năng cho phép càng tốt, và phải đính kèm bản hướng dẫn sử dụng cho mọi người. Tạo ra cái này thường tốn gấp 3 thời gian tạo một Chương trình tương tự.
Một Hệ thống Lập trình/Chương trình – Programming System là một tập hợp các chương trình liên kết chặt chẽ với nhau. Nó được viết sao cho mọi input/output đều phù hợp, sử dụng một khoản tối thiểu các tài nguyên và đồng thời trải qua các cuộc kiểm tra xuyên suốt trên nhiều hệ thống khác nhau. Tạo ra một Hệ thống Chương trình rất tốn thời gian, đặc biệt là trong việc xử lí các lỗi nhỏ phát sinh trong quá trình thử nghiệm, nó tốn ít nhất là gấp 3 lần thời gian so với một Chương trình độc lập tương tự.
Một Sản phẩm của Hệ thống Lập trình – Programming Systems Product khác biệt so với những cái còn lại, tốn gấp 9 lần thời gian để tạo ra, nhưng là cái đích sau cùng mà mọi lập trình viên hướng tới.

Niềm vui của việc lập trình
Đầu tiên là niềm vui trong việc tạo nên những điều mới mẻ.
Thứ hai là sự hài lòng khi tạo ra được thứ có ích cho mọi người.
Thứ ba là sự quyến rũ khi nhìn những phần trong cỗ máy phức tạp ta tạo ra hoạt động trơn tru theo vòng tuần hoàn nhất định, với những định luật và thứ tự mà ta đặt ra từ đầu.
Thứ tư là sự vui thích trong việc được luôn luôn học hỏi.
Cuối cùng sự thích thú khi được làm việc từ một nền tảng quá sức linh hoạt và dễ điều khiển, tựa như một nhà thơ tạo nên những ý thơ của mình từ những ý tưởng thuần khiết nhất.
Nhưng không như những vần thơ, các chương trình là thực tế, nó đánh thức niềm vui và cảm xúc trong bản thân mỗi người, tựa như phép thần tiên trong các câu chuyện truyền thuyết.

Nỗi thống khổ của việc lập trình
Đầu tiên, lập trình đòi hỏi sự hoàn hảo. Bản thân con người không hoàn hảo, nhưng lại có nhiều sản phẩm của họ lại đòi hỏi điều đó. Một sự sai sót trong vài chữ cái hay dấu câu có thể dẫn đến sự sai sót cho cả chương trình.
Tiếp theo, một chương trình được tạo ra nhằm đáp ứng nhu cầu của người khác, với nguyên liệu cũng là do người khác đưa cho. Nó là nỗi nhức nhối cho các lập trình viên hệ thống, họ phải làm việc phụ thuộc vào các chương trình của người khác, đôi khi là những chương trình sơ sài chưa hoàn chỉnh, không được thử nghiệm trước và cũng chẳng có văn bản kèm theo. Họ phải dành hàng giờ để sửa chữa các chương trình để tạo nên một hệ thống có thể vận hành được.
Sau đó, việc chạy chương trình (debug) cũng khó khăn không kém, với những lỗi có thể nhảy ra bất cứ lúc nào.
Cuối cùng, là khi cái chương trình mà ta đã dành quá nhiều thời gian để làm lại trở nên lỗi thời trước khi ta kịp hoàn thành chúng. Chúng ta có thể đã nói về chúng, nhưng nó vẫn hoàn toàn là lí thuyết cho đến khi ta đưa được nó vào chương trình. Công nghệ luôn phát triển, buộc chúng ta luôn luôn phải chạy theo nó nếu không muốn bị bỏ lại đằng sau.

Đó là Lập trình, một vũng lầy cuốn phăng mọi thứ, nơi chất chứa niềm vui lẫn nỗi buồn, nhưng đối với nhiều người, niềm vui là thứ luôn luôn lấn át.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s