ทำไมไม่รวมคุณสมบัติที่ดีที่สุดของภาษาการเขียนโปรแกรมที่มีอยู่ทั้งหมดเข้าด้วยกันในภาษาสากล
ทำไมไม่รวมคุณสมบัติที่ดีที่สุดของภาษาการเขียนโปรแกรมที่มีอยู่ทั้งหมดเข้าด้วยกันในภาษาสากล
คำตอบ:
ด้วยเหตุผลเดียวกันคุณไม่ได้ใช้มีดทหารสวิสเพื่อแกะเนื้อไก่ ...
โดยทั่วไปแล้วมีดสวิสกองทัพมีใบมีดรวมถึงเครื่องมือต่าง ๆ เช่นไขควงและสามารถเปิดและอื่น ๆ อีกมากมาย สิ่งที่แนบเหล่านี้จะถูกเก็บไว้ในที่จับของมีดผ่านกลไกจุดหมุน ...
การออกแบบมีดและความยืดหยุ่นของมันทำให้ทั้งคู่ได้รับการยอมรับทั่วโลก ...
เพราะ
สิ่งที่คุณมีในการเขียนโปรแกรมคือโดเมนที่มีปัญหามาก โดเมนนี้มีช่วงที่มากและในหลายทิศทาง
นี่คือสาเหตุที่คอนโทรลเลอร์การบินฝังตัวถูกเขียนใน C และเว็บไซต์เขียนด้วย PHP, Java, Rails, .NET และโฮสต์ของผู้อื่น
สำหรับตัวควบคุมเที่ยวบินที่ฝังตัวฉันมีหน่วยความจำประมาณ 128k เพื่อทำงานด้วยและเหนือสิ่งอื่นใดหากรหัสของฉันได้รับข้อยกเว้นที่ไม่สามารถจัดการได้เครื่องบินขัดข้องคน 200 คนตายและฉันถูกฟ้องให้ปรับ $ 1B และต้องส่งวิศวกรทุก สนามบินในโลกเพื่อซ่อมอากาศยานที่ลงดินสูญเสียลูกค้าของฉัน $ 10M / วัน ฉันต้องทำงานกับภาษาที่แน่นมากและมีชิ้นส่วนเคลื่อนไหวจำนวนน้อยที่อาจผิดพลาดได้
สำหรับเว็บแอปพลิเคชันของฉันฉันมีหน่วยความจำหลาย GB ให้ใช้งานได้ แต่ความเร็วเครือข่ายมี จำกัด (ระดับที่น้อยกว่าในชีวิตประจำวัน ฉันจะดูภาษาที่ให้คุณสมบัติมากมายและสร้างผลลัพธ์ที่สามารถส่งได้เร็วที่สุด ฉันไม่สนใจจริงๆหากไซต์ของฉันล่มฉันอาจจะสูญเสียยอดขายไปเล็กน้อย ($ 100) และต้องแก้ไขกรณีการใช้งานที่ถูกวางระเบิดไม่มีเรื่องใหญ่อะไร
เว็บไซต์ยังไม่ได้เขียนใน C มานานกว่า 15 ปี (ใครทำสคริปต์ cgi?) และเท่าที่ฉันรู้ว่าผู้ควบคุมการบินกำลังเริ่มมองหา C ++ แต่ในทางที่ จำกัด มาก
หากคุณไม่มีกล่องเครื่องมือหรือมีค้อนเล็ก ๆ หนึ่งในนั้นที่มีไขควงไขควงในที่จับกลวงฉันก็มีความเห็นอกเห็นใจที่ดีสำหรับคุณ
อย่างจริงจัง. หากคุณไปที่ร้านขายรถยนต์ช่างเครื่องของคุณมีเครื่องมือทำทุกอย่างในเครื่องมือของเขาหรือไม่? He (หรือเธอ) เป็นมืออาชีพด้วยเครื่องมือระดับมืออาชีพที่ออกแบบมาโดยเฉพาะเพื่อทำงานซ่อมรถยนต์ต่าง ๆ
ในทำนองเดียวกันนักพัฒนาซอฟต์แวร์มืออาชีพควรมีชุดเครื่องมือเพียงพอที่จะทำการค้าของเขา / เธอ หากคุณเปิดกล่องเครื่องมือและเห็นเพียงไขควง [ซอฟต์แวร์ที่เทียบเท่ากับ] ของ Philips คุณจะไม่สามารถพิจารณาถึงความเป็นมืออาชีพได้
คุณสามารถหมุนสลักเกลียวด้วยประแจปลายเปิด, ประแจปลายกล่อง, ประแจวงล้อหรือประแจแบบปรับได้ คุณสามารถหมุนสลักเกลียวด้วยคีมข้อต่อแบบงุ่มง่ามโดยมีความเสียหายเล็กน้อยถึงรุนแรง แต่มันก็ค่อนข้างยากที่จะหมุนสลักด้วยค้อนเลื่อน
คำตอบที่แตกต่างจากคนอื่น - ฉันคิดว่าจริง ๆ แล้วมีความเป็นไปได้ที่ภาษาจะกลายเป็น "สากล" ซึ่งจะช่วยให้คุณสมบัติและกระบวนทัศน์ของภาษาอื่น ๆ อีกมากมายถึงแม้ว่าอาจไม่ใช่ภาษาที่ออกแบบมาอย่างเคร่งครัด
หากต้องการใช้การเปรียบเทียบของ brettmjohnsonความคิดที่ว่าภาษาการเขียนโปรแกรมแต่ละภาษานั้นเป็นเครื่องมือที่อยู่ในกล่อง (หรือมีดสวิสกองทัพ) เป็นข้อสันนิษฐานที่ทุกคนกำลังทำ แต่จริงๆแล้วเป็นข้อสันนิษฐานที่ไม่สมบูรณ์
เกิดอะไรขึ้นถ้าภาษาการเขียนโปรแกรมเป็นกล่องเครื่องมือ
ฉันหมายความว่าจะทำอย่างไรถ้าคุณสามารถเพิ่มและลบคุณสมบัติออกจากภาษาตามที่คุณต้องการและมีกล่องเครื่องมือของคุณเองพร้อมเครื่องมือที่คุณต้องการ - แม้ว่าเครื่องมือนั้นจะมีจุดประสงค์ที่แตกต่างกัน
แนวคิดมีอยู่แล้วบางส่วนแล้ว ตัวอย่างเช่นภาษาเช่นNemerleช่วยให้คุณเพิ่มไวยากรณ์ให้กับภาษาและดังนั้นคุณอาจจะสามารถใช้ "คุณสมบัติที่ดีที่สุดจากภาษา X" และเพิ่มลงใน Nemerle (หรือของคุณเอง) นี่ไม่ได้แปลว่าการเขียนมาโครของคุณเองตลอดเวลา - แต่ละภาษา (หรือกระบวนทัศน์) สามารถกำหนดไว้ในมาโครในไลบรารีมาตรฐาน - ซึ่งคุณสามารถทำได้import Haskell; import Prolog;
และเริ่มเขียนทั้งสองภาษาราวกับว่ามันเป็นส่วนหนึ่งของ ภาษาของคุณ?
คำถามก็คือ - คุณจะให้คุณสมบัติของภาษา / กระบวนทัศน์ต่าง ๆ ทำงานร่วมกันได้อย่างไร ในขณะที่ฉันไม่สามารถตอบได้กรอบงานเช่น. Net และ JVM นำเสนอวิธีแก้ปัญหาบางอย่าง - ภาษามีความเข้ากันได้อย่างน้อยบางส่วนเนื่องจากวิธีการรวบรวม คุณสามารถนำโค้ดใด ๆ ที่เขียนใน C # และใช้จาก F # โดยไม่มีการร้องเรียน
'ปัญหา' ของการแก้ปัญหาอย่างที่เป็นอยู่ในทุกวันนี้คือการใช้ภาษาเหล่านี้ร่วมกันทำให้คุณต้องสร้างมันเป็นโครงการแยกต่างหากซึ่งไม่สามารถอ้างอิงซึ่งกันและกัน - คุณสามารถมีการอ้างอิงทางเดียวเท่านั้น อุปสรรคทางภาษาคือแต่ละโครงการรวบรวมไฟล์ทั้งหมดแยกเป็นภาษากลางระดับกลางก่อนที่โครงการอื่นจะสามารถเข้าถึงได้
หินที่ก้าวไปสู่การกำจัดสิ่งกีดขวางนั้นจะอนุญาตให้ใช้รหัสภาษาต่าง ๆ (เช่น C # และ F #) เพื่อคอมไพล์ภายในโครงการเดียวกัน ในทางทฤษฎีคุณสามารถรวบรวมแต่ละไฟล์แยกกัน (หรือในกลุ่ม - หากพวกเขามีบางส่วนหรือการอ้างอิงแบบวงกลม) จากนั้นรวบรวมไฟล์ของภาษาที่แตกต่างกันซึ่งสามารถเข้าถึงวัตถุที่รวบรวม (CIL) แล้ว คุณจะต้องกำหนดลำดับของการรวบรวมอย่างเคร่งครัดเพื่อให้ทำงานได้ แต่ต้องมีลำดับของการรวบรวมในกรณีของ F #
อย่างไรก็ตามฉันไม่ได้พูดว่า "อาจมีภาษาสากล" ฉันแนะนำว่ามีความเป็นไปได้ในการทำงานร่วมกันระหว่างภาษาที่มีอยู่ในปัจจุบันได้ดีขึ้นมาก ในความเป็นจริงมันไม่น่าจะมีการปรับปรุงอย่างรวดเร็วในเร็ว ๆ นี้เพียงเพราะมีงานจำนวนมากที่ต้องใช้ภาษาและห้องสมุดเครื่องมือและอื่น ๆ ที่จำเป็นในการใช้งาน
ฟีเจอร์ที่ดีที่สุดของบางภาษาขัดแย้งกับฟีเจอร์ที่ดีที่สุดของบางภาษา
ตัวอย่างเช่น: การสะท้อนการรับรู้แบบพิมพ์เป็นคุณลักษณะที่ดีมาก แต่มันจะไม่คุ้มค่ามากนักในภาษาที่พิมพ์อย่างหลวม ๆ แต่การพิมพ์แบบหลวม ๆ ก็มีประโยชน์เช่นกัน
แม้แต่ในภาษาเดียวคุณก็ไม่สามารถใช้คุณสมบัติที่ดีที่สุดทั้งหมดได้ในเวลาเดียวกันเพราะมันขัดแย้งกัน
"แจ็คของการซื้อขายทั้งหมด - ต้นแบบของไม่มี" สปริงใจ
บางโปรแกรมต้องการความเร็วหน่วยความจำขนาดใหญ่หรือการเข้าถึงดิสก์อย่างรวดเร็ว ภาษาบางภาษาใช้ได้ดี แต่ก็ไม่ดี - ฉันไม่คิดว่าคุณจะได้ภาษาที่ดีเลย
ดังนั้นในขณะที่คุณสามารถเขียนโปรแกรมใดก็ได้ในภาษาใดก็ตามสิ่งที่คุณได้รับนั้นไม่ได้รับประกันว่าจะเป็นโปรแกรมที่ "ดีที่สุด" ที่คุณสามารถเขียนเพื่อแก้ไขปัญหานั้นได้
นั่นคือ ไม่มีเครื่องมือที่ดีที่สุดสำหรับทุกสิ่ง แต่เครื่องมือบางอย่างเช่นภาษาการเขียนโปรแกรมจำนวนมากให้บริการในทุก ๆ วัตถุประสงค์ไม่ใช่สิ่งที่ดีที่สุดสำหรับทุกคน
คุณสามารถเลือกเครื่องมือที่ดีที่สุดสำหรับงาน แต่มีภาษาการเขียนโปรแกรมที่สามารถใช้ได้กับทุกวัตถุประสงค์และคุณสามารถเลือกได้ ฉันไม่แนะนำ แต่เป็นไปได้
เพราะสิ่งที่ฉันเรียกว่า "การทำให้เป็นเรื่องธรรมดา / ความขัดแย้งเฉพาะทาง" ซึ่งอาจมีชื่ออื่นและไม่ใช่ความขัดแย้ง
ยิ่งการเขียนโปรแกรมภาษาทั่วไปมากเท่าไหร่ ยิ่งภาษามีความเชี่ยวชาญมากเท่าไหร่คุณก็จะยิ่งประสบความสำเร็จน้อยลงเท่านั้น
ภาษากำหนดลักษณะที่ผู้คนคิด นี่เป็นเรื่องจริงสำหรับภาษาธรรมชาติ หากเด็กรู้เพียงภาษาเดียวกับตัวเลข "หนึ่ง, สอง, หลายภาษา" การสอนคณิตศาสตร์สำหรับเด็กนั้นยาก ... (ขออภัยฉันไม่มีลิงค์) ในภาษาอังกฤษเราพูดถึงเวลาที่ต่างกันราวกับว่าพวกเขาอยู่ในสถานที่ต่าง ๆ ดังนั้นแนวคิดของการเดินทางข้ามเวลาจึงเป็นไปได้ที่จะจินตนาการ ในบางภาษาความคิดเรื่องการเดินทางข้ามเวลาจะไม่เกิดขึ้นกับผู้พูด
สิ่งนี้เป็นจริงสำหรับภาษาโปรแกรม
ดังนั้นหากเรามีภาษาการเขียนโปรแกรมเดียวทุกคนจะคิดถึงงานการคำนวณทั้งหมดเหมือนกันทุกประการ ดังนั้นเราจะไม่สำรวจทางเลือกและวิธีที่ดีที่สุดในการทำบางสิ่งจะยังไม่ถูกค้นพบ
สิ่งที่ใกล้เคียงที่สุดที่เราต้องใช้ในภาษาสากลคือ C. C ทำแผนที่อย่างใกล้ชิดกับแนวคิดฮาร์ดแวร์พื้นฐาน (สิ่งที่ทำในฮาร์ดแวร์จริง ๆ ) และโปรแกรมในทุกภาษา * สามารถแปลงเป็น C ได้ (ดูว่า CFront ใช้คอมไพเลอร์ C สำหรับแอสเซมเบลอร์อย่างไร ภารกิจ) ปัญหาเกี่ยวกับ C นั้นโดยทั่วไปแล้วการแปลงที่กล่าวถึงข้างต้นจะไม่สมเหตุสมผลจากมุมมองของโปรแกรมเมอร์ C
"แลมบ์ดา" เป็นไปได้เสมอในซีไวยากรณ์ปิดอยู่รวมถึงโค้ดที่กระจายอยู่ทั่วทั้งโครงการ / ไฟล์ดังนั้นจึงไม่ใช่โซลูชันที่ต้องการ ด้วยเวอร์ชัน no-capture / upvalue / etc ให้กำหนดฟังก์ชันที่อื่นและส่งต่อตัวชี้ไปยังฟังก์ชัน (ดูqsort () ) หากต้องการใช้ lambdas กับค่าที่จับได้ปริมาณและความซับซ้อนของรหัสที่คุณต้องเขียนเพิ่มขึ้นมากเท่าที่ฉันรู้ว่าไม่มีใครเคยเขียนรหัสเพื่อใช้วิธีการเขียนโปรแกรมนี้ใน C. ตรงข้ามกับภาษาที่ lambdas เป็นส่วนหนึ่งของภาษาและใช้โดยทั่วไปทุกที่
ความแตกต่างที่สำคัญระหว่าง C และ C ++ คือวิธีที่คุณสามารถขอให้ C ++ ดูแลสิ่งต่าง ๆให้คุณ แต่จากนั้นคุณจะไม่สามารถมองเห็นได้อีกต่อไปจากรหัสบรรทัดเดียวว่าคุณถามถึงมันมากแค่ไหน คำตอบจะกลายเป็น: ขึ้นอยู่กับรหัสอื่นทั้งหมด
ภาษาการเขียนโปรแกรมบางภาษานั้นยอดเยี่ยมสำหรับงานเฉพาะ แต่ที่ซึ่งโปรแกรมส่วนใหญ่ที่ใช้อยู่ในปัจจุบันทั่วโลกจะไม่สมเหตุสมผลหากตั้งโปรแกรมในภาษานั้น นั่นคือหากสามารถใช้ภาษาในการใช้งานโปรแกรมนั้นเพื่อเริ่มต้นซึ่งไม่ได้กำหนดไว้
ความเป็นไปไม่ได้ที่คุณจะได้รับข้อดีทางเทคนิคของการมีภาษาสากล? นั่นเป็นเรื่องไร้สาระทั้งหมด คุณทำได้มีภาษาสากลที่ครอบคลุมทุกภาษา ปัญหาส่วนใหญ่เป็นเรื่องในอดีต: ภาษาต่าง ๆ ถูกประดิษฐ์ขึ้นเพื่อทำสิ่งต่าง ๆ และใช้ในชุมชนต่าง ๆ หลายคนติดอยู่ เพิ่มการตั้งค่านั้น (vi! emacs! wait ฉันหมายถึง Java! C # รอฉันหมายถึง Microsoft โอเพ่นซอร์ส ฯลฯ ฯลฯ ) และการฝังอุบัติเหตุทั่วไปในอดีต ... ดูภาษาธรรมชาติในดินแดนเล็ก ๆ มวลชนเหมือนกับบางประเทศในยุโรปเพื่อดูว่าหัวข้อนี้จะบ้าคลั่งเพียงใด บางเมืองมีความภาคภูมิใจและความสุขของตนเองเป็นภาษาถิ่นที่พวกเขาพูดเท่านั้น ชุมชนประชาชาติและการเขียนโปรแกรมนั้นไม่แตกต่างกันและไม่มีชุมชนการเขียนโปรแกรมที่มีเหตุผลมากกว่านี้ ถ้าพวกเขาเป็นเช่นนั้นเราทุกคนจะพูดภาษาและโปรแกรมใน Universal Somethin 'Somethin' ...
เป็นความผิดพลาดที่จะคิดว่า "การรวมคุณสมบัติทั้งหมด" จะทำให้ภาษาดีขึ้น
คุณมีแนวโน้มที่จะจบลงด้วยความยุ่งเหยิงป่องซับซ้อนและไม่สามารถอ่านได้
การออกแบบภาษาที่ดีต้องมีตัวเลือกและการแลกเปลี่ยนที่จะทำ เนื้อหาที่ดีที่สุด / ปฏิวัติมากที่สุด / ประสบความสำเร็จมากที่สุดคือภาษาที่นำอะไรบางอย่างออกมาและเสนอทางเลือกที่ดีกว่าแทนที่จะเพิ่มสิ่งใหม่เข้ามาเช่น
มีการพูดคุยที่ยอดเยี่ยมในเรื่องนี้โดย Uncle Bob Martin - ภาษาโปรแกรมสุดท้าย
goto
มี แต่ฉันชอบคำตอบที่เหลือ สิ่งสำคัญที่ C ทำคือไม่ต้องสนใจว่าหน่วยความจำทุกอย่างอยู่ที่ไหนและอะไรอยู่ในช่วงเวลาใดและมันซ่อนตัวนับโปรแกรม (ในแง่ของที่อยู่ที่แม่นยำที่มันนั่งอยู่อีกครั้งคุณสามารถย้ายมันได้ ที่ระดับความแม่นยำเกือบประกอบกับ goto)
ไม่มีเครื่องมือใด ๆ ที่มีคุณสมบัติที่ดีที่สุดทั้งหมด ตัวอย่างเช่นคุณสมบัติที่ดีของ Javascript และ Scheme คือมันมีขนาดเล็กดังนั้นหากคุณเริ่มการบรรจุคุณลักษณะคุณได้สูญเสียคุณลักษณะนี้ไปแล้ว
Cobraยังคงมีความหวังในทิศทางของการมีคุณสมบัติที่ดีทั้งหมดจากภาษาอื่น ๆ :-)
เพราะถ้าคุณสร้างภาษาดังกล่าวมันจะเป็นอีกภาษาใหม่ คุณอาจได้รับฐานแฟนคลับขนาดใหญ่ แต่ภาษาอื่น ๆ ทั้งหมดจะยังคงมีอยู่
C ยังคงมีอยู่แม้ว่าจะมีการคิดค้นภาษาใหม่มากมาย
คุณสามารถพูดได้ว่าไพ ธ อนเป็นภาษาสากล แต่ก็มีทับทิมด้วย
เหตุผลที่มีหลายภาษาเป็นเพราะมีโปรแกรมเมอร์จำนวนมากและบางคนชอบที่จะสร้างภาษาใหม่
เหตุผลที่ไม่มีภาษาสากลเดียวที่ทุกคนเห็นพ้องต้องกันคือการเขียนโปรแกรมเป็นงานฝีมือไม่ได้ถูกกำหนดโดยสถาบันบางแห่งที่ทำให้การตัดสินใจทั้งหมด ทุกคนมีอิสระที่จะทำสิ่งที่พวกเขาต้องการ
นั่นเป็นสิ่งที่ดี
ด้วยทั้งหมดที่เขียนจนถึงมันยากที่จะเพิ่มเหตุผลใหม่มาก แต่ฉันจะโยนในไม่กี่
วิวัฒนาการ: มันไม่ได้เป็นเพียงระบบทางชีวภาพที่ได้รับการแนะนำการกลายพันธุ์และได้รับการแข่งขันเพื่อความอยู่รอดของผู้ที่เหมาะสมที่สุดสำหรับทรัพยากรและช่องทางในการเรียกตนเอง การแข่งขันเป็นสิ่งที่ดีและผลักดันสิ่งต่าง ๆ ไปข้างหน้า
ครบกำหนด: เราได้ทำภาษาคอมพิวเตอร์มาน้อยกว่าหนึ่งศตวรรษ เรายังไม่มีคำตอบเพราะเรายังไม่รู้คำถามทั้งหมด
แยกแหล่งกำเนิด: ไม่แน่ใจว่าคำที่เหมาะสมสำหรับเรื่องนี้ แต่ในโลกของพวกเขาเป็นระบบการเขียนจำนวนมากที่เริ่มต้นในภูมิภาคทางภูมิศาสตร์หลายแห่ง คิดเกี่ยวกับรูปแบบที่ถูกกำหนดบางส่วนโดยความต้องการของการแกะสลักลงในเม็ดดิน ลองนึกถึงสันสกฤตกรีกตัวอักษรฮิบรูโรมันตัวอักษรอาหรับ อักษรอียิปต์โบราณวิธีการเขียนภาษาจีนที่สวยงามด้วยสัญลักษณ์มากกว่า 6,000+ ที่ใช้ร่วมกันในหลายประเทศในเอเชียตะวันออก คิดว่าตัวอักษรผสมที่ทันสมัยมากขึ้นที่มีพื้นฐานการออกเสียงเช่น Cyrillic, Katakana และ Hirigana ฉันไม่ใช่นักภาษาศาสตร์ดังนั้นอย่าจุดประกายความไม่ถูกต้องอย่างรุนแรงเกินไป แต่เมื่อวัฒนธรรมทั่วโลกต้องการบางสิ่งบางอย่างพวกเขาจะสร้างมันขึ้นมาและทำให้มันเป็นของตัวเองโดยไม่จำเป็น ภาษาคอมพิวเตอร์เกิดขึ้นได้เมื่อมีการสื่อสารกันทั่วโลกและเหมือนกับระบบของจักรวรรดิและระบบเมตริก มาจากสถานที่ที่มีความคิดเป็นผู้นำที่มีประสิทธิภาพ แต่ภาษาการเขียนโปรแกรมให้บริการวัฒนธรรมที่แตกต่างกัน (บางส่วนเป็นวัฒนธรรมองค์กร) ดังนั้นพวกเขาจึงสะท้อนผู้คนที่สร้าง ภาษาคอมพิวเตอร์มาพร้อมกับมรดกทางวัฒนธรรมที่หล่อหลอมการออกแบบและการใช้งาน ในวัฒนธรรมเคอร์เนลระบบปฏิบัติการ C และ C ++ ไม่น่าจะถูกเลิกใช้ในเร็ว ๆ นี้สำหรับ Java (หรือวิธีอื่น ๆ ) เพราะพวกเขาอนุญาตให้สร้างรหัสเนทีฟการมีเพศสัมพันธ์อย่างใกล้ชิด / มีประสิทธิภาพกับฮาร์ดแวร์สำหรับการสร้างเลเยอร์นามธรรมที่เป็นฮาร์ดแวร์
การออกแบบการออกแบบ: ภาษาการเขียนโปรแกรมมาเกี่ยวกับการใช้กระบวนทัศน์ขององค์กรที่แตกต่างกัน COBOL และ Ada มาจากคณะกรรมการที่เป็นส่วนหนึ่งของ DOD ซึ่งมีลำดับขั้นมาก ถ้าฉันจำได้อย่างถูกต้อง C, C ++, Java และอาจมีคนอื่นอีกหลายคนที่มาจากนักออกแบบหนึ่งหรือไม่กี่คน Fred Brooks เปรียบเทียบผลลัพธ์ของคณะกรรมการเปรียบเทียบกับแนวทางที่มีวิสัยทัศน์ในรายงานการออกแบบ (http://www.youtube.com/watch?v=pC-DlX-PaF4) หากเรานั่งลงวันนี้เพื่อเลือก Da Vinci หรือคณะกรรมการเพื่อกำหนดภาษาโปรแกรมสากลเราจะรู้ว่าใครหรืออะไรโดยวิธีการที่มันควรจะออกแบบมา?
อาจจะเอียงเล็กน้อยในทั้งหมดนี้:
ภาษาคืออะไร เพื่อให้ง่ายอย่างน่าขันมันเป็นคำศัพท์ไวยากรณ์และความหมาย
สิ่งแรกที่คุณทำกับภาษาการเขียนโปรแกรมคืออะไร?
คุณกำหนดสิ่งต่าง ๆ - คลาสตัวแปรวิธีการ - คุณขยายคำศัพท์และความหมาย
ทำไม? ดังนั้นตอนนี้คุณสามารถพูดสิ่งต่าง ๆ ในนั้นคุณไม่สามารถพูดได้ก่อน
ชอบหรือไม่ว่าคุณได้ทำภาษาวัตถุประสงค์ใหม่
IMHO สิ่งที่มองหาในภาษาที่ใช้งานทั่วไปคือถ้ามันทำให้ง่ายต่อการสร้างภาษาที่มีวัตถุประสงค์พิเศษ
นอกเหนือจากอาร์กิวเมนต์มีดสวิสกองทัพ (ซึ่งมีจุด - มันยากที่จะออกแบบภาษาสเปกตรัมกว้างดีกว่าโดเมนเฉพาะโดเมน - แต่นั่นไม่ได้หมายความว่าภาษาดังกล่าวจะไม่ทั้ง เป็นไปได้และเป็นความคิดที่ดี) มีปัญหากับ "การรวมคุณสมบัติที่ดีที่สุด":
กล่าวโดยย่อการออกแบบภาษานั้นยากและซับซ้อนกว่านั้น แม้ว่าคุณอาจต้องการที่จะดูที่สกาล่า
Visual Batch เป็นความพยายามในการเขียนโปรแกรมภาษาที่ปรับแต่งได้ ลิงค์ด้านล่างแสดงวิธีที่อินเทอร์เฟซการเขียนโปรแกรมนี้สามารถปรับให้เหมาะกับความต้องการของภาษาโปรแกรมสากล
http://sourceforge.net/apps/phpbb/visualbatch/viewtopic.php?f=4&t=4
มีภาษาโปรแกรมสากล เรียกว่า "ภาษาเครื่อง" และทุกอย่างในภาษาคอมพิวเตอร์อื่น ๆ จะถูกเรียกใช้เป็นภาษาเครื่องในที่สุด
มันดูเหมือนอะไร? สตริงของ 0-9 และ AF
แต่มันก็เป็นหมาที่น่าใช้ ดังนั้นอลันประดิษฐ์ภาษาที่สามารถแปลเป็นภาษาเครื่องได้และเหมาะสมกว่าสิ่งที่อลันต้องการทำ Bill ประดิษฐ์ภาษาอื่นสำหรับสิ่งที่ Bill ต้องการทำ อีกไม่นานคุณจะได้รับ Cobol และ Fortran และ Lisp และ Java ทั้งหมดของพวกเขาเป็นเพียง vesions ที่เรียบง่ายของภาษาเครื่องง่ายต่อการเขียนโปรแกรมบางประเภท แต่ยากขึ้นหรือเป็นไปไม่ได้ที่จะเขียนโปรแกรมประเภทอื่น หนึ่งดีสำหรับการบัญชีอีกดีสำหรับควบคุมกระสวยอวกาศ
เพียงเพราะว่า,
ไม่มีคอมพิวเตอร์สากล
ไม่ใช่ plateform สากล
ไม่ใช่โปรแกรมเมอร์ยูนิเวอร์แซล
และไม่แม้แต่เป็นไคลเอนต์สากล
: P
เพียงแค่เราต้องการสิ่งที่แตกต่างสำหรับสิ่งที่แตกต่าง ;)
คำตอบส่วนใหญ่ที่นี่เน้นการใช้เครื่องมือที่ดีที่สุดสำหรับแต่ละปัญหา ฉันไม่เชื่อว่านี่เป็นเหตุผลที่ดีพอ
หากคุณมองหา บริษัท ขนาดใหญ่ บริษัท มักจะใช้ภาษาและเทคโนโลยีเพียงเล็กน้อย (หรือไม่กี่ภาษา) แม้ว่าโครงการเฉพาะจะมีภาษาที่ดีกว่า
สิ่งนี้เกิดขึ้นเนื่องจากประโยชน์ที่เกิดขึ้นจากมาตรฐานที่ได้รับการปรับปรุงการสนับสนุนที่ง่ายขึ้นการใช้รหัสร่วมกัน ฯลฯ นั้นมีขนาดใหญ่กว่า (เพิ่มมากขึ้น) จากนั้นเพิ่มมูลค่าของภาษาเฉพาะ
ฉันคิดว่า "เพราะคุณไม่ได้แกะสลักรูปปั้นด้วยดินสอ" คำตอบนั้นหายไป
ใครที่นี่อย่างแท้จริงเลือกภาษาก่อนทุกโครงการใหม่?
ความจริงก็คือเราจะต้องมีการเขียนโปรแกรมภาษาไม่กี่และโลกการเขียนโปรแกรมจะดีกว่าวิธีการที่คนจะมุ่งเน้นไปที่การทำภาษาสคริปต์ที่ดีกว่าแทนการถูกกระจายอยู่ทั่วหลาม / ทับทิม / Perl / younameit ตัวอย่างเช่น
C # ถูกโปรแกรมบน / สำหรับ windows (เอาล่ะมี Mono ใครที่นี่ใช้ C # ภายใต้แอพ Mono ทุกวัน?) และนั่นทำให้ผู้ใช้ซื้อ Windows7 / 8 และสร้างรายได้ให้กับ Microsoft
บริษัท อื่น ๆ ทำแบบเดียวกันจากนั้นโอเพนซอร์สก็รู้ดีกว่าจากนั้นก็อัจฉริยะอัจฉริยะเช่นกัน ... และเรามีภาษาที่มีลักษณะเหมือนกันมากมายมันเป็นเพียงธรรมชาติที่มีมนุษย์เป็นศูนย์กลาง
เราต้องมองเศรษฐศาสตร์เพื่อตอบคำถามนี้ หากบันทึกเงินทางธุรกิจเพื่อให้มีเพียงหนึ่งภาษาเราจะมีมัน พวกเขาจะสร้างมาตรฐานให้กับมันและกำหนดให้ทุกคนใช้มัน ภาษาอื่น ๆ จะอิดโรยในอาคารวิชาการที่เต็มไปด้วยฝุ่นและห้องใต้ดินของผู้ที่กระตือรือร้น สิ่งนี้ไม่ได้เกิดขึ้นดังนั้นพวกเขาจะต้องไม่เป็นแรงจูงใจด้านกำไรในภาษาสากลหรืออย่างใดอย่างหนึ่งจะมีการพัฒนาตามธรรมชาติในขณะนี้