|
แผนผังบ้านแมว หน้าบ้านห้องทดลองมุมสงบห้องภาพห้องเก็บของห้องเขียนหนังสือท่องเที่ยวบันทึกแมวๆโครงงานเกี่ยวกับบ้านแมวลิงก์ ค้นหา Blog Feed :: Atom Follow :: Twitter GPG :: 5F830E4A |
มาเป็นแฮ็กเกอร์กันเถอะ !Issued: 2002-08-13ช่วงนี้พอมีเวลาว่างนิดนึง ก็เลยเข้าไปแปลบทความเรื่อง "How to become a Hacker" ของ Eric Steven Raymond (ESR) ไว้ที่ OTN ที่จริงก็ยังแปลไม่จบหรอกครับ แต่เห็นเป็นเรื่องน่าสนใจดีเลยเอามาเล่าให้กันฟัง .. มาเริ่มกันที่ ESR
อย่างไรก็ตาม สิ่งที่ทั้ง RMS และ ESR มีอยู่เหมือนๆ กันก็คือ ทั้งคู่เป็น "แฮ็กเกอร์" ! "กำเนิดแฮ็กเกอร์"อาจเป็นเรื่องแปลกหากจะบอกใครๆ ว่า ทั้งอินเทอร์เน็ต ระบบยูนิกซ์ เครือข่ายยูสเน็ต เว็บ และซอฟต์แวร์เสรี ต่างเกิดขึ้นมาได้เพราะแฮ็กเกอร์ทั้งสิ้น ในความหมายที่ถูกต้อง แฮ็กเกอร์หมายถึงบุคคลที่มีความเชี่ยวชาญสุดๆ และไม่ได้จำกัดเฉพาะซอฟต์แวร์หรือคอมพิวเตอร์ ที่จริงเราจะพบแฮ็กเกอร์จำนวนมากในสังคม รวมไปถึงพวกที่ทำงานศิลปะ ดนตรี อิเล็กทรอนิกส์ ฯลฯ แฮ็กเกอร์ชอบที่จะแก้ปัญหา ทำงานอย่างสุดความสามารถ และมีความสุขกับการแก้ปัญหาให้ลุล่วงไปได้ และคนพวกนี้มีความคิดสร้างสรรค์ไม่น้อยไปกว่าศิลปินเลย ...
คำว่าแฮ็กเกอร์เกิดขึ้นในปีไหนและใครเป็นคนเริ่มไม่มีประวัติแน่นอน แต่ตามที่เข้าใจกัน แฮ็กเกอร์เริ่มก่อตัวเป็นกลุ่มกันในช่วงทศวรรษที่ 1960-1970 โดยมีเอ็มไอทีเป็นศูนย์กลาง กิจกรรมของแฮ็กเกอร์มีตั้งแต่ เขียนซอฟต์แวร์แจก เขียนเรื่องตลก ทำแผนที่ช่องใต้หลังคาเป็นทางไปยังห้องต่างๆ งานดนตรีของศิลปินบางคนก็ถือเป็นการ "แฮ็ก" มากกว่าการแต่งเพลง ว่ากันว่า โยฮัน เซบาสเตียน บาค (Johann Sebastian Bach) นักแต่งเพลงชื่อดัง เป็นคนแรกๆ ที่ "แฮ็ก" โน๊ตดนตรี ตลอดชีวิตบาคประพันธ์เพลงคลาสสิคกว่า 1000 เพลง และมีบางเพลงของบาคสามารถเล่นจากโน๊ตตัวสุดท้ายของย้อนกลับมาตัวแรกได้ไพเราะไม่แพ้การเล่นแบบปกติ (ไม่รู้ว่าตั้งใจทำอย่างนั้นเปล่า ? คนฟังอาจหูเพี้ยนไปเองก็ได้ :P) ที่ยกตัวอย่างนี้ขึ้นมาก็เพื่อแสดงให้เห็นว่าแฮ็กเกอร์ไม่ได้มีเฉพาะในโลกคอมพิวเตอร์ และไม่จำเป็นต้องเกี่ยวกับระบบความปลอดภัย หรือเครือข่ายเลย .. อย่างไรก็ตามที่คนมักเข้าใจว่าแฮ็กเกอร์ต้องเป็นเซียนยูนิกซ์ เชี่ยวเรื่องเครือข่ายก็เพราะในสมัยทศวรรษ 1980 นักข่าวเริ่มได้ยินคำนี้หนาหูจากกิจกรรมการแฮกระบบความปลอดภัยของคอมพิวเตอร์ในเอ็มไอที ก็เลยกลายเป็นว่าแฮ็กเกอร์ในสายตาสื่อคือบรรดาวัยรุ่นที่ชอบเจาะระบบความปลอดภัย และนั่นคือนิยามเดียวที่สื่อมอบให้กับคนทั้งโลก ทั้งที่แฮ็กเกอร์ และการแฮ็ก มีอะไรมากกว่านั้น "อยากจะเป็นแฮ็กเกอร์ ?"การจะเป็นแฮ็กเกอร์จะว่าง่ายก็ง่ายจะว่ายากก็ยาก ขึ้นอยู่กับทัศนคติและนิสัยของคนๆ นั้น หลายคนเป็นแฮ็กเกอร์โดยธรรมชาติ เช่น ริชาร์ด สตอลแมน (FSF), อีริค เรย์มอนด์ (OSI), ลินุส ทอร์วาลด์ (Linux Kernel), ลาร์รี่ วอลล์ (Perl), พอล วิกซี่ (Bind/ISC) ในขณะที่หลายคนต้องฝึกฝนจนกว่าจะได้รับการยอมรับกลุ่มคนในวัฒนธรรมของแฮ็กเกอร์ แฮ็กเกอร์เชื่อในเสรีภาพเรื่องการช่วยเหลือซึ่งกันและกัน ซึ่งเป็นเหตุผลว่าทำไมซอฟต์แวร์เสรีและโอเพนซอร์สถึงเกิดขึ้นมาได้ หากจะเป็นแฮ็กเกอร์ได้ก็ต้องมีทัศนคติในแบบเดียวกัน และต้องพิสูจน์ตัวเองให้ได้ว่ามีทัศนคติแบบนั้นจริงๆ .. ฟังๆ ดูเหมือนจะเป็นวัฒนธรรมในแบบฉบับของตัวเอง บางคนแซวว่าเป็นลัทธิ หรือเป็นศาสนาไปเลยก็มี ในส่วนนี้เราจะว่ากันด้วยเรื่องของทัศนคติกันก่อน .. ESR เขียนเอาไว้ว่า ..
"ทักษะพื้นฐานของแฮ็กเกอร์"จะเป็นแฮ็กเกอร์ต้องมีทั้งทัศนคติและฝีมือ และจะต้องฝึกฝน เรียนรู้สิ่งใหม่ๆ อยู่ตลอดเวลา เพราะเทคโนโลยีเปลี่ยนเร็ว เครื่องไม้เครื่องมือก็เปลี่ยนไปด้วย ผมว่าหลายคนมีพื้นฐานประมาณนึงแล้ว จึงไม่ใช่เรื่องยากนักที่จะพัฒนาทักษะเพื่อเป็นแฮ็กเกอร์ เรียนรู้การเขียนโปรแกรมการเขียนโปรแกรมเป็นรากฐานของการแฮ็ก ถ้ายังไม่เคยรู้ภาษาไหนมาก่อนเลย ESR แนะนำให้หัดภาษา Python เพราะออกแบบมาอย่างเรียบง่าย ประสิทธิภาพสูง เอกสารคู่มือที่มีอยู่ก็มีคุณภาพดี และค่อนข้างเหมาะกับมือใหม่ Java ก็ถือว่าน่าสนใจ อาจจะเรียนรู้ได้ยากกว่า Python แต่ก็ทำงานได้เร็วกว่า และใช้งานได้กว้างกว่า ถ้าจะเขียนโปรแกรมเป็นเรื่องเป็นราว ก็ยังจำเป็นต้องใช้ C อยู่เหมือนเดิม.. อย่างไรก็ตาม C จะแสดงความสามารถของมันออกมาเมื่อได้ใช้การจัดการระดับต่ำ เช่นเรื่องของหน่วยความจำ I/O ซึ่งมีความซับซ้อน และเกิดบักได้ง่าย การใช้ C จึงต้องแม่นประมาณนึง .. ข้างล่างนี้เป็นตัวอย่าง code C ที่เขียนกันแบบสุดขีดเลย ใครคิดว่างตัวเองเก่ง C ลองอ่าน แล้วลองบอกว่ามันทำอะไรและหาผลลัพธ์ได้ยังไง ? ลองเขียนให้มันสั้นกว่านี้ เร็วกว่านี้ ถ้าทำได้นั่นล่ะคือ "การแฮ็ก"
int a=10000,b,c=2800,d,e,f[2801],g;
main(){for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}
ภาษาอื่นๆ ที่น่าสนใจคือ Perl และ LISP ... ภาษา Perl เหมาะจะใช้ในทางปฏิบัติเพราะเขียนได้สั้น พัฒนาได้เร็ว (source code โปรแกรม descramble DVD เขียนด้วย Perl ยาวแค่ 4xx bytes) แม้ Python จะมาแทนที่ Perl ได้ในบางเรื่อง แต่อย่างน้อยก็ควรจะอ่านภาษา Perl รู้เรื่อง ภาษา LISP มีความน่าสนใจด้วยเหตุผลที่ต่างออกไป LISP เป็น functional programming language จึงมีแนวคิดในการเขียนโปรแกรมที่ต่างจากภาษาที่กล่าวมาก่อนหน้านี้ทั้งหมด เรื่องนี้อธิบายยาว และเข้าใจได้ยากสำหรับคนที่ชินกับ procedural programming language .. อย่างไรก็ตามหากเขียน LISP หรือ functional programming language อื่นๆ เป็น ก็จะเข้าใจแก่นของคำว่า "โปรแกรม" ได้ดีขึ้น เข้าใจการทำงานของมันบนเครื่องจักรคำนวณ เขียนโปรแกรมได้มีระเบียบ ตรงกับปัญหาที่ต้องการแก้ไขมากขึ้น ผมอยากให้จำไว้ว่าภาษาเป็นแค่เครื่องมือเท่านั้น การเขียนโปรแกรมคือการเรียนรู้ "วิธีแก้ปัญหาโดยเครื่องมือที่มีอยู่" ไม่ใช่ "วิธีใช้เครื่องมือ" ใช้เครื่องมือเก่งแค่ไหนก็ไม่มีประโยชน์ถ้าแก้ปัญหาไม่เป็น .. และถ้าเขียนโปรแกรมเป็นจริงๆ การเรียนรู้ภาษาใหม่ๆ ก็ไม่ใช่เรื่องยาก แฮ็กเกอร์ที่เก่งๆ สามารถเรียนรู้ภาษาใหม่ๆ ได้ในเวลาไม่กี่วันด้วยการเทียบกับภาษาที่รู้อยู่แล้ว ใช้โอเพนซอร์สยูนิกซ์เช่นลีนุกซ์ หรือ *บีเอสดี เหตุผลคือ เข้าถึงซอร์สโค้ดได้ง่าย จะดู หรือแก้ไขก็เป็นไปได้ และยูนิกซ์เป็นระบบปฏิบัติการสำหรับอินเทอร์เน็ต จริงอยู่ว่าเราใช้โอเอสอื่นได้หากเราต้องการใช้อินเทอร์เน็ต แต่เป็นไปไม่ได้เลยที่จะเป็นอินเทอร์เน็ตแฮ็กเกอร์โดยไม่รู้ยูนิกซ์ ข้อดีของโอเพนซอร์สอีกอย่างคือมีเครื่องมือพัฒนาซอฟต์แวร์ประสิทธิภาพสูงให้ใช้ (ทั้ง C, Python, Perl, LISP) หัดใช้เว็บ และเขียน HTMLอันนี้คงไม่ใช่เรื่องยากเท่าไหร่ แต่อยากจะเน้นในเรื่องการ "ใช้" เว็บ .. เป็นเรื่องแปลกที่ทุกวันนี้คนจำนวนมากใช้คำว่า "เล่นเน็ต" หรือ "เล่นเว็บ" มากกว่าจะเป็นคำว่า "ใช้" ผมว่ามันแสดงให้เห็นวัฒนธรรมอะไรบางอย่างในบ้านเรา (หรือแม้แต่ในภาควิชาฯ) .. ถ้ายังเล่นอยู่ ผมว่าได้เวลาหัดใช้ให้เป็นแล้วนะครับ คุณหาข้อมูลที่ต้องการจากเว็บได้หรือเปล่า ใช้ search engine แล้วเจอเว็บที่ต้องการหรือไม่ เขียนเว็บเพจที่ดีเป็นหรือยัง ? ภาษาอังกฤษเหอะๆๆ .. เป็นเรื่องที่ช่วยไม่ได้ ถ้าจะเป็นแฮ็กเกอร์ ภาษาอังกฤษควรจะแข็งแรงประมาณนึง อย่าลืมว่าคุณต้องสื่อสารกับคนทั่วโลก เอกสารส่วนใหญ่ก็เป็นภาษาอังกฤษ เอกสารที่คุณจะเผยแพร่ก็ควรจะมีทั้งภาษาหลักและภาษาอังกฤษ .. เรียนซะเถอะครับ "วัฒนธรรมของแฮ็กเกอร์"วัฒนธรรมแฮกเกอร์ไม่ได้ดำเนินไปด้วยเศรษฐกิจที่พึ่งพาเงินตรา แต่ดำเนินไปด้วยการยอมรับนับถือในฝีมือและความสามารถ การจะได้ชื่อว่าเป็นแฮ็กเกอร์จริงๆ จึงต้องพิสูจน์ตัวเองให้ได้ว่ามีความสามารถมากพอจนเป็นที่ยอมรับของแฮ็กเกอร์คนอื่นๆ สังคมของแฮ็กเกอร์เป็นสังคมในรูปแบบ gift culture ฐานะทางสังคมจึงไม่ได้เกิดจาก ความร่ำรวย หล่อ สวย เก่ง หรือมีในสิ่งที่คนอื่นไม่มี แต่ได้มาด้วยการ "ให้" ดังนั้นการจะได้รับการยอมรับจึงเริ่มต้นที่การให้เป็นหลัก เช่น
สังคมแฮกเกอร์ไม่มีผู้นำ แต่มีฮีโร่ มีผู้อาวุโส การจะได้รับการยอมรับ แฮ็กเกอร์ต้องเพียรทำสิ่งต่างๆ จนกว่าตำแหน่งนั้นๆ มันจะมาเอง .. อย่างไรก็ตามแฮกเกอร์ที่ดีไม่ได้แฮ็กเพื่อให้ตัวเองมีฐานะทางสังคมที่ดีขึ้น เพราะนั่นมันแสดงให้เห็นว่ายังมีอีโก้จัดอยู่ การเป็นแฮ็กเกอร์ไม่ได้หมายความว่าต้องเป็น nerds หรือ geeks ซึ่งเป็นกลุ่มคนที่มักอยู่แยกจากสังคม คุยกับใครไม่รู้เรื่อง ไม่สนใจอย่างอื่นนอกจากงานที่ตัวเองชอบ .. เรื่องนี้มีคนเข้าใจผิดเยอะ แม้ว่าในความจริงแล้วแฮ็กเกอร์ส่วนใหญ่เป็นพวก nerds ก็เถอะ .. แฮ็กเกอร์ก็เหมือนคนทั่วไปล่ะครับ การดำเนินชีวิตก็ไม่ได้ต่างไปจากคนทั่วไป ระยะหลังๆ สังคมเองก็ยอมรับกลุ่มแฮกเกอร์มากขึ้น จนกลายเป็นหัวข้อในการสนทนาในหมู่สาวๆ เลยก็มี ;) นั่นแปลว่าเราไม่จำเป็นต้องทิ้งสังคมไปเป็นแฮ็กเกอร์ มันไม่ถึงขนาดนั้น อย่างไรก็ตาม เป็นเรื่องแปลกที่แฮ็กเกอร์ส่วนใหญ่มักมีกิจกรรมนอกจอที่คล้ายๆ กันดังต่อไปนี้
ดูๆ อาจจะไม่ค่อยเกี่ยวกับทักษะคอมพิวเตอร์หรือการแฮ็กสักเท่าไหร่ แต่มีผลกับสมาธิ ความคิดสร้างสรรค์ และการทำงานมากกว่า ส่วนสิ่งที่แฮ็กเกอร์ไม่ทำก็มีเหมือนกัน
สิ่งที่ ESR เน้นนักหนาคือ แฮ็กเกอร์ไม่ใช้ชื่ออื่นนอกจากชื่อจริงของตัวเอง (นี่ก็เป็นข้อแตกต่างระหว่างแฮ็กเกอร์ กับแครกเกอร์) เพราะงานที่แฮ็กเกอร์ทำเป็นงานสร้างสรรค์ จึงใช้ชื่อจริงได้อย่างภาคภูมิ ESR พูดถึงเรื่องนี้ไว้อย่างสะใจว่า
เหอะๆๆ... ใครใช้อยู่ก็เลิกใช้ได้แล้ว :) ใครอ่านมาถึงตรงนี้คงพอเข้าใจแฮ็กเกอร์ได้ดีขึ้น อย่างน้อยก็คงแยกแยะคำว่าแฮ็กเกอร์กับแครกเกอร์ออกล่ะนะ .. ถ้าต้องการเริ่มต้นแล้วไม่รู้จะไปทางไหน ESR แนะให้แวะไปพวก Linux User Group (LUG) ก่อนเป็นที่แรก .. ในบ้านเราก็มี TLUG อยู่ จะแวะมาทางเว็บบอร์ด, นิวส์กรุ๊ป, mailing-list, หรือ meeting ซึ่งจัดทุกๆ เดือนก็ได้ ฟังฟรี มี coffee break :D~ .. เข้ามาที่ <a href=http://linux.thai.net>LTN</a> ก่อนเลย ที่นี่เป็น community หลักในเรื่องโอเพนซอร์สเลยก็ว่าได้ LTN เป็น community ของกลุ่มผู้ใช้เป็นหลักตั้งแต่ newbies ยัน admins (ต่อไปอาจมีการเปลี่ยนแปลง ต้องรอดูกันต่อไป) อีกที่นึงที่กำลังช่วยกันสร้างคนละไม้ละมือก็คือ OTN ซึ่งจะเน้นไปทางการพัฒนาซอฟต์แวร์ ..เข้าไปแรกๆ ทำอะไรไม่ถูก ก็นั่งฟัง นั่งอ่านถาม-ตอบ ค่อยๆ ซึมซับไปว่าเขาทำอะไรกันอยู่ วัฒนธรรมของกลุ่มเป็นแบบไหน อ่านเฉยๆ ก็ได้รู้อะไรมากมายแล้วครับ ไม่ว่าจะเรื่องเทคนิค แง่มุมทางสังคม ทัศนคติของคนไทยต่อคำว่าโอเพนซอร์ส/ซอฟต์แวร์เสรี (หรือในเวลานี้จะหนักไปทาง Linux TLE/Pladao/Office TLE) ฯลฯ .. ถ้ามีข้อสงสัยหรือต้องการความเห็นก็โพสถามๆ กันได้ ที่นั่นมีเจ้าประจำคอยตอบคำถามอยู่หลายคน แต่ไม่ได้แปลว่าจะได้รับคำตอบเสมอไปนะครับ พวกกระทู้ล่อเป้า คำถามที่มันงี่เง่าเกินเหตุ เช่น "From: มือใหม่, Subject: ลง Linux ไม่ได้, Content: ช่วยด้วย" .. แบบนี้ไม่เจอด่าก็บุญแล้ว .. หรือถามคำถามเดิมๆ ซ้ำกันบ่อยๆ ก็อาจจะไม่มีคนตอบ เรื่องนี้ว่ากันไม่ได้ ทุกอย่างอยู่ที่ความสมัครใจ การตอบคำถามก็เหมือนกัน .. ต้องเริ่มลงมือ หัดทำ หัดเรียนรู้ด้วยตัวเองด้วยครับ ไม่ใช่ถามแหลก เอกสาร คู่มือ ถาม-ตอบ บนเว็บมีเยอะแยะ (RTFM !!! OK ?) พยายามด้วยตัวเองจนกว่าจะหมดปัญญานั่นล่ะถึงค่อยมาถามกัน .. ก็จะเป็นแฮ็กเกอร์ที่ดีมันต้องออกแรงเยอะ ต้องทำงานอย่างเต็มที่จนถึงขีดสุด แต่มันก็สนุกและคุ้มค่า .. อย่างที่ฝรั่งชอบพูดกันว่า "no pain, no gain" .. หรือเนื้อเพลงไทยท่อนนึง "หากไม่รู้จักเจ็บปวด ก็ไม่ซึ้งถึงความสุขใจ" .. :D เอาล่ะ.. จบแล้ว .. ยังอยากเป็นแฮ็กเกอร์อยู่อีกหรือเปล่า ? ^-^ Referenceมีผู้เยี่ยมชมหน้านี้ 19510 ครั้ง |