Tags:

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

By: Qubit
AndroidUbuntu
Qubit's blog
on 28/03/11 1:36 #272573 toggle
Qubit's picture

C/C++ จงเจริญๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ ฮ่าๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ

By: b4lmung
b4lmung's blog
on 28/03/11 2:17 #272575 toggle
b4lmung's picture

อ่านหัวข้อแล้วนึกถึงพวกซุปเปอร์ไซย่าร่างสามอะไรพวกนี้ขึ้นมาเลย

By: soginal
AndroidIn Love
soginal's blog
on 28/03/11 1:47 #272578 toggle
soginal's picture

ขอให้ C/C++ อายุยืน หมื่นปี หมื่นๆปี (0.o)


When your hammer is C++, everything begins to look like a thumb.

By: litty
iPhone
litty's blog
on 28/03/11 7:52 #272614 Reply to:272578 toggle
litty's picture

+1

By: juliusds
AndroidUbuntuWindows
juliusds's blog
on 28/03/11 9:30 #272648 Reply to:272578 toggle
juliusds's picture

C/C++ ไม่ใช้ฮ่องเต้ นะครับ พันปีพันๆปีก็พอ เหอๆ

By: Thaina
Windows
Thaina's blog
on 28/03/11 2:33 #272584 toggle
Thaina's picture

เมื่อไหร่จะให้เลิกเขียน Header File....

เลิกเถอะๆ


My Blog

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 28/03/11 3:09 #272587 Reply to:272584 toggle
mr_tawan's picture

น่าจะอีกยี่สิบปี อย่างต่ำ

ก็คือจนกว่า C++ จะไม่มีคนใช้น่ะล่ะ


By: JavaDevil
iPhoneUbuntuIn Love
JavaDevil's blog
on 28/03/11 13:28 #272750 Reply to:272584 toggle
JavaDevil's picture

แล้วก็จะมาเขียน interface แทนใน java

By: mode
mode's blog
on 29/03/11 13:50 #273148 Reply to:272584 toggle
mode's picture

Header File ก็มีประโยชน์ของมันครับ

By: Thaina
Windows
Thaina's blog
on 29/03/11 13:59 #273151 Reply to:273148 toggle
Thaina's picture

อย่างไรครับ?


My Blog

By: mode
mode's blog
on 29/03/11 16:02 #273181 Reply to:273151 toggle
mode's picture

หาดูเอาเองครับ

By: Thaina
Windows
Thaina's blog
on 29/03/11 16:16 #273183 Reply to:273181 toggle
Thaina's picture

ผมไม่เคยเห็นประโยชน์ครับ ถ้าคุณตอบไม่ได้ก็อย่ามาโยนให้คนอื่นไปหาเอง


My Blog

By: mode
mode's blog
on 29/03/11 17:00 #273191 Reply to:273183 toggle
mode's picture

จะรอคนป้อนให้เพื่อเปลี่ยนความคิดก็แล้วแต่ครับ

By: mode
mode's blog
on 29/03/11 17:04 #273194 Reply to:273183 toggle
mode's picture

ว่าแต่เคยใช้ C/C++ รึยังครับ

By: Thaina
Windows
Thaina's blog
on 29/03/11 18:12 #273212 Reply to:273194 toggle
Thaina's picture

เคยใช้ครับ ถึงได้กล้าพูดว่ามันควรเลิกเขียน

แล้วที่คุณมาพูด คุณเคยใช้ภาษาอื่นที่ไม่ต้องมี header file มั้ยครับ

ถ้าไม่มีปัญญาจะอธิบาย ก็อย่ามาตอบแต่แรกดีกว่าครับ กวนอารมณ์คนอื่นเขา


My Blog

By: mode
mode's blog
on 29/03/11 19:53 #273239 Reply to:273212 toggle
mode's picture

ใช้ C/C++ ทำโปรเจคเสร็จกี่ชิ้นแล้วครับ หรือเคยใช้แบบศึกษาธรรมดาไม่เคยไปเขียนจริงจังอะไร

By: Thaina
Windows
Thaina's blog
on 29/03/11 20:52 #273246 Reply to:273239 toggle
Thaina's picture

สรุปคือไม่มีปัญญาอธิบาย มีแต่ปัญญามายั่วคนอื่น ถามสิ่งที่แสดงความดูถูก หาเรื่องไปเรื่อยๆ ใช่มั้ยครับ

แทนที่จะอธิบายแนวคิดตัวเองให้จบเรื่องไปตั้งแต่ที่ถามว่า "อย่างไร" กลับมาตอบหาเรื่องกวนโมโหทีละรีพลายสองรีพลาย

ต่อให้ผมตอบว่า
"ผมเคยใช้ทำโปรเจคต์เล็กๆง่ายๆ แต่ก็เปนชิ้นเปนอัน เพราะเรียนมากับมัน ก่อนหน้านั้นก็ใช้มันศึกษาการเขียนโปรแกรม และหลังจากนั้นก็ใช้มันทำงานเล็กๆน้อยๆ ช่วยเหลืองานวิจัยของอาจารย์"
ก็คงไม่ได้คำตอบอะไรที่ดูจะมีปัญญาออกมาจากคุณอยู่ดี

อ้อ ลืมไป แม้แต่สิ่งที่ผมถาม คุณยังไม่ตอบซักอย่าง ดีแต่กลับมาถามแสดงสันดานดูถูกคนอื่น ซึ่งไม่ได้เกี่ยวอะไรกับเรื่องนี้

คุณคงคิดจะแสดงปัญญาแค่นี้เพื่ออมภูมิ หรือบางทีอาจมีอยู่แค่นี้ ผมไม่ทราบ แต่เลิกเถอะครับ


My Blog

By: Thaina
Windows
Thaina's blog
on 29/03/11 20:58 #273248 Reply to:273239 toggle
Thaina's picture

ถามกลับ คุณเคยใช้ภาษาที่ไม่ต้องมี Header File อย่าง C# / Java / อื่นๆ

มาทำโปรเจคต์เปนชิ้นเปนอันกี่ชิ้นแล้วครับ?

ถึงคิดว่า Header File มันมีข้อดีของมันที่ดีกว่าไม่มี

หรือไม่เคยใช้แต่แค่จับๆดูๆ แล้วก็มาพูดโดยไม่เคยใช้จริง


My Blog

By: mode
mode's blog
on 29/03/11 22:01 #273262 Reply to:273248 toggle
mode's picture

ถ้าเคยใช้ C/C++ และเข้าใจคอนเซ็ปต์แล้ว ขอถามว่า Header File เขาคิดขึ้นมาเพื่อประโยชน์อะไรครับ แล้วทำไมถึงคิดว่า Header File ไม่มีประโยชน์อย่างที่เขาคิดไว้

By: Thaina
Windows
Thaina's blog
on 29/03/11 22:11 #273265 Reply to:273262 toggle
Thaina's picture

คุณเริ่มเองทำไมคุณไม่ตอบเองครับ?

อย่ามาทำอมภูมิดีกว่าครับ ไม่งั้นก็เลิกไปเสียเถอะ

ผมถามก่อน ทำไมคุณไม่ตอบ ผมถามอีกหลายคำถาม คุณก็ไม่ตอบ

มีวัตถุประสงค์อะไรครับ ต้องการอะไร หรือแค่เกรียนไปวันๆ?


My Blog

By: mode
mode's blog
on 29/03/11 22:34 #273269 Reply to:273265 toggle
mode's picture

คุณเปิดประเด็นก่อนว่า Header File ไม่มีประโยชน์น่ะครับ

จริง ๆ ผมก็ไม่เชื่อในตรรกะว่า "ไม่ตอบ = ไม่รู้" หรอกนะครับ

แต่กับคุณที่เชื่ออย่างนั้นแล้ว ถ้าหากคุณไม่ตอบนั่นคือคุณรู้ไม่จริงหรือเปล่าครับ

By: Thaina
Windows
Thaina's blog
on 29/03/11 22:47 #273273 Reply to:273269 toggle
Thaina's picture

จะให้ผมตอบทั้งหมดผมก็ไปขุดเอาจากที่ไหนมาสุมก็ได้ครับ
แต่มันจะตรงกับที่คุณคิดรึเปล่า เพราะคุณมีคำตอบในใจอยู่แล้ว

อย่ามาลองภูมิคนอื่นเถอะครับ มันน่ารังเกียจ และน่ารำคาญมากครับ
เพราะคุณลองภูมิ อมภูมิ ถามอย่างดูถูก มาหลายรีพลายแล้ว

ผมเปิดประเด็นว่า Header File ไม่มีประโยชน์ แต่คุณเองที่มาเถียงผมว่า มันมี แต่กลับไม่บอกว่ามีอย่างไร แถมพอถามว่า แล้วมันมีอย่างไร กลับยอกย้อน

ผมถามอย่างบริสุทธิ์ใจ เผื่อว่าคุณจะพูดอะไรที่ผมไม่รู้ก็อยากให้บอกให้ฟัง แต่กลับทำกันแบบนีั้

เอาจริงๆ ในเมื่อผมบอกว่า ไม่มี ผมก็มีสิทธิ์พูดว่า มันไม่มีจะให้หามาได้ยังไง
คุณเองที่บอกว่ามีต่างหากที่ต้องหามา
ใช้ตรรกะอะไรอยู่ครับ? หรือไม่ได้ใช้


My Blog

By: ZetaSolid
Windows PhoneSymbianUbuntuWindows
ZetaSolid's blog
on 30/03/11 1:26 #273309 Reply to:273273 toggle
ZetaSolid's picture

สำหรับผม มันเอาไว้

  1. ซ่อนส่วน implementation โดยเฉพาะเวลาจะ link object หลายๆ implementation ที่มี interface เดียวกัน ก็เปลี่ยน แต่ *.obj ไม่ใช้ไปแก้โค้ด

  2. ทำเป็นส่วน configuration

  3. จากข้อ 1 สามารถที่จะทำ preprocess ทิ้งไว้ก่อนก็ได้ ถ้า header file มันซับซ้อน มากๆ

  4. เอาไว้เขียน document

  5. .... คิดไม่ออก แต่ผมรู้ว่ามีอีกเยอะ

ปล

ผม ไม่ใช่ C++ Zealot นะครับ :P

By: Thaina
Windows
Thaina's blog
on 30/03/11 1:51 #273317 Reply to:273309 toggle
Thaina's picture

ขอตอบโดยอ้างอิง 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# รึเปล่าผมก็ไม่รู้
แต่ผมก็จะพยายามใช้เหตุผลให้มากที่สุดครับ


My Blog

By: lew
FounderJusci's WriterMEconomicsAndroid
lew's blog
on 30/03/11 9:14 #273356 Reply to:273309 toggle
lew's picture

หลายๆ ส่วนใน C++ ที่ใช้ preprocess นั้น ไม่เป็นที่นิยมอีกต่อไปเพราะมันมีปัญหามากมายครับ

อย่างใน C++0x นี่เองก็มี constant expression มาทำงานทดแทน preprocessing ไปแล้วอีกส่วน

อันนี้โทษการออกแบบแรกๆ ไม่ได้ เพราะสมัยนั้นพลังประมวลผลของ compiler ไม่พอ

การซ่อนส่วน implementation นั้นดีแน่นอนครับ แต่อย่างที่ว่าระบบ Interface ของ Java นั้นดีกว่ามาก ถ้าใครเคยเจอ header ที่ include กันไปมามั่วซั่วไปในโปรเจคใหญ่ๆ จะพบว่ามันเลวร้ายมาก

อาจจะต้องแยกกันแง่ของ function กับ "ความดี" ของมันออกจากกันนะครับ


LewCPE's Google+

By: le-phather
Android
le-phather's blog
on 28/03/11 3:07 #272586 toggle
le-phather's picture

ผมใช้ C++ ผสมๆกับ Objective-C ก็คล่องดีนะ (ดึงเฉพาะ feature ที่ใน C++ ไม่มีมาใช้)
แต่ถ้ามี Feature ดีๆเทียบเท่ากับของใหม่ๆ ก็นับว่าเป็นข่าวดี


thaibro fb

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 28/03/11 3:10 #272588 toggle
mr_tawan's picture

อัดฟีเจอร์เข้ามามากไปหรือเปล่าไปรู้นะ ...

มันดีเลย์มาชาติกว่าได้แล้วผมว่า


By: iStyle
ContributoriPhoneAndroidSymbian
iStyle's blog
on 28/03/11 3:47 #272595 toggle
iStyle's picture

PL ไม่เห็นสอนอะไรถึงขั้นนี้เลย-*- หรือว่ามัวโดดหว่า


May the Force Close be with you. || @nuttyi

By: natt_han
ContributoriPhoneAndroid
natt_han's blog
on 28/03/11 7:31 #272609 toggle
natt_han's picture

อิมหลีเมนต์ พิมพ์ผิดครับ

By: kimminwoo
AndroidRed HatUbuntuWindows
kimminwoo's blog
on 28/03/11 7:33 #272610 toggle
kimminwoo's picture

C++ เป็นภาษาที่นับว่าอยู่ใลกธุรกิจมา

ในโลกหรือเปล่าคับ


It is Signature = ="

By: caznova
AndroidRed HatUbuntuWindows
caznova's blog
on 28/03/11 8:17 #272620 toggle
caznova's picture

ตอนปกตินี้เจอ code แบบ boost ก็ มึนแล้ว นี่จะมีของเล่นให้ boost เอามาทำให้มึนมากก่านี้อีก


Acaz

By: joomla
iPhoneUbuntu
joomla's blog
on 28/03/11 8:26 #272626 toggle
joomla's picture

นึกถึงกันดั้ม

อ่านแว้บๆ เป็น Final Drift <--


v___v

By: khajochi
WriteriPhoneIn Love
khajochi's blog
on 28/03/11 10:29 #272674 toggle
khajochi's picture

เป็นภาษาที่ยืนยง และก็ใช้งานได้ดีจนถึงทุกวันนี้เลยนะ


แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com

By: pines
Blackberry
pines's blog
on 28/03/11 10:39 #272681 toggle
pines's picture

ชื่อมาตรฐานจะยาวไปไหน อิอ

By: deaw
deaw's blog
on 28/03/11 10:54 #272688 toggle
deaw's picture

GCC นี่ทันสมัยสุดใช่ไหมเนี่ย

By: PiKO
ContributorAndroid
PiKO's blog
on 28/03/11 11:58 #272719 toggle
PiKO's picture

foreach \^^/


:: DigiKin8 ::

By: Soul_Master
Windows Phone
Soul_Master's blog
on 28/03/11 14:20 #272761 toggle
Soul_Master's picture

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;
}
By: kurosame
ContributoriPhone
kurosame's blog
on 31/03/11 21:29 #273899 Reply to:272761 toggle
kurosame's picture

ตามไม่ทันแล้ว ออก PLinq มาอีก -__-


เข้าท่ากับบ้าบอ

By: Soul_Master
Windows Phone
Soul_Master's blog
on 28/03/11 14:20 #272762 toggle
Soul_Master's picture

[duplicate]

By: lew.★
lew.★'s blog
on 29/03/11 8:38 #273016 toggle
lew.★'s picture

ชื่อไม่เท่เลย


<' )))><

By: ipas
Ubuntu
ipas's blog
on 31/03/11 9:16 #273641 toggle
ipas's picture

Wow ต้องลอง