เรื่องชนิดข้อมูลพื้นฐาน ผมเคยเขียนไว้แล้ว ที่ Value Types (1) : Built-in Types ซึ่งสามารถอ่านประกอบหรืออ้างอิงได้ครับ
ตัวอย่างข้อสอบ
จงเลือก data type ที่เหมาะสมกับเงื่อนไขข้อมูลต่อไปนี้
- ข้อมูลเป็นตัวเลข
- ข้อมูลมีค่ามากกว่า 32,767
ก. System.SByte
ข. System.String
ค. System.Int16
ง. UShort
ง. Char
อธิบายวิธีคิด
โจทย์ข้อนี้เป็นโจทย์ที่มีระดับความยากเพียง 1 ดาว โดยจะทดสอบความจำของเรา ใครจำได้ก็ไม่ต้องอ่านที่ผมอธิบายนะครับ
ข้อนี้เราอาจจะใช้เงื่อนไขมาตัดตัวเลือกให้ตัดสินใจง่ายขึ้น โดยเงื่อนไขแรกบอกว่า ต้องเก็บข้อมูลตัวเลขเท่านั้น ดังนั้น ข้อ ข. และข้อ ง. จึงควรตัดออก (คนศึกษาใหม่ๆ อาจจะคิดไปว่า String ก็เก็บเลขได้ ซึ่งต้องอธิบายว่าในคอมพิวเตอร์จะถือว่าตัวเลขที่เก็บแบบตัวหนังสือ จะไม่สามารถนำมาคำนวนได้ สำหรับมนุษย์จะฉลาด สามารถนำตัวเลขไม่ว่าจะอยู่ในรูปแบบไหน ก็สามารถนำมาคำนวนได้ เช่น 6 + สาม มนุษย์จะรู้ว่าคำตอบคืออะไร)
หลังจากตัดข้อที่ไม่ใช่ตัวเลขออกแล้ว ก็อยู่ที่ความจำของเราแล้ว โดยเทคนิคการจำของผมอันนี้เป็นวิธีของคนขี้เกียจจำอะไรเยอะๆ นะครับ แต่อาจจะคิดช้าหน่อย สำหรับเลขจำนวนเต็มผมจำแค่ 4 ตัวแล้วค่อยมาต่อยอดเอาครับ คือ Byte, Short, Integer, Long และผมจะจำไว้เสมอว่า Integer มีขนาด 32 bits แล้วค่อยรู้ขนาดของอีก 3 ตัวด้วยการลดหรือเพิ่มขนาดเป็น 2 เท่า ดังนั้น จะเรียงลำดับขนาด bits ได้แบบนี้
| 8 | 16 | 32 | 64 |
| Byte | Short | Integer | Long |
ต่อไปเราต้องต้องคำนวนค่าที่แต่ละ data type เก็บได้มากที่สุด โดยนำ 2 มายกกำลังตามจำนวนบิตที่เราเขียนไว้ เริ่มจาก Byte ซึ่งค่าที่เก็บได้เท่ากับ 28 หรือ 256 นั้นคือ 0 ถึง 255 นั้นเอง ส่วน SByte นั้น S ข้างหน้า Byte ก็ย่อมาจากคำว่า sign หมายถึงเครื่องหมาย + หรือ - นั้นคือ กรณี SByte ต้องแบ่งครึ่ง เป็นลบและบวกอย่างละเท่าๆ กัน คือ อย่างละ 128 จะได้ -128 ถึง 127 (ฝั่งบวกรวม 0 ด้วยเลยเหลือ 127 นะครับ) จะเห็นว่าพอมาถึงตรงนี้ตัดข้อ ก. ออกได้ เพราะ System.SByte นั้นค่ามากที่สุด ยังห่างไกล 32,767 ครับ
ต่อมา Short ซึ่งเรารู้แล้วว่ามีขนาด 16 bits ถ้าเราลองสังเกตข้อ ค. จะเห็นว่า Int16 มีเลข 16 อยู่ นั้นก็หมายถึง Int16 มีขนาด 16 bits ครับ แสดงว่า Short และ System.Int16 มีขนาดเท่ากัน ส่วนการคำนวนค่าข้อมูลที่เก็บได้มากที่สุด ก็คำนวนโดยคิดเป็นเท่าตัวของ 8 bits ไม่ใช่เอา 256 x 2 นะครับ แต่หมายถึง 28 x 28 หรือ 256 x 256 ซึ่งเท่ากับ 65,536 แต่อย่าเพิ่งตอบข้อ ค. นะครับ เพราะ Short, Integer, Long จะมี UShort, UInteger, ULong คู่เสมอครับ โดย U ข้างหน้านั้น ย่อมาจาก unsign ซึ่งหมายถึง ไม่มีเครื่องหมาย หรือพูดง่ายๆว่า มีเฉพาะฝั่งบวกครับ ดังนั้น Short หรือ System.Int16 ต้องถูกแบ่งอย่างละครึ่งครึ่งละ 32,768 เป็นบวกลบ ซึ่งเท่ากับ -32,768 ถึง 32,767 ดูจากค่านี้แล้วทำให้เราต้องตัดข้อ ค. ออกครับ เพราะเงื่อนไขบอกว่าต้องมากกว่า 32,767 ไม่ใช่พอดีนะครับ
เหลือคำตอบเดียวคือ ข้อ ง. ซึ่งเป็นคำตอบแน่นอน แต่เพื่อความแน่ใจ เราลองมาตรวจคำตอบดูก่อนครับ โดยต่อจากที่เราคำนวนค่ามากที่สุดของ Short ไว้ ดังนั้น UShort ก็คือค่าที่มีเฉพาะฝั่งบวก นั้นคือ เอา 256 x 256 เท่ากับ 65,536 มาเลยก็ได้ นั้คือ 0 ถึง 65,535 (อย่าลืมลบ 1 เพราะรวมเลข 0 ด้วย) ซึ่งเป็นคำตอบเดียวที่เก็บตัวเลขมากกว่า 32,767 ได้ครับ
วิธีคิดแบบผม จะช่วยให้ไม่ต้องมานั่งจำชนิดข้อมูลมากมาย ส่วนข้อสอบ 70-536 ออกเกี่ยวกับ Value Types โดยตรงเพียงข้อเดียว



บทความนี้ ผมคัดลอกและปรับมาเพียงบางส่วนจากหนังสือ แผนแม่บทการพัฒนาอุตสาหกรรมซอฟต์แวร์ ของประเทศไทย โดย SIPA ซึ่งผมต้องการช่วยเผยแพร่ให้คนในวงการ ได้รับทราบหรือตระหนัก และนำไปสู่การพูดคุยเพื่อแก้ปัญหา

ข่าวดีสำหรับนักพัฒนาสาย Java นะครับ ผู้ที่ได้ Cert SCJP (1.4 หรือ 5.0) อยู่แล้ว ทาง SIPA ร่วมกับบริษัท
วันนี้ ผมถือเป็นฤกษ์งามยามดี เพราะ 4 ปีจะมีซักครั้ง เลยมาเขียนบทความที่ได้จากการตกผลึก เกี่ยวกับวงการไอทีบ้านเรา หลังจากที่ผมได้หยุดงานทุกอย่าง แล้วพักผ่อนอย่างเต็มที่ 2 เดือน
โดยในการค้นคว้าของผมนั้น ก็ไม่ได้อ้างทฤษฎีอะไรมาก แค่จะนำหนังสือด้านบริหารที่ผมชอบอ่านมาเล่าให้ฟังเท่านั้นเอง ซึ่งหนึ่งในหนังสือเกี่ยวกับการบริหารที่ผมชอบอ่าน คือ หนังสือแปลที่เป็นผลงานของปีเตอร์ ดรักเกอร์ ซึ่ง Peter F. Drucker เองนั้น เป็น "บิดาแห่งศาสตร์ทางด้านการบริหารจัดการ" ประสบการณ์กว่า 90 ปี ตั้งแต่ยุค ซิกมันด์ ฟรอยด์ (Sigmund Freud), ฮิตเลอร์ (Hitler) ไปจนถึงจอร์จ ดับเบิลยู บุช ยุคโลกแห่งระบบเศรษฐกิจใหม่ เคยถูกเชิญให้มาศึกษาปรับเปลี่ยนการบริหารองค์กรเอกชน และภาครัฐหลายแห่ง เช่น General Motor, Ford, IBM (ยุคที่ ดร.สมคิด จาตุศรีพิทักษ์ เป็นรัฐมนตรีกระทรวงพาณิชย์ ก็ได้มีความคิดที่จะเชิญดรักเกอร์ มาพูดปาฐกถาในประเทศไทย แต่เนื่องจากค่าตัวสูงหลายล้าน จึงได้ล้มความคิดนี้ไป เพราะช่วงนั้นไทยเพิ่งผ่านวิกฤษเศรษฐกิจ ปี 40 มาไม่นาน) ส่วนผลงานหนังสือ ที่ทำให้เขาโด่งดัง คือหนังสือชื่อ Concept of the Coporation (1942) อันเป็นที่มาของการบริหารแบบกระจายอำนาจ และหนังสือที่ถือเป็นการปฏิวัติวงการการจัดการสมัยใหม่ คือหนังสือที่ชื่อ Practice of Management (1954) ดรักเกอร์ได้รับคำชมว่ามีความรอบรู้ทั้งเชิงลึกและกว้าง สามารถสังเกตการณ์แนวโน้มที่จะเกิดขึ้นในอนาคตได้เร็วกว่าคนอื่น 20 ปี (แม้แต่ บิล เกตต์ เองก็ยังบอกว่า หนังสือด้านการจัดการที่มีอิทธิพลต่อตัวเกตต์ที่สุดคือหนังสือของดรักเกอร์) ดรักเกอร์ได้เปิดโรงเรียนบริหารธุรกิจปีเตอร์ ดรักเกอร์ ที่มหาวิทยาลัยแคลร์มอนท์ (Claremont Graduate School) ในรัฐแคลิฟอร์เนีย ปัจจุบันดรักเกอร์ได้เสียชีวิตไปแล้วในเดือนพฤศจิกายน ค.ศ.2005 มีถ้อยคำที่เป็นอมตะฝากไว้ เช่น "ผมไม่เคยพบผู้บริหารที่ทำงาน 2 อย่างในเวลาเดียวกัน แล้วจะมีประสิทธิภาพเหมือนเดิม" หรือ "ความท้าทายที่ยิ่งใหญ่ที่สุดเพียงประการเดียว ที่นักบริหารจัดการ คือ การ เพิ่มผลิตผลแก่คนทำงานที่ใช้ความรู้ (knowledge worker)" แต่คำพูดที่ผมชอบที่สุด คือ "
เมื่อผมอ่านงานเขียนของดรักเกอร์ จึงประมวลความคิดได้อย่างชัดเจนว่า ทำไมบริษัทต่างๆจึงชอบ outsource โดยผมจะอ้างอิงจากหนังสือที่แปลจากสำนักพิมพ์ Hardvard Business School Press เป็นภาษาไทย โดยสำนักพิมพ์เอ็กซเปอร์เน็ท ดังรูป
ปัญหาทั้งหมดนี้ทำให้ outsourcing นิยมขึ้นทั่วโลก โดยบริษัทขนาดใหญ่ฝั่งตะวันตกก็ outsource งานมาฝั่งประเทศตะวันออก เช่น จีนและอินเดีย เพราะแรงงานมีราคาถูกกว่า, กฎหมายแรงงานเข้มงวดน้อยกว่า ด้านประเทศฝั่งตะวันออก และบริษัทขนาดเล็กฝั่งตะวันตกก็ไม่ได้ outsource งานไปไหน แต่จะนิยม outsource งานภายใน ให้บริษัทภายนอกมาทำอยู่ในองค์กรนั้นเลย





