1. ความแตกต่างระหว่างการเรียนสาขา Computer Science และ Information Technology
ข้อมูลจาก http://www.acm.org องค์กรที่ดูแลด้านคอมพิวเตอร์
อันดับแรกคือ เทรน หรือแนวโน้มในศตวรรษนี้ IT กับ IS ดูจะมาแรงกว่าศาสตร์คอมพิวเตอร์สาขาอื่นๆ
ถัดมาคือ กราฟแสดงความแตกต่างของศาสตร์ในสาขาต่างๆ
แปลคร่าวๆ แกน X (แกนแนวนอน) คือ การมุ่งเน้นทฤษฏี หรือ การประยุกต์ใช้งาน
แกน Y (แกนแนวตั้ง) คือ ศาสตร์หรือเนื้อหาวิชาที่มุ่งเน้น 5 สาขาวิชาได้แก่
- การจัดการองค์กร และระบบสารสนเทศ
- เทคโนโลยีของซอฟต์แวร์ และโปรแกรมประยุกต์ต่างๆ
- กระบวนการพัฒนาซอฟต์แวร์ และเทคโนโลยี
- โครงสร้างพื้นฐานของระบบ (โครงข่ายและเทคโนโลยีการสื่อสาร)
- ฮาร์ดแวร์ และสถาปัตยกรรม
ภาพแรกคือ ศาสตร์ด้านวิทยาการคอมพิวเตอร์ หรือ CS เน้นหนักเรื่องของการเรียนรู้ทฤษฏี ในเรื่องกระบวนการพัฒนาซอฟต์แวร์ และโปรแกรมประยุกต์ต่างๆ และศึกษาทฤษฏีด้านฮาร์ดแวร์และสถาปัตยกรรม ตามลำดับ
จะเห็นว่า IT เน้นการประยุกต์ใช้งาน ในศาสตร์ด้านเทคโนโลยีซอฟต์แวร์และโปรแกรมประยุกต์ต่างๆ การจัดการองค์กรและระบบสารสนเทศ กระบวนการพัฒนาซอฟต์แวร์ และเทคโนโลยีโครงข่ายและการสื่อสารข้อมูล (จะเห็นว่าไม่เน้นการเรียนฮารด์แวร์) และเน้นประยุกต์ใช้งานเป็นหลัก
แหล่งข้อมูลอ้างอิงเว็บไซต์
"ความแตกต่างของศาสตร์และสาขาคอมพิวเตอร์ IT vs CS และอื่นๆ." 2006. [ออนไลน์]. เข้าถึงได้จาก: http://cptd.chandra.ac.th/forums/index.php?topic=33.msg396 สืบค้น 27 สิงหาคม 2551.
2. ความแตกต่างระหว่างเทคโนโลยี .NET และ JAVA
Net Platform vs Sun Java VM
C# กับ Java อันไหนดีกว่ากันนั้น ต้องอยู่บนพื้นฐานที่ว่า Code ของ C# นั้นจะถูก Compile ให้เป็น IL Code (Intermediate Language or MSIL) ที่จะทำงานบน .Net Platform ซึ่งจริงๆแล้ว "ทุกภาษา" บน .Net นั้นจะถูก compile เป็น IL Code หมด จึงไม่สำคัญเลยว่าเราจะใช้ภาษาอะไรในการพัฒนา เพราะไม่ว่าเราจะใช้ VB.Net, C#, Managed C++ (C++ ตัวใหม่ที่จะออกพร้อม Visual Studio.Net), COBOL.Net, Pearl.Net หรือภาษาอื่นๆที่อยู่บน .Net Platform ทั้งหมดจะถูก compile เป็น IL Code เหมือนกัน ดังนั้นทุกภาษาบน .Net ก็จะมีประสิทธิภาพเท่ากันหมด
ต่อไปการที่เราจะพัฒนา Application ขึ้นมาสักตัวนั้น ภาษาที่เราเลือกใช้จะขึ้นอยู่กับความคุ้นเคยต่อ Syntax ภาษานั้นๆของเรามากกว่าที่จะเป็นการเลือกใช้เพราะประสิทธิภาพเหมือนเช่นในอดีต
C# vs Java
VB.Net vs Java
Managed C++ vs Java
เนื่องจากความแตกต่างของ C#, VB.Net และ Managed C++ จะอยู่ที่ Syntax เท่านั้น หรือทุกตัวเป็น Intermediate Language กันหมด ดังนั้นประเด็นที่เราควรจะพูดกันก็คือ .Net Platform VS SUN Java VM
การจับคู่เพื่อเปรียบเทียบกันควรจะเป็น .Net Platform กับ SUN Java VM ( Virtual Machine ) เพราะทุกภาษาบน .Net Platform นั้นถูกเพิ่มประสิทธิภาพให้สูงขึ้นโดย .Net Platform โดย Java VM ที่เร็วที่สุดไม่ใช่ของ SUN แต่เป็นของ Microsoft ครับ โดยที่ Microsoft Java Virtual Machine เร็วกว่า SUN Java virtual Machine (version 1.2) อยู่ 500% ถ้าคุณ run java บน INTEL platform แต่ด้วยปัญหาทางกฎหมายทำให้ Microsoft ต้องยุติการพัฒนา Java Virtual Machine ไป ทำให้ Microsoft หันมาทุ่มเทกับการพัฒนา .Net โดยลงทุนไปกับการวิจัยและพัฒนาถึง 2 พันล้านดอลลาร์ (เก้าหมื่นล้านบาท หรือประมาณ 10% ของงบประมาณแผ่นดินของประเทศไทย) และยังได้รับรองอีกว่าจะใช้ 80% ของฝ่าย R&D ในปี 2001-2002 ในการพัฒนา .Net
ดังนั้นเมื่อเรามองไปยังสงครามในตลาด Software ที่ผ่านมาเราจะเห็นว่า Microsoft ค่อนข้างจะทำได้ดีจากการเริ่มต้นช้ากว่า แต่สุดท้ายก็กลายมาเป็นฝ่ายที่ยึดครองตลาด ไม่ว่าจะตั้งแต่สมัยที่เอา Windows มาดับ Mac OS หรือในกรณีล่าสุดที่ Microsoft เอา IE มาดับ Netscape ในสงคราม web browser ด้วยเหตุนี้เมื่อบริษัทตัดสินใจมาทุ่มเทกับ .Net ก็แน่ใจได้เลยว่า Microsoft ต้องมี product และยุทธศาสตร์ที่แข็งแกร่งแน่นอน ดังตัวอย่าง
1.Platform Independence
Java เป็น platform independence ประเด็นนี้ แม้ Microsoft จะไม่ได้ออกมาป่าวประกาศว่าพวกเขากำลังจะนำเสนอ Platform Independence ต่อสาธารณชน แต่ความจริงก็คือ .Net เป็น platform independence เหตุที่ Microsoft ไม่ได้ออกมาป่าวประกาศก็เนื่องว่า ไม่อยากให้เกิดกระแสไปก่อนที่พวกเขาจะมี product ที่แข็งแกร่งอยู่ในมือ แต่ Microsoft ก็ได้ออกมาประกาศแล้วว่า ทางบริษัทกำลังจะออก .Net Platform สำหรับ Linux และหลังจากนั้นก็จะเป็น .Net Platform สำหรับทุก OS แต่ Platform Independence ของ .net นั้นแตกต่างไปจากของ Java Java ไม่ได้สร้าง PE file (*.dll หรือ *.exe เป็นต้น) ดังนั้นคุณจึงต้องใช้ command-line JITer (java.exe program.class) เพื่อสั่งให้โปรแกรมทำงาน ดังนั้นคุณจึงเหลือทางเลือกอยู่ 2 ทางคือ อันแรกสร้าง batch file หรือใช้ c/c++ เพื่อสร้าง PE file ขึ้นมา ทีนี้ถ้าคุณเป็นคนที่ซื้อ software คุณคงไม่หวังว่าจะได้ software ที่ run จาก batch file ดังนั้นนักพัฒนาก็จะเหลือทางเลือกเดียวคือ interoperate start-up code โดยใช้ c/c++ ซึ่งจะทำให้เกิดปัญหาขึ้นมา 2 อย่าง อันแรกคือ คุณต้องศึกษาภาษา C++ ส่วนอีกอันคือ การใช้ c/c++ จะทำให้โปรแกรมที่พัฒนาด้วยภาษา Java ของคุณ กลายเป็น platform dependence ไป เพราะมี source ส่วนของ c++ เพิ่มเข้าไป
แต่กับ .Net แล้วเมื่อคุณพัฒนาเสร็จ แล้ว compile คุณก็จะได้ PE file ออกมา และสามารถเอาไปใช้งานได้ทันที ทำให้ .Net เป็น platform independence ที่ง่ายต่อการใช้งาน
นอกจากนี้แล้ว .Net ยังเป็น Language Independence อีกด้วย เนื่องจาก code ที่ใช้บน .Net ทุกภาษาจะถูกแปลงเป็น IL ดังนั้นคุณจึงสามารถใช้ component จากภาษาคนละภาษามาทำงานร่วมกันได้โดยไม่ต้องเขียน code พิเศษ เพิ่มเติมแต่อย่างใด ตัวอย่างเช่น Framework class (namespace System) ที่อยู่ใน Microsoft.Net framework SDK ซึ่งถูกเขียนด้วย C# แต่ก็สามารถใช้กับ ภาษา VB.Net, Managed C++ ได้
2.Performance and Speed
Microsoft คือบริษัทที่ผลิต JAVA VM ที่เร็วที่สุดออกมาซึ่งจากรายงานได้บอกว่า เร็วกว่า VM ของ SUN ถึง 5 เท่า ซึ่ง SUN Java VM นั้นไม่ได้ใช้งาน CPU อย่างเต็มประสิทธิภาพด้วยซ้ำ แม้ว่าผมจะได้ยินข่าวเกี่ยวกับ HotSpot VM จาก SUN แต่มันก็เป็นแค่การทำ Code Caching เท่านั้น แต่ในทางกลับกัน MS ได้ศึกษาถึงวิธีที่จะรีดประสิทธิภาพที่สูงที่สุดออกมาจาก CPU โดยที่ไม่ทำให้ Code ของคุณถูก Compile ผิดพลาดและไม่ทำให้เป็น Platform Independence ซึ่งเป็นผลทำให้คุณสามารถได้ประสิทธิภาพการทำงานที่สูงที่สุดไม่ว่าคุณจะใช้ CPU อะไร เนื่องจาก MS ได้ทำการ Optimize คำสั่งต่างๆ แยกกันสำหรับ CPU ของ Intel และ AMD
แต่ถ้าเป็นภาษา Java แล้ว code ของคุณที่ทำงานบน P!!!-1GHz อาจจะทำงานได้เร็ว หรือช้ากว่าบน Athlon 1GHz ก็ได้ เพราะ Java VM ไม่ได้ออกแบบมาให้มีความสามารถในการดึง feature ของ CPU แต่ละแบบออกมาเพื่อให้ได้ประสิทธิภาพการทำงานที่สูงที่สุด แต่ .Net platform นั้นได้เตรียม JIT'ers ที่แตกต่างกัน สำหรับ Intel และ AMD ทำให้คุณสามารถประหยัดเงินได้มากกว่าแทนการลงทุนใน Software ที่ทำงานได้ดีกับ CPU ชนิดใดชนิดหนึ่งเท่านั้น
3) Open competition for language and tool developers.
.Net platform นั้น เป็น open platform ดังนั้นไม่ว่าจะเป็นผู้ผลิตรายใดก็สามารถสร้าง Compiler เพื่อใช้กับ .Net ได้ สำหรับทุกภาษาที่ถูก แปลงมาเป็น .Net ซึ่งบางทีอาจจะมีสักวันที่มีคนเขียน Java compiler บน .Net ก็ได้ ทีนี้เมื่อเรามาดูที่ Java คุณจะเห็นว่าคุณต้องใช้ Compiler ที่ SUN เป็นผู้จัดหามาให้เท่านั้น ซึ่งเท่ากับเป็นการจำกัดโอกาส ในการแข่งขันของ ผู้พัฒนารายอื่นๆ ไม่เหมือนภาษาพื้นฐานอื่นๆที่เรามี compiler หลายตัวสำหรับ C/C++ เช่น MS หรือ Borland เป็นต้น ทำให้เราสามารถเลือก compiler จากผู้ผลิตหลายๆรายได้ สำหรับ C# ที่กำลังรอคำยอมรับจากกรรมการ ECMA อยู่ ซึ่งแม้แต่คุณก็สามารถเขียน Compiler ให้ C# ได้
เมื่อผู้ผลิดรายย่อยสามารถสร้าง compiler ของตนเองได้ ก็จะทำให้มี tool ออกมาจากผู้ผลิตเหล่านั้น ซึ่งนักพัฒนาก็จะสามารถเลือกใช้เครื่องมือที่เหมาะตามความต้องการได้
4) Other points
ข้อดีของ .Net เช่น ระบบ Versioning ซึ่งจะทำให้คุณสามารถใช้งาน โปรแกรม ทั้ง 2 เวอร์ชันในเวลาเดียวกันได้ ซึ่งเรียกว่า "Side-By-Side executing" เช่น คุณสามารถใช้ component ของ Calculator version1กับ version 2 ร่วมกันได้ โดยที่ Application ที่คุณเขียนกับ component version 1 จะไม่ "Break Up even" เมื่อคุณ upgrade component ไปเป็น version 2
อ้างอิงเว็บไซต์
แหล่งข้อมูลอ้างอิงเว็บไซต์
".Net Platform vs Sun Java VM." 2001. [ออนไลน์]. เข้าถึงได้จาก: http://pumbaa.coe.psu.ac.th/webboard/reply.php?page=1&topic_id=5362 สืบค้น 27 สิงหาคม 2551.
3. อะไรคือ SAP ABAP มีความสัมพันธ์กันหรือไม่ อย่างไร
มารู้จักกับ SAP
SAP เป็นระบบขนาดใหญ่ที่ได้รวมเอาโซลูชั่นต่างๆ เข้ามารวมไว้ในระบบ โดยสามารถเขียนโปรแกรมให้ทำงานเฉพาะโซลูชั่นที่ต้องการได้ และหากมีหลายโซลูชั่นก็สามารถนำข้อมูลไปใช้ร่วมกันได้ จึงไม่น่าแปลกใจว่าทำไม ปัจจุบันนี้โปรแกรมเมอร์มากมายต่างหันมาสนใจ SAP กันมากขึ้น โซลูชั่นที่ SAP รองรับนั้นมีมากมาย อาทิ ระบบไฟแนนซ์ ระบบบริหารงานบุคคล ระบบลูกค้าสัมพันธ์ ระบบบัญชี ระบบสินค้าคงคลัง เป็นต้น นอกจากนี้ยังมีการนำไปประยุกต์ใช้กับระบบคนไข้ในโรงพยาบาลบางแห่ง โดยระบบงานต่างๆ ในแต่ละส่วนเหล่านี้เอง คือ ส่วนที่เรียกว่า "โมดูล"
หากคุณจะเริ่มศึกษา SAP นั้นคุณจะต้องทราบก่อนว่าคุณจะศึกษาในส่วนใด และนำไปใช้กับงานลักษณะใด ซึ่ง SAP จะแบ่งระบบงานต่างๆ แยกย่อยเป็นโมดูล ซึ่งแต่ละโมดูลเป็นอิสระต่อกัน และสามารถนำเอาข้อมูลในแต่ละส่วนมาเชื่อมโยงกันได้
โครงสร้างโดยรวมของ SAPโมดูล
จากภาพเป็นการแสดงถึงระบบจำลองของ SAP ซึ่งประกอบไปด้วยโมดูลมากมาย ซึ่งแต่ละโมดูลมีฟังก์ชั่นการทำงาน และหน้าที่ต่างกันออกไปตามสายงาน โดยมี ABAP เป็นตัวเชื่อมโมดูลต่างๆ เข้าไว้ด้วยกัน
โมดูลของ SAP มีดังนี้
FINANCIAL ACCOUNTING (Fl) - ระบบบัญชีไฟแนนซ์
CONTROLLING (CO) - ระบบควบคุมต้นทุน
TREASURY (TR) - ระบบคลังสินค้า
ASSET MANAGEMENT (AM) - ระบบการบริหารจัดการทรัพย์สิน
BUSINESS WORKFLOW (BW) - ระบบจัดการงานธุรกิจ
INSDUSTRY SOLUTIONS (IS) - ระบบจัดการอุตสหกรรม
HUMAN RESOURCE (HR) - ระบบบริหารงานบุคคล
PLANT MANAGEMENT (PM) - ระบบซ่อมบำรุง และงานดูแลต่างๆ
QUALITY MANAGEMENT (QM) - ระบบควบคุมคุณภาพ
PRODUCTION PLANNING (PP) - ระบบวางแผนการผลิต
MATERIAL MANAGEMENT (MM) - ระบบบริหารวัสดุอุปกรณ์
SALES AND DISTRIBUTION (SD) - ระบบการขาย และการจัดจำหน่าย
ENTERPRISE CONTROLLING (EC) - ระบบบริหารงานร้านค้า / ธุรกิจ
INVESTMENT MANAGEMENT (IM) - ระบบบริหารการลงทุน
ภายในแต่ละโมดูลก็จะมีระบบการทำงานย่อยๆ ภายในโมดูลนั้นๆ ตัวอย่าง เช่นในระบบ Sales and Distribution (SD) ก็จะประกอบไปด้วยระบบสั่งซื้อ วางบิล การออกใบสัญญา รวมทั้งเอกสารซื้อขายต่างๆ ดังภาพ
โดยแต่ละโมดูลก็จะมีลักษณะการทำงานที่เฉพาะเจาะจง โดยส่วนที่จะนำมาใช้งานร่วมกันนั้นก็คือ ข้อมูลของบริษัท หรือบุคคล ซึ่งนับว่าเป็นจุดเด่นของระบบ SAP เนื่องจากเราสามารถนำข้อมูลที่มีไปใช้งานได้หลากหลาย โดยไม่ต้องเขียนโปรแกรมซ้ำซ้อน อยากเพิ่มเติมในส่วนไหนก็สามารถเขียนเพิ่มขึ้นมาใหม่ได้ทันที โดยที่ไม่ส่งผลกระทบกับระบบฐานข้อมูลเดิม
รู้จักภาษา ABAP เคอร์เนลของ SAP R/3
ABAP จะใช้ในการพัฒนาระบบ SAP ทั้งหมด แต่เบื้องหลังการทำงานของระบบ SAP อย่างแท้จริง ก็คือ เวิร์กโพรเซส (Work Process) หรือที่เรียกว่าเคอร์เนล (Kernel) ของระบบ SAP ซึ่งพัฒนาขึ้นมาจากภาษา C หรือ C++ และทำหน้าที่นำโปรแกรม ABAP ที่เราต้องการเอ็กซีคิวต์ (Execute) มาประมวลผลที่แอพพลิเคชันเซิร์ฟเวอร์ (Application Server) 
ในระบบ SAP R/3 โดยที่เวิร์กโพรเซสในระบบ SAP R/3 จะประกอบไปด้วยองค์ประกอบ 4 ส่วนคือ
1. TaskHandler
2. ABAP Processor
3. DYNPRO Processor
4. DB Interface
TaskHandler เป็นส่วนที่คอยพิจารณาโปรแกรม ABAP ที่ต้องการเอ็กซิคิวต์ในโปรแกรมบัฟเฟอร์ (Program Buffer) บนแอพพลิเคชันเซิร์ฟเวอร์ (Application Server) ในแต่ละสเตจเมนต์ (Statement) ตามลำดับ โดยมันจะพิจารณาสเตจเมนต์ (ABAP Statement) นั้นว่าเป็นคำสั่งประเภทอะไร ถ้าเป็นคำสั่งประเภท ABAP ส่วน TaskHandler ก็จะส่งสเตจเมนต์นั้นให้กับ ABAP Processor เพื่อประมวลผลต่อไป และถ้าเป็นคำสั่งที่เกี่ยวข้องกับสกรีนโพรเซสซิง (Dialog Program) ส่วนของ TaskHandler ก็จะโอนการทำงานในส่วนนี้ให้กับ DYNPRO (Dynamic Program) Processor ประมวลผลงานในส่วนนี้ แต่ถ้า TaskHandler พบว่าคำสั่งที่ต้องการทำงาน เป็นคำสั่งประเภท Open SQL มันก็จะส่งคำสั่ง Open SQL นี้ให้กับ DB Interface เพื่อประมวลผลคำสั่ง Open SQL ต่อไป ซึ่งหมายความว่า DB Interface จะช่วยแปลง Open SQL ของ SAP ให้เป็น SQL ชนิดมาตรฐานหรือ Native SQL ของระบบดาต้าเบสเซิร์ฟเวอร์ต่อไป
สำหรับส่วน Local Memory จะเป็นพื้นที่หน่วยความจำของเวิร์กโพรเซส ซึ่งใช้เก็บข้อมูลที่ได้จากการประมวลผลคำสั่ง ABAP ต่างๆ โดยที่จะมีส่วนที่เรียกว่า Memory Space ที่จะเป็นพื้นที่เก็บข้อมูลดาต้าออบเจ็กต์ (Data Object) ต่างๆ ของโปรแกรม ABAP ที่กำลังทำงานอยู่ และพื้นที่ Local Memory นี้จะถูกเคลียร์ทิ้งเมื่อจบการทำงานของโปรแกรม ABAP
สรุปความสัมพันธ์คือ ภาษา ABAP เป็นภาษาโปรแกรมที่อยู่เบื้องหลังระบบ SAP ซึ่งก็คือแอพพลิเคชันทั้งหมดทุกโมดูลในระบบ SAP นั้น ถูกพัฒนาขึ้นมาจากภาษาโปรแกรม ABAP ซึ่งเป็นภาษาโปรแกรมของ SAP
อ้างอิงเว็บไซต์
แหล่งข้อมูลอ้างอิงเว็บไซต์
"รู้จักภาษา ABAP เปิดเบื้องหลังของ SAP R/3." 2007. [ออนไลน์]. เข้าถึงได้จาก:http://www.bloggang.com/viewdiary.php?id=nuenggolf&month=08-2007&date=02&group=1&gblog=5
สืบค้น 27 สิงหาคม 2551.