Chỉ một khoảnh khắc thôi
Rồi Hoa Sơn, đom đóm ngừng bay
Rồi rừng sâu, gã lãng tử khờ gào khóc ...
Xấu xa, bội bạc, tham phú quý giàu sang, có mới nới cũ.
Miệng lưỡi thế gian miêu tả nàng bằng những lời như thế đấy! Còn những người không ghét nàng thì lại thương hại nàng, thương hại nàng ngốc nghếch khờ khạo, mà họ không biết rằng đã yêu, thì còn có ranh giới giữa ngốc nghếch và khôn ngoan, giữa khờ khạo và lý trí nữa sao?
Nàng là một kẻ bạc tình.
Đáng đời nàng. Tội nghiệp nàng. Thương cho nàng. Hãy tha thứ cho nàng.
Tôi không thương nàng. Thương gã Lệnh Hồ đau vì nàng bao nhiêu, lại càng hận nàng bấy nhiêu. Tôi không tội nghiệp nàng. Có chi để tội nghiệp, khi nàng biết rõ con đường mình đã chọn sẽ chỉ là đao gươm rỉ máu mà vẫn cứ tiếp bước.
Tôi lại càng không tha thứ cho nàng.
Bởi nàng không có lỗi.
Tôi ngưỡng mộ nàng.
Vì nàng dám yêu, và dám yêu đến từng hơi thở cuối cùng.
Sự lựa chọn của nàng là sai lầm, nhưng nàng không sai. Bởi nếu tình yêu là sai, thì trên đời thứ gì mới là chân lý?
Nàng lỡ yêu một Lâm Bình Chi dịu dàng mà cứng rắn, cùng đường mà vẫn kiên cường không cúi đầu. Vì sao nàng không biết trước được hắn sẽ trở thành một kẻ bất nam bất nữ, bị oán thù che mờ mắt, sao không biết trước trái tim hắn sẽ còn lạnh hơn cả băng giá? Băng giá rồi cũng sẽ tan, nhưng trái tim của Lâm Bình Chi không bao giờ có thể học yêu thêm một lần nữa.
À, vì nàng không phải là tiên tri.
Nàng vứt bỏ mối tình đầu nồng thắm với một đại sư ca suốt ngày say sưa bất chấp lễ nghĩa để đi theo một kẻ nho nhã thanh lịch, con nhà quyền thế, nghiêm chỉnh đạo mạo y như cha nàng. Vì sao nàng lại bị lừa bởi cái bề ngoài vốn như chiếc áo trắng tinh khôi, mà bên trong sợi vải đã rách tươm hết thập phần như thế?
À, vì nàng không phải là thánh nhân, mà chỉ là một cô gái nhỏ rất đỗi bình thường.
Trách nàng bội bạc, xua đuổi đại sư ca bao năm chăm sóc chở che cho nàng, chỉ vì một kẻ từ đầu đến cuối không để nàng vào trong mắt, không biết rằng nàng đang hiện diện, không quan tâm nàng còn sống hay đã chết rồi.
Vì nàng muốn yêu Lâm Bình Chi cho chân thành, và trọn vẹn.
Vì tình yêu mà có lý trí rạch ròi thì liệu có còn là tình yêu chăng?
Ừ, thì đâu phải nàng trái lệnh cha lặn lội đường xa đem bí kíp Tử Hà về cho Lệnh Hồ Xung chữa bệnh.
Đâu phải nàng trên Tung Sơn đỉnh lại lạc vào giấc mơ đẹp năm xưa, tạm quên mất trượng phu mình và bao nhiêu cặp mắt quần hào đang quan sát mà vẫn vô thức sử Xung Linh kiếm pháp cùng Lệnh Hồ Xung, cũng như thuở nào đại sư ca và tiểu sư muội sử kiếm bên thác nước tuổi thơ.
Ừ, nàng bội bạc thật đấy.
Thương thay gã Lệnh Hồ, bởi hắn sẽ chỉ là những giấc mơ ấy, thoảng qua rồi tan vào không gian. Còn trái tim nàng chỉ chứa đựng được một hình bóng duy nhất, nàng mang theo xuống cõi tuyền đài ...
Nàng thương Lệnh Hồ Xung, nhưng không yêu hắn.
Đêm tàn. Máu rỉ.
Đại sư ca của nàng bật khóc điên loạn. Rồi hắn sẽ trả thù cho nàng, rồi hắn sẽ băm vằm Lâm Bình Chi ra thành vạn mảnh.
"Tiểu sư muội chết rồi, xin đại sư ca... hết sức chiếu cố cho gã... đừng để người ta khinh nhờn gã."
Lệnh Hồ Xung không hiểu. Hắn thật sự không hiểu!
Cuối cùng thì tiểu sư muội của hắn đến chết vẫn thủy chung hướng về con người xấu xa đã không ngần ngại đâm nàng một đao để "tỏ lòng thành với Tả chưởng môn"! Cho dù họ Lâm có là kẻ sát hại nàng, nàng vẫn một lòng lo lắng cho sự an nguy của gã!
Cả đến lúc lìa đời, nàng vẫn chỉ nhớ đến kẻ đã sát hại nàng. Lòng nàng sao lại hẹp đến thế, sao lại tàn nhẫn đến thế, lại không dung nổi một Lệnh Hồ Xung lúc nào cũng yêu nàng tha thiết?
Trớ trêu thay.
Hắn ở cạnh một Nhậm Doanh Doanh nhất hô vạn ứng, xinh đẹp hơn nàng thập phần, nhưng chẳng bao giờ mà hắn không nhớ đến nàng. Nàng xua đuổi hắn, hắn cũng chỉ lặng lẽ cắn răng bỏ đi nhưng chẳng bao giờ trách nàng một câu.
Giờ đây, hắn đang ở cạnh nàng khi chồng nàng đã giết hại nàng rồi bỏ đi, đang ôm lấy nàng vào lòng, đang gào thét tưởng như trái tim hắn sẽ vỡ ra làm trăm mảnh, như hắn có thể chết theo nàng bất cứ lúc nào.
Vậy mà lòng nàng vẫn chỉ có Lâm Bình Chi.
Nàng ác lắm!
Nàng cất tiếng hát trong vô thức, bài ca Phúc Kiến Tiểu Lâm Tử dạy nàng trên đỉnh Hoa Sơn những ngày đầu gặp gỡ. Khúc ca nàng ngọng nghịu tập hát theo "Lâm sư đệ", những ngày vô tư lự nàng cùng gã đi hái nấm trong rừng già.
Rồi tiếng hát của nàng cũng yếu dần đi theo từng hơi thở, nhòe nhoẹt đi theo ánh trăng chênh chếch đang bị mây che.
"Tiểu sư muội! Tiểu sư muội! Sư muội đừng sợ gì hết. Tiểu huynh bồng tiểu sư muội đến chỗ má má."
Ngốc ạ, nàng có sợ chi đâu ... Ngươi khóc cho nàng, nhưng nàng lại đang mỉm cười đấy.
Nàng mỉm cười, mà ngực ngươi sao như có vạn lưỡi dao đâm?
Phải chăng vì đến thời khắc cuối, nàng vẫn chỉ nhớ đến bài hát gã dạy nàng, còn ngươi, kẻ si tình vạn kiếp bất biến, nàng đã đem cất ký ức về ngươi ở nơi nào rồi mà bây giờ lại không tìm ra được?
Đêm tàn. Rừng khép.
Linh khúc của nàng, hoà quyện với tiếng khóc đại sư ca nàng, theo tiếng gió hú của rừng sâu rồi sẽ tan theo sương sớm ban mai. Nàng ngủ rồi, giấc ngủ thiên thu giữa rừng già hiu quạnh, nhưng nàng cũng ngủ mãi trong tim đại sư ca nàng, và sẽ không có ai làm hại nàng được nữa.
Giá như tình yêu không phải là mãi mãi ...
Phúc Kiến hành
Vị thức sầu tương trú **
Rồi tôi, ngậm ngùi tiễn nàng, nàng thiếu nữ bạc phận dũng cảm dám yêu, và dám đối diện với tình yêu bằng nụ cười - ngay cả khi trên gò má lạnh lẽo không còn cảm giác của nàng, nước mắt gã Lệnh Hồ đang chứa chan rơi ...
Rồi nàng, mãi mỉm cười.
Vì tình yêu cho đi mà chẳng cần nhận lại, âu cũng là một niềm hạnh phúc ...
**Hai câu trên trích trong bài "Vũ Lâm Linh", bài từ về Nhạc Linh San, Kim Dung nữ nhân từ.
Vi Nhất Tiếu dịch nghĩa:
Nàng hát câu sơn ca Phúc Kiến
Đâu biết nỗi sầu sắp đến
Nguồn: Việt Kiếm
Thứ Sáu, 7 tháng 10, 2011
Mộc Quế Anh | ...Bài Phong - em là gió hay nơi dừng chân của gió...
...một nốt trầm cho bài ca "Nam Phong Luyến"...
Xem MQA lần đầu tiên từ lâu lắm, lúc đó còn bé xem phim chỉ vì đơn giản là buồn, ko có gì giải trí...vậy mà lại rất ấn tượng với Bài Phong - Hạo Nam ...sau này xem nhiều phim, yêu thích nhiều nhân vật, nhưng tình cảm cho BP - HN vẫn vẹn nguyên như ngày nào...
Có lẽ đã lâu lắm rồi tôi mới xem lại phim này, nhiều tình tiết cũng ko còn nhớ rõ lắm vì vậy mà xem phim như làm quen với một người bạn cũ đã biết lâu năm...
Vốn ko định post bài này lên, đó chỉ là một dòng cảm xúc có từ lâu, viết ra giấy cất giữ... nhưng rồi cũng quyết định chia sẽ...
...
...mặc dù ko thích lắm với dạng vai những người hầu gái lanh lợi, dễ thương... vật mà BP lại để lại trong tôi nhiều ấn tượng sâu sắc. Em trong sáng, ngây thơ...em hồn nhiên, tinh nghich...em phá phách, tự mãn...đối với tôi em là cơn gió heo mây mùa hạ mát mẻ, dễ chịu...có lẽ vì vậy mà em tên "Phong"...
Cuộc sống của em có lẽ sẽ toàn niềm vui, có lẽ sẽ toàn màu hồng nếu một ngày nọ em ko nhìn thấy tên Lao Thiện Nhân, kẻ thù đã giết gia đình em, kẻ đã làm cho em mồ côi trong cõ đời này... Nhưng em đau biết được em càng cố sức giết LTN thì em càng rút ngắn khoảng cách sợi dây vo hình gắn kết em với một người...người được gọi với cái tên Lưu Hạo Nam...
Hạo Nam, anh đã đi một chặng đường dài để đến ngày hôm nay, chỉ còn một tí nữa thôi là cơ hội phục quốc của anh có thể thực hiện, chỉ cần anh tìm ra kho báu...vì vậy anh cần LTN... Để có ngày hôm nay anh đã nếm trải qua biết bao cay đắng, bao đau khổ, anh đã đánh mất chính mình để trở thành người gian tà, ko từ thủ đoạn nào để đạt mục đích của mình... Anh lạnh lẽo quá, cô đơn quá... anh là cơn gió mùa đông băng giá, nghiệt ngã lướt qua miền cảm xúc của tôi...
Và rồi hai tâm hồn chả có mấy điểm chung lại đồng cảm với nhau, từ những người ghét nhau, muốn giết nhau họ lại cảm mến nhau, yêu nhau... Và lần đầu tiên trong cuộc đời, HN cảm thấy ấm áp, lần đầu tiên anh ko cần phải cảnh giác, ko cần phải toan tính...anh đã tìm được bến đỗ... Tôi chợt nghĩ " BP, liệu em là gió hay nơi dừng chân của gió"...
Hạnh phúc thật ngắn ngủi và mong manh, với gánh nặng đè lên vai, HN ra đi, từ đây anh và BP là 2 người của hai chiến tuyến...Thật ra BP có thiết gì Tống hay Liêu, em đâu có cái lý tưởng to lớn là bảo vệ đất nước, nhưng em lỡ mang họ Dương, em nợ họ Dương, mà em lại là người có tình, vì vậy đành khép kín trái tim...
Ngày gặp lại nhau, họ trở thành kẻ thù...Nhiều người từng hỏi, nếu MQA ko ra tay kịp thời thì chả lẽ BP lại chết dưới kiếm của HN. Quả thực, tôi mong lúc đó MQA đừng xuất hiện, có lẽ, mà ko, tôi dám chắc mũi kiếm kia sẽ chỉ đi vào khoảng ko hư vô, nó chắc chắn ko đi vào người BP... phải chăng MQA xuất hiện là định mệnh, một định mệnh nghiệt ngã cắt đứt mối lương duyên... HN lạnh lùng vung kiếm, BP đau xót, nhưng có ai thấy rằng mũi kiếm của anh tuy mạnh mẽ nhưng ko có sát khí, anh lạnh hay anh đang giấu đi cảm xúc... tôi cứ nghĩ giá như MQA đừng xuất hiện, phải! tất cả chỉ là giá như...
HN cả đời đấu tranh vì một lý tưởng, một tương lai ko chắc chắn, anh tìm kiếm kho tàng, anh tìm kiếm thời huy hoàng của gia tộc...Nếu thành công anh được gì, ngai vàng ư? vinh quang? tất cả đều vô nghĩa, anh sẽ mãi cô đơn, sẽ mãi cảnh giác, nghi hoặc, mãi mãi ko ngủ yên... HN à, kho báu anh tìm kiếm bấy lâu đang ở bên cạnh anh kìa, sao anh ko thấy, BP là kho báu của anh đó, báu vật của riêng mình anh, chỉ cần anh với tay thì đã có thể chạm được, sao anh ko với tay ra? hả, HN...
...chiến tranh đã qua đi, đã bao năm rồi nhỉ, có lẽ lâu lắm rồi...trái tim BP giờ đã khép, có lẽ đã chết từ cái ngày HN bị chôn vùi trong máu lửa của trận chiến năm nào... em đã ko còn là cơn gió tinh nghịch nữa, em trầm lắng hơn mặc cho gó vẫn thổi, mây vẫn bay, hồi ức ngày nào vẫn vẹn nguyên màu hoa sữa, tình yêu của em giờ đây như tiếng vĩ cầm nơi nào đó đọng lại, lúc trầm, lúc bổng, lúc xa, lúc gần... HN ơi, anh đang bay đến nơi nào? nơi dừng chân của anh vẫn còn đó, vẫn là BP, vẫ tình yêu tha thiết cho anh, anh có nhìn thấy ko, có nghe tiếng lòng của BP ko...
...Tình yêu chợt đến, chợt đi vội vã...và rồi nó lại chợt đến, bất ngờ... Trái tim BP rung động, một lần nữa rung động, hay nói đúng hơn người khóa trái tim em trong nỗi nhớ, trong xót xa lại mở nó ra, xà vào, gần hơn... nó thật, thật lắm, thật đến nỗi em có thể chạm vào, ôm lấy... HN hay Trương Ngưu, tên gì cũng ko quan trọng, quan trọng là anh đã tìm được đường về nhà sau bao ngày lưu lạc, anh đã tìm thấy kho báu mà mình tìm kiếm bấy lâu, anh đã tìm được nơi dừng chân... bến bờ hạnh phúc...
Xem MQA lần đầu tiên từ lâu lắm, lúc đó còn bé xem phim chỉ vì đơn giản là buồn, ko có gì giải trí...vậy mà lại rất ấn tượng với Bài Phong - Hạo Nam ...sau này xem nhiều phim, yêu thích nhiều nhân vật, nhưng tình cảm cho BP - HN vẫn vẹn nguyên như ngày nào...
Có lẽ đã lâu lắm rồi tôi mới xem lại phim này, nhiều tình tiết cũng ko còn nhớ rõ lắm vì vậy mà xem phim như làm quen với một người bạn cũ đã biết lâu năm...
Vốn ko định post bài này lên, đó chỉ là một dòng cảm xúc có từ lâu, viết ra giấy cất giữ... nhưng rồi cũng quyết định chia sẽ...
...
...mặc dù ko thích lắm với dạng vai những người hầu gái lanh lợi, dễ thương... vật mà BP lại để lại trong tôi nhiều ấn tượng sâu sắc. Em trong sáng, ngây thơ...em hồn nhiên, tinh nghich...em phá phách, tự mãn...đối với tôi em là cơn gió heo mây mùa hạ mát mẻ, dễ chịu...có lẽ vì vậy mà em tên "Phong"...
Cuộc sống của em có lẽ sẽ toàn niềm vui, có lẽ sẽ toàn màu hồng nếu một ngày nọ em ko nhìn thấy tên Lao Thiện Nhân, kẻ thù đã giết gia đình em, kẻ đã làm cho em mồ côi trong cõ đời này... Nhưng em đau biết được em càng cố sức giết LTN thì em càng rút ngắn khoảng cách sợi dây vo hình gắn kết em với một người...người được gọi với cái tên Lưu Hạo Nam...
Hạo Nam, anh đã đi một chặng đường dài để đến ngày hôm nay, chỉ còn một tí nữa thôi là cơ hội phục quốc của anh có thể thực hiện, chỉ cần anh tìm ra kho báu...vì vậy anh cần LTN... Để có ngày hôm nay anh đã nếm trải qua biết bao cay đắng, bao đau khổ, anh đã đánh mất chính mình để trở thành người gian tà, ko từ thủ đoạn nào để đạt mục đích của mình... Anh lạnh lẽo quá, cô đơn quá... anh là cơn gió mùa đông băng giá, nghiệt ngã lướt qua miền cảm xúc của tôi...
Và rồi hai tâm hồn chả có mấy điểm chung lại đồng cảm với nhau, từ những người ghét nhau, muốn giết nhau họ lại cảm mến nhau, yêu nhau... Và lần đầu tiên trong cuộc đời, HN cảm thấy ấm áp, lần đầu tiên anh ko cần phải cảnh giác, ko cần phải toan tính...anh đã tìm được bến đỗ... Tôi chợt nghĩ " BP, liệu em là gió hay nơi dừng chân của gió"...
Hạnh phúc thật ngắn ngủi và mong manh, với gánh nặng đè lên vai, HN ra đi, từ đây anh và BP là 2 người của hai chiến tuyến...Thật ra BP có thiết gì Tống hay Liêu, em đâu có cái lý tưởng to lớn là bảo vệ đất nước, nhưng em lỡ mang họ Dương, em nợ họ Dương, mà em lại là người có tình, vì vậy đành khép kín trái tim...
Ngày gặp lại nhau, họ trở thành kẻ thù...Nhiều người từng hỏi, nếu MQA ko ra tay kịp thời thì chả lẽ BP lại chết dưới kiếm của HN. Quả thực, tôi mong lúc đó MQA đừng xuất hiện, có lẽ, mà ko, tôi dám chắc mũi kiếm kia sẽ chỉ đi vào khoảng ko hư vô, nó chắc chắn ko đi vào người BP... phải chăng MQA xuất hiện là định mệnh, một định mệnh nghiệt ngã cắt đứt mối lương duyên... HN lạnh lùng vung kiếm, BP đau xót, nhưng có ai thấy rằng mũi kiếm của anh tuy mạnh mẽ nhưng ko có sát khí, anh lạnh hay anh đang giấu đi cảm xúc... tôi cứ nghĩ giá như MQA đừng xuất hiện, phải! tất cả chỉ là giá như...
HN cả đời đấu tranh vì một lý tưởng, một tương lai ko chắc chắn, anh tìm kiếm kho tàng, anh tìm kiếm thời huy hoàng của gia tộc...Nếu thành công anh được gì, ngai vàng ư? vinh quang? tất cả đều vô nghĩa, anh sẽ mãi cô đơn, sẽ mãi cảnh giác, nghi hoặc, mãi mãi ko ngủ yên... HN à, kho báu anh tìm kiếm bấy lâu đang ở bên cạnh anh kìa, sao anh ko thấy, BP là kho báu của anh đó, báu vật của riêng mình anh, chỉ cần anh với tay thì đã có thể chạm được, sao anh ko với tay ra? hả, HN...
...chiến tranh đã qua đi, đã bao năm rồi nhỉ, có lẽ lâu lắm rồi...trái tim BP giờ đã khép, có lẽ đã chết từ cái ngày HN bị chôn vùi trong máu lửa của trận chiến năm nào... em đã ko còn là cơn gió tinh nghịch nữa, em trầm lắng hơn mặc cho gó vẫn thổi, mây vẫn bay, hồi ức ngày nào vẫn vẹn nguyên màu hoa sữa, tình yêu của em giờ đây như tiếng vĩ cầm nơi nào đó đọng lại, lúc trầm, lúc bổng, lúc xa, lúc gần... HN ơi, anh đang bay đến nơi nào? nơi dừng chân của anh vẫn còn đó, vẫn là BP, vẫ tình yêu tha thiết cho anh, anh có nhìn thấy ko, có nghe tiếng lòng của BP ko...
...Tình yêu chợt đến, chợt đi vội vã...và rồi nó lại chợt đến, bất ngờ... Trái tim BP rung động, một lần nữa rung động, hay nói đúng hơn người khóa trái tim em trong nỗi nhớ, trong xót xa lại mở nó ra, xà vào, gần hơn... nó thật, thật lắm, thật đến nỗi em có thể chạm vào, ôm lấy... HN hay Trương Ngưu, tên gì cũng ko quan trọng, quan trọng là anh đã tìm được đường về nhà sau bao ngày lưu lạc, anh đã tìm thấy kho báu mà mình tìm kiếm bấy lâu, anh đã tìm được nơi dừng chân... bến bờ hạnh phúc...
Thứ Hai, 3 tháng 10, 2011
Đo thời gian thực hiện chương trình C/C++/C#
Đo thời gian thực hiện chương trình C/C++/C#
Chủ đề bài báo: C/C++/C#
Trong các cuộc thi lập trình, các chương trình cài đặt các thuật toán cùng giải quyết một bài toán, chúng ta luôn có nhu cầu kiểm thử tốc độ thực hiện của các cài đặt bằng cách xem xét thời gian một đoạn chương trình hay một chương trình thực hiện là bao lâu. Trong bài báo nhỏ này, tôi xin cung cấp cách thức đo thời gian thực hiện của các chương trình được viết bằng các ngôn ngữ C/C++/C# trên DOS và trên Windows.
1. Đo thời gian thực hiện chương trình với ngôn ngữ C/C++ trên DOS
Đối với môi trường DOS chúng ta có thể dùng hàm clock() để đo thời gian thực hiện của chương trình cho cả chương trình viết bằng C và C++. Hàm clock() có khai báo nằm trong file header time.h, giá trị trả về của hàm là thời gian bắt đầu từ lúc chương trình chạy cho tới lúc gọi hàm, tính bằng số giây nhân với hằng số CLOCKS_PER_SEC, hằng số CLOCKS_PER_SEC có giá trị như CLK_TCK.
Ví dụ sau đo thời gian thực hiện của 600000000 vòng lặp rỗng:
// file timer4c.c
#include
#include
#include
int main( void )
{
long i = 600000000L;
clock_t start, finish;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
start = clock();
while( i– )
;
finish = clock();
duration = (double)(finish – start) / CLOCKS_PER_SEC;
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
2. Đo thời gian thực hiện chương trình với ngôn ngữ C trên Windows
Trên Windows chúng ta sử dụng hàm QueryPerformanceCounter(LARGE_INTEGER *) để thực hiện việc đo thời gian, hàm được khai báo trong file header windows.h. Hàm này có kiểu trả về là BOOL và trả về giá trị là thời gian tính bằng giây từ lúc chương trình bắt đầu chạy, tham số đầu vào là con trỏ tới một biến kiểu LARGE_INTEGER.
Ví dụ sau là chương trình đo thời gian thực hiện 600000000 vòng lặp rỗng:
// file timer4w.c
#include
#include
// khai bao cau truc va cac ham
typedef struct {
LARGE_INTEGER start;
LARGE_INTEGER stop;
} stopWatch;
void startTimer( stopWatch *timer) ;
void stopTimer( stopWatch *timer) ;
double LIToSecs( LARGE_INTEGER * L) ;
double getElapsedTime( stopWatch *timer);
void startTimer( stopWatch *timer)
{
QueryPerformanceCounter(&timer->start) ;
}
void stopTimer( stopWatch *timer)
{
QueryPerformanceCounter(&timer->stop) ;
}
double LIToSecs( LARGE_INTEGER * L)
{
LARGE_INTEGER frequency;
QueryPerformanceFrequency( &frequency ) ;
return ((double)L->QuadPart /(double)frequency.QuadPart) ;
}
double getElapsedTime( stopWatch *timer) {
LARGE_INTEGER time;
time.QuadPart = timer->stop.QuadPart – timer->start.QuadPart;
return LIToSecs( &time) ;
}
// su dung cac ham
int main()
{
long i = 600000000L;
stopWatch timer;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
startTimer(&timer);
while( i– )
;
stopTimer(&timer);
duration = getElapsedTime(&timer);
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
3. Đo thời gian thực hiện của chương trình với C++ trên Windows
Tương tự như đối với chương trình C trên Windows, ở đây ta cũng sử dụng hàm QueryPerformanceCounter(LARGE_INTEGER *), tuy nhiên ta xây dựng lớp CStopWatch để tiện dùng cho các chương trình khác nhau.
// file timer4w.cpp
#include
#include
using namespace std;
typedef struct {
LARGE_INTEGER start;
LARGE_INTEGER stop;
} stopWatch;
// khai bao lop CStopWatch
class CStopWatch {
private:
stopWatch timer;
LARGE_INTEGER frequency;
double LIToSecs( LARGE_INTEGER & L) ;
public:
CStopWatch() ;
void startTimer( ) ;
void stopTimer( ) ;
double getElapsedTime() ;
};
double CStopWatch::LIToSecs( LARGE_INTEGER & L)
{
return ((double)L.QuadPart /(double)frequency.QuadPart) ;
}
CStopWatch::CStopWatch()
{
timer.start.QuadPart=0;
timer.stop.QuadPart=0;
QueryPerformanceFrequency( &frequency ) ;
}
void CStopWatch::startTimer( )
{
QueryPerformanceCounter(&timer.start) ;
}
void CStopWatch::stopTimer( )
{
QueryPerformanceCounter(&timer.stop) ;
}
double CStopWatch::getElapsedTime()
{
LARGE_INTEGER time;
time.QuadPart = timer.stop.QuadPart – timer.start.QuadPart;
return LIToSecs( time) ;
}
// su dung lop CStopWatch
int main()
{
long i = 600000000L;
CStopWatch timer;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
timer.startTimer();
while( i– )
;
timer.stopTimer();
duration = timer.getElapsedTime();
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
4. Đo thời gian thực hiện của chương trình với C#
Bắt đầu từ .NET Framework 2.0, lớp StopWatch được cung cấp cho người dùng để tiến hành các công việc liên quan tới đo đếm thời gian thực hiện 1 tác vụ nào đó, lớp này nằm trong namespace System.Diagnostics.
Ví dụ sau đây là chương trình đo thời gian thực hiện 600000000 vòng lặp rỗng:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Timer
{
class Program
{
static void Main(string[] args)
{
Stopwatch st = new Stopwatch();
st.Start();
long i = 600000000L;
Console.WriteLine(“Thoi gian thuc hien {0} vong lap rong:”, i);
while (i > 0)
–i;
st.Stop();
Console.WriteLine(“{0} giay”, st.Elapsed.ToString());
if (Stopwatch.IsHighResolution)
Console.WriteLine(“Timed with Hi res”);
else
Console.WriteLine(“Not Timed with Hi res”);
Console.ReadKey();
}
}
}
5. Tài liệu tham khảo
1. MSDN 9.0, clock function (ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_vccrt/html/3e1853dd-498f-49ba-b06a-f2315f20904e.htm).
2. http://cplus.about.com/od/howtodothingsin1/a/timing.htm
3. http://cplus.about.com/od/howtodothingsi2/a/timing.htm
4. http://cplus.about.com/od/howtodothingsinc/a/timing.htm
5. Microsoft® Windows® Internals, Fourth Edition: Microsoft Windows Server™ 2003, Windows XP, and Windows 2000, Mark E. Russinovich, David A. Solomon
Trong các cuộc thi lập trình, các chương trình cài đặt các thuật toán cùng giải quyết một bài toán, chúng ta luôn có nhu cầu kiểm thử tốc độ thực hiện của các cài đặt bằng cách xem xét thời gian một đoạn chương trình hay một chương trình thực hiện là bao lâu. Trong bài báo nhỏ này, tôi xin cung cấp cách thức đo thời gian thực hiện của các chương trình được viết bằng các ngôn ngữ C/C++/C# trên DOS và trên Windows.
1. Đo thời gian thực hiện chương trình với ngôn ngữ C/C++ trên DOS
Đối với môi trường DOS chúng ta có thể dùng hàm clock() để đo thời gian thực hiện của chương trình cho cả chương trình viết bằng C và C++. Hàm clock() có khai báo nằm trong file header time.h, giá trị trả về của hàm là thời gian bắt đầu từ lúc chương trình chạy cho tới lúc gọi hàm, tính bằng số giây nhân với hằng số CLOCKS_PER_SEC, hằng số CLOCKS_PER_SEC có giá trị như CLK_TCK.
Ví dụ sau đo thời gian thực hiện của 600000000 vòng lặp rỗng:
// file timer4c.c
#include
#include
#include
int main( void )
{
long i = 600000000L;
clock_t start, finish;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
start = clock();
while( i– )
;
finish = clock();
duration = (double)(finish – start) / CLOCKS_PER_SEC;
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
2. Đo thời gian thực hiện chương trình với ngôn ngữ C trên Windows
Trên Windows chúng ta sử dụng hàm QueryPerformanceCounter(LARGE_INTEGER *) để thực hiện việc đo thời gian, hàm được khai báo trong file header windows.h. Hàm này có kiểu trả về là BOOL và trả về giá trị là thời gian tính bằng giây từ lúc chương trình bắt đầu chạy, tham số đầu vào là con trỏ tới một biến kiểu LARGE_INTEGER.
Ví dụ sau là chương trình đo thời gian thực hiện 600000000 vòng lặp rỗng:
// file timer4w.c
#include
#include
// khai bao cau truc va cac ham
typedef struct {
LARGE_INTEGER start;
LARGE_INTEGER stop;
} stopWatch;
void startTimer( stopWatch *timer) ;
void stopTimer( stopWatch *timer) ;
double LIToSecs( LARGE_INTEGER * L) ;
double getElapsedTime( stopWatch *timer);
void startTimer( stopWatch *timer)
{
QueryPerformanceCounter(&timer->start) ;
}
void stopTimer( stopWatch *timer)
{
QueryPerformanceCounter(&timer->stop) ;
}
double LIToSecs( LARGE_INTEGER * L)
{
LARGE_INTEGER frequency;
QueryPerformanceFrequency( &frequency ) ;
return ((double)L->QuadPart /(double)frequency.QuadPart) ;
}
double getElapsedTime( stopWatch *timer) {
LARGE_INTEGER time;
time.QuadPart = timer->stop.QuadPart – timer->start.QuadPart;
return LIToSecs( &time) ;
}
// su dung cac ham
int main()
{
long i = 600000000L;
stopWatch timer;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
startTimer(&timer);
while( i– )
;
stopTimer(&timer);
duration = getElapsedTime(&timer);
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
3. Đo thời gian thực hiện của chương trình với C++ trên Windows
Tương tự như đối với chương trình C trên Windows, ở đây ta cũng sử dụng hàm QueryPerformanceCounter(LARGE_INTEGER *), tuy nhiên ta xây dựng lớp CStopWatch để tiện dùng cho các chương trình khác nhau.
// file timer4w.cpp
#include
#include
using namespace std;
typedef struct {
LARGE_INTEGER start;
LARGE_INTEGER stop;
} stopWatch;
// khai bao lop CStopWatch
class CStopWatch {
private:
stopWatch timer;
LARGE_INTEGER frequency;
double LIToSecs( LARGE_INTEGER & L) ;
public:
CStopWatch() ;
void startTimer( ) ;
void stopTimer( ) ;
double getElapsedTime() ;
};
double CStopWatch::LIToSecs( LARGE_INTEGER & L)
{
return ((double)L.QuadPart /(double)frequency.QuadPart) ;
}
CStopWatch::CStopWatch()
{
timer.start.QuadPart=0;
timer.stop.QuadPart=0;
QueryPerformanceFrequency( &frequency ) ;
}
void CStopWatch::startTimer( )
{
QueryPerformanceCounter(&timer.start) ;
}
void CStopWatch::stopTimer( )
{
QueryPerformanceCounter(&timer.stop) ;
}
double CStopWatch::getElapsedTime()
{
LARGE_INTEGER time;
time.QuadPart = timer.stop.QuadPart – timer.start.QuadPart;
return LIToSecs( time) ;
}
// su dung lop CStopWatch
int main()
{
long i = 600000000L;
CStopWatch timer;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
timer.startTimer();
while( i– )
;
timer.stopTimer();
duration = timer.getElapsedTime();
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
4. Đo thời gian thực hiện của chương trình với C#
Bắt đầu từ .NET Framework 2.0, lớp StopWatch được cung cấp cho người dùng để tiến hành các công việc liên quan tới đo đếm thời gian thực hiện 1 tác vụ nào đó, lớp này nằm trong namespace System.Diagnostics.
Ví dụ sau đây là chương trình đo thời gian thực hiện 600000000 vòng lặp rỗng:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Timer
{
class Program
{
static void Main(string[] args)
{
Stopwatch st = new Stopwatch();
st.Start();
long i = 600000000L;
Console.WriteLine(“Thoi gian thuc hien {0} vong lap rong:”, i);
while (i > 0)
–i;
st.Stop();
Console.WriteLine(“{0} giay”, st.Elapsed.ToString());
if (Stopwatch.IsHighResolution)
Console.WriteLine(“Timed with Hi res”);
else
Console.WriteLine(“Not Timed with Hi res”);
Console.ReadKey();
}
}
}
5. Tài liệu tham khảo
1. MSDN 9.0, clock function (ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_vccrt/html/3e1853dd-498f-49ba-b06a-f2315f20904e.htm).
2. http://cplus.about.com/od/howtodothingsin1/a/timing.htm
3. http://cplus.about.com/od/howtodothingsi2/a/timing.htm
4. http://cplus.about.com/od/howtodothingsinc/a/timing.htm
5. Microsoft® Windows® Internals, Fourth Edition: Microsoft Windows Server™ 2003, Windows XP, and Windows 2000, Mark E. Russinovich, David A. Solomon
Các Website bổ ích về Java và J2M
Các Website bổ ích về Java và J2ME
Theo www.tuoitre.com.vn - 7 năm trước
TTO - Lập trình Game trên điện thoại di động là vấn đề kỹ thuật còn khá mới mẻ không chỉ ở Việt Nam mà còn ở trên thế giới. Xin giới thiệu đến các bạn những web site có liên quan đến cuộc thi. Với các địa chỉ này thí sinh sẽ lựa chọn đúng các nguồn thông tin và tiết kiệm thời gian tìm kiếm.
1. Các kiến thức nền tảng hỗ trợ cho lập trình Java:
- http://java.sun.com: Đây chính là trang hỗ trợ cho Java từ Sun Microsystems, cũng là công ty phát minh ra ngôn ngữ Java. Tại đây, người đọc có thể cập nhật tất cả các tin tức và sự kiện mới nhất có liên quan đến Java.
- Trang http://math.nist.gov/javanumerics chính là nơi bạn cần đến, với bố cục đơn giản và ít hình ảnh, trang web này tập hợp các thông tin liên quan đến phần hỗ trợ toán học trong Java, các sự kiện có liên quan, đồng thời trang web cũng cung cấp các Library (thư viện) miễn phí hoặc thương mại hỗ trợ cho việc tính toán các công thức toán học bằng Java.
Ví dụ như các thư viện Java trong ngành Linear Algebra (Đại số tuyến tính) hay như thư viện hỗ trợ tính toán Multidimensional Arrays (mảng đa chiều). Có thể bạn thấy “chóng mặt”với các kiến thức toán học khô khan này, nhưng bạn nên nhớ rằng, tin học được phát triển từ toán học.
2. Trang web tập hợp các link về các thư viện mã nguồn mở dùng Java:
- http://sf.net: Có thể được xem như “kinh thánh” cho giới lập trình mã nguồn mở trên toàn thế giới. Có khá nhiều dự án Mobile Game trên SF.net
3. Thư viện các bài viết về lập trình Java:
- http://www.javaworld.com: Là sản phẩm của tập đoàn IDG. Đúng như tên gọi, JavaWorld đề cập đến mọi lĩnh vực trong Java. Trang web này được đánh giá rất cao trong cộng đồng Java trên khắp thế giới.
- http://www.onjava.com: Có những bài viết xuất sắc vì tác giả bài viết cũng đồng thời là người biên soạn những cuốn sách IT bestseller. Hoàn toàn dễ hiểu vì chủ trang web chính là nhà xuất bản danh tiếng O’REILLY.
Bạn đọc có thể tìm kiếm các bài viết về chủ đề J2ME bằng cách dùng chức năng tìm kiếm với từ khoá J2ME.
- http://www.javalobby.org: Nơi cập nhật tin tức về công nghệ cũng như các sản phẩm Java mới nhất.
4. Thư viện các bài viết chuyên về lập trình J2ME:
- http://www.javaworld.com/channel_content/jw-micro-index.shtml: Là trang con của JavaWorld.
5. Trang web của các công ty làm Mobile Games trên thế giới: Thí sinh có thể học tập hoặc tham khảo các ý tưởng từ đây:
6. Các diễn đàn thảo luận về J2ME
- www.javavietnam.org: Nguồn thông tin và tài nguyên bằng tiếng Việt về công nghệ Java và J2ME lớn nhất hiện nay.
- www.MIDP2.org: Thảo luận về các đặc tính của MIDP 2.0, có thể là chưa thích hợp với cuộc thi lần này nhưng kiến thức không bao giờ là thừa.
- http://forum.java.sun.com: Trang diễn đàn dành cho giới lập trình Java của Sun Microsystems, bạn có thể tìm được những thảo luận rất bổ ích về J2ME tại đây.
Chủ Nhật, 2 tháng 10, 2011
Mộc Quế Anh - Triết lý của Gia Luật Hạo Nam
Mỗi khi nhớ đến lời trăn trối của cha ta, ta cảm thấy như có một dòng máu nóng đang sục sôi trong huyết quản. Đó là bầu nhiệt huyết của một người mang dòng máu hoàng tộc như ta. Ta nhất định phải khôi phục lại giang san Bắc Tống để hoàn thảnh tâm nguyện cuối cùng của cha ta. Mà đó cũng là tâm nguyện, là lý tưởng mà ta theo đuổi suốt đời. Ta đã cố gắng nhẫn nhịn mà sống, học tập võ công và chịu đựng sự đọa đày của "lão yêu quái" _ ông bác của ta _ ở dưới vực thẳm, là vì ta hy vọng có một ngày nào đó, ta sẽ thoát khỏi nơi tăm tối đó để thực hiện lý tưởng của ta. Rồi đến khi sư phụ Hi Di nhận ta làm đệ tử, ta đã cố gắng học tập những gì mà ông ấy đã dạy ta, từ bói toán, địa lý, thiên văn, phong thủy, đến cả các pháp thuật. Ta đã học tập một cách không biết mệt mỏi vì ta biết ràng những thứ này sẽ giúp ích cho ta trên con đường phục quốc sau này. Mà quả vậy, khi đã trở nên tinh thông, ta đã dùng những gì học được để nghiên cứu Thiên Môn trận, để đối kháng với bọn Nam Tống ...
Dĩ nhiên, để phục quốc, lật đổ triều đình Nam Tống, thì phải tiến hành chiến tranh. Mà đã là chiến tranh thì đương nhiên phải có đổ máu, phải có thương vong. Đây là chuyện rất bình thường, là cái tất yếu phải có để lịch sử nhân lọai chuyển sang trang mới. Thế nhưng, đâu phải ai cũng hiểu được cái điều tất yếu này. Từ khi Hi Di lão tổ phát hiện ra tâm ý của ta, ông ta đã đuổi ta ra khỏi sư môn. Nhưng không sao, ta đã có được một kiến thức uyên bác trong đầu, ta sẽ bắt đầu sự nghiệp phục quốc của mình. Ta sẽ ... đầu quân ở Liêu quốc, mượn sức mạnh của nước này để đánh đuổi tên vua Nam Tống ra khỏi giang san ngày trước của ta. Và ta đã trở thành quốc sư nước Liêu là vì thế đấy. Ta đã giúp Liêu Chúa dùng Thiên Môn Trận để giết quân Nam Tống, để giết Dương Gia - những tên phản bội.
Tất cả những gì ta làm đều phục vụ cho mục đích khôi phục lại Bắc Tống, kể cả chuyện hôn nhân. Ta nhất định phải cưới cho đuợc Mộc Quế Anh, vì cung mạng của nàng hợp với ta. Có nàng giúp sức, ta lo gì mà không hoàn thành đại sự chứ. Và thế là ta đã dùng đủ mọi cách để chiếm đoạt cho được trái tim của nàng, từ những lời nói hoa mỹ đến cả việc dùng liên tâm đại pháp để khống chế nàng. Nhưng ta đã thất bại. Giá mà không có cái tên Dương Tôn Bảo ở trên đời này thì hay biết mấy. Hắn đã cướp Quế Anh từ trên tay ta, đã làm hỏng đại sự của ta. Tên khốn kiếp ... Rồi thì Quế Anh đã vì hắn, vì Dương Gia mà ra sức giết ta. Cô ta cũng phát hiện ra rằng ta muốn làm hoàng đế. Cô ta thật không biết quý trọng sự giàu sang phú quý, quyền uy tột đỉnh mà sau này khi thành đại sự, ta và cô ta sẽ cùng chung hưởng thụ. Thật hểt sức ngốc nghếch ...
Cả đời ta tốn hao tâm trí đều là vì lo nghĩ cho chuyện phục quốc. Vậy mà có lúc, ta chẳng phải là ta, một Hạo Nam tài trí hơn người, một Hạo Nam tràn đầy nhiệt huyểt khôi phục Bắc Tống. Đó là lúc ta để tâm trí vào một việc khác, rồi trở nên thẩn thờ, ngơ ngẩn, và chẳng biết mình muốn gì nữa. Dương Bài Phong. Đây chính là cô gái, là nguyên nhân đã khiến cho ta trở nên như thế đấy. Luận về tài sắc, cô ta không sánh được với Quế Anh, nhưng không hiểu sao cô ta lại có một sức mạnh vô hình hơn cả Quế Anh: Bài Phong đã khiến cho trái tim lạnh giá bấy lâu này của ta trở nên ấm áp lạ thường.
Ở cạnh cô ta dưới hầm đá, ta đã bộc bạch hết những nỗi niềm đau khổ chất chứa trong lòng từ bấy lâu nay. Ở cạnh cô ta, ta như thấy lại hình ảnh đứa trẻ hiền lành thật tốt ngày nào trong ta. Ở cạnh cô ta, ta có một cảm giác gì đó rất lạ lùng: nó thật êm đềm như những giấc mơ, nó ngọt ngào như đường như mật, nó khiến ta ngây ngất ...
Ta sợ nhất là ánh mắt của cô ta: ánh mắt tỏa ra những tia sáng dịu dàng mỏng manh nhưng lại khiến cho trái tim này của ta trở nên loạn nhịp. Ta đã nhận thấy cái sức mạnh ghê gớm đó trong ánh mắt của cô ta từ sau lần cùng cô ta hợp sức trị thương ở Hỏa Diệm Cung dưới hầm đá lạnh. Ta đã cố tránh cái nhìn đó bằng cách bảo cô ta ngồi nghỉ, để ta đi kiếm thức ăn. Cô ta bảo rằng để cô ta đi. Cô ta quay đi. Nhưng cả cái dáng hình nhỏ nhắn xinh xinh của cô ta cũng có một sức mạnh không thua gì ánh mắt: cái dáng hình của một nguời con gái, cái dáng hình khiến ta đôi phút ngẩn ngơ, cái dáng hình khiến cho một chàng trai bất chợt cảm thấy xao xuyến bồi hồi.
Những ngày dưới hầm đá lạnh với Bài Phong. Đó là những ngày ấm áp nhất, hạnh phúc nhất của đời ta. Đêm cuối cùng trước khi rời khỏi hầm đá, không hiểu sao ta lại thích ngắm nhìn mãi không thôi người con gái ấy lúc cô ta đang ngủ. Có lẽ vì ta muốn xem nàng ngủ như thế nào, có lẽ vì ta cảm thấy đây là lúc ... an toàn nhất để ngắm nhìn nàng. Hay có lẽ vì ta đã ...
Từ sau khi rời khỏi vực sâu, có nhiều điều ta thật không hiểu. Không hiểu sao ta nghe thấy tim mình nhói dau khi đánh Bài Phong bị thương, nhưng ta không thể làm khác đi được vì nàng cứ một mực muốn giết Lao Thiện Hành - kẻ ta đang cần đến để tìm lại bảo tàng của vương triều Bắc Tống ta ngày trước. Không hiểu sao khi ta đi phía trước, Lao Thiện Hành kéo theo nàng ở phía sau, nhưng thực sự tâm hồn ta lúc nào cũng ở bên nàng, băn khoăn lo lắng cho nàng. Không hiểu sao khi Lao Thiện Hành đưa ta bầu nước duy nhất để uống, ta lại không nghĩ đến bản thân mình, chỉ muốn dành phần nước đó cho nàng. Không hiểu sao ta lại không thể thốt lên một lời nói ngọt ngào nào với nàng cả, dù trái tim ta giờ đây đã đây ấp bóng hình nàng, dù trong tâm trí ta giờ đây chỉ có nàng ... Không hiểu sao ta lại lo lắng không yên khi biết Bài Phong không chịu ăn cơm. Không hiểu sao ta lại sợ ... mất uy tín với nàng, làm nàng thất vọng nếu ta không giao Lao Thiện Hành cho nàng ... Không hiểu sao ta lại nghe đau nhói ở tim khi lưỡi dao của Lao Thiện Hành kề sát cổ nàng ... Ta không hiểu nhiều điều lắm, nhưng có một điều ta hiểu rất rõ là ta sẽ không để cho bất cứ ai làm tổn hại đến nàng, dù kẻ đó có đang có lợi cho ta đi nữa, dù cho ta có đang cần kẻ đó đi nữa ...
Lần đầu tiên ta biết quan tâm, lo lắng cho kẻ khác. Nhưng cũng là lần đầu tiên, ta cảm thấy rất giận bản thân ta vì ta không thể ra tay giết một người, một người con gái. Lần đầu tiên trong đời, vì người con gái đó mà ta đã không ra tay giết người, tên quản gia của Lao Thiện Hành. Lần đầu tiên, ta cảm giác thật bất ngờ nhưng thật sung sướng, khi nghe nàng nói rằng nàng đã yêu ta. Lần đầu tiên, ta đã chạm vào má nàng, ôm lấy nàng. Lần đầu tiên, ta ôm lấy một người con gái với một cảm giác yêu đương tràn ngập trong tim. Lần đầu tiên, một người con gái đã khiến ta quên đi nợ nước thù nhà trong giây lát. Lần đầu tiên, ta sợ hãi khi biết mình đang làm điều trái với lý tưởng mà mình theo đuổi bấy lâu. Lần đầu tiên, lòng ta bị giằng xé giữa lý tưởng và tình yêu bởi việc phục quốc không thể đi đôi với tình yêu trai gái được.
Ta phải lánh xa nàng, bởi nàng và ta thuộc hai thế giới khác nhau. Ta phải lánh xa nàng, bởi khi ở cạnh nàng, ta không hề muốn nghĩ đến chuyện binh đao, mà chỉ muốn được hưởng trọn vẹn hương vị ngọt ngào của tình yêu đôi lứa. Và ta đã làm thế.
Tuy nhiên, ta vẫn không quên hình bóng của nàng, vẫn luôn quan tâm lo lắng cho sự an nguy của nàng, vẫn âm thầm theo nàng, bảo vệ nàng cho đến khi nàng đã đến được chốn an tòan. Rời khỏi nàng , lòng ta cứ mãi luyến lưu, ngơ ngẩn. Ta đã không biết mình muốn đi đâu và về đâu nữa. Rồi, bước chân đưa đẩy ta đến một thôn quê. Ở đó, ta dừng chân nghỉ một đêm ở một ngôi nhà nhỏ. Nhìn cảnh cả gia đình gia chủ quây quần bên mâm cơm đầy ấm cúng, ta bỗng dưng khao khát có một mái nhà, một gia đình, một người thân. Và ta lại nhớ đến nàng, Bài Phong. Nàng là người duy nhất trên cõi đời này mà ta nghĩ đến. Ta nghĩ về nàng suốt cả đêm thâu. Ta nhớ đến giây phút hạnh phúc khi ôm nàng trong lòng. Ta nhớ đến đêm mưa hôm ấy, khi đôi ta cùng đứng dưới mưa trao nụ hôn đầu. Ta đã lập nên Thiên Môn Trận, một nơi dễ vào khó ra, nhưng xem ra nay ta cũng đang lạc lối giữa một Thiên Môn Trận khác, do Tạo Hóa sắp bày - một Thiên Môn Trận của tình yêu nam nữ, của ân ái nồng nàn, của đắm đuối say mê ...
Cũng may, sư phụ Hi Di đã kéo ta ra khỏi cái trạng thái mê muội đó, khiến ta trở về với thực tại. Phải, phục quốc là cái mà ta cần có, là cái mà ta phải hòan thành. Còn tình yêu? Làm sao tình yêu có thể sánh được với tâm nguyện lớn lao suốt mấy chục năm trời mà ta đã ấp ủ trong lòng ? Giờ đây, ta như kẻ đã tỉnh mộng, ta đã có sự lựa chọn rõ ràng. Ta sẽ bất chấp tất cả, sẽ nhẫn tâm hơn khi làm việc gì, sẽ giết bất cứ kẻ nào cản bước tiến của ta ...
Lại là Bài Phong. Ta lại gặp nàng nơi đây.
"Mỗi người có một ước nguyện. Để hòan thành ước nguyện đó, buộc họ phải hy sinh rất nhiều. Ta cũng không ngọai lệ.” Ta đã nói với nàng như thế. Để hòan thành ước nguyện khôi phục Bắc Tống, ta buộc phải hy sinh cả tình yêu của ta, dù cho lòng ta vẫn còn tha thiết yêu nàng. Đó là sự lựa chọn của ta. Ta cũng đã cám ơn nàng vì nàng đã cho ta một giấc mơ ngọt ngào, đã cho nàng biết rằng giờ đây ta đã tỉnh rồi giấc mộng yêu đương, đã cảnh báo nàng đừng để ta gặp lại nàng nữa. Ta thật sự không muốn giết nàng. Ta đã tha chết cho nàng, nhưng nàng vẫn không chịu để ta yên với lý tưởng của ta. Nàng lại còn dùng miếng ngọc bội mà lúc xưa ta đã tặng nàng, như là kỷ vật ân tình giữa ta và nàng, để buộc ta phải từ bỏ lý tưởng mà ta hằng theo đuổi. Điều đó sẽ không thể có được. Ta sẽ không để bất cứ ai hay bất cứ thứ gì cản trở việc hòan thành tâm nguyện lớn lao của ta.
Bài Phong, ta phải giết nàng. Ta phải giết tình yêu của ta ...
14 năm sau ...
Mười bốn năm rồi, ta đã trở thành một người khác, với cái tên Trương Ngưu thật giản dị bình thường. Cuộc sống nơi làng quê thôn dã, cuộc sống của một nông phu - một người dân thường - thật là thanh thản và bình dị biết bao. Ta đã quen rồi với việc trồng trọt đồng án, với lối sống thanh đạm không đua chen với đời. Ta giờ đây đã biết quý trọng mạng sống con người, ghét chuyện binh đao khói lửa - một việc chỉ đem lại một màu tang tóc cho cuộc sống con người. Sau khi nhớ lại tất cả mọi chuyện trong quá khứ và nhất là sau khi tâm sự cùng Lý huynh, ta đã hiểu được thêm nhiều điều. Cũng như Lý huynh, người cũng mang trong mình dòng máu hòang tộc, ta đã quyết tâm dẹp bỏ giấc mộng khôi phục Bắc Tống của mình, vì ta giờ đây đã hiểu được rằng, ta không thể vì bản thân ta mà bắt những người vô tội khác phải chịu đau thương chết chóc do những cuộc chiến tranh. Đã có lúc, ta muốn được quy y cửa phật , tụng kinh niệm phật, như để sám hối những lỗi lầm trước đây của ta. Nhưng rồi, ta đã không thể vào cửa phật được, bởi vì một người con gái ...
Dương Bài Phong. Lại là nàng, người yêu dấu của ta. Lúc ta còn bị mất ký ức, ta không hiểu được vì sao khi gặp nàng , ta có cảm giác rất là thân thiết và gần gũi. Giờ đây, khi đã lấy lại ký ức, ta mới hiểu được rằng ta và nàng vốn đã yêu nhau từ trước. Hình bóng của nàng luôn mãi khắc sâu trong tâm trí của ta. Ta đã từng có lúc muốn giết nàng, như là giết đi tình yêu của ta. Nhưng ta đã sai. Ta có thể giết chết được nàng, nhưng ta không thể giết chết được ái tình, ta không thể giết chết được cái tình yêu tha thiết mà ta đã dành cho nàng. Thiên môn trận đã bị phá hủy, ta bị mất đi ký ức. Nhưng tình yêu chân thành thắm thiết của ta đối với nàng thì không hề mất đi. Chính vì vậy mà ta lại lần nữa nói tiếng yêu nàng sau khi gặp lại nàng.
Giờ đây, ta đã có thể nói lên những lời nói yêu thương chân thành tự đáy lòng ta đối với nàng, những lời nói mà khi xưa ta đã không thể tỏ bày cùng nàng:
"Anh sẽ vì em mà trồng hoa cúc đầy cả núi, hằng ngày đợi em đi ngang qua đay, để anh được ngắm nhìn em, vậy là anh cũng đã mãn nguyện."
"... dù là 1 năm, 10 năm, 100 năm hay 2000 năm, thì anh vẫn luôn đợi em..."
Phải, dù có bao nhiêu năm đi nữa, ta vẫn mãi nhớ đến nàng, chờ đợi nàng, Bài Phong.
Cảm ơn trời đất, vì sau cùng ta và nàng đã nên duyên chồng vợ, suốt đời bên nhau. Tạo hóa không cho ta trở thành vua một nước, nhưng tạo hóa đã ban tặng cho ta một mối tình thắm thiết thủy chung. Đó là một món quà quý giá của tạo hóa mà ta sẽ quý trọng và nâng niu suốt đời. Ta giờ đây rất hạnh phúc vì được làm một người dân bình thường, có một mái ấm gia đình và một người thân yêu. Đó mới thật sự là niềm mong ước mà mỗi con người nên có. Niềm mong ước ấy thật bình thường và giản dị biết bao. Ta giờ đây mới hiểu thấu được lời dạy của sư phụ Hi Di ngày trước: hạnh phúc đến với con người ta từ những điều rất bình thường, rất giản dị và đơn sơ ...
Dĩ nhiên, để phục quốc, lật đổ triều đình Nam Tống, thì phải tiến hành chiến tranh. Mà đã là chiến tranh thì đương nhiên phải có đổ máu, phải có thương vong. Đây là chuyện rất bình thường, là cái tất yếu phải có để lịch sử nhân lọai chuyển sang trang mới. Thế nhưng, đâu phải ai cũng hiểu được cái điều tất yếu này. Từ khi Hi Di lão tổ phát hiện ra tâm ý của ta, ông ta đã đuổi ta ra khỏi sư môn. Nhưng không sao, ta đã có được một kiến thức uyên bác trong đầu, ta sẽ bắt đầu sự nghiệp phục quốc của mình. Ta sẽ ... đầu quân ở Liêu quốc, mượn sức mạnh của nước này để đánh đuổi tên vua Nam Tống ra khỏi giang san ngày trước của ta. Và ta đã trở thành quốc sư nước Liêu là vì thế đấy. Ta đã giúp Liêu Chúa dùng Thiên Môn Trận để giết quân Nam Tống, để giết Dương Gia - những tên phản bội.
Tất cả những gì ta làm đều phục vụ cho mục đích khôi phục lại Bắc Tống, kể cả chuyện hôn nhân. Ta nhất định phải cưới cho đuợc Mộc Quế Anh, vì cung mạng của nàng hợp với ta. Có nàng giúp sức, ta lo gì mà không hoàn thành đại sự chứ. Và thế là ta đã dùng đủ mọi cách để chiếm đoạt cho được trái tim của nàng, từ những lời nói hoa mỹ đến cả việc dùng liên tâm đại pháp để khống chế nàng. Nhưng ta đã thất bại. Giá mà không có cái tên Dương Tôn Bảo ở trên đời này thì hay biết mấy. Hắn đã cướp Quế Anh từ trên tay ta, đã làm hỏng đại sự của ta. Tên khốn kiếp ... Rồi thì Quế Anh đã vì hắn, vì Dương Gia mà ra sức giết ta. Cô ta cũng phát hiện ra rằng ta muốn làm hoàng đế. Cô ta thật không biết quý trọng sự giàu sang phú quý, quyền uy tột đỉnh mà sau này khi thành đại sự, ta và cô ta sẽ cùng chung hưởng thụ. Thật hểt sức ngốc nghếch ...
Cả đời ta tốn hao tâm trí đều là vì lo nghĩ cho chuyện phục quốc. Vậy mà có lúc, ta chẳng phải là ta, một Hạo Nam tài trí hơn người, một Hạo Nam tràn đầy nhiệt huyểt khôi phục Bắc Tống. Đó là lúc ta để tâm trí vào một việc khác, rồi trở nên thẩn thờ, ngơ ngẩn, và chẳng biết mình muốn gì nữa. Dương Bài Phong. Đây chính là cô gái, là nguyên nhân đã khiến cho ta trở nên như thế đấy. Luận về tài sắc, cô ta không sánh được với Quế Anh, nhưng không hiểu sao cô ta lại có một sức mạnh vô hình hơn cả Quế Anh: Bài Phong đã khiến cho trái tim lạnh giá bấy lâu này của ta trở nên ấm áp lạ thường.
Ở cạnh cô ta dưới hầm đá, ta đã bộc bạch hết những nỗi niềm đau khổ chất chứa trong lòng từ bấy lâu nay. Ở cạnh cô ta, ta như thấy lại hình ảnh đứa trẻ hiền lành thật tốt ngày nào trong ta. Ở cạnh cô ta, ta có một cảm giác gì đó rất lạ lùng: nó thật êm đềm như những giấc mơ, nó ngọt ngào như đường như mật, nó khiến ta ngây ngất ...
Ta sợ nhất là ánh mắt của cô ta: ánh mắt tỏa ra những tia sáng dịu dàng mỏng manh nhưng lại khiến cho trái tim này của ta trở nên loạn nhịp. Ta đã nhận thấy cái sức mạnh ghê gớm đó trong ánh mắt của cô ta từ sau lần cùng cô ta hợp sức trị thương ở Hỏa Diệm Cung dưới hầm đá lạnh. Ta đã cố tránh cái nhìn đó bằng cách bảo cô ta ngồi nghỉ, để ta đi kiếm thức ăn. Cô ta bảo rằng để cô ta đi. Cô ta quay đi. Nhưng cả cái dáng hình nhỏ nhắn xinh xinh của cô ta cũng có một sức mạnh không thua gì ánh mắt: cái dáng hình của một nguời con gái, cái dáng hình khiến ta đôi phút ngẩn ngơ, cái dáng hình khiến cho một chàng trai bất chợt cảm thấy xao xuyến bồi hồi.
Những ngày dưới hầm đá lạnh với Bài Phong. Đó là những ngày ấm áp nhất, hạnh phúc nhất của đời ta. Đêm cuối cùng trước khi rời khỏi hầm đá, không hiểu sao ta lại thích ngắm nhìn mãi không thôi người con gái ấy lúc cô ta đang ngủ. Có lẽ vì ta muốn xem nàng ngủ như thế nào, có lẽ vì ta cảm thấy đây là lúc ... an toàn nhất để ngắm nhìn nàng. Hay có lẽ vì ta đã ...
Từ sau khi rời khỏi vực sâu, có nhiều điều ta thật không hiểu. Không hiểu sao ta nghe thấy tim mình nhói dau khi đánh Bài Phong bị thương, nhưng ta không thể làm khác đi được vì nàng cứ một mực muốn giết Lao Thiện Hành - kẻ ta đang cần đến để tìm lại bảo tàng của vương triều Bắc Tống ta ngày trước. Không hiểu sao khi ta đi phía trước, Lao Thiện Hành kéo theo nàng ở phía sau, nhưng thực sự tâm hồn ta lúc nào cũng ở bên nàng, băn khoăn lo lắng cho nàng. Không hiểu sao khi Lao Thiện Hành đưa ta bầu nước duy nhất để uống, ta lại không nghĩ đến bản thân mình, chỉ muốn dành phần nước đó cho nàng. Không hiểu sao ta lại không thể thốt lên một lời nói ngọt ngào nào với nàng cả, dù trái tim ta giờ đây đã đây ấp bóng hình nàng, dù trong tâm trí ta giờ đây chỉ có nàng ... Không hiểu sao ta lại lo lắng không yên khi biết Bài Phong không chịu ăn cơm. Không hiểu sao ta lại sợ ... mất uy tín với nàng, làm nàng thất vọng nếu ta không giao Lao Thiện Hành cho nàng ... Không hiểu sao ta lại nghe đau nhói ở tim khi lưỡi dao của Lao Thiện Hành kề sát cổ nàng ... Ta không hiểu nhiều điều lắm, nhưng có một điều ta hiểu rất rõ là ta sẽ không để cho bất cứ ai làm tổn hại đến nàng, dù kẻ đó có đang có lợi cho ta đi nữa, dù cho ta có đang cần kẻ đó đi nữa ...
Lần đầu tiên ta biết quan tâm, lo lắng cho kẻ khác. Nhưng cũng là lần đầu tiên, ta cảm thấy rất giận bản thân ta vì ta không thể ra tay giết một người, một người con gái. Lần đầu tiên trong đời, vì người con gái đó mà ta đã không ra tay giết người, tên quản gia của Lao Thiện Hành. Lần đầu tiên, ta cảm giác thật bất ngờ nhưng thật sung sướng, khi nghe nàng nói rằng nàng đã yêu ta. Lần đầu tiên, ta đã chạm vào má nàng, ôm lấy nàng. Lần đầu tiên, ta ôm lấy một người con gái với một cảm giác yêu đương tràn ngập trong tim. Lần đầu tiên, một người con gái đã khiến ta quên đi nợ nước thù nhà trong giây lát. Lần đầu tiên, ta sợ hãi khi biết mình đang làm điều trái với lý tưởng mà mình theo đuổi bấy lâu. Lần đầu tiên, lòng ta bị giằng xé giữa lý tưởng và tình yêu bởi việc phục quốc không thể đi đôi với tình yêu trai gái được.
Ta phải lánh xa nàng, bởi nàng và ta thuộc hai thế giới khác nhau. Ta phải lánh xa nàng, bởi khi ở cạnh nàng, ta không hề muốn nghĩ đến chuyện binh đao, mà chỉ muốn được hưởng trọn vẹn hương vị ngọt ngào của tình yêu đôi lứa. Và ta đã làm thế.
Tuy nhiên, ta vẫn không quên hình bóng của nàng, vẫn luôn quan tâm lo lắng cho sự an nguy của nàng, vẫn âm thầm theo nàng, bảo vệ nàng cho đến khi nàng đã đến được chốn an tòan. Rời khỏi nàng , lòng ta cứ mãi luyến lưu, ngơ ngẩn. Ta đã không biết mình muốn đi đâu và về đâu nữa. Rồi, bước chân đưa đẩy ta đến một thôn quê. Ở đó, ta dừng chân nghỉ một đêm ở một ngôi nhà nhỏ. Nhìn cảnh cả gia đình gia chủ quây quần bên mâm cơm đầy ấm cúng, ta bỗng dưng khao khát có một mái nhà, một gia đình, một người thân. Và ta lại nhớ đến nàng, Bài Phong. Nàng là người duy nhất trên cõi đời này mà ta nghĩ đến. Ta nghĩ về nàng suốt cả đêm thâu. Ta nhớ đến giây phút hạnh phúc khi ôm nàng trong lòng. Ta nhớ đến đêm mưa hôm ấy, khi đôi ta cùng đứng dưới mưa trao nụ hôn đầu. Ta đã lập nên Thiên Môn Trận, một nơi dễ vào khó ra, nhưng xem ra nay ta cũng đang lạc lối giữa một Thiên Môn Trận khác, do Tạo Hóa sắp bày - một Thiên Môn Trận của tình yêu nam nữ, của ân ái nồng nàn, của đắm đuối say mê ...
Cũng may, sư phụ Hi Di đã kéo ta ra khỏi cái trạng thái mê muội đó, khiến ta trở về với thực tại. Phải, phục quốc là cái mà ta cần có, là cái mà ta phải hòan thành. Còn tình yêu? Làm sao tình yêu có thể sánh được với tâm nguyện lớn lao suốt mấy chục năm trời mà ta đã ấp ủ trong lòng ? Giờ đây, ta như kẻ đã tỉnh mộng, ta đã có sự lựa chọn rõ ràng. Ta sẽ bất chấp tất cả, sẽ nhẫn tâm hơn khi làm việc gì, sẽ giết bất cứ kẻ nào cản bước tiến của ta ...
Lại là Bài Phong. Ta lại gặp nàng nơi đây.
"Mỗi người có một ước nguyện. Để hòan thành ước nguyện đó, buộc họ phải hy sinh rất nhiều. Ta cũng không ngọai lệ.” Ta đã nói với nàng như thế. Để hòan thành ước nguyện khôi phục Bắc Tống, ta buộc phải hy sinh cả tình yêu của ta, dù cho lòng ta vẫn còn tha thiết yêu nàng. Đó là sự lựa chọn của ta. Ta cũng đã cám ơn nàng vì nàng đã cho ta một giấc mơ ngọt ngào, đã cho nàng biết rằng giờ đây ta đã tỉnh rồi giấc mộng yêu đương, đã cảnh báo nàng đừng để ta gặp lại nàng nữa. Ta thật sự không muốn giết nàng. Ta đã tha chết cho nàng, nhưng nàng vẫn không chịu để ta yên với lý tưởng của ta. Nàng lại còn dùng miếng ngọc bội mà lúc xưa ta đã tặng nàng, như là kỷ vật ân tình giữa ta và nàng, để buộc ta phải từ bỏ lý tưởng mà ta hằng theo đuổi. Điều đó sẽ không thể có được. Ta sẽ không để bất cứ ai hay bất cứ thứ gì cản trở việc hòan thành tâm nguyện lớn lao của ta.
Bài Phong, ta phải giết nàng. Ta phải giết tình yêu của ta ...
14 năm sau ...
Mười bốn năm rồi, ta đã trở thành một người khác, với cái tên Trương Ngưu thật giản dị bình thường. Cuộc sống nơi làng quê thôn dã, cuộc sống của một nông phu - một người dân thường - thật là thanh thản và bình dị biết bao. Ta đã quen rồi với việc trồng trọt đồng án, với lối sống thanh đạm không đua chen với đời. Ta giờ đây đã biết quý trọng mạng sống con người, ghét chuyện binh đao khói lửa - một việc chỉ đem lại một màu tang tóc cho cuộc sống con người. Sau khi nhớ lại tất cả mọi chuyện trong quá khứ và nhất là sau khi tâm sự cùng Lý huynh, ta đã hiểu được thêm nhiều điều. Cũng như Lý huynh, người cũng mang trong mình dòng máu hòang tộc, ta đã quyết tâm dẹp bỏ giấc mộng khôi phục Bắc Tống của mình, vì ta giờ đây đã hiểu được rằng, ta không thể vì bản thân ta mà bắt những người vô tội khác phải chịu đau thương chết chóc do những cuộc chiến tranh. Đã có lúc, ta muốn được quy y cửa phật , tụng kinh niệm phật, như để sám hối những lỗi lầm trước đây của ta. Nhưng rồi, ta đã không thể vào cửa phật được, bởi vì một người con gái ...
Dương Bài Phong. Lại là nàng, người yêu dấu của ta. Lúc ta còn bị mất ký ức, ta không hiểu được vì sao khi gặp nàng , ta có cảm giác rất là thân thiết và gần gũi. Giờ đây, khi đã lấy lại ký ức, ta mới hiểu được rằng ta và nàng vốn đã yêu nhau từ trước. Hình bóng của nàng luôn mãi khắc sâu trong tâm trí của ta. Ta đã từng có lúc muốn giết nàng, như là giết đi tình yêu của ta. Nhưng ta đã sai. Ta có thể giết chết được nàng, nhưng ta không thể giết chết được ái tình, ta không thể giết chết được cái tình yêu tha thiết mà ta đã dành cho nàng. Thiên môn trận đã bị phá hủy, ta bị mất đi ký ức. Nhưng tình yêu chân thành thắm thiết của ta đối với nàng thì không hề mất đi. Chính vì vậy mà ta lại lần nữa nói tiếng yêu nàng sau khi gặp lại nàng.
Giờ đây, ta đã có thể nói lên những lời nói yêu thương chân thành tự đáy lòng ta đối với nàng, những lời nói mà khi xưa ta đã không thể tỏ bày cùng nàng:
"Anh sẽ vì em mà trồng hoa cúc đầy cả núi, hằng ngày đợi em đi ngang qua đay, để anh được ngắm nhìn em, vậy là anh cũng đã mãn nguyện."
"... dù là 1 năm, 10 năm, 100 năm hay 2000 năm, thì anh vẫn luôn đợi em..."
Phải, dù có bao nhiêu năm đi nữa, ta vẫn mãi nhớ đến nàng, chờ đợi nàng, Bài Phong.
Cảm ơn trời đất, vì sau cùng ta và nàng đã nên duyên chồng vợ, suốt đời bên nhau. Tạo hóa không cho ta trở thành vua một nước, nhưng tạo hóa đã ban tặng cho ta một mối tình thắm thiết thủy chung. Đó là một món quà quý giá của tạo hóa mà ta sẽ quý trọng và nâng niu suốt đời. Ta giờ đây rất hạnh phúc vì được làm một người dân bình thường, có một mái ấm gia đình và một người thân yêu. Đó mới thật sự là niềm mong ước mà mỗi con người nên có. Niềm mong ước ấy thật bình thường và giản dị biết bao. Ta giờ đây mới hiểu thấu được lời dạy của sư phụ Hi Di ngày trước: hạnh phúc đến với con người ta từ những điều rất bình thường, rất giản dị và đơn sơ ...
Tư duy lập trình
Tư duy lập trình
- Không bao giờ sợ phải bắt đầu.
– Tôi sẽ không viết hai lần cùng một đoạn mã giống nhau.
– Khi phát triển phần mềm, hãy nghĩ đến tương lai.
– Viết mã càng ít bao nhiêu ,mắc lỗi càng ít bấy nhiêu.
– Bạn sẽ không bao giờ trở thành một lập trình viên giỏi nếu chỉ tập luyện 2giờ mỗi ngày.
– Tất cả các công việc đều có phần thú vị và phần buồn chán, không có ngoại lệ.
– Kẻ thù số một của các lập trình viên là gì? Kiêu căng.
– Lập trình viên sử dụng hầu hết thời gian của mình vào việc sửa lỗi. Chương trình càng dễ đọc bao nhiêu càng tiết kiệm thời gian bấy nhiêu.
– Trường học khiến các bạn tin rằng chương trình của bạn chỉ cần thỏa mãn một mình bạn là đủ. Điều này hoàn toàn sai lầm. Chương trình phải thỏa mãn khách hàng và các lập trình viên khác.
Mục lục:- Giới thiệu
- Bạn cần gì để trở thành một lập trình viên?
- Còn trường học thì sao?
- Những công cụ cần thiết
- Hãy là người lạc quan
- Hãy làm việc theo nhóm!
- Những thứ nên đọc!
- Tổng kết Giới thiệu
Thế là bạn nghĩ rằng lập trình là một thế giới vô cùng thú vị, và bạn muốn tham gia vào thế giới ấy? Trước khi bạn bắt đầu, điều duy nhất mà tôi muốn khuyên là: nếu bạn thực sự yêu thích lập trình thì đó rõ ràng là công việc tốt nhất mà bạn có thể có được. Ngược lại, nếu bạn chỉ cảm thấy thích, hay không quan tâm lắm đến lập trình, thì đó rõ ràng là công việc tồi tệ nhất của bạn. Bởi vì bạn đang gia nhập vào một thế giới mà sự cạnh tranh luôn là nỗi ám ảnh không thể tránh khỏi.
Phát triển phần mềm gần như là một cuộc đua tranh. Trong đó, cuộc sống của bạn là một con đường và bạn phải chạy càng nhanh càng tốt, không cần biết dưới chân có gì, cho đến khi gặp đồng bằng hoặc là đụng phải vách đá cheo leo. Nếu bạn sẩy chân, mọi thứ kết thúc, và đó hoàn toàn là lỗi của bạn. Nghe có vẻ hơi ghê gớm đúng không? Nhưng đừng để những điều đó làm bạn nản lòng. Tôi chỉ không muốn vẽ nên một viễn cảnh tươi đẹp, nơi có những cánh đồng xanh ngút ngàn và những đám mây lững lờ trôi trên nền trời xanh thẳm. Thực tế là có thể chỉ vài phút sau đó trời sẽ mưa và bạn thì chẳng mang theo dù. Thế nhưng, chính những điều không chắc chắn, những thách thức và áp lực sẽ làm cho cuộc sống trở nên đầy hứng thú.
Bạn vẫn còn đọc đến đây ư? Rất tốt, thế có nghĩa là bạn hoàn toàn nghiêm túc về điều này. Bây giờ điều tôi sẽ nói với bạn là một bản phác thảo về những gì đang chờ đợi bạn trong thế giới lập trình, chúng ta sẽ nói một ít về kỹ thuật và cả những niềm vui của thế giới ấy.
– Khi phát triển phần mềm, hãy nghĩ đến tương lai.
– Viết mã càng ít bao nhiêu ,mắc lỗi càng ít bấy nhiêu.
– Bạn sẽ không bao giờ trở thành một lập trình viên giỏi nếu chỉ tập luyện 2giờ mỗi ngày.
– Tất cả các công việc đều có phần thú vị và phần buồn chán, không có ngoại lệ.
– Kẻ thù số một của các lập trình viên là gì? Kiêu căng.
– Lập trình viên sử dụng hầu hết thời gian của mình vào việc sửa lỗi. Chương trình càng dễ đọc bao nhiêu càng tiết kiệm thời gian bấy nhiêu.
– Trường học khiến các bạn tin rằng chương trình của bạn chỉ cần thỏa mãn một mình bạn là đủ. Điều này hoàn toàn sai lầm. Chương trình phải thỏa mãn khách hàng và các lập trình viên khác.
Mục lục:- Giới thiệu
- Bạn cần gì để trở thành một lập trình viên?
- Còn trường học thì sao?
- Những công cụ cần thiết
- Hãy là người lạc quan
- Hãy làm việc theo nhóm!
- Những thứ nên đọc!
- Tổng kết Giới thiệu
Thế là bạn nghĩ rằng lập trình là một thế giới vô cùng thú vị, và bạn muốn tham gia vào thế giới ấy? Trước khi bạn bắt đầu, điều duy nhất mà tôi muốn khuyên là: nếu bạn thực sự yêu thích lập trình thì đó rõ ràng là công việc tốt nhất mà bạn có thể có được. Ngược lại, nếu bạn chỉ cảm thấy thích, hay không quan tâm lắm đến lập trình, thì đó rõ ràng là công việc tồi tệ nhất của bạn. Bởi vì bạn đang gia nhập vào một thế giới mà sự cạnh tranh luôn là nỗi ám ảnh không thể tránh khỏi.
Phát triển phần mềm gần như là một cuộc đua tranh. Trong đó, cuộc sống của bạn là một con đường và bạn phải chạy càng nhanh càng tốt, không cần biết dưới chân có gì, cho đến khi gặp đồng bằng hoặc là đụng phải vách đá cheo leo. Nếu bạn sẩy chân, mọi thứ kết thúc, và đó hoàn toàn là lỗi của bạn. Nghe có vẻ hơi ghê gớm đúng không? Nhưng đừng để những điều đó làm bạn nản lòng. Tôi chỉ không muốn vẽ nên một viễn cảnh tươi đẹp, nơi có những cánh đồng xanh ngút ngàn và những đám mây lững lờ trôi trên nền trời xanh thẳm. Thực tế là có thể chỉ vài phút sau đó trời sẽ mưa và bạn thì chẳng mang theo dù. Thế nhưng, chính những điều không chắc chắn, những thách thức và áp lực sẽ làm cho cuộc sống trở nên đầy hứng thú.
Bạn vẫn còn đọc đến đây ư? Rất tốt, thế có nghĩa là bạn hoàn toàn nghiêm túc về điều này. Bây giờ điều tôi sẽ nói với bạn là một bản phác thảo về những gì đang chờ đợi bạn trong thế giới lập trình, chúng ta sẽ nói một ít về kỹ thuật và cả những niềm vui của thế giới ấy.
Bạn cần gì để trở thành một lập trình viên?
Tôi không nghĩ rằng có một vài yêu cầu khó khăn nào đó khiến bạn không thể trở thành lập trình viên, tôi chỉ đơn giản nghĩ rằng bất cứ ai có một ít (hay rất nhiều) mong muốn đều có thể trở thành lập trình viên. Vấn đề chỉ là bạn dành ra bao nhiêu thời gian. Điều đó có nghĩa là tôi nghĩ có nhiều quan niệm sai lầm về những kỹ năng cần có để trở thành lập trình viên. Trước tiên, bạn không cần phải thật xuất sắc trong môn Toán, bạn chỉ cần có khả năng hiểu được những điều cơ bản. Dĩ nhiên là có những ngoại lệ, nếu bạn có hứng thú trong lĩnh vực đồ họa hay lập trình game thì một kiến thức Toán vững vàng sẽ giúp bạn rất nhiều.
Một quan niệm sai lầm khác là bạn cần phải là thiên tài logic. Nói chung, điều đó không phải là bắt buộc, dĩ nhiên tư duy logic càng tốt thì càng dễ dàng hơn khi tiếp cận thế giới lập trình. Vậy thì kỹ năng nào là cần thiết? Bị thúc đẩy bởi những thách thức là yếu tố quan trọng nhất. Đơn giản là vì bạn đang tham gia vào một trò chơi trong đó thách thức xuất hiện trong mọi ngõ ngách. Một điều quan trọng khác là phải không ngừng theo đuổi mục tiêu, nhưng vẫn phải luôn uyển chuyển để không đuổi theo một cách mù quáng những mục tiêu xa vời.
Tôi không nghĩ rằng có một vài yêu cầu khó khăn nào đó khiến bạn không thể trở thành lập trình viên, tôi chỉ đơn giản nghĩ rằng bất cứ ai có một ít (hay rất nhiều) mong muốn đều có thể trở thành lập trình viên. Vấn đề chỉ là bạn dành ra bao nhiêu thời gian. Điều đó có nghĩa là tôi nghĩ có nhiều quan niệm sai lầm về những kỹ năng cần có để trở thành lập trình viên. Trước tiên, bạn không cần phải thật xuất sắc trong môn Toán, bạn chỉ cần có khả năng hiểu được những điều cơ bản. Dĩ nhiên là có những ngoại lệ, nếu bạn có hứng thú trong lĩnh vực đồ họa hay lập trình game thì một kiến thức Toán vững vàng sẽ giúp bạn rất nhiều.
Một quan niệm sai lầm khác là bạn cần phải là thiên tài logic. Nói chung, điều đó không phải là bắt buộc, dĩ nhiên tư duy logic càng tốt thì càng dễ dàng hơn khi tiếp cận thế giới lập trình. Vậy thì kỹ năng nào là cần thiết? Bị thúc đẩy bởi những thách thức là yếu tố quan trọng nhất. Đơn giản là vì bạn đang tham gia vào một trò chơi trong đó thách thức xuất hiện trong mọi ngõ ngách. Một điều quan trọng khác là phải không ngừng theo đuổi mục tiêu, nhưng vẫn phải luôn uyển chuyển để không đuổi theo một cách mù quáng những mục tiêu xa vời.
Còn trường học thì sao?
Trường học là nơi tuyệt vời để học mọi thứ ngoại trừ công nghệ. Đừng cho là tôi sai, tôi không nói rằng tôi nghĩ trường học là không quan trọng. Ngược lại, tôi nghĩ trường học là rất quan trọng, nhưng không phải để học lập trình. Những gì bạn nên tập trung thật sự ở trường là học cách để làm việc với những người khác trong một đề án. Cũng như học cách những người xung quanh giải quyết vấn đề và cách thức giải quyết của họ khác cách của bạn ở chỗ nào. Trường học thường bắt bạn phải làm những thứ có thể bạn không thích. Chẳng hạn, tôi nhớ lúc tôi học môn “Thiết kế trình biên dịch”, tôi tự nhủ: “Thật là mất thời gian một cách vô ích, tôi chẳng bao giờ cần phải thiết kế trình biên dịch làm gì”. Nhưng, điều tôi đã học được là làm thế nào để giải quyết những vấn đề hoàn toàn khác nhau, và kiến thức này giúp tôi làm được nhiều việc khác.
Một trong những thuận lợi bạn có được từ trường học là bạn có thể gặp gỡ bạn bè có cùng chí hướng và có thể sau này trở thành đồng nghiệp của bạn. Ngành công nghiệp phần mềm ở nhiều khía cạnh rất giống với ngành công nghiệp điện ảnh, khi có ai đó bị lôi cuốn vào một đề án đầy tham vọng, họ thường mời bạn bè cùng hợp tác. Nếu bạn không biết họ từ trước, bạn sẽ không thể mời (hay thuê), và trong nhiều trường hợp, trường học chính là nơi bạn có thể tìm được những người có cùng sở thích.
Một khía cạnh khác không thể bỏ qua là trường học không chỉ dạy về kỹ thuật mà còn dạy về lịch sử, về tâm lý,… Và trong khi những thứ ấy có vẻ không liên quan trực tiếp đến lập trình, bạn có thể sẽ rất ngạc nhiên nếu biết rằng đó cũng là một trong những nguồn cảm hứng mà tôi từng có. Tôi nên bắt đầu từ đâu?
Trước tiên, tôi khuyên là bạn nên cân nhắc cẩn thận trước khi có một quyết định quan trọng. Như tôi đã nói, thế giới lập trình có thể rất lý thú, nhưng cũng đầy gian nan. Do đó, đừng bao giờ nhảy bổ vào mà không suy nghĩ kỹ. Việc đầu tiên cần làm dĩ nhiên là tìm mua một cuốn sách dạy lập trình. Nhưng có quá nhiều sách và quá nhiều ngôn ngữ. Tôi khuyên bạn nên chọn một trong các ngôn ngữ sau: C, C++, Visual Basic, Pascal (Delphi) hay Java. Khoan hãy nghĩ đến những ngôn ngữ khác, bởi vì chúng hoặc là quá phức tạp cho người mới bắt đầu hoặc là quá đơn giản để có thể đưa bạn vào thế giới lập trình. Nhưng dù thế nào thì bạn cũng nên chọn một ngôn ngữ vào thời điểm này. Những ngôn ngữ này rất giống nhau, và vô cùng mạnh mẽ.
Hầu như mọi ứng dụng thương mại đều có thể được viết bởi một trong những ngôn ngữ trên. Phương pháp của tôi là chọn 2 quyển sách cho mỗi ngôn ngữ đã nêu ở trên. Đọc sơ qua trước, và chú ý các ví dụ, mã nguồn trong đó. Sau khi đã đọc sơ qua tất cả các quyển sách đã chọn, hãy chọn quyển sách gây cho bạn nhiều hứng thú nhất. Và ngôn ngữ mà quyển sách đó đề cập chính là ngôn ngữ bạn nên học đầu tiên.
Bây giờ hãy chọn thêm vài quyển sách về ngôn ngữ đó, mỗi quyển, bạn hãy đọc một phần chương đầu tiên, bạn có cảm thấy quan tâm đến nó không? Nếu không, hãy bỏ quyển sách ấy và chọn một quyển khác; nếu có, hãy lật đến giữa quyển sách và một phần chương mà bạn bắt gặp, vẫn cảm thấy quan tâm đến quyển sách ấy đúng không? Tốt, đó là quyển sách có thể bạn sẽ chọn. Đừng cố hiểu nó viết cái gì, chỉ cần tìm hiểu xem nó có mang đến cho bạn sự quan tâm về ngôn ngữ đó hay không. Tiếp tục phương pháp này cho đến khi không còn quyển sách nào cả, bạn có thể tìm được quyển sách gây cho bạn nhiều hứng thú nhất để học ngôn ngữ đó.
Một khía cạnh khác không thể bỏ qua là trường học không chỉ dạy về kỹ thuật mà còn dạy về lịch sử, về tâm lý,… Và trong khi những thứ ấy có vẻ không liên quan trực tiếp đến lập trình, bạn có thể sẽ rất ngạc nhiên nếu biết rằng đó cũng là một trong những nguồn cảm hứng mà tôi từng có. Tôi nên bắt đầu từ đâu?
Trước tiên, tôi khuyên là bạn nên cân nhắc cẩn thận trước khi có một quyết định quan trọng. Như tôi đã nói, thế giới lập trình có thể rất lý thú, nhưng cũng đầy gian nan. Do đó, đừng bao giờ nhảy bổ vào mà không suy nghĩ kỹ. Việc đầu tiên cần làm dĩ nhiên là tìm mua một cuốn sách dạy lập trình. Nhưng có quá nhiều sách và quá nhiều ngôn ngữ. Tôi khuyên bạn nên chọn một trong các ngôn ngữ sau: C, C++, Visual Basic, Pascal (Delphi) hay Java. Khoan hãy nghĩ đến những ngôn ngữ khác, bởi vì chúng hoặc là quá phức tạp cho người mới bắt đầu hoặc là quá đơn giản để có thể đưa bạn vào thế giới lập trình. Nhưng dù thế nào thì bạn cũng nên chọn một ngôn ngữ vào thời điểm này. Những ngôn ngữ này rất giống nhau, và vô cùng mạnh mẽ.
Hầu như mọi ứng dụng thương mại đều có thể được viết bởi một trong những ngôn ngữ trên. Phương pháp của tôi là chọn 2 quyển sách cho mỗi ngôn ngữ đã nêu ở trên. Đọc sơ qua trước, và chú ý các ví dụ, mã nguồn trong đó. Sau khi đã đọc sơ qua tất cả các quyển sách đã chọn, hãy chọn quyển sách gây cho bạn nhiều hứng thú nhất. Và ngôn ngữ mà quyển sách đó đề cập chính là ngôn ngữ bạn nên học đầu tiên.
Bây giờ hãy chọn thêm vài quyển sách về ngôn ngữ đó, mỗi quyển, bạn hãy đọc một phần chương đầu tiên, bạn có cảm thấy quan tâm đến nó không? Nếu không, hãy bỏ quyển sách ấy và chọn một quyển khác; nếu có, hãy lật đến giữa quyển sách và một phần chương mà bạn bắt gặp, vẫn cảm thấy quan tâm đến quyển sách ấy đúng không? Tốt, đó là quyển sách có thể bạn sẽ chọn. Đừng cố hiểu nó viết cái gì, chỉ cần tìm hiểu xem nó có mang đến cho bạn sự quan tâm về ngôn ngữ đó hay không. Tiếp tục phương pháp này cho đến khi không còn quyển sách nào cả, bạn có thể tìm được quyển sách gây cho bạn nhiều hứng thú nhất để học ngôn ngữ đó.
Những công cụ cần thiết
Hãy nhìn thẳng vào vấn đề, chọn đúng công cụ sẽ làm cho công việc trở nên dễ dàng hơn. Điều này càng chính xác hơn trong lĩnh vực phát triển phần mềm. Có thể Microsoft đã tạo ra môi trường phát triển tốt nhất, Microsoft Developers Studio. Do đó, nếu bạn dùng C/C++, Visual Basic,… thì có lẽ đây sẽ là thứ bạn cần. Tuy nhiên, vẫn có nhiều công cụ thay thế miễn phí khác cho những ngôn ngữ này. Bạn có thể kiểm tra thử nếu thích.
Một công cụ khác cũng rất quan trọng, đó là trình soạn thảo mã lệnh (code editor). DevStudio có một trình soạn thảo mã lệnh tích hợp sẵn, và đó là một trong những lý do khiến nhiều người dùng nó. Cá nhân tôi không thích bị ràng buộc bởi một môi trường phát triển nào. Do đó, tôi thích dùng công cụ soạn thảo MultiEdit. Tôi đã sử dụng nó trong nhiều năm. Và tôi rất tự hào khuyên những ai muốn tìm một công cụ thay thế cho DevStudio hãy dùng nó.
Hãy là người lạc quan
Tôi từng nghe người ta nói rằng kẻ lạc quan nhất trên thế giới chính là nhà phát triển phần mềm. Trong suy nghĩ của họ, không có phần mềm nào là không thể viết được. Một ví dụ nhỏ, bạn hãy vào thử một site download phần mềm nào đó mà xem. Có hàng trăm hàng ngàn phần mềm bao gồm mọi lĩnh vực. Làm thế nào mà người ta có thể sáng tạo ra từng ấy phần mềm. Chúng nhiều và tốt đến nỗi bạn không thể nghĩ ra nên sáng tạo thêm phần mềm nào. Thế nhưng từng ngày từng giờ, các nhà phát triển phần mềm luôn sáng tạo và cho ra nhiều phần mềm mới hơn nữa, những phần mềm mà đã có thời người ta cho là không thể tạo ra được. Dù sao thì lạc quan mấy cũng phải có giới hạn. Mấu chốt của vấn đề là họ không nhìn mọi thứ một cách tổng thể, mà ở từng phần cụ thể.
Ở một chừng mực nào đó, có thể xem đấy là đặc trưng của ngành thiết kế phần mềm, chia dự án ra thành những phần nhỏ và giải quyết từng phần. Nếu bạn không phân phối thời gian hợp lý, bạn sẽ không thể nào hoàn thành công việc. Khi bạn bắt đầu viết chương trình “thực sự” đầu tiên (nghĩa là chương trình có thể thực hiện được một công việc nào đó cần thiết cho mọi người, không phải cho riêng bạn), phải chắc chắn rằng bạn dành đủ thời gian để vạch ra kế hoạch về những việc bạn định làm, thứ tự thực hiện, và kết quả cuối cùng là gì. Nếu bạn làm điều này, bạn sẽ thấy mọi thứ trở nên dễ dàng hơn và có thể hoàn thành nhanh hơn là bạn nghĩ.
Hãy làm việc theo nhóm!
Nếu bạn dự định trở thành một lập trình viên đơn độc, hãy suy nghĩ lại. 99,9% các dự án đòi hỏi phải làm việc theo nhóm. Và do đó, bạn cần phải có kinh nghiệm làm việc theo nhóm, phối hợp với những người khác trong một dự án. Một khi bạn đã hoàn thành những dự án nhỏ của riêng mình, đó là lúc bắt đầu tìm cách tham dự vào một dự án có nhiều người tham gia. Đó có thể là một game, một bản demo, hay bất cứ thứ gì. Chỉ cần đó là dự án làm bạn quan tâm. Có nhiều các để tìm dự án, bạn có thể gia nhập vào những dự án đã có, tìm kiếm những nhóm vừa mới thành lập và xin gia nhập, hay thậm chí tự lập một dự án và mời người khác cùng cộng tác. Điều quan trọng nhất là bạn phải học cách làm việc cùng với những người khác để thực hiện mục tiêu chung.
Những thứ nên đọc!
Đọc sách là nguyên tắc cơ bản… Và điều này càng chính xác trong ngành phát triển phần mềm. Nếu bạn là người không thích đọc sách, có lẽ bạn nên chọn một công việc khác. Bởi vì đọc sách chính là chìa khóa để củng cố và hiện thực hóa những tiềm năng của bạn. Bạn có thể tự hỏi vì sao tôi có thể viết nhiều phần mềm trong thời gian ngắn như thế? Có 3 lý do chính: kinh nghiệm, những đồng nghiệp tài năng mà tôi luôn hài lòng khi được làm việc chung và cuối cùng là những quyển sách tôi đã đọc. Tôi không thể giúp bạn có được kinh nghiệm và những bạn đồng nghiệp giỏi, nhưng tôi có thể giới thiệu cho bạn những quyển sách hay:
Code Complete, ISBN 1556154844.
Đây là quyển sách cần thiết cho mọi nhà phát triển phần mềm, bất kể họ đang dùng ngôn ngữ lập trình nào. Nó bao gồm nhiều bài thực hành và nhiều kỹ thuật liên quan đến phong cách viết mã.
Rapid Development, ISBN 1556159005.
Quyển sách này hướng đến việc lập kế hoạch cho một dự án, tập trung vào những lỗi tiềm ẩn có thể mắc phải,… Đây là quyển sách cho bạn biết thế giới thực sự của ngành phát triển phần mềm.
Dynamics of Software Development, ISBN 1556158238.Quyển sách này có một hướng tiếp cận khác, tập trung vào việc làm việc theo nhóm và động lực của việc lập trình. Đây là điều thỉnh thoảng bị xem nhẹ, và hậu quả có thể được thấy trong nhiều dự án bị thất bại.
The Mythical Man-Month, ISBN 0201835959.
Đây thực sự là một quyển sách nên đọc. Dù rằng nó đã được viết cách đây hơn 20 năm, thế nhưng vẫn có nhiều điều có thể áp dụng.
Programming Windows, ISBN 157231995X.
Nếu bạn có ý định lập trình trên Windows (bằng C hay C++), bạn cần phải mua quyển sách này. Theo tôi đây là quyển sách dạy lập trình Windows tốt nhất.
The Art of Ware, ISBN 1558513965.
Tôi là một người hâm mộ cuồng nhiệt Tôn Tử, do đó tôi rất thích thú khi đọc quyển sách này. Đây là một quyển sách có phong cách viết rất lôi cuốn, với những bài học trong binh pháp Tôn Tử được vận dụng vào ngành phát triển phần mềm.
Tổng kết
Hy vọng tôi đã nêu được một số điều cần thiết để trở thành một lập trình viên, không phải về mặt kỹ thuật mà là về mặt tư duy. Cá nhân tôi cho rằng lập trình là một công việc đầy hứng thú. Không có gì vui hơn khi nhìn thấy ai đó đang sử dụng phần mềm do bạn viết để làm cho cuộc sống của họ tốt hơn, dù chỉ là một phần nào đấy. Do đó, nếu bạn quyết định theo đuổi ngành phát triển phần mềm, tôi xin chúc bạn may mắn và hy vọng một ngày nào đó tôi sẽ có dịp download phần mềm do bạn viết để sử dụng.
Coder hoàn hảo
Những kỹ năng chuyên gia lập trình cần có
Trong lĩnh vực công nghệ, những người viết chương trình (coder hay lập trình viên – LTV) đã tiến một bước dài từ hình mẫu “chuyên gia” với cây viết giắt túi. Chương trình do LTV tạo ra không chỉ làm thay đổi bộ mặt công nghệ mà còn làm thay đổi cách chúng ta liên lạc, điều hành kinh doanh, truy cập thông tin, kiểm soát sức khoẻ và nhiều thứ khác. Nói chung, nếu không có kỹ năng của các LTV, sẽ không có ngành công nghiệp phần mềm, có lẽ chúng ta vẫn còn dùng máy đánh chữ và mất hàng tuần để gửi thư thay vì chỉ mất vài giây như hiện nay.Để kiếm sống và thăng tiến trong nghề viết code, LTV cần phải thành thạo ít nhất một hay nhiều ngôn ngữ lập trình thời thượng. Và còn phải biết các kỹ thuật lập trình, mô hình phát triển phần mềm và nhiều kỹ năng khác.
Ngôn ngữ lập trình
Tối thiểu, LTV cần tinh thông một trong những ngôn ngữ lập trình đang thịnh hành. Theo chỉ số TIOBE tháng 12/2010, 5 ngôn ngữ lập trình phổ biến nhất hiện nay là Java, C/C++, PHP, C# và Python. Sự phổ biến của ngôn ngữ không phải bất biến. Do vậy, các công ty thích tuyển LTV không chỉ thành thạo một ngôn ngữ mà còn biết thêm nhiều ngôn ngữ khác như Python, JavaScripts, Ruby on Rails, C#… Bạn có thể truy cập website TIOBE (www.tiobe.com) hay đơn giản tìm trên Google để biết những ngôn ngữ lập trình đang được ưa chuộng.
LTV được kỳ vọng có thể làm được mọi thứ như thiết kế, viết code, kiểm tra và bảo trì hệ thống từ đơn giản đến phức tạp với ngôn ngữ mà mình thành thạo.
Khả năng sử dụng các ngôn ngữ kịch bản là “giá trị gia tăng” đối với LTV, và là yêu cầu “phải có” đối với một số vị trí công việc. Nói chung, các ngôn ngữ kịch bản (script) dễ học và dễ dùng, không phức tạp như các ngôn ngữ lập trình cần biên dịch. Các ngôn ngữ kịch bản hiện rất phổ biến vì chúng cho phép trình duyệt web “nói chuyện” và tương tác với người dùng và với chương trình ở máy chủ.
LTV nên biết một số ngôn ngữ kịch bản như JavaScript, Perl, WSH, TCL… LTV làm việc với máy ảo Java (JVM) cũng nên xem xét phát triển kỹ năng sử dụng các ngôn ngữ kịch bản như Groovy, JRuby, Jython, Scala hay Fantom.
Các ngôn ngữ kịch bản có thể dùng để lập trình tự động hoá các công việc như xử lý file, xử lý chuỗi hay chuyển đổi định dạng dữ liệu.
10 ngôn ngữ lập trình cho năm 2011 Tạp chí eWEEK đã thực hiện thăm dò rất nhiều LTV, nhà tuyển dụng, các công ty công nghệ mới khởi nghiệp và những người sáng lập một số ngôn ngữ lập trình phổ biến, dưới đây là kết quả – 10 ngôn ngữ lập trình được dự báo sẽ “hot” trong năm 2011: 1. Java 2. C# 3. C/C++ 4. JavaScript (cùng với CSS và HTML) 5. Visual Basic 6. PHP 7. Objective-C 8. Perl 9. Python 10. Ruby Danh sách này có chút khác biệt (về thứ tự) so với danh sách những ngôn ngữ lập trình “hot” của TIOBE. Tuy nhiên, việc chọn ngôn ngữ nào để “kiếm sống” tùy thuộc bạn và lĩnh vực ứng dụng mà bạn đang (hay muốn) làm việc. |
Kỹ thuật lập trình
Cùng với ngôn ngữ lập trình, LTV còn phải am tường những kỹ thuật lập trình như hướng đối tượng (object-oriented), khách/chủ (client/server), phân tán, triển khai, thử nghiệm, bẫy lỗi và bảo trì. Các kỹ thuật này có liên quan đến phương pháp phát triển phần mềm (thường liên quan đến môi trường hay công cụ phát triển) sẽ được đề cập trong phần dưới đây.
Mô hình phát triển phần mềm
Dù một mình phát triển ứng dụng, hay là thành viên của nhóm phát triển cả trăm người, thì việc hiểu biết những mô hình phát triển phần mềm đều cần thiết, giúp cho công việc dễ dàng hơn.
LTV cần có kiến thức về các việc như: kiểm soát phiên bản, thư viện, hệ thống quản lý mã, tài liệu, phương pháp và công cụ kiểm thử, quản lý bản phát hành…
Hiện nay nhiều công ty áp dụng những mô hình đặc biệt để quản lý quy trình phát triển phần mềm, LTV nên nắm rõ mô hình này và vị trí của mình trong quy trình.
Một số mô hình thông dụng đã được giới thiệu khá nhiều trên TGVT như Agile, Lean, Scrum, Spirall và Waterfall (bạn dễ dàng tìm thấy trên website pcworld.com.vn bằng các từ khoá này).
Ứng dụng web
Giờ là thời của web. LTV không thể không biết web. Ứng dụng web hiện diện khắp nơi và làm được gần như mọi thứ. Để làm được điều đó, LTV phải hiểu những phương thức đằng sau các trang web và ứng dụng web, đó có thể là một hay nhiều trang JSP (Java Server Page), Java servlet, ASP (Active Server Page) và ActiveX control. Tùy yêu cầu công việc, LTV cũng cần có kiến thức về Cascading Style Sheets (CSS), HTML và XHTML.
Kỹ năng cá nhân
LTV không phải ngôi sao “cô đơn” mà thường phải làm việc với một nhóm hay làm việc trong một dự án gồm nhiều khâu. Vì vậy LTV cần có những kỹ năng sau:
- Kỹ năng giao tiếp tốt: ở đây muốn nói đến kỹ năng giao tiếp giữa người với người chứ không phải với máy tính, bao gồm cả nói và viết.
- Khả năng giải quyết vấn đề: trong lĩnh vực phát triển phần mềm, nếu có vấn đề ở khâu nào đó, thì chắc chắn các khâu còn lại sẽ bị ảnh hưởng. Một LTV “có nghề” phải là người có khả năng ứng biến tìm ra giải pháp để giải quyết vấn đề hay sáng tạo những cách thức mới để thực hiện những công việc mới hay thậm chí là công việc… cũ.
- Tính tự giác: Tuy LTV có thể làm việc trong một nhóm, nhưng viết code là công việc “tự thân”, yêu cầu tính tự giác. Nghề phát triển phần mềm đầy những “deadline” (mốc thời gian buộc phải hoàn thành) và những thay đổi giờ chót vì vậy “không thiếu” những ngày làm việc vất vả thâu đêm.
Lời kết
Trung thành là tính từ tốt. Tuy nhiên trong lĩnh vực phát triển phần mềm, trung thành với một ngôn ngữ lập trình hay một phương pháp phát triển có thể cản trở con đường nghề nghiệp của LTV. LTV “có nghề” cần “trung thành” với khả năng đáp ứng nhanh nhu cầu của thị trường, do vậy cần nắm bắt những xu hướng mới, những ngôn ngữ mới hay mới nổi.
Đạo lập trình
“Đạo lập trình” là một bản dịch khá lâu từ cuốn “The Tao of Programming” nhằm nói đến lập trình ở một khía cạnh khá vui nhưng cũng thấm thía. Đạo lập trình có 9 phần: Cõi hư vô, Lập trình sư tiền bối, Thiết kế, Lập trình, Cải tiến, Quản đốc, Sự thông thái hợp nhất, Phần cứng và phần mềm, Lời kết.
Phần 1: Cõi hư vô
Lập trình sư nói:
“Khi ngươi học được cách lấy mã lỗi từ trong đoạn code bắt lỗi, ngươi có thể xuống núi”
1.1
Hình thành một cách thần bí, sinh ra từ hư vô. Đơn độc và bất động nhưng không ngừng vận động. Là nguồn gốc của mọi chương trình. Ta không biết tên nó là gì nên ta gọi nó là Đạo.
Đạo mà hay thì hệ điều hành sẽ hay. Hệ điều hành mà hay thì trình biên dịch sẽ hay. Trình biên dịch mà hay thì chương trình ắt sẽ hay. Chương trình hay thì bá tính an cư lạc nghiệp, vũ trụ thuận hòa.
Đạo bao trùm vạn vật, lan toả thiên hà. Tựa như cơn gió mát giữa mùa viêm nhiệt, như cơn mưa rào giữa tiết hanh khô.
1.2
Đạo sinh máy ngữ, máy ngữ sinh hợp ngữ, hợp ngữ sinh trình dịch, trình dịch sinh ngôn ngữ ngôn ngữ biến hóa vô cùng .
Nay vạn ngữ đã hình thành. Một ngữ dù thấp kém đến đâu vẫn có mục đích của nó. Mỗi ngữ đều thể hiện tính âm dương của phần mềm. Mỗi ngữ đều có một vị trí trong Đạo.
Tuy nhiên nếu được lựa chọn, các ngươi không nên chọn ngữ COBOL để lập trình.
Chú giải
Ngữ: Ngôn ngữ (lập trình)
Máy ngữ: ngôn ngữ máy – machine language
Hợp ngữ: assembly
Trình dịch: compiler
1.3
Khởi thủy từ Đạo. Đạo sinh thời gian và tài nguyên. Nên thời gian và tài nguyên chính là khía cạnh âm dương của Đạo vậy.
Người lĩnh hội được Đạo luôn có đủ thời gian và tài nguyên để đạt được mục đích của mình. Kẻ không lĩnh hội được Đạo thì luôn thiếu. Không thể khác được.
Chú giải
Thời gian và tài nguyên: Resource & Time, hai yếu tố tính size của phần mềm
1.4
Kẻ khôn ngoan khi nghe về Đạo thì làm theo. Kẻ bình thường khi nghe về Đạo thì nghiên cứu. Kẻ ngu dốt khi nghe về Đạo thì cười nhạo.
Nếu không có kẻ cười nhạo chắc hẳn đã không thành Đạo.
Phần 2: Lập trình sư tiền bối
Lập Trình Sư nói:
“Sau ba ngày không lập trình, cuộc sống trở nên vô nghĩa.”
2.1
Bậc Lập Trình Sư tiền bối rất bí ẩn và uyên thâm. Chúng ta không thể hiểu suy nghĩ của họ. Thế nên ta chỉ mô tả đặc điểm của họ.
Họ cẩn thận như loài hồ ly trên mặt nước. Họ cảnh giác như vị tướng giữa trận tiền. Họ tốt bụng như chủ nhà tiếp bậc khách quý. Họ giản dị như gỗ đá. Họ bí ẩn như hồ đen trong hang tối.
Ai có thể biết bí mật trong con tim khối óc của họ.
Câu trả lời nằm trong Đạo.
2.2
Đại sư Turing một đêm nằm mơ thấy mình hóa máy. Khi thức dậy ông thốt lên:
“Không biết ta là Turing nằm mơ hóa máy hay ta là máy đang nằm mơ hóa Turing đây”
2.3
Một lập trình phu từ một đại công ty máy tính sau khi tham dự đại hội phần mềm trở về trình báo với chủ nhân: “Không hiểu lũ lập trình phu công ty khác là loại gì. Chúng cư xử rất thô lỗ và chẳng quan tâm gì đến vẻ bề ngoài. Đầu tóc chúng dài và bù xù, quần áo thì nhăn nhúm và cũ kỹ. Chúng nhảy xổ vào hội trường và gây huyên náo cả buổi.”
Chủ nhân đáp “Đáng lẽ ta không nên đưa ngươi đến đó. Những người ngươi gặp sống ngoài thế giới thực. Họ coi cuộc sống là ngớ ngẩn, tất cả chẳng qua chỉ là một sự trùng hợp tình cờ. Họ đến và đi mà không hề biết đến giới hạn. Họ không quan tâm đến thứ gì khác ngoài chương trình của họ. Vậy thì họ còn bận tâm đến các vấn đề xã hội làm gì?”
“Họ đang sống trong Đạo”
2.4
Đồ đệ hỏi Lập Trình Sư: “Một lập trình phu không bao giờ thiết kế, thảo tài liệu, hay thử nghiệm chương trình. Vậy mà tất cả mọi người biết anh ta đều coi anh ta anh ta là thiên hạ đệ nhất phu. Tại sao vậy?”
Lập Trình Sư trả lời “Kẻ đó đã lĩnh hội được Đạo. Hắn đã thoát khỏi giới hạn của thiết kế, khi hệ thống trục trặc hắn không hề bối rối và tiếp nhận mọi thứ một cách bình thản. Hắn đã thoát khỏi giới hạn của thảo tài liệu, hắn không bao giờ e ngại khi có người khác review code của mình. Hắn đã thoát khỏi giới hạn của thử nghiệm. Mỗi đoạn code hắn viết đều đã sáng sủa, hoàn hảo và đẹp đẽ còn ý nghĩa của chúng đã hiển nhiên như cuộc sống.
Hắn đã đạt đến ngưỡng thần bí của Đạo.”
Phần 3: Thiết kế
Lập Trình Sư nói:
“Khi chương trình đang được test đó là thời điểm quá muộn để thay đổi thiết kế.”
3.1
Một nam nhân tham dự triển lãm tin học. Mỗi ngày khi vào cửa, gã nói với người cảnh vệ:
“Ta là một đại đạo, nổi danh với nghề trộm cắp như thần. Nói trước với ngươi là ta sẽ không rời triển lãm khi chưa chôm được thứ gì”.
Lời nam nhân khiến người cảnh vệ rất đỗi hoang mang, bởi số thiết bị trong triển lãm trị giá đến trăm vạn lượng vàng. Thế nên người cảnh vệ luôn bám sát theo dõi nhất cử nhất động của gã đại đạo. Tuy nhiên gã đại đạo chỉ đi thơ thẩn giữa các gian hàng. Thỉnh thoảng gã cười mỉm một cách khó hiểu.
Khi đại đạo ra khỏi cửa người cảnh vệ liền lôi gã lại để lục soát nhưng chẳng tìm thấy gì.
Hôm sau đại đạo lại đến. Khi đi qua cửa gã thì thầm với cảnh vệ:
“Hôm qua ta đã thoát ra với một đống chiến lợi phẩm, hôm nay có thể sẽ còn nhiều hơn”.
Người cảnh vệ lo sốt vó càng theo sát gã đại đạo, nhưng như hôm trước người cảnh vệ chẳng phát hiện được gì.
Ngày cuối cùng, cảnh vệ không kiềm chế được sự tò mò:
“Thưa ngài đạo chích” cảnh vệ nói “Tôi đã hoang mang đến mất ngủ. Hãy khai sáng cho tôi, thứ mà ngài lấy trộm là gì vậy?”
Đại đạo mỉm cười, “Ta trộm ý tưởng” hắn nói.
3.2
Một Lập Trình Sư viết chương trình không có cấu trúc. Một lập trình phu học theo cũng viết một chương trình không có cấu trúc. Khi đánh giá kết quả, Lập Trình Sư đã chửi mắng lập trình phu vì viết code không có cấu trúc, ông nói “Tuyệt học của đại cao thủ đâu phải để cho kẻ tầm thường? Ngươi cần phải lĩnh hội được Đạo rồi ngươi mới được phép bỏ qua cấu trúc chương trình”.
3.3
Một lập trình phu làm môn khách tại phủ Ngô Vương. Ngô Vương hỏi phu: “Hệ điều hành và phần mềm kế toán, thứ nào dễ thiết kế hơn?”
“Hệ điều hành”, phu đáp.
Ngô Vương ngạc nhiên “Rõ ràng một phần mềm kế toán đơn giản hơn nhiều hơn so với một hệ điều hành”, ông nói đầy vẻ nghi ngờ.
“Không đúng lắm”, phu nói, “khi thiết kế phần mềm kế toán, lập trình phu phải đáp ứng yêu cầu của nhiều người khác nhau: phần mềm phải hoạt động ra sao, báo cáo lên như thế nào, đáp ứng điều kiện gì của luật tô thuế. Ngược lại, hệ điều hành không bị hạn chế vì những ý kiến bên ngoài. Lập trình phu chỉ tìm cách đơn giản nhất để máy thực hiện bài toán. Đó là lý do vì sao hệ điều hành dễ thiết kế”.
Ngô Vương mỉm cười gật đầu “Đúng lắm, thế thứ nào dễ debug hơn?”
Phu không đáp.
3.4
Chủ trại lập trình đến gặp Lập Trình Sư và đưa cho ông tài liệu yêu cầu của một phần mềm mới.
Trại chủ hỏi Lập Trình Sư “Việc thiết kế hệ thống sẽ mất bao lâu nếu ta để năm lập trình phu làm?”
“Mất một năm”, Lập Trình Sư trả lời ngay.
“Nhưng ta cần hệ thống này hoàn thành càng sớm càng tốt. Sẽ mất bao lâu nếu ta cho mười phu tham gia thiết kế?”
Lập trình sư cau mày “Trường hợp này, ngài sẽ cần hai năm”.
“Thế nếu ta đáp 100 phu vào thì sao?”
Lập Trình Sư nhún vai “Sẽ chẳng bao giờ xong” ông nói.
Phần 4: Lập trình
Lập Trình Sư nói:
“Chương trình tốt tự tạo ra thiên đường cho mình, chương trình tồi tự tạo ra địa ngục giam mình”
4.1
Chương trình cần hết sức gọn nhẹ, nên được cấu tạo từ nhiều hàm liên kết như chuỗi ngọc vậy. Tư tưởng và mục đích của chương trình phải liền mạch, không ngắt quãng. Mạch này không nên quá dài, không nên quá ngắn, không nên có biến thừa, không nên có vòng lặp có thể giản lược, không nên thiếu cấu trúc, không nên quá cứng nhắc.
Chương trình cần tuân theo “Luật hạn chế shock”. Luật đó là gì? Đơn giản là khi trả lời người sử dụng, chương trình cần hạn chế tối đa việc gây bất ngờ cho họ.
Một chương trình dù phức tạp đến đâu cũng nên hoạt động như một đơn vị độc lập. Chương trình nên chú trọng đến logic bên trong hơn là giao diện bên ngoài.
* * *
Một chương trình không đáp ứng được những yêu cầu trên sẽ vô cùng lộn xộn. Cách duy nhất để sửa chữa là viết lại chương trình.
4.2
Lập trình phu hỏi Lập Trình Sư: “Thưa, chương trình con viết lúc chạy lúc không mặc dù con đã tuân theo quy tắc lập trình. Con cảm thấy vô cùng bế tắc. Đâu là nguyên nhân thảm cảnh này?”
Lập Trình Sư đáp: “Ngươi bối rối vì ngươi chưa ngộ Đạo. Chỉ có kẻ ngốc mới luôn đòi hỏi một hành động dựa trên lý trí từ phía con người. Vậy thì tại sao ngươi lại đòi hỏi điều đó từ thứ mà con người tạo ra? Máy móc chỉ là máy móc, Đạo mới là hoàn hảo. Quy tắc lập trình chỉ là nhất thời, Đạo mới là mãi mãi. Thế nên để được khai sáng, ngươi phải suy ngẫm về Đạo.”
“Vậy làm sao để con nhận ra là mình đã được khai sáng?”, lập trình phu hỏi.
“Chương trình của ngươi khi đó sẽ chạy trơn tru”, Lập Trình Sư đáp.
4.3
Một Lập Trình Sư giảng về bản chất của Đạo cho một đồ đệ. “Đạo nằm trong tất cả các phần mềm dù phần mềm đó thấp kém đến đâu”, Lập Trình Sư nói.
“Trong máy tính cầm tay có Đạo chứ?”, đồ đệ hỏi.
“Có”, Lập Trình Sư đáp.
“Trong trò chơi điện tử có Đạo chứ?”, đồ đệ tiếp.
“Tất nhiên, kể cả trong trò chơi điện tử cũng có Đạo”, Lập Trình Sư đáp.
“Cả trong hệ điều hành DOS cho máy tính cá nhân nữa chứ?”
Lập trình sư ho một tiếng, người ông khẽ rung lên “Bài giảng hôm nay kết thúc” ông nói.
4.4
Lập trình phu của thái tử viết một phần mềm, ngón tay phu như nhảy múa trên bàn phím. Chương trình khi dịch không có một lỗi và chạy mượt như cơn gió nhẹ.
“Kinh khủng quá” thái tử thốt lên, “Kỹ năng của túc hạ thật hoàn hảo!”
“Kỹ năng ư?”, phu rời mắt khỏi màn hình, “Thứ tại hạ tuân theo là Đạo – vượt trên mọi kỹ năng! Khi tại hạ bắt đầu lập trình, tại hạ thấy toàn bộ bài toán trong một khối hỗn độn. Ba năm sau tại hạ không còn thấy khối hỗn độn nữa. Thay vào đó là những hàm con. Nhưng bây giờ tai không còn thấy gì nữa. Toàn bộ bài toán hoàn toàn không tồn tại trong code. Tri thức của tại hạ trở nên nhàn nhã. Tư tưởng của tại hạ không cần kế hoạch, tự do hoạt động theo bản năng. Tóm lại, chương trình của tại hạ có thể tự lập trình. Thực sự thỉnh thoảng nó cũng gặp một số lỗi lớn. Thấy lỗi xuất hiện, tại hạ chậm rãi, lặng lẽ theo dõi. Rồi tại hạ sửa một dòng code và lỗi lớn vừa xuất hiện đã tan biến như làn khói mỏng. Sau đó tại hạ dịch lại chương trình, ngồi yên tận hưởng cảm giác hân hoan chảy trong cơ thể. Tại hạ nhắm mắt một lúc rồi log off”.
“Giá như lập trình phu của ta ai cũng khôn ngoan như thế!” thái tử nói.
Phần 5: Cài tiến
Lập Trình Sư nói
“Một chương trình, dù chỉ có 3 dòng code, một ngày nào đó vẫn cần phải được cải tiến”
5.1
Cửa giả dùng hay chẳng phí dầu (không cần phải tra dầu vào bản lề nếu dùng cẩn thận)
Suối nguồn chảy xiết há thành ao (suối chảy xiết thì không thể đọng nước như ao tù)
Lời hay khó lọt kẻ cứng đầu (mịa, chỗ này khó dịch thành thơ quá)
Phần mềm mục nát nếu không launch (phần mềm nếu không chạy (launch) thì sớm muộn gì cũng mục nát thôi)
Đó là những bí mật tuyệt vời.
5.2
Quản đốc hỏi một lập trình phu xem anh ta cần bao lâu để hoàn thành chương trình đang viết. “Sẽ xong trong ngày mai” phu đáp.
“Ta cho rằng điều đó là không thể” quản đốc nói, “Thực sự là ngươi cần bao lâu?”
Phu nghĩ một lúc. Rồi anh ta trả lời: “Tại hạ có một số chức năng muốn viết thêm. Những chức năng này sẽ mất ít nhất hai tuần để hoàn thành”.
“Như vậy vẫn là quá ngắn so với dự tính” quản đốc nói “Thôi, chỉ cần ngươi thông báo cho ta khi chương trình hoàn tất là ta mãn nguyện rồi.”
Lập trình phu đồng ý.
Vài năm sau quản đốc rửa tay gác phím, trên đường đến dự tiệc chia tay, quản đốc thấy lập trình phu ngủ gục trên bàn phím. Phu đã lập trình cả đêm.
5.3
Lập trình phu một lần được giao viết một chương trình quản lý tài chính nhỏ.
Lập trình phu làm việc như điên trong nhiều ngày. Khi lập trình sư xem kết quả ông nhận thấy phu đã lập trình cả một chương trình soạn thảo, một đống hàm đồ họa tổng quát, một giao diện trí tuệ nhân tạo nhưng chẳng có dòng code nào về tài chính.
Lập trình sư lập tức chất vấn và phê phán, “Đừng nôn nóng” lập trình phu bực mình “tại hạ sẽ lập trình chương trình tài chính sau cùng” gã nói.
5.4
Đời nào dân tốt bỏ mùa?
Đời nào thầy tốt bỏ qua trò nghèo?
Cha tốt con chẳng đói meo
Phu tốt code chẳng mòn theo tháng ngày
Phần 6: Quản đốc
Lập trình sư nói:
“Lập trình phu nhiều và các quản đốc ít thì môn phái sẽ hưng thịnh”
6.1
Các quản đốc chỉ biết họp bàn, lập trình phu ngồi chỉ biết ngồi chơi. Thì khi tổng quản báo cáo về tình hình thu chi, ngân quĩ sẽ bị sụt giảm. Khi quản đốc chỉ biết nói trăng sao, chung chung, tất cả sẽ bị mây mù bao phủ.
Đấy không phải là đạo lập trình.
Các quản đốc theo sát tình hình lập trình phu không thể ngồi chơi. Thì tổng quản lên kế hoạch, cân đối và mọi thứ đi vào trật tự. Khi mà các quản đốc nắm rõ vấn đề, thì vấn đề sẽ sớm được giải quyết.
Đấy chính là đạo lập trình
6.2
Tại sao lập trình phu kém năng động?
Bởi vì hầu hết thời gian họ dành cho hội họp.
Tại sao lập trình phu nổi loạn.
Bởi vì các quản đốc cản trở họ quá nhiều
Tại sao lập trình phu lần lượt ra đi?
Bởi vì đã đến lúc để họ ra đi.
Đừng giao việc cho những quản đốc ít quyền lực, họ không có giá trị trong bang.
6.3
Khi quản đốc gặp khó khăn, lập trình phu làm việc cho ông ta có sáng kiến mới để tạo ra chương trình ưa chuộng và bán chạy. Kết quả, ông ta giữ vững thế lực của mình.
Quản đốc tặng thưởng nhưng lập trình phu từ chối nó. Anh ta nói : “Tôi viết chương trình bởi vì tôi đam mê, tôi không trông chờ một phần thưởng”.
Quản đốc đưa ra lập luận: “Đây là lập trình phu, anh ta giữ một vị trí khá quan trọng, anh ta hoàn thành tốt mọi việc. Cần phải thăng cấp cho anh ta thành cố vấn của quản đốc”.
Khi nói về vấn đề này, lập trình phu phủ nhận ý kiến này, anh ta nói: “Tôi tồn tại khi tôi lập trình. Nếu tôi được thăng chức tôi sẽ không biết làm gì. Tôi có thể đi đâu? Tôi có một chương trình và tôi làm việc trên nó.”
6.4
Quản đốc đi đến chỗ các lập trình phu và nói với họ: “Các bạn thân mến,giờ làm việc của các bạn đang bắt đầu làm việc từ 9 giờ sáng và kết thúc lúc 5 giờ chiều”. Việc này, gây ra một chút bực bội và gò bó cho các bạn.
Quản đốc lại nói: “Thật ra, trong một vài trường hợp các bạn có thể quyết định giờ làm của mình. Dài hay ngắn ko quan trọng, miễn là các bạn có thể kết thúc dự án đúng như lịch định.” Lập trình phu cảm thấy hài lòng, anh ta bắt đầu công việc vào buổi trưa và kết thúc lúc gần sáng.
Phần 7: Sự thông thái hợp nhất
Lập trình sư nói:
“Ngươi có thể giải thích một chương trình (cho ai), nhưng ngươi không thể tặng hắn ta máy tính biết đọc viết”
7.1
Đồ đệ hỏi lập trình sư: “phương đông có đại cây cấu trúc người đời thường gọi ‘Cơ Quan Đầu Não Liên Hợp’. Nó bành trướng hình thể với phó chủ tịch (vice president) và kế toán phu (accountant). Nó có vô số ghi chú, đại thể tựa như ‘Cút đi!” hay “Lại đây này!”, thiên hạ chẳng ai hiểu nó nói gì. Hằng niên các tên mới được đặt vào nhánh, nhưng vô nghĩa. Thử hỏi thứ vô lý (unnatural entity) như vậy tồn tại để làm chi ?”
Lập trình sư nói: “ngươi nhận biết một đại cấu trúc và bối rối vì nó không có mục đích hợp lý. Dám hỏi ngươi có thể hứng thú với sự xoay chuyển không ngừng của nó ? Sao ngươi không tận hưởng sự nhàn nhã lập trình bên dưới các nhánh cây ấy ? Sao ngươi bị phiền bởi sự vô dụng của nó ?”
7.2
Phương đông có loài cá kình to lớn. Nó hóa thành loài hạc mà cánh bao trùm cả bầu trời. Khi nó bay qua đất liền, nó mang thông điệp từ “Cơ Quan Đầu Não Liên Hợp”, rơi đúng chỗ các lập trình phu, giống như hải cẩu vạch dấu trên bãi biển. Rồi nó men theo gió, quay về cố hương.
‘Lập trình phu mới’ dõi theo cánh chim mà trong lòng ngập tràn nghi vấn. ‘Lập trình phu trung’ kinh hãi, khiếp sợ thông điệp. ‘Lập trình sư’ bình thản, tiếp tục công việc.
7.3
Lão pháp sư từ Tháp Ngà mang đến lập trình sư món đồ cuối cùng để kiểm tra. Pháp sư đẩy cái hộp đen lớn vào văn phòng. Lập trình sư chờ đợi.
“Đây là trạm làm việc tích hợp, phân tán, đa dụng, thiết kế với hệ điều hành độc quyền, 6 đời ngôn ngữ, đa giao diện. Tạo ra nó mất vài trăm năm làm việc. Các hạ có thấy ngạc nhiên không ?” Pháp sư nói.
Lập trình sư trả lời: “Thật quá đỗi kinh ngạc.”
“Cơ Quan Đầu Não Liên Hợp đã ra lệnh rằng hãy sử dụng nó như nền cho các chương trình mới, Ngài có đồng ý không ?” Pháp sư hỏi.
Lập trình sư đáp: “tất nhiên, ta sẽ chuyển nó đến trung tâm dữ liệu ngay!”
Vài ngày sau, 1 đồ đệ thơ thẩn đến văn phòng lập trình sư nói: “Con không tìm thấy danh sách cho chương trình mới, sư phụ biết nó ở đâu không ?”
“Nó xếp thành chồng trên nền của trung tâm dữ liệu”
7.4
Lập trình sư đi từ chương trình này đến chương trình khác không chút lo sợ. Không sự thay đổi trong quản lý nào làm hại y. Y vĩnh viễn không bị sa thải, ngay cả dự án nếu bị hủy. Tại sao thế ? Y ngập tràn bởi Đạo !
Phần 8: Phần cứng và phần mềm
Lập trình sư nói: “Không có gió, cỏ cây bất động. Không có nhu liệu, phần cứng vô dụng”
8.1
Đồ đệ hỏi: “Thưa ! con biết 1 công ty máy tính vĩ đại hơn tất cả công ty còn lại, ví như gã khổng lồ với bầy lùn, mỗi phần nhỏ có thể sánh với thương nghiệp hoàn chỉnh. Sao lại như thế ?”
Lập trình sư nói: “Đừng hỏi ta vớ vẫn thế. Công ty lớn vì nó lớn. Nếu nó chỉ bán phần cứng, không ai mua nó. Nếu nó chỉ bán nhu liệu, vô nhân dụng đến. Nếu nó chỉ là hệ thống bảo trì, thiên hạ xem như bậc nô tỳ. Vì nó kết hợp tất cả, thiên hạ tin đó là trời !
8.2
Hôm nọ lập trình sư đến chỗ lập trình phu. Y đang bận tâm vào trò chơi điện tử cầm tay. Lập trình sư nói: ”Này, ta có thể thử nó được không ?” Lập trình phu (vẻ bất ngờ) trao nó cho lập trình sư.
“Ta thấy thiết bị yêu cầu 3 mức độ: dễ, trung bình, khó. Ngay cả mỗi thiết bị có mức độ chơi khác, khi thiết bị không chế ngự được con người, hay không được con người chế ngự.”
“Thưa ! Con cầu xin đại sư. Làm sao tìm được cách cài đặt thần bí kia” Lập trình phu hỏi, vẻ náo nức
Lập trình sư quăng thiết bị xuống sân, lấy chân nghiền nát. Ngay lúc đó, lập trình phu đạt đại ngộ !
8.3
Lần nọ, một lập trình phu làm việc trên bộ vi xử lý:
“Hãy nhìn tôi đi. Thật là sảng khoái. Tôi có hệ điều hành của chính tôi và thiết bị lưu trữ. Tôi không chia sẻ tài nguyên với bất cứ kẻ nào. Nhu liệu của tôi trước sau như một, sử dụng nhẹ tựa lông hồng. Sao bằng hữu không bỏ thứ đó và tham gia với tôi ?”
Lập trình phu trên máy tính lớn nói:
“Một máy tính lớn trông giống bậc hiền nhân đang tọa thiền giữa trung tâm dữ liệu. Đĩa cứng xếp chồng bất tận ví như đại dương bao la. Nhu liệu của nó như các góc cạnh của viên kim cương. Các chương trình, lần lượt, đi qua như dòng thiên hà chảy xiết. Đó là vì sao tại hạ cảm thấy hoan hỷ trong hiện tại”
Lập trình phu nọ nghe xong, im lặng. Nhưng cả hai đã trở thành bằng hữu cho đến cuối đời.
8.4
Phần cứng gặp phần mềm trên đường đến đỉnh Changtse. Mềm nói: “Các hạ là Âm, còn tôi là Dương. Nếu ta đi cùng nhau sẽ được nổi tiếng, kiếm được nhiều tiền” Và cả hai lên đường, mưu tính đại sự.
Rồi họ gặp Phần Dẻo (Firmware), ăn mặc rách rưới, tay chống cây gậy bước tới: “Đạo tồn tại giữa Âm và Dương. Đạo tĩnh lặng tựa mặt hồ không chút gợn sóng. Đạo không cần tên tuổi, bởi vậy không ai biết sự hiện diện của Đạo. Đạo không cần tiền bạc, Đạo đã hoàn mỹ trong Đạo. Đạo tồn tại trên Thời gian và Tài nguyên !”
Phần cứng, Phần mềm, cảm thấy hổ thẹn, bèn quay về nhà.
Phần 9 – Lời kết
Lập trình sư nói: “Giờ ngươi có thể xuống núi”
Phần 1: Cõi hư vô
Lập trình sư nói:
“Khi ngươi học được cách lấy mã lỗi từ trong đoạn code bắt lỗi, ngươi có thể xuống núi”
1.1
Hình thành một cách thần bí, sinh ra từ hư vô. Đơn độc và bất động nhưng không ngừng vận động. Là nguồn gốc của mọi chương trình. Ta không biết tên nó là gì nên ta gọi nó là Đạo.
Đạo mà hay thì hệ điều hành sẽ hay. Hệ điều hành mà hay thì trình biên dịch sẽ hay. Trình biên dịch mà hay thì chương trình ắt sẽ hay. Chương trình hay thì bá tính an cư lạc nghiệp, vũ trụ thuận hòa.
Đạo bao trùm vạn vật, lan toả thiên hà. Tựa như cơn gió mát giữa mùa viêm nhiệt, như cơn mưa rào giữa tiết hanh khô.
1.2
Đạo sinh máy ngữ, máy ngữ sinh hợp ngữ, hợp ngữ sinh trình dịch, trình dịch sinh ngôn ngữ ngôn ngữ biến hóa vô cùng .
Nay vạn ngữ đã hình thành. Một ngữ dù thấp kém đến đâu vẫn có mục đích của nó. Mỗi ngữ đều thể hiện tính âm dương của phần mềm. Mỗi ngữ đều có một vị trí trong Đạo.
Tuy nhiên nếu được lựa chọn, các ngươi không nên chọn ngữ COBOL để lập trình.
Chú giải
Ngữ: Ngôn ngữ (lập trình)
Máy ngữ: ngôn ngữ máy – machine language
Hợp ngữ: assembly
Trình dịch: compiler
1.3
Khởi thủy từ Đạo. Đạo sinh thời gian và tài nguyên. Nên thời gian và tài nguyên chính là khía cạnh âm dương của Đạo vậy.
Người lĩnh hội được Đạo luôn có đủ thời gian và tài nguyên để đạt được mục đích của mình. Kẻ không lĩnh hội được Đạo thì luôn thiếu. Không thể khác được.
Chú giải
Thời gian và tài nguyên: Resource & Time, hai yếu tố tính size của phần mềm
1.4
Kẻ khôn ngoan khi nghe về Đạo thì làm theo. Kẻ bình thường khi nghe về Đạo thì nghiên cứu. Kẻ ngu dốt khi nghe về Đạo thì cười nhạo.
Nếu không có kẻ cười nhạo chắc hẳn đã không thành Đạo.
Phần 2: Lập trình sư tiền bối
Lập Trình Sư nói:
“Sau ba ngày không lập trình, cuộc sống trở nên vô nghĩa.”
2.1
Bậc Lập Trình Sư tiền bối rất bí ẩn và uyên thâm. Chúng ta không thể hiểu suy nghĩ của họ. Thế nên ta chỉ mô tả đặc điểm của họ.
Họ cẩn thận như loài hồ ly trên mặt nước. Họ cảnh giác như vị tướng giữa trận tiền. Họ tốt bụng như chủ nhà tiếp bậc khách quý. Họ giản dị như gỗ đá. Họ bí ẩn như hồ đen trong hang tối.
Ai có thể biết bí mật trong con tim khối óc của họ.
Câu trả lời nằm trong Đạo.
2.2
Đại sư Turing một đêm nằm mơ thấy mình hóa máy. Khi thức dậy ông thốt lên:
“Không biết ta là Turing nằm mơ hóa máy hay ta là máy đang nằm mơ hóa Turing đây”
2.3
Một lập trình phu từ một đại công ty máy tính sau khi tham dự đại hội phần mềm trở về trình báo với chủ nhân: “Không hiểu lũ lập trình phu công ty khác là loại gì. Chúng cư xử rất thô lỗ và chẳng quan tâm gì đến vẻ bề ngoài. Đầu tóc chúng dài và bù xù, quần áo thì nhăn nhúm và cũ kỹ. Chúng nhảy xổ vào hội trường và gây huyên náo cả buổi.”
Chủ nhân đáp “Đáng lẽ ta không nên đưa ngươi đến đó. Những người ngươi gặp sống ngoài thế giới thực. Họ coi cuộc sống là ngớ ngẩn, tất cả chẳng qua chỉ là một sự trùng hợp tình cờ. Họ đến và đi mà không hề biết đến giới hạn. Họ không quan tâm đến thứ gì khác ngoài chương trình của họ. Vậy thì họ còn bận tâm đến các vấn đề xã hội làm gì?”
“Họ đang sống trong Đạo”
2.4
Đồ đệ hỏi Lập Trình Sư: “Một lập trình phu không bao giờ thiết kế, thảo tài liệu, hay thử nghiệm chương trình. Vậy mà tất cả mọi người biết anh ta đều coi anh ta anh ta là thiên hạ đệ nhất phu. Tại sao vậy?”
Lập Trình Sư trả lời “Kẻ đó đã lĩnh hội được Đạo. Hắn đã thoát khỏi giới hạn của thiết kế, khi hệ thống trục trặc hắn không hề bối rối và tiếp nhận mọi thứ một cách bình thản. Hắn đã thoát khỏi giới hạn của thảo tài liệu, hắn không bao giờ e ngại khi có người khác review code của mình. Hắn đã thoát khỏi giới hạn của thử nghiệm. Mỗi đoạn code hắn viết đều đã sáng sủa, hoàn hảo và đẹp đẽ còn ý nghĩa của chúng đã hiển nhiên như cuộc sống.
Hắn đã đạt đến ngưỡng thần bí của Đạo.”
Phần 3: Thiết kế
Lập Trình Sư nói:
“Khi chương trình đang được test đó là thời điểm quá muộn để thay đổi thiết kế.”
3.1
Một nam nhân tham dự triển lãm tin học. Mỗi ngày khi vào cửa, gã nói với người cảnh vệ:
“Ta là một đại đạo, nổi danh với nghề trộm cắp như thần. Nói trước với ngươi là ta sẽ không rời triển lãm khi chưa chôm được thứ gì”.
Lời nam nhân khiến người cảnh vệ rất đỗi hoang mang, bởi số thiết bị trong triển lãm trị giá đến trăm vạn lượng vàng. Thế nên người cảnh vệ luôn bám sát theo dõi nhất cử nhất động của gã đại đạo. Tuy nhiên gã đại đạo chỉ đi thơ thẩn giữa các gian hàng. Thỉnh thoảng gã cười mỉm một cách khó hiểu.
Khi đại đạo ra khỏi cửa người cảnh vệ liền lôi gã lại để lục soát nhưng chẳng tìm thấy gì.
Hôm sau đại đạo lại đến. Khi đi qua cửa gã thì thầm với cảnh vệ:
“Hôm qua ta đã thoát ra với một đống chiến lợi phẩm, hôm nay có thể sẽ còn nhiều hơn”.
Người cảnh vệ lo sốt vó càng theo sát gã đại đạo, nhưng như hôm trước người cảnh vệ chẳng phát hiện được gì.
Ngày cuối cùng, cảnh vệ không kiềm chế được sự tò mò:
“Thưa ngài đạo chích” cảnh vệ nói “Tôi đã hoang mang đến mất ngủ. Hãy khai sáng cho tôi, thứ mà ngài lấy trộm là gì vậy?”
Đại đạo mỉm cười, “Ta trộm ý tưởng” hắn nói.
3.2
Một Lập Trình Sư viết chương trình không có cấu trúc. Một lập trình phu học theo cũng viết một chương trình không có cấu trúc. Khi đánh giá kết quả, Lập Trình Sư đã chửi mắng lập trình phu vì viết code không có cấu trúc, ông nói “Tuyệt học của đại cao thủ đâu phải để cho kẻ tầm thường? Ngươi cần phải lĩnh hội được Đạo rồi ngươi mới được phép bỏ qua cấu trúc chương trình”.
3.3
Một lập trình phu làm môn khách tại phủ Ngô Vương. Ngô Vương hỏi phu: “Hệ điều hành và phần mềm kế toán, thứ nào dễ thiết kế hơn?”
“Hệ điều hành”, phu đáp.
Ngô Vương ngạc nhiên “Rõ ràng một phần mềm kế toán đơn giản hơn nhiều hơn so với một hệ điều hành”, ông nói đầy vẻ nghi ngờ.
“Không đúng lắm”, phu nói, “khi thiết kế phần mềm kế toán, lập trình phu phải đáp ứng yêu cầu của nhiều người khác nhau: phần mềm phải hoạt động ra sao, báo cáo lên như thế nào, đáp ứng điều kiện gì của luật tô thuế. Ngược lại, hệ điều hành không bị hạn chế vì những ý kiến bên ngoài. Lập trình phu chỉ tìm cách đơn giản nhất để máy thực hiện bài toán. Đó là lý do vì sao hệ điều hành dễ thiết kế”.
Ngô Vương mỉm cười gật đầu “Đúng lắm, thế thứ nào dễ debug hơn?”
Phu không đáp.
3.4
Chủ trại lập trình đến gặp Lập Trình Sư và đưa cho ông tài liệu yêu cầu của một phần mềm mới.
Trại chủ hỏi Lập Trình Sư “Việc thiết kế hệ thống sẽ mất bao lâu nếu ta để năm lập trình phu làm?”
“Mất một năm”, Lập Trình Sư trả lời ngay.
“Nhưng ta cần hệ thống này hoàn thành càng sớm càng tốt. Sẽ mất bao lâu nếu ta cho mười phu tham gia thiết kế?”
Lập trình sư cau mày “Trường hợp này, ngài sẽ cần hai năm”.
“Thế nếu ta đáp 100 phu vào thì sao?”
Lập Trình Sư nhún vai “Sẽ chẳng bao giờ xong” ông nói.
Phần 4: Lập trình
Lập Trình Sư nói:
“Chương trình tốt tự tạo ra thiên đường cho mình, chương trình tồi tự tạo ra địa ngục giam mình”
4.1
Chương trình cần hết sức gọn nhẹ, nên được cấu tạo từ nhiều hàm liên kết như chuỗi ngọc vậy. Tư tưởng và mục đích của chương trình phải liền mạch, không ngắt quãng. Mạch này không nên quá dài, không nên quá ngắn, không nên có biến thừa, không nên có vòng lặp có thể giản lược, không nên thiếu cấu trúc, không nên quá cứng nhắc.
Chương trình cần tuân theo “Luật hạn chế shock”. Luật đó là gì? Đơn giản là khi trả lời người sử dụng, chương trình cần hạn chế tối đa việc gây bất ngờ cho họ.
Một chương trình dù phức tạp đến đâu cũng nên hoạt động như một đơn vị độc lập. Chương trình nên chú trọng đến logic bên trong hơn là giao diện bên ngoài.
* * *
Một chương trình không đáp ứng được những yêu cầu trên sẽ vô cùng lộn xộn. Cách duy nhất để sửa chữa là viết lại chương trình.
4.2
Lập trình phu hỏi Lập Trình Sư: “Thưa, chương trình con viết lúc chạy lúc không mặc dù con đã tuân theo quy tắc lập trình. Con cảm thấy vô cùng bế tắc. Đâu là nguyên nhân thảm cảnh này?”
Lập Trình Sư đáp: “Ngươi bối rối vì ngươi chưa ngộ Đạo. Chỉ có kẻ ngốc mới luôn đòi hỏi một hành động dựa trên lý trí từ phía con người. Vậy thì tại sao ngươi lại đòi hỏi điều đó từ thứ mà con người tạo ra? Máy móc chỉ là máy móc, Đạo mới là hoàn hảo. Quy tắc lập trình chỉ là nhất thời, Đạo mới là mãi mãi. Thế nên để được khai sáng, ngươi phải suy ngẫm về Đạo.”
“Vậy làm sao để con nhận ra là mình đã được khai sáng?”, lập trình phu hỏi.
“Chương trình của ngươi khi đó sẽ chạy trơn tru”, Lập Trình Sư đáp.
4.3
Một Lập Trình Sư giảng về bản chất của Đạo cho một đồ đệ. “Đạo nằm trong tất cả các phần mềm dù phần mềm đó thấp kém đến đâu”, Lập Trình Sư nói.
“Trong máy tính cầm tay có Đạo chứ?”, đồ đệ hỏi.
“Có”, Lập Trình Sư đáp.
“Trong trò chơi điện tử có Đạo chứ?”, đồ đệ tiếp.
“Tất nhiên, kể cả trong trò chơi điện tử cũng có Đạo”, Lập Trình Sư đáp.
“Cả trong hệ điều hành DOS cho máy tính cá nhân nữa chứ?”
Lập trình sư ho một tiếng, người ông khẽ rung lên “Bài giảng hôm nay kết thúc” ông nói.
4.4
Lập trình phu của thái tử viết một phần mềm, ngón tay phu như nhảy múa trên bàn phím. Chương trình khi dịch không có một lỗi và chạy mượt như cơn gió nhẹ.
“Kinh khủng quá” thái tử thốt lên, “Kỹ năng của túc hạ thật hoàn hảo!”
“Kỹ năng ư?”, phu rời mắt khỏi màn hình, “Thứ tại hạ tuân theo là Đạo – vượt trên mọi kỹ năng! Khi tại hạ bắt đầu lập trình, tại hạ thấy toàn bộ bài toán trong một khối hỗn độn. Ba năm sau tại hạ không còn thấy khối hỗn độn nữa. Thay vào đó là những hàm con. Nhưng bây giờ tai không còn thấy gì nữa. Toàn bộ bài toán hoàn toàn không tồn tại trong code. Tri thức của tại hạ trở nên nhàn nhã. Tư tưởng của tại hạ không cần kế hoạch, tự do hoạt động theo bản năng. Tóm lại, chương trình của tại hạ có thể tự lập trình. Thực sự thỉnh thoảng nó cũng gặp một số lỗi lớn. Thấy lỗi xuất hiện, tại hạ chậm rãi, lặng lẽ theo dõi. Rồi tại hạ sửa một dòng code và lỗi lớn vừa xuất hiện đã tan biến như làn khói mỏng. Sau đó tại hạ dịch lại chương trình, ngồi yên tận hưởng cảm giác hân hoan chảy trong cơ thể. Tại hạ nhắm mắt một lúc rồi log off”.
“Giá như lập trình phu của ta ai cũng khôn ngoan như thế!” thái tử nói.
Phần 5: Cài tiến
Lập Trình Sư nói
“Một chương trình, dù chỉ có 3 dòng code, một ngày nào đó vẫn cần phải được cải tiến”
5.1
Cửa giả dùng hay chẳng phí dầu (không cần phải tra dầu vào bản lề nếu dùng cẩn thận)
Suối nguồn chảy xiết há thành ao (suối chảy xiết thì không thể đọng nước như ao tù)
Lời hay khó lọt kẻ cứng đầu (mịa, chỗ này khó dịch thành thơ quá)
Phần mềm mục nát nếu không launch (phần mềm nếu không chạy (launch) thì sớm muộn gì cũng mục nát thôi)
Đó là những bí mật tuyệt vời.
5.2
Quản đốc hỏi một lập trình phu xem anh ta cần bao lâu để hoàn thành chương trình đang viết. “Sẽ xong trong ngày mai” phu đáp.
“Ta cho rằng điều đó là không thể” quản đốc nói, “Thực sự là ngươi cần bao lâu?”
Phu nghĩ một lúc. Rồi anh ta trả lời: “Tại hạ có một số chức năng muốn viết thêm. Những chức năng này sẽ mất ít nhất hai tuần để hoàn thành”.
“Như vậy vẫn là quá ngắn so với dự tính” quản đốc nói “Thôi, chỉ cần ngươi thông báo cho ta khi chương trình hoàn tất là ta mãn nguyện rồi.”
Lập trình phu đồng ý.
Vài năm sau quản đốc rửa tay gác phím, trên đường đến dự tiệc chia tay, quản đốc thấy lập trình phu ngủ gục trên bàn phím. Phu đã lập trình cả đêm.
5.3
Lập trình phu một lần được giao viết một chương trình quản lý tài chính nhỏ.
Lập trình phu làm việc như điên trong nhiều ngày. Khi lập trình sư xem kết quả ông nhận thấy phu đã lập trình cả một chương trình soạn thảo, một đống hàm đồ họa tổng quát, một giao diện trí tuệ nhân tạo nhưng chẳng có dòng code nào về tài chính.
Lập trình sư lập tức chất vấn và phê phán, “Đừng nôn nóng” lập trình phu bực mình “tại hạ sẽ lập trình chương trình tài chính sau cùng” gã nói.
5.4
Đời nào dân tốt bỏ mùa?
Đời nào thầy tốt bỏ qua trò nghèo?
Cha tốt con chẳng đói meo
Phu tốt code chẳng mòn theo tháng ngày
Phần 6: Quản đốc
Lập trình sư nói:
“Lập trình phu nhiều và các quản đốc ít thì môn phái sẽ hưng thịnh”
6.1
Các quản đốc chỉ biết họp bàn, lập trình phu ngồi chỉ biết ngồi chơi. Thì khi tổng quản báo cáo về tình hình thu chi, ngân quĩ sẽ bị sụt giảm. Khi quản đốc chỉ biết nói trăng sao, chung chung, tất cả sẽ bị mây mù bao phủ.
Đấy không phải là đạo lập trình.
Các quản đốc theo sát tình hình lập trình phu không thể ngồi chơi. Thì tổng quản lên kế hoạch, cân đối và mọi thứ đi vào trật tự. Khi mà các quản đốc nắm rõ vấn đề, thì vấn đề sẽ sớm được giải quyết.
Đấy chính là đạo lập trình
6.2
Tại sao lập trình phu kém năng động?
Bởi vì hầu hết thời gian họ dành cho hội họp.
Tại sao lập trình phu nổi loạn.
Bởi vì các quản đốc cản trở họ quá nhiều
Tại sao lập trình phu lần lượt ra đi?
Bởi vì đã đến lúc để họ ra đi.
Đừng giao việc cho những quản đốc ít quyền lực, họ không có giá trị trong bang.
6.3
Khi quản đốc gặp khó khăn, lập trình phu làm việc cho ông ta có sáng kiến mới để tạo ra chương trình ưa chuộng và bán chạy. Kết quả, ông ta giữ vững thế lực của mình.
Quản đốc tặng thưởng nhưng lập trình phu từ chối nó. Anh ta nói : “Tôi viết chương trình bởi vì tôi đam mê, tôi không trông chờ một phần thưởng”.
Quản đốc đưa ra lập luận: “Đây là lập trình phu, anh ta giữ một vị trí khá quan trọng, anh ta hoàn thành tốt mọi việc. Cần phải thăng cấp cho anh ta thành cố vấn của quản đốc”.
Khi nói về vấn đề này, lập trình phu phủ nhận ý kiến này, anh ta nói: “Tôi tồn tại khi tôi lập trình. Nếu tôi được thăng chức tôi sẽ không biết làm gì. Tôi có thể đi đâu? Tôi có một chương trình và tôi làm việc trên nó.”
6.4
Quản đốc đi đến chỗ các lập trình phu và nói với họ: “Các bạn thân mến,giờ làm việc của các bạn đang bắt đầu làm việc từ 9 giờ sáng và kết thúc lúc 5 giờ chiều”. Việc này, gây ra một chút bực bội và gò bó cho các bạn.
Quản đốc lại nói: “Thật ra, trong một vài trường hợp các bạn có thể quyết định giờ làm của mình. Dài hay ngắn ko quan trọng, miễn là các bạn có thể kết thúc dự án đúng như lịch định.” Lập trình phu cảm thấy hài lòng, anh ta bắt đầu công việc vào buổi trưa và kết thúc lúc gần sáng.
Phần 7: Sự thông thái hợp nhất
Lập trình sư nói:
“Ngươi có thể giải thích một chương trình (cho ai), nhưng ngươi không thể tặng hắn ta máy tính biết đọc viết”
7.1
Đồ đệ hỏi lập trình sư: “phương đông có đại cây cấu trúc người đời thường gọi ‘Cơ Quan Đầu Não Liên Hợp’. Nó bành trướng hình thể với phó chủ tịch (vice president) và kế toán phu (accountant). Nó có vô số ghi chú, đại thể tựa như ‘Cút đi!” hay “Lại đây này!”, thiên hạ chẳng ai hiểu nó nói gì. Hằng niên các tên mới được đặt vào nhánh, nhưng vô nghĩa. Thử hỏi thứ vô lý (unnatural entity) như vậy tồn tại để làm chi ?”
Lập trình sư nói: “ngươi nhận biết một đại cấu trúc và bối rối vì nó không có mục đích hợp lý. Dám hỏi ngươi có thể hứng thú với sự xoay chuyển không ngừng của nó ? Sao ngươi không tận hưởng sự nhàn nhã lập trình bên dưới các nhánh cây ấy ? Sao ngươi bị phiền bởi sự vô dụng của nó ?”
7.2
Phương đông có loài cá kình to lớn. Nó hóa thành loài hạc mà cánh bao trùm cả bầu trời. Khi nó bay qua đất liền, nó mang thông điệp từ “Cơ Quan Đầu Não Liên Hợp”, rơi đúng chỗ các lập trình phu, giống như hải cẩu vạch dấu trên bãi biển. Rồi nó men theo gió, quay về cố hương.
‘Lập trình phu mới’ dõi theo cánh chim mà trong lòng ngập tràn nghi vấn. ‘Lập trình phu trung’ kinh hãi, khiếp sợ thông điệp. ‘Lập trình sư’ bình thản, tiếp tục công việc.
7.3
Lão pháp sư từ Tháp Ngà mang đến lập trình sư món đồ cuối cùng để kiểm tra. Pháp sư đẩy cái hộp đen lớn vào văn phòng. Lập trình sư chờ đợi.
“Đây là trạm làm việc tích hợp, phân tán, đa dụng, thiết kế với hệ điều hành độc quyền, 6 đời ngôn ngữ, đa giao diện. Tạo ra nó mất vài trăm năm làm việc. Các hạ có thấy ngạc nhiên không ?” Pháp sư nói.
Lập trình sư trả lời: “Thật quá đỗi kinh ngạc.”
“Cơ Quan Đầu Não Liên Hợp đã ra lệnh rằng hãy sử dụng nó như nền cho các chương trình mới, Ngài có đồng ý không ?” Pháp sư hỏi.
Lập trình sư đáp: “tất nhiên, ta sẽ chuyển nó đến trung tâm dữ liệu ngay!”
Vài ngày sau, 1 đồ đệ thơ thẩn đến văn phòng lập trình sư nói: “Con không tìm thấy danh sách cho chương trình mới, sư phụ biết nó ở đâu không ?”
“Nó xếp thành chồng trên nền của trung tâm dữ liệu”
7.4
Lập trình sư đi từ chương trình này đến chương trình khác không chút lo sợ. Không sự thay đổi trong quản lý nào làm hại y. Y vĩnh viễn không bị sa thải, ngay cả dự án nếu bị hủy. Tại sao thế ? Y ngập tràn bởi Đạo !
Phần 8: Phần cứng và phần mềm
Lập trình sư nói: “Không có gió, cỏ cây bất động. Không có nhu liệu, phần cứng vô dụng”
8.1
Đồ đệ hỏi: “Thưa ! con biết 1 công ty máy tính vĩ đại hơn tất cả công ty còn lại, ví như gã khổng lồ với bầy lùn, mỗi phần nhỏ có thể sánh với thương nghiệp hoàn chỉnh. Sao lại như thế ?”
Lập trình sư nói: “Đừng hỏi ta vớ vẫn thế. Công ty lớn vì nó lớn. Nếu nó chỉ bán phần cứng, không ai mua nó. Nếu nó chỉ bán nhu liệu, vô nhân dụng đến. Nếu nó chỉ là hệ thống bảo trì, thiên hạ xem như bậc nô tỳ. Vì nó kết hợp tất cả, thiên hạ tin đó là trời !
8.2
Hôm nọ lập trình sư đến chỗ lập trình phu. Y đang bận tâm vào trò chơi điện tử cầm tay. Lập trình sư nói: ”Này, ta có thể thử nó được không ?” Lập trình phu (vẻ bất ngờ) trao nó cho lập trình sư.
“Ta thấy thiết bị yêu cầu 3 mức độ: dễ, trung bình, khó. Ngay cả mỗi thiết bị có mức độ chơi khác, khi thiết bị không chế ngự được con người, hay không được con người chế ngự.”
“Thưa ! Con cầu xin đại sư. Làm sao tìm được cách cài đặt thần bí kia” Lập trình phu hỏi, vẻ náo nức
Lập trình sư quăng thiết bị xuống sân, lấy chân nghiền nát. Ngay lúc đó, lập trình phu đạt đại ngộ !
8.3
Lần nọ, một lập trình phu làm việc trên bộ vi xử lý:
“Hãy nhìn tôi đi. Thật là sảng khoái. Tôi có hệ điều hành của chính tôi và thiết bị lưu trữ. Tôi không chia sẻ tài nguyên với bất cứ kẻ nào. Nhu liệu của tôi trước sau như một, sử dụng nhẹ tựa lông hồng. Sao bằng hữu không bỏ thứ đó và tham gia với tôi ?”
Lập trình phu trên máy tính lớn nói:
“Một máy tính lớn trông giống bậc hiền nhân đang tọa thiền giữa trung tâm dữ liệu. Đĩa cứng xếp chồng bất tận ví như đại dương bao la. Nhu liệu của nó như các góc cạnh của viên kim cương. Các chương trình, lần lượt, đi qua như dòng thiên hà chảy xiết. Đó là vì sao tại hạ cảm thấy hoan hỷ trong hiện tại”
Lập trình phu nọ nghe xong, im lặng. Nhưng cả hai đã trở thành bằng hữu cho đến cuối đời.
8.4
Phần cứng gặp phần mềm trên đường đến đỉnh Changtse. Mềm nói: “Các hạ là Âm, còn tôi là Dương. Nếu ta đi cùng nhau sẽ được nổi tiếng, kiếm được nhiều tiền” Và cả hai lên đường, mưu tính đại sự.
Rồi họ gặp Phần Dẻo (Firmware), ăn mặc rách rưới, tay chống cây gậy bước tới: “Đạo tồn tại giữa Âm và Dương. Đạo tĩnh lặng tựa mặt hồ không chút gợn sóng. Đạo không cần tên tuổi, bởi vậy không ai biết sự hiện diện của Đạo. Đạo không cần tiền bạc, Đạo đã hoàn mỹ trong Đạo. Đạo tồn tại trên Thời gian và Tài nguyên !”
Phần cứng, Phần mềm, cảm thấy hổ thẹn, bèn quay về nhà.
Phần 9 – Lời kết
Lập trình sư nói: “Giờ ngươi có thể xuống núi”
Đăng ký:
Bài đăng (Atom)