C++ เป็นภาษาที่นับว่าอยู่โลกธุรกิจมาได้อย่างยาวนาน โดยมีการประกาศมาตรฐานของภาษาออกมาเมื่อปี 1998 และได้รับการปรับปรุงในปี 2003 ในมาตรฐาน ISO/IEC 14882 แต่มาตรฐานใหม่ คือ C++0x (อ่านว่า ซี-พลัส-พลัส-โอ-เอ็ก) ก็ได้รับการโหวตเข้าสู่สถานะ Final Draft International Standard (FDIS) ซึ่งเป็นสถานะสุดท้ายก่อนจะประชุมลงมติเพื่อประกาศมาตรฐานแล้ว
ทีมงานคาดว่าจะมีการรายงานปัญหาในตัวมาตรฐานอยู่บ้าง และต้องมีการแก้ไขก่อนการประชุมครั้งต่อไป อย่างไรก็ตามการลงมติเข้าเป็นสถานะ FDIS ได้นั้นก็คาดว่าปัญหาจะน้อยเต็มที และน่าจะประกาศได้ภายในปีนี้จนกลายเป็นมาตรฐาน C++ 2011 ต่อไป
C++0x มีฟีเจอร์ใหม่ๆ มากมายที่จะปรับภาษาให้ทัดเทียมกับภาษารุ่นใหม่ๆ เช่นระบบ extern template ที่ทำให้ไม่ต้องอิมพลีเมนต์ template ทั้งหมดในไฟล์ header, การประกาศ list ได้ในโค้ดโดยตรง, การประกาศ type แบบ auto, การทำลูปแบบ for-in, ฟังก์ชั่น lambda และฟีเจอร์อื่นๆ อีกมากมาย (อ่านเพิ่มเติม Wikipedia)
สถานะในตอนนี้ต้องบอกว่ายังอีกนานพอสมควรกว่าที่เราจะได้ใช้ฟีเจอร์พวกนี้ในวงกว้าง โดยหลังการประกาศต้องรออีกระยะที่คอมไพลเลอร์ต่างๆ จะรองรับฟีเจอร์เหล่านี้ครบถ้วน แต่ใน gcc 4.6 นั้นก็นับว่ารองรับไปเยอะมากแล้ว ยกเว้นส่วนของการทำงานแบบขนาน (concurrency) เท่านั้นที่ยังรองรับจำกัดอยู่มาก
ถ้าใครคิดจะลงวิชา programming language อาจจะต้องระวังอาจารย์หยิบของใหม่มาสอนหลังจากนี้
ที่มา - Herb Sutter, GCC
on
C/C++
Qubit Mon, 28/03/2011 - 02:36
C/C++ จงเจริญๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ ฮ่าๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ
อ่านหัวข้อแล้วนึกถึงพวกซุปเปอ
b4lmung Mon, 28/03/2011 - 03:17
อ่านหัวข้อแล้วนึกถึงพวกซุปเปอร์ไซย่าร่างสามอะไรพวกนี้ขึ้นมาเลย
ขอให้ C/C++ อายุยืน หมื่นปี
soginal Mon, 28/03/2011 - 02:47
ขอให้ C/C++ อายุยืน หมื่นปี หมื่นๆปี (0.o)
+1
litty Mon, 28/03/2011 - 08:52
In reply to ขอให้ C/C++ อายุยืน หมื่นปี by soginal
+1
C/C++ ไม่ใช้ฮ่องเต้ นะครับ
juliusds Mon, 28/03/2011 - 10:30
In reply to ขอให้ C/C++ อายุยืน หมื่นปี by soginal
C/C++ ไม่ใช้ฮ่องเต้ นะครับ พันปีพันๆปีก็พอ เหอๆ
เมื่อไหร่จะให้เลิกเขียน
Thaina Mon, 28/03/2011 - 03:33
เมื่อไหร่จะให้เลิกเขียน Header File....
เลิกเถอะๆ
น่าจะอีกยี่สิบปี
mr_tawan Mon, 28/03/2011 - 04:09
In reply to เมื่อไหร่จะให้เลิกเขียน by Thaina
น่าจะอีกยี่สิบปี อย่างต่ำ
ก็คือจนกว่า C++ จะไม่มีคนใช้น่ะล่ะ
แล้วก็จะมาเขียน interface
JavaDevil Mon, 28/03/2011 - 14:28
In reply to เมื่อไหร่จะให้เลิกเขียน by Thaina
แล้วก็จะมาเขียน interface แทนใน java
Header File
mode Tue, 29/03/2011 - 14:50
In reply to เมื่อไหร่จะให้เลิกเขียน by Thaina
Header File ก็มีประโยชน์ของมันครับ
อย่างไรครับ?
Thaina Tue, 29/03/2011 - 14:59
In reply to Header File by mode
อย่างไรครับ?
หาดูเอาเองครับ
mode Tue, 29/03/2011 - 17:02
In reply to อย่างไรครับ? by Thaina
หาดูเอาเองครับ
ผมไม่เคยเห็นประโยชน์ครับ
Thaina Tue, 29/03/2011 - 17:16
In reply to หาดูเอาเองครับ by mode
ผมไม่เคยเห็นประโยชน์ครับ ถ้าคุณตอบไม่ได้ก็อย่ามาโยนให้คนอื่นไปหาเอง
จะรอคนป้อนให้เพื่อเปลี่ยนความ
mode Tue, 29/03/2011 - 18:00
In reply to ผมไม่เคยเห็นประโยชน์ครับ by Thaina
จะรอคนป้อนให้เพื่อเปลี่ยนความคิดก็แล้วแต่ครับ
ว่าแต่เคยใช้ C/C++ รึยังครับ
mode Tue, 29/03/2011 - 18:04
In reply to ผมไม่เคยเห็นประโยชน์ครับ by Thaina
ว่าแต่เคยใช้ C/C++ รึยังครับ
เคยใช้ครับ
Thaina Tue, 29/03/2011 - 19:12
In reply to ว่าแต่เคยใช้ C/C++ รึยังครับ by mode
เคยใช้ครับ ถึงได้กล้าพูดว่ามันควรเลิกเขียน
แล้วที่คุณมาพูด คุณเคยใช้ภาษาอื่นที่ไม่ต้องมี header file มั้ยครับ
ถ้าไม่มีปัญญาจะอธิบาย ก็อย่ามาตอบแต่แรกดีกว่าครับ กวนอารมณ์คนอื่นเขา
ใช้ C/C++
mode Tue, 29/03/2011 - 20:53
In reply to เคยใช้ครับ by Thaina
ใช้ C/C++ ทำโปรเจคเสร็จกี่ชิ้นแล้วครับ หรือเคยใช้แบบศึกษาธรรมดาไม่เคยไปเขียนจริงจังอะไร
สรุปคือไม่มีปัญญาอธิบาย
Thaina Tue, 29/03/2011 - 21:52
In reply to ใช้ C/C++ by mode
สรุปคือไม่มีปัญญาอธิบาย มีแต่ปัญญามายั่วคนอื่น ถามสิ่งที่แสดงความดูถูก หาเรื่องไปเรื่อยๆ ใช่มั้ยครับ
แทนที่จะอธิบายแนวคิดตัวเองให้จบเรื่องไปตั้งแต่ที่ถามว่า "อย่างไร" กลับมาตอบหาเรื่องกวนโมโหทีละรีพลายสองรีพลาย
ต่อให้ผมตอบว่า
"ผมเคยใช้ทำโปรเจคต์เล็กๆง่ายๆ แต่ก็เปนชิ้นเปนอัน เพราะเรียนมากับมัน ก่อนหน้านั้นก็ใช้มันศึกษาการเขียนโปรแกรม และหลังจากนั้นก็ใช้มันทำงานเล็กๆน้อยๆ ช่วยเหลืองานวิจัยของอาจารย์"
ก็คงไม่ได้คำตอบอะไรที่ดูจะมีปัญญาออกมาจากคุณอยู่ดี
อ้อ ลืมไป แม้แต่สิ่งที่ผมถาม คุณยังไม่ตอบซักอย่าง ดีแต่กลับมาถามแสดงสันดานดูถูกคนอื่น ซึ่งไม่ได้เกี่ยวอะไรกับเรื่องนี้
คุณคงคิดจะแสดงปัญญาแค่นี้เพื่ออมภูมิ หรือบางทีอาจมีอยู่แค่นี้ ผมไม่ทราบ แต่เลิกเถอะครับ
ถามกลับ
Thaina Tue, 29/03/2011 - 21:58
In reply to ใช้ C/C++ by mode
ถามกลับ คุณเคยใช้ภาษาที่ไม่ต้องมี Header File อย่าง C# / Java / อื่นๆ
มาทำโปรเจคต์เปนชิ้นเปนอันกี่ชิ้นแล้วครับ?
ถึงคิดว่า Header File มันมีข้อดีของมันที่ดีกว่าไม่มี
หรือไม่เคยใช้แต่แค่จับๆดูๆ แล้วก็มาพูดโดยไม่เคยใช้จริง
ถ้าเคยใช้ C/C++
mode Tue, 29/03/2011 - 23:01
In reply to ถามกลับ by Thaina
ถ้าเคยใช้ C/C++ และเข้าใจคอนเซ็ปต์แล้ว ขอถามว่า Header File เขาคิดขึ้นมาเพื่อประโยชน์อะไรครับ แล้วทำไมถึงคิดว่า Header File ไม่มีประโยชน์อย่างที่เขาคิดไว้
คุณเริ่มเองทำไมคุณไม่ตอบเองคร
Thaina Tue, 29/03/2011 - 23:11
In reply to ถ้าเคยใช้ C/C++ by mode
คุณเริ่มเองทำไมคุณไม่ตอบเองครับ?
อย่ามาทำอมภูมิดีกว่าครับ ไม่งั้นก็เลิกไปเสียเถอะ
ผมถามก่อน ทำไมคุณไม่ตอบ ผมถามอีกหลายคำถาม คุณก็ไม่ตอบ
มีวัตถุประสงค์อะไรครับ ต้องการอะไร หรือแค่เกรียนไปวันๆ?
คุณเปิดประเด็นก่อนว่า Header
mode Tue, 29/03/2011 - 23:34
In reply to คุณเริ่มเองทำไมคุณไม่ตอบเองคร by Thaina
คุณเปิดประเด็นก่อนว่า Header File ไม่มีประโยชน์น่ะครับ
จริง ๆ ผมก็ไม่เชื่อในตรรกะว่า "ไม่ตอบ = ไม่รู้" หรอกนะครับ
แต่กับคุณที่เชื่ออย่างนั้นแล้ว ถ้าหากคุณไม่ตอบนั่นคือคุณรู้ไม่จริงหรือเปล่าครับ
จะให้ผมตอบทั้งหมดผมก็ไปขุดเอา
Thaina Tue, 29/03/2011 - 23:47
In reply to คุณเปิดประเด็นก่อนว่า Header by mode
จะให้ผมตอบทั้งหมดผมก็ไปขุดเอาจากที่ไหนมาสุมก็ได้ครับ
แต่มันจะตรงกับที่คุณคิดรึเปล่า เพราะคุณมีคำตอบในใจอยู่แล้ว
อย่ามาลองภูมิคนอื่นเถอะครับ มันน่ารังเกียจ และน่ารำคาญมากครับ
เพราะคุณลองภูมิ อมภูมิ ถามอย่างดูถูก มาหลายรีพลายแล้ว
ผมเปิดประเด็นว่า Header File ไม่มีประโยชน์ แต่คุณเองที่มาเถียงผมว่า มันมี แต่กลับไม่บอกว่ามีอย่างไร แถมพอถามว่า แล้วมันมีอย่างไร กลับยอกย้อน
ผมถามอย่างบริสุทธิ์ใจ เผื่อว่าคุณจะพูดอะไรที่ผมไม่รู้ก็อยากให้บอกให้ฟัง แต่กลับทำกันแบบนีั้
เอาจริงๆ ในเมื่อผมบอกว่า ไม่มี ผมก็มีสิทธิ์พูดว่า มันไม่มีจะให้หามาได้ยังไง
คุณเองที่บอกว่ามีต่างหากที่ต้องหามา
ใช้ตรรกะอะไรอยู่ครับ? หรือไม่ได้ใช้
สำหรับผม มันเอาไว้ ซ่อนส่วน
ZetaSolid Wed, 30/03/2011 - 02:26
In reply to จะให้ผมตอบทั้งหมดผมก็ไปขุดเอา by Thaina
สำหรับผม มันเอาไว้
ซ่อนส่วน implementation โดยเฉพาะเวลาจะ link object หลายๆ implementation ที่มี interface เดียวกัน ก็เปลี่ยน แต่ *.obj ไม่ใช้ไปแก้โค้ด
ทำเป็นส่วน configuration
จากข้อ 1 สามารถที่จะทำ preprocess ทิ้งไว้ก่อนก็ได้ ถ้า header file มันซับซ้อน มากๆ
เอาไว้เขียน document
.... คิดไม่ออก แต่ผมรู้ว่ามีอีกเยอะ
ปล
ผม ไม่ใช่ C++ Zealot นะครับ :P
ขอตอบโดยอ้างอิง Java กับ C#
Thaina Wed, 30/03/2011 - 02:51
In reply to สำหรับผม มันเอาไว้ ซ่อนส่วน by ZetaSolid
ขอตอบโดยอ้างอิง Java กับ C# นะครับ
1 ผมว่าใช้ interface ของ Java กับ C# จะ Clean มากกว่านะครับ
คือระบบมันดูเหมือน Hack เอา แบบนี้ดูจะเจ๊งเอาง่ายๆนะ
ยิ่งหลักการ OOP ก็มีระบบ inheritance/polymorphism อยู่แล้ว
ซึ่งผมว่าถ้าไม่ใช่เพราะ Java/.NET เน้น OOP ก็ทำระบบให้รับภาษา Functional ได้เหมือนกัน
2,3 #define / #ifdef ผมว่ามันน่าจะสร้างปัญหาได้นะ เวลาที่ต้องลิงค์ .h ยาวๆซ้อนไปซ้อนมา
4 ใช้ XML Comment => Intellisense น่าจะง่ายกว่า รึเปล่า?
ความเห็นของผมคืองานเขียน Header มันให้ระบบ Gen เอาใน Background ได้
คือปรับให้ Compiler จัดการเรื่องพวกนี้เอาเอง
และก็น่าจะเขียน dll ให้มี Manifest เหมือนอย่างที่ .NET หรือ Java ทำ ได้เหมือนกัน ขอแค่ออกมาตรฐานให้เรียบร้อย เรื่องพวกนี้ก็จะเปนหน้าที่ของ Compiler กับ IDE
ผมอาจจะเปน Zealot ภาษา C# รึเปล่าผมก็ไม่รู้
แต่ผมก็จะพยายามใช้เหตุผลให้มากที่สุดครับ
หลายๆ ส่วนใน C++ ที่ใช้
lew Wed, 30/03/2011 - 10:14
In reply to สำหรับผม มันเอาไว้ ซ่อนส่วน by ZetaSolid
หลายๆ ส่วนใน C++ ที่ใช้ preprocess นั้น ไม่เป็นที่นิยมอีกต่อไปเพราะมันมีปัญหามากมายครับ
อย่างใน C++0x นี่เองก็มี constant expression มาทำงานทดแทน preprocessing ไปแล้วอีกส่วน
อันนี้โทษการออกแบบแรกๆ ไม่ได้ เพราะสมัยนั้นพลังประมวลผลของ compiler ไม่พอ
การซ่อนส่วน implementation นั้นดีแน่นอนครับ แต่อย่างที่ว่าระบบ Interface ของ Java นั้นดีกว่ามาก ถ้าใครเคยเจอ header ที่ include กันไปมามั่วซั่วไปในโปรเจคใหญ่ๆ จะพบว่ามันเลวร้ายมาก
อาจจะต้องแยกกันแง่ของ function กับ "ความดี" ของมันออกจากกันนะครับ
ผมใช้ C++ ผสมๆกับ
le-phather Mon, 28/03/2011 - 04:07
ผมใช้ C++ ผสมๆกับ Objective-C ก็คล่องดีนะ (ดึงเฉพาะ feature ที่ใน C++ ไม่มีมาใช้)
แต่ถ้ามี Feature ดีๆเทียบเท่ากับของใหม่ๆ ก็นับว่าเป็นข่าวดี
อัดฟีเจอร์เข้ามามากไปหรือเปล่
mr_tawan Mon, 28/03/2011 - 04:10
อัดฟีเจอร์เข้ามามากไปหรือเปล่าไปรู้นะ ...
มันดีเลย์มาชาติกว่าได้แล้วผมว่า
PL
iStyle Mon, 28/03/2011 - 04:47
PL ไม่เห็นสอนอะไรถึงขั้นนี้เลย-*- หรือว่ามัวโดดหว่า
อิมหลีเมนต์ พิมพ์ผิดครับ
natt_han Mon, 28/03/2011 - 08:31
อิมหลีเมนต์ พิมพ์ผิดครับ
C++
kimminwoo Mon, 28/03/2011 - 08:33
C++ เป็นภาษาที่นับว่าอยู่ใลกธุรกิจมา
ในโลกหรือเปล่าคับ
ตอนปกตินี้เจอ code แบบ boost
caznova Mon, 28/03/2011 - 09:17
ตอนปกตินี้เจอ code แบบ boost ก็ มึนแล้ว นี่จะมีของเล่นให้ boost เอามาทำให้มึนมากก่านี้อีก
นึกถึงกันดั้ม อ่านแว้บๆ เป็น
joomla Mon, 28/03/2011 - 09:26
นึกถึงกันดั้ม
อ่านแว้บๆ เป็น Final Drift <--
เป็นภาษาที่ยืนยง
khajochi Mon, 28/03/2011 - 11:29
เป็นภาษาที่ยืนยง และก็ใช้งานได้ดีจนถึงทุกวันนี้เลยนะ
ชื่อมาตรฐานจะยาวไปไหน อิอ
pines Mon, 28/03/2011 - 11:39
ชื่อมาตรฐานจะยาวไปไหน อิอ
GCC นี่ทันสมัยสุดใช่ไหมเนี่ย
deaw Mon, 28/03/2011 - 11:54
GCC นี่ทันสมัยสุดใช่ไหมเนี่ย
foreach \^^/
PiKO Mon, 28/03/2011 - 12:58
foreach ^^/
Lambda Expressions ใช้ [] แทน
Soul_Master Mon, 28/03/2011 - 15:20
Lambda Expressions ใช้ [] แทน Expression คิดได้ไงหว่า? ถ้าตั้งหลักไม่ดี อาจจะนึกว่ามันเป็น array ของอะไรสักอย่าง
[](int x, int y) -> int { int z = x + y; return z + x; }เทียบกับ C# ที่เขียนอยู่บนพื้นฐานของ Generic
Expression> exp = (x,y) => { int z = x + y; return z + x; }ตามไม่ทันแล้ว ออก PLinq มาอีก
kurosame Thu, 31/03/2011 - 22:29
In reply to Lambda Expressions ใช้ [] แทน by Soul_Master
ตามไม่ทันแล้ว ออก PLinq มาอีก -__-
[duplicate]
Soul_Master Mon, 28/03/2011 - 15:20
[duplicate]
ชื่อไม่เท่เลย
lew.★ Tue, 29/03/2011 - 09:38
ชื่อไม่เท่เลย
Wow ต้องลอง
ipas Thu, 31/03/2011 - 10:16
Wow ต้องลอง