ทำไมมีภาษาการเขียนโปรแกรมมากมาย
และอะไรที่กระตุ้นให้บางคนสร้างภาษาการเขียนโปรแกรมทั้งๆที่มีภาษาอื่นอยู่แล้ว?
ทำไมมีภาษาการเขียนโปรแกรมมากมาย
และอะไรที่กระตุ้นให้บางคนสร้างภาษาการเขียนโปรแกรมทั้งๆที่มีภาษาอื่นอยู่แล้ว?
คำตอบ:
ภาษาการเขียนโปรแกรมใหม่มักจะเรียนรู้จากภาษาที่มีอยู่และเพิ่มลบและรวมคุณสมบัติในรูปแบบใหม่ มีกระบวนทัศน์ที่แตกต่างกันไม่กี่อย่างเช่นการวางวัตถุและการทำงานและภาษาสมัยใหม่จำนวนมากพยายามผสมผสานคุณสมบัติจากทั้งสองอย่าง
นอกจากนี้ยังมีปัญหาใหม่ที่ต้องแก้ไขเช่นการเพิ่มขึ้นของ CPU แบบมัลติคอร์ วิธีแก้ปัญหาที่พบบ่อยที่สุดคือเธรด แต่ภาษาการเขียนโปรแกรมบางภาษาพยายามที่จะแก้ไขปัญหาที่เกิดขึ้นพร้อมกันในรูปแบบที่แตกต่างกันเช่นโมเดล Actor ดูErlang - ซอฟต์แวร์สำหรับโลกที่เกิดขึ้นพร้อมกัน
มันเป็นวงจร คุณเริ่มต้นภาษาใหม่และคุณมีอิสระที่จะหนีจากไวยากรณ์ที่ไม่ดีและตัวเลือกที่ไม่ดีจากรุ่นก่อนของคุณ ในเวอร์ชั่น 1 ภาษาดูดีเพราะไม่มีกระเป๋าใบนั้นและทำให้งานเสร็จ จากนั้นในเวอร์ชันที่ใหม่กว่าคุณจะเริ่มทดลองกับคุณลักษณะที่อาจไม่เป็นผลหรือคุณนำคุณลักษณะจากภาษาอื่น ๆ ที่ใหม่กว่าซึ่งทำให้ไวยากรณ์ของคุณเป็น kludge เล็กน้อย หลังจากนั้นอีกสองสามเวอร์ชันคุณจะรู้ว่าภาษาของคุณซับซ้อนกว่าภาษาที่คุณแทนที่ด้วยปัญหาด้านไวยากรณ์และกระเป๋าสัมภาระแบบเดิม และทันใดนั้นคุณก็รู้ว่าถ้าคุณสร้างภาษาใหม่คุณสามารถแก้ไขได้ทั้งหมด ...
ด้วยเหตุผลเดียวกับที่มีค้อนไขควงมือแฮนด์ฟอร์ดแจ็คแฮมเมอร์ชะแลงและเครื่องมืออื่น ๆ : ภาษาทุกภาษาไม่เหมาะสำหรับทุกงาน บางภาษามีการกำหนดเป้าหมายที่โดเมนปัญหาเฉพาะ: R เหมาะสำหรับการวิเคราะห์ทางสถิติโดยเฉพาะ C เหมาะอย่างยิ่งสำหรับการเขียนเคอร์เนลระบบปฏิบัติการ Haskell เหมาะอย่างยิ่งสำหรับการคำนวณทางคณิตศาสตร์หรือทางการเงิน Erlang เหมาะสำหรับการเขียนโปรแกรมพร้อมกันเป็นต้น
ด้วยเหตุผลเดียวกันกับที่เสื้อมีสีต่างกัน: บางคนชอบ "สไตล์" ของภาษาหนึ่งมากกว่าอีกภาษาหนึ่ง
และแน่นอนว่าโปรแกรมเมอร์จำนวนมากพบว่ามันสนุกที่จะประดิษฐ์ภาษาใหม่เพียงเพื่อดูว่าเกิดอะไรขึ้นหรืออาจเป็นเพราะพวกเขามีความรู้เกี่ยวกับภาษาและต้องการที่จะเกาหรือลองคิดบางอย่าง
เพราะพวกเขาทั้งหมดดูด (ทางเดียวหรืออื่น ๆ )
ตอนนี้เราได้สร้างประมาณ 5000 ภาษาเพื่ออธิบายปัญหาที่เป็นธรรมชาติและไม่มีโปรแกรมใดที่สามารถเขียนโปรแกรมได้ (ตัวอย่างเช่น "ภาษาอังกฤษ")
จนกว่าจะมีคนหาวิธีในการสร้างภาษาการเขียนโปรแกรมที่สามารถแสดงสิ่งที่คุณสามารถแสดงในประโยคในภาษาธรรมชาติพวกเขาจะยังคงมา
เห็นได้ชัดว่าแรงจูงใจที่สำคัญอย่างหนึ่งสำหรับการสร้างภาษาใหม่คือการบรรลุสิ่งที่ดีกว่าภาษาที่มีอยู่แล้ว และเนื่องจากมีห้องพักสำหรับการปรับปรุงอยู่เสมอจะมีภาษาใหม่ ๆ อยู่เสมอ
ผลประโยชน์เชิงพาณิชย์เป็นอีกเหตุผลที่สำคัญ ฉันเชื่อว่ามันเป็นสิ่งสำคัญเช่น Microsoft ที่พวกเขาสามารถเสนอภาษาสำหรับทุกความต้องการดังนั้น บริษัท และนักพัฒนาซอฟต์แวร์จึงชอบแพลตฟอร์มของพวกเขา
รหัสมรดก หากคุณเริ่มภาษาใหม่คุณไม่จำเป็นต้องฟัง / พิจารณาเรื่องร้องเรียนทั้งหมดเมื่อคุณเปลี่ยนภาษาเดิม แม้ว่าทุกคนยอมรับว่าการใช้งานใหม่นั้นดีกว่า แต่ก็ไม่สามารถทำลายรหัสเดิมได้ และมีรหัสเก่าจำนวนมากออกมี
เพราะมันสนุกที่จะสร้างภาษาใหม่แม้ว่าพวกเขาจะไม่ได้ใช้จริง
ภาษาโปรแกรมลึกลับ (บางครั้งย่อมาจาก esolang) เป็นภาษาโปรแกรมที่ออกแบบมาเพื่อทดสอบขอบเขตของการออกแบบภาษาโปรแกรมคอมพิวเตอร์เป็นหลักฐานของแนวคิดหรือเป็นเรื่องตลก
การสร้างภาษาการเขียนโปรแกรมค่อนข้างสนุก ใกล้เคียงกับงานสร้างสรรค์ที่บริสุทธิ์เนื่องจากคุณไม่ได้ จำกัด ข้อกำหนดก่อนหน้า ไม่ใช่เรื่องยากที่จะใช้งานอีกต่อไปเนื่องจากคุณสามารถคอมไพล์ C และคอมไพล์โค้ด C เพื่อประสิทธิภาพที่เพียงพอหากคุณเขียนคอมไพเลอร์ตั้งแต่แรก
แน่นอนว่าพวกเราส่วนใหญ่มีความคิดที่ดีน้อยกว่าที่เราคิดไว้ดังนั้นพวกเขามักจะจบลงด้วยความผิดหวังหรือไม่ได้รับความรักจากใครอื่นนอกจากนักออกแบบดั้งเดิม
คิดถึงภาษาการเขียนโปรแกรมที่คุณรู้จัก คุณสามารถหาหลายสิ่งที่คุณไม่ชอบได้อย่างง่ายดายใช่มั้ย คุณคงมีความคิดว่าจะแก้ไขอย่างไร ด้วยแรงผลักดันที่น้อยกว่าสมมติว่าคุณรู้มากเกี่ยวกับการสร้างคอมไพเลอร์ (และผู้คนมากมาย) คุณอาจเริ่มออกแบบและใช้งานของคุณเอง
คำตอบสั้น ๆ อย่างรวดเร็ว
การคิดค้นวงล้อ ... แนวโน้มปัจจุบันคืออะไร ...
คำตอบยาวน่าเบื่อ
หลายคนลืมว่า "อีกภาษาใหม่ที่คล้ายกันสำหรับโปรแกรมเมอร์เก่า" คือ "ภาษาใหม่ธรรมดาสำหรับโปรแกรมเมอร์ใหม่"
ฉันหมายความว่าอย่างไร
สำหรับโปรแกรมเมอร์ "หลายปี" Java หรือ C # อาจเป็นภาษาโปรแกรมเพิ่มเติมสำหรับ Cobol ที่มีอยู่ (OO / ขั้นตอน) พื้นฐาน, C / C ++ ในขณะที่สำหรับโปรแกรมเมอร์ "ใหม่", Java หรือ C # เป็นภาษาใหม่ในขณะที่ Cobol (OO / ขั้นตอน) พื้นฐาน, C / C ++ ไม่มีอยู่สำหรับพวกเขาดังนั้นการปรับแต่งวงล้อให้กลายเป็นเรื่องปกติ ...
และหากมีกระแสความนิยมด้านเทคโนโลยีใหม่ ๆ ผู้คนอาจสร้างภาษาการเขียนโปรแกรมใหม่ตามแนวโน้มนั้นเช่น ecmascript / javascript สำหรับเว็บและการเขียนโปรแกรมเชิงหน้าที่ ...
ไชโย
ภาษาการเขียนโปรแกรมใหม่ถูกสร้างขึ้นด้วยเหตุผลที่แตกต่างกันส่วนใหญ่เป็นเพราะกระบวนทัศน์การเขียนโปรแกรมใหม่หรือเนื่องจากความก้าวหน้าในฮาร์ดแวร์ของคนสร้างภาษาใหม่เพื่อใช้ประโยชน์จากคุณสมบัติของฮาร์ดแวร์ใหม่เช่นมัลติทาสก์ ฯลฯ
ในกรณีของฉันฉันมักจะสร้างคอมไพเลอร์ขนาดเล็ก (ด้วยภาษาการเขียนโปรแกรมใหม่) ด้วยเหตุผลพิเศษ ถ้าฉันแบ่งเกมออกเป็นหลายส่วนและฉันเชื่อว่าภาษาการเขียนโปรแกรมที่สร้างขึ้นมาเพื่อการพัฒนาเกมโดยเฉพาะจะส่งผลให้โค้ดเร็วขึ้นและพัฒนาได้เร็วขึ้นดังนั้นฉันจึงสร้างมันขึ้นมา และในที่สุดก็ปรากฎว่าสามารถใช้สำหรับการเขียนโปรแกรมวัตถุประสงค์ทั่วไปอื่น ๆ
ฉันคิดว่าคนส่วนใหญ่ที่สร้างภาษาการเขียนโปรแกรมมีวัตถุประสงค์เฉพาะในใจมีผู้ที่สร้างพวกเขาเพื่อวัตถุประสงค์ทั่วไปตั้งแต่ต้น แต่ส่วนใหญ่ไม่ใช่
โดยวิธีการที่ฉันคิดว่ามีวิธีการเขียนโปรแกรมภาษามากเกินไป แต่หลายร้อยคนใหม่จะออกมาเสมอ บางส่วนของความสนุกบางส่วนของวัตถุประสงค์เฉพาะเป็นโครงการโรงเรียนหรือด้วยเหตุผลหลายร้อย และไม่ช้าก็เร็วอันใหม่จะได้รับความนิยม มันจะไม่จบ
ด้วยเหตุผลเดียวกันมี <สิ่งใด> จำนวนมากและเราสร้าง <สิ่งใดก็ตาม> ใหม่ต่อไป
ยกตัวอย่างเช่นมีกรอบ PHP MVC โหล แต่คนจะสร้างใหม่เพื่อเติมเต็มความต้องการเฉพาะเพื่อหลีกเลี่ยงการพึ่งพาทีมอื่นหรือเพื่อลองและสร้างสิ่งที่ดีกว่า สิ่งนี้ถือเป็นจริงสำหรับเครื่องมือหรือแอปพลิเคชันทุกประเภท
มันเป็นสิ่งที่ดีมากและเป็นประโยชน์สำหรับทุกคนในความคิดของฉัน
มหาวิทยาลัยมีส่วนร่วมในการเขียนโปรแกรมภาษาจำนวนมากดังนั้น บริษัท ขนาดใหญ่เช่น Ericsson (Erlang = ภาษาอีริคสัน), Bell Labs (ภาษา B และ C), Google (ใช้ภาษาเมื่อสองสามเดือนก่อน) หลายคนที่ถูกเขียนเป็นส่วนหนึ่งของการวิจัยมหาวิทยาลัยไม่ได้ใช้มากนัก มีข้อยกเว้นที่น่าสังเกตอยู่สองสามข้อ ฉันคิดว่าการเขียนภาษา / คอมไพเลอร์ของคุณเองเป็นหัวข้อที่ดีสำหรับวิทยานิพนธ์ระดับปริญญาเอกของผู้ที่เรียนทฤษฎี CS หรือสาขาวิชาที่เกี่ยวข้อง ฉันคิดว่า Python เป็นหนึ่งในภาษาแรก ๆ ที่เกิดจากความร่วมมือออนไลน์ของโปรแกรมเมอร์หลาย ๆ คนในแนวคิดเดียว
มีสาเหตุบางประการส่วนใหญ่เป็นเพราะคนคิดว่าสิ่งที่มีอยู่ไม่ได้ทำให้ง่ายต่อการแก้ไขปัญหาบางอย่าง บางคนก็เพื่อความสนุกสนานหรือเพื่อความสนใจด้านวิชาการ
ฉันคิดว่ามีข้อโต้แย้งที่ชัดเจนว่าปัญหาของวิธีการออกแบบภาษาที่สมบูรณ์แบบยังไม่ได้รับการแก้ไข (และอาจไม่เป็นเช่นนั้น) ดังนั้นตราบใดที่ผู้คนมีความคิดใหม่เกี่ยวกับสิ่งที่จะทำให้ภาษาที่ยอดเยี่ยมคนจะพยายามต่อไป ความพยายามเหล่านั้นบางส่วนจะแมปพื้นที่ใหม่ที่น่าสนใจเช่น Erlang และบางอย่างจะล้มเหลว แต่ตราบใดที่มีบางสิ่งเรียนรู้จากฟลอพที่ตกลง
เช่นเดียวกับที่ระบุไว้ก่อนหน้านี้ภาษาพยายามกำหนดเป้าหมายงานเฉพาะและภาษาใหม่อาจกำหนดเป้าหมายไปยังพื้นที่ใหม่ ภาษาเหล่านี้สามารถใช้คุณสมบัติจากภาษาอื่นที่อยู่ในขณะนี้
อีกเหตุผลสำหรับภาษาใหม่คือการพยายามที่จะรวมงานที่แตกต่างกันและเป็นภาษาที่เลือกสำหรับความต้องการที่แตกต่างกัน ภาษาเหล่านี้บางภาษาพยายามที่จะครอบคลุมทุกภาษาที่คุณมักจะใช้ไม่ว่าคุณจะต้องการอะไรก็ตาม
ฉันเรียนรู้ในชั้นเรียนภาษาการเขียนโปรแกรมซึ่งภาษาส่วนใหญ่คิดค้นขึ้นเพื่อเกา ภาษาส่วนใหญ่ถูกคิดค้นเพื่อให้สามารถแสดงชุดของอัลกอริทึมที่ดีกว่า ตัวอย่างเช่นภาษาที่ใช้งานได้ถูกคิดค้นขึ้นเพื่อให้อัลกอริธึมแบบเรียกซ้ำมีพื้นที่แสดงออกที่มากกว่า
การถามว่าทำไมมีหลายภาษาจึงเหมือนถามว่าทำไม C ++ 0x :)
ยิ่งคุณมีภาษามากเท่าไหร่คุณก็ยิ่งมีความเป็นตัวตนมากขึ้นเท่านั้นนี่เป็นความจริงทั้งในการเขียนโปรแกรมและภาษาธรรมชาติ!