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
Comments
C/C++ จงเจริญๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ ฮ่าๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ
อ่านหัวข้อแล้วนึกถึงพวกซุปเปอร์ไซย่าร่างสามอะไรพวกนี้ขึ้นมาเลย
ขอให้ C/C++ อายุยืน หมื่นปี หมื่นๆปี (0.o)
+1
C/C++ ไม่ใช้ฮ่องเต้ นะครับ พันปีพันๆปีก็พอ เหอๆ
เมื่อไหร่จะให้เลิกเขียน Header File....
เลิกเถอะๆ
น่าจะอีกยี่สิบปี อย่างต่ำ
ก็คือจนกว่า C++ จะไม่มีคนใช้น่ะล่ะ
แล้วก็จะมาเขียน interface แทนใน java
Header File ก็มีประโยชน์ของมันครับ
อย่างไรครับ?
หาดูเอาเองครับ
ผมไม่เคยเห็นประโยชน์ครับ ถ้าคุณตอบไม่ได้ก็อย่ามาโยนให้คนอื่นไปหาเอง
จะรอคนป้อนให้เพื่อเปลี่ยนความคิดก็แล้วแต่ครับ
ว่าแต่เคยใช้ C/C++ รึยังครับ
เคยใช้ครับ ถึงได้กล้าพูดว่ามันควรเลิกเขียน
แล้วที่คุณมาพูด คุณเคยใช้ภาษาอื่นที่ไม่ต้องมี header file มั้ยครับ
ถ้าไม่มีปัญญาจะอธิบาย ก็อย่ามาตอบแต่แรกดีกว่าครับ กวนอารมณ์คนอื่นเขา
ใช้ C/C++ ทำโปรเจคเสร็จกี่ชิ้นแล้วครับ หรือเคยใช้แบบศึกษาธรรมดาไม่เคยไปเขียนจริงจังอะไร
สรุปคือไม่มีปัญญาอธิบาย มีแต่ปัญญามายั่วคนอื่น ถามสิ่งที่แสดงความดูถูก หาเรื่องไปเรื่อยๆ ใช่มั้ยครับ
แทนที่จะอธิบายแนวคิดตัวเองให้จบเรื่องไปตั้งแต่ที่ถามว่า "อย่างไร" กลับมาตอบหาเรื่องกวนโมโหทีละรีพลายสองรีพลาย
ต่อให้ผมตอบว่า
"ผมเคยใช้ทำโปรเจคต์เล็กๆง่ายๆ แต่ก็เปนชิ้นเปนอัน เพราะเรียนมากับมัน ก่อนหน้านั้นก็ใช้มันศึกษาการเขียนโปรแกรม และหลังจากนั้นก็ใช้มันทำงานเล็กๆน้อยๆ ช่วยเหลืองานวิจัยของอาจารย์"
ก็คงไม่ได้คำตอบอะไรที่ดูจะมีปัญญาออกมาจากคุณอยู่ดี
อ้อ ลืมไป แม้แต่สิ่งที่ผมถาม คุณยังไม่ตอบซักอย่าง ดีแต่กลับมาถามแสดงสันดานดูถูกคนอื่น ซึ่งไม่ได้เกี่ยวอะไรกับเรื่องนี้
คุณคงคิดจะแสดงปัญญาแค่นี้เพื่ออมภูมิ หรือบางทีอาจมีอยู่แค่นี้ ผมไม่ทราบ แต่เลิกเถอะครับ
ถามกลับ คุณเคยใช้ภาษาที่ไม่ต้องมี Header File อย่าง C# / Java / อื่นๆ
มาทำโปรเจคต์เปนชิ้นเปนอันกี่ชิ้นแล้วครับ?
ถึงคิดว่า Header File มันมีข้อดีของมันที่ดีกว่าไม่มี
หรือไม่เคยใช้แต่แค่จับๆดูๆ แล้วก็มาพูดโดยไม่เคยใช้จริง
ถ้าเคยใช้ C/C++ และเข้าใจคอนเซ็ปต์แล้ว ขอถามว่า Header File เขาคิดขึ้นมาเพื่อประโยชน์อะไรครับ แล้วทำไมถึงคิดว่า Header File ไม่มีประโยชน์อย่างที่เขาคิดไว้
คุณเริ่มเองทำไมคุณไม่ตอบเองครับ?
อย่ามาทำอมภูมิดีกว่าครับ ไม่งั้นก็เลิกไปเสียเถอะ
ผมถามก่อน ทำไมคุณไม่ตอบ ผมถามอีกหลายคำถาม คุณก็ไม่ตอบ
มีวัตถุประสงค์อะไรครับ ต้องการอะไร หรือแค่เกรียนไปวันๆ?
คุณเปิดประเด็นก่อนว่า Header File ไม่มีประโยชน์น่ะครับ
จริง ๆ ผมก็ไม่เชื่อในตรรกะว่า "ไม่ตอบ = ไม่รู้" หรอกนะครับ
แต่กับคุณที่เชื่ออย่างนั้นแล้ว ถ้าหากคุณไม่ตอบนั่นคือคุณรู้ไม่จริงหรือเปล่าครับ
จะให้ผมตอบทั้งหมดผมก็ไปขุดเอาจากที่ไหนมาสุมก็ได้ครับ
แต่มันจะตรงกับที่คุณคิดรึเปล่า เพราะคุณมีคำตอบในใจอยู่แล้ว
อย่ามาลองภูมิคนอื่นเถอะครับ มันน่ารังเกียจ และน่ารำคาญมากครับ
เพราะคุณลองภูมิ อมภูมิ ถามอย่างดูถูก มาหลายรีพลายแล้ว
ผมเปิดประเด็นว่า Header File ไม่มีประโยชน์ แต่คุณเองที่มาเถียงผมว่า มันมี แต่กลับไม่บอกว่ามีอย่างไร แถมพอถามว่า แล้วมันมีอย่างไร กลับยอกย้อน
ผมถามอย่างบริสุทธิ์ใจ เผื่อว่าคุณจะพูดอะไรที่ผมไม่รู้ก็อยากให้บอกให้ฟัง แต่กลับทำกันแบบนีั้
เอาจริงๆ ในเมื่อผมบอกว่า ไม่มี ผมก็มีสิทธิ์พูดว่า มันไม่มีจะให้หามาได้ยังไง
คุณเองที่บอกว่ามีต่างหากที่ต้องหามา
ใช้ตรรกะอะไรอยู่ครับ? หรือไม่ได้ใช้
สำหรับผม มันเอาไว้
ซ่อนส่วน implementation โดยเฉพาะเวลาจะ link object หลายๆ implementation ที่มี interface เดียวกัน ก็เปลี่ยน แต่ *.obj ไม่ใช้ไปแก้โค้ด
ทำเป็นส่วน configuration
จากข้อ 1 สามารถที่จะทำ preprocess ทิ้งไว้ก่อนก็ได้ ถ้า header file มันซับซ้อน มากๆ
เอาไว้เขียน document
.... คิดไม่ออก แต่ผมรู้ว่ามีอีกเยอะ
ปล
ผม ไม่ใช่ C++ Zealot นะครับ :P
ขอตอบโดยอ้างอิง 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++ ที่ใช้ preprocess นั้น ไม่เป็นที่นิยมอีกต่อไปเพราะมันมีปัญหามากมายครับ
อย่างใน C++0x นี่เองก็มี constant expression มาทำงานทดแทน preprocessing ไปแล้วอีกส่วน
อันนี้โทษการออกแบบแรกๆ ไม่ได้ เพราะสมัยนั้นพลังประมวลผลของ compiler ไม่พอ
การซ่อนส่วน implementation นั้นดีแน่นอนครับ แต่อย่างที่ว่าระบบ Interface ของ Java นั้นดีกว่ามาก ถ้าใครเคยเจอ header ที่ include กันไปมามั่วซั่วไปในโปรเจคใหญ่ๆ จะพบว่ามันเลวร้ายมาก
อาจจะต้องแยกกันแง่ของ function กับ "ความดี" ของมันออกจากกันนะครับ
lewcpe.com, @wasonliw
ผมใช้ C++ ผสมๆกับ Objective-C ก็คล่องดีนะ (ดึงเฉพาะ feature ที่ใน C++ ไม่มีมาใช้)
แต่ถ้ามี Feature ดีๆเทียบเท่ากับของใหม่ๆ ก็นับว่าเป็นข่าวดี
อัดฟีเจอร์เข้ามามากไปหรือเปล่าไปรู้นะ ...
มันดีเลย์มาชาติกว่าได้แล้วผมว่า
PL ไม่เห็นสอนอะไรถึงขั้นนี้เลย-*- หรือว่ามัวโดดหว่า
May the Force Close be with you. || @nuttyi
อิมหลีเมนต์ พิมพ์ผิดครับ
C++ เป็นภาษาที่นับว่าอยู่ใลกธุรกิจมา
ในโลกหรือเปล่าคับ
ตอนปกตินี้เจอ code แบบ boost ก็ มึนแล้ว นี่จะมีของเล่นให้ boost เอามาทำให้มึนมากก่านี้อีก
นึกถึงกันดั้ม
อ่านแว้บๆ เป็น Final Drift <--
เป็นภาษาที่ยืนยง และก็ใช้งานได้ดีจนถึงทุกวันนี้เลยนะ
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
ชื่อมาตรฐานจะยาวไปไหน อิอ
GCC นี่ทันสมัยสุดใช่ไหมเนี่ย
foreach \^^/
:: DigiKin8 ::
Lambda Expressions ใช้ [] แทน Expression คิดได้ไงหว่า? ถ้าตั้งหลักไม่ดี อาจจะนึกว่ามันเป็น array ของอะไรสักอย่าง
เทียบกับ C# ที่เขียนอยู่บนพื้นฐานของ Generic
ตามไม่ทันแล้ว ออก PLinq มาอีก -__-
{$user} was not an Imposter
[duplicate]
ชื่อไม่เท่เลย
Wow ต้องลอง