คอมไพล์เลอ ต้องมังกร & โอเอส ต้องไดโนเสาร์ หนังสือที่อ้างอิงและศึกษาได้ดี

ทำไม !! คอมไพล์เลอ ต้องมังกร และ โอเอส ต้องไดโนเสาร์

เป็นคำถามที่ผมว่ามันก็หาคำตอบลำบาก แต่วันนี้ผมจะมาแนะนำหนังสือ คงไม่บอกว่ามันดียังไง เพราะว่าหนังสือมันก็ดีทุกเล่มนั้นแหละ เพียงแต่ว่าเล่มนั้นจะให้แนวคิดและทำความเข้าใจได้ง่ายกว่ากันเท่านั้นเอง (หนังสือบางเล่มจำเป็นต้องมีพื้นความรู้หลายๆ อย่างก่อนไม่งั้นอ่านแล้ว งง โคตรๆ)

Operating System Concepts


by Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne


ถือเป็นหนังสือที่เอาไว้ศึกษาหลักการ Operating System ได้ดีมาก ๆ เลยทีเดียว ที่ผมเรียนตอนปี 3 ก็ใช้เล่มนี้สอนเป็นหลัก แต่เนื้อหามันเยอะมาก เลยเรียนไม่หมดเล่ม ด้วยความอยากรู้เลยไปซื้อที่ CU Book ที่ม. ตอนนั้นมี Wiley Asia Sutdent Edition ขายพอดีราคาเลยถูกกว่าเล่มที่วางขายทั่วไปพอสมควร (เล่มในรูปซื้อมาประมาณ 600 – 700 ไม่เกินนี้ จำราคาไม่ได้นานแล้วอ่ะ -_-‘) เอาไว้ศึกษาพวก thead, memory management แล้วก็พวก deadlock ต่าง ๆ จริง ๆ อ่านเล่มนี้ทำให้เราเขียนโปรแกรมให้มีประสิทธิภาพสูงได้เลยหล่ะ ได้แนวคิดเยอะมาก ๆ จริง ๆ คนที่เขียนพวกซอฟต์แวร์ที่ใช้ thead หรือพวก control session ต่าง ๆ สมควรอ่านอย่างยิ่งเลย เล่มที่ได้มานี่ 7th Edition ถือน่าจะใหม่เกือบที่สุดแล้วในตอนนี้ (เห็นใน amazon มี with Java ด้วย อันนี้น่าจะใหม่กว่านิดหน่อย) แต่เนื้อหาหลัก ๆ ถือว่าควบถ้วนครับ ซึ่งเล่มถ้าจะอ่านต้องมีพื้นในด้าน Hardware พอสมควร แนะนำให้เปิดหนังสือเล่มนี้อ่านพร้อม ๆ กับพวกวิชา Introductrory to Computer หรือ Computer Organization and Architecture ไปด้วยจะดีมาก ๆ


Compilers: Principles, Techniques, and Tools


by Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman


เล่มนี้ถือว่าหายากมากในไทย แถมเป็นเล่มที่ Classic ของคนเรียน Computer Science (ออกตั้งแต่ปี ค.ศ. 1985-1986) เห็นว่าเดือนนี้ (สิงหาคม 2006) จะออก Edtion ที่สองแล้ว แต่ว่าเล่มนี้นี่ ผมก็ไม่รู้ทำไม ที่มหาวิทยาลัยก็ไม่มี ในหอสมุดก็เพิ่งจะเอามาลงเมื่อปลายปี 2548 นี้เอง จริง ๆ ดูราคาแล้วก็แพงมหาโหดมาก ราคาจาก US -> Thai นี่เกือบ ๆ 4,000 บาทได้ เลยต้องยืมของหอสมุดมาถ่ายเอกสารเอา เพราะว่าหาซื้อไม่ได้ แถมแพงอีก ยิ่งแล้วใหญ่เลย (ถ่ายยังราคาเกือบ ๆ 500 บาทได้) โดยภายในหนังสือสอนแนวคิดก่อน และก่อนจะอ่านเล่มนี้จริง ๆ ต้องมีพื้นหลายอย่างมาก่อนแล้วทั้ง Computationnal Thoery หรือพวก Regular Expression wi POSIX/Perl ไม่งั้น อ่านลำบากมาก เพราะด้านในนี้แทบจะหา code โปรแกรมน้อยมาก ส่วนใหญ่จะออกแนวสัญลักษณ์ Computationnal Thoery เยอะ แถมต้องแม่น Data Structure และ Programming Language พอสมควรอีก ถ้าใครคิดจะอ่านเล่มนี้ต้องหาหนังสือเล่มอื่น ๆ อ่านประกอบไปด้วยไม่งั้นนึกภาพตามไม่ออกจริง ๆ ขนาดเราว่าเราแม่น ๆ หลายวิชาแล้วนะ ยังอ่านแล้วอ่านอีก เพราะว่าอ่านยากจริง ๆ แต่ถ้าอ่านแรกเข้าใจนะ โห … สุด ๆ อ่านแล้วนี่ Optimize Code ที่เราเขียนห่วย ๆ ตอนปี 2-3 ได้สบาย ๆ เลย เหมาสำหรับคนที่ออกแนวชอบ Optimize Code หรือพวกชอบงานแนว ๆ Code Quality
เล่มต่อมาเป็น

Languages and Machines
An Introduction to the Theory of Computer Science (3rd Edition)



by Thomas A. Sudkamp

อันนี้ไม่พูดอะไรมาก ราคาไม่แพงพอ ๆ กับ Operating System (เพราะว่ามันเป็น International Edition มันเลยถูก ;) ) เอาไว้อ่านประกอบ Compilers ด้านบนนั้นแหละ แต่บางอย่างอาจขัดแย้งกันในบางเรื่องกับ Compilers คงต้องเลือก ๆ อ่านสักหน่อย แต่ถือว่าช่วยให้อ่านเจ้า Compilers ได้เยอะ

ปิดท้ายด้วย หนังสือสำหรับคนที่ชอบการออกแบบ Database

Database Management Systems

by Raghu Ramakrishnan and Johannes Gehrke

เล่มนี้เอาไว้เรียนวิชา Database และมันเป็นแหล่งอ้างอิงที่ดีในการทำ Database Tuning ด้วย คงไม่บรรยายอะไรมาก หาอ่านเอาแล้วกัน เล่มนี้ Concept แน่นดีมาก ๆ

ว่าง ๆ จะหาหนังสือดีมาแนะนำอีกนะ ไปก่อนหล่ะ แว็บบบบบบบ

เซต Editplus เพื่อ Compile และเปิดไฟล์ Java ให้ทำงาน

  1. ทำการลงโปรแกรม EditPlus และ SDK ของ JAVA ชื่อ J2SE Development Kit ลงในเครื่องก่อน เพื่อให้ในเครื่องมีตัว Compile และ Editor เพื่อใช้ในการทำงานเสียก่อน
  2. เปิดโปรแกรม EditPlus และไปที่ Tools และตามด้วยเมนู Configure User Tools
  3. ตัวโปรแกรมจะเปิดหน้าต่างใหม่ ที่ชื่อว่า Preferences และตัว Cursor อยู่ที่ User tools ให้คลิ้กที่ปุ่ม Groups Name เพื่อทำการเปลี่ยนชื่อ Groups เป็น JAVA ซึ่งระบบจะขึ้นหน้าต่าง Rename User Tool Group ให้กรอง และเมื่อกรองเสร็จแล้วกด OK ออกมา และเราจะเห็นชื่อ Group 1 จากของเดิม เปลี่ยนเป็น JAVA แล้ว
  4. ต่อมาเราจะมาทำการสร้างตัว Command ในการ Compile ในตัวโปรแกรม EditPlus โดยไปที่ปุ่ม Add Tools และไปที่ Program ซึ่งโปรแกรมที่เราจะ Add เข้านี้มีชื่อว่า JAVA Compiler หรือชื่อ javac.exe นั้นเอง โดยให้ Browse ไปที่อยู่ของ javac.exe ซึ่งส่วนมากจะอยู่ใน directory  bin ของ JAVA รุ่นนั้นๆ เช่น "C:\Java\jdk1.5.0_01\bin\javac.exe" ซึ่งแล้วแต่เราว่าเราจะเอาไว้ที่ไหนนั้นเอง เมื่อ Browse หาเจอแล้ว ตัว Path ของไฟล์ javac.exe จะถูกนำมาใส่ไว้ในช่อง Command ให้เราเลยทันที และใน Menu Text ให้ใส่ Compile เข้าไป
  5. จากนั้นในส่วนของช่อง Argument  จะใช้ในการใส่ค่าของชื่อไฟล์ของเรา ในที่นี้ให้ไปที่ปุ่ม   และเลือกที่ File Name ซึ่งตามหลักการ Compile ใน Command Prompt ใน Dos นั้นจะมีรูปแบบคือ "C:\javac HelloWorld.java" ตัวโปรแกรมจะทำการใส่ไปให้เราเองดังที่ได้กล่าวไปในตอนแรกแล้ว
  6. ในช่องของ Initial directory นั้นปกติใช้เพื่อทำการบอกตัวโปรแกรมว่าให้ทำการ compile ที่ไหน โดยไปทีปุ่มเครื่องหมายลูกศรชี้ลง แล้วเลือก File Directory เมื่อทำทั้งหมดเสร็จแล้วให้กด Apply
  7.  ต่อมาเราจะมากล่าวถึงในส่วนของการให้โปรแกรมที่เขียนด้วยภาษา JAVA นั้นสามารถทำงานได้หลังจากทำการ Compile แล้ว ให้ที่ไป Add Tools และไปที่ Program ซึ่งโปรแกรมที่เราจะ Add เข้านี้มีชื่อว่า JAVA Interpeter หรือชื่อ java.exe ซึ่งส่วนมากจะอยู่ใน directory  bin ของ JAVA รุ่นนั้นๆ เช่น "C:\Java\jdk1.5.0_01\bin\java.exe" นั้นเอง เมื่อ Browse หาเจอแล้ว ตัว Path ของไฟล์ java.exe จะถูกนำมาใส่ไว้ในช่อง Command ให้เราเลยทันที และใน Menu Text ให้ใส่ Run เข้าไป
  8. จากนั้นในส่วนของช่อง Argument  จะใช้ในการใส่ค่าของชื่อไฟล์ของเรา ในที่นี้ให้ไปที่ปุ่ม   และเลือกที่ File Name Without Extension ซึ่งตามหลักการ Interpeter Running ใน Command Prompt ใน Dos นั้นจะมีรูปแบบคือ "C:\java HelloWorld" ตัวโปรแกรมจะทำการใส่ไปให้เราเองดังที่ได้กล่าวไปในตอนแรกแล้ว
  9. เมื่อทำการติดตั้งเสร็จแล้ว เราก็จะได้คำสั่งในการ Compile และ Run ออกมา
  10. ทดสอบโดยการเขียนโปรแกรมทดสอบ HelloWorld
    class HelloWorld {
          public static void main(String[] args) {
               System.out.println("Hello World!");
          }
    }
  11. และทำการ Save เป็น HelloWorld.java (หรือให้ชื่อไฟล์เหมือนกับชื่อของ Class ที่ทดสอบ)
  12. เมื่อ Compile จะได้ผล
    ———- Compile ———-
    Output completed (1 sec consumed) – Normal Termination
  13. และเมื่อ Run จะได้ผล
    ———- Run ———-
    Hello World!
    Output completed (0 sec consumed) – Normal Termination
  14. เมื่อได้แบบนี้แล้วแสดงว่าติดตั้งแต่สมบูรณ์เรียบร้อย ……