Xem mẫu
- Lời người dịch:
Đây là bản dịch của tài liệu "How To Become A Hacker" của Eric Steven Raymond. Bản gốc
có ở http://catb.org/~esr/faqs/hacker-howto.html.
Tôi dịch tài liệu này với hy vọng phần nào cung cấp thông tin nhằm mục đích giải toả một số
ngộ nhận về cái gọi là 'hacking'.
Cá nhân tôi cho rằng Eric Raymond có một cái nhìn cực đoan thể hiện qua những điều anh ta
định nghĩa và phân tích trong tài liệu này. Có nhiều điểm anh ta cố tình (hay vô ý), càng về
sau, càng đưa tính chất hacking hướng về việc đóng góp và phát triển cộng đồng mở nguồn
và đây là một cái nhìn (theo tôi là) thiên vị. Tuy vậy, tài liệu này của Eric Raymond đã đưa ra
những điểm giá trị về cái gọi là "thái độ" và khả năng tư duy một hacker. Những điểm bàn về
"phong cách" và thói quen của hackers là những điểm lý thú.
Theo tôi, hacker và hacking không có biên giới rõ ràng về hệ điều hành, về software, về môi
trường.... Hacking là việc thay đổi tính chất và khả năng làm việc của một sự thể và "sự thể"
này không có giới hạn Microsoft, Linux, BSD, Solaris.... Hacking cũng không nhất thiết phải
là những đóng góp cho cộng đồng mã nguồn mở. Bất cứ nơi đâu, hacking để giải quyết trở
ngại, để cải thiện công việc, để nâng cao chất lượng.... đều là hacking. Rất mong bạn đọc
với cái nhìn tỉnh táo.
Tại sao có tài liệu này?
Là chủ biên của mục http://www.ctb.org/jargon và một số tài liệu nổi tiếng có tính chất tương
tự, tôi thường nhận rất nhiều e-mail từ các newbies hỏi cách "làm sao tôi có thể học để tr ở
thành cao thủ hacker -1-?" Quay về năm 1996, tôi thấy chẳng có FAQ -2- hoặc tài liệu trên
web giải đáp câu hỏi tuyệt đối cần thiết đó, bởi thế tôi bắt đầu với tài này. Ngày nay, rất
nhiều hackers cho rằng tài liệu này là một kim chỉ nam -3-.
Nếu bạn đang đọc một bản lưu nào đó của tài liệu này, phiên bản hiện lưu có ở:
http://catb.org/~esr/faqs/hacker-howto.html
Có khá nhiều bản dịch của tài liệu này cho các thứ tiếng: Ả Rập, Bulgary, Catalan, tiếng Hoa
(giản thể), Đan Mạch, Hoà Lan, Farsi (tiếng Iran), Phần Lan, Đức, tiếng Do Thái thuộc nhánh
Hy Lạp, Ý, Nhật, Na Uy, Ba Lan, Bồ Đào Nha, Romania, Nga, Tây Ban Nha, Thổ Nhĩ Kỳ và
Thụy Điển. Xin lưu ý vì bản chính thỉnh thoảng có thay đổi nên các tài liệu dịch có thể bị lỗi
thời ở mức nào đó.
Năm chấm trong chín hình vuông được dùng để trang trí trên tài liệu này được gọi là glider.
Nó là một mẫu đơn giản có các giá trị đáng ngạc nhiên của một quy trình simulation toán học
được gọi là
http://dmoz.org/Computers/Artificial_Life/Cellular_Automata/Conway's_Game_of_Life/ đã làm
nhiều hackers kinh ngạc nhiều năm qua. Tôi nghĩ nó có thể dùng để làm một biểu tượng tuyệt
vời cho những điều hackers ưa thích - tính trừu tượng -4-, thoạt tiên có vẻ mang một chút bí
ẩn, nhưng đó là cổng vào một thế giới đầy logic của riêng nó. Bạn có thể đọc thêm về biểu
tượng glider ở http://www.catb.org/~esr/hacker-emblem/.
- Hacker là gì?
Trên mục http://www.catb.org/jargon có chứa một mớ định nghĩa cho từ 'hacker', hầu hết liên
quan đến khả năng kỹ thuật và cái sướng sau khi giải quyết những trở ngại và vượt qua các
giới hạn. Nếu bạn muốn biết cách trở thành một hacker, chỉ có hai định nghĩa là xác hợp.
Có một cộng đồng, một nơi có thứ văn hoá chia xẻ của các chuyên viên lập trình và các cao
thủ mạng từ nhiều thập kỷ trước, từ thời các tiểu vi tính -5- lần đầu được tung ra và từ thời
ARPAnet còn hoang sơ. Các thành viên của cộng đồng này tạo ra từ 'hacker'. Hackers xây
dựng nên Internet. Hackers tạo ra hệ điều hành UNIX ngày nay. Hackers điều quản Usenet.
Hackers làm cho World Wide Web hoạt động. Nếu bạn là một phần của cộng đồng này, nếu
bạn đã đóng góp cho nó và những người trong cộng động này biết đến bạn, gọi bạn là 'hacker'
thì bạn chính là hacker.
Tư duy của một hacker không giới hạn trong khuôn khổ văn hoá 'software-hacker'. Những
người này đã áp dụng thái độ của hacker vào những việc khác ví dụ như trong điện tử hoặc
trong âm nhạc - thật sự ra, bạn có thể thấy điều này ở đẳng cấp cao nhất của lãnh vực khoa
học hay nghệ thuật. Dân Software hackers nhận ra được mối liên hệ đồng cảm ở những lĩnh
vực khác và có thể gọi họ (những người ở những lĩnh vực khác) là 'hackers' - vài người cho
rằng bản sắc tự nhiên của hacker thật sự độc lập với thể trạng mà hackers làm việc và tiếp
cận -6-. Phần còn lại của tài liệu này chúng ta sẽ tập trung vào khả năng và thái độ của
software hackers và các truyền thống của nền văn hoá chia xẻ đã tạo ra từ 'hacker'.
Có một nhóm người khác luôn tự cho họ là hackers một cách ầm ĩ nhưng thật sự họ không
phải là hackers. Những người này (phần lớn là các cậu ở tuổi đang lớn) là những người "ghi
bàn" được một vài cú thâm nhập vào máy tính và lừa lọc hệ thống điện thoại. Những hackers
thực thụ gọi loại người này là 'crackers' và họ (hackers) chẳng muốn dính dáng gì đến đám
người này. Hackers thực thụ hầu hết cho rằng đám 'crackers' lười nhác, vô trách nhiệm và
không thông minh cho lắm. Việc có thể bẻ gãy cơ chế bảo mật chẳng biến anh thành một
hacker; cái này chẳng khác gì khả năng 'đề' xe (không cần chìa) -7- biến anh thành một kỹ sư
xe máy. Không may, quá nhiều phóng viên và cây viết đã bị ngu hoá với việc dùng từ 'hacker'
để mô tả crackers; điều này làm cho các hackers thứ thiệt cực kỳ khó chịu.
Điểm khác biệt căn bản là: hackers xây dựng, crackers đánh đổ.
Nếu bạn muốn trở thành hacker, tiếp tục đọc. Nếu bạn muốn trở thành cracker, hãy đến với
news:atl.2600 newsgroup và sẵn sàng lao vào để tìm thấy rằng bạn không khôn ngoan như
bạn tưởng. Và đó là bấy nhiêu điều tôi muốn nói về crackers.
- Thái độ của Hacker
Hackers giải quyết trở ngại và xây dựng vật thể, và họ tin tưởng ở tự do và tự nguyện chia
xẻ, giúp đỡ lẫn nhau. Để được tiếp nhận như một hacker, bạn phải tự trọng như thể chính
bạn có thái độ này. Và để tự trọng như thể bạn có thái độ ấy, bạn phải thật sự tin vào thái độ
ấy -8-.
Nhưng nếu bạn nghĩ rằng chỉ cần bồi đắp thái độ để được tiếp nhận vào xã hội này thì bạn
đã ngộ nhận. Trở thành một người tin tưởng vào những điều này là điều quan trọng cho bạn -
bởi lẽ, từ việc giúp đỡ, chính bạn sẽ học hỏi và duy trì động lực cho chính bạn. Cũng như với
các lĩnh vực nghệ thuật, cách hữu hiệu nhât để trở thành bậc thầy là bắt đầu với tư duy của
bậc thầy - không chỉ ở khía cạnh trí thức mà còn ở khía cạnh tinh thần.
Hoặc, như một đoản thơ Thiền như sau:
Theo lối dẫn:
ngẩng nhìn thầy,
đi theo thầy,
đi cùng thầy,
nhìn thấu thầy,
trở thành thầy.
Thế, nếu bạn muốn trở thành hacker, lặp đi, lặp lại các điều sau cho đến khi bạn tin vào
chúng:
1. Thế giới đầy những trở ngại kỳ lạ đang chờ được giải quyết.
Làm một hacker có nhiều điều vui, nhưng những điều vui này đòi hỏi rất nhiều cố gắng. Cố
gắng tạo động lực. Các vận động viên tìm thấy động lực từ những điểm thú vị trong việc
khiến cho cơ thể của họ hoạt động, trong việc tự đẩy họ vượt qua chính giới hạn thể lực
hiện có. Tương tự, để làm một hacker bạn cần bắt lấy những niềm thích thú nho nhỏ từ việc
giải quyết được những trở ngại, tinh luyện khả năng và thực tập trí thông minh của mình.
Nếu bạn không phải là dạng người có cảm nhận những chuyện này một cách tự nhiên, bạn
sẽ cần biến mình thành một người như thế thì mới có thể trở thành hacker. Nếu không, bạn
sẽ thấy năng lượng hacking của mình bị những thứ dễ làm chi phối như tình ái, tiền bạc và
danh tiếng.... cắn xé tơi bời.
(Bạn cũng cần phát triển một thứ niềm tin với khả năng học hỏi của chính mình - một niềm
tin, ngay cả có thể bạn không biết mọi điều cần thiết để giải quyết trở ngại, nếu bạn chỉ
cần lao vào để giải quyết một mảnh trở ngại rồi học hỏi từ điểm ấy, bạn sẽ học đủ để giải
quyết mảnh kế tiếp - và như thế, cho đến khi bạn hoàn tất.)
2. Không có trở ngại nào nên được giải quyết hai lần
Những khối óc sáng tạo là những thứ quý báu, có giới hạn. Chúng không nên bị phí phạm
trong việc tái tạo những thứ đã có sẵn -9- trong lúc có quá nhiều trở ngại lạ kỳ đang đợi được
giải quyết ngoài kia.
Để có thái độ như một hacker, bạn cần tin rằng thời gian suy gẫm của các hackers khác là
- những thứ quý giá - quý giá đến nỗi, đối với bạn nó trở thành trách nhiệm đạo đức để phải
chia xẻ thông tin, giải quyết trở ngại và sau đó chia xẻ giải pháp để giúp những hackers khác
có thể giải quyết những trở ngại mới thay vì họ phải thường xuyên tái xét những trở ngại đã
được (ai đó) giải quyết.
Tuy vậy, nên nhớ là câu "không có trở ngại nào nên được giải quyết hai lần" không ẩn dụ
rằng mọi giải pháp hiện có đều quý giá, hoặc chỉ có một giải pháp đúng đắn cho một trở
ngại. Thông thường, chúng ta nghiên cứu một trở ngại nào đó chưa từng đối diện trước đây
bằng cách hình thành một giải pháp tức thời. Điều này không có gì sai và thường là cần thiết
để giúp quyết định một cách tốt hơn. Điều không hay nằm ở chỗ trở ngại thuộc giới hạn kỹ
thuật trá hình, pháp luật hoặc các hàng rào cản tập đoàn (như mã nguồn đóng) làm ngăn cản
giải pháp tốt được tái dụng và buộc mọi người phải tái tạo lại những thứ đã có sẵn.
(Bạn không cần phải tin rằng bạn bị buộc phải chia xẻ mọi sản phẩm sáng tạo của bạn, dẫu
rằng những hackers làm việc này là những người được nể trọng nhất trong đám hackers. Việc
duy trì thu nhập cho thức ăn, tiền trọ, chi phí cho máy tính là chuyện cần thiết. Bạn dùng khả
năng hack của mình để hỗ trợ gia đình hoặc ngay cả làm giàu, đều tốt cả, miễn sao bạn đừng
quên sự gắn bó của bạn đối với cái đẹp bạn tạo ra và đối với những bạn hackers đồng hành
cũng đang làm như thế).
3. Chán nản và đơn điệu là ám chướng
Hackers (và những người sáng tạo nói chung) không nên bị cảm thấy chán nản hoặc đơn điệu
trong khi làm những việc mang tính lặp đi, lặp lại một cách ngu xuẩn, bởi vì khi cảm giác này
xảy ra có nghĩa họ không làm những điều họ đáng làm - giải quyết trở ngại. Sự lãng phí này
làm hỏng mọi người. Bởi thế, chán nản và đơn điệu không chỉ không thú vị mà còn là ám
chướng.
Để có thái độ như một hacker, bạn cần tin vào điều này, đủ để tự động hoá những công việc
nhàm chán càng nhiều càng tốt, không chỉ cho riêng bạn mà cho mọi người (đặc biệt cho
những hackers khác).
(Có một ngoại lệ hiển nhiên cho điều (số 3) này. Hackers đôi khi làm những chuyện có vẻ
như lặp đi lặp lại hoặc chán phèo để đóng vai như một quan sát viên cho công việc "tẩy não"
hoặc để thu thập kiến thức hoặc kinh nghiệm nào đó không thể có được nếu không làm như
thế. Nhưng việc này tùy người - chẳng có ai nên bị đẩy vào vị thế chán chường.)
4. Tự do là điều tốt
Hackers có bản tính tự nhiên là những người chống cửa quyền. Bất cứ ai có thể ra lệnh cho
bạn đều có thể ngăn bạn làm công việc giải quyết trở ngại mà bạn đam mê - và, bộ não của
những kẻ có quyền lực thường nảy ra những lý do ngu xuẩn và buồn nôn để ngăn trở bạn.
Thế nên, thái độ của kẻ cửa quyền cần được công kích bất cứ nơi nào bạn thấy có, hãy làm
cho nó tan biến khỏi bạn và những hackers khác.
(Đây không phải tương tự như chống đối luật pháp. Trẻ con cần được uốn nắn và tội phạm
cần được kiểm chế. Một hacker có thể đồng ý một thể dạng luật pháp để đổi lấy cái gì đó
anh ta muốn thay vì thúc thủ tuân lệnh. Nhưng đây là chuyện có giới hạn, mặc cả tỉnh táo;
- một dạng chấp nhận trao đổi bán chính thức giữa kẻ có quyền lực và bạn.)
Những kẻ có quyền lực thích bồi đắp khả năng ngăn cản và tính bí mật. Và thế, họ không tin
vào thái độ tự nguyện hợp tác và tự nguyện chia xẻ thông tin - họ chỉ muốn 'hợp tác' theo
kiểu họ khống chế. Bởi thế, để có thái độ như một hacker, bạn cần phát triển phản xạ chống
trả với thái độ ngăn cản, thái độ bí hiểm bằng vũ lực hoặc ép buộc. Bạn cần có ý chí để làm
chuyện này.
5. Thái độ không thay thế thực chất khả năng
Để làm một hacker, bạn cần bồi đắp một số thái độ như thế. Nhưng chỉ có thái độ sẽ không
đủ biến bạn trở thành một hacker hoặc một vận động viên vô địch hoặc một ngôi sao nhạc
rock. Trở thành một hacker cần kiến thức, thực hành, bền bỉ và chăm chỉ.
Bởi thế, bạn cần hoài nghi 'dáng điệu' và thật sự tôn trọng thực chất khả năng. Hackers không
để cho những kẻ làm dáng lãng phí thời gian của họ, ngược lại (hackers) thường tôn thờ thực
chất khả năng - đặc biệt là thực chất khả năng hacking và thực chất khả năng làm bất cứ
việc gì có giá trị. Thực chất khả năng cho những nhu cầu ích lợi (mà không hiếm người đạt
được) là điều rất tốt, và thực chất khả năng cho những nhu cầu đòi hỏi sự linh mẫn của trí
tuệ, khéo léo và độ tập trung là tốt nhất.
Nếu bạn đã có sẵn thực chất khả năng, bạn sẽ phát triển nó một cách thích thú - chăm chỉ và
chuyên cần sẽ tạo nên trạng thái căng thẳng và sẽ không có chỗ cho sự uể oải. Thái độ này là
điểm tối quan trọng để trở thành một hacker.
Kỹ năng hacking căn bản
Thái độ cần thiết của hacker là điểm quan trọng nhưng kỹ năng lại càng quan trọng hơn. Thái
độ không thể thay thế cho khả năng thật sự, và một số "đồ nghề" -10- căn bản mà bạn phải
có trước khi một hacker nào khác gọi bạn là hacker.
"Đồ nghề" này thay đổi dần dần theo thời gian khi công nghệ hình thành những cái mới và
làm cho cái cũ trở nên vô dụng. Ví dụ, trước đây thường bao gồm việc lập trình bằng ngôn
ngữ của máy -11- và gần đây, việc dùng HTML chẳng hạn không còn đòi hỏi này nữa. Ngay
lúc này 'đồ nghề' gồm có những thứ khá rõ ràng như sau:
1. Học lập trình
Hiển nhiên đây là điểm nền móng cho kỹ năng hacking. Nếu bạn không biết một ngôn ngữ
lập trình nào, tôi đề nghị bạn bắt đầu với Python. Ngôn ngữ này được thiết kế gọn, sạch, tài
liệu đầy đủ và khá nhẹ nhàng cho những người bắt đầu. Mặc dù thích hợp cho ngôn ngữ đầu
tiên, nó không phải là đồ chơi; nó rất mạnh mẽ, linh động và có thể thích hợp cho các công
trình lớn. Tôi đã viết một bài chi tiết http://www.linuxjournal.com/article.php?sid=3882 (đánh
- giá Python). Các bài http://www.python.org/doc/Intros.html có chất lượng có ở
http://www.python.org.
Java cũng là một ngôn ngữ tốt để học lập trình. Nó khó hơn Python nhưng cho phép tạo code
nhanh hơn Python. Tôi cho rằng nó là một chọn lựa rất tuyệt cho ngôn ngữ thứ nhì. Không
may, phần nền của Java vẫn thuộc dạng "đóng". Điều này không phải là vấn đề gì với chính
ngôn ngữ Java cả, nhiều bộ biên dịch nguồn mở chất lượng cao cho Java có trên mạng; vấn
đề thật sự với Java là các lớp thư viện phải luôn luôn đi kèm với ngôn ngữ -12-. Các lớp thư
viện nguồn mở cho Java thường bị tụt lùi sau bộ thư viện của Sun. Bởi thế, nếu bạn chọn
Java, nên chọn một ứng dụng nguồn mở thay vì bị lệ thuộc vào nguồn đóng của Sun.
Nhưng coi chừng một điều, bạn sẽ không đạt được mức kỹ năng cần thiết của một hacker
hoặc ngay cả một lập trình viên nếu bạn chỉ biết có một hoặc hai ngôn ngữ - bạn nên học
cách suy nghĩ đến những trở ngại lập trình một cách tổng quát, không phụ thuộc vào bất cứ
ngôn ngữ nào. Trở nên một hacker thật sự, bạn cần đi đến chỗ bạn có thể học một ngôn ngữ
mới trong giới hạn tính theo ngày bằng cách liên hệ từ những gì có trong tài liệu chỉ dẫn và
những gì bạn đã biết. Điều này có nghĩa bạn nên học rất nhiều ngôn ngữ.
Nếu bạn muốn đi sâu vào lập trình một cách nghiêm túc, bạn sẽ phải học C, ngôn ngữ cốt lõi
của Unix. C++ liên hệ rất gần với C; nếu bạn đã biết cái này, học cái kia sẽ không khó. Tuy
vậy, chẳng có cái nào tốt hơn để học trước cả. Và thật ra, càng tránh lập trình trên C, bạn
càng năng suất.
C rất hiệu năng và hiệu dụng cho tài nguyên của máy. Không may C đòi hỏi bạn phải thực
hiện rất nhiều công tác quản lý tài nguyên ở mức cấp thấp và bằng tay (trong phần bộ nhớ
chẳng hạn) để đạt được mức hiệu năng đó. Tất cả mã nguồn ở mức cấp thấp rất phức tạp
và dễ tạo lỗi, chúng dễ hao tổn cả khối thời gian của bạn cho việc tìm lỗi. Với độ mạnh mẽ
của máy tính hiện nay, việc đánh đổi (thời gian) thế này là điều không hay - dùng một thứ
ngôn ngữ tốn kém thời gian của máy, thiếu hiệu xuất nhưng lại tiết kiệm thời gian của bạn
có lẽ là chọn lựa thông minh hơn. Như: Python chẳng hạn.
Những ngôn ngữ khác cũng không kém phần quan trọng đối với hackers như
http://www.perl.com/ và http://www.lisp.org/. Perl đáng để học vì lý do thực dụng; nó được sử
dụng rộng rãi cho ứng dụng web và công tác quản lý hệ thống, thế nên, ngay cả bạn không
bao giờ viết Perl, bạn cũng nên học cách đọc nó. Nhiều người sử dụng Perl để tránh dùng C
với những công việc không đòi hỏi mức hiệu năng của C, tôi nghĩ nên dùng Python thì thích
hợp hơn. Bạn cần phải hiểu code của những người khác.
LISP đáng để đề cập đến vì một lý do khác - đó là cảm giác "phê" khi bạn nắm bắt được nó.
Cảm giác này sẽ biến bạn trở thành một lập trình viên tốt hơn, ngay cả bạn không bao giờ
dùng LISP. (Bạn có thể nắm bắt được kinh nghiệm dùng LISP khá dễ dàng bằng cách viết và
điều chỉnh chế độ điều chỉnh cho Emacs -13- hoặc Script-Fu plugin cho GIMP -14-.)
Tốt nhất là nên học luôn cả năm ngôn ngữ: Python, C/C++, Java, Perl và LISP. Ngoài lý do
chúng là những ngôn ngữ lập trình quan trọng nhất cho hacking, chúng còn đại diện cho các
hướng tiếp cận rất khác nhau cho việc lập trình và mỗi ngôn ngữ này sẽ giáo dục bạn bằng
- những cách có giá trị khác nhau.
Tôi không thể cho bạn cách thức học từng ngôn ngữ ở đây - đây là một thứ kỹ năng phức tạp.
Tôi có thể cho bạn biết rằng những cuốn sách và các khoá học cũng sẽ không chỉ cho bạn
cách rèn luyện (rất nhiều, có thể nói là hầu hết các hackers chiến nhất là những người tự
học). Bạn có thể học tính năng của ngôn ngữ - phần kiến thức - từ sách vở, nhưng phần tư
duy giúp chuyển hoá kiến thức vào kỹ năng thật sự trong đời sống chỉ có thể tìm được qua
thực hành và rèn luyện. Đó là những thứ (a)đọc code và (b) viết code.
Peter Norvig là một trong những hackers đứng đầu của Google -15- và là đồng tác giả của
cuốn sách giáo khoa phổ biến nhất cho về AI -16-, đã viết một tài liệu sáng giá có tên gọi là
http://www.norvig.com/21-days.html (tự dạy lập trình trong mười năm). Đây là "công thức để
thành công trong lập trình" của ông ta, một tài liệu đáng chú ý.
Học cách lập trình giống như học cách viết một thứ ngôn ngữ tự nhiên. Cách tốt nhất là đọc
một ít những thứ đã được các bậc thầy viết, rồi tự bạn viết cái gì đó, đọc nhiều hơn nữa,
viết thêm chút nữa, đọc nhiều hơn nữa, viết nhiều hơn nữa.... và lặp lại cho đến khi những
thứ bạn viết bắt đầu hình thành sức mạnh và giá trị mà bạn thấy được từ những mẫu người
bạn noi theo.
Trước đây, tìm code hay để đọc là điều rất khó bởi vì rất ít có chương trình đủ lớn mà có luôn
mã nguồn để các hackers mới gia nhập có thể đọc và táy máy. Điều này đã thay đổi rất nhiều;
các chương trình mở nguồn, các công cụ lập trình và các hệ điều hành (tất cả được hackers
xây dựng) lúc này có sẵn khắp nơi. Điều này dẫn tôi đến phần tiếp theo...
2. Lấy ngay một cái Unix nguồn mở và học cách sử dụng và điều khiển nó.
Tôi giả định bạn có máy tính cá nhân hoặc có thể sử dụng một cái ở đâu đó. (Hãy suy gẫm
chốc lát để cảm thấu điều này. Văn hoá hacker nguyên thủy biến thiên từ lúc máy tính thật
đắt tiền đến nỗi rất nhiều người không thể làm chủ nổi một cái). Bước đầu tiên và quan
trọng nhất cho bất cứ newbie nào để có thể vươn đến kỹ năng của hackers là lấy ngay một
bản Linux hoặc một bản BSD-Unix hoặc OpenSolaris, cài nó lên máy và chạy nó.
Vâng, có nhiều hệ điều hành khác trên thới giới ngoài Unix nhưng chúng được cung cấp ở
dạng binary - bạn không thể đọc được mã nguồn và bạn không thể điều chỉnh nó. Cố học
hack trên máy chạy Microsoft Windows hoặc trên một máy chạy hệ điều hành nào thuộc dạng
mã đóng cũng giống như cố học cách khiêu vũ trong lúc cơ thể đang bó bột -17-.
Có thể dùng MacOS X nhưng chỉ một phần của hệ điều hành là nguồn mở - bạn hẳn sẽ sa
vào hàng đống bế tắc và bạn cần cẩn thận để tránh lâm vào thói quen xấu là phải dựa dẫm
vào mã nguồn có bản quyền của Apple. Nếu bạn tập trung vào phần Unix bên dưới, bạn có
thể học được vài điều hữu dụng.
Unix là hệ điều hành của Internet. Trong khi bạn có thể học cách sử dụng Internet mà không
cần biết đến Unix, bạn lại không thể là một Internet hacker nếu không hiểu Unix. Vì lý do
này, văn hoá hacker ngày nay tập trung khá mạnh ở Unix. (Điều này không phải lúc nào cũng
đúng, và một số hacker thời trước vẫn không vui với chuyện này nhưng mối quan hệ cộng
- sinh giữa Unix và Internet đã trở nên đủ mạnh khiến cho cả bắp thịt Microsoft không đủ sức
làm xước được nó).
Thế, mang Unix vào câu chuyện - bản thân tôi thích Linux nhưng có những cách khác (và
vâng, bạn có thể chạy cả Linux và Microsoft Windows trên cùng một máy). Học nó. Chạy nó.
Máy mó nó. Trao đổi trên Internet với nó. Đọc mã nguồn. Chỉnh mã nguồn. Bạn sẽ có những
công cụ lập trình (bao gồm C, LISP, Python và Perl) tốt hơn bất cứ một hệ điều hành
Microsoft nào mơ tưởng để có được. Bạn sẽ vui thích, bạn sẽ bồi đắp thêm kiến thức nhiều
hơn mà bạn có thể hình dung (bạn chỉ có thể thấy) lúc nào đó, khi nhìn lại trọn bộ quá trình
như một hacker bậc thầy.
Để có thêm thông tin về việc học Unix, xem http://catb.org/~esr/faqs/loginataka.html. Bạn
cũng có thể cần xem http://catb.org/~esr/writings/taoup/.
Để mó tay vào Linux, xem http://www.linux.org/; bạn có thể tải đồ từ đó hoặc (tốt hơn nữa)
tìm một nhóm người dùng ở địa phương giúp bạn cho việc cài đặt. Đối với người dùng mới
với Linux. tất cả Linux Distribution đều tương tự như nhau.
Bạn có thể tìm thông tin giúp đỡ và tài nguyên về BSD Unix ở http://www.bsd.org.
Tôi cũng đã viết một bài tổng luận về http://en.tldp.org/HOWTO/Unix-and-Internet-
Fundamentals-HOWTO/index.html (căn bản về Unix và Internet).
(Ghi chú: Tôi thật lòng không đề nghị việc tự cài Linux hoặc BSD một mình nếu như bạn là
newbie. Với Linux, tìm một nhóm người dùng Linux ở địa phương bạn để được giúp đỡ.)
3. Học cách sử dụng World Wide Web và viết HTML
Hầu hết hackers xây dựng những thứ giúp cho công việc không hiển hiện cụ thể, họ giúp
điều khiển nhà máy, văn phòng và trường đại học mà chẳng để lại ảnh hưởng cụ thể gì đến
đời sống của những người không phải là hacker. Web lại là một ngoại lệ to lớn, web là một
món đồ chơi khổng lồ và lấp lánh khiến cho ngay cả đám chính trị gia -18- cũng phải thừa
nhận rằng nó đã thay đổi thế giới. Chỉ cần mỗi lý do này (và nhiều lý do đáng giá khác nữa)
đủ để bạn cần học cách làm việc với Web.
Điều này không có nghĩa học cách sử dụng trình duyệt (ai cũng làm được việc này), nhưng
học cách viết HTML, thứ ngôn ngữ hình thành Web. Nếu bạn không biết cách lập trình, viết
HTML sẽ dạy bạn một số thói quen tinh thần ích lợi cho việc học lập trình. Thế nên, làm vài
trang web. Cố bám vào XHTML, một dạng HTML sạch hơn dạng HTML cổ điển. (Có rất
nhiều bài thực tập hay trên Web; http://htmldog.com.
Nhưng chỉ có vài trang chủ thì chẳng đủ thiếu gì để biến bạn trở thành một hacker. Web tràn
ngập những trang chủ. Chúng hầu hết vô ích, ngập ngụa trang trí nhưng hoàn toàn không có
nội dung - rất hào nhoáng, rất ngập ngụa, bạn phải biết, sự ngập ngụa này y hệt như nhau
(xem thêm ở http://catb.org/~esr/html-hell.html (trang HTML gớm giếc).
Để đáng công sức, trang của bạn phải có nội dung - nó phải lý thú và/hoặc hữu dụng cho các
- hackers khác. Điều này dẫn dắt chúng ta đến phần kế tiếp...
4. Nếu bạn không có tiếng Anh ở mức đủ dùng, học.
Một người Mỹ và nói tiếng Anh như tôi, trước đây tôi đã từng ngần ngại khi đề nghị điều
này, e rằng sẽ bị ngộ nhận như một thứ văn hoá chủ nghĩa đế quốc. Nhưng hàng loạt những
người có tiếng mẹ đẻ là tiếng Anh và các thứ tiếng khác đã thúc đẩy tôi nên nhấn mạnh rằng
tiếng Anh là thứ ngôn ngữ dùng để làm việc của xã hội hacker và của Internet, và bởi thế, bạn
cần phải biết nó để có thể làm việc và sinh hoạt trong cộng đồng hacker.
Quay lại khoảng 1991, tôi được biết có nhiều hackers dùng tiếng Anh (là thứ ngôn ngữ thứ
nhì của họ) trong các cuộc thảo luận kỹ thuật ngay cả bằng khẩu âm của tiếng mẹ đẻ. Tôi
được cho biết khi đó tiếng Anh có từ vựng kỹ thuật phong phú hơn nhiều ngôn ngữ khác nên
nó trở thành chọn lựa thích hợp. Cho những lý do tương tự, các bản dịch từ những sách kỹ
thuật được viết bằng tiếng Anh thường thiếu sâu sát (khi chúng được hoàn thành hay chăng
nữa).
Linus Torvalds, người Phần Lan, chú thích mã nguồn của anh ta bằng tiếng Anh (hiển nhiên
anh ta chưa hề làm khác hơn thế - chú thích bằng tiếng Phần Lan). Sự nhuần nhuyễn tiếng
Anh của anh ta là một trọng điểm cho phép anh triệu tập cộng đồng phát triển nhu liệu của
toàn thế giới cho Linux. Đây là một ví dụ đáng để noi theo.
Là một người có tiếng Anh là tiếng mẹ đẻ không bảo đảm bạn có đủ kỹ năng ngôn ngữ để
hoạt động như một hacker. Nếu lối viết của bạn thuộc dạng thiếu hụt, không có văn phạm và
đầy lỗi chính tả sẽ khiến cho nhiều hackers khác (kể cả tôi) có xu hướng làm ngơ bạn. Dù
rằng lối viết bừa bãi không hẳn là biểu thị của lối suy nghĩ lộn xộn nhưng chúng tôi thưòng
thấy mối liên hệ này khá gần - và chúng tôi chẳng có chỗ cho những người có lối suy nghĩ
lộn xộn. Nếu bạn chưa thể viết một cách mạch lạc, hãy rèn luyện để viết như thế.
Vị thế trong xã hội Hacker
Tương tự như hầu hết các dạng xã hội không dùng tiền nong làm tiêu chuẩn, hacker hoạt
động dựa trên uy tín. Bạn đang cố giải quyết một số trợ ngại lý thú, nhưng chúng thật sự lý
thú thế nào, và liệu những giải pháp của bạn thật sự tốt, có cái gì để chỉ có những người
đồng đẳng kỹ thuật với bạn hoặc những người ở mức cao hơn mới có thể đủ sức đánh giá
những giải pháp này?
Theo đó, khi bạn chơi trò chơi hacker, bạn học cách ghi bàn chủ yếu dựa trên nền tảng các
hackers khác nghĩ thế nào về kỹ năng của bạn (đây là lý do tại sao bạn không thực sự là một
hacker cho đến khi khác hackers khác thường xuyên gọi bạn là một hacker). Sự thật này trước
đây bị lu mờ bởi hình ảnh hacking như một hoạt động đơn độc, và cũng bởi trong thâm tâm
các hacker chống lại những quan điểm cho rằng động cơ làm việc là niềm kiêu hãnh hoặc sự
- công nhận từ bên ngoài (quan điểm này đã dần dần đã bị suy thoái từ những năm cuối thập
niên 1990 nhưng vẫn còn ảnh hưởng ít nhiều).
Một cách cụ thể, sinh hoạt hacker là một thứ mà những chuyên gia xã hội học -19- gọi là văn
hoá cho tặng -20-. Bạn đạt được vị trí và uy tín trong xã hội này không phải do đè nén những
người khác, không phải vì ngoại diện đẹp đẽ mà cũng chẳng phải do có những thứ vật chất
khiến những người khác thèm muốn nhưng vì sự hiến tặng. Cụ thể hơn, do bạn hiến tặng
thời gian của bạn, khả năng sáng tạo của bạn và hiến tặng cả kinh nghiệm của bạn.
Có năm điều căn bản bạn có thể làm để được các hackers khác kính trọng:
1. Viết chương trình mã nguồn mở
Điều đầu tiên (cốt tủy và truyền thống nhất) là viết những chương trình khiến những hackers
thấy vui và hữu dụng, và hiến tặng mã nguồn của chương trình cho cả cộng đồng hacker sử
dụng.
(Trước đây chúng tôi gọi nó là "free software", nhưng từ này làm nhiều người lầm lẫn và
không xác định rõ "free" là thế nào. Hầu hết bây giờ chúng tôi dùng cụm từ
http://www.opensource.org/ software).
Những đại cao thủ -21- trong thế giới hacker là những người đã viết các chương trình to lớn,
có khả năng đáp ứng những nhu cầu rộng lớn và hiến tặng chúng để mọi người có thể dùng.
Tuy vậy, có một điểm lịch sử tinh tế ở đây. Hiện tại, các hackers tìm trong cộng đồng phát
triển mã nguồn mở để chọn ra những người "chiến" nhất, nhưng trước bán thập niên 1990,
hầu hết các hackers làm việc với mã nguồn đóng. Điều này vẫn còn đúng ngay khi tôi viết
bản đầu tiên của tài liệu HOWTO này vào năm 1996. Sau 1997 luồng mã nguồn mở mới thật
sự trở mình. Ngày nay, "cộng đồng hacker" và "những người phát triển mã nguồn mở" là hai
biểu dạng cho cùng một văn hoá và dân số - nhưng đáng để nhớ rằng đây không phải là điều
luôn luôn như vậy trước đây.
2. Giúp thử nghiệm và tìm lỗi mã nguồn mở
Những hackers cũng đóng góp trong việc tìm lỗi cho software mã nguồn mở. Trong thế gi ới
thiếu hoàn hảo này, chúng ta không tránh khỏi việc phải mất hầu hết thời gian trong phân
đoạn tìm lỗi của cả một quá trình phát triển software. Đó là lý do tại sao bất cứ một tác giả
của phần mềm mở nguồn nào có suy nghĩ thường cho bạn biết rằng những người thử
nghiệm phó bản đều được xứng đáng hưởng trọng lượng của họ ngang với số lượng hồng
ngọc (đây là những ai biết mô tả tình trạng rõ ràng, phân vùng những trở ngại rạch ròi, có thể
tiếp nhận lỗi trong một bảng công bố nhanh (quick release), và sẵn sàng áp dụng một số chu
trình kiểm tra đơn giản). Ngay cả ai đó có thể giúp thay đổi trong phân đoạn tìm lỗi, một phân
đoạn mất thời gian và mệt nhọc thay vì kéo lê, chẳng đi tới đâu cũng đáng ca ngợi.
Nếu bạn là một newbie, thử tìm một chương trình đang được phát triển mà bạn thích và làm
một người thử nghiệm phó bản xem sao. Có một sự biến thiên từ việc giúp thử nghiệm
chương trình đến tìm lỗi chương trình và điều chỉnh chúng. Bạn sẽ học rất nhiều theo cách
này và tích đức -22- cho những người họ sẽ giúp bạn về sau.
- 3. Phổ biến thông tin hữu ích
Một cách rất hay là sưu tập và chọn lọc những thông tin hữu ích và lý thú để tạo các trang
web hoặc các tài liệu như "Những câu hỏi thường gặp" (FAQ) và phổ biến chúng một cách
rộng rãi.
Những người bảo trì các FAQ kỹ thuật quan trọng được nể trọng như những tác giả tạo mã
nguồn mở.
4. Giúp duy trì cơ sở hạ tầng
Xã hội hacker (và những cơ cấu kỹ thuật) được các tình nguyện viên điều hoạt. Có rất nhiều
công việc cần thiết nhưng không "xôm tụ" cần được gánh vác để xã hội này tiếp tục hoạt
động - quản lý mailing lists, điều hợp newsgroups, duy trì các site software lưu trữ, phát tri ển
RFC -23- và các tiêu chuẩn kỹ thuật khác.
Những người làm các loại việc này rất được nể trọng bởi vì mọi người biết rằng loại công
việc này ngốn không biết bao nhiêu là thời gian và không lý thú như việc táy máy với mã
nguồn. Làm những việc này chứng tỏ sự đóng góp lớn lao.
5. Phục vụ chính văn hoá hacker
Sau chót, bạn có thể phục vụ và phát triển chính văn hoá này (bằng cách, ví dụ như viết một
bài tổng luận về cách làm thế nào để trở thành hacker ). Đây không phải là điều bạn có thể
làm được cho đến khi đã sinh hoạt ít lâu và đã được biết đến với một trong bốn điểm ở trên.
Văn hoá hacker không có các vị lãnh tụ, nói một cách chính xác, nhưng nó vẫn có những vị anh
hùng và những "già làng", những sử gia và những phát ngôn viên. Một khi bạn ở trong bộ lạc
đủ lâu, bạn có thể trở thành một trong những người như thế. Coi chừng: hackers không tiếp
nhận dạng người tự phụ trơ trẽn trà trộn trong nhóm "già làng" của họ, bởi thế, thấp thoáng
với tới "danh phận" này có phần nguy hiểm. Thay vì phấn đấu để được lấy nó, bạn nên an
nhiên, khiêm tốn và hài lòng với chính vị trí của mình.
Mối quan hệ Hacker/Dân gạo cội -24-
Ngược với những điều thường được bàn tán, bạn không cần là một tay "nerd" mới trở thành
hacker. Nó có phần ích lợi và nhiều hackers quả thật là những tay "nerd". Đôi khi bị tách rời
khỏi xã hội thông thường -25- giúp bạn tập trung vào những điều quan trọng như suy nghĩ và
hacking.
Vì lý do này, nhiều hackers tiếp nhận nhãn hiệu "geek" như một loại phù hiệu để hãnh diện -
đó là cách để công bố tính độc lập với các dự tưởng xã hội thông thường (cũng là một cách
chuộng những thứ khác như khoa học giả tưởng và các loại game chiến thuật cũng thường đi
- đôi với những ai là hacker). Từ "nerd" được dùng trước đây theo tinh thần này vào những năm
90, khi mà 'nerd' là một dạng bị từ chối hạng nhẹ và 'geek' là dạng nặng hơn; một lúc nào đó
sau năm 2000, chúng đổi chỗ, ít ra là với văn hoá phổ thông của Mỹ, và hiện nay, một thứ văn
hoá 'tự hào geek' càng lan tràn trong đám người không phải là dân kỹ thuật.
Nếu bạn có thể làm cách nào để đủ tập trung vào hacking hoặc giỏi với chuyện này mà vẫn
có một đời sống sinh hoạt bình thường -26- thì đây là điều rất tốt. Chuyện này dễ dàng hơn
nhiều ở thời nay so với thời tôi còn là newbie vào những năm 70; xã hội chính thống bây gi ờ
có thiện cảm với đám 'kỹ thuật gạo cội' hơn rất nhiều. Thậm chí số người tin rằng đám
hackers thường là những người yêu tuyệt vời và những người phối ngẫu lý tưởng.
Nếu bạn bị lôi cuốn vào hacking bởi vì bạn không có một đời sống bình thường, điều này
cũng tốt cả - ít ra bạn sẽ không bị trở ngại với việc tập trung. Có thể bạn sẽ có một cuộc
sống bình thường về sau.
conmale dịch và chú thích từ nguyên bản "How To Become A Hacker" - 14/9/2006
Chú thích:
-1-: Nguyên bản "wizardly hacker", tạm dịch là "cao thủ hacker" cho gần với tinh thần tiếng
Việt. Dịch sát có thể có nghĩa là "phù thủy hacker".
-2-: FAQ (Frequently Asked Questions), các câu thường hỏi.
-3-: Nguyên bản "definitive", một tài liệu hoặc hướng dẫn mang tính thẩm quyền và có giá trị
xuất sắc. Tạm dịch là "kim chỉ nam" và tôi giả định rằng nó vẫn còn giá trị này. Tuy thế, tôi
không chiếm giữ trọn bộ thẩm quyền các vấn đề thuộc chủ đề này; nếu bạn không thích
những điều đọc được ở đây, hãy tự viết bản của mình.
-4-: Nguyên bản "abstract". Tạm dịch sát nghĩ là "tính trừu tượng". Thật ra tinh thần abstract
được đưa ra ở đây không đơn thuần là trừu tượng, nó mang nặng tính khái niệm, nó tách rời
lý thuyết và các ứng dụng thực tiễn. Tính "abstract" ở đây xoáy vào khía cạnh tư duy hơn là
ứng dụng.
-5-: Nguyên bản "mini computers". Tạm dịch là "tiểu vi tính" để phân biệt với các "super
computers" như mainframes.
-6-: Nguyên bản "the hacker nature is really independent of the particular medium the hacker
works in". Tạm dịch là "bản sắc tự nhiên của hacker thật sự độc lập với thể trạng mà hackers
làm việc và tiếp cận". Câu này tác giả nhận định rằng, hacker không chỉ là những người làm
việc với CNTT mà ở mọi lĩnh vực. Tư duy của một hacker thật sự là tư duy của một người
- có khả năng suy luận và hình thành giải pháp cho mọi vấn đề.
-7-: Nguyên bản "hotwires cars". Tạm dịch là "'đề' xe (không cần chìa)". Hình ảnh này ám chỉ
cho dạng người hay "chôm" xe máy bằng cách đột nhập vào xe và khởi động máy bằng cách
chập hệ thống điện của bộ đề. Dạng này rất thường thấy ở các nước Âu Châu, Mỹ và cách
nước có nhiều xe máy.
-8-: Nguyên bản "To be accepted as a hacker, you have to behave as though you have this kind
of attitude yourself. And to behave as though you have the attitude, you have to really believe the
attitude". Tác giả muốn nói rằng, ngay cả bạn thật sự không hoặc chưa trang bị đúng thái độ
của một hacker, bạn cũng nên tỏ ra mình có thái độ này và tin tưởng vào thái độ này thì mới có
thể được tiếp nhận như một hacker.
-9-: Nguyên bản "re-inventing the wheel". Tạm dịch là "tái tạo những thứ đã có sẵn".
-10-: Nguyên bản "toolkit of skills". Tạm dịch "đồ nghề" cho gần gụi với tiếng Việt.
-11-: Nguyên bản "machine language". Tạm dịch là ngôn ngữ của máy. Thật ra nó ám chỉ loại
ngôn ngữ ở tầng thấp nhất để gởi chỉ thị cho máy thực thi công việc.
-12-: Tôi không đồng ý hoàn toàn quan điểm này của Eric. Bởi lẽ, bất cứ ngôn ngữ mạnh mẽ
và phức tạp nào cũng cần có bộ thư viện thì mới làm việc được. Hay chăng Eric cho rằng
Java JDK không được cài sẵn ở mức hệ điều hành? Eric bị mâu thuẫn trong câu này. Nếu các
ứng dụng mở cho Java thường đi sau Sun thì lý do thoả đáng nào để dùng ứng dụng mở thay
vì dùng bản của Sun?
-13-: Một text editor phổ biến và mạnh mẽ trên *nix. Nó tạo cảm giác "khó dùng" cho những
ai quen "point & click" (như trên hệ điều hành Windows) như sau khi vượt qua được cảm giác
này. Emacs là một công cụ tuyệt vời cho nhu cầu xử lý text, lập trình...
-14-: GIMP, một công cụ nguồn mở dùng để xử lý hình ảnh gần như là tiêu chuẩn trên các
Linux Distribution.
-15-: xin đừng lẫn lộn với các tiểu xảo thường gọi là "google hacking" bằng cách dùng các
phối hợp từ khoá trên Google để 'hack' (theo ý nghĩa không đúng về cái gọi là 'hack'). Peter
Norvig là một trong những người 'đẻ' ra Google. Ông ta 'hack' ở đây có nghĩa là (cùng với các
hackers khác) suy tư, thiết kế, thử nghiệm và kiến tạo giải pháp cho công việc tìm kiếm
(searching) và đã hình thành nên Google. Trang chủ của Norvig ở:
http://www.norvig.com/index.html
-16-: AI viết tắc của cụm "Artificial Intelligent", một công nghệ kỳ thú và đa diện. AI tạm
mang nghĩa tiếng Việt là "trí tuệ nhân tạo" nhưng tôi không dịch hẳn ra như thế mà vẫn dùng
AI vì hai lý do: 1) AI là thuật ngữ quá đặc thù với lĩnh vực này, dịch ra tiếng Việt sẽ làm hỏng
tính đặc thù ấy. 2) "trí tuệ nhân tạo" không đủ lột tả "artificial intelligent" bởi vì viết một
software bình thường cũng đòi hỏi "trí tuệ" và cũng "nhân tạo". Bởi thế, tôi đành để nguyên
AI.
- -17-: Nguyên bản "learn to dance while wearing a body cast". Tạm dịch là "học cách khiêu vũ
trong lúc cơ thể đang bó bột". Tác giả muốn ám chỉ việc học 'hack' trên một hệ thống mã
nguồn đóng hết sức hạn chế.
-18-: Nguyên bản politicians, có nghĩa là "các chính trị gia". Từ này theo nghĩ đen chẳng có gì
đặc biệt nhưng tác giả để nó ở dạng chữ nghiêng để nhấn mạnh nghĩa bóng. Đây là chi tiết lý
thú để khẳng định thái độ chống cửa quyền đã nêu ở mục 4. Đối với những người làm khoa
học thuần thành, họ rất xem thường các chính trị gia, đặc biệt là ở các nước phát triển. Các
chính trị gia là những người chỉ ngồi trong văn phòng và tìm cách kiếm phiếu thay vì làm
những việc ích lợi và thiết thực. Họ không quan tâm mấy đến những phát kiến ngoại trừ
chúng có lợi cho họ (chủ yếu là việc kiếm phiếu). Ở đây, web cũng khiến cho các chính trị gia
quan tâm, có nghĩa là mức ảnh hưởng của nó có biên độ và cường độ đáng kể đến các chính
trị gia.
-19-: Nguyên bản anthropologists, là những chuyên gia / khoa học gia chuyên về xã hội học.
-20-: Nguyên bản gift culture, tạm dịch là "văn hóa cho tặng". Thật ra, cụm từ được dịch ra ở
đây không đủ lột tả tinh thần gift culture bởi vì trong một xã hội, vật chất khuynh đảo mọi
khiá cạnh của xã hội, tính "cho tặng" ở đây là một hiện tượng hoặc một thứ văn hoá đặc thù
và độc đáo.
-21-: Nguyên bản "revered demigods", tạm dịch "đại cao thủ" cho gần gụi. "revered demigods"
hàm chứa sự tôn trọng và vinh dự cao cả của một người được xếp hạng như thế.
-22-: Nguyên bản "karma". Tạm dịch là "tích đức" theo đúng tinh thần Phật giáo (theo từ
karma).
-23-: Nguyên bản RFC hay là "Request For Comments", là những tài liệu đề xuất các tiêu
chuẩn ứng dụng kỹ thuật. Chúng được dùng như kim chỉ nam để tạo sự đồng nhất và tương
quan giữa các ứng dụng có chung tính chất.
-24-: Nguyên bản "nerd". Tạm dịch là "dân gạo cội" chỉ cho những cá nhân hết sức cần mẫn,
chăm chỉ và rất có khả năng. Hình tượng "nerd" là hình tượng một cá nhân (thường là nam
giới) gầy gò, mang cặp kính mắt rất dày và tỏ ra hiểu nhiều, biết rộng.
-25-: ở những nước Tây phương, những ai "bị" xếp vào dạng "nerd" thường ít nhiều bị tách
rời khỏi các sinh hoạt bình thường như bạn bè, tiệc tùng, giao tiếp. Đây có lẽ là một thứ "nếp
sống" và đây không hẳn là một thứ quan niệm đúng đắn.
-26-: Nguyên bản "have a life". Tạm dịch "đời sống bình thường". Tôi thú nhận không thể
dịch cụm "have a life" sang tiếng Việt và chuyển tải đầy đủ hàm ý của nó. Cụm "have a life"
chẳng những hàm chứa một cuộc sống bình thường mà còn an hưởng và thoả mãn với nó.
Những điểm phong cách
Một lần nữa, để làm một hacker, bạn cần đi vào tâm thức của một hacker. Có một số điều có
ích bạn có thể làm ngay cả khi bạn không động đến máy tính. Những điều này không dùng để
thay thế cho hacking (chẳng có gì thay thế cho hacking cả) nhưng nhiều hackers làm những
- điều này và cảm thấy họ kết nối đến cốt lõi của hacking.
- Học cách viết ngôn ngữ mẹ đẻ của mình một cách nhuần nhuyễn. Dẫu thiên hạ thường
nghĩ rằng dân lập trình không có khả năng viết lách, nhưng một con số đáng ngạc nhiên các
hackers (bao gồm những người đã thành đạt nhất mà tôi biết) lại rất có khả năng viết lách.
- Đọc truyện khoa học giả tưởng. Đi dự các buổi hội thảo về khoa học giả tưởng (một cách
rất tốt để gặp gỡ các hackers và hackers cố cựu) -27-.
- Rèn luyện một môn võ thuật. Thứ kỷ luật đòi hỏi cho võ thuật khá tương đồng với những
thứ hackers hoạt động. Dạng võ thuật được ưa chuộng nhất của đám hackers có lẽ là Không
Thủ Đạo của Á Châu như Tae Kwon Do, các dạng Karate, Kung Fu, Aikido hoặc Ju Jitsu. Các
môn kiếm thuật Tây phương và Á Châu cũng có tác dụng tương tự. Ở những nơi cho phép,
bắn súng cũng là môn thể thao phổ biến từ những năm cuối thập niên 90. Võ thuật đúng tinh
thần hacker là để nhấn mạnh kỷ luật tinh thần, tạo thư giãn và chủ động hơn là để rèn luyện
sức mạnh thô hào, thúc đẩy năng lực thể chất cao độ.
- Nghiên cứu một nhánh thiền. Một sinh hoạt được ưa thích một cách bền bỉ trong đám
hackers là môn Thiền -28- (một cách nghiêm trọng mà nói, bạn có thể thâu nhận được những
điều ích lợi từ Thiền mà không cần phải theo một tôn giáo hoặc từ bỏ một tôn giáo mà bạn
đã có). Những môn khác ở dạng tương tự cũng có thể có tác dụng nhưng hãy cẩn thận mà
chọn lựa một môn không đòi hỏi bạn tin vào những điều điên khùng.
- Bồi dưỡng cho mình một lỗ tai có khả năng phân tích âm nhạc. Học cách thưởng thức tính
đặc thù của âm nhạc. Học cách chơi một nhạc cụ nào đó hoặc học cách hát.
- Bồi dưỡng cho mình khả năng chơi chữ -29- và dùng chữ.
Nếu bạn đã làm những điều trên và càng nhiều, càng chứng tỏ bạn có thiên khiếu của một
hacker. Lý do tại sao như vậy thì chưa rõ nhưng điều quan trọng là những việc trên kết nối
giữa khả năng thuộc phần trái và phần phải của não bộ. Hackers cần có khả năng lý luận một
cách logic và có thể bước ra khỏi một logic mang tính hiển nhiên ngay lúc nhận ra điều này.
Làm việc hết lòng cũng như giải trí và giải trí hết lòng cũng như làm việc. Đối với hackers,
biên giới của "chơi", "làm", "khoa học" và "nghệ thuật" có xu hướng biến mất, hoặc gộp lại
thành một lối chơi có mức sáng tạo cao độ. Cũng như thế, đừng tự hài lòng với chuỗi kỹ năng
hạn hẹp. Dù rằng hầu hết hackers đều tự xếp loại mình là lập trình viên, họ thường có khả
năng trong nhiều lãnh vực khác nhau - quản lý hệ thống, thiết kế web, và sửa chữa máy tính
thường là những kỹ năng thường gặp. Một hacker đóng vai trò là một nhân viên quản lý hệ
thống thường rất giỏi với kỹ năng lập trình ở dạng script và thiết kế web. Hackers không làm
chuyện gì nửa vời cả; nếu họ đầu tư vào một kỹ năng, họ thường có xu hướng trở nên rất
xuất sắc với kỹ năng ấy.
Cuối cùng là vài điều không nên làm:
- Đừng dùng một cái tên (nick name) hào nhoáng và vô nghĩa.
- - Đừng dính vào những trận khẩu chiến trên Usenet (hoặc bất cứ nơi đâu).
- Đừng tự gọi mình là 'du đãng mạng' -30-, và đừng phí thời gian với những kẻ tự xưng như
thế.
- Đừng gởi bài hoặc e-mail đầy những lỗi chính tả và lỗi văn phạm.
Thứ tiếng tăm duy nhất mà bạn tạo ra nếu làm một trong những điều ở trên là tự biến mình
thành kẻ bị từ chối. Hackers thường có trí nhớ rất tốt - nó có thể làm bạn mất nhiều năm mới
được tiếp nhận trở lại nếu bạn tạo ra những lỗi ngu xuẩn ngay từ đầu.
Trở ngại của nickname đáng được nhắc kỹ hơn. Che dấu danh tánh của mình đằng sau một
nickname là trò con nít và có tính đặc thù của những tay crackers, warezd00dz -31- và những
dạng rác rưởi khác. Hackers không làm những trò này; họ tự hào với những điều họ làm và
muốn nó đi chung với tên thật của họ. Cho nên, nếu bạn có một cái nickname, bỏ nó đi. Văn
hoá hacker thực thụ sẽ đánh dấu bạn là một tên thất bại.
Các nguồn khác
Paul Graham viết một bài tiểu luận có tên http://www.paulgraham.com/gh.html và một bài
khác là http://www.paulgraham.com/college.html trong đó ông ta nói đến những điều nên làm.
Peter Seebach duy trì một trang http://www.plethora.net/~seebs/faqs/hacker.html dành riêng cho
các ngài giám đốc, những người không biết cách ứng phó với hackers ra sao.
Thêm một tài liệu có tên http://samizdat.mines.edu/howto/HowToBeAProgrammer.html, một tài
liệu xuất sắc hỗ trợ cho tài liệu HOWTO này. Nó chẳng những mang giá trị giáo dục về việc
gõ code và kỹ năng mà còn chỉ ra cách sinh hoạt trong một nhóm lập trình.
Tôi cũng viết tài liệu http://catb.org/~esr/writings/hacker-history/hacker-history.html
Tôi đã viết một bài http://catb.org/~esr/writings/cathedral-bazaar/index.html giải thích rất
nhiều về cách Linux và xã hội open-source làm việc. Tôi cũng khai triển chủ đề này trực tiếp
hơn trong phần http://catb.org/~esr/writings/homesteading/.
Rick Moen viết một tài liệu xuất sắc về cách http://linuxmafia.com/faq/Linux_PR/newlug.html
(làm cách nào để điều hành một nhóm người dùng Linux).
Rick Moen và tôi đã phối hợp hình thành một tài liệu khác http://catb.org/~esr/faqs/smart-
questions.html. Tài liệu này sẽ giúp bạn tìm sự giúp đỡ theo theo hướng bạn có thể thực sự có
được câu trả lời.
- Các câu hỏi thường gặp:
H: Làm sao tôi biết được tôi có phải là một hacker hay không?
Đ: Tự hỏi ba câu sau:
- Bạn có nói ngôn ngữ code nhuần nhuyễn không?
- Bạn có xác định mục tiêu và giá trị của cộng đồng hacker chưa?
- Đã bao giờ bạn được một thành viên của một cộng đồng hacker đã thành hình và có uy tín
gọi bạn là hacker chưa?
Nếu bạn có thể trả lời vâng cho cả ba câu trên, bạn đã là một hacker. Nếu chỉ hai câu cũng
chưa đủ.
Trắc nghiệm đầu dành cho kỹ năng của bạn. Có thể bạn đạt được câu này nếu bạn có tối
thiểu khả năng kỹ thuật được mô tả ở phần đầu của tài liệu. Bạn sẽ đi xuyên suốt phần thử
nghiệm này nếu bạn đã có một khối lượng mã nguồn đã được một công trình mở nguồn nào
đó tiếp nhận.
Trắc nghiệm thứ nhì dành cho thái độ. Nếu năm điểm nền tảng tư duy của một hacker có vẻ
hiển nhiên đối với bạn, gần với cách bạn đã sống chớ chẳng phải là chuyện gì xa vời thì bạn
đã vượt quá nửa chặng đường. Đó là nửa phần hướng nội, phần còn lại, phần hướng ngoại
là mức độ bạn được một cộng đồng hacker có những chương trình làm việc lâu dài công
nhận.
Đây là danh sách chưa hoàn chỉnh, chỉ mang tính tượng trưng của một số chương trình làm
việc: Bạn có quan tâm hay không nếu Linux cải thiện và mở rộng? Bạn có nhiệt thành với
tính tự do của software? Bạn có căng thẳng với những biểu hiện độc quyền? Bạn có làm việc
dựa trên căn bản máy tính có thể làm công cụ để biến thế giới trở nên một nơi giàu có và
nhân bản hơn?
Một điểm cần dè chừng với thứ tự ở đây. Cộng đồng hacker có một số điểm quan tâm mang
tính tự vệ trên phương diện chính trị khá cụ thể - hai điểm dùng để tự vệ quyền tự do ngôn
luận và tẩy chay sức mạnh "intellectual-property" -32- vì nó có thể biến mã nguồn mở trở
thành bất hợp pháp. Một số các chương trình dài hạn gồm có những tổ chức dân chủ như
Electronic Frontier Foundation (Tổ chức điện tử tiền phong), và thái độ hướng ngoại hàm
chứa việc hỗ trợ chúng. Bên ngoài những chuyện này, quan điểm chung của hầu hết các
hackers là thử nghiệm hệ thống hoá thái độ hoài nghi của hacker vào một chương trình cụ thể
mang tính chính trị; các thử nghiệm như thế thường bị lạc đề và chia rẽ. Nếu có ai đó mướn
bạn tuần hành ở thủ đô của bạn với nhân danh "thái độ hacker" thì họ bị lạc đề rồi. Lời hồi
đáp đúng đắn có thể là "Im mồm và phô chúng mã nguồn".
Trắc nghiệm thứ ba có một phần gay go với tính tái diễn trong đó. Trong phần Hacker là gì?,
tôi đã nêu ra rằng làm một hacker là một phần thuộc về một thứ văn hoá ngầm nào đó hoặc
- một mạng lưới xã hội có chung lịch sử, một nội diện và một ngoại diện. Trong quá khứ,
hackers kém liên kết và thức tỉnh như ngày nay. Nhưng điểm quan trọng là khía cạnh mạng
lưới xã hội đã gia tăng đáng kể sau hơn ba mươi năm và Internet đã tạo ra những kết nối với
phần lõi của văn hoá ngầm hacker một cách dễ dàng hơn để phát triển và duy trì. Một trong
những biểu thị của sự thay đổi này là, trong thế kỷ này, chúng tôi đã có T-shirts riêng của
chúng tôi.
Những chuyên gia xã hội học nghiên cứu các mạng lưới tương tự như mạng lưới của các
hackers dưới quy chế ở dạng "trường học vô hình" -33-, đã ghi nhận rằng những mạng lưới
như thế thường có các kẻ giữ cổng (gatekeepers) - những thành viên cốt lõi có thẩm quyền xã
hội để giới thiệu những thành viên mới vào mạng lưới này. Bởi "trường học vô hình" văn hoá
hacker là một thứ văn hoá thư giãn và không nghiêm trọng, vai trò của kẻ giữ cổng cũng
không nghiêm trọng. Nhưng một điều các hackers ghi xương khắc cốt rằng không phải hacker
nào cũng là kẻ giữ cổng. Kẻ giữ cổng phải có mức già dặn và thành đạt trước khi họ có thể
lãnh nhận tước hiệu này. Mức độ bao nhiêu thì khó mà đếm nhưng mọi hacker biết được điều
này khi họ nhận thấy như thế.
H: Ông dạy tôi cách hack được không?
Đ: Từ lúc đăng tải trang này lên, tôi nhận được sa số thỉnh cầu mỗi tuần (thường là hàng loạt
mỗi ngày) từ mọi người để yêu cầu "dạy tôi hết mọi thứ về hacking". Không may, tôi chẳng
có thời gian và năng lực để làm chuyện này; các công trình hack của riêng tôi và làm vi ệc ở vị
thế một người vận động cho open-source, chiếm hết 110% thời gian của tôi.
Ngay cả tôi có dạy được đi chăng nữa, hacking là một thứ thái độ và kỹ năng mà bạn phải tự
dạy lấy chính mình. Bạn sẽ thấy rằng những hackers thứ thiệt sẵn sàng giúp bạn nhưng họ
sẽ không tôn trọng bạn nếu như bạn đòi hỏi họ "đút bé ăn" -34- những thứ họ biết.
Học vài điều trước đã. Cho họ thấy bạn đang cố gắng, bạn có khả năng tự học. Rồi sau đó
mới đến gặp hackers với những câu hỏi cụ thể.
Nếu bạn gởi mail đến một hacker để được khuyên nhủ, đây là hai điều bạn cần biết trước.
Thứ nhất, chúng tôi thấy rằng những ai lười nhác hoặc vô trách nhiệm với chính những gì họ
viết thường lười nhác và vô trách nhiệm trong suy nghĩ của họ để có thể trở thành hacker tốt -
bởi thế, nên cẩn thận với từ vựng và dùng văn phạm câu cú cho tốt, nếu không bạn sẽ bị làm
ngơ. Điều thứ nhì, đừng có mà dám đòi hỏi hồi âm đến một e-mail khác với e-mail bạn đang
dùng để gởi tới; chúng tôi thấy những ai làm chuyện này thường là những kẻ trộm hoặc dùng
tài khoản chôm chỉa, và chúng tôi chẳng thích tưởng thưởng hoặc trợ giúp thói ăn cắp.
H: Vậy tôi bắt đầu thế nào đây?
Đ: Cách tốt nhất để bạn bắt đầu là đi đến một cuộc họp của LUG (Linux user group). Bạn có
thể tìm thấy các nhóm này ở http://www.tldp.org/links/index.html; hẳn có một nhóm gần bạn,
có thể nhóm này có liên hệ với một trường cao đẳng hoặc trường đại học. Các thành viên
LUG có lẽ sẽ cho bạn một bản Linux nếu bạn yêu cầu, và chắc chắn sẽ giúp bạn cài đặt và
bắt đầu.
H: Khi nào thì tôi bắt đầu được? có quá muộn để tôi học không?
- Đ: Bất cứ tuổi nào bạn muốn bắt đầu thì tuổi ấy thì hợp. Hầu hết mọi người thường quan
tâm ở lứa 15 - 20, nhưng tôi biết có nhiều trường hợp ngoại lệ cho cả hai phía.
H: Tôi sẽ mất bao lâu để học hack?
Đ: Điều này tùy thuộc ở chỗ bạn tài năng và chịu khó thế nào nữa. Hầu hết mọi người có thể
đạt được một mớ kỹ năng đáng nể trong vòng mười tám tháng cho đến hai năm nếu họ chịu
khó tập trung. Nhưng đừng nghĩ rằng nó chấm dứt ở đó; nếu bạn là hacker thứ thiệt, bạn sẽ
mất suốt đời để học và hoàn thiện thành quả của bạn.
H: Visual Basic có phải là một ngôn ngữ tốt để bắt đầu không?
Đ: Nếu bạn hỏi câu này thì chắc chắn bạn đang nghĩ đến chuyện muốn hack Microsoft
Windows. Đây là một ý kiến tồi. Khi tôi so sánh việc học hack trên Windows giống như việc
học khiêu vũ như toàn cơ thể bị bó bột, tôi không có ý đùa với so sánh này. Đừng bén mảng
đến đó. Nó xấu xí và sẽ không bao giờ ngưng bị xấu xí.
Có một lý do cụ thể về trở ngại của Visual Basic; chủ yếu là nó không chuyển dụng (từ hệ
điều hành này sang hệ điều hành khác) được. Dẫu có một bản thử nghiệm nguồn mở ứng
dụng Visual Basic, các tiêu chuẩn có thể ứng dụ được từ ECMA không đủ bao trùm một nhúm
giao diện lập trình -35- bé nhỏ. Trên Windows, hầu hết các thư viện được hỗ trợ thuộc dạng
thương mại có bản quyền của một công ty nào đó cung cấp (như Microsoft); nếu bạn không
cực kỳ cẩn thận với những tính năng bạn dùng - dù có cẩn thận hơn bất cứ newbie nào có khả
năng cẩn thận - bạn sẽ bị dính chặt vào những hoạt nền chỉ có Microsoft hỗ trợ. Nếu bạn bắt
đầu với Unix, có những ngôn ngữ và thư viện tốt hơn rất nhiều. Ví dụ như Python.
Cũng như các dạng Basics khác, Visual Basic là thứ ngôn ngữ được thiết kế một cách nghèo
nàn chỉ dạy bạn những thói quen lập trình xấu. Đừng, đừng bắt tôi phải mô tả chi tiết; để
giải thích chắc phải đầy một cuốn sách. Thay vì vậy, nên học loại ngôn ngữ được thiết kế
đẹp hơn.
Một trong những thói quen xấu là trở nên phụ thuộc vào một nhóm duy nhất cung cấp thư
viện, tiện ích và công cụ lập trình. Tổng quát mà nói, bất cứ ngôn ngữ nào không được hỗ trợ
đầy đủ trên ít nhất Linux hoặc một dạng BSB khác, hoặc/và ít nhất ba hệ điều hành khác
nhau thì đó là một ngôn ngữ quá tệ để học cách hack trên đó.
H: Ông có thể giúp tôi crack một hệ thống hay dạy tôi cách làm không?
Đ: Không. Bất cứ ai vẫn có thể hỏi một câu như thế sau khi đọc cái FAQ này thì kẻ ấy quá
ngu độn để có thể được dạy dỗ, ngay cả tôi có thời gian để dạy dỗ. Bất cứ email nào gởi
đến để hỏi những câu như thế này tôi sẽ làm ngơ hoặc trả lời với nội dung cực kỳ nặng nề.
H: Làm sao tôi có thể lấy được password của account nào đó?
Đ: Cái này là cracking. Biến đi, đồ ngốc.
H: Làm cách nào tôi có thể xâm nhập, đọc, theo dõi email của ai đó?
Đ: Cái này là cracking. Cút xéo, đồ đần.
H: Làm sao tôi chiếm được quyền admin của một IRC?
- Đ: Cái này là cracking. Đi cho khuất mắt, thằng ngu.
H: Tôi bị crack. Ông có thể giúp tôi ngăn chặn không?
Đ: Không. Mỗi khi ai hỏi tôi câu này, hầu như đó là câu hỏi của một kẻ khốn khổ đang dùng
Microsoft Windows. Khó có thể bảo mật tuyệt đối Windows để khỏi bị tấn công; mớ mã
nguồn và thiết kế có quá nhiều lỗ hổng, điều này khiến cho việc bảo mật Windows giống
như thả trôi chiếc thuyền trong vùng bị chắn. Chỉ có một cách duy nhất và đáng tin cậy là bắt
đầu chuyển sang Linux hoặc một hệ điều hành nào khác ít nhất được thế kế có khả năng bảo
mật.
H: Tôi bị sự cố với các chương trình chạy trên Windows. Ông giúp được không?
Đ: Vâng. Vào khung DOS và gõ "format c:". Bất cứ trở ngại nào bạn đang gặp đều sẽ biến
mất trong vài phút.
H: Tôi có thể gặp vài hacker thứ thiệt để trò chuyện?
Đ: Cách tốt nhất là tìm một nhóm người dùng Unix hay Linux ở địa phương của bạn và đến
dự các buổi họp mặt của họ (bạn có thể tìm vô số đường dẫn đến các nhóm người dùng trên
http://www.tldp.org/ ở ibilio).
(Trước đây tôi thường nói ở đây rằng bạn sẽ không tìm ra một hacker thứ thiệt nào trên IRC,
nhưng tôi nhận ra điều này đang thay đổi. Hẳn nhiên đã có một số nhóm hackers thứ thiệt có
liên hệ đến GIMP và Perl đang sử dụng một số kênh IRC).
H: Ông có thể giới thiệu một số sách giá trị về những vấn đề liên quan đến hacking không?
Đ: Tôi bảo trì http://en.tldp.org/HOWTO/Reading-List-HOWTO/index.html có thể bạn sẽ thấy
hữu dụng. Trang http://www.catb.org/~esr/faqs/loginataka.html cũng có thể lý thú với bạn.
Đối với thông tin nhập môn cho Python, xem tài liệu http://www.python.org/doc/Intros.html ở
trang Python.
H: Liệu tôi có cần giỏi toán để trở thành hacker không?
Đ: Không. Hacking dùng rất ít loại toán học hoặc số học thuần túy. Một cách cụ thể hơn, bạn
sẽ hiếm khi cần đến các tam giác thức, tích phân hoặc khả năng lý giải toán (có một số ngoại
lệ cho một số ứng dụng liên quan đến lãnh vực kỹ thuật ảnh không gian 3 chiều). Nắm được
các logic và đại số Boolean thì tốt. Một số toán rời rạc (bao gồm lý thuyết tập hợp hữu hạn,
thuật tổng hợp và đồ thị) có thể sẽ hữu dụng.
Điều quan trọng hơn hết: bạn cần có khả năng suy nghĩ một cách logic và khai triển những
chuỗi lý lẽ chính xác theo cách toán học. Nội dung toán học sẽ không trực tiếp giúp bạn
nhưng bạn sẽ cần kỷ luật và trí tuệ toán học (để ứng dụng trong hacking). Nếu bạn thiếu trí
tuệ, bạn sẽ khó hy vọng thành hacker; nếu bạn thiếu kỷ luật, bạn nên bồi dưỡng phần này.
Tôi nghĩ một cách khá hay là tìm thử xem bạn có những đức tính này không là tìm một bản
"What Is The Name of This Book" của Raymond Smullyan để đọc. Lối đùa bỡn trong việc giải
quyết những logic phức tạp mà Smullyan đã viết rất gần với tinh thần của hacker. Có thể giải
quyết trở ngại là việc rất hay; giải quyết chúng một cách thích thú là việc càng hay hơn nữa.
nguon tai.lieu . vn