วันพฤหัสบดีที่ 25 มิถุนายน พ.ศ. 2558

Week4 โปรแกรมภาษาคอมพิวเตอร์(C/C++/C#/Java)



ภาษาคอมพิวเตอร์


           มนุษย์ ใช้ภาษาในการสื่อสารมาตั้งแต่สมัยโบราณ การใช้ภาษาเป็นเรื่องที่มนุษย์พยายามถ่ายทอดความคิดและความรู้สึกต่าง ๆ เพื่อการโต้ตอบและสื่อความหมาย ภาษาที่มนุษย์ใช้ติดต่อสื่อสารในชีวิตประจำวัน เช่น ภาษาไทย ภาษาอังกฤษ หรือภาษาจีน ต่างเรียกว่า “ภาษาธรรมชาติ” (Natural Language) เพราะมีการศึกษา ได้ยิน ได้ฟัง กันมาตั้งแต่เกิดการใช้งานคอมพิวเตอร์ ซึ่งเป็นเครื่องมือทางอิเล็กทรอนิกส์ให้ทำงานตามที่ต้องการ จำเป็นต้องมีการกำหนดภาษา สำหรับใช้ติดต่อสั่งงานกับคอมพิวเตอร์ ภาษาคอมพิวเตอร์จะเป็น ”ภาษาประดิษฐ์” (Artificial Language) ที่มนุษย์คิดสร้างมาเอง เป็นภาษาที่มีจุดมุ่งหมายเฉพาะ มีกฎเกณฑ์ที่ตายตัวและจำกัด คืออยู่ในกรอบให้ใช้คำและไวยากรณ์ที่กำหนดและมีการตีความหมายที่ชัดเจน จึงจัดภาษาคอมพิวเตอร์เป็นภาษาที่มีรูปแบบเป็นทางการ (Formal Language) ต่างกับภาษาธรรมชาติที่มีขอบเขตกว้างมาก ไม่มีรูปแบบตายตัวที่แน่นอน กฎเกณฑ์ของภาษาจะขึ้นกับหลักไวยากรณ์และการยอมรับของกลุ่มผู้ใช้นั้น ๆ
ภาษา คอมพิวเตอร์อาจแบ่งได้เป็น 3 ระดับ คือ ภาษาเครื่อง (Machine Language) ภาษาระดับต่ำ (Low Level Language) และภาษาระดับสูง (High Level Language)





ภาษาคอมพิวเตอร์อาจแบ่งเป็นกลุ่มได้เป็นอีกสองประเภทคือ ภาษาที่มนุษย์อ่านออก(human-readable) และภาษาที่มนุษย์อ่านไม่ออก (non human-readable) ภาษาที่มนุษย์อ่านออกถูกออกแบบมาเพื่อให้มนุษย์สามารถเข้าใจและสื่อสารได้โดยตรงกับคอมพิวเตอร์ ส่วนภาษาที่มนุษย์อ่านไม่ออกจะมีโค้ดบางส่วนที่ไม่อาจอ่านเข้าใจได้ แต่ออกแบบมาเพื่อให้โค้ดกระชับซึ่งคอมคอมพิวเตอร์จะสามารถประมวลผลได้ง่ายกว่า
ตัวอย่างภาษาคอมพิวเตอร์
-          ภาษาโปรแกรม
-          ภาษาคริปต์
-          ภาษามาร์กอัป
-          ภาษาสอบถาม


ภาษาคอมพิวเตอร์ (Computer Programming Language)
- ชนิดของภาษาคอมพิวเตอร์
จากการที่มีภาษาจำนวนมากมายนั้น ทำให้ต้องกำหนดระดับของภาษาคอมพิวเตอร์ เพื่อช่วยในการแบ่งประเภทของภาษาเหล่านั้น การกำหนดว่าเป็นภาษาระดับต่ำหรือภาษาระดับสูง จะขึ้นอยู่กับภาษานั้นใกล้เคียงกับเครื่องคอมพิวเตอร์ (ใกล้เคียงกับรหัส และ เรียกว่า ภาษาระดับต่ำหรือว่าใกล้เคียงกับภาษาที่มนุษย์ใช้ (ใกล้เคียงกับภาษาอังกฤษ เรียกว่า ภาษาระดับสูง)


ความแตกต่าง ของภาษาในคอมพิวเตอร์
    ภาษา C - C++ และ จาวา

ประวัติโดยย่อของภาษาซี

         ภาษาซีพัฒนาขึ้นมาในปี ค.ศ. 1970 โดย เดนนิส ริชชี ( Dennis Ritchie ) แห่ง Bell Telephone Laboratories, Inc. (ปัจจุบันคือ AT&T Bell Laboratories ) ซึ่งภาษาซีนั้นมีต้นกำเนิดมาจากภาษา 2 ภาษาคือ ภาษา BCPL คิดค้นโดย มาร์ติน ริชาร์ด (Martin Richard) และภาษา B คิดค้นโดย เคน ทอมป์สัน (Ken Thompson) ซึ่งภาษาทั้งสองต่างก็เป็นภาษาที่พัฒนาขึ้นมาใน Bell Laboratories เช่นกัน เมื่อมีการศึกษาภาษาบีอย่างละเอียดได้พบข้อบกพร่องต่างๆ ของภาษาบี จึงได้มีการพัฒนารูปแบบภาษาบีขึ้นใหม่ให้มีหลักการทำงานที่ดีกว่าเดิม และใช้ชื่อใหม่ว่า ภาษาซี (C language)
         ภาษาซีนั้นถูกใช้งานอยู่เพียงใน Bell Laboratories จนกระทั่งปี ค.ศ. 1978 ไบรอัน เคอร์นิแฮม ( Brian Kernigham ) และริชชี ( Ritchie ) ได้จัดพิมพ์หนังสือชื่อว่า “C Programming Language” ทำให้เป็นที่รู้จักกันในชื่อของ “K&R C” หลังจากที่ตีพิมพ์ข้อกำหนดของ K&R นักคอมพิวเตอร์มืออาชีพรู้สึกประทับใจกับคุณสมบัติที่สนใจของภาษาซี และเริ่มส่งเสริมการใช้งานภาษาซีมากขึ้นในกลางปี ค.ศ. 1980 ภาษาซีก็กลายเป็นภาษาที่ได้รับความนิยมโดยทั่วไปมีการพัฒนาตัวแปลโปรแกรมพัฒนาโปรแกรมเชิงพาณิชย์เป็นจำนวนมาก ยิ่งไปกว่านั้นโปรแกรมเชิงพาณิชย์ที่เคยพัฒนาขึ้นมาโดยใช้ภาษาอื่น ก็ถูกเขียนขึ้นใหม่โดยใช้ภาษาซี เนื่องจากความต้องการใช้ ความได้เปรียบทางด้านประสิทธิภาพและความสามารถในการเคลื่อนย้ายได้ของภาษาซี ตัวแปลโปรแกรมภาษาซีที่ได้รับการพัฒนาขึ้นมาในเชิงพาณิชย์นั้น จะมีความแตกต่างกับข้อกำหนดของ Kernigham และ Ritchie อยู่บ้าง จากจุดนี้เองทำให้เกิดความไม่เข้ากันระหว่างตัวแปลโปรแกรมภาษาซีซึ่งก็ทำให้สูญเสียคุณสมบัติการเคลื่อนย้ายได้ซึ่งเป็นคุณสมบัติที่สำคัญของภาษา
         ดังนั้นสถาบันมาตรฐานแห่งชาติอเมริกา (American National Standard Institute) หรือแอนซี ( ANSI ) จึงเริ่มจัดทำมาตรฐานนี้บรรจุไว้ในปี ค.ศ. 1990

คุณสมบัติของภาษาซี
         - เป็นภาษาที่มีลักษณะเป็นโครสร้างจึงเขียนโปรแกรมง่าย โปรแกรมที่เขียนขึ้นจะทำงานได้อย่างมีประสิทธิภาพสูง สั่งงานคอมพิวเตอร์ได้รวดเร็วกว่าภาษาระดับสูงอื่นๆ
         - สั่งงานอุปกรณ์ในระดับคอมพิวเตอร์ได้เกือบทุกส่วนของฮาร์ดแวร์ซึ่งภาษาระดับสูงภาษาอื่นทำงานดังกล่าวได้น้อยกว่า
         - คอมไพเลอร์ภาษาซีทุกโปรแกรมในท้องตลาดจะทำงานอ้างอิง มาตรฐาน (ANSI = Ameri-can National Standard's Institute) เกือบทั้งหมด จึงทำให้โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนำไปใช้กับคอมพิวเตอร์ได้ทุกรุ่นที่มาตรฐาน ANSI รับรอง
         -โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนำไปใช้กับเครื่องคอมพิวเตอร์ที่ใช้ซีพียูต่างต่างเบอร์กันได้หรือกล่าวได้ว่าโปรแกรมมีความยืดหยุด (Provability) สูง
         - สามารถนำภาษาซีไปใช้ในการเขียนโปรแกรมประยุกต์ได้หลายระดับ เช่น เขียนโปรแกรมจัดระบบงาน (OS) คอมไพเลอร์ของภาษาอื่น โปรแกรมสื่อสารข้อมูล โปรแกรมจัดฐานข้อมูลโปรแกรมปัญญาประดิษฐ์ (AI = Artificial Intelligent) รวมทั้งโปรแกรมคำนวณงานทางด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เป็นต้น
         - มีโปรแกรมช่วย (Tool Box) ที่ช่วยในการเขียนโปรแกรมมาก และราคาไม่แพงหาซื้อได้ง่าย เช่น Turbo C, Borland C เป็นต้น
         - สามารถประกาศข้อมูลได้หลายชนิดและหลายรูปแบบ ทำให้สะดวกรวดเร็วต่อการพัฒนาโปรแกรมตามวัตถุประสงค์ของผู้ใช้
         - ประยุกต์ใช้ในงานสื่อสารข้อมูลและงานควบคุมที่ต้องการความแม่นยำในเรื่องเวลา (Real Time Application) ได้กล่าวว่าภาษาระดับสูงอื่นๆ หลายๆ ภาษา
         - สามารถเขียนโปรแกรมเชิงวัตถุ (OOP = Object Oriented Programming) ได้ หากใช้ภาษาซีรุ่น Turbo C++ ขึ้นไป ทำให้สามารถพัฒนาโปรแกรมประยุกต์เพื่อใช้งานได้กว้างขวางมากยิ่งขึ้นกว่าเดิม
C เกิดก่อน เป็นรุ่นคุณปู่ รุ่นทวดก็ Assembly ถ้าให้เปรียบเทียบ C ก็อยู่ใกล้ชิดสนิทกับการประมวลผลมากที่สุดครับ ทำงานเร็วสุดๆ เพราะอยู่ใกล้กันนิดเดียว

ต่อมาเจ้าโน้นเจ้านี้ก็พัฒนาไปเรื่อยๆ เพิ่มโน้นนิดนี่หน่อย ก็เติม + เข้ามาเป็น C++ จำไม่ได้ล่ะว่าเคยมี C+ หรือเปล่า

ภาษา C แตกแขนงออกไปเยอะมาก ถือเป็นต้นตระกูลที่ฮิตทีเดียว เพราะคนนิยมกันมาก เขียนทั้ง OS, โปรแกรมควบคุมเครื่องจักร, อุปกรณ์, Network รูปแบบเฉพาะตัวของมันก็คือ ลงท้ายด้วย ; และใช้ { }

ตอนหลังๆ มา แต่ต่างกันที่ library เสียเป็นส่วนใหญ่ รูปแบบการเขียนใกล้เคียงกัน และยังคงอัตลักษณ์ของ C ไว้อยู่เช่นเดิมครับ เขียนภาษาตระกูล C เป็นภาษาหนึ่ง สามารถเขียนได้ทุกภาษาในตระกูล C โดยอ่าน Code แล้วไม่งง หรืองงน้อยครับ

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

ผมเริ่มจาก C > C++ (OOP) > Visual C++ > PHP > JavaScript > JAVA พวกนี้ตระกูลเดียวกัน ถ้ารากฐานดี ก็เขียนได้หมด 
เหมือนรู้ภาษากลางอยู่แล้ว ไปถิ่นไหนก็ฟังออกครับ

Objective - C ผมเพิ่งเคยได้ยิน เมื่อปี 2010 นี่เองครับ ดูจากประวัติที่ไม่เคยบูมมาก่อน แล้วตอนนี้มานิยมเป็นพลุแตก ก็เพราะคนเขียน ios เยอะขึ้นนั่นเอง นำหน้าว่า Object ก็สันนิษฐานได้ว่า เป็น C ที่พัฒนาให้เป็น OOP แบบเต็มสูบ

น่นอนในฐานะที่เป็นอดีตนักพัฒนาโปรแกรมด้วยภาษาจาวา (ผมเรียกอย่างเต็มปากเต็มคำว่า "อดีตนักพัฒนา" เพราะเลิกใช้มาแล้วเป็นปี) การแนะนำคนอื่นเกี่ยวกับภาษา Objective-C ด้วย Java คงจะไม่ยากเกินความสามารถ 
แนะนำ
Objective-C นั้นเป็นภาษาหลักสำหรับการพัฒนาโปรแกรมบน Mac OS (บนเฟรมเวิร์กต่างๆ เช่น Carbon, Cocoa, Cocoa Touch) แต่สำหรับบุคคลทั่วไปนั้นมันเป็นเรื่องไกลตัวมากๆ เพราะด้วย market share ขนาดเล็ก บวกกับมันไม่ใช่ภาษาสำหรับพัฒนาเว็บ ผมเชื่อว่าน้อยคนเหลือที่ได้มีโอกาสได้สัมผัสกับภาษานี้ ผมเองถือว่าโชคดีที่ได้ทำงานเกี่ยวกับไอโฟนเลยได้มีโอกาสได้ลองเล่นกับมันบ้าง (ประมาณ 1 ปี) เลยขอถือโอกาสนี้แนะนำเพื่อนๆ ที่สนใจต่อไป

Hello World

ภาษา Objective-C นั้นมีหน้าตาไม่เหมือนชาวบ้านเท่าไร มีแมโครหน้าตาแปลกๆ ที่มีเครื่องหมาย @ นำหน้า มีลักษณะ OOP ค่อนข้างสมบูรณ์ ขาดเรื่อง package (เพราะเป็นภาษาซี จึงยังไม่มี namespace) แต่ความเป็นภาษาซีก็ยังอยู่ครบ (สามารถใช้ Compiler ของ Objective-C คอมไพล์โค้ดภาษาซีได้เลยถ้าต้องการ) มีพอยท์เตอร์ สามารถวางฟังก์ชันแบบภาษาซีได้ รวมถึงการใช้แมโคร, inline function และการใช้ # ต่างๆ (#define, #include, #ifdef)





คำศัพท์เปรียบเทียบระหว่าง Objective-C และ Java

สิ่งแรกที่จะเริ่มงงทันมีเมื่อเริ่มพัฒนาโปรแกรมด้วย Objective-C คือชื่อเรียกสิ่งต่างๆ ของมันที่ค่อนข้างจะแปลกไปซักหน่อย อย่างเช่นการประกาศคลาสขึ้นมาสักคลาสหนึ่ง จะไม่ใช้คำว่า class แต่จะแบ่งคลาสออกเป็นสองส่วนที่แยกกันเลยคือ

  • interface เป็นส่วนที่บอกลักษณะของคลาส เช่นเป็นคลาสลูกของคลาสไหน มีคุณสมบัติของ protocol (จาวาเรียกว่า interface) อะไรบ้าง มีตัวแปร (class member) อะไรบ้าง และมีเมธอดอะไรบ้าง ฉะนั้นคนนอกสามารถเห็นสมาชิกของคลาสได้ทั้งหมดจากการอ่าน interface declaration ถ้าเทียบกับภาษาซี interface ก็คือ .h ธรรมดาๆ นี่เอง
  • implementation เป็นส่วนที่เขียนเนื้อหาจริงๆ ซึ่งเป็นเหมือน .c ของภาษาซี แค่ว่าใช้ .m สำหรับภาษา Objective-C[/quote]โค้ดตัวอย่างข้างล่างจะแสดงวิธีการประกาศและเขียนโค้ดของแต่ละส่วนครับ

User.h

โค้ดข้างบนมีการประกาศตัวแปรของคลาสทั้งหมด 3 ตัว คือสตริงสองตัว และอาเรย์ (คล้ายๆ กับ ArrayList ของจาวา) ลักษณะของ Objective-C นั้น คลาสส่วนใหญ่จะเป็น immutable คือเปลี่ยนแปลงข้อมูลไม่ได้ และค่อยมีคลาสลูกที่สามารถแก้ไขข้อมูลได้ เช่น NSString -> NSMutableString, NSArray -> NSMutableArray, NSDictionary -> NSMutableDictionary (คล้ายกับ Map ใน Java Collection Framework) โดยตัวแปรต่างๆ ต้องประกาศใน {} เท่านั้น เพราะนอกจากนั้นจะเป็นเมธอดอย่างเดียว

ส่วนต่อมาคือการประกาศ property ที่มีลักษณะคล้ายๆ กับ Java Bean คือมี setter/getter แล้วมีการเข้าถึงด้วยวิธีการที่ยืดหยุ่นขึ้นเพื่อให้สามารถนำไปใช้งานได้หลากหลาย ในตัวอย่างผมกำหนดให้ property สามารถอ่านได้อย่างเดียว แปลว่าโค้ดภายนอกไม่มีสิทธิ์แก้ไขข้อมูลใดๆ หรือพูดอีกอย่างก็คือ มีแต่ getter แต่ไม่มี setter ข้อดีอย่างนึงของการประกาศ property คือ โค้ดอื่นจะไม่ต้องเรียก setter/getter ตรงๆ แต่สามารถเรียกผ่าน dot-notation ได้ เช่น user.username user.inboxMessages (แทนที่จะใช้ getter เป็น [user username]) ข้อดีอีกข้อคือสามารถทำ Key-Value Observation (KVO) ได้ ทำให้สามารถติดตามความเปลี่ยนแปลงของ property ได้ เช่นจะมีการยิงอีเวนท์ออกไปเมื่อค่าของ property เปลี่ยน

ผมประกาศเมธอดสองตัว ตัวแรกไม่รับพารามิเตอร์อะไร ตัวที่สองรับพารามิเตอร์เป็น NSUInteger (unsigned int)

สุดท้ายก็คือการประกาศ static method ซึ่งจะแตกต่างจาก method ธรรมดาตรงที่นำหน้าบรรทัดด้วยเครื่องหมายบวก (+) แทนเครื่องหมายลบ (-) เมธอดสุดท้ายจะเห็นการประกาศเมธอดที่รับพารามิเตอร์สองตัว ลักษณะการประกาศเมธอดของ Objective-C นั้น จะเขียนเหมือนประโยคคำพูดธรรมดา เพื่อให้อ่านเข้าใจได้ง่ายโดยไม่ต้องอ่าน document ต่อข้างใน อย่างเมธอดนี้ เวลาอ้างอิงในเอกสารก็จะเรียกว่า userForName:identifiedBy:error: เวลาเรียกใช้ก็เขียนตรงตัวเลย ทำให้อ่านเข้าใจเมธอดได้ง่ายกว่าการเรียกเมธอดแบบส่งพารามิเตอร์ยาวๆ ที่ทำไปทำมาก็มานั่งสับสนว่าตกลงส่งพารามิเตอร์ลำดับถูกต้องหรือเปล่า

ตัวอย่างคลาสนี้ มีวิธีใช้แบบนี้

จุดเด่นของภาษานี้เห็นได้ที่การเรียกเมธอดที่ชัดเจน ไม่มีความสับสนเรื่องลำดับของพารามิเตอร์ เพราะบอกกันตรงๆ เลย
ต่อไปคือการเขียนเนื้อหาของเมธอดต่างๆ ในไฟล์ User.m

User.m

เมธอดแรกเป็นเมธอดที่ไม่ได้ประกาศไว้ใน interface เพราะผมต้องการให้มันเป็น private ฉะนั้นก็ประกาศข้างในก็พอ ซึ่งอันที่จริงแล้วมันก็ไม่ใช่ private ซะทีเดียว เพราะมันยังพอมีทางที่จะมาเรียกเมธอดนี้ได้อยู่ 
สองเมธอดต่อมาทำหน้าที่ค่อนข้างชัดเจน

ต่อมาคือ static member ซึ่งภาษา Objective-C นั้นไม่ใช่เรื่องยากเลย เพราะมันก็คือ static variable ธรรมดานั่นเอง

สุดท้ายคือเมธอดเดียวที่ใช้เป็นทางเข้าของคลาสนี้ โดยมีการพยายามดึงผู้ใช้ตาม username ที่กำหนด แล้วก็มาตรวจสอบรหัสผ่าน แล้วค่อยส่งผลลัพธ์ออกไป กรณีที่ User นั้นไม่มีอยู่จริง อาจจะได้ nil กลับมา ภาษา Objective-C ยอมให้เราเรียกเมธอดของ nil ได้ โดยจะได้ผลลัพธ์เป็นค่ามาตรฐานคือ BOOL = NO, pointer = nil, int/long/float = 0 ทำให้ไม่ต้องเขียนโค้ดเพื่อตรวจสอบ nil มากนัก ทำให้โปรแกรมสั้นลงเยอะอยู่





          ava หรือ Java programming language คือภาษาโปรแกรมเชิงวัตถุ พัฒนาโดย เจมส์ กอสลิง และวิศวกรคนอื่นๆ ที่บริษัท ซัน ไมโครซิสเต็มส์ ภาษานี้มีจุดประสงค์เพื่อใช้แทนภาษาซีพลัสพลัส C++ โดยรูปแบบที่เพิ่มเติมขึ้นคล้ายกับภาษาอ็อบเจกต์ทีฟซี (Objective-C) แต่เดิมภาษานี้เรียกว่า ภาษาโอ๊ก (Oak) ซึ่งตั้งชื่อตามต้นโอ๊กใกล้ที่ทำงานของ เจมส์ กอสลิง แล้วภายหลังจึงเปลี่ยนไปใช้ชื่อ “จาวา” ซึ่งเป็นชื่อกาแฟแทน จุดเด่นของภาษา Java อยู่ที่ผู้เขียนโปรแกรมสามารถใช้หลักการของ Object-Oriented Programming มาพัฒนาโปรแกรมของตนด้วย Java ได้
ภาษา Java เป็นภาษาสำหรับเขียนโปรแกรมที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ ( OOP : Object-Oriented Programming) โปรแกรมที่เขียนขึ้นถูกสร้างภายในคลาส ดังนั้นคลาสคือที่เก็บเมทอด (Method) หรือพฤติกรรม (Behavior) ซึ่งมีสถานะ (State) และรูปพรรณ (Identity) ประจำพฤติกรรม (Behavior)
ข้อดีของ ภาษา Java

– ภาษา Java เป็นภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุแบบสมบูรณ์ ซึ่งเหมาะสำหรับพัฒนาระบบที่มีความซับซ้อน การพัฒนาโปรแกรมแบบวัตถุจะช่วยให้เราสามารถใช้คำหรือชื่อ ต่าง ๆ ที่มีอยู่ในระบบงานนั้นมาใช้ในการออกแบบโปรแกรมได้ ทำให้เข้าใจได้ง่ายขึ้น
– โปรแกรมที่เขียนขึ้นโดยใช้ภาษา Java จะมีความสามารถทำงานได้ในระบบปฏิบัติการที่แตกต่างกัน ไม่จําเป็นต้องดัดแปลงแก้ไขโปรแกรม เช่น หากเขียนโปรแกรมบนเครื่อง Sun โปรแกรมนั้นก็สามารถถูก compile และ run บนเครื่องพีซีธรรมดาได้
-ภาษาจาวามีการตรวจสอบข้อผิดพลาดทั้งตอน compile time และ runtime ทำให้ลดข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม และช่วยให้ debug โปรแกรมได้ง่าย
– ภาษาจาวามีความซับซ้อนน้อยกว่าภาษา C++ เมื่อเปรียบเทียบ code ของโปรแกรมที่เขียนขึ้นโดยภาษา Java กับ C++ พบว่า โปรแกรมที่เขียนโดยภาษา Java จะมีจํานวน code น้อยกว่าโปรแกรมที่เขียนโดยภาษา C++ ทำให้ใช้งานได้ง่ายกว่าและลดความผิดพลาดได้มากขึ้น
– ภาษาจาวาถูกออกแบบมาให้มีความปลอดภัยสูงตั้งแต่แรก ทำให้โปรแกรมที่เขียนขึ้นด้วยจาวามีความปลอดภัยมากกว่าโปรแกรมที่เขียนขึ้น ด้วยภาษาอื่น เพราะ Java มี security ทั้ง low level และ high level ได้แก่ electronic signature, public andprivate key management, access control และ certificatesของ
-มี IDE, application server, และ library ต่าง ๆ มากมายสำหรับจาวาที่เราสามารถใช้งานได้โดยไม่ต้องเสียค่าใช้จ่าย ทำให้เราสามารถลดค่าใช้จ่ายที่ต้องเสียไปกับการซื้อ tool และ s/w ต่าง ๆ
ข้อเสียของ ภาษา Java
-ทำงานได้ช้ากว่า native code (โปรแกรมที่ compile ให้อยู่ในรูปของภาษาเครื่อง) หรือโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น อย่างเช่น C หรือ C++ ทั้งนี้ก็เพราะว่าโปรแกรมที่เขียนขึ้นด้วยภาษาจาวาจะถูกแปลงเป็นภาษากลาง ก่อน แล้วเมื่อโปรแกรมทำงานคำสั่งของภาษากลางนี้จะถูกเปลี่ยนเป็นภาษาเครื่องอีก ทีหนึ่ง ทีล่ะคำสั่ง (หรือกลุ่มของคำสั่ง) ณ runtime ทำให้ทำงานช้ากว่า native code ซึ่งอยู่ในรูปของภาษาเครื่องแล้วตั้งแต่ compile โปรแกรมที่ต้องการความเร็วในการทำงานจึงไม่นิยมเขียนด้วยจาวา
-tool ที่มีในการใช้พัฒนาโปรแกรมจาวามักไม่ค่อยเก่ง ทำให้หลายอย่างโปรแกรมเมอร์จะต้องเป็นคนทำเอง ทำให้ต้องเสียเวลาทำงานในส่วนที่ tool ทำไม่ได้ ถ้าเราดู tool ของ MS จะใช้งานได้ง่ายกว่า และพัฒนาได้เร็วกว่า (แต่เราต้องซื้อ tool ของ MS และก็ต้องรันบน platform ของ MS)
ประวัติภาษา JAVA
ภาษาจาวา เป็นภาษาโปรแกรมเชิงวัตถุที่พัฒนาขึ้นโดย  “เจมส์ กอสลิง”   และทีมวิศวกรของเขา ซึ่งบริษัทซันไมโครซิสเต็ม ต้องการนำภาษาจาวามาใช้แทนภาษา  C++  ชื่อของ “จาวา” มาจากชื่อกาแฟที่ทีมวิศวกรของซันดื่มตอนที่ร่วมกันพัฒนาภาษาจาวาขึ้นมา  Java  ถูกคิดค้นและสร้างโดย บริษัท Sun Microsystems ซึ่งเป็นบริษัทผู้ขายระบบ Unix ที่มีชื่อว่า Solaris ซึ่งจุดเด่นของภาษา Java อยู่ที่ผู้เขียนโปรแกรมสามารถใช้หลักการของ Object-Oriented Programming มาพัฒนาโปรแกรมของตนด้วย Java ได้ พัฒนาขึ้นโดยทีมวิจัยของ บริษัท ซันไมโครซิสเต็ม (Sun Microsystems)พัฒนามาจากโครงการที่ต้องการพัฒนาระบบซอฟต์แวร์เพื่อควบคุมเครื่องใช้ไฟฟ้าขนาดเล็กภายในบ้านชื่อเดิมคือภาษา Oak ต่อมาเปลี่ยนชื่อเป็นภาษาจาวาภาษาจาวาเริ่มเป็นที่นิยมแพร่หลายในปี ค.ศ. 1995ภาษาจาวาเป็นภาษาที่ไม่ขึ้นกับแพลตฟอร์ม (platform independent)JDK 1.0 ประกาศใช้เมื่อปี1996JDK เวอร์ชันปัจจุบันคือ Java 2
วิวัฒนาการของภาษาจาวาจากรุ่นแรกถึงจาวา1.5
1.  (ค.ศ. 1996) — ออกครั้งแรกสุด
2.  (ค.ศ. 1997) — ปรับปรุงครั้งใหญ่ โดยเพิ่ม Inner Class
3.  (4 ธันวาคม ค.ศ. 1998) — รหัส Playground ด้านจาวาแพลตฟอร์มได้รับการเปลี่ยนแปลงครั้งใหญ่ใน API และ JVM (API สำคัญที่เพิ่มมาคือ Java Collections Framework และ Swing; ส่วนใน JVM เพิ่ม JIT Compiler) แต่ตัวภาษาจาวานั้น เปลี่ยนแปลงเพียงเล็กน้อย (เพิ่มคีย์เวิร์ด strictfp) และทั้งหมดถูกเรียกชื่อใหม่ว่า “จาวา 2″ แต่ระบบเลขรุ่นยังไม่เปลี่ยนแปลง
4.  (8 พฤษภาคม ค.ศ. 2000) — รหัส Kestrel แก้ไขเล็กน้อย
5.  (13 กุมภาพันธ์ ค.ศ. 2002) — รหัส Merlin เป็นรุ่นที่ถูกใช้งานมากที่สุดในปัจจุบัน (ขณะที่เขียน ค.ศ. 2005)
6.  (29 กันยายน ค.ศ. 2004) — รหัส Tiger (เดิมทีนับเป็น 1.5) เพิ่มคุณสมบัติใหม่ในภาษาจาวา เช่น Annotations ซึ่งเป็นที่ถกเถียงกันว่านำมาจากภาษาซีชาร์ป ของบริษัทไมโครซอฟท์, Enumerations, Varargs, Enhanced for loop, Autoboxing, และที่สำคัญคือ Generics


การพัฒนาการในช่วงเวลาต่าง ๆ


ถูกพัฒนาตั้งแต่ปี 1991 โดยบริษัท Sun Mic0rosystems ซึ่งเป็น ส่วนหนึ่งของ Green Project
Write Once Run Anywhere
ค.ศ.1991
บริษัท ซันไมโครซิสเต็ม (Sun Microsystems) ได้ทำการวิจัยเพื่อพัฒนาซอฟต์แวร์ที่ใช้ควบคุมอุปกรณ์เล็กทรอนิคส์ขนาดเล็ก ซึ่งได้ผลลัพธ์ที่สำคัญคือ ภาษาโอ๊ค (Oak)
ค.ศ.1993
ภาษาโอ๊คได้ถูกปรับปรุงใหม่เพื่อใช้ในการสร้างเว็บแอพพลิเคชั่น (Web Application) พร้อมกับสร้างเว็บเบราว์เซอร์ (Web Browser) ที่รองรับ ชื่อว่าเว็บรันเนอร์ (Web Runner)
ค.ศ.1995
บริษัทซันได้เปิดตัวภาษาจาวา (Java) (ภาษาโอ๊คเดิม) พร้อมกับเว็บเบราว์เซอร์ ที่รองรับภาษานี้ ชื่อว่า ฮอตจาวา (HotJava) (WebRunner เดิม)
ได้รับการสนับสนุนจากบริษัทใหญ่ทั้งเน็ตสเคบ (Netscape), ไมโครซอฟต์ (Microsoft), และ ไอบีเอ็ม (IBM)
บริษัทซัน ได้เริ่มแจกจ่าย Java development Kit (JDK) ซึ่งเป็นชุดพัฒนาโปรแกรมภาษาจาวาในอินเทอร์เน็ต
ความหมาย
ภาษาจาวา (Java Language) คือ ภาษาคอมพิวเตอร์ที่ถูกพัฒนาขึ้นโดยบริษัท ซันไมโครซิสเต็มส์ เป็นภาษาสำหรับเขียนโปรแกรมที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ (OOP : Object-Oriented Programming) โปรแกรมที่เขียนขึ้นถูกสร้างภายในคลาส ดังนั้นคลาสคือที่เก็บเมทอด (Method) หรือพฤติกรรม (Behavior) ซึ่งมีสถานะ (State) และรูปพรรณ (Identity) ประจำพฤติกรรม (Behavior)
การโปรแกรมเชิงวัตถุ (OOP = Object-Oriented Programming)
การเขียนโปรแกรมที่ประกอบด้วยกลุ่มของวัตถุ(Objects) แต่ละวัตถุจะจัดเป็นกลุ่มในรูปของคลาส ซึ่งแต่ละคลาสอาจมีคุณสมบัติ การปกป้อง (Encapsulation) การสืบทอด (Inheritance) การพ้องรูป (Polymorphism)
แนวคิดของการโปรแกรมเชิงวัตถุ (OOP Concepts)
1. การปกป้อง (Encapsulation)
– การรวมกลุ่มของข้อมูล และกลุ่มของโปรแกรม เพื่อการปกป้อง และเลือกตอบสนอง
2. การสืบทอด (Inheritance)
– ยอมให้นำไปใช้ หรือเขียนขึ้นมาทดแทนของเดิม
3. การพ้องรูป (Polymorphism) = Many Shapes
– Overloading มีชื่อโปรแกรมเดียวกัน แต่รายการตัวแปร (Parameter List) ต่างกัน
– Overriding มีชื่อโปรแกรม และตัวแปรเหมือนกัน เพื่อเขียน behavior ขึ้นมาใหม่

คุณลักษณะเด่นของภาษา Java

–  ภาษา Java เป็นภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุแบบสมบูรณ์
–  โปรแกรมที่เขียนขึ้นโดยใช้ภาษา Java จะมีความสามารถทำงานได้ในระบบปฏิบัติการที่แตกต่างกัน ไม่จําเป็นต้องดัดแปลงแก้ไขโปรแกรม เช่น หากเขียนโปรแกรมบนเครื่อง Sun โปรแกรมนั้นก็สามารถถูก compile และ run บนเครื่องพีซีธรรมดาได้
–  เมื่อเปรียบเทียบ code ของโปรแกรมที่เขียนขึ้นโดยภาษา Java กับ C++ พบว่า โปรแกรมที่เขียนโดยภาษา Java จะมีจํานวน code น้อยกว่าโปรแกรมที่เขียนโดยภาษา C++ ถึง 4 เท่า และใช้เวลาในการเขียนโปรแกรม น้อยกว่าประมาณ 2 เท่า
–  Java มี security ทั้ง low level และ high level ได้แก่ electronic signature, public andprivate key management, access control และ certificatesของภาษาจาวา

จุดเด่นของภาษาจาวา

–  ความง่าย (simple)
–  ภาษาเชิงออปเจ็ค (object oriented)
–  การกระจาย (distributed)
–  การป้อ้องกันการผิดพลาด (robust)
–  ความปลอดภัย (secure)
–  สถาปัตัตยกรรมกลาง (architecture neutral)
–  เคลื่อนย้ายง่าย (portable)
–  อินเตอร์พ์พรีต (interpreted)
–  ประสิทธิภาพสูง (high performance)
–  มัลติเธรด (multithreaded)
–  พลวัต (dynamic)







รูปแบบของภาษา Java

ภาษา Java เป็นภาษาที่ไม่กำหนดแบบการเขียนโปรแกรม ในแต่ละบรรทัด แต่ละบรรทัดสามารถเขียนคำสั่งได้หลายคำสั่งสามารถแทรกคำอธิบาย (comment) Java เป็นภาษาที่บังคับอักขระตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก (Case Sensitiv) Java มีตัวดำเนินการ(operators) หลายชนิด ให้ใช้งานนอกจากคำสั่งนั้นเป็นคำสั่งที่ผู้ใช้สร้างขึ้นมาใหม่ อาจกำหนดเป็นตัวพิมพ์ใหญ่หรือตัวเล็กก็ได้ และสามารถเขียนชุดคำสั่งที่ประกอบด้วยตัวดำเนินการหลายตัวที่ต่างชนิดกันในชุดคำสั่งหนึ่งๆได้ โดยภาษา Java จะจัดลำดับการประมวลผลตามลำดับการทำงานของตัวดำเนินการ
รูปแบบคำสั่ง(statements) Java คือ ส่วนประมวลผล(Execute) เพื่อให้ได้ผลลัพธ์ออกมา ทุกคำสั่งจะต้องจบด้วยเครื่องหมาย เซมิโคลอน( ; )

ที่มา
..... 6http://www.narisa.com/forums/index.php?app=blog&blogid=5&showentry=2376

ไม่มีความคิดเห็น:

แสดงความคิดเห็น