เหตุใด C ++ จึงยังคงต้องการสร้างแอพ GUI หนัก ๆ เหนือภาษาไดนามิกล่าสุด [ปิด]


46

ฉันเห็นว่าแอพส่วนใหญ่ที่รวมเนื้อหา GUI หนัก ๆ มักจะพัฒนาใน C ++ เกม / เบราว์เซอร์ส่วนใหญ่ใช้รหัสใน C ++

เราไม่สามารถพัฒนาแอพ GUI ที่ดีขึ้นด้วยภาษาแบบไดนามิกล่าสุดได้หรือไม่ ฉันรู้ว่าจาวาจะไม่เป็นตัวเลือกที่ดี แต่สิ่งที่เกี่ยวกับภาษาเช่นหลามซึ่งถูกสร้างขึ้นบน C? ภาษาล่าสุดไม่ควรจะดีไปกว่าบรรพบุรุษของพวกเขา? ทำไมเรายังต้องเลือกภาษา C ++ ที่มีอายุมากกว่าภาษาล่าสุด?

และฉันอยากจะรู้ว่ามันคืออะไรที่รับผิดชอบใน C ++ สำหรับความเร็วในการประมวลผล GUI ที่ดีขึ้น? ในทางตรงกันข้ามภาษาล่าสุดอื่น ๆ ขาดอะไร?


22
หากคุณคิดว่า Java เป็นภาษา 'ไดนามิก' คุณจะสับสนอย่างลึกซึ้งเกี่ยวกับความหมายของคำนั้นในบริบทนี้
Mike Baranczak

15
@ Mike Baranczak: นั่นเป็นเรื่องยาว โดยทั่วไปมีโครงการวิจัยแห่งแรกที่ Stanford ต่อมาที่ Sun Research เรียกว่า Self ตัวเองเป็นภาษาโปรแกรมในตระกูลสมอลล์ทอล์คที่ง่ายและมีประสิทธิภาพมากขึ้นแสดงออกมากขึ้นและที่สำคัญที่สุดอย่างมีนัยสำคัญแบบไดนามิกมากขึ้นกว่าที่สมอลล์ทอล์ค เพราะมันถูกออกแบบมาเป็นภาษาเขียนโปรแกรมเพื่อพัฒนาระบบทั้งใน (ทุกภาษาสมอลล์ทอล์คมี) รวมทั้ง ( แต่ไม่ จำกัด เฉพาะ) การใช้งานเดสก์ทอปเซิร์ฟเวอร์ระบบปฏิบัติการ, ไดรเวอร์อุปกรณ์, ตัวเองก็มีที่จะเห็นได้ชัดอย่างรวดเร็ว ดังนั้นทีม Self จึงได้คิดค้นสิ่งใหม่ ๆ ขึ้นมาทั้งหมด ...
Jörg W Mittag

15
... เทคนิคการปรับให้เหมาะสมและเมื่อ Self VM ออกมาในปี 1987 (และยิ่งกว่านั้นคือรุ่นที่สองในปี 1992) มันก็รวดเร็ว มันเร็วกว่า Smalltalk VM อื่น ๆ ระบบเองมาพร้อมกับมากรหัสตัวอย่างและหนึ่งในตัวอย่างผู้เป็นล่ามสมอลล์ทอล์คเขียนในตนเอง, และแม้กระทั่งการที่เร็วกว่าที่อื่น ๆ สมอลล์ทอล์ค VM ใด ๆ ตัวเองเร็วกว่าการใช้งาน C ++ หลายครั้งในเวลานั้นและแม้กระทั่งแข่งขันกับ C. ก็ได้คุณเข้าใจแล้ว มันเร็วมาก อย่างไรก็ตามซันตัดสินใจว่าพวกเขาไม่ต้องการภาษาเขียนโปรแกรมเชิงวัตถุหรือ VM ที่รวดเร็วดังนั้นพวกเขา ...
Jörg W Mittag

15
... โดยพื้นฐานแล้วอดโครงการ Self ไปสู่ความตายโดยทำให้เงินทุนแห้ง เมื่อวิศวกร Self VM ปล่อยให้ซันหลุดพ้นจากความยุ่งยากพวกเขาก็รีบขึ้นโดยการเริ่มต้น Smalltalk ที่เรียกว่า LongView (รู้จักกันโดยทั่วไปในชื่อของผลิตภัณฑ์ส่วนใหญ่ของพวกเขาซึ่งเป็นระบบประเภทแบบคงที่ที่เป็นตัวเลือกสำหรับ Smalltalk: StrongTalk) LongView รู้ว่าพวกเขาจะไม่สามารถขายการพิมพ์แบบคงที่สำหรับ Smalltalk ดังนั้นพวกเขาจึงคิดว่าพวกเขาจะขาย Smalltalk ที่เร็วที่สุดในโลกและรวม StrongTalk ไว้ในแพ็คเกจในการเล่นประเภท Trojan Horse พวกเขายังตระหนักว่าไม่มีใครเจ๋ง ...
Jörg W Mittag

15
... การเพิ่มประสิทธิภาพ Self VM ทำได้ในลักษณะเฉพาะกับ Self แต่มีความเหมาะสมกับภาษาเชิงวัตถุใด ๆ (หรือแม้แต่ภาษาใด ๆเลย ) ดังนั้นวิศวกร Self VM จึงต้องทำงานกับ Smalltalk VM เรียกว่า Animorphic VM อีกครั้ง Animorphic VM นั้นสุดยอดอย่างรวดเร็ว (และยังคงเป็นจริงแม้ว่า codebase จะไม่ได้สัมผัสใน 15 ปีหรือมากกว่านั้นมันยังสามารถแข่งขันกับ Smalltalks, JVMs และ. NET ที่มีประสิทธิภาพสูงโดยเฉพาะอย่างยิ่งถ้าคุณใช้ พิจารณาว่ามันใช้ทรัพยากรน้อยกว่าเพราะมันถูกออกแบบมาสำหรับ 486s ด้วย 20 เมกะไบต์ ...
Jörg W Mittag

คำตอบ:


58

ฉันเป็นหนึ่งในคนที่เขียนแอป C ++ GUI (ส่วนใหญ่ใช้กับ windows) ด้วย Qt ให้มีความแม่นยำ เหตุผลของฉัน:

  • ฉันชอบ C ++ ฉันเป็นนักแปลอิสระและโดยปกติฉันสามารถเลือกเครื่องมือของฉันได้ (lucky me!)
  • ในสภาพแวดล้อมที่มีการจัดการคุณอาจประสบปัญหาเมื่อคุณจำเป็นต้องใช้รหัสที่ไม่มีการจัดการ (การประกาศ WinAPI ที่ยืดเยื้อใน C # ทุกคน?)
  • การพึ่งพาน้อยลงที่ปรับใช้ง่ายขึ้น
  • ควบคุมทุกอย่างได้มากขึ้น
  • RAII (เทียบกับ GC) และแม้ว่าฉันจะจัดสรรด้วยnewฉันก็แทบจะไม่เคยมีdeleteอะไรชัดเจนเพราะฉันใช้ตัวชี้สมาร์ทหรือQObjectลำดับชั้น
  • C ++ มันน่าตื่นเต้นมากในวันนี้ฉันไม่สามารถรอคอมไพเลอร์เพื่อรองรับมาตรฐานใหม่ได้อย่างสมบูรณ์
  • ความเร็ว (เฉพาะตอนท้ายของรายการฉันรู้ว่ามันไม่สำคัญสำหรับตัว GUI เอง แต่มีแนวโน้มที่จะเร็วขึ้นเนื่องจากโปรแกรม C ++ ไม่ประสบปัญหาค่าใช้จ่ายที่รันไทม์รหัสไบต์ JIT ที่รวบรวมและเทคโนโลยีที่คล้ายคลึงกันเพิ่ม โปรแกรม.)

อย่างที่คุณเห็นสิ่งเหล่านี้ส่วนใหญ่เป็นความชอบส่วนตัว ฉันคิดว่ามันสำคัญที่งานของฉันจะสนุกและ C ++ ให้สิ่งนั้นกับฉัน


11
+1 Speed ​​เป็นเหตุผลอันดับต้น ๆ ของที่นี่นอกเหนือจากความชอบส่วนตัว อย่างไรก็ตามฉันชอบ "C ++ ตอนนี้น่าตื่นเต้นมาก" ในการพูดถึงผู้ถามคำถามไม่ใช่ @ Tamás Szelei: แน่นอนว่าคอมพิวเตอร์คำนวณได้อย่างรวดเร็วด้วยแนวคิดแนวคิดกระบวนทัศน์เทคโนโลยีผลิตภัณฑ์ใหม่ล่าสุด แต่สิ่งที่ยิ่งใหญ่ที่สุดไม่ใช่คุณธรรม C ++ มีมาระยะหนึ่งแล้วและไม่ได้หมายความว่ามันล้าสมัยไปแล้ว แต่ก็มีประวัติที่พิสูจน์ได้ยาวนานเมื่อเทียบกับเทคโนโลยีใหม่กว่า ข้อความ Stroustrup ดั้งเดิม (หนังสือของนักประดิษฐ์) กำลังดำเนินไปอย่างหนักหน่วง แต่ก็มีหนังสือดีๆอีกหลายเล่ม - ตรวจสอบ oreilly.com
therobyouknow

1
@ Tarnas ฉันคิดว่า "จะได้เร็วขึ้นเสมอ" เป็นบิตแคบ / ผู้มีอำนาจ แต่ไม่เพียงพอที่จะรับประกัน downvote ...
สูงสุด

2
ในฐานะที่เป็นข้อมูลสนับสนุน: ฉันมีส่วนเกี่ยวข้องในโครงการต่างๆเพื่อสร้าง GUIs ขนาดใหญ่บน Windows โดยใช้ C ++ และ JavaScript ฉันยังมีส่วนร่วมในโครงการเกมคอนโซลที่แตกต่างกันใน C ++ และ JavaScript ในทั้งสองกรณีมีปัญหาเกี่ยวกับความเร็วและหน่วยความจำของ JavaScript
Gort the Robot

2
ไปงานปาร์ตี้สาย แต่คุณสามารถอธิบายรายละเอียดเกี่ยวกับ "การพึ่งพาที่น้อยลง / ง่ายต่อการปรับใช้"
weberc2

2
ฉันใช้ C ++ มานานกว่า 20 ปีแล้ว มีการเพิ่มฟีเจอร์ใหม่และยอดเยี่ยมตั้งแต่ 11, 14 และ 17 คุณสามารถใช้ C ++ เป็นภาษาสคริปต์และยังคงได้รับประโยชน์จากความเร็วที่รวดเร็ว เมื่อฉันทำงานกับข้อมูลขนาดใหญ่ฉันเกือบจะต้องใช้ C ++ เพราะภาษาอื่น ๆ จะมี 10-1,000 ช้าลง
Kemin Zhou

32

เพราะความเร็วนั้นสำคัญ

  • เกมใช้ C ++ สำหรับงานหลักซึ่งประสิทธิภาพเป็นสิ่งสำคัญ พวกเขาใช้ภาษาแบบไดนามิกสำหรับงานเขียนสคริปต์ที่มีความยืดหยุ่นเป็นสิ่งสำคัญ

  • ตัวอย่างแอพพลิเคชั่นบนเดสก์ท็อป GUI : Visual Studio เขียนขึ้นใน. NET และไม่ใช่ C ++ ดูเหมือนว่าจะทำงานได้ดีสำหรับ IDE เนื่องจาก IDE นั้นไม่จำเป็นต้องทำงานหนักมากมาย (คอมไพเลอร์ตัวเชื่อมโยงและเครื่องมืออื่น ๆ ไม่จำเป็นต้องเขียนใน. NET - แม้ว่าเมื่อ wawa ชี้ให้เห็นในความคิดเห็นบางคนดูเหมือนจะเป็น (เช่น VB.NET)

  • เบราว์เซอร์จะต้องรวดเร็วเช่นกัน หลังจากทั้งหมดพวกเขาเป็นชนิดของระบบปฏิบัติการรอง ในอีกทางหนึ่งคุณสามารถยืนยันว่าส่วนใหญ่ของ Firefox เป็น "จาวาสคริปต์" ส่วนใหญ่แล้วเนื่องจากกรอบงาน Mozilla ดูเหมือนจะขึ้นอยู่กับจาวาสคริปต์เป็นอย่างมาก

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


1
+1 คำตอบที่ดีที่สุด: เป็นเรื่องเกี่ยวกับความเร็วซึ่งเป็นเหตุผลอันดับต้น ๆ สำหรับการใช้ C ++ แม้แต่ Microsoft เองก็ยอมรับว่า C ++ นั้นมีประสิทธิภาพที่ดีที่สุดเมื่อเทียบกับ c # และ visual Basic - ดูได้จากหน้า Visual Studio วินาทีที่ใกล้เคียงกันคือการพกพา - ถ้าคุณใช้ไลบรารีข้ามแพลตฟอร์มเช่น Qt คำตอบที่ดีที่สุดก็เพราะมันมีวัตถุประสงค์มากกว่าส่วนตัว
therobyouknow

2
จุดที่สองของคุณไม่เป็นความจริงทั้งหมด คอมไพเลอร์ VB.NET เขียนขึ้นใน VB.NET และคอมไพเลอร์ F # เขียนใน F # คอมไพเลอร์ C # ไม่ใช่ แต่จากสิ่งที่เผยแพร่เกี่ยวกับโครงการ Roslyn ฉันคิดว่าคอมไพเลอร์ C # กำลังเขียนใหม่ใน C #
Wesley Wiser

5
visual studio gui (chrome) เขียนขึ้น (จาก vs2010) ใน c # และ WPF Explorer โซลูชันสร้างระบบโค้ดเบราว์เซอร์และกล่องเครื่องมือเขียนด้วย c # / c ++ พร้อม winforms คอมไพเลอร์เขียนใน c ++
Martin Beckett

สำหรับแอปเดสก์ท็อปส่วนใหญ่เฉพาะการเรนเดอร์และเอ็นจิ้นเลย์เอาต์ (เช่นมุมมอง) จะต้องรวดเร็ว โมเดลไม่น่าจะมีเวลามากในการใช้งานและคอนโทรลเลอร์ใช้เวลาส่วนใหญ่ในการรอให้ผู้ใช้ทำบางสิ่ง (และผู้ใช้ไม่กี่คนสามารถคลิกได้บ่อยถึง 10 เท่าต่อวินาทีด้วยความน่าเชื่อถือใด ๆ )
Donal Fellows

@MartinBa: ฉันจะทราบว่าคอมไพเลอร์ปัจจุบันสำหรับ C # และ VB (Roslyn) เขียนใน C #
jmoreno

17

แอป GUI ที่คุณเห็นในภาษา C ++ นั้นมักจะทำเช่นนั้นเนื่องจากเหตุผลดั้งเดิม Python (ที่มี Qt หรือ Gtk) มีความเป็นไปได้อย่างมากสำหรับแอปพลิเคชัน GUI เช่นเดียวกับ C # ถ้าคุณทำงานในบ้านของ Windows เมื่อเริ่มต้นสิ่งใหม่ ๆC ++ เป็นที่ต้องการอย่างมากเนื่องจากไม่มีงานระบบประปาที่ต้องทำ


5
+1 รหัสที่มีอยู่เป็นสิ่งสำคัญ เป็นการยากที่จะเริ่มต้นอย่างสมบูรณ์ตั้งแต่เริ่มต้นเมื่อพัฒนาโปรแกรมใหม่

7
การใช้ Python กับ Qt จะดีกว่าการใช้ C ++ กับ Qt อย่างไร ถ้าฉันจะเริ่มโครงการใหม่วันนี้ฉันยังคงใช้ C ++ สำหรับ GUI เพราะ: ก) เป็นสิ่งที่ฉันรู้ข) ทำงานได้ดี เพียงเพราะ C ++ มีมาระยะหนึ่งแล้วก็ไม่ทำให้ "ล้าสมัย"
TZHX

2
@TZHX: "มันคือสิ่งที่ฉันรู้" เป็นข้อโต้แย้งที่ทำงานได้ หากไม่ได้รับการดูแลการจัดการหน่วยความจำอีกต่อไปเป็นการเพิ่มประสิทธิภาพอย่างมากและอาจชดเชยความพยายามในการเรียนรู้ Python แม้สำหรับโครงการเดียว อีกเหตุผลสำหรับการใช้ Python ก็คือ cross-platformness - ด้วย C ++ คุณต้องระวังและใช้มาตรการพิเศษในขณะที่ python มีแนวโน้มที่จะใช้งานได้
tdammers

4
ฉันไม่เห็นข้อดีของการใช้ PyQt แทน Qt กับ C ++ สำหรับคนที่รู้จัก C ++
BenjaminB

13
C ++ มีแนวโน้มที่จะทำงานได้เช่นกัน ด้วย Python คุณต้องกังวลเกี่ยวกับหลามรุ่นที่ผู้ใช้ติดตั้งหรือกังวลเกี่ยวกับการรวมมัน การดูแลหน่วยความจำไม่ได้ผลมากนักเว้นแต่ว่าคุณจะทำข้อผิดพลาดที่โง่ ฉันคิดว่าผู้คนมากมายให้ "การจัดการหน่วยความจำ" เป็นอุปสรรคใหญ่ในการทำงานกับ C ++ โดยไม่ทราบว่ามันแตกต่างกันมากแค่ไหน
TZHX

16

เนื่องจากไม่ว่าจะมีการทดสอบประสิทธิภาพ. NET และฝูงชนที่เหมือนกันกี่ครั้งก็ตามไม่ว่าพวกเขาจะเข้าใกล้มาตรฐานเพียงใดในที่สุดแอป C ++ ก็ออกมาด้านบน มันเร็วกว่าตอนเย็นเครื่องมันเร็วกว่าและมีหลายวิธีที่สามารถปรับปรุงได้

ฉันเคยได้ยินหลักฐานมากมายที่โครงการเริ่มต้นขั้นตอนที่. NET เป็นวิธีที่จะไป แต่เมื่อมันถูกเลือกพวกเขามักจะกลายเป็นความยุ่งเหยิงหนัก

ในปัจจุบัน C ++ ค่อนข้างปลอดภัยและใช้งานง่ายโดยเฉพาะกับเฟรมเวิร์กเช่น Qt หรือ WTL


2
+1: "นอกจากนี้ C ++ ทุกวันนี้ค่อนข้างปลอดภัยและใช้งานง่ายโดยเฉพาะอย่างยิ่งกับเฟรมเวิร์กอย่าง Qt ... " ฉันเห็นด้วยอย่างยิ่ง: ฉันคิดว่าจุดแข็งที่ยิ่งใหญ่ไม่ใช่ C ++ ในตัวเอง แต่ความจริงแล้ว (1) ) มันถูกคอมไพล์ไปยังโค้ดเนทีฟ, (2) มีชุดคุณสมบัติที่เหมาะสม (OOP, เทมเพลต), (3) มีเฟรมเวิร์กที่ดีมากเช่น Qt สิ่งนี้ชดเชยความจริงที่ว่าภาษานั้นค่อนข้างใหญ่และยากที่จะเรียนรู้: เมื่อคุณเชี่ยวชาญในเซตย่อยที่เหมาะสมของภาษาและบางไลบรารีที่ดีคุณก็จะสามารถทำงานได้จริง
Giorgio

10

ที่สุดของเกมเครื่องยนต์จะเขียนในภาษา C ++ เบราว์เซอร์เอ็นจิ้นจำนวนมากยังถูกเข้ารหัสใน C ++ แต่บ่อยครั้งที่เบราว์เซอร์ GUI นั้นใช้รหัสที่มีน้ำหนักเบา (JavaScript, Python) ด้วยข้อยกเว้นที่น่าทึ่งของ Source Engine เอ็นจิ้นเกมส่วนใหญ่ก็ใช้ภาษาสคริปต์ (เช่น Lua หรือ Python) [สำหรับการอ้างอิง: รายการของเกมที่เขียนสคริปต์ Lua ]

ใช้ไลบรารี C ++ GUI ยอดนิยมเช่น Qt ในเวอร์ชันปัจจุบัน (4.7) ใช้ QML สำหรับ GUI QML นั้นเป็น JavaScript ที่มีการเชื่อมโยง Qt

ดังนั้นจริงๆแล้วไม่มีภาษา C ++ กับภาษาแบบไดนามิกมันผสมกัน


[จำเป็นต้องมีการอ้างอิง] ฉันรู้ว่ามีหลายเกมที่ใช้ภาษาสคริปต์เพื่อให้ผู้ใช้ขยายพวกเขา แต่เท่าที่ฉันรู้ว่ามีไม่มากเกมที่ใช้ภาษาสคริปต์สำหรับฟังก์ชันไบนารีที่วางจำหน่ายของพวกเขา
ProdigySim

1
@ProdigySim: ฉันรู้หลายอย่างที่ทำ ออกจากหัวของฉัน World of Warcraft (Lua + XML), Uncharted ซีรีส์ของ Naughty Dog (Lisp), Unreal series (UnrealScript), เกมที่ใช้เครื่องยนต์ Torque และ Unity, Dungeon Siege, NeverWinter Nights และอื่น ๆ อีกมากมาย เกมที่ขับเคลื่อนด้วยข้อมูลกำลังกลายเป็นบรรทัดฐานที่โฮสต์สคริปต์ใช้งานฟีเจอร์ UI และสถานะเกมจากบนลงล่างส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด)
greyfade

@ProdigySim: แม้ว่าจะถูกซ่อนจากผู้ใช้ปกติไม่ได้หมายความว่าภายในไม่ได้ใช้เอ็นจิ้นสคริปต์ ผู้พัฒนาเกมโดยทั่วไปมีสองตัวเลือก - สร้างภาษาสคริปต์ของตัวเองสำหรับโมเดลหรือใช้หนึ่งในวัตถุประสงค์ทั่วไป Lua นั้นดีสำหรับเกมโดยเฉพาะมันดีสำหรับระบบเรียลไทม์
vartec

เอ็นจิ้นแหล่งที่มาใช้ภาษาสคริปต์ Squirrel
cubuspl42

6

เหตุผลแรกคือ: นิสัย (เก่า)

เหตุผลที่สอง: ความน่าเชื่อถือน้อยลงบน Virtual Machines ล่ามที่จำเป็นต้องติดตั้ง ฯลฯ

และยังมี IDEs ที่ยอดเยี่ยมอยู่บ้างในการพัฒนาโค้ดใน C ++


1
' ยังคง IDEs ที่ยอดเยี่ยม' .. ฉันเถียงว่า Visual Studio และ Eclipse นั้นล้ำสมัยและน่าอยู่มานานแล้ว
JBRWilkinson

@JBRWilkinson: ฉันไม่ได้พูดภาษาอื่นไม่มีพวกเขาด้วย
Roalt

6

เหตุผลก็คือคุณสามารถควบคุมทุกอย่างที่เกิดขึ้นได้มากขึ้น หากคุณกำลังจะเขียน photoshop ใน C # คุณจะมีปัญหาเรื่องประสิทธิภาพที่ร้ายแรงสำหรับงานบางอย่าง ในภาษาระดับต่ำกว่าที่มีการควบคุมมากขึ้นคุณสามารถใช้ทางลัดปรับให้เหมาะสมเมื่อจำเป็นสำหรับสิ่งต่าง ๆ ที่เข้มข้นกว่า แน่นอนว่าคุณใช้ C ++ ในรหัสที่ไม่มีการจัดการไม่ใช่ C ++ ใน. NET

ดูที่นี่สำหรับตัวอย่างรวดเร็ว


2
Adobe Lightroom ซึ่งโดยทั่วไปเป็นส่วนหนึ่งของ Photoshop เขียนใน Lua
Jörg W Mittag

4
@ Jörg: และส่วนที่เหลือคือ C ++ อันที่จริงอาจเป็นชุดค่าผสมที่ดีที่สุด, C ++ สำหรับรากฐาน, Lua สำหรับส่วนที่เหลือ (แม้ว่าฉันจะยังคงชอบ C มากกว่า C ++ สำหรับสิ่งระดับต่ำ)
Javier

2
@ จาเวียร์: ใช่แล้ว Lightroom นั้นเป็นอัลกอริธึมการจัดการรูปภาพจาก Photoshop (ซึ่งอาจจะเขียนส่วนใหญ่ในชุดประกอบ MMX / SSE) และ SQLite3 (ซึ่งเขียนด้วย ANSI C ยุคก่อนประวัติศาสตร์เพื่อการพกพา) ติดกาวร่วมกับ Lua Adobe ยังพัฒนา Lua IDE ของตนเองอย่างสมบูรณ์ใน Lua ไม่มีใครรู้ว่าพวกเขาใช้ชุดเครื่องมือกราฟิก? AFAIR Photoshop มีชุดเครื่องมือที่ทันสมัยเกือบทั้งหมดดังนั้นมันจึงเป็นสิ่งที่ปลูกเองในบ้าน?
Jörg W Mittag

4
ไม่มีการกระทำผิดกฎหมาย แต่ถ้าคุณคิด ANSI C เป็นประวัติศาสตร์ที่คุณเคยอ่านตัวอย่างโค้ดที่ไม่ถูกต้อง
ฮาเวียร์

6

C ++ ถูกพิมพ์แบบสแตติก สิ่งนี้อนุญาตให้ปรับการประมวลผลโค้ดให้เหมาะสมล่วงหน้าโดยให้คอมไพเลอร์เหมาะสมกับ abstractions ของคุณกับกระบวนการของระบบที่พร้อมใช้งานบนแพลตฟอร์มที่กำหนด ถึงตอนนี้ภาษาแบบไดนามิกต้องการเลเยอร์ซอฟต์แวร์เพิ่มเติม (= ตัวแปล) ซึ่งทำให้การเข้าถึงทรัพยากรระบบช้าลง


4

เหตุผลส่วนใหญ่ที่ให้มาคือเทคนิคหรือ "เหนือตาราง" ... นี่คือเหตุผลทางธุรกิจหรือ "ใต้ตาราง":

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

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

นักพัฒนาเก่า: คนส่วนใหญ่ที่มีประสบการณ์มาเป็นเวลานานและไม่ได้ปรับปรุงตัวเอง พวกเขาเขียนโปรแกรมใน C ++ และไม่ใช่ในภาษาที่ใหม่กว่าเพราะพวกเขาไม่รู้ภาษาที่ใหม่กว่า


ฉันจะเถียงว่าคุณกำลังบิดเบือนรหัสต้นฉบับเมื่อคุณปล่อยแอพพลิเคชัน NET ดู Visual Studio อินเตอร์เฟสส่วนใหญ่ได้รับการออกแบบด้วยรูปแบบ WPF คะแนนบางส่วนของคุณใช้ได้แน่นอนการจัดการของวันนี้ส่วนใหญ่เป็นนักพัฒนาของเมื่อวานนี้ข่าวร้ายของกรอบวันนี้ส่วนใหญ่ไม่น่าจะใช้ได้เพราะการเปลี่ยนแปลงของคอมพิวเตอร์ในปัจจุบัน
Ramhound

ผู้คนจำนวนมากที่มีประสบการณ์มากมายได้รับประสบการณ์ของพวกเขาโดยการปรับปรุงตัวเองอยู่เสมอ พวกเขามักจะไม่เรียนภาษาใหม่ ๆ ที่ร้อนแรง (เช่น Pascal ในช่วงต้นทศวรรษ 1980) เพียงเพราะพวกเขาร้อน แต่ถ้าพวกเขามีประโยชน์สำหรับพวกเขาหรือพวกเขามีแนวคิดที่น่าสนใจ (เช่น Haskell)
David Thornley

4

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

นอกจากนี้ C ++ มักจะให้การเข้าถึงโดยตรงกับ apis ของระบบ (เช่น GUI) สิ่งที่ให้โอกาสที่ดีที่สุดในการเพิ่มประสิทธิภาพการใช้ประโยชน์และสร้างความแตกต่างจากโซลูชันที่คล้ายกัน


3

ฉันคิดว่ามันมีส่วนเกี่ยวข้องกับ API สำหรับชุดเครื่องมือ GUI พวกเขาทั้งหมดมี C / C ++ API แต่ไม่ใช่ทั้งหมดที่มีการผูก Python และบางครั้งชุดเครื่องมือตัวเองก็เขียนด้วยภาษา C ++ ดังนั้นแม้ว่าพวกเขาจะได้รับการสนับสนุนสำหรับภาษาอื่น ๆ ที่พวกเขาไม่สนับสนุนอย่างเต็มที่ (เช่นพวกเขาจะไม่สนับสนุน Python tupleเป็นอาร์กิวเมนต์)


โอ้พวกเขาไม่สนับสนุนพวกเขาอย่างเต็มที่เพราะพวกเขาไม่ต้องการหรือไม่มีเวลาที่จะใช้มัน ไม่ใช่เพราะมันเป็นไปไม่ได้
cubuspl42

2

คุณกำลังพูดถึงเบราว์เซอร์และเกมเป็นตัวอย่าง ทั้งสองอย่างนี้เป็นแอพพลิเคชั่นที่มีความสำคัญต่อประสิทธิภาพดังนั้นการใช้ภาษาในระดับต่ำเพื่อความรวดเร็ว

แอปพลิเคชั่นอื่น ๆ จำนวนมากมีข้อ จำกัด ด้านประสิทธิภาพน้อยกว่าและสามารถเขียนได้อย่างง่ายดายในภาษาอื่น โดยเฉพาะอย่างยิ่ง C # ดูเหมือนว่าจะมีการใช้งานมาก (และ Obj-C แต่มันไม่ได้มีคุณสมบัติเหมือนระดับสูงฉันเดาดีกว่า C ++ แม้ว่า)

อย่างไรก็ตามมีการขาดกรอบบางอย่างสำหรับภาษาการเขียนโปรแกรมล่าสุด ตัวอย่างเช่นไม่มีไลบรารี GUI ดั้งเดิมที่ใช้งานได้สำหรับ Python จริงๆแล้ว แน่นอนว่าคุณสามารถใช้ PyQt หรือ PyGtk ได้และก็ใช้งานได้ดี แต่ท้ายที่สุดนั่นคือการเชื่อมต่อกับรหัส C อีกครั้งเท่านั้น อีกครั้ง C # (และ Obj-C เนื้อหา) ดูเหมือนว่าจะเป็นข้อยกเว้นและบางที MacRuby หรือ IronPython สามารถเปลี่ยนเกม


0

สำหรับภาษาที่จะแทนที่ C ++ หรือ Java นั้นจะต้องทำสิ่งที่ขาดหายไปอย่างมากในภาษาเหล่านี้นอกเหนือจากการดำเนินการด้วยจุดแข็งของพวกเขาเอง นอกจากนี้การลงทุนจำนวนมากได้เข้าไปในภาษาเหล่านี้ นั่นหมายความว่ามีไลบรารี C ++ มาตรฐานในหลาย ๆ แพลตฟอร์มซึ่งเบราว์เซอร์เกมและโปรแกรมดังกล่าวสามารถใช้งานได้อย่างง่ายดาย ดังนั้นจะต้องมีความเฉื่อยอยู่บ้าง ภาษามีแนวโน้มที่จะเริ่มช้าเหมือนซอฟต์แวร์อื่น ๆ

ถ้าคุณดูมัน Anaconda (โปรแกรมติดตั้งของ RedHat) นั้นใช้เวลาประมาณ 10 ปีหรือมากกว่านั้นเขียนใน Python ตั้งแต่ต้น Python ไม่ได้รับความนิยมเมื่อ Anaconda ใหม่

Go's (golang.org) ของ Google มีการพัฒนาอย่างรวดเร็ว คอมไพเลอร์จะยังไม่ได้ bootstrapped เพื่อความนิยมในการเริ่มต้นห้องสมุดจะต้องมีเสถียรภาพ, คอมไพเลอร์ควรจะ bootstrapped และผู้คนจำนวนมากต้องใช้มัน ฉันได้ยินมาว่ามีหนึ่งรายการผลิตนอก Google ที่เขียนขึ้นใน Go และมีรายงานว่าไม่มีเวลาหยุดทำงานในช่วงเวลาหนึ่งปี


1
ที่จริงมีคอมไพเลอร์ไปในเชิงพาณิชย์สำหรับ Windows ซึ่งจะถูกเขียนในไปจึงมีเป็นคอมไพเลอร์ bootstrapped เพื่อไป (มันยังอยู่ในช่วงเบต้าปิด)
Jörg W Mittag

โอ้ฉันไม่ได้สัมผัสแล้ว ขอบคุณที่บอก :)
vpit3833

2
มันเรียกว่าERGOและผลิตโดย บริษัท ที่เรียกว่าNewquist โซลูชั่น
Jörg W Mittag
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.