C ++ สมัยใหม่เปลี่ยน C # หรือไม่ Microsoft กำลังผลักดันนักพัฒนาให้ปรับใช้ C ++ หรือไม่ [ปิด]


91

ฉันได้ยินเกี่ยวกับความนิยม C ++ ที่ทันสมัยและบางคนพูดถึงการย้ายกลับไปที่ C ++ จาก C # หรือภาษาอื่น ๆ ที่คล้าย C

ฉันรู้เกี่ยวกับคุณสมบัติ C ++ 11 แต่ฉันอยากได้ยินประสบการณ์ของคุณโดยเฉพาะจากนักพัฒนาที่ย้ายจาก C # เป็น C ++

ที่สำคัญกว่านั้น Microsoft ผลักดันให้นักพัฒนาใช้ C ++ หรือไม่ ถ้าใช่ทำไม


16
ฉันคิดว่า C ++ เป็นภาษาที่ใช้กันอย่างแพร่หลายมากกว่าเพราะมันมีการพัฒนาที่ดีและพกพาง่ายกว่า C # ฉันไม่คิดว่ามันจะแทนที่ C # สำหรับแอพพลิเคชั่นทางธุรกิจที่ใช้ Windows นั้น C # ยังคงเป็นที่ต้องการอย่างมากเนื่องจากเป็นภาษาที่ง่ายต่อการเรียนรู้ C ++ ไม่เคยหายไปไหน เพิ่งมีการฟื้นตัวอีกครั้งเมื่อเร็ว ๆ นี้
KChaloux

2
ฉันหวังว่าไม่ Java และ C # เป็นที่นิยมสำหรับนักพัฒนาและพวกเขายังคงพัฒนา
Jesse C. Slicer

4
ทั้ง C ++ และ C # เป็นเพียงเครื่องมือ : เลือกอันที่ดีที่สุดสำหรับงานเฉพาะ เช่นหากคุณต้องการเขียนโค้ดข้ามแพลตฟอร์มคุณอาจต้องการใช้ C ++ หากคุณต้องการแอพเล็ก ๆ ที่ไม่ต้องการการติดตั้งรันไทม์. NET คุณอาจต้องการใช้ C ++ (พร้อมลิงค์แบบคงที่ CRT) หากคุณต้องการพัฒนาเครื่องมือ GUI บางอย่างสำหรับ Windows ในแบบ RAD คุณอาจต้องการใช้ C # และ WinForms ฯลฯ
Mr.C64

6
มันเป็นคำถามที่ดีบางทีอาจต้องมีการเขียนใหม่ ไม่ใช่ภาษา A กับภาษา B แต่เป็นตำแหน่งของ Microsoft โดยเฉพาะว่าทำไมมันถึงเปลี่ยนไปและจะไปที่ไหนเพราะความจริงก็คือ MS มีขนาดใหญ่พอที่เมื่อพวกเขามีอิทธิพลต่อภูเขาขนาดเล็กอย่างน้อย ย้าย. และใช่ในกรณีนี้พวกเขามีอิทธิพลอย่างแน่นอน
DXM

9
มาช่วยกันเก็บทุกคนกันเถอะ ความหยาบจะไม่ได้รับการยอมรับ
maple_shaft

คำตอบ:


95

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

ฉันไม่สามารถหาได้ในขณะนี้ แต่เมื่อไม่นานมานี้ฉันเห็นการนำเสนอโดยหนึ่งใน Microsoft big guys และทุกสิ่งนั้นมุ่งสู่นักพัฒนาและกำลังจะเปิดตัว Windows 8 และโดยเฉพาะอย่างยิ่ง WinRT (การแทนที่สำหรับ. NET Framework ด้วย เป็น Win32 API)

เขามีไทม์ไลน์ที่อธิบายว่าแรงกดดันต่าง ๆ ส่งผลกระทบต่อเทคโนโลยีที่ได้รับความนิยมในบางช่วงเวลาอย่างไร ดังนั้นในตอนแรกคนต้องการความเร็วดังนั้นพวกเขาทั้งหมดเขียนใน C / C ++ (สองภาษาแยก) เมื่อฮาร์ดแวร์ทำงานได้เร็วขึ้นโฟกัสก็จะหายไปจากความเร็วในการประมวลผลและไปสู่ความเร็วในการพัฒนาดังนั้นภาษาระดับที่สูงขึ้นจึงเป็นที่นิยมมากขึ้น

อย่างไรก็ตามตอนนี้โฟกัสได้มากขึ้นสำหรับคอมพิวเตอร์พกพาและคอมพิวเตอร์ที่ใช้ ARM (Windows 8 เป็น Windows รุ่นแรกที่รวบรวมสำหรับ ARM) และหลายคนเชื่อว่าพวกเขาจะได้รับความนิยมมากขึ้นและสำหรับบางคนจะแทนที่เดสก์ทอปอย่างสมบูรณ์ ดังนั้นโฟกัส (อย่างน้อยก็ในสายตาของ Microsoft) ก็กลับมาที่ C ++ เพราะตอนนี้เราใส่ใจเรื่องอายุการใช้งานแบตเตอรี่ รหัสระดับที่สูงขึ้น = คำแนะนำเพิ่มเติม = ต้องใช้น้ำมาก

เพื่อรองรับการเปลี่ยนแปลงนี้กลับไปที่ C ++ พวกเขาได้แนะนำ API การเขียนโปรแกรม Windows 8 ใหม่ที่เรียกว่า WinRT (สุดท้ายที่ฉันตรวจสอบแล้วนั่นคือชื่อต่อไป) API นี้ตามธีมของ. NET Framework ในขอบเขตการทำงานที่มีให้ แต่จะสามารถใช้ได้กับทุกคนที่เข้ารหัสใน C ++ (ผ่านทางอินเตอร์เฟส COM) ใน C # หรือแม้แต่ใน Javascript สำหรับผู้ที่ต้องการเขียนแอป HTML 5 / Javascript พวกเขายังนำ XAML (เทคโนโลยีที่ใช้ใน WPF ซึ่งเป็นเฟรมเวิร์ก UI ใหม่ล่าสุดของพวกเขา) มาวางจำหน่ายใน C ++ เช่นกัน

สำหรับผมแล้วสิ่งที่บ่งบอกว่ามีการเน้นที่ C ++ ที่ Microsoft มากกว่าที่เคยเป็นมาในอดีต

อัปเดต # 1:

เนื่องจากฉันเพิ่งได้เครื่องหมาย 'คำตอบที่ดี' สำหรับสิ่งนี้ฉันคิดว่าฉันควรกลับมาและ) ชี้แจงบางสิ่งและ b) ทำให้ตำรวจตรวจสอบข้อเท็จจริงมีความสุขเพราะเราทุกคนรู้ในฟอรัมเทคโนโลยีสิ่งที่ไม่ถูกต้องอาจทำให้สงคราม ที่ผ่านมาหลายปี

  1. WinRT ไม่ใช่การแทนที่สำหรับ. NET Framework แต่ก็เป็นอีกทางเลือกหนึ่งที่นักพัฒนา MS Windows มีอยู่ในขณะนี้และ MS กำลังผลักดันผู้คนให้ไปในทิศทางนั้นอย่างยิ่ง จะปรากฏขึ้น (โปรดถือเปลวไฟของคุณหากไม่ถูกต้อง 100%) ที่ WinRT เป็นเป้าหมายหลักสำหรับแอป Modern UI แม้ว่าแอปเดสก์ท็อปปกติจะสามารถใช้ประโยชน์จากมันได้เช่นกัน เมื่อพูดถึงสิ่งนี้ MS กำลังผลักดันอย่างยิ่งให้ผู้คนเปลี่ยนไปใช้การเขียน a) แอพ UI ที่ทันสมัยและ b) เริ่มใช้ WinRT เพื่อให้ยอดคงเหลือลดลงร้อยละของผู้ใช้เฟรมเวิร์ก. NET

  2. C ++ จะไม่แทนที่ภาษาระดับสูงกว่าเช่น C # หรือ python เช่นเดียวกับภาษาเหล่านั้นจะไม่แทนที่ C ++ นี่อาจเป็นคำถามที่แย้งที่สุดของ OP แต่มันเป็นเรื่องของความสมดุลและข้อเท็จจริงก็คือ:

    • ชุมชน C ++ (โดย MS เป็นส่วนใหญ่) กำลังผลักดันให้การกลับมาแข็งแกร่งในตำแหน่ง C ++ เป็นภาษาที่ดีสำหรับอุปกรณ์ที่ใช้พลังงานต่ำซึ่งส่วนแบ่งการตลาดได้เพิ่มขึ้นอย่างบ้าคลั่งเมื่อเร็ว ๆ นี้ หากคุณไม่เชื่อฉันให้ค้นหาชุดคำพูด "GoingNative" ที่เริ่มเมื่อปีที่แล้ว
    • ด้วยความพยายามและอิทธิพลจาก Microsoft ทั้งหมดการใช้งาน C ++ จะเพิ่มขึ้นอย่างแน่นอนในขณะที่ C # อาจลดลงบ้าง นี่คือสิ่งที่ MS กำลังผลักดันและอย่างที่ฉันได้กล่าวไว้ในความคิดเห็นข้างต้นเมื่อ MS วางทุนเบื้องหลังความคิดพวกเขาเปลี่ยนอุตสาหกรรมส่วนใหญ่ ฉันอาจจะได้รับคำตอบจากคนที่จะเถียงว่า "อุตสาหกรรมอะไรฉันใช้ Linux มาตลอด" และคำตอบเดียวของฉันคือตื่นขึ้นมา! ใช่มีระบบปฏิบัติการอื่น ๆ อยู่ที่นั่น แต่ส่วนใหญ่ของตลาดเดสก์ท็อปทั้งผู้บริโภคและธุรกิจในปัจจุบันคือ Windows และนักพัฒนาที่จริงจังที่ต้องการเพิ่มมูลค่าของเวลาของเขาจะโง่มากที่จะไม่กำหนดเป้าหมายตลาดเดสก์ท็อป

ดังนั้นโดยสรุป: ใช่ MS กำลังผลักดันให้ C ++ กลับมาอีกครั้งดังนั้นความนิยมจะเพิ่มขึ้น ไม่ C ++ จะไม่แทนที่ C #

อัปเดต # 2:

ฉันไม่รู้ว่าทำไม แต่ชุมชนทางเทคนิคมีแนวโน้มที่จะเห็นสิ่งต่าง ๆ ในแง่สีดำ / ขาวแน่นอนเมื่อความเป็นจริงเต็มไปด้วยเฉดสีเทา นี่คือการตอบกลับความคิดเห็นใหม่ ๆ ที่เพิ่มลงในโพสต์นี้:

  1. . NET Framework จะไม่หายไปเมื่อเร็ว ๆ นี้ (หรือตลอดไป) เกือบทุกเทคโนโลยีที่หน้าต่างมีมาตั้งแต่ยุค 90 ยังอยู่ในรูปแบบหรือแฟชั่น ดังนั้นสำหรับผู้ที่ติดอยู่กับ. NET Framework: a) ไม่ต้องกังวลว่ามันจะหายไปและ b) หยุดการโต้เถียงในความโปรดปรานราวกับว่าชีวิตของคุณขึ้นอยู่กับมัน API ของคุณจะปลอดภัย

  2. WinRT จะปรับใช้ฟังก์ชันการทำงานจำนวนมากซึ่งในอดีตมีให้โดย Win32 และ. NET Framework APIs ผู้ที่ต้องการฟังก์ชั่นนั้นจะมีตัวเลือกหากพวกเขาต้องการใช้ WinRT, กรอบงาน. NET หรือดำเนินการต่อด้วย Win32 API (นั่นไม่ใช่สิ่งที่ตาย) หาก WinRT ไม่สนับสนุนการสร้างเว็บแอปพลิเคชันได้ง่ายในวันนี้มีโอกาสที่ดีมากที่มันจะสนับสนุนพวกเขาในอนาคต

ตำแหน่งที่ Microsoft ประกาศคือ WinRT เป็นเฟรมเวิร์กขนาดใหญ่ซึ่งทำให้ Microsoft มีโอกาสเริ่มต้นด้วยกระดานชนวนที่สะอาดและสร้าง API โดยใช้บทเรียนที่เรียนรู้ใน Win32 API และ. NET Framework ตัวเอง ฉันลองค้นหาวิดีโอนั้นแล้วยังหามันไม่เจอ แต่สิ่งหนึ่งที่ผู้พูดพูดถึงคือมีบางพื้นที่ของ. NET Framework ซึ่งอาจถูกกำหนดได้ดีกว่า / ง่ายกว่า / สะอาดกว่าและ WinRT ก็แสดงฟังก์ชั่นเดียวกัน ในอินเทอร์เฟซใหม่ที่สะอาดตา


7
มันเป็นการพูดคุยของ Herb Sutter ที่ C ++ ขึ้นไปชื่อ "Why C ++" มีวิดีโอของมันในช่อง 9 แม้ว่าฉันจะมีปัญหาในการเข้าถึงในขณะนี้อาจเป็นเพราะ Redmond กำลังจัดงานการสตรีมขนาดใหญ่ ตรรกะของคุณสมเหตุสมผล แต่ข้อความเหล่านี้จำเป็นต้องได้รับการสำรองไว้ด้วยการอ้างอิงบางอย่างเพราะจะเป็นการแสดงถึงการเปลี่ยนแปลงเชิงกลยุทธ์ที่สำคัญสำหรับ Microsoft และใครก็ตามที่พัฒนาซอฟต์แวร์ด้วยผลิตภัณฑ์ของ Microsoft
Robert Harvey

13
WinRT ไม่ได้แทนที่สำหรับ. NET โปรดเก็บข้อมูลของคุณไว้ในการตรวจสอบ
ร่าเริง

4
@Euphoric: กล่าวอีกนัยหนึ่ง. NET Framework ไม่เคยถูกแทนที่ด้วย Win32 API ในเวลาเดียวกันเมื่อ C # ออกมาหลายคนเปลี่ยนไปและลืมทุกอย่างเกี่ยวกับการเรียกใช้ฟังก์ชั่นแบบ C ใน Windows DLLs MS กำลังผลักดันสวิตช์เดียวกันในตอนนี้ ดังนั้นกรอบการทำงาน. NET จะยังคงอยู่ภายใต้การควบคุมของ WinRT และมั่นใจว่าคุณยังคงสามารถใช้กรอบการทำงาน. NET ได้ แต่ MS กำลังผลักดันให้ผู้คนเปลี่ยนไปใช้กรอบงานใหม่
DXM

21
@gbjbaanb - นี่เป็นเท็จ 100% First ALL .NET เคยเป็น wrapper ที่ดีมากสำหรับห้องสมุด Win32 ประการที่สองมีเพียงความแตกต่างเล็กน้อยระหว่างFullโปรไฟล์. NET และ. NET 'WinRT' ซึ่งเป็นความแตกต่างที่สำคัญคือสิ่งที่ใช้งานได้ไม่ดีเมื่อ 10-15 ปีก่อนถูกลบออกและแทนที่ด้วยรหัสที่ออกแบบมาดีกว่า จนกว่าพวกเขาจะกำจัดห้องสมุด Win32 ทั้งหมดด้วยกัน. NET อยู่ที่นี่เพื่ออยู่ ความคิดเห็นของคุณแสดงให้เห็นว่า COMPLETE และ TOTAL ขาดความรู้เกี่ยวกับ. NET และภาษา C #
Ramhound

6
ไม่ต้องพูดถึงว่าสำหรับเว็บแอปพลิเคชั่น. NET นั้นยอดเยี่ยมมาก หากเคยเป็น 'การแทนที่' อาจเป็นแอปบนเดสก์ท็อปไม่ใช่แอปพลิเคชันบนเว็บ
George Stocker

22

ไม่ Windows 8 นั้นเกี่ยวกับการใช้ภาษาใดก็ตามที่คุณต้องการ (หรือรู้) เพื่อให้งานสำเร็จ รองรับ JavaScript, .Net languages ​​(C #) และ C / C ++ เท่า ๆ กัน

ไม่มีอะไรถูกแทนที่และมันก็ขึ้นอยู่กับนักพัฒนาในท้ายที่สุดแล้ว อย่างไรก็ตามมีการผลักดันให้แบตเตอรี่มีอายุการใช้งานที่ดีขึ้นซึ่ง WinRT ทำให้ง่ายขึ้น

ข้อยกเว้นคือเกมที่ C ++ ได้รับการสนับสนุนเพิ่มเติมโดยเฉพาะใน Windows Phone 8 ในขณะที่ภาษาที่ได้รับการจัดการไม่มีการสนับสนุนดั้งเดิม (aka no xna)


1
+1 Microsoft หมดหวังที่จะนำ Windows 8 มาใช้ในตลาดสมาร์ทโฟนและแท็บเล็ต Apple สร้างรายได้จาก iPhone เพียงอย่างเดียวมากกว่าที่ Microsoft ทำทั้งหมด อุปสรรคประการหนึ่งคือมีแอพพลิเคชั่นน้อยมากสำหรับโทรศัพท์ Windows / แท็บเล็ตเมื่อเทียบกับแพลตฟอร์มที่จัดตั้งขึ้น ดังนั้นพวกเขาจึงต้องการทำให้ทุกคนสามารถสร้างแอปได้ในภาษาที่พวกเขาชื่นชอบ C #, C ++ หรือ JavaScript
MarkJ

ฉันไม่รู้ว่าทำไมพวกเขาตัดสินใจทิ้งการสนับสนุนดั้งเดิม c / c ++ เริ่มต้นจาก windows phone 7 ตั้งแต่วันนั้น windows + windows mobile กลายเป็นจากแพลตฟอร์มหลัก 90% สำหรับ บริษัท ของเราเปลี่ยนความสำคัญเป็น 10% 10% เป็นเพราะเครื่องมือการพัฒนาที่ดีที่สุด (visual studio) มิฉะนั้นเราจะไม่สร้างผลิตภัณฑ์อีกต่อไปแม้แต่สำหรับ windows desktop
Pavel P

1
@Pavel ฉันไม่แน่ใจว่าคุณกำลังพูดอะไรอยู่ ..
แดเนียล Little

@Pavel -they ลบรหัสเนทีฟจาก WinPhone7 จากนั้นปล่อยรหัสที่จัดการจาก WinPhone8 บางทีคุณสามารถเยี่ยมชมแพลตฟอร์มอีกครั้งในขณะนี้หรือเพียงเพิกเฉยต่อไปจนกว่าจะได้รับส่วนแบ่งตลาดที่ใหญ่กว่าเดิม
gbjbaanb

19

ฉันรู้เกี่ยวกับคุณสมบัติ C ++ 11 แต่ฉันอยากได้ยินประสบการณ์ของคุณ

คิดว่าคนจะชอบ c ++ กว่า C # (หรือสวยมาก ๆ อื่น ๆ โพสต์ 1990 [ไม่ใช่ PHP] Alterative) สำหรับการเขียนโปรแกรมที่ใช้งานทั่วไปเป็นบ้องแบ๊ว C ++ 11 เพิ่มบางส่วนที่ขาดหายไปบิตที่ดี แต่ก็ยังคงเก่งขาสุนัข

C ++ มีช่องโหว่ที่ดีและยังคงเป็นตัวเลือกที่ดีที่สุดในบางแพลตฟอร์มที่มีการสนับสนุนคอมไพเลอร์ จำกัด แต่ไม่มี C ++ ที่ทันสมัยอยู่ใกล้ที่จะแทนที่อะไรเลยยกเว้น C ++ ที่ล้าสมัยบางทีอาจแตกหัก


31
อ่านสิ่งที่คุณกำลังเขียน คุณกำลังทันทีอ้างว่าใช้ C ++ สำหรับการเขียนโปรแกรมอเนกประสงค์มากกว่า C # บ้องแบ๊ว นี่เป็นข้อเท็จจริงที่คุณเชื่ออย่างจริงใจหรือเป็นเพียงความคิดเห็นที่เกินจริงของคุณเองหรือ
zxcdw

38
@zxcdw - หากฉันมีปัญหาการเขียนโปรแกรมทั่วไป 100 ข้อฉันจะทำให้เสร็จเร็วขึ้น ~ 90 ดีกว่าโดยมีข้อบกพร่องน้อยลงโดยใช้ C # หรือ Java หรือ Python หรือ Scala หรือ ... และนั่นก็เป็นเรื่องที่ใจดี นี่เป็นมุมมองทั่วไปของโปรแกรมเมอร์มืออาชีพทุกคนที่ฉันรู้จัก แม้แต่คนที่ใช้ C ++ เป็นภาษาหลัก
Telastyn

33
@zxcdw: ฉันเป็นนักพัฒนา C ++ ที่ไม่ยอมใครง่ายๆ ฉันใช้ภาษา C ++ มามากกว่า 15 ปีและทำงานเป็นส่วนใหญ่กับแอพแบ็คเอนด์ที่ต้องใช้ C ++ ฉันไปทั่ว STL แล้วและเพิ่มอีกครึ่งหนึ่ง หลายสิ่งหลายอย่างที่ทำให้ทีมของฉันผิดหวังฉันได้แนะนำเทมเพลตการเขียนโปรแกรมในบางสถานที่ที่ฉันคิดว่าสมควรได้รับ ประเด็นที่ฉันพยายามทำคือฉันรัก C ++ และทำงานกับมัน ต้องบอกว่าฉันเห็นด้วยกับ Telastyn ถ้าฉันมีปัญหาทั่วไปที่ไม่ต้องการสิ่งที่ C ++ มีให้ฉันจะเลือก C # หรือ Python พวกเขาเป็นภาษาระดับที่สูงขึ้นและคุณสามารถทำสิ่งต่าง ๆ ได้เร็วขึ้น จริงอย่างน้อยสำหรับ Win devs นี้
DXM

5
@MadKeithV - หากฉันไม่ได้ทำงานกับแอพ C # ที่กำลังทำงานบน OSX, iOS และ Android ฉันอาจให้อาร์กิวเมนต์ข้ามแพลตฟอร์มนั้นหนักขึ้นอีกนิด แม้จะเพิกเฉยก็ตามภาษาที่ไม่ใช่ภาษา C # ที่ฉันระบุไว้นั้นเป็นตัวเลือกที่ดีกว่า C ++ เกือบทุกครั้งเมื่อข้ามแพลตฟอร์มเป็นปัญหาที่น่ากังวล C ++ 11 ไม่ได้ทำอะไรมากมายในการผลักดันตัวเลือกเหล่านั้นออกไป
Telastyn

14
หากสิ่งที่คุณมีคือค้อนทุกสิ่งดูเหมือนเป็นเล็บ การปรับปรุงใน C ++ 11 จะไม่ลดผลกระทบที่แพร่หลายของ C # และอื่น ๆ ที่คล้ายคลึงกัน แต่อาจจะเป็นภาษาที่ไม่เชื่อเรื่องพระเจ้าของแพลตฟอร์มมากกว่า แต่มันจะทำให้เรือลำนั้นลอย จุดขายที่ใหญ่ที่สุดของ C ++ 11 ยังคงเป็นภาษา end-to-end สำหรับระบบที่เจาะลึกในระบบ แต่ยังให้โอกาสในการแก้ไขด้วยลำดับที่สูงขึ้น
JustinC

2

DXM เขียนว่า:

ดังนั้นโฟกัส (อย่างน้อยก็ในสายตาของ Microsoft) ก็กลับมาที่ C ++ เพราะตอนนี้เราใส่ใจเรื่องอายุการใช้งานแบตเตอรี่ รหัสระดับที่สูงขึ้น = คำแนะนำเพิ่มเติม = จำเป็นต้องใช้น้ำผลไม้มากขึ้น

ตามคำนี้การเลือกภาษาจาวาเป็นภาษาหลัก / กรอบสำหรับ Android ของ Google นั้นเป็นความผิดพลาด มันไม่ใช่ ภาษาระดับสูงมักหมายถึงการทำให้เสร็จเร็วขึ้นและฉันคิดว่านี่เป็นสิ่งสำคัญที่สุดสำหรับ Microsoft และ Google ยิ่งมีการสร้างแอปพลิเคชั่นมากขึ้นสำหรับแพลตฟอร์มมากเท่าไรกำไรของผู้ผลิตระบบปฏิบัติการก็จะยิ่งสูงขึ้น

ในทางกลับกันมีซอฟต์แวร์มากมายสำหรับ Windows ที่ยังคงเขียนใน C ++ ดังนั้นให้นักพัฒนาเหล่านั้นเปลี่ยนไปใช้ C # / JavaScript / สิ่งอื่น ๆ จะเสียสติ ไมโครซอฟท์มุ่งเน้นที่การให้โอกาสในการพัฒนาแอพ Win8 ให้กับนักพัฒนามากที่สุดเท่าที่เป็นไปได้นั่นคือเหตุผลที่ในความคิดของฉันพวกเขาตัดสินใจที่จะสนับสนุน C ++ และ JavaScript ใน Win8 development stack


5
Java เป็นความผิดพลาด หากคุณต้องการประสิทธิภาพแบบดิบ (และบ่อยครั้ง) คุณต้องการเขียนใน C / C ++ หากคุณต้องการพัฒนาประสิทธิภาพของนักพัฒนาคุณต้องการภาษาระดับสูงกว่าเช่น Python หรือ PHP หรือ Ruby หรือ JS Java (และ C #) เป็นระบบกลางพื้นที่ให้คุณทั้งประสิทธิภาพที่ดีที่สุดหรือผลผลิตที่ดีที่สุด ตามที่เป็นอยู่ C ++ นั้นไม่เลวร้ายนัก - คุณจะได้รับผลผลิตที่ดีจากมันเมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่
gbjbaanb

8
@gbjbaanb ฉันมีความรู้สึกที่หลากหลายเกี่ยวกับความคิดเห็นของคุณ: ไม่กี่ปีที่ผ่านมาการวาง Java และ C # ในระดับเดียวกันของนามธรรมจะทำให้รู้สึก แต่การแนะนำของ LINQ, แลมบ์ดานิพจน์และคุณลักษณะการเขียนโปรแกรม async ใน. NET เวอร์ชั่นใหม่ ย้าย C # ไปยังระดับที่สูงขึ้น (Java กำลังจะไล่ตามการขาดการเขียนโปรแกรมที่ใช้งานได้ใน JDK8 แต่ยังอยู่ในช่วงเริ่มต้นการเข้าถึง)
codesparkle

2
@gbjbaanb โชคดีที่ WCF เป็นเพียงส่วนเล็ก ๆ ของ. NET และโดยทั่วไปแล้วว่าการใช้กับภาษา C # นั้นไม่ถูกต้อง คุณใช้คุณสมบัติใหม่จริงๆ ตั้งแต่. NET 3 เนื่องจาก VS ไม่ใช่สภาพแวดล้อมการพัฒนาที่ยอดเยี่ยมเลย (อันที่จริงแล้วมันน่ารำคาญอย่างแท้จริงโดยไม่มี ReSharper) ดังนั้นเมื่อพิจารณาว่าเว็บไซต์นี้ (และเครือข่าย SE ทั้งหมด) สร้างขึ้นด้วย C # ความคิดเห็นของคุณดูเหมือนไม่ถูกต้องเล็กน้อย
codesparkle

1
@rotman โปรดอย่าตอบคำตอบของคนอื่นในคำตอบของคุณเอง คำตอบควรตอบคำถามดั้งเดิมเท่านั้น :)
Andres F.

6
@gbjbaanb: ฉันจะบอกว่ามันเป็นการยืนยันโดยไม่มีหลักฐานว่าระบบระดับกลางที่ให้คุณทั้งประสิทธิภาพที่ดีที่สุดหรือผลผลิตที่ดีที่สุดคือความผิดพลาด ระบุว่าผลการดำเนินงานและการผลิตมีทั้งที่สำคัญการแก้ปัญหาที่ดีที่สุดคือคนที่ยอดทั้งสองและเป็นทางเลือกตรงกลางพื้นดินเช่น Java หรือ C # เป็นที่ยอดเยี่ยมทางเลือกสำหรับกรณีการใช้งานจำนวนมาก
Carson63000

2

C ++ ยังคงมีไฟล์ส่วนหัว, ตัวประมวลผลล่วงหน้าที่ยืดหยุ่น (#define), ... สิ่งเหล่านี้บางคนคิดว่าคุณสมบัติเหล่านี้เป็น 'ความชั่วร้าย' หรือ 'ยากต่อการจัดการ'

ในทางกลับกันให้ใช้เมทาดาทาไม่จำเป็นต้องเขียนและดูแลรักษาไฟล์ส่วนหัว

เกี่ยวกับ Microsoft เพิ่มคุณสมบัติเพิ่มเติมใน C ++: ไม่ใช่เรื่องที่น่าแปลกใจ

คอมไพเลอร์ C ++ ทุกตัวจะเพิ่มคุณสมบัติเพิ่มเติมรวมถึงคุณสมบัติ C ++ 11 gcc ยังเป็น


7
หากสิ่งที่คุณพูดได้ไม่ดีเกี่ยวกับ C ++ นั้นเป็นไฟล์ส่วนหัวที่ดีคุณก็จะได้พิสูจน์จุดโดยอ้อม ฉันสามารถแสดงรายการโฮสต์ทั้งหมดของปัญหา C # ร้ายแรงการไม่พกพาการไม่ใช้งานค่าใช้จ่ายในการดำเนินการกรรมสิทธิ์ ฯลฯ
805547

1
ใช้เครื่องมือที่เหมาะสมสำหรับงานที่เหมาะสม C ++ นั้นยอดเยี่ยมสำหรับ บริษัท ต่างๆเช่น Intel สำหรับประสิทธิภาพของโค้ดที่ไม่ได้รับการจัดการต่าง ๆ ที่ต้องการในระดับต่ำสำหรับโครงการเหรียญ แต่ถ้าคุณต้องการบริการเว็บไซต์ / เว็บที่ทุก บริษัท ทำได้ดีกว่าโชคดีกับ C ++!
Tom Stickel

1

อาจเป็นเพียงฉัน แต่ฉันเห็นการใช้ C ธรรมดามากกว่า C ++

ความจริงที่ว่า C ++ นั้นกลืนกินทั้ง C ธรรมดาทำให้ยากที่จะอนุมานว่าใครใช้อะไร

แต่มีโครงการโอเพนซอร์ส C มากกว่าโครงการ C ++ อย่างมากมาย

มุมมองของฉันคือถ้าคุณต้องการใกล้เคียงกับการใช้ความเร็วโลหะ C หากคุณต้องการความยืดหยุ่นและการจัดการด้วยประสิทธิภาพที่เหมาะสมใช้ C # หรือ Java หากคุณต้องการการออกแบบที่สะอาดหมดจดใช้ Python, Scala, Groovy หรือภาษาที่มีคุณลักษณะครบถ้วนจำนวนมาก


2
ไม่ฉันคิดว่าคุณผิดที่นี่ C ++ หากคุณปิดการใช้งานข้อยกเว้นใกล้เคียงกับโลหะเท่ากับ C ตราบใดที่คุณรู้ว่าคุณกำลังทำอะไร ปัญหาคือ ABIs ใน C ++ สถานการณ์ยังคงต้องแก้ไขพวกเขากำลังดำเนินการอยู่ เมื่อทำสิ่งนี้เสร็จแล้วฉันคิดว่าจะไม่ค่อยมีความสนใจที่จะใช้ C แทน C ++ ในความเป็นจริง C ++ มีการตรวจสอบข้อผิดพลาดได้ดีกว่าและเป็น superset ดังนั้นเครื่องมือจะดีกว่าในตอนนั้น
Germán Diago

0

c ++ ไม่ได้แทนที่ c # ให้เราดูว่ามีการใช้ภาษา c ++ อย่างไร มันถูกใช้เมื่อมีความต้องการประสิทธิภาพสูงสำหรับการเขียนไลบรารีมิดเดิลแวร์การเข้าถึงระดับต่ำและการเขียนโค้ดสำหรับอุปกรณ์ที่ จำกัด ทรัพยากร แม้ว่าคุณสามารถใช้ c # สำหรับ c ++ เหล่านี้บางอย่างก็จะเหมาะสมกว่าสำหรับสิ่งเหล่านี้ การผลักดันของ Microsoft สำหรับ c ++ นั้นเกี่ยวข้องกับการผลักดันครั้งใหญ่ในพื้นที่มือถือ ไม่มีใครขอให้คุณเขียนเว็บแอปตัวถัดไปของคุณใน c ++ แต่ด้วย Qt อาร์กิวเมนต์ประสิทธิภาพไม่สามารถสร้างขึ้นกับ c ++ แต่ฉันคิดว่าผู้คนจำนวนมากไม่คุ้นเคยกับ Qt


C ++ ยังคงถูกใช้อย่างมากในการพัฒนาซอฟต์แวร์ Windows เชิงพาณิชย์
bit-twiddler

1
C ++ เป็นเหมือนเครื่องมือระดับมืออาชีพที่คุณสามารถใช้เขียนซอฟต์แวร์ แต่คุณต้องมีทักษะในการเขียนรหัสที่ดีเนื่องจากมันค่อนข้างฟรีและมีนิสัยใจคอบางอย่างที่ต้องทำเพื่อความเข้ากันได้ย้อนหลัง ฉันคิดว่ามันเหมาะสำหรับซอฟต์แวร์ทุกประเภทยกเว้นการเขียนสคริปต์จริงๆแล้ว ปัญหาคือช่วงการเรียนรู้ ด้วยห้องสมุดที่ทันสมัยมันมีความสามารถมากแม้ในการผลิต และคิดว่าหากแอปประสบความสำเร็จคุณต้องย้ายพอร์ต การย้ายพอร์ตทำได้ง่ายขึ้นด้วยโค้ดเบส C / C ++ ทำเพื่อคอมไพเลอร์ รายชื่อซอฟต์แวร์ที่เขียนด้วย C ++ นั้นไม่มีที่สิ้นสุด: amazon, google, dropbox, telecom, games, facebook ...
Germán Diago

-4

ไม่ C ++ ไม่สามารถแทนที่ C # ได้เนื่องจากแอปที่ไม่ใช่ Direct3D Windows Phone 8 ทั้งหมดต้องได้รับการพัฒนาด้วย C # คุณไม่สามารถพัฒนาและเผยแพร่แอปพลิเคชันไปยัง wp8 app store เพียงแค่ใช้ C ++ หรือ HTML5 / Javascript และตราบใดที่ Microsoft ไม่ลบข้อ จำกัด นี้ C ++ ก็ไม่ได้แทนที่อะไรเลย เป็นผลให้ฉันแน่ใจว่ามีเพียงไม่กี่คนที่จะพัฒนาสำหรับ WP8 แย่ Nokia เสียอีกครั้ง

นี่คือข้อความที่ตัดตอนมาจากmicrosoft dev center :

Windows Phone 8 ไม่รองรับ XAML UI ที่มีรูปแบบแอปที่ใช้รหัส C ++ ซึ่งรองรับแอพ Windows Store

อีกอย่าง:

นี่หมายความว่าฉันไม่สามารถใช้ C ++ กับ XAML เพื่อพัฒนาแอพใน Windows PHone 8 ได้หรือไม่ฉันถูก จำกัด ให้ใช้ C # + XAML หรือไม่

ถูกต้อง. XAML สามารถใช้ได้กับ C # เท่านั้น C ++ สามารถใช้สำหรับองค์ประกอบ WinRT ที่ใช้โดยโครงการ C #

แม้แต่ Microsoft MVP ก็อ้างว่าข่าวลือนี้เป็นข้อมูลที่ผิดโดยเจตนาโดย Microsoft เอง:

ฉันชอบสิ่งที่ Microsoft ทำกับ WinRT และ Windows Phone 8 แต่ฉันหวังว่าพวกเขาจะไม่ขายมันเพราะมันจะทำให้ผู้ใช้หงุดหงิดเมื่อพวกเขาเรียนรู้ความจริงของเรื่องนี้

และนี้ผิดโดยเจตนาตลาดเสียเดือนของผู้คน :

มันคงจะดีถ้าได้รู้เดือนนี้ก่อนที่ฉันจะลงเส้นทางรหัสพื้นเมืองทั้งหมดด้วยแอพ Metro ของฉัน


1
ลิงก์ของคุณทั้งสองสถานะคุณสามารถใช้ C ++ สำหรับการพัฒนา WP8 และเป็นเพียง XAML ที่ต้องใช้ C # นอกจากนี้ Direct3D รองรับโดย C ++ เท่านั้น
ลี

@ ชอบคุณสามารถพัฒนาแอพที่ไม่ใช่ Direct3D โดยไม่ต้องใช้ C # สำหรับ WP8 ได้หรือไม่?
Özgür
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.