ดูเหมือนว่าเว็บเบราว์เซอร์ทั่วไปส่วนใหญ่ (Firefox, Chrome, Safari) ได้รับการพัฒนาโดยใช้ C ++ มันเป็นอย่างนั้นเหรอ?
ดูเหมือนว่าเว็บเบราว์เซอร์ทั่วไปส่วนใหญ่ (Firefox, Chrome, Safari) ได้รับการพัฒนาโดยใช้ C ++ มันเป็นอย่างนั้นเหรอ?
คำตอบ:
อีกวิธีหนึ่งในการถามคำถามคือเบราว์เซอร์ต้องการการสนับสนุนประเภทใด รายการสั้น ๆ คือ:
ภาษาส่วนใหญ่มีการสนับสนุนการแยกวิเคราะห์บางอย่าง คุณมีตัวแยกวิเคราะห์สำหรับ C, C ++, C #, Java และอื่น ๆ อย่างไรก็ตาม C และ C ++ นั้นมีเวลาค่อนข้างน้อยที่จะเริ่มต้นในส่วนที่เหลือของทางเลือกอื่น ๆ การเข้าถึงกราฟิกที่เร่งความเร็วใน Java นั้นเป็นเรื่องที่ไม่เว้นเสียแต่ว่าคุณจะมีส่วนขยายเนทีฟบางส่วนเพื่อใช้งาน WPF บน C # ให้การเข้าถึงกราฟิกเร่ง แต่มันใหม่เกินไปที่จะมีเบราว์เซอร์ที่ร้ายแรงสร้างขึ้นด้วยเทคโนโลยี
การสร้างเครือข่ายเป็นเหตุผลอย่างน้อยที่สุดในการเลือก C ++ มากกว่า Java หรือ C # เหตุผลก็คือการสื่อสารนั้นช้ากว่าการประมวลผลส่วนที่เหลือที่จะแสดงหน้า ความเร็วที่แท้จริงของเส้นลวดเป็นปัจจัย จำกัด ทั้ง Java และ C # มีการสนับสนุน IO แบบไม่มีการบล็อกเช่นเดียวกับ C ++ ดังนั้นจึงไม่มีผู้ชนะที่ชัดเจนในพื้นที่นี้
ทำไมไม่ใช้จาวา คุณเคยพยายามสร้าง UI ด้วย Java หรือไม่? มันรู้สึกยุ่งยากและช้าเมื่อเทียบกับสิ่งอื่นที่นั่นเพราะมันเป็น ไม่มีกราฟิกเร่งความเร็วเป็นค่าลบขนาดใหญ่ที่นี่ การทำแซนด์บ็อกซ์ของ Java นั้นดีจริงๆและสามารถช่วยปรับปรุงความปลอดภัยของเบราว์เซอร์ได้หากใช้อย่างถูกต้อง แต่เป็นความเจ็บปวดในการกำหนดค่าและทำงาน ไม่ต้องพูดถึงการสนับสนุนรูปแบบกราฟิกล่าช้าหลังเบราว์เซอร์ที่ทันสมัยที่สุด
ทำไมไม่ใช้ C # หากเป้าหมายเดียวของคุณคือ Windows, C # อาจเป็นตัวแทนที่ดี ปัญหาเกิดขึ้นเมื่อคุณต้องการสนับสนุนสิ่งอื่น โมโนยังไม่เพียงพอที่จะพิจารณาข้ามแพลตฟอร์มมากพอสำหรับงานนี้ - โดยเฉพาะอย่างยิ่งกับการรองรับกราฟิกเร่งความเร็วและ WPF ใครจะรู้ว่าต้องใช้เวลานานเท่าไหร่ในการเปลี่ยนแปลง
ทำไมไม่ C มีคอมไพเลอร์ C สำหรับเกือบทุกแพลตฟอร์มที่นั่น (รวมถึงอุปกรณ์ฝังตัว) อย่างไรก็ตามมีหลายอย่างที่ C ไม่ได้ทำเพื่อคุณซึ่งคุณจะต้องระมัดระวังเป็นพิเศษ คุณสามารถเข้าถึงระดับต่ำสุดของ API ได้ แต่นักพัฒนา C ส่วนใหญ่ไม่ใช้ GUI แม้แต่ไลบรารี C GUI ก็ถูกเขียนในลักษณะที่เป็นวัตถุ ทันทีที่คุณเริ่มพูดกับ UI ภาษาเชิงวัตถุจะเริ่มเข้าใจได้ดีขึ้น
ทำไมไม่ใช้ Objective C ถ้าเป้าหมายเดียวของคุณคือ Apple มันสมเหตุสมผลดี อย่างไรก็ตามนักพัฒนาส่วนใหญ่ไม่รู้จัก Objective-C และเหตุผลเดียวที่จะเรียนรู้ก็คือการทำงานบนกล่อง NeXT หรือ Apple แน่นอนว่าคุณสามารถใช้ไลบรารี่ C กับ Objective-C และมีคอมไพเลอร์สำหรับหลาย ๆ แพลตฟอร์ม แต่การหาคนทำงานให้มันจะทำให้ยากขึ้น ใครจะรู้? บางทีแอปเปิ้ลสามารถเปิดรับการขาดการรับรู้นี้
ทำไมต้อง C ++ มีคอมไพเลอร์ C ++ สำหรับทุกแพลตฟอร์มที่มี ห้องสมุด GUI เกือบทุกแห่งมีอินเทอร์เฟซ C ++ บางครั้งก็ดีกว่าและบางครั้งก็แตกต่างกัน ตัวอย่างเช่น ATL ของ Microsoft นั้นดีกว่าการเรียกใช้ฟังก์ชัน win32 C หรือแม้แต่ไลบรารี MFC มีตัวห่อ C ++ สำหรับ GTK บน Unix และฉันจะแปลกใจถ้ามีคนที่ไม่มีตัวห่อ C ++ รอบ ๆ ไลบรารี Objective-C GUI ของ Apple การจัดการกระบวนการง่ายกว่าภายใน C ++ มากกว่า Java หรือ C # (รายละเอียดเหล่านั้นจะถูกย่อให้คุณ) ความเร็วที่รับรู้นั้นมาจากการเร่งความเร็วฮาร์ดแวร์มากกว่าประสิทธิภาพแบบดิบ C ++ ดูแลสิ่งต่าง ๆ ให้คุณมากกว่า C ดิบ (เช่นสตริงที่มีขอบเขต) แต่ก็ยังให้อิสระคุณในการปรับแต่งสิ่งต่างๆ
ในขณะนี้ C ++ ได้เพิ่มทางเลือกให้กับคุณ
ฉันตัดสินใจที่จะเขียนนวนิยายเกี่ยวกับเรื่องนี้ด้วยความหวังว่าผู้คนจะปัดเป่ามันและถอนฉันออก ไม่ไม่ล้อเล่น! ฉันทนทุกข์ทรมานทุกคำ ทุกคำฉันบอกคุณแล้ว!
เว็บเบราว์เซอร์หลักทั้งหมดสามารถติดตามต้นกำเนิดของพวกเขากลับไปเป็น 90 Konqueror กลายเป็น Safari และ Chrome Netscape กลายเป็น Firefox IE และ Opera ยังคงเป็น IE และ Opera เบราว์เซอร์เหล่านี้ล้วนมีจุดเริ่มต้น 15 ปีสำหรับผู้ครอบครองตลาด
ฉันขอแนะนำให้คุณลองตั้งชื่อภาษาข้ามแพลตฟอร์มที่ยอมรับได้ (Windows / Mac / Unix และที่แย่กว่านั้น) ซึ่งมีให้บริการในราวปี 1995 เมื่อเบราว์เซอร์สมัยใหม่เริ่มต้นขึ้น หากต้องการสร้างคอร์ในอะไรก็ได้ยกเว้น C / C ++ คุณอาจต้องสร้างหรือซื้อและแก้ไขคอมไพเลอร์และแพล็ตฟอร์มไลบรารี
เพียงเพื่อความสนุกลองคิดถึงปัญหาวันนี้ ใช่มีทางเลือก แต่ยังคงมีปัญหาที่สำคัญ
การเลือกภาษาแสดงปัญหาเหล่านี้อย่างน้อย:
คุณจะรับคนที่รู้จักภาษาหรือเรียนรู้ได้จากที่ไหน? นี่เป็นอุปสรรคสำหรับภาษาเช่น OCaml, F #, Haskell, Common Lisp และ D ที่รวดเร็วและระดับสูงพอที่จะเขียนเบราว์เซอร์ได้อย่างดี แต่มีผู้ติดตามน้อย (ในช่วง 10k-100k บางที) แม้ว่าคุณจะเป็นอิสระ นับนักอดิเรกและนักวิชาการทั้งหมด
ผลที่ตามมากับคำตอบการขนส่งสินค้าทางศาสนาด้านบน:
แม้ในยุคปัจจุบันคุณต้องการภาษาที่รวดเร็วสำหรับการคำนวณส่วนต่าง ๆ ของหน้าแสดงผลและใช้จาวาสคริปต์ คุณสามารถเลือกที่จะเสริมด้วยภาษาระดับสูงสำหรับการสร้างองค์ประกอบ GUI ฯลฯ (เช่นวิธี Firefox ของ C ++ และ Javascript) แต่คุณต้องมีการผสานอย่างใกล้ชิดระหว่างภาษา คุณไม่สามารถพูดว่า "โอเค C # และ Lua" คุณอาจจะต้องสร้างและแก้ไขข้อผิดพลาดที่เชื่อมโยงตัวคุณเองเว้นแต่คุณจะเลือก C หรือ C ++ เป็นภาษาหลัก
การพัฒนาข้ามแพลตฟอร์มเป็นเวิร์มหนึ่งถุง คุณสามารถใช้ C # หรือ F # และใช้นิ้วของคุณกับ GTK # และ Mono ที่มีชีวิตอยู่และดีในอนาคต คุณสามารถลอง Common LISP, Haskell, OCaml ... โชคดีที่ทุกอย่างทำงานบน Windows และ Mac และ Linux
หลังจากนั้นคุณต้องสร้างฟังก์ชั่นจำนวนมหาศาลดังนั้นหากคุณเลือกภาษาระดับต่ำคุณต้องมีกองทัพโคเดอร์ที่ยิ่งใหญ่กว่าเดิม โปรดทราบว่าไม่มีใครได้สร้างเบราว์เซอร์ตั้งแต่เริ่มต้นในเวลาประมาณสิบห้าปี ส่วนหนึ่งเป็นเพราะ (แปลกใจ!) มันยาก
โดยเฉพาะการมีล่าม Javascript นั้นเป็นปัญหา 3 (รับมาหนึ่งรายการ) หรือมีปัญหา 4 (สร้างขึ้นหนึ่งรายการ)
หากคุณพัฒนาเบราว์เซอร์สามแพลตฟอร์ม (Windows / Mac / * ระวัง) วันนี้ (ต้นปี 2011) ตัวเลือกอะไรบ้าง
ถ้าเราเห็นเบราว์เซอร์หลัก ๆ เพิ่มขึ้นในอีกไม่กี่ปีข้างหน้าฉันจะพนันว่ามันจะเขียนเป็น C หรือ C ++ และภาษาแบบไดนามิก (เช่น Firefox) ไม่ว่าจะเป็นโอเพนซอร์ซหรือเป็นกรรมสิทธิ์
แก้ไข (31 กรกฎาคม 2013) : ผู้แสดงความคิดเห็นในข่าว Hacker ดูเหมือนจะพูดถึง Rust and Go (ไม่ใช่เฉพาะสำหรับคำตอบของฉัน) ซึ่งตกอยู่ในถัง "เบ็ดเตล็ดเร็ว" การพยายามเก็บรายชื่อภาษาที่มีความคุ้มค่าและทันสมัยอยู่เสมอจะเป็นการสูญเสียการต่อสู้ดังนั้นฉันจึงเรียกมันว่าเป็นตัวอย่างของตัวแทนเมื่อถึงเวลาเขียนและทิ้งไว้ตามลำพัง
ความเร็ว
น่าเกลียดเหมือนเดิม C ++ ยังคงเป็นสิ่งที่คุณใช้เมื่อคุณต้องการแอปพลิเคชันที่รวดเร็วและควบคุมรหัสได้อย่างสมบูรณ์
นี่คือเหตุผลที่เกมส่วนที่ไม่ใช่คอร์ (เช่นผู้นำเข้าไฟล์) ของ Office และอื่น ๆ ยังคงเขียนใน C ++
แก้ไขเพื่อรวมการตอบกลับจาก MSalters
ฉันเดาได้ แต่คุณกำลังพูดถึงผลิตภัณฑ์ซอฟต์แวร์ที่กำหนดเป้าหมายหลายแพลตฟอร์มและสามารถรวบรวม C ++ ไปยังแพลตฟอร์มใดก็ได้
(ฉันทำงานกับ Firefox มาประมาณห้าปี)
ผู้ถามนั้นถูกต้องว่าโค้ดของ Firefox จำนวนมากคือ C ++ และในความเป็นจริง C ++ นั้นส่วนใหญ่ถ้าคุณนับตามบรรทัดของโค้ด (แม้ว่าจะไม่ได้บอกเรื่องราวทั้งหมดเนื่องจากเรามี JavaScript จำนวนมากและ JS ก็มากกว่า กระชับกว่า C ++)
แต่ในความเป็นจริง Firefox ถูกเขียนในภาษาต่าง ๆ มากมาย:
ฉันแน่ใจว่าฉันลืม
รายการนี้มีความสำคัญเนื่องจากมันบอกใบ้ถึงความซับซ้อนที่เหลือเชื่อที่อยู่เบื้องหลังเว็บเบราว์เซอร์
ใช่ Firefox มีรหัส C ++ มากมายและใช่ว่าเกี่ยวข้องกับความจริงที่ว่า C ++ เป็นภาษาที่ดีที่สุดสำหรับสิ่งนี้เมื่อก่อตั้ง Netscape แต่ฉันก็ยืนยันว่าวันนี้ไม่มีภาษาที่ดีกว่าสำหรับสิ่งที่เราทำ
ไม่มีภาษาอื่นใดที่มีระบบนิเวศที่แข็งแกร่งของห้องสมุด (เราพึ่งพารหัสภายนอกอย่างมาก) มีภาษาอื่นเพียงไม่กี่แห่งที่ให้การควบคุมเต็มรูปแบบเช่น C ++ (เราปรับแต่งตัวจัดสรรฮีปที่กำหนดเองเป็นประจำและทำสิ่งที่ไม่ปลอดภัยสำหรับหน่วยความจำทุกประเภทให้เร็วขึ้นหรือใช้หน่วยความจำน้อยลง) มีภาษาอื่นเพียงไม่กี่แห่งที่ให้คุณนำไลบรารี่มาตรฐานส่วนใหญ่กลับมาใช้ใหม่ได้อย่างมีสติ (เรามีการใช้งานสตริงและคอลเลกชันของเราเองตามความต้องการของเรา) มีภาษาอื่นอีกสองสามภาษาที่ให้คุณใช้งานตัวรวบรวมขยะของคุณเอง และอื่น ๆ
แม้ว่า C ++ จะเป็นตัวเลือกที่ชัดเจนสำหรับสิ่งที่เราทำมากมายคนที่แนะนำว่าเราสามารถเขียนเบราว์เซอร์ใน Java และเขียน JVM ของเราเองหากจำเป็น นี่คือสิ่งที่เราทำ แต่ด้วยจาวาสคริปต์แทนที่จะเป็นจาวา แน่นอนว่าเบราว์เซอร์ส่วนใหญ่ไม่ได้เขียนด้วย JavaScript แต่จำนวนที่น่าแปลกใจคือ
ดีที่คุณจะต้องขอให้นักพัฒนาของผลิตภัณฑ์เหล่านั้นได้โดยตรงที่จะได้รับคำตอบ แต่ผมสงสัยว่ามันคือการรวมกันของความคุ้นเคย (มันเป็นสิ่งที่นักพัฒนาผู้รู้ดีที่สุด) ผลการดำเนินงาน (รวบรวมเพื่อไบนารีพื้นเมืองเมื่อเทียบกับ bytecode) และ เครื่องมือ (เทียบกับภาษาอย่าง C, C ++ เต็มไปด้วยแกดเจ็ตที่ช่วยประหยัดแรงงานอย่าง STL)
เบราว์เซอร์แต่ละตัวมีประวัติบางอย่างที่มีอิทธิพลต่อการเลือกภาษา
ตัวอย่างเช่นทั้ง Chrome และ Safari ขึ้นอยู่กับ WebKit ซึ่งมีต้นกำเนิดอยู่ในส่วน KHTML ของโครงการ KDE เดิม KDE นั้นถูกสร้างขึ้น (ส่วนหนึ่ง) เป็นการสาธิตชุดเครื่องมือ Qt GUI ดังนั้น KDE จึงเป็นโครงการ C ++ โดยรวม โครงการ KDE ใหม่ทั้งหมดนั้นเขียนด้วยภาษา C ++ ทั้งหมดซึ่งเป็นตัวเลือกเชิงตรรกะสำหรับ KHTML มันถูกย้ายไปใช้ชุดเครื่องมือ GUI อื่น ๆ
เอนจิ้น Presto ของ Opera ถูกเขียนด้วยประสิทธิภาพและขนาดไบนารี่ขนาดเล็ก: C ++ เป็นตัวเลือกที่สมเหตุสมผล
Microsoft ของ IE ถูกเขียนขึ้นเป็นชุดของส่วนประกอบ ActiveX ซึ่งสามารถเขียนได้ในภาษาใด ๆ ที่มีการผูก COM แต่น่าจะเขียนในชุดย่อยของ C ++ เนื่องจากส่วนใหญ่ของ codebase ของพวกเขาถูกเขียนไปแล้วในภาษานั้น
Mozilla ของ Netscape นั้นเขียนด้วยภาษา C ++ เนื่องจากความสามารถในการพกพาเป็นปัญหาหลักของพวกเขา คอมไพเลอร์ C และ C ++ เป็นที่แพร่หลายทุกหนทุกแห่งดังนั้นมันจึงเป็นตัวเลือกเชิงตรรกะ
ไม่มีเหตุผลทางเทคนิคโดยธรรมชาติสำหรับตัวเลือกเหล่านี้ เป็นเพียง "ดูเหมือนความคิดที่ดีในเวลานั้น"
ระบบเครือข่ายใน C และ C ++ นั้นง่ายต่อการปรับให้เหมาะสมเนื่องจากคุณไม่จำเป็นต้องใช้ไลบรารีถ้าคุณไม่ต้องการ ฉันสงสัยว่า C ++ เป็นภาษาที่เลือกเพราะช่วยให้ข้อดีของ C:
ประกอบกับข้อดีของ OOP:
เมื่อเขียนโค้ดบรรทัดแรกสำหรับเบราว์เซอร์รอบแรกแล้ว C # และ Java ก็ไม่มีอยู่จริง และก็ทับทิม งูเหลือมอาจจะมีอยู่รอบ ๆ แต่มันก็ยังเป็นโครงการ homebrew เล็ก ๆ ณ จุดนั้น
โดยพื้นฐานแล้วมีตัวเลือกอื่น ๆ นอกเหนือจาก C ++ ที่อนุญาตให้สร้างเบราว์เซอร์ที่รวดเร็วและทำงานบนแพลตฟอร์มที่แตกต่างกัน
แล้วทำไมพวกเขาถึงเขียนด้วยภาษา C ++? เพราะนั่นเป็นภาษาเดียวเท่านั้นที่พวกเขาสามารถเขียนได้
เนื่องจากเบราว์เซอร์ (เช่น HotJava, ชัดเจนพอที่เขียนใน Java) ที่เขียนในภาษาอื่น ๆ ไม่เคยประสบความสำเร็จในระดับที่ยอมรับของการเจาะตลาด /
ฉันไม่สามารถพูดอะไรเกี่ยวกับการทำซ้ำปัจจุบัน (หรือล่าสุด - ยังไม่ได้รับการปรับปรุงในช่วงเวลาหนึ่ง) ของ HotJava แต่เมื่อฉันลองมันดูเหมือนจะไม่มีการเจาะตลาด (อย่างน้อยสำหรับฉัน) เข้าใจง่ายมาก - มันน่าเกลียดช้าและเข้ากันไม่ได้กับหน้าเว็บบางหน้า ในท้ายที่สุดดูเหมือนว่ามันจะอิงกับหลักฐานที่ไม่เคยแพนออกมาเลย: เว็บจะประกอบด้วย Java applets เป็นหลักโดยมี HTML เป็นมากกว่าตัวห่อเล็ก ๆ
ส่วนหนึ่งอาจเป็นประวัติศาสตร์: เว็บเบราว์เซอร์ขนาดใหญ่ส่วนใหญ่ใช้เวลานานมาก เมื่อพวกเขาถูกเขียนครั้งแรกภูมิทัศน์แตกต่างกันมาก: C ++ เป็นภาษาใหม่ "ร้อน" ดังนั้นจึงถูกนำมาใช้เพื่อการพัฒนาใหม่ ๆ มากมาย เบราว์เซอร์กลายเป็นซอฟต์แวร์ที่มีการใช้งานมากที่สุดในขณะที่เบราว์เซอร์อื่น ๆ จากนั้นได้ค่อยๆจางหายไป
ฉันคิดว่า "ทัศนคติ" ของภาษาที่แสดงมีผลเช่นกัน: C ++ (เช่น C ก่อนหน้านี้) ได้เน้นการปฏิบัติจริงและการปฏิบัตินิยมเสมอ ทัศนคติพื้นฐานนั้นมีแนวโน้มที่จะดึงดูดโปรแกรมเมอร์ที่ยังใช้งานได้จริง ภาษาอื่น ๆ อีกมากมายให้ความสำคัญกับสิ่งต่าง ๆ เช่นความสง่างาม - และในการทำเช่นนั้นพวกเขาดึงดูดโปรแกรมเมอร์ที่คิดแบบเดียวกัน ปัญหาที่เกิดขึ้นคือสิ่งที่ฉันเรียกว่า "เอฟเฟกต์เสียงกระเพื่อม" อาการรวมถึง:
มีมากขึ้น แต่คุณจะได้รับความคิดทั่วไป (และใช่ฉันพูดเกินจริงในระดับหนึ่ง - แต่เพียงระดับ) ใช่โค้ดบางส่วนที่คุณได้รับจะสวยงามอย่างน่าประหลาดใจ แต่โอกาสที่จะช้าไปกว่าหกเดือนและส่วนใหญ่ไม่เข้ากันกับโค้ดอื่น ๆ ในระบบ (สิ่งที่ควรจะเป็น) และเมื่อคุณได้รับมันจะมี โอกาสที่ค่อนข้างยุติธรรมมีอะไรบางอย่างเปลี่ยนแปลงไปมากพอที่คุณจะไม่สามารถใช้มันได้เลย
นอกจากนี้ยังมีภาษาที่ไม่ต้องสงสัยเลยว่าจะทำงานได้ดี แต่ (ไม่ว่าจะถูกหรือผิด) ก็ไม่มี (หรือในเวลาสำคัญไม่มี) ส่วนแบ่งตลาดสำหรับทุกคนที่เคยเขียนเบราว์เซอร์ในนั้น ด้วยขนาดและความซับซ้อนของเบราว์เซอร์ที่สมบูรณ์มันต้องใช้คนจำนวนมากและใช้เวลาค่อนข้างนานในการพัฒนา ด้วยการลงทุนประเภทนี้หลายคนได้รับการอนุรักษ์ค่อนข้างเกี่ยวกับสิ่งต่าง ๆ เช่นเครื่องมือในการพัฒนา
gets
ซึ่งเป็นฟังก์ชันที่แย่มาก แต่แทบจะหลีกเลี่ยงไม่ได้ (และแน่นอนว่าไม่ใช่ "พื้นฐาน" ต่อภาษาหรืออะไรทำนองนั้น) ประการที่สอง C ++ ไม่ใช่ภาษาเดียวกับ C ในทุกกรณี ประการที่สาม OpenBSD แสดงให้เห็นอย่างชัดเจนว่าซอฟต์แวร์ที่มีความปลอดภัยสามารถเขียนได้เป็นภาษาซีไม่มีข้อบกพร่องด้านภาษาที่สามารถป้องกันการเขียนซอฟต์แวร์ที่ปลอดภัยและมั่นคงในซีส่วนแบ่งการตลาดเล็ก ๆ ของ OpenBSD บ่งชี้ว่าการรักษาความปลอดภัยไม่ใช่เรื่องสำคัญ คน.
gets
เป็นผลมาจากความจริงที่ว่าคุณไม่ผ่านความยาวของบัฟเฟอร์ที่คุณใช้ ไม่มีอะไรพื้นฐานเกี่ยวกับภาษา - คุณสามารถทำสิ่งเดียวกันในปาสคาล (และฉันมี) การเขียนซอฟต์แวร์ที่ปลอดภัยจากผู้โจมตีอัจฉริยะไม่ใช่เรื่องง่ายโดยไม่คำนึงถึงภาษา จากประสบการณ์ในทั้งสามนี้มันง่ายกว่าเล็กน้อยใน C มากกว่าใน Pascal และง่ายกว่ามากใน C ++ มากกว่าใน C
การเขียนโปรแกรมการขนส่งสินค้าทางศาสนา การรับรู้ว่า "C ++ นั้นเร็ว" ยังคงมีอยู่ (แม้จะมีคุณสมบัติระดับภาษาที่ไม่ค่อยดีนักเช่นรูปแบบวัตถุที่แตกหักซึ่งทำให้สิ่งต่างๆช้าลง) และผู้คนต้องการให้เบราว์เซอร์ของพวกเขาทำงานได้อย่างรวดเร็วดังนั้นพวกเขาจึงเขียนภาษา C ++ .
ในโลกที่มีสติคนที่เขียนซอฟต์แวร์ที่ต้องใช้เครือข่ายจะรู้สึกตกใจเมื่อนึกถึงการใช้ภาษาที่ทำให้เกิดปัญหาความปลอดภัยโดยธรรมชาติของ C และการทำเช่นนั้นเป็นการกระทำโดยประมาททางอาญา (เพียงแค่ดูว่ามีการพบช่องโหว่หน่วยความจำล้นจำนวนเท่าใดในเบราว์เซอร์ต่างๆในช่วง 15 ปีที่ผ่านมาหรือไม่!
มีภาษาที่รวบรวมอื่น ๆ ที่สามารถสร้างไบนารีที่รวดเร็วได้ ปัญหาคือพวกเขาไม่ได้รับการสัมผัสเหมือนกับครอบครัวซีและเราทุกคนต้องทนทุกข์กับมัน
ความจริงแล้วสนุก: เมื่อมอร์ริสเวิร์มโจมตีอินเทอร์เน็ตในปี 1988 แสดงให้เห็นถึงปัญหาอย่างชัดเจนในการเขียนระบบปฏิบัติการและซอฟต์แวร์ที่ใช้กับเครือข่ายใน C (ซึ่งยังไม่ได้รับการแก้ไขจนถึงทุกวันนี้ ,) Apple ปล่อยระบบปฏิบัติการที่ทันสมัยที่สุดเท่าที่โลกเคยเห็นมาเป็นเวลาหลายปีแล้วที่เขียนใน Pascal
เข้าถึง API ระดับระบบ
เบราว์เซอร์ทั้งหมดต้องเชื่อมต่อกับระบบปฏิบัติการในบางช่วงและระบบปฏิบัติการหลักส่วนใหญ่มี API และไลบรารี C และ C ++ ที่ได้รับการยอมรับเป็นอย่างดี โดยปกติแล้วการทำงานกับ API เหล่านั้นใน C หรือ C ++ จะง่ายกว่าการเขียนตัวห่อ
การควบคุมและพกพา
การโต้เถียงความเร็วส่วนใหญ่สามารถไปทางใดก็ได้ แต่ในทุกสิ่งที่คุณต้องการการควบคุมอย่างแม่นยำว่ามีอะไรเกิดขึ้นบ้างในภาษาระดับสูงกว่าจะมีฝนตกในขบวนพาเหรดของคุณ มีข้อยกเว้นนี้ แต่ส่วนใหญ่จะไม่ข้ามแพลตฟอร์มมากพอที่จะนับในบางสิ่งบางอย่างเช่นเบราว์เซอร์
มันไม่เกี่ยวอะไรกับข้อดีของภาษา C ++ กับภาษาอื่น ๆ คุณสามารถเขียนเบราว์เซอร์ที่ดีขึ้นตั้งแต่เริ่มต้นในภาษาเช่น Haskell; โปรเจ็กต์ที่สำคัญนี้สามารถใช้ JVM ของตนเองได้หากพวกเขาต้องการรับประกันคุณสมบัติด้านประสิทธิภาพบางอย่าง เช่นเดียวกับวิธีที่ Facebook เขียนคอมไพเลอร์ / เพิ่มประสิทธิภาพ PHP ของตัวเอง
เบราว์เซอร์ที่ตัดมาร์กอัปที่ไม่ได้มาตรฐานนั้นแย่กว่าไร้ประโยชน์ Legacy compat นั้นมีความสำคัญมากและซับซ้อนจนการเขียนซ้ำนั้นไม่ใช่ตัวเลือก เงินและเวลามากมายถูกลงทุนในการรักษาความปลอดภัยที่ผ่านการทดสอบการต่อสู้ ฯลฯ คุณไม่สามารถละทิ้งการลงทุนนั้นไปได้ อีกครั้งชอบวิธี Facebook จะยังคงเขียนใน PHP