วันจันทร์ที่ 26 กรกฎาคม พ.ศ. 2553

องค์กรแห่งการเรียนรู้ (Learning Organization)

องค์การเรียนรู้ (Learning Organization) เป็นแนวคิดในการพัฒนาองค์การโดยเน้นการพัฒนาการเรียนรู้สภาวะของการเป็นผู้นำในองค์การ (Leadership) และการเรียนรู้ร่วมกัน ของคนในองค์การ (Team Learning) เพื่อให้เกิดการถ่ายทอดแลกเปลี่ยนองค์ความรู้ ประสบการณ์ และทักษะร่วมกัน และพัฒนาองค์การอย่างต่อเนื่องทันต่อสภาวะการเปลี่ยนแปลงและการแข่งขัน
การมีองค์การแห่งการเรียนรู้นี้จะทำให้องค์การและบุคลากร มีกระบวนการทำงานที่มีประสิทธิภาพและมีผลการปฏิบัติงานที่มีประสิทธิผล โดยมีการเชื่อมโยงรูปแบบของการทำงานเป็นทีม (Team working) สร้างกระบวนการในการเรียนรู้และสร้างความเข้าใจเตรียมรับกับความเปลี่ยนแปลง เปิดโอกาสให้ทีมทำงานและมีการให้อำนาจในการตัดสินใจ (Empowerment) เพื่อเป็นการส่งเสริมให้เกิดบรรยากาศของการคิดริเริ่ม (Initiative) และการสร้างนวัตกรรม (Innovation) ซึ่งจะทำให้เกิดองค์การที่เข้มแข็ง พร้อมเผชิญกับสภาวะการแข่งขัน
Learning Organization หรือ การทำให้องค์การเป็นองค์การแห่งการเรียนรู้ เป็นคำที่ใช้เรียกการรวมชุดของความคิดที่เกิดขึ้นมาจากการศึกษาเรื่องขององค์การ Chris Argyris ได้ให้แนวคิดทางด้าน Organization Learning ร่วมกับ Donald Schon ไว้ว่า เป็นกระบวนการที่สมาชิกขององค์การให้การตอบสนองต่อการเปลี่ยนแปลงของสภาพแวดล้อมภายในและภายนอก ด้วยการตรวจสอบและแก้ไขข้อผิดพลาดที่เกิดขึ้นเสมอ ๆ ในองค์การ
ความรู้จาก Organization Learning เป็นหลักการที่ Peter Senge ได้รวบรวมจากแนวคิดของ Chris Argyris และ Donald Schon รวมถึงนักวิชาการท่านอื่น มาเขียนหนังสือเล่มแรกเกี่ยวกับ Learning Organization ซึ่งมีชื่อว่า .”The Fifth Discipline”
แนวคิดของ Learning Organization
Chris Argyris และ Donald Schon ได้ให้คำนิยามการเรียนรู้สองรูปแบบที่มีความสำคัญในการสร้าง Learning Organization คือ Single Loop Learning ( First Order / Corrective Learning) หมายถึง การเรียนรู้ที่เกิดขึ้นแก่องค์การเมื่อการทำงานบรรลุผลที่ต้องการลักษณะการเรียนรู้แบบที่สองเรียกว่า Double Loop Learning (Second Oder/Generative Learning)หมายถึงการเรียนรู้ที่เกิดขึ้นเมื่อสิ่งที่ต้องการให้บรรลุผลหรือเป้าหมายไม่สอดคล้องกับผลการกระทำ
Peter Senge เชื่อว่าหัวใจของการสร้าง Learning Organization อยู่ที่การสร้างวินัย 5 ประการในรูปของการนำไปปฏิบัติของบุคคล ทีม และองค์การอย่างต่อเนื่อง วินัย 5 ประการที่เป็นแนวทางสนการปฏิบัติเพื่อสร้างกระบวนการเรียนรู้ทั้งองค์การมีดังนี้
1. Personnal Mastery : มุ่งสู่ความเป็นเลิศ และรอบรู้ โดยมุ่งมั่นที่จะพัฒนาตนเองให้ไปถึงเป้าหมายด้วย การสร้างวิสัยทัศน์ส่วนตน (Personal Vission) เมื่อลงมือกรทำและต้องมุ่งมั่นสร้างสรรจึงจำเป็นต้องมี แรงมุ่งมั่นใฝ่ดี (Creative Tention) มีการใช้ข้อมูลข้อเท็จจริงเพื่อคิดวิเคราะห์และตัดสินใจ (Commitment to the Truth) ที่ทำให้มีระบบการคิดตัดสินใจที่ดี รวมทั้งใช้การฝึกจิตใต้สำนึกในการทำงาน (Using Subconciousness) ทำงานด้วยการดำเนินไปอย่างอัตโนมัติ
2. MentalModel มีรูปแบบวิธีการคิดและมุมมองที่เปิดกว้าง ผลลัพธ์ที่จะเกิดจากรูปแบบแนวคิดนี้จะออกมาในรูปของผลลัพธ์ 3 ลักษณะคือ เจตคติ หมายถึง ท่าที หรือความรู้สึกของบุคคลต่อสิ่งใดสิ่งหนึ่ง เหตุการณ์ หรือเรื่องราวใด ๆ ทัศนคติแนวความคิดเห็นและกระบวนทัศน์ กรอบความคิด แนวปฏิบัติที่เราปฏิบัติตาม ๆ กันไป จนกระทั่งกลายเป็นวัฒนธรรมขององค์การ
3. Shared Vission การสร้างและสานวิสัยทัศน์ วิสัยทัศน์องค์การ เป็นความมุ่งหวังขององค์การที่ทุกคนต้องร่วมกันบูรณาการให้เกิดเป็นรูปธธรรมในอนาคต ลักษณะวิสัยทัศน์องค์การที่ดี คือ กลุ่มมผู้นำต้องเป็นฝ่ายเริ่มน้นเข้าสู่กระบวนการพัฒนาวิสัยทัศน์อย่างจริงจัง วิสัยทัศน์นั้นจะต้องมีรายละเอียดชัดเจน เพียงพอที่จะนำไปเป็นแนวทางปฏิบัติได้ วิสัยทัศน์องค์การต้องเป็นภพบวกต่อองค์การ
4. Team Learn การเรียนรู้ร่วมกันเป็นทีม องค์การความมุ่งเน้นให้ทุกคนในทีมมีสำนึกร่วมกันว่า เรากำลังทำอะไรและจะทำอะไรต่อไป ทำอย่างไร จะช่วยเพิ่มคุณค่าแก่ลูกค้า การเรียนรู้ร่วมกันเป็นทึมขึ้นกับ 2 ปัจจัย คือ IQ และ EQ ประสานกับการเรียนรู้ร่วมกันเป็นทึม และการสร้างภาวะผู้นำแก่ผู้นำองค์การทุกระดับ
5. System Thinking มีความคิดความเข้าใจเชิงระบบ ทุกคนควรมีความสามารถในการเข้าใจถึงความสัมพันธ์ระหว่างสิ่งต่าง ๆ ที่เป็นองค์ประกอบสำคัญของระบบนอกจากมองภาพรวมแล้ว ต้องมองรายละเอียดของส่วนประกอบย่อยในภาพนั้นให้ออกด้วย วินัยข้อนี้สามารถแก้ไขปัญหาที่สลับซับซ้อนต่าง ๆ ได้เป็นอย่างดี
ข้อจำกัดในการปรับใช้แนวคิดของ Learning Organization
Model ของ Learning Organization ไม่ได้เจาะจงวัฒนธรรมองค์การใดองค์การหนึ่งและไม่ได้วิเคราะห์ถึงข้อจำกัดด้านวัฒนธรรมองค์การทำให้ไม่ประสบความสำเร็จตามที่คาดหวัง กระบวนการในการนำ Learning Organization ไปใช้ยังไม่ชัดเจนขาดคนที่รู้จริง
ขอบเขตของการนำ Learning Organization กว้างมากทำให้ควบคุมได้ยาก ดัชนีที่ใช้วัดองค์การที่มีความเป็น Learning Organization ไม่ชัดเจน และการใช้เวลายาวนานในการมุ่งไปสู่การเป็น Learning Organization ทำให้ขาดกำลังใจ และหากมีการเปลี่ยนผู้นำ ความสนใจที่จะกระตือรือร้นต่อการเปลี่ยนแปลงของพนักงานในองค์การจะหายไป องค์ประกอบสำคัญของ Learning Organization จากมุมมองแบบCapability Perspective ในช่วงทศวรรษที่ผ่านมามีองค์การจำนวนมากที่พูดถึงแนวคิดของ Learning Organization แต่ยังขาดแนวทางและขั้นตอนที่ชัดเจนที่จะทำให้องค์การสามารถไปสู่ Learning Organization ได้อย่างแท้จริง โดยนักเขียนจำนวนมากได้พยายามคิดค้นหาองค์ประกอบต่าง ๆ ที่เหมาะสมต่อการเรียนรู้ทั่วทั่งองค์การ และสภาปนาองค์ประกอบเหล่านี้ไม่ครบถ้วนก็ยากที่จะปรับเปลี่ยนไปสู่การเป็น Learning Organization ได้อย่างสมบูรณ์
Peter Senge เป็นคนหนึ่งที่กำหนดองค์ประกอบที่จำเป็นสำหรับ Learning Organizationโดยร่วมกับทีมงานสรรหาองค์ประกอบที่จำเป็นจากหลายบริษัทในสหรัฐอเมริกา และค้นพบวินัย 5 ประการ ที่จำเป็นสำหรับการที่จะทำให้องค์การนั้น ๆ กลายเป็น Learning Organization
โดยการนำแนวคิดของ Senge ทำให้เขากลายเป็นปรมาจารย์ ด้าน Learning Organization ที่มีผู้รู้จักมากที่สุด ต่อมา Nevis และทีมงาน ได้นำเสนองานวิจัยชิ้นหนึ่งที่ได้เปลี่ยนแนวคิดกับการพัฒนา Learning Organization ไปอย่างสิ้นเชิง และได้สรุปพื้นฐานที่สำคัญต่อการ Learning Organization ไว้ 4 ประการ
องค์การทุกแห่งมีระบบการเรียนรู้ของตนเอง (All Organization Are Learning System)
รูปแบบการเรียนรู้ขององค์การสอดคล้องกับวัฒนธรรมองค์การ (Learning Comforms to Culture)
รูปแบบการเรียนรู้ผันแปรตามระบบการเรียนรู้ขององค์การ (Style Varies between Learning System)
มีกระบวนการพื้นฐานที่สามารถใช้เพื่อเสริมสร้างการเรียนรู้ขององค์การ (Generic Processes Facilitate Learning)
มุมมองที่สองนี้ได้มององค์การในทางบวกซึ่งตรงข้ามกับมุมมองแรกโดยได้มองว่าสิ่งที่องค์การควรทำเพื่อเสริมสร้างให้เกิด Learning Organization คือ การสร้างความแข็งแกร่งให้กับรูปแบบการเรียนรู้ที่เหมาะสมกับวัฒนธรรมขององค์การ การนำเอาวิธรการเรียนรู้แบบใหม่เข้าสู่องค์การจะต้องมีการพิจารณาว่าเหมาะสมกับวัฒนธรรมองค์การหรือไม่ และจะพิจารณาเปลี่ยนแปลงก็ต่อเมื่อรูปแบบการเรียนรู้ปัจจุบันไม่สามารถสร้างความได้เปรียบเชิบธุรกิจเหนือคู่แข่งทั้งในปัจจุบันและในอนาคนแล้วเท่านั้น โดยที่ Div Bella และ Nevis ได้เรียกมุมมองที่สองนี้ว่า Capability Perspective คือ เป็นการสร้าง Learning Organization จะขึ้นอยู่กับสมรรถภาพขององค์การเป็นหลักและเรียกมุมมองแบบที่หนึ่ง Normative Perspective คือ ไม่ว่าจะเป็นองค์การใดแนวทางการสร้าง Learning Organization จะเป็นแบบเดียวกันหมด ซึ่งจะมีปัญหาก็คือองค์การมีความเสี่ยงต่อการต่อต้านจากพนักงานสูงมาก และระยะเวลาในการปรับเปลี่ยนอาจใช้เวลานาน ทั้งนี้เนื่องมาจากองค์การแต่ละองค์การมีวัฒนธรรมองค์การที่าแตกต่างกัน การพยายามเปลี่ยนวิธีการเรียนรู้อย่างสิ้นเชิงย่อมทำได้ยากและใช้ระยะเวลานานในการพัฒนาองค์การ
องค์ประกอบขององค์การแห่งการเรียนรู้
องค์การแห่งการเรียนรู้ คือ การพัฒนาศักยภาพและขีดความสามารถของคนทำงานบนพื้นฐานของการเรียนรู้ (Learning Base) โดยมีกระบวนการ ดังนี้
1. กำหนดกลยุทธ์ที่เหมาะสมในเชิงปฏิบัติการ คือ
1.1 กลยุทธ์ชี้นำ (Surge Strategy) โดยคณะผู้บริหารระดับสูงร่วมรับผิดชอบและสนับสนุน
1.2 กลยุทธ์ปลูกฝัง(Cultivate Strategy) โดยให้คณะทำงานในสายงานด้านทรัพยากรบุคคลเป็นผู้รับผิดชอบ
1.3 กลยุทธ์ปฏิรูป (Transform Strategy) โดยคณะทำงานพิเศษจากทุก ๆ หน่วยงานในองค์การมาร่วมกันรับผิดชอบดำเนินการ
2. กำหนดแผนงานให้ชัดเจน ดังนี้
2.1 ปรับโครงสร้างในการบริหารให้เป็นการทำงานแบบทีม
2.2 จัดทำแผนทรัพยากรบุคคลให้สอดคล้องกับโครงสร้างในการบริหารงานให้มีลักษณะเป็นหารทำงานเป็นทีม โดยวางแผนพัฒนาองค์ความรู้ โดยการฝึกอบรม และพัฒนาประสบการณ์พร้อมทักษะจากการเรียนรู้ในที่ทำงาน
2.3 จัดทำแผนพัฒนาโครงสร้างพื้นฐานด้านอุปกรณ์ต่าง ๆ ที่จำเป็นต้องใช้ประกอบการฝึกอบรม และการเรียนรู้ประเภทต่าง ๆ เช่น ห้องฝึกอบรม ห้องประชุม โสตทัศนูปกรณ์ เป็นต้น
3. เปิดโอกาสให้ทุกคนได้รับรู้กลไกของการพัฒนาและผลกระทบทุก ๆ ด้านที่จะเกิดขึ้นจากการเปลี่ยนแปลง
4. พัฒนาพื้นฐานสำคัญขององค์การเรียนรู้ดังนี้
4.1 มุ่งสู่ความเป็นเลิศ (Personal Mastery) เพื่อให้เก่งในทุก ๆ ด้าน เก่งในการเรียนรู้ เก่งคิด เก่งทำ มีไหวพริบปฏิภาณ มีความเพียรพยายามตั้งแต่เยาว์วัยและใฝ่รู้อย่างเสมอต้นเสมอปลาย เพื่อให้สอดคล้องกับโลกยุคโลกาภิวัตน์ซึ่งเป็นโลกแห่งการเรียนรู้ (Knowledge-based) ที่ต้องมีการเรียนรู้ไปตลอดชีวิต โดยมีการคำนึงถึงประเด็นต่าง ๆ เหล่านี้
การสร้างวิสัยทัศน์ส่วนตน (Personal Vission) ซึ่งได้แก่ความคาดหวังของแต่ละคนที่ต้องการจะให้สิ่งต่าง ๆ เกิดขึ้นจริงในชีวิตของตน
มุ่งมั่นสร้างสรรค์ (Creative Tension) มีความขยัน ใฝ่ดี มีพัฒนาการอยู่ตลอดเวลา
ใช้ข้อมูลเพื่อวิเคราะห์และตัดสินใจ เพื่อให้มีระบบคิด และการตัดสินใจที่ดี
ฝึกใช้จิตใต้สำนึก (Subconcious) สั่งงาน เพื่อให้กากรทำงานเป็นไปโดยอัตโนมัติ และได้ผลงานที่ดี
4.2 รูปแบบวิธีการคิดและมุมมองที่เปิดกว้าง (Mental Model) ซึ่งเกี่ยวข้องกับประสบการณ์ที่ได้สะสมมาตั้งแต่เด็กกับพื้นฐานของวุฒิภาวะทางอารมณ์ของแต่ละบุคคล ทำให้ความคิดและความเข้าใจของแต่ละคนแตกต่างกัน และหากปล่อยให้ต่างคนต่างคิดจะกลายเป็นปัญหาใหญ่เพราะมีการยึดติด กับรูปแบบและวิธีการที่ตนเองคุ้นเคย ทำให้เป็นอุปสรรคต่อการเปลี่ยนแปลงและการปรับตัว
4.3 การสร้างและสานวิสัยทัศน์ (Share Value) ให้ทุกคนได้รู้ได้เข้าใจ จะได้สนับสนุนและมีส่วนร่วมในการดำเนินการให้เป็นรูปธรรม โดยมีการนำวิสัยทัศน์ที่ได้สร้างขึ้นมาเป็นเป้าหมายของการกำหนดแผนกลยุทธ์ เพื่อสานให้วิสัยทัศน์เป็นจริงด้วยแผนการปฏิบัติต่อไป
4.4 การเรียนรู้ร่วมกันเป็นทีม (Team Learn) เป็นการเน้นการทำงานเป็นทีมโดยให้ทุกคนในทีมงานใช้วิจารณญาณร่วมกันตลอดเวลาว่า กำลังทำงานอะไร จะทำให้ดีขึ้นอย่างไร เป็นการเรียนรู้ร่วมกันแลกเปลี่ยนประสบการณ์ซึ่งกันและกัน ช่วยเหลือเกื้อกูลสามัคคี ขยันคิด ขยันเรียนรู้ และขยันทำด้วยความเชื่อว่าการเรียนรู้ในลักษณะนี้จะช่วยเสริมสร้างอัจฉริยะภาพของทีมงาน
4.5 ความคิดความเข้าใจเชิงระบบ (System Thinking) เพื่อให้ทุกคนมีความเข้าใจชัดเจนถึงความสัมพันธ์ของสิ่งต่าง ๆ ทำให้มองทุกสิ่งทุกอย่างเป็นภาพรวม จะได้สามารถเผชิญกับภาวะวิกฤติ และการแข่งขันได้
5. พัฒนาพนักงานในระดับผู้นำองค์การ ไม่ว่าจะเป็นหัวหน้าโครงการ หรือหัวหน้าทีมงาน ให้มีความเข้าใจบทบาทของผู้นำในองค์การเรียนรู้จะได้มีการปฏิบัติติให้มีคุณลักษณะเป็นผู้มีความคิดริเริ่มสร้างสรรค์ เป็นผู้ถ่ายทอดความรู้ และเป็นผู้ให้การสนับสนุนผู้อื่นในการปฏิบัติงานให้ราบรื่น
6. มอบหมายพันธกิจ (Mision) และกระบวนงานต่าง ๆ แก่ทีมงานเพื่อให้สามารถบริหารและรับผิดชอบด้วยตัวเองได้ เป็นการเพื่ออำนาจให้แก่พนักงาน จะได้เกิดความคล่องตัว
7. สร้างวัฒนธรรมองค์การด้านการพัฒนา และปรับปรุงงานให้ดีขึ้นตลอดเวลา
8. ทำการประเมินผล (Assessment) เพื่อปรับปรุงผลงานเสมอ
Learning Organization transformation Process
ในการพัฒนา Learning Organization ในเชิง Capability Perspective ในมุมมองของ DI bella&Schein ที่เป็นรูปธรรมประกอบด้วย 3 ขั้นตอนหลัก คือ
ขั้นที่ 1 การวินิจฉัยวัฒนธรรมองค์การและประเมินรูปแบบการเรียนรู้ มีหลายองค์การที่ประสบความล้มเหลวจาการนำโปรแกรมสำเร็จรูปเพื่อสร้าง Learning Organization เข้ามาใช้โดยพิจารณาถึงความสอดคล้องกับวัฒนธรรมองค์การ ทั้งปัญหาการต่อต้านจากพนักงาน หรือการไม่สามารถบรรลุเป้าหมายที่ได้ตั้งไว้ถึงแม้จะจบสิน้นโครงการไปแล้วก็ตาม หาไม่ได้รับการวิเคราะห์ คัดเลือก วางแผน และจัดการอย่างเหมาะสม
การปรับเปลี่ยนไปสู่ Learning Organization ที่มีวัฒนธรรรมการเรียนรู้อย่างยั่งยืนย่อมไม่สามารถเกิดขึ้นได้อย่างแน่นอน การประเมินสถานะปัจจุบันประกอบด้วย 2 ส่วน คือการวินิจฉัยวัฒนธรรมองค์การ และการประเมินรูปแบบการเรียนรู้
การวินิจฉัยวัฒนธรรมองค์การ (Culture Diagnosis) ได้แบ่งวัฒนธรรมองค์การออกเป็น 3 ระดับ ในระดับแรกคือ Artifacts โดยสามารถเรียนรู้ได้จากการสังเกตด้วยตา เช่น การจัดการแผนผัง (Layout) ของบริษัท การแต่งกายของพนักงาน
ระดับที่ 2 คือ Espaused Values เป็นค่านิยมที่ทุกคนในองค์การสื่อถึงกันว่าอะไรเป็นสิ่งที่ดูกต้องควรทำ ซึ่งโดยมากจะถูกกำหนดโดยผู้นำขององค์การตั้งแต่ยุคก่อตั้งบริษัท
ระดับที่ 3 คือ Basic Underlining Assumtion เป็นความเชื่อ การรับ ความคิด และความรู้สึกที่กำหนดพฤติกรรมของคนในองค์การและเป็นระดับที่ยากที่สุดในการทำความเข้าใจและดึงออกมาให้เห็นเป็นรูปธรรม
Schein ได้ยกตัวอย่างค่อนข้างชัดเจนที่เกี่ยวกับความซับซ้อนในการประเมินวัฒนธรรมองค์การที่จะเข้าใจวัฒนธรรมองค์การอย่างแท้จริง จะสามารุทำได้โดยการสัมภาษณ์เท่านั้น เช่นบริษัทแห่งหนึ่งมีการจัดสำนักงานแบบเปิด (Open Space)ซึ่งแสดงให้เห็นArtifacts ที่ชัดเจน ทั้งนี้เป็นเพราะองค์การให้ความสำคัญกับค่านิยม Team Work และ Communication (Espaused Values)
แต่เมื่อได้สัมภาษณ์กับพนักงานหลัก ๆ ที่อยู่กับองค์การมานานกลับพบว่าระบบการประเมินผลงาน ให้รางวัลและการเลื่อนตำแหน่ง ล้วนผูกกับความสามารถส่วนบุคคลทั้งสิ้น จึงทำให้ทราบว่า Basic Underlining Assumption นั้นแท้จริงแล้วกลับเน้นที่การทำงานเพื่อปัจเจกบุคคลเป็นหลัก
การประเมินรูปแบบการเรียนรู้ (Learning Orientation Assessment)
การพิจารณารูปแบบการเรียนรู้ขององค์การ (Learning Orientation) นับเป็นขึ้นตอนที่สำคัญที่ต้องทำทันทีควบคู่กันไปกับการวินิจฉัยวัฒนธรรมองค์การ โดยองค์การจะเลือกรูปแบบการเรียนรู้ให้สอดคล้องกับวัฒนธรรมและสมรรถภาพขององค์การ โดยทั่วไปมีอยู่ด้วยกัน 7 ประเภท คือ
1.วิธีการหาความรู้ (Knowledge Source)
2.โฟกัสที่เนื้อหาหรือที่กระบวนการ (Content -process Focus)
3.การเก็บความรู้ (Knowledge Reserve)
4.วิธีการเผยแพร่ความรู้ (Dissemination Mode)
5.ขอบเขตการเรียนรู้ (Learning Scope)
6.Value Focus
7.Learn Focus
รูปแบบการเรียนรู้เหล่านี้ไม่มีสูตรสำเร็จว่าอะไรคือรูปแบบที่เหมาะสม เนื่องจากเป็นโครงสร้างที่ช่วยให้ทราบว่าองค์การมีการเรียนรู้อย่างไร (How Organization Learn)
ขั้นที่ 2 การวิเคราะห์เชิงกลยุทธ์ และการพัฒนากลยุทธ์เพื่อสร้าง Learning Organization
แนวทางหนึ่งที่นิยมใช้ คือ SWOT ซึ่งเป็นการวิเคราะห์หาจุดแข็ง จุดอ่อน โอกาส และอุปสรร เพื่อดูว่าโครงสร้างองค์การในปัจจุบันเหมาะสมกับสภาพแวดล้อมหรือไม่ แนวทางการพัฒนา Learning Organization คือการทำให้วิธีการเรียนรู้ที่องค์การใช้อยู่มีความแข็งแกร่งจนคู่แข่งตามไม่ทันกลยุทธ์ที่ใช้ในการพัฒนาองค์การแห่งการเรียนรู้มีดังต่อไปนี้
1. เน้นการปรับปรุง Facilitating Factors ในกรณีที่วัฒนธรรมองค์การและรูปแบบการเรียนรู้ ทำให้เกิดความได้เปรียบในทางธุรกิจ
2. เน้นการปรับเปลี่ยนวัฒนธรรมองค์การและรูปแบบการเรียนรู้ควบคู่กับการปรับปรุง Facilitating Factors
ในกรณีที่วัฒนธรรมองค์การและรูปแบบการเรียนรู้กลายเป็นจุดอ่อนขององค์การ
ขั้นที่ 3 กระบวนการปรับเปลี่ยนไปสู่ Learning Organization ครอบคลุม 2 วิธีการ คือ
การปรับปรุง Facilitating Factors แบ่งเป็น 10 แนวทาง คือ
1.Scanning Imparative การกระตุ้นให้พนักงานองค์การกระตือรือร้นเพื่อหาข้อมูลภายนอกองค์การ
2.Concern for Measurement การทำให้ทุกฝ่ายเห็นความสำคัญของผลต่างระหว่างระดับการปฏิบัติที่เป็นอยู่
3.Performance Gap การทำให้ทุกคนตื่นตัวและเห็นความสำคัญของผลต่างระหว่างระดับการปฏิบัติที่เป็นอยู่
4.Organization Curiousity การทำให้เกิดบรรยากาศในการทดลองความคิดใหม่ ๆ
5.Climate of Openness การทำให้หน่วยงานต่าง ๆ เชื่อใจซึ่งกันและกัน
6.Contious Education การสนับสนุนให้เกิดการศึกษาอย่างต่อเนื่องในหมู่พนักงาน
7.Operational Variety การทำให้พนักงานยอมรับวิธีการทำงานใหม่ ๆ
8.Multiple Leadership การทำให้เกิดผู้สนับสนุนในการเรียนรู้ เริ่มจากผู้จัดการในแต่ละส่วนงาน
9.Innovation Leadership การให้ผู้บริหารมีส่วนร่วมในการเรียนรู้ของพนักงานเพื่อสนับสนุนในทุกกิจกรรม
10.System Perspective การทำให้มองเห็นภาพการทำงานของทุกหนวนในองค์การอย่าเป็นระบบ เช่น การใช้ Job Rotation

นายวีระยุทธ สุสม
49043494343
sec.02
วิชา ระบบสารสนเทศเพื่อบริหารงานบุคคล
ที่มา : http://www.bloggang.com/mainblog.php?id=wbj&month=07-12-2007&group=29&gblog=11

วันศุกร์ที่ 23 กรกฎาคม พ.ศ. 2553

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

ภาษาคอมพิวเตอร์หมายถึงภาษาใดๆที่ผู้ใช้งานใช้สื่อสารกับคอมพิวเตอร์หรือคอมพิวเตอร์ด้วยกันแล้วคอมพิวเตอร์สามารถทำงานตามคำสั่งนั้นได้คำนี้มักใช้เรียกแทนภาษาโปรแกรม แต่ความเป็นจริงภาษาโปรแกรมคือส่วนหนึ่งของภาษาคอมพิวเตอร์เท่านั้น และมีภาษาอื่นๆที่เป็นภาษาคอมพิวเตอร์เช่นกันยกตัวอย่างเช่นHTMLเป็นทั้งภาษามาร์กอัปและภาษาคอมพิวเตอร์ด้วยแม้ว่ามันจะไม่ใช่ภาษาโปรแกรม หรือภาษาเครื่องนั้นก็นับเป็นภาษาคอมพิวเตอร์ ซึ่งโดยทางเทคนิคสามารถใช้ในการเขียนโปรแกรมได้ แต่ก็ไม่จัดว่าเป็นภาษาโปรแกรม
ภาษาคอมพิวเตอร์สามารถแบ่งออกเป็นสองกลุ่มคือภาษาระดับสูง(highlevel)และภาษาระดับต่ำ(low level)ภาษาระดับสูงถูกออกแบบมาเพื่อให้ใช้งานง่ายและสะดวกสบายมากกว่าภาษาระดับต่ำ โปรแกรมที่เขียนถูกต้องตามกฎเกณฑ์และไวยากรณ์ของภาษาจะถูกแปล(compile)ไปเป็นภาษาระดับต่ำเพื่อให้คอมพิวเตอร์สามารถนำไปใช้งานหรือปฏิบัติตามคำสั่งได้ต่อไปซอฟต์แวร์สมัยใหม่ส่วนมากเขียนด้วยภาษาระดับสูง แปลไปเป็นออบเจกต์โค้ด(object code) แล้วเปลี่ยนให้เป็นชุดคำสั่งในภาษาเครื่อง
ภาษาคอมพิวเตอร์อาจแบ่งกลุ่มได้เป็นอีกสองประเภทคือภาษาที่มนุษย์อ่านออก(human-readable)และภาษาที่มนุษย์อ่านไม่ออก(nonhuman-readable)ภาษาที่มนุษย์อ่านออกถูกออกแบบมาเพื่อให้มนุษย์สามารถเข้าใจและสื่อสารได้โดยตรงกับคอมพิวเตอร์(แทบทุกชนิดเป็นภาษาอังกฤษ)ส่วนภาษาที่มนุษย์อ่านไม่ออกจะมีโค้ดบางส่วนที่ไม่อาจอ่านเข้าใจได้แต่ออกแบบมาเพื่อให้โค้ดกระชับซึ่งคอมพิวเตอร์จะสามารถประมวลผลได้ง่ายกว่า
ภาษาคอมพิวเตอร์ หมายถึงโปรแกรมหรือชุดคำสั่งที่โปรแกรมเมอร์เขียนเพื่อใช้สั่งงานตามรูปแบบและโครงสร้างของภาษาซึ่งแบ่งได้ 3 ระดับดังนี้คือ
ภาษาระดับต่ำ (Low Level Language) เป็นภาษาที่มนุษย์ทำความเข้าใจได้ยาก ส่วนใหญ่ต้องมความเข้าใจเกี่ยวกับสถาปัตยกรรมคอมพิวเตอร์ และฮาร์ดแวร์เป็นอย่างดีจึงจะสามารถ
เขียนโปรแกรมสั่งงานได้ มีข้อดีในส่วนที่เขียนโปรแกรมควบคุมฮาร์ดแวร์ แต่ละส่วนได้โดยตรงจึงทำงานได้เร็วแต่ไม่เหมาะที่จะใช้ในการพัฒนาโปรแกรมตัวอย่างของภาษาระดับต่ำได้แก่ภาษาเครื่อง(MachineLanguage)และภาษาแอสเซมบลี้ (Assembly Language) เป็นต้น
ภาษาระดับกลาง (Medium Level Language)เป็นภาษาที่ทำความเข้าใจได้ไม่ยากนัก เพราะมีลักษณะเป็นภาษาแบบโครงสร้าง ทำความเข้าใจได้ เหมือนกับภาษาระดับสูง แต่ทำงานได้รวดเร็วเหมือนกับภาษาระดับต่ำ สามารถใช้บนเครื่องที่มีความเร็วต่างกันโดยไม่ต้องดัดแปลงภาษาระดับกลางได้นำข้อดีของภาษาระดับต่ำ และระดับสูงมาพัฒนาเป็นภาษาระดับกลางดังนั้นภาษาระดับกลางจึงเป็นที่นิยมใช้กันแพร่หลาย ตัวอย่างของภาษาระดับกลางได้ภาษาซี เป็นต้น
ภาษาระดับสูง (High Level Language)เป็นภาษาที่ทำความเข้าใจได้ง่าย มีลักษณะ ของการใช้คำสั่งเป็นภาษาอังกฤษ ซึ่งใกล้เคียงกับภาษามนุษย์มาก การสั่งให้คอมพิวเตอร์ทำงาน จะต้องมีการแปลความหมายของคำสั่ง โดยใช้ตัวแปลภาษาทีละชุดคำสั่งที่เรียกว่า Interpreter หรือ แปลครั้งเดียวทั้งโปรแกรมที่เรียกว่า Compiler
ตัวอย่างภาษาคอมพิวเตอร์
ภาษาโปรแกรม คือภาษาประดิษฐ์ที่สามารถใช้ควบคุมกำหนดพฤติกรรมการทำงานของเครื่องจักรได้ โดยเฉพาะคอมพิวเตอร์ ภาษาโปรแกรมก็เหมือนภาษามนุษย์ที่จะต้องใช้วากยสัมพันธ์ (syntax)และความหมาย (semantic)เพื่อกำหนดโครงสร้างและตีความหมายตามลำดับ ภาษาโปรแกรมช่วยให้การสื่อสารในภารกิจสารสนเทศสะดวกมากขึ้นและถูกต้องแม่นยำตามขั้นตอนวิธี (algorithm) ในโลกนี้มีภาษาโปรแกรมมากกว่า 8,500 ภาษาที่แตกต่างกันไปและก็ยังมีภาษาใหม่เกิดขึ้นทุกๆ ปี ผู้ที่ใช้งานภาษาโปรแกรมเพื่อเขียนโปรแกรมเรียกว่า โปรแกรมเมอร์ (programmer)
ลักษณะของภาษาโปรแกรม
ภาษาโปรแกรมแต่ละภาษาสามารถพิจารณาว่าเป็นเซตของข้อกำหนดอย่างเป็นทางการของวากยสัมพันธ์ ศัพท์ และความหมายข้อกำหนดเหล่านี้มักรวมถึงข้อมูล และโครงสร้างข้อมูลคำสั่ง และลำดับการทำงานปรัชญาในการออกแบบ
สถาปัตยกรรมของภาษาภาษาส่วนใหญ่ที่มีการใช้งานอย่างกว้างขวาง หรือมีการใช้งานในระยะเวลาพอสมควร จะมีกลุ่มทำงานเพื่อสร้างมาตรฐาน ซึ่งมักจะมีการพบปะกันเป็นระยะๆ เพื่อสร้างและจัดพิมพ์นิยามอย่างเป็นทางการของภาษา รวมถึงการปรับปรุงเพิ่มเติมภาษาด้วย
ชนิดข้อมูล
การจัดเก็บข้อมูลภายในคอมพิวเตอร์สมัยใหม่นั้น ภายในแล้วจะเก็บเป็นตัวเลขศูนย์และหนึ่ง(เลขฐานสอง)อย่างไรก็ตาม ข้อมูลมักถูกแทนสารสนเทศในชีวิตประจำวันเช่น ชื่อบุคคล เลขบัญชี หรือผลการวัด ดังนั้นข้อมูลแบบฐานสองจะถูกจัดการโดยภาษาโปรแกรม เพื่อทำให้รองรับการจัดเก็บข้อมูลที่ซับซ้อนขึ้นเหล่านี้ระบบที่ข้อมูลถูกจัดการภายในโปรแกรมเรียกว่าชนิดข้อมูลของภาษาโปรแกรม การออกแบบและศึกษาเกี่ยวกับชนิดข้อมูลเรียกว่าทฤษฎีชนิด ภาษาโปรแกรมสามารถจัดออกได้เป็นกลุ่มภาษาที่มีการจัดชนิดแบบสถิตย์และภาษาที่มีการจัดชนิดแบบพลวัต
โครงสร้างข้อมูล
โครงสร้างข้อมูล คือรูปแบบของการจัดเก็บข้อมูล ที่เกิดจากการนำเอาตัวแปรประเภทต่าง ๆ กันมาประยุกต์รวมกันเพื่อให้ง่ายต่อการที่จะนำไปใช้ ในalgorithm ต่าง ๆ
ภาษาโปรแกรมที่นิยม
ภาษาซี (C) เป็นภาษาโปรแกรมบนคอมพิวเตอร์ที่มีวัตถุประสงค์ทั่วไป พัฒนาขึ้นเมื่อ พ.ศ. 2515 (ค.ศ. 1972) โดย เดนนิส ริตชี ที่เบลล์เทเลโฟนแลบอลาทอรีส์ (Bell Telephone Laboratories) เกิดขึ้นเพื่อสร้างระบบปฏิบัติการยูนิกซ์ในขณะนั้น นอกจากภาษาซีออกแบบขึ้นมาเพื่อสร้างซอฟต์แวร์ระบบแล้วภาษาซียังสามารถใช้อย่างแพร่หลายเพื่อพัฒนาซอฟต์แวร์ประยุกต์ที่เคลื่อนย้าย (portable) ไปบนระบบอื่นได้อีกด้วย

ภาษาซีเป็นภาษาโปรแกรมหนึ่งที่ได้รับความนิยมมากที่สุดตลอดกาล มีสถาปัตยกรรมคอมพิวเตอร์เพียงส่วนน้อยเท่านั้นที่ไม่มีตัวแปลโปรแกรมของภาษาซีภาษาซีมีอิทธิพลอย่างมากต่อภาษาโปรแกรมที่นิยมอื่นๆที่เด่นชัดที่สุดก็คือภาษาซีพลัสพลัส ซึ่งเดิมเป็นส่วนขยายของภาษาซี
การออกแบบ
ภาษาซีเป็นภาษาเขียนโปรแกรมระบบเชิงเงื่อนไข(หรือเชิงกระบวนงาน)ถูกออกแบบขึ้นเพื่อใช้แปลด้วยตัวแปลโปรแกรมแบบการเชื่อมโยงที่ตรงไปตรงมา สามารถเข้าถึงหน่วยความจำในระดับล่าง เพื่อสร้างภาษาที่จับคู่อย่างมีประสิทธิภาพกับชุดคำสั่งเครื่อง และแทบไม่ต้องการสนับสนุนใด ๆ ขณะทำงาน ภาษาซีจึงเป็นประโยชน์สำหรับหลายโปรแกรมที่ก่อนหน้านี้เคยเขียนในภาษาแอสเซมบลีมาก่อนหากไม่คำนึงถึงความสามารถในระดับล่าง ภาษานี้ถูกออกแบบขึ้นเพื่อส่งเสริมการเขียนโปรแกรมที่ไม่ขึ้นอยู่กับเครื่องใดเครื่องหนึ่ง (machine-independent) โปรแกรมภาษาซีที่เขียนขึ้นตามมาตรฐานและเคลื่อนย้ายได้ สามารถแปลได้บนแพลตฟอร์มคอมพิวเตอร์และระบบปฏิบัติการต่าง ๆ อย่างกว้างขวาง โดยแก้ไขรหัสต้นฉบับเพียงเล็กน้อยหรือไม่ต้องแก้ไขเลย ภาษานี้สามารถใช้ได้บนแพลตฟอร์มได้หลากหลายตั้งแต่ไมโครคอนโทรลเลอร์ฝังตัวไปจนถึงซูเปอร์คอมพิวเตอร์
แนวคิดการทำให้เล็กที่สุด
การออกแบบของภาษาซีถูกผูกมัดอยู่กับจุดประสงค์การใช้คือเป็นภาษาเขียนโปรแกรมระบบที่เคลื่อนย้ายได้ ภาษาซีจึงจัดเตรียมการเข้าถึงวัตถุใด ๆ ที่สามารถระบุตำแหน่งได้โดยตรงและง่ายดาย (ตัวอย่างเช่น รีจิสเตอร์ควบคุมอุปกรณ์ซึ่งจับคู่อยู่กับหน่วยความจำ) และนิพจน์ในรหัสต้นฉบับสามารถแปลอย่างตรงไปตรงมาตามพฤติกรรมเป็นคำสั่งเครื่องดั้งเดิมที่ทำงานได้ ตัวแปลภาษาซีรุ่นก่อนบางตัวทำงานได้บนหน่วยประมวลผลพีดีพี ซึ่งมีบิตอ้างตำแหน่งเพียง 16 บิตได้อย่างสบาย ตัวแปลภาษาซีเช่นแอซเท็กซี (Aztec C) สำหรับแพลตฟอร์ม 8 บิตทั่วไปก็สามารถทำงานได้เช่นกัน
ลักษณะเฉพาะ
ภาษาซีมีสิ่งอำนวยสำหรับการเขียนโปรแกรมเชิงโครงสร้าง และสามารถกำหนดขอบข่ายตัวแปรและเรียกซ้ำ เช่นเดียวกับภาษาโปรแกรมเชิงเงื่อนไขส่วนใหญ่ในสายตระกูลภาษาอัลกอล ในขณะที่ระบบชนิดตัวแปรแบบอพลวัตช่วยป้องกันการดำเนินการที่ไม่ได้ตั้งใจ รหัสที่ทำงานได้ทั้งหมดในภาษาซีถูกบรรจุอยู่ในฟังก์ชัน พารามิเตอร์ของฟังก์ชันส่งผ่านด้วยค่าของตัวแปรเสมอ ส่วนการส่งผ่านด้วยการอ้างอิงจะถูกจำลองขึ้นโดยการส่งผ่านค่าพอยเตอร์ ชนิดข้อมูลรวมแบบแตกต่าง(struct)ช่วยให้สมาชิกข้อมูลที่เกี่ยวข้องกันสามารถรวมกันและจัดการได้ในหน่วยเดียว รหัสต้นฉบับของภาษาซีเป็นรูปแบบอิสระ ซึ่งใช้อัฒภาค (;)เป็นตัวจบคำสั่ง (มิใช่ตัวแบ่ง)ภาษาซียังมีลักษณะเฉพาะต่อไปนี้เพิ่มเติมตัวแปรอาจถูกซ่อนในบล็อกซ้อนกันชนิดตัวแปรไม่เคร่งครัดเช่นข้อมูลตัวอักษรสามารถใช้เป็นจำนวนเต็มเข้าถึงหน่วยความจำคอมพิวเตอร์ในระดับต่ำโดยแปลงที่อยู่ในเครื่องด้วยชนิดตัวแปรพอยเตอร์ฟังก์ชันและพอยเตอร์ข้อมูลรองรับการทำงานในภาวะหลายรูปแบบ (polymorphism)การกำหนดดัชนีแถวลำดับสามารถทำได้ด้วยวิธีรอง คือนิยามในพจน์ของเลขคณิตพอยเตอร์ตัวประมวลผลก่อนสำหรับการนิยามแมโคร การรวมไฟล์รหัสต้นฉบับ และการแปลโปรแกรมแบบมีเงื่อนไข
ความสามารถที่ซับซ้อนเช่น ไอ/โอ การจัดการสายอักขระ และฟังก์ชันทางคณิตศาสตร์ รวมอยู่ในไลบรารีคำหลักที่สงวนไว้มีจำนวนค่อนข้างน้อยตัวดำเนินการแบบประสมจำนวนมาก อาทิ +=, -=, *=, ++ ฯลฯ
โครงสร้างการเขียน คล้ายภาษาบีมากกว่าภาษาอัลกอล ตัวอย่างเช่น ใช้วงเล็บปีกกา { ... } แทนที่จะเป็น begin ... end ในภาษาอัลกอล 60 หรือวงเล็บโค้ง ( ... ) ในภาษาอัลกอล 68เท่ากับ = ใช้สำหรับกำหนดค่า (คัดลอกข้อมูล) เหมือนภาษาฟอร์แทรน แทนที่จะเป็น := ในภาษาอัลกอลเท่ากับสองตัว == ใช้สำหรับเปรียบเทียบความเท่ากัน แทนที่จะเป็น .EQ. ในภาษาฟอร์แทรนหรือ = ในภาษาเบสิกและภาษาอัลกอลตรรกะ "และ" กับ "หรือ" แทนด้วย && กับ ตามลำดับ แทนที่จะเป็นตัวดำเนินการ ∧ กับ ∨ ในภาษาอัลกอล แต่ตัวดำเนินการดังกล่าวจะไม่ประเมินค่าตัวถูกดำเนินการทางขวา ถ้าหากผลลัพธ์จากทางซ้ายสามารถพิจารณาได้แล้ว เหตุการณ์เช่นนี้เรียกว่าการประเมินค่าแบบลัดวงจร (short-circuit evaluation) และตัวดำเนินการดังกล่าวก็มีความหมายต่างจากตัวดำเนินการระดับบิต & กับ คุณลักษณะที่ขาดไป
ธรรมชาติของภาษาในระดับต่ำช่วยให้โปรแกรมเมอร์ควบคุมสิ่งที่คอมพิวเตอร์กระทำได้อย่างใกล้ชิด ในขณะที่อนุญาตให้มีการปรับแต่งพิเศษและการทำให้เหมาะที่สุดสำหรับแพลตฟอร์มหนึ่งใดโดยเฉพาะ สิ่งนี้ทำให้รหัสสามารถทำงานได้อย่างมีประสิทธิภาพบนฮาร์ดแวร์ที่มีทรัพยากรจำกัดมาก ๆ ได้เช่นระบบฝังตัวภาษาซีไม่มีคุณลักษณะบางอย่างที่มีในภาษาอื่นอาทิไม่มีการนิยามฟังก์ชันซ้อนในไม่มีการกำหนดค่าแถวลำดับหรือสายอักขระโดยตรง (การคัดลอกข้อมูลจะกระทำผ่านฟังก์ชันมาตรฐาน แต่ก็รองรับการกำหนดค่าวัตถุที่มีชนิดเป็น struct หรือ union)ไม่มีการเก็บข้อมูลขยะโดยอัตโนมัติ
ไม่มีข้อกำหนดเพื่อการตรวจสอบขอบเขตของแถวลำดับไม่มีการดำเนินการสำหรับแถวลำดับทั้งชุดในระดับตัวภาษา
ไม่มีวากยสัมพันธ์สำหรับช่วงค่า (range) เช่น A..B ที่ใช้ในบางภาษาก่อนถึงภาษาซี99 ไม่มีการแบ่งแยกชนิดข้อมูลแบบบูล (ค่าศูนย์หรือไม่ศูนย์ถูกนำมาใช้แทน) ไม่มีส่วนปิดคลุมแบบรูปนัย (closure) หรือฟังก์ชันในรูปแบบพารามิเตอร์ (มีเพียงพอยเตอร์ของฟังก์ชันและตัวแปร)ไม่มีตัวสร้างและโครูทีน การควบคุมกระแสการทำงานภายในเทรดมีเพียงการเรียกใช้ฟังก์ชันซ้อนลงไป เว้นแต่การใช้ฟังก์ชัน longjmp หรือ setcontext จากไลบรารีไม่มีการจัดกระทำสิ่งผิดปรกติ (exception handling) ฟังก์ชันไลบรารีมาตรฐานจะแสดงเงื่อนไขข้อผิดพลาดด้วยตัวแปรส่วนกลาง errnoและ/หรือค่ากลับคืนพิเศษ และฟังก์ชันไลบรารีได้เตรียม goto แบบไม่ใช่เฉพาะที่ไว้ด้วยการเขียนโปรแกรมเชิงมอดูลรองรับแค่ระดับพื้นฐานเท่านั้นการโอเวอร์โหลดฟังก์ชันหรือตัวดำเนินการไม่รองรับภาวะหลายรูปแบบขณะแปลโปรแกรม
การเขียนโปรแกรมเชิงวัตถุรองรับในระดับที่จำกัดมาก โดยพิจารณาจากภาวะหลายรูปแบบกับการรับทอด (inheritance)
การซ่อนสารสนเทศ(encapsulation)รองรับในระดับที่จำกัดไม่รองรับโดยพื้นฐานกับการทำงานแบบมัลติเทรดและเครือข่ายคอมพิวเตอร์ไม่มีไลบรารีมาตรฐานสำหรับคอมพิวเตอร์กราฟิกส์และความจำเป็นหลายอย่างในการเขียนโปรแกรมประยุกต์คุณลักษณะเหล่านี้จำนวนหนึ่งมีให้ใช้ได้จากส่วนขยายในตัวแปลโปรแกรมบางตัว หรือจัดสรรไว้แล้วในสภาพแวดล้อมของระบบปฏิบัติการ(เช่นโพสซิกส์)หรือจัดเตรียมโดยไลบรารีภายนอก หรือสามารถจำลองโดยดัดแปลงแก้ไขรหัสที่มีอยู่ หรือบางที่ก็ถูกพิจารณาว่าไม่เหมาะสมกับรูปแบบการเขียนโปรแกรมที่ดี
พฤติกรรมไม่นิยาม
การดำเนินการหลายอย่างในภาษาซีมีพฤติกรรมไม่นิยาม ซึ่งไม่ถูกกำหนดว่าต้องวินิจฉัยขณะแปลโปรแกรม ในกรณีของภาษาซี "พฤติกรรมไม่นิยาม" หมายถึงพฤติกรรมเฉพาะอย่างที่เกิดขึ้นโดยมาตรฐานมิได้ระบุไว้ และสิ่งที่จะเกิดขึ้นก็ไม่มีในเอกสารการใช้งานของภาษาซี หนึ่งในชุดคำสั่งที่มีชื่อเสียงและน่าขบขันจากข่าวสารจากกลุ่ม comp.std.c และ comp.lang.c นั้นทำให้โปรแกรมเกิดปัญหาที่เรียกว่า "ปิศาจที่ออกมาจากจมูกของคุณ"("demons to fly out of your nose")บางครั้งสิ่งที่เกิดขึ้นในทางปฏิบัติอันเป็นผลมาจากพฤติกรรมไม่นิยามทำให้เกิดจุดบกพร่องที่ยากต่อการตรวจสอบและอาจทำให้ข้อมูลในหน่วยความจำผิดแปลกไป ตัวแปลโปรแกรมบางชนิดช่วยสร้างการดำเนินงานที่ทำให้พฤติกรรมนั้นดีขึ้นและมีเหตุผล ซึ่งแตกต่างจากการแปลโดยตัวแปลชนิดอื่นที่อาจดำเนินงานไม่เหมือนกัน สาเหตุที่พฤติกรรมบางอย่างยังคงไว้ว่าไม่นิยาม ก็เพื่อให้ตัวแปลโปรแกรมบนสถาปัตยกรรมชุดของคำสั่งเครื่องที่หลากหลาย สามารถสร้างรหัสที่ทำงานได้ในพฤติกรรมที่นิยามอย่างมีประสิทธิภาพมากขึ้น ซึ่งเชื่อว่าเป็นบทบาทหนึ่งที่สำคัญของภาษาซีในฐานะภาษาสำหรับสร้างระบบ ดังนั้นภาษาซีจึงส่งผลให้เกิดความรับผิดชอบของโปรแกรมเมอร์เพื่อหลีกเลี่ยงพฤติกรรมไม่นิยาม โดยอาจใช้เครื่องมือต่าง ๆ เพื่อค้นหาส่วนของโปรแกรมว่าพฤติกรรมใดบ้างที่ไม่นิยาม ตัวอย่างของพฤติกรรมไม่นิยามเช่น
-การเข้าถึงข้อมูลนอกขอบเขตของแถวลำดับ
-ข้อมูลล้น(overflow)ในตัวแปลจำนวนเต็มมีเครื่องหมาย
-ฟังก์ชันที่กำหนดไว้ว่าต้องส่งค่ากลับ แต่ไม่มีคำสั่งส่งกลับ (return) ในฟังก์ชัน ในขณะเดียวกันค่าส่งกลับก็ถูกใช้งานด้วย
-การอ่านค่าตัวแปรโดยที่ยังไม่ได้กำหนดค่าเริ่มต้น
-การดำเนินการเหล่านี้ทั้งหมดเป็นข้อผิดพลาดในการเขียนโปรแกรมซึ่งสามารถปรากฏในการใช้ภาษาโปรแกรมอื่นๆจำนวนมาก ภาษาซีจึงถูกวิพากษ์วิจารณ์เพราะมาตรฐานของมันสามารถชี้ให้เห็นถึงพฤติกรรมไม่นิยามในหลายกรณีได้อย่างชัดเจน รวมไปถึงพฤติกรรมบางอย่างที่อาจนิยามไว้อย่างดีแล้ว และไม่มีการระบุกลไกการจัดกระทำต่อข้อผิดพลาดขณะทำงานเลย
ตัวอย่างหนึ่งของพฤติกรรมไม่นิยามเช่นการเรียกใช้ fflush()บนกระแสข้อมูลป้อนเข้า ซึ่งไม่จำเป็นว่าจะทำให้โปรแกรมทำงานผิดพลาด แต่ในบางกรณีที่การทำให้เกิดผลที่สอดคล้องกันได้นิยามไว้แล้วอย่างดี มีความหมายซึ่งใช้ประโยชน์ได้ (จากตัวอย่างนี้คือการสมมติให้ข้อมูลที่ป้อนเข้าถูกละทิ้งทั้งหมดจนถึงอักขระขึ้นบรรทัดใหม่ตัวถัดไป)เป็น ส่วนขยาย ที่อนุญาต ส่วนขยายที่ไม่เป็นมาตรฐานเช่นนี้เป็นข้อจำกัดความสามารถในการเคลื่อนย้ายของซอฟต์แวร์
ประวัติ
การพัฒนาช่วงแรก
การเริ่มต้นพัฒนาภาษาซีเกิดขึ้นที่เบลล์แล็บส์ของเอทีแอนด์ทีระหว่าง พ.ศ. 2512–2516 [2] แต่ตามข้อมูลของริตชี ช่วงเวลาที่เกิดความสร้างสรรค์มากที่สุดคือ พ.ศ. 2515 ภาษานี้ถูกตั้งชื่อว่า "ซี" เพราะคุณลักษณะต่าง ๆ ต่อยอดมาจากภาษาก่อนหน้าคือ "บี" ซึ่งจากข้อมูลของเคน ทอมป์สัน (Ken Thompson) กล่าวว่าภาษาบีเป็นรุ่นที่แยกตัวออกจากภาษาบีซีพีแอลอีกทอดหนึ่ง
จุดเริ่มต้นของภาษาซีผูกอยู่กับการพัฒนาระบบปฏิบัติการยูนิกซ์อย่างใกล้ชิด ซึ่งเดิมพัฒนาด้วยภาษาแอสเซมบลีบนหน่วยประมวลผลพีดีพี-7โดยริตชีและทอมป์สัน โดยผสมผสานความคิดหลากหลายจากเพื่อนร่วมงาน ในตอนท้ายพวกเขาตัดสินใจที่จะย้ายระบบปฏิบัติการนั้นลงในพีดีพี-11 แต่ภาษาบีขาดความสามารถบางอย่างที่จะใช้คุณลักษณะอันได้เปรียบของพีดีพี-11 เช่นความสามารถในการระบุตำแหน่งที่อยู่เป็นไบต์ จึงทำให้เกิดการพัฒนาภาษาซีรุ่นแรกขึ้นมา

รุ่นดั้งเดิมของระบบยูนิกซ์บนพีดีพี-11ถูกพัฒนาขึ้นด้วยภาษาแอสเซมบลี เมื่อประมาณ พ.ศ. 2516 ภาษาซีเพิ่มชนิดข้อมูล struct ทำให้ภาษาซีเพียงพออย่างมีประสิทธิภาพ ซึ่งเคอร์เนลยูนิกซ์ส่วนใหญ่ถูกเขียนด้วยภาษาซี นี้ก็เป็นเคอร์เนลหนึ่งของระบบปฏิบัติการที่พัฒนาด้วยภาษาอื่นนอกเหนือจากภาษาแอสเซมบลี (ระบบอื่นเช่นมัลติกส์เขียนด้วยภาษาพีแอล/วัน เอ็มซีพีสำหรับเบอร์โรส์ บี5000เขียนด้วยภาษาอัลกอล ในปี พ.ศ. 2504)
ภาษาเคแอนด์อาร์ซี
เมื่อ พ.ศ. 2521 ไบรอัน เคอร์นิกัน (Brian Kernighan) และเดนนิส ริตชี ได้ตีพิมพ์หนังสือเล่มแรกชื่อ เดอะซีโปรแกรมมิงแลงกวิจ (The C Programming Language) [9] ซึ่งเป็นที่รู้จักในกลุ่มโปรแกรมเมอร์ภาษาซีว่า "เคแอนด์อาร์" (K&R อักษรย่อของผู้แต่งทั้งสอง) หนังสือเล่มนี้ทำหน้าที่เป็นข้อกำหนดของภาษาอย่างไม่เป็นทางการมาหลายปี ภาษาซีรุ่นดังกล่าวจึงมักถูกอ้างถึงว่าเป็น ภาษาเคแอนด์อาร์ซี (K&R C) ส่วนหนังสือที่ปรับปรุงครั้งที่สองครอบคลุมมาตรฐานแอนซีซีที่มีขึ้นทีหลัง ภาษาเคแอนด์อาร์ซีได้แนะนำคุณลักษณะหลายประการเช่น
-ไลบรารีไอ/โอมาตรฐาน
-ชนิดข้อมูล long int (จำนวนเต็มขนาดยาว)
-ชนิดข้อมูล unsigned int (จำนวนเต็มไม่มีเครื่องหมาย)
-ตัวดำเนินการกำหนดค่าแบบประสมในรูปแบบ =ตัวดำเนินการ (เช่น =-) ถูกเปลี่ยนเป็น ตัวดำเนินการ= (เช่น -=) เพื่อลด--ปัญหาความกำกวมเชิงความหมาย อย่างเช่นกรณี i=-10 ซึ่งจะถูกตีความว่า i =- 10 แทนที่จะเป็นอย่างที่ตั้งใจคือ i = -10
แม้ว่าหลังจากการเผยแพร่มาตรฐานของภาษาซีเมื่อ พ.ศ. 2532 ภาษาเคแอนด์อาร์ซีถูกพิจารณาว่าเป็น "ส่วนร่วมต่ำสุด" อยู่เป็นเวลาหลายปี (ความสามารถในการแปลรหัสจำนวนหนึ่งเป็นคำสั่งซึ่งทำงานได้บนเครื่องใดก็ตามเป็นอย่างน้อย) ซึ่งโปรแกรมเมอร์ภาษาซีต้องจำกัดความสามารถของพวกเขาในกรณีที่ต้องการให้ระบบสามารถใช้ได้กับหลายเครื่องมากที่สุด เนื่องจากตัวแปลโปรแกรมเก่า ๆ ก็ยังคงมีการใช้งานอยู่ และเขียนภาษาซีแบบเคแอนด์อาร์อย่างระมัดระวังเพื่อให้สามารถเข้ากันได้กับภาษาซีมาตรฐานเป็นอย่างดีในภาษาซีรุ่นแรก ๆ เฉพาะฟังก์ชันที่คืนค่าไม่เป็นจำนวนเต็ม จำเป็นต้องประกาศไว้ก่อนการนิยามฟังก์ชันหากมีการเรียกใช้ อีกนัยหนึ่งคือ ฟังก์ชันที่ถูกเรียกใช้โดยไม่มีการประกาศมาก่อน ถือว่าฟังก์ชันนั้นจะคืนค่าเป็นจำนวนเต็มหากค่าของมันถูกใช้งาน ตัวอย่างเช่น
long int SomeFunction();
/* int OtherFunction(); */

/* int */ CallingFunction()
{
long int test1;
register /* int */ test2;

test1 = SomeFunction();
if (test1 > 0)
test2 = 0;
else
test2 = OtherFunction();

return test2;
}
จากตัวอย่างข้างต้น การประกาศ int ที่ถูกคัดออก สามารถละเว้นได้ในภาษาเคแอนด์อาร์ซี แต่ long int จำเป็นต้องประกาศ
การประกาศฟังก์ชันของภาษาเคแอนด์อาร์ซีไม่มีการระบุข้อมูลเกี่ยวกับอาร์กิวเมนต์ที่ใช้ ดังนั้นจึงไม่มีการตรวจชนิดข้อมูลพารามิเตอร์ของฟังก์ชัน แม้ว่าตัวแปลโปรแกรมบางตัวจะแสดงข้อความเตือน ถ้าฟังก์ชันถูกเรียกใช้ภายในโดยมีจำนวนอาร์กิวเมนต์ที่ผิด หรือถ้าฟังก์ชันถูกเรียกใช้หลายครั้งจากภายนอกโดยมีชนิดข้อมูลของอาร์กิวเมนต์ต่างกัน เครื่องมือภายนอกอาทิ ลินต์ (lint) ของยูนิกซ์ถูกพัฒนาขึ้นเพื่อให้สามารถตรวจสอบความคงเส้นคงวาของฟังก์ชันที่ใช้งานข้ามไฟล์รหัสต้นฉบับหลายไฟล์
หลายปีถัดจากการเผยแพร่ภาษาเคแอนด์อาร์ซี คุณลักษณะที่ไม่เป็นทางการหลายอย่างก็ถูกเพิ่มเข้ามาในภาษา ซึ่งรองรับโดยตัวแปลโปรแกรมจากเอทีแอนด์ทีและผู้ผลิตรายอื่น คุณลักษณะที่เพิ่มเหล่านี้เช่น
-ฟังก์ชัน void
-ฟังก์ชันที่คืนค่าเป็นชนิดข้อมูล struct หรือ union (แทนที่จะเป็นพอยเตอร์)
-การกำหนดค่าให้กับชนิดข้อมูล struct
-ชนิดข้อมูลแจงนับ (enumerated type)
ส่วนขยายที่เพิ่มขึ้นอย่างมากและการขาดข้อตกลงในเรื่องไลบรารีมาตรฐาน อีกทั้งความนิยมในภาษาและข้อเท็จจริงที่ว่าไม่เพียงแต่ตัวแปลโปรแกรมยูนิกซ์เท่านั้นที่พัฒนาขึ้นตามข้อกำหนดของเคแอนด์อาร์ ทั้งหมดนำไปสู่ความสำคัญของการทำให้เป็นมาตรฐาน
ภาษาแอนซีซีและภาษาไอโซซี
ช่วงพุทธทศวรรษ2520ภาษาซีหลายรุ่นถูกพัฒนาขึ้นสำหรับเมนเฟรมคอมพิวเตอร์มินิคอมพิวเตอร์ และไมโครคอมพิวเตอร์อย่างกว้างขวางรวมทั้งไอบีเอ็มพีซี ซึ่งความนิยมของมันเริ่มเพิ่มขึ้นอย่างมีนัยสำคัญเมื่อ พ.ศ. 2526 สถาบันมาตรฐานแห่งชาติของสหรัฐอเมริกา (ANSI) ได้ก่อตั้งคณะกรรมการ เอกซ์3เจ11 ขึ้นมาเพื่อกำหนดมาตรฐานของภาษาซี ต่อมา พ.ศ. 2532 มาตรฐานดังกล่าวได้รับการอนุมัติเป็น ANSI X3.159-1989 "Programming Language C" ซึ่งภาษารุ่นนี้มักถูกอ้างถึงว่าเป็นภาษาแอนซีซี (ANSI C) ภาษาซีมาตรฐาน หรือภาษาซี89 (C89) ในบางครั้ง
เมื่อ พ.ศ. 2533 องค์การระหว่างประเทศว่าด้วยการมาตรฐาน (ISO) ได้รับเอามาตรฐานแอนซีซี (พร้อมการเปลี่ยนแปลงการจัดรูปแบบ) มาเป็น ISO/IEC 9899:1990 ซึ่งบางครั้งก็ถูกเรียกว่าภาษาไอโซซี (ISO C) หรือภาษาซี90 (C90) ดังนั้นคำว่า "ซี89" กับ "ซี90" จึงหมายถึงภาษาโปรแกรมเดียวกัน
แอนซีไม่ได้พัฒนามาตรฐานภาษาซีโดยเอกเทศอีกต่อไปแล้ว เหมือนเช่นองค์กรมาตรฐานแห่งชาติอื่น ๆ แต่ก็คล้อยตามมาตรฐานไอโซซี การรับเอามาตรฐานระดับชาติมาปรับปรุงเป็นมาตรฐานระดับสากล เกิดขึ้นภายในปีเดียวกับที่เผยแพร่มาตรฐานไอโซ
จุดมุ่งหมายหนึ่งของกระบวนการสร้างมาตรฐานให้ภาษาซีคือเพื่อสร้างซูเปอร์เซตของภาษาเคแอนด์อาร์ซี ผสมผสานคุณลักษณะต่าง ๆ ที่ยังไม่เป็นทางการซึ่งแนะนำต่อกันมา คณะกรรมการมาตรฐานได้รวมคุณลักษณะหลายประการเพิ่มเข้ามาอาทิ ฟังก์ชันโพรโทไทป์ (ยืมมาจากภาษาซีพลัสพลัส), พอยเตอร์ void, รองรับการจัดเรียงท้องถิ่น (locale) และชุดอักขระสากล, และการปรับปรุงตัวประมวลก่อนให้ดีขึ้น วากยสัมพันธ์สำหรับการประกาศพารามิเตอร์ถูกเพิ่มเข้ามาให้เหมือนกับรูปแบบที่ใช้ในภาษาซีพลัสพลัส แม้ว่าการเขียนแบบเคแอนด์อาร์ก็ยังสามารถใช้ได้เพื่อความเข้ากันได้กับรหัสต้นฉบับที่มีอยู่แล้ว
ภาษาซีรุ่นนี้ยังคงรองรับในตัวแปลโปรแกรมในปัจจุบัน และรหัสภาษาซีส่วนใหญ่ที่เขียนขึ้นทุกวันนี้ก็ใช้พื้นฐานมาจากรุ่นนี้ โปรแกรมใด ๆ ที่เขียนขึ้นด้วยภาษาซีมาตรฐานโดยไร้สมมติฐานว่าขึ้นอยู่กับฮาร์ดแวร์ใด จะทำงานได้อย่างถูกต้องบนแพลตฟอร์มใดก็ตามด้วยการพัฒนาภาษาซีที่สอดคล้องกันภายในทรัพยากรที่จำกัด หากไม่ระมัดระวังเช่นนั้น โปรแกรมอาจแปลได้เฉพาะบนแพลตฟอร์มหนึ่งหรือด้วยตัวแปลตัวหนึ่งเท่านั้น อันเนื่องมาจากการใช้ไลบรารีไม่มาตรฐานเช่นไลบรารีส่วนต่อประสานกราฟิกกับผู้ใช้ก็ดี หรือความเชื่อมั่นต่อสมบัติเฉพาะของแพลตฟอร์มหรือตัวแปลหนึ่ง ๆ เช่นขนาดที่แท้จริงของชนิดข้อมูลหรือการลำดับข้อมูลไบต์ (endianness) ก็ดี
ในกรณีที่ต้องเลือกว่ารหัสต้องถูกแปลด้วยตัวแปลภาษาซีมาตรฐานหรือภาษาเคแอนด์อาร์ซีอย่างใดอย่างหนึ่งการใช้แมโครSTDCสามารถช่วยให้แบ่งแยกรหัสส่วนมาตรฐานและส่วนเคแอนด์อาร์ออกจากกัน ซึ่งเป็นคุณลักษณะที่ได้เปรียบอีกอย่างหนึ่งที่มีเฉพาะในภาษาซีมาตรฐาน
ภาษาซี99
หลังจากกระบวนการทำให้เป็นมาตรฐานของแอนซี/ไอโซแล้ว ข้อกำหนดภาษาซียังคงนิ่งอยู่ชั่วระยะเวลาหนึ่ง ในขณะที่ภาษาซีพลัสพลัสกำลังก่อตัวด้วยความพยายามทำให้เป็นมาตรฐานของมันเอง การเพิ่มเติมกฎเกณฑ์ครั้งที่ 1 สำหรับมาตรฐานภาษาซีเผยแพร่เมื่อ พ.ศ. 2538 เพื่อแก้ไขรายละเอียดบางจุดและเพิ่มการรองรับชุดอักขระสากลให้มากขึ้น ต่อมามาตรฐานภาษาซีถูกเรียบเรียงดัดแปลงใหม่และนำไปสู่การเผยแพร่ ISO/IEC 9899:1999 ออกสู่สาธารณชนใน พ.ศ. 2542 ซึ่งมักถูกอ้างถึงว่า "ซี99" (C99) มาตรฐานนี้มีการเพิ่มเติมกฎเกณฑ์แล้วสามครั้งโดย TechnicalCorrigendaปัจจุบันมาตรฐานภาษาซีสากลดูแลและควบคุมโดยกลุ่ม ISO/IEC JTC1/SC22/WG14ภาษาซี99ได้แนะนำคุณลักษณะใหม่หลายประการอาทิ ฟังก์ชันแบบแทรก (inline function) ชนิดข้อมูลใหม่หลายชนิด (เช่น long long int และ complex สำหรับจำนวนเชิงซ้อน) แถวลำดับความยาวแปรได้ (variable-length array) แมโครอาร์กิวเมนต์แปรได้ (variadic macro) และหมายเหตุในหนึ่งบรรทัดที่ขึ้นต้นด้วย // เหมือนภาษาบีซีพีแอลหรือภาษาซีพลัสพลัส ซึ่งคุณลักษณะส่วนใหญ่เคยพัฒนาไว้แล้วเป็นส่วนขยายของตัวแปลภาษาซีหลายโปรแกรม

ภาษาซี99สามารถเข้ากันได้แบบย้อนหลังกับภาษาซี90เป็นส่วนใหญ่ แต่ก็จำกัดมากขึ้นในบางแง่มุม โดยเฉพาะการประกาศโดยไม่ระบุชนิด จะไม่ถูกสมมติว่าเป็น int อีกต่อไป แมโครมาตรฐาน STDC_VERSIONถูกนิยามขึ้นด้วยค่า 199901L เพื่อแสดงว่ารหัสนั้นรองรับภาษาซี99 ขณะนี้ จีซีซี ซันสตูดิโอ และตัวแปลโปรแกรมอื่น ๆ ก็รองรับคุณลักษณะใหม่ของภาษาซี99เป็นจำนวนมากหรือทั้งหมดแล้ว
ภาษาซี1เอกซ์
เมื่อ พ.ศ. 2550 มีกลุ่มทำงานหนึ่งเริ่มต้นขึ้นเพื่อปรับปรุงมาตรฐานภาษาซีอีกรุ่น ซึ่งเรียกชื่ออย่างไม่เป็นทางการว่า "ซี1เอกซ์" (C1X) คณะกรรมการนี้รับเอาแนวคิดต่าง ๆ เพื่อจำกัดการเลือกคุณลักษณะใหม่ที่ยังไม่เคยมีการทดสอบพัฒนามาก่อน
การใช้งาน
การเขียนโปรแกรมระบบเป็นการใช้งานหลักของภาษาซี ซึ่งรวมไปถึงการพัฒนาระบบปฏิบัติการและโปรแกรมประยุกต์ระบบฝังตัว เนื่องจากลักษณะเฉพาะอันเป็นที่ต้องการถูกรวมเข้าไว้ด้วยกัน อย่างเช่น ความสามารถในเคลื่อนย้ายได้กับประสิทธิภาพของรหัสต้นฉบับ ความสามารถในการเข้าถึงที่อยู่ของฮาร์ดแวร์ที่ระบุ ความสามารถเรื่อง type punning เพื่อให้เข้ากับความต้องการการเข้าถึงข้อมูลที่กำหนดไว้จากภายนอก และความต้องการทรัพยากรระบบขณะทำงานต่ำ ภาษาซีสามารถใช้เขียนโปรแกรมเว็บไซต์โดยใช้ซีจีไอเป็น "เกตเวย์" เพื่อแลกเปลี่ยนสารสนเทศระหว่างเว็บแอปพลิเคชัน เซิร์ฟเวอร์ และเบราว์เซอร์ [10] ปัจจัยบางอย่างที่ทำให้เลือกภาษาซีแทนที่จะเป็นภาษาอินเทอร์พรีตเตอร์ คือความเร็ว เสถียรภาพ และความอ่อนไหวต่อการเปลี่ยนแปลงในสภาพแวดล้อมของการดำเนินงาน เนื่องจากเป็นธรรมชาติของภาษาคอมไพเลอร์
ผลจากการยอมรับในระดับกว้างขวางและประสิทธิภาพของภาษาซี ทำให้ตัวแปลโปรแกรม ตัวแปลคำสั่ง ไลบรารีต่าง ๆ ของภาษาอื่น มักพัฒนาขึ้นด้วยภาษาซี ตัวอย่างเช่น ตัวแปลโปรแกรมภาษาไอเฟลหลายโปรแกรมส่งข้อมูลออกเป็นรหัสภาษาซีเป็นภาษากลาง เพื่อส่งต่อให้ตัวแปลโปรแกรมภาษาซีต่อไป การพัฒนาสายหลักของภาษาไพทอน ภาษาเพิร์ล 5 และภาษาพีเอชพี ทั้งหมดถูกเขียนขึ้นด้วยภาษาซี
ภาษาซีมีประสิทธิภาพสำหรับคอมพิวเตอร์เพื่องานคำนวณและวิทยาศาสตร์ เนื่องจากความสิ้นเปลืองต่ำ ธรรมชาติของภาษาระดับต่ำ ธรรมชาติของภาษาที่ถูกแปล และมีส่วนคณิตศาสตร์ที่ดีในไลบรารีมาตรฐาน ตัวอย่างของการใช้ภาษาซีในงานคำนวณและวิทยาศาสตร์ เช่นจีเอ็มพี ไลบรารีวิทยาศาสตร์ของกนู แมทเทอแมติกา แมตแล็บ และแซส
ภาษาซีบางครั้งใช้เป็นภาษาระหว่างกลางในการทำให้เกิดผลของภาษาอื่น แนวคิดนี้อาจใช้เพื่อความสะดวกต่อการเคลื่อนย้ายโดยให้ภาษาซีเป็นภาษาระหว่างกลาง ซึ่งไม่จำเป็นต้องพัฒนาตัวสร้างรหัสแบบเจาะจงเครื่อง ตัวแปลโปรแกรมที่ใช้ภาษาซีในทางนี้เช่น บิตซี แกมบิต จีเอชซี สควีก และวาลา เป็นต้น อย่างไรก็ตามภาษาซีถูกออกแบบมาเพื่อเป็นภาษาเขียนโปรแกรม ไม่ใช่ภาษาเป้าหมายของตัวแปลโปรแกรม จึงเหมาะสมน้อยกว่าสำหรับการใช้เป็นภาษาระหว่างกลาง ด้วยเหตุผลนี้นำไปสู่การพัฒนาภาษาระหว่างกลางที่มีพื้นฐานบนภาษาซีเช่น ภาษาซีไมนัสไมนัส

ผู้ใช้ขั้นปลายใช้ภาษาซีอย่างแพร่หลายเพื่อสร้างแอปพลิเคชันของผู้ใช้เอง แต่เมื่อแอปพลิเคชันใหญ่ขึ้น การพัฒนาเช่นนั้นมักจะย้ายไปทำในภาษาอื่นที่พัฒนามาด้วยกัน เช่นภาษาซีพลัสพลัส ภาษาซีชาร์ป ภาษาวิชวลเบสิก เป็นต้น
วากยสัมพันธ์
รหัสต้นฉบับของภาษาซีมีรูปแบบอิสระ ซึ่งสามารถใช้อักขระช่องว่างเท่าใดก็ได้ในรหัส มากกว่าที่จะถูกจำกัดด้วยคอลัมน์หรือบรรทัดข้อความอย่างภาษาฟอร์แทรน 77 ข้อความหมายเหตุจะปรากฏระหว่างตัวคั่น /* และ */ (แบบดั้งเดิม) หรือตามหลัง // จนกว่าจะจบบรรทัด (ภาษาซี99 เป็นต้นไป)
รหัสต้นฉบับแต่ละไฟล์ประกอบด้วยการประกาศและการนิยามฟังก์ชันต่าง ๆ และการนิยามฟังก์ชันก็ประกอบด้วยการประกาศและข้อความสั่งต่าง ๆ ภายในอีกด้วย การประกาศอาจกำหนดชนิดข้อมูลใหม่โดยใช้คำหลักเช่น struct, union และ enum หรือกำหนดค่าของชนิดข้อมูลและอาจสงวนเนื้อที่สำรองให้กับตัวแปรใหม่ โดยการเขียนชื่อของชนิดข้อมูลตามด้วยชื่อตัวแปร คำหลักอาทิ char และ int เป็นชนิดข้อมูลพื้นฐานที่มากับภาษา ส่วนต่าง ๆ ของรหัสถูกคลุมด้วยวงเล็บปีกกา { กับ } เพื่อจำกัดขอบเขตของการประกาศ และเพื่อกระทำเสมือนข้อความสั่งเดียวสำหรับโครงสร้างการควบคุม
ภาษาซีใช้ ข้อความสั่ง(statement)ในการระบุการกระทำเช่นเดียวกับภาษาเชิงคำสั่งอื่น ข้อความสั่งที่สามัญที่สุดคือ ข้อความสั่งนิพจน์ (expression statement)ซึ่งประกอบด้วยนิพจน์ที่จะถูกนำไปประเมินค่า ตามด้วยอัฒภาค ; จากผลข้างเคียงของการประเมินค่า ฟังก์ชันหลายฟังก์ชันอาจถูกเรียกใช้และตัวแปรหลายตัวอาจถูกกำหนดค่าใหม่ ภาษาซีได้เตรียมข้อความสั่งสำหรับควบคุมการไหลของโปรแกรมไว้หลายข้อความซึ่งดูได้จากคำสงวนต่าง ๆ ตัวอย่างเช่น การใช้ if-else เพื่อการทำงานแบบมีเงื่อนไข และการใช้ do-while, while และ for เพื่อการทำงานแบบวนรอบ เพื่อปรับเปลี่ยนการทำงานอันเป็นลำดับปกติ เป็นสิ่งที่รองรับสำหรับการเขียนโปรแกรมเชิงโครงสร้าง สำหรับข้อความสั่ง for นั้นมีนิพจน์ของการกำหนดค่าเริ่มต้น การทดสอบเงื่อนไข และการกำหนดค่ารอบใหม่ทั้งสามอย่างในตัวเอง ซึ่งสามารถละเว้นนิพจน์ใดก็ได้ ข้อความสั่ง break และ continue สามารถใช้ภายในการทำงานแบบวนรอบ เพื่อหยุดการวนรอบ หรือข้ามไปยังการกำหนดค่ารอบใหม่ทันทีตามลำดับ นอกจากนี้ยังมีข้อความสั่งที่ไม่เป็นเชิงโครงสร้างคือ goto ซึ่งจะทำให้การไหลของโปรแกรมข้ามไปยังป้าย (label) ที่ตั้งชื่อไว้ทันทีภายในฟังก์ชัน ข้อความสั่ง switch และ case ใช้สำหรับพิจารณาทางเลือกของการทำงานโดยพิจารณานิพจน์ที่เป็นจำนวนเต็ม
นิพจน์ต่าง ๆสามารถใช้ตัวดำเนินการที่มีมากับภาษาได้หลากหลาย(ดูด้านล่าง)และอาจมีการเรียกใช้ฟังก์ชัน อาร์กิวเมนต์ของฟังก์ชันและตัวถูกดำเนินการของตัวดำเนินการส่วนใหญ่ที่จะถูกประเมินค่านั้นไม่มีการระบุลำดับ การประเมินค่าจึงอาจแทรกซ้อนกันก็ได้ อย่างไรก็ตามผลกระทบที่เกิดขึ้นทั้งหมด (รวมทั้งที่เก็บข้อมูลตัวแปร) จะปรากฏก่อน จุดลำดับ (sequence point) ถัดไป จุดลำดับนั้นคือจุดสิ้นสุดของข้อความสั่งของแต่ละนิพจน์ และจุดที่เข้าและออกจากการเรียกใช้ฟังก์ชัน จุดลำดับก็ยังเกิดขึ้นระหว่างการประเมินค่านิพจน์ที่มีตัวดำเนินการบางชนิด (เช่น &&, , ?: และตัวดำเนินการจุลภาค) สิ่งนี้ทำให้การปรับแต่งรหัสจุดหมายให้เหมาะสมทำได้ในระดับสูง ซึ่งไม่จำเป็นต้องให้โปรแกรมเมอร์ภาษาซีใส่ใจมากนักเพื่อให้ได้ผลลัพธ์ที่เชื่อถือได้ ในขณะที่จำเป็นสำหรับภาษาโปรแกรมอื่น

ถึงแม้ว่าวากยสัมพันธ์ของภาษาซีจะถูกเลียนแบบโดยภาษาอื่นหลายภาษาเพราะว่าความเคยชินอย่างกว้างขวาง แต่ก็ถูกวิพากษ์วิจารณ์บ่อยครั้ง ตัวอย่างเช่น เคอร์นิกันและริตชีได้กล่าวในบทนำของ เดอะซีโพรแกรมมิงแลงกวิจ ไว้ว่า "ภาษาซีก็มีตำหนิของมันเหมือนภาษาอื่นใด ตัวดำเนินการบางตัวมีสิทธิการทำก่อนที่ผิด วากยสัมพันธ์บางส่วนสามารถทำให้ดีกว่านี้"
ปัญหาเฉพาะบางอย่างที่ควรหมายเหตุไว้มีดังนี้
ไม่มีการตรวจสอบจำนวนและชนิดของอาร์กิวเมนต์เมื่อการประกาศฟังก์ชันมีรายการพารามิเตอร์ว่าง (สิ่งนี้เพื่อความเข้ากันได้ย้อนหลังกับภาษาเคแอนด์อาร์ซี ซึ่งไม่มีโพรโทไทป์)
ทางเลือกที่น่าสงสัยของสิทธิการทำก่อนของตัวดำเนินการ ดังที่กล่าวถึงโดยเคอร์นิกันและริตชีข้างต้น เช่น == ที่วางอยู่ติดกับ & และ ในนิพจน์ดังตัวอย่าง x & 1 == 0 ตัวดำเนินการ == จะทำก่อนซึ่งไม่ใช่ผลที่คาดไว้ จำเป็นต้องใส่วงเล็บเพิ่ม (x & 1) == 0 เพื่อให้ & ทำก่อนตามต้องการ
ตัวดำเนินการ = ซึ่งใช้แสดงภาวะเท่ากันในคณิตศาสตร์ แต่ในภาษาซีใช้เพื่อการกำหนดค่าของตัวแปร โดยใช้ตามแบบที่มีอยู่ก่อนในภาษาฟอร์แทรน ภาษาพีแอล/วัน และภาษาเบสิก ไม่เหมือนภาษาอัลกอลและภาษาต่อยอดของมัน ริตชีตั้งใจเลือกรูปแบบนี้ด้วยเหตุผลหลักว่า อาร์กิวเมนต์ของการกำหนดค่าเกิดขึ้นบ่อยกว่าการเปรียบเทียบ
ความคล้ายกันของตัวดำเนินการกำหนดค่าและการเปรียบเทียบภาวะเท่ากัน (= และ ==) ทำให้เกิดความผิดพลาดจากการใช้เครื่องหมายผิดได้ง่าย ในหลายกรณีเครื่องหมายถูกใช้ในบริบทของอีกอันหนึ่งโดยไม่มีความผิดพลาดขณะแปล (แม้ว่าตัวแปลโปรแกรมปกติจะสร้างข้อความเตือนขึ้นมา) ตัวอย่างเช่น นิพจน์เงื่อนไขภายใน if (a = b) จะเป็นจริงถ้า a มีค่าไม่เป็นศูนย์หลังจากการกำหนดค่า [12] อย่างไรก็ตาม ข้อบกพร่องนี้อาจมีประโยชน์สำหรับการเขียนรหัสอย่างย่อในบางกรณี
การขาดตัวดำเนินการเติมกลางสำหรับวัตถุซับซ้อนหลายชนิด โดยเฉพาะการดำเนินการสายอักขระ ทำให้โปรแกรมที่ขึ้นอยู่กับการดำเนินการเหล่านี้มีขนาดใหญ่กว่าที่ควรเป็น (เพราะต้องสร้างฟังก์ชันขึ้นเอง) และทำให้รหัสอ่านยากขึ้นด้วย
รูปแบบของการประกาศที่บางครั้งไม่เป็นไปตามสามัญสำนึกโดยเฉพาะพอยเตอร์ฟังก์ชัน (แนวคิดของริตชีคือการประกาศตัวระบุในบริบทที่สัมพันธ์กับการใช้งานของมัน)
ตัวดำเนินการ
ภาษาซีรองรับตัวดำเนินการหลายประเภท ซึ่งเป็นสัญลักษณ์ที่ใช้ในนิพจน์เพื่อระบุการจัดการที่จะถูกทำให้เกิดผล ระหว่างการประเมินค่าของนิพจน์นั้น ภาษาซีมีตัวดำเนินการต่อไปนี้
พีชคณิต (+, -, *, /, %)
การกำหนดค่า (=)
การกำหนดค่าแต่งเติม (+=, -=, *=, /=, %=, &=, =, ^=, <<=, >>=)
ตรรกะระดับบิต (~, &, , ^)
การเลื่อนระดับบิต (<<, >>)
ตรรกะแบบบูล (!, &&, )
การประเมินค่าเชิงเงื่อนไข (?:)
การทดสอบภาวะเท่ากัน (==, !=)
การรวมอาร์กิวเมนต์ฟังก์ชัน (( ))
การเพิ่มค่าและการลดค่า (++, --)
การเลือกสมาชิกในวัตถุ (., ->)
ขนาดของวัตถุ (sizeof)
ความสัมพันธ์เชิงอันดับ (<, <=, >, >=)
การอ้างอิงและการถูกอ้างอิง (&, *, [ ])
การลำดับ (,)
การจัดกลุ่มนิพจน์ย่อย (( ))
การแปลงชนิดข้อมูล (( ))
ภาษาซีมีไวยากรณ์รูปนัยซึ่งระบุโดยมาตรฐานภาษาซี [13]
การแปลงจำนวนเต็ม จำนวนจุดลอยตัว และการปัดเศษ
วากยสัมพันธ์ของการแปลงชนิดข้อมูลสามารถใช้แปลงค่าต่าง ๆ ระหว่างชนิดข้อมูลจำนวนเต็มและจำนวนจุดลอยตัว (จำนวนทศนิยม) หรือระหว่างจำนวนเต็มสองจำนวน หรือระหว่างจำนวนจุดลอยตัวสองจำนวนที่มีขนาดแตกต่างกัน ตัวอย่างเช่น (longint)sqrt(1000.0), (double)(256*256) หรือ (float)sqrt(1000.0) เป็นต้น การแปลงชนิดข้อมูลเป็นภาวะปริยายในหลายบริบทอาทิ เมื่อกำหนดค่าให้กับตัวแปรหรือพารามิเตอร์ของฟังก์ชัน หรือเมื่อใช้จำนวนจุดลอยตัวเป็นดัชนีของเวกเตอร์ หรือในการดำเนินการทางเลขคณิตที่มีตัวถูกดำเนินการเป็นข้อมูลคนละชนิดกัน
การแปลงค่าระหว่างจำนวนเต็มและจำนวนจุดลอยตัวโดยทั่วไปจะเกิดการเปลี่ยนแปลงการเข้ารหัสระดับบิตไปยังขอบเขตที่เป็นไปได้เพื่อสงวนค่าจำนวนของตัวถูกดำเนินการนั้น ไม่เหมือนกับการแปลงชนิดข้อมูลกรณีอื่น(ซึ่งการเข้ารหัสระดับบิตของตัวถูกดำเนินการจะถูกตีความใหม่ตามชนิดเป้าหมายเพียงเท่านั้น)โดยเฉพาะอย่างยิ่ง การแปลงชนิดข้อมูลจากจำนวนเต็มไปเป็นจำนวนจุดลอยตัวจะคงไว้ซึ่งค่าจำนวนได้อย่างถูกต้องเว้นแต่ถ้าจำนวนบิตในชนิดเป้าหมายมีไม่เพียงพอ กรณีดังกล่าวจะทำให้บิตที่มีนัยสำคัญน้อยที่สุดสูญหายไป
ส่วนการแปลงชนิดข้อมูลจากจำนวนจุดลอยตัวไปเป็นจำนวนเต็มจะเกิดการตัดค่าหลังจุดทศนิยมอย่างหลีกเลี่ยงไม่ได้ (ค่าถูกปัดเศษเข้าหาศูนย์) สำหรับการปัดเศษชนิดอื่น ภาษซี99ได้ระบุไว้แล้วในฟังก์ชันดังนี้ (ใน )
round(): ปัดเศษไปยังจำนวนเต็มที่ใกล้สุด
rint(), nearbyint(): ปัดเศษตามทิศทางของจำนวนจุดลอยตัวปัจจุบัน
ceil(): ค่าจำนวนเต็มน้อยสุดที่ไม่น้อยกว่าอาร์กิวเมนต์ (ปัดขึ้น) ดูเพิ่มที่ฟังก์ชันเพดาน
floor(): ค่าจำนวนเต็มมากสุดที่ไม่มากกว่าอาร์กิวเมนต์ (ปัดลง) ดูเพิ่มที่ฟังก์ชันพื้น
trunc(): ปัดเศษเข้าหาศูนย์ (เหมือนกับการแปลงชนิดข้อมูลเป็นจำนวนเต็ม)
ฟังก์ชันทั้งหมดนี้รับอาร์กิวเมนต์ double และคืนค่าเป็น double ซึ่งต่อจากนี้ก็อาจแปลงชนิดข้อมูลเป็นจำนวนเต็มอีกทีหากจำเป็น
การแปลงชนิดข้อมูลจาก float ไปเป็น double จะคงไว้ซึ่งค่าจำนวนได้อย่างถูกต้อง ในขณะที่การแปลงกลับ ค่าจะถูกปัดเศษซึ่งมักเป็นการปัดเศษเข้าหาศูนย์ เพื่อให้พอดีกับจำนวนบิตที่น้อยลง (เนื่องจาก floatก็มีช่วงเลขชี้กำลังที่น้อยกว่าด้วย การแปลงชนิดข้อมูลอาจให้ผลเป็นค่าอนันต์แทน) ตัวแปลโปรแกรมบางโปรแกรมจะแปลงค่าของ float ไปเป็น double โดยเบื้องหลังในบางบริบทเช่น พารามิเตอร์ของฟังก์ชันที่ประกาศเป็น float ตามความเป็นจริงอาจส่งค่าเป็น double ก็ได้
เครื่องที่ทำตามมาตรฐานจำนวนจุดลอยตัวของIEEEเหตุการณ์การปัดเศษบางเหตุการณ์มีผลมาจากสถานะการปัดเศษปัจจุบัน (ได้แก่การปัดเศษเลขคู่ การปัดเศษขึ้น การปัดเศษลง และการปัดเศษเข้าหาศูนย์)ซึ่งอาจเรียกดูหรือตั้งค่าสถานะโดยใช้ฟังก์ชัน fegetround()/fesetround() ที่นิยามไว้ใน
ตัวอย่างโปรแกรม "เฮลโลเวิลด์"ซึ่งปรากฏอยู่ในหนังสือ เดอะซีโพรแกรมมิงแลงกวิจ ที่พิมพ์ครั้งแรก กลายมาเป็นตัวแบบของโปรแกรมเกริ่นนำในตำราการเขียนโปรแกรมส่วนใหญ่หากไม่คำนึงถึงภาษาที่ใช้เขียน โปรแกรมดังกล่าวจะแสดงผล "hello, world" ทางอุปกรณ์ส่งออกมาตรฐาน ซึ่งมักจะเป็นเครื่องปลายทางหรือหน่วยแสดงผลจอภาพ
รหัสโปรแกรมรุ่นดั้งเดิมเป็นดังนี้
main()
{
printf("hello, world\n");
}
และหลังจากการปรับเปลี่ยนรหัสให้เข้ากับมาตรฐาน รหัสจึงเป็นดังนี้

#include

int main(void)
{
printf("hello, world\n");
return 0;
}
บรรทัดแรกของโปรแกรมเป็นคำสั่งชี้แนะตัวประมวลผลก่อน (preprocessing directive)แสดงไว้โดย #include ทำให้ตัวประมวลผลก่อน (อันเป็นเครื่องมืออย่างแรกที่พิจารณารหัสต้นฉบับขณะแปล)นำเนื้อหาข้อความทั้งหมดของไฟล์ส่วนหัวมาตรฐาน stdio.h เข้ามาแทนที่บรรทัดนั้น ซึ่งไฟล์ดังกล่าวมีการประกาศฟังก์ชันสำหรับอุปกรณ์นำเข้าและส่งออกมาตรฐานอาทิ printf วงเล็บแหลมที่คลุมชื่อไฟล์ stdio.h (ซึ่งความจริงคือเครื่องหมายน้อยกว่า-มากกว่า) เป็นการแสดงว่า stdio.h ถูกกำหนดที่ตั้งโดยใช้กลยุทธ์การค้นหาที่ให้ความสำคัญต่อไฟล์ส่วนหัวมาตรฐาน มากกว่าไฟล์ส่วนหัวอื่นที่มีชื่อเดียวกัน อัญประกาศคู่อาจใช้ได้ในกรณีที่ต้องการนำไฟล์ส่วนหัวที่อยู่ใกล้เคียงหรือเจาะจงโครงการเข้ามารวม

บรรทัดถัดมาเป็นการนิยามฟังก์ชันชื่อว่า main ฟังก์ชัน main เป็นฟังก์ชันที่มีจุดประสงค์พิเศษในโปรแกรมภาษาซี สภาพแวดล้อมขณะทำงานจะเรียกใช้ฟังก์ชัน main เพื่อเริ่มต้นการทำงานโปรแกรม ตัวระบุชนิด int เป็นตัวแสดงว่า ค่าส่งคืน ที่ถูกส่งคืนโดยตัวที่เรียกใช้ (กรณีนี้คือสภาพแวดล้อมขณะทำงาน)จะเป็นจำนวนเต็มค่าหนึ่ง อันเป็นผลจากการประเมินค่าของฟังก์ชันmainคำหลัก void ในรายการพารามิเตอร์แสดงว่าฟังก์ชัน main ไม่ต้องใช้อาร์กิวเมนต์ วงเล็บปีกกาเปิดหมายถึงจุดเริ่มต้นของการนิยามฟังก์ชัน main
บรรทัดถัดมาเป็นการ เรียกใช้ ฟังก์ชันที่ชื่อว่า printf ซึ่งประกาศไว้ใน stdio.h และจัดเตรียมขึ้นจากไลบรารีของระบบ ในการเรียกใช้ครั้งนี้ ฟังก์ชัน printfจะถูก ผ่านค่า ด้วยอาร์กิวเมนต์หนึ่งตัวคือตำแหน่งหน่วยความจำของอักขระตัวแรกในสายอักขระ "hello, world\n"สายอักขระดังกล่าวคือแถวลำดับที่ไม่มีชื่ออันประกอบด้วยชนิดข้อมูลcharจะถูกสร้างขึ้นโดยอัตโนมัติโดยตัวแปลโปรแกรม และแถวลำดับจะมีอักขระค่าศูนย์ (null) เป็นสิ่งที่บ่งบอกจุดสิ้นสุดของสายอักขระ (printf จำเป็นต้องทราบสิ่งนี้) \n ที่ปรากฏในสายอักขระคือ ลำดับการหลีก (escape sequence) ภาษาซีจะตีความว่าเป็นอักขระ newline (ขึ้นบรรทัดใหม่) ซึ่งจะทำให้อุปกรณ์ส่งออกทราบว่าถึงจุดสิ้นสุดของบรรทัดปัจจุบัน ค่าส่งคืนจากฟังก์ชัน printf คือชนิด int แต่มันถูกละทิ้งไปอย่างเงียบ ๆ เนื่องจากไม่มีการใช้ (โปรแกรมที่ระมัดระวังมากกว่าอาจทดสอบค่าส่งคืน เพื่อพิจารณาว่าผลจากการทำงานของฟังก์ชัน printf สำเร็จหรือไม่) อัฒภาค ; เป็นจุดสิ้นสุดข้อความสั่ง
ข้อความสั่ง return เป็นการสิ้นสุดการทำงานของฟังก์ชัน mainและทำให้ฟังก์ชันส่งกลับเป็นจำนวนเต็มค่า 0 ซึ่งสภาพแวดล้อมขณะทำงานจะตีความว่าเป็นรหัสออกจากโปรแกรมที่แสดงว่าการทำงานประสบผลสำเร็จวงเล็บปีกกาปิดหมายถึงจุดสิ้นสุดของการนิยามฟังก์ชัน main



นายวีระยุทธ สุสม รหัส 49043494343
ระบบสารสนเทศเพื่อการจัดการ
Section 01 ห้องเรียน A301
อ้างอิงจาก
http://forum.datatan.net/index.php/topic,361.0.html

วันพฤหัสบดีที่ 15 กรกฎาคม พ.ศ. 2553

ข่าวไอที


Bing
เว็บเสิร์ชเอ็นจิน จากค่ายไมโครซอฟท์ แถลงสัดส่วนการตลาดที่ 12.7% หลังเปิดตัวครบ 1 ปี ลั่นพร้อมเป็นคู่แข่ง Google และ Yahoo เต็มสูบ ชูกลยุทธ์ค้นหาผ่านมือถือ “พิมพ์น้อยแต่ค้นหาได้เยอะ”…
เมื่อวันที่ 15 ก.ค.2553 สำนักข่าวบีบีซีรายงานว่า เจ้าหน้าที่ของ Bing เว็บเสิร์ชเอ็นจินจากค่ายไมโครซอฟท์ ประกาศสัดส่วนการเติบโตของ Bing ในตลาดที่เพิ่มสูงขึ้น จากข้อมูลของ ComScore บริษัทวิจัยด้านไอที พบว่า Google ครองส่วนแบ่งตลาดการค้นหาข้อมูล 62.6% Yahoo 18.9% และ Bing ได้ส่วนแบ่งตลาดการค้นหาข้อมูลเพียง 12.7% ตั้งแต่การเปิดตัวใน 12 เดือนที่ผ่านมา ในที่ประชุมผู้บริหารของไมโครซอฟท์ได้หยิบยกประเด็นการดำเนินการต่อไปของ Bing โดยแซทยา นาเดลโล เจ้าหน้าที่ออนไลน์ของไมโครซอฟท์กล่าวว่า ขณะนี้ Bing มีสัดส่วนทางการตลาดที่ยังน้อยเมื่อเทียบกับคู่แข่ง เสิร์ชเอ็นจินเป็นตลาดที่สร้างกำไรได้มหาศาล เราจึงหวังที่จะเติบโตขึ้นมากกว่านี้เพื่อสร้างรายได้ให้กับไมโครซอฟท์ ซึ่งจะเป็นไปไม่ได้เลยหากเราไม่ทำอะไรสักอย่าง ทั้งนี้ไมโครซอฟท์ได้ลงทุนใช้งบมหาศาลให้กับ Bing เพื่อสร้างความเป็นหนึ่งในด้านการค้นหาแผนที่ จากการวิจัยของ ComScore เผยว่า ส่วนแบ่งของ Google ในตลาดค้นหาข้อมูลในอเมริกาในเดือนมิถุนายน ลดลงจาก 63.7% เหลือ 62.6% ขณะที่ Yahoo เป็นอันดับสองอยู่ที่ 18.9% เพิ่มขึ้นจาก 18.3% ในเดือน พ.ค. เกร็ก สเตอร์ลิงค์ ผู้เชี่ยวชาญในแวดวงเว็บไซต์ กล่าวว่า Google ได้เป็นส่วนหนึ่งในชีวิตมนุษย์ที่ยากจะถูกคู่แข่งรายอื่นจัดการได้ ถ้า Bing อยากที่จะเป็นคู่แข่งที่สำคัญก็ต้องเติบโตให้ได้มากกว่า 30-40% ไมโครซอฟท์ทำการเปิดตัว Bing เว็บไซต์เสิร์ชเอ็นจินรายล่าสุดในเดือน มิ.ย. 2009 ภายใต้แนวคิด “การเข้าถึงที่เป็นมิตร” (consumer friendly approach) โดยให้ความสำคัญกับหัวข้อที่ได้รับความนิยม เช่น การท่องเที่ยว เอนเตอร์เทนเมนท์ ข่าวสาร แผนที่ อากาศ และการช็อปปิ้ง ซึ่งได้รับการตอบรับที่ดีจากกลุ่มผู้ใช้ส่วนหนึ่งและมีบัญชีผู้ใช้งานผ่านโทรศัพท์มือถือประมาณ 23ล้านคนในขณะนี้ ทั้งนี้ไมโครซอฟท์ประกาศว่า ในปีนี้จะโฟกัสไปที่ฟังก์ชั่นการค้นหาข้อมูลบนโทรศัพท์มือถือมากขึ้น ในช่วง6 เดือนที่ผ่านมา ไมโครซอฟท์ได้เปิดตัวอุปกรณ์เสริมสำหรับ iPhone ซึ่งมีใช้ในอมริกาดาวน์โหลดแล้วกว่า 4.3 ล้านคน เพื่อช่วยให้ผู้ใช้พิมพ์คำที่ใช้ค้นหาน้อยลงแต่ Bing สามารถค้นหาข้อมูลได้เพิ่มขึ้น (type less and do more) “คนจำนวนมากขับขี่รถยนต์ด้วยความรีบเร่งพร้อมๆไปกับการพิมพ์ข้อความบนโทรศัพท์มือถือ ดังนั้นเราจึงได้ออกแบบการทำงานให้สะดวกยิ่งขึ้น เพื่อให้ผู้ใช้พิมพ์ข้อความสั้นๆ หรือการค้นหาผ่านภาพ เสียง และการสัมผัส ซึ่งจะเป็นกลยุทธ์สำคัญให้ Bing เป็นผู้นำการค้นหาข้อมูลผ่านมือถือ” อีริค จอร์เกนเซน รองประธานอาวุโสด้านโทรศัพท์มือถือของไมโครซอฟท์ กล่าว.
โพสโดย ข่าวไอที / ที่มาของข่าว : ไทยรัฐออนไลน์ วันที่ 15 – 07 – 2553