การเรียนรู้ภาษาการเขียนโปรแกรมออกแบบมาโดยเฉพาะสำหรับ บริษัท นั้น [ปิด]


10

ทำไมบางคนถึงพัฒนาภาษาของตัวเองเพื่อใช้ภายใน บริษัท นั้นเมื่อคุณมีภาษาอื่น ๆ ของ XY ที่สามารถช่วยคุณในการใช้ห้องสมุด, ตรรกะและอื่น ๆ ได้? มันง่ายกว่าหรือไม่ที่จะไปกับสิ่งอื่น ๆ แทนที่จะพัฒนาภาษาของคุณเอง?


6
ภาษา "ใหม่" ค่อนข้างมากที่เรามีอยู่ใน wild สามารถใช้ไลบรารีที่ออกแบบมาสำหรับภาษา "เก่า": เช่น C ++ สามารถใช้ C libs, Scala Kotlin และอื่น ๆ สามารถใช้ lib ใด ๆ ที่ทำงานบน JVM, typescript สามารถใช้ JS libs ดังนั้นการมีภาษาใหม่ไม่ได้หมายความว่าการสนับสนุน lib จะ
ล้มเหลว

3
ทำไมคุณถึงสร้าง dragster เพื่อไปแข่งรถแข่งกับรถสต็อก?
candied_orange

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

4
Erlang ก็เกิดในลักษณะนี้: ถ้าฉันไม่ผิดมันถูกพัฒนาขึ้นครั้งแรกที่ Ericsson เพื่อการใช้ภายใน
Giorgio

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

คำตอบ:


25

มันง่ายกว่าที่จะเข้าใจเมื่อคุณรู้ว่ามันมักจะเป็นผลมาจากกระบวนการที่ยาวนานและไม่ใช่ใครบางคนเพียงแค่พูดว่า "เราต้องการสร้างภาษาใหม่"

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

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

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

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

มีไม่กี่ภาษาที่พัฒนาเช่นนี้ที่จะไม่ผูกพันกับ บริษัท เฉพาะไอ JavaScript ไอ PHP ไอ


10
คำตอบที่ยอดเยี่ยมและในขณะที่ JavaScript มีปัญหาฉันไม่คิดว่ามันยุติธรรมที่จะใส่ไว้ในประโยคเดียวกับ PHP นั่นก็เหมือนกับการพูดว่า "เราต้องเตะบิลและเท็ดออกจากบ้านเราพวกเขาเป็นอาชญากร!" แต่ Bill (JavaScript) เป็น jaywalker และ Ted (PHP) เป็นฆาตกรต่อเนื่อง
TheCatWhisperer

12
@TheCatWhisperer ฉันไม่เห็นด้วย JavaScript ไม่ดีหรือแย่กว่า PHP เพราะคุณต้องใช้ (หรือเปลี่ยนเป็น) JavaScript ในขณะที่ PHP สามารถละเว้นได้อย่างปลอดภัย
ร่าเริง

2
นั่นคือจุดที่ถูกต้องเป็นส่วนใหญ่
TheCatWhisperer

1
@Euphoric ให้พวกเรารอWASMบางทีฉากนั้นจะเปลี่ยนไปแล้ว ...
Kroltan

@Kroltan +1 สำหรับ WASM!
CraigR8806

15

มันง่ายกว่าหรือไม่ที่จะไปกับสิ่งอื่น ๆ แทนที่จะพัฒนาภาษาของคุณเอง?

แน่นอน แต่เพื่อให้เป็นไปอย่างไร้สาระพวกเราทุกคนจะเขียนทุกอย่างในที่ประชุมหากไม่มีใครพัฒนาภาษาใหม่

บางครั้งไม่มีการไหล มีภาษาใหม่เกิดขึ้นเพราะบางคนมีอาการคันที่จะเกาไม่ว่าจะเป็นงานอดิเรกภาษาที่เพียงแค่ต้องการคิดค้นสิ่งใหม่หรือ บริษัท ที่มีความต้องการ unmet โดยสิ่งที่มีอยู่แล้ว

นี่คือสิ่งที่เกิดขึ้นเมื่อ John Backus เสนอระบบการแปลสูตรทางคณิตศาสตร์ของ IBMในปี 1953 เขาต้องการวิธีที่ง่ายขึ้นสำหรับผู้ใช้ทางวิทยาศาสตร์ในการระบุสูตรทางคณิตศาสตร์มากกว่าการเขียนลงในชุดประกอบ ผลิตภัณฑ์ที่เป็นกรรมสิทธิ์นั้นกลายเป็นภาษาการเขียนโปรแกรมแรกที่ไม่ได้ประกอบและคุณรู้ว่ามันเป็น Fortran

ที่ซึ่ง Fortran เป็นคนแรกที่ไปเส้นทางนี้ Erlang ก็เป็นเด็กโปสเตอร์ อีริคสันต้องการปรับปรุงวิธีการพัฒนาซอฟแวร์สำหรับสวิตช์โทรศัพท์และคิดค้นภาษาสำหรับการสร้างต้นแบบด้วยคุณสมบัติเฉพาะตามที่พวกเขาต้องการ เมื่อฉันสำรวจมันครั้งแรก Takeaway ของฉันคือมันได้รับการพัฒนาโดยคนที่มีปัญหาจริงในการแก้ปัญหาที่จะไม่ได้รับการบริการอย่างดีจากภาษาอื่น ๆ ที่มีในปี 1986 Erlang ยังคงเป็นผลิตภัณฑ์ที่เป็นกรรมสิทธิ์ของคุณ เพื่อนร่วมงานพบจนกว่าจะมีที่มาเปิดมากกว่าหนึ่งทศวรรษต่อมาและตอนนี้มันเป็นภาษาหลัก

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

ฉันใช้เวลาหนึ่งทศวรรษระหว่างปี 2003 และ 2013 ที่ทำงานให้กับ บริษัท ที่ใช้สภาพแวดล้อมเฉพาะทางอุตสาหกรรมอย่างกว้างขวางซึ่งรวมถึงภาษาของตัวเองซึ่งมีรากฐานมาตั้งแต่ปลายปี 1970 ในขณะที่บางภาษาที่ใหม่กว่าอาจมีการทดแทนที่เหมาะสมกว่า (และตะขอสำหรับพวกเขาได้รับการต่อกิ่งเมื่อเวลาผ่านไป) อุตสาหกรรมที่มีการลงทุนขนาดใหญ่พอในนั้นและรหัสขนาดใหญ่ของการพิสูจน์ที่ดีที่มีเพียงกรณีธุรกิจที่ไม่ดี สำหรับการเปลี่ยนไปใช้อย่างอื่น


-1

ฉันเคยเห็นสิ่งนี้มาก่อน มันไม่เคยทำงานได้ดี บางคนมีความซับซ้อน "ไม่ได้คิดค้นที่นี่" มันมักจะทำให้ บริษัท วิ่งวนรอบพวงมาลัย

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

C / C ++ ใช้สำหรับเขียนระบบปฏิบัติการเช่นเดียวกับพวกเขาทั้งหมด และยังมีคนคิดว่าพวกเขาต้องการอะไรที่แตกต่าง


7
เห็นได้ชัดว่าคุณไม่เคยเห็น Kotlin หรือ Javascript หรือ C # สำหรับเรื่องนั้น Fog Creek Software ใช้ภาษาการเขียนโปรแกรมของตัวเองชื่อ Wasabi (บนพื้นฐานของ VB) เป็นเวลาหลายปี (แม้ว่าจะยอมรับว่าหนี้ทางเทคนิคในที่สุดก็ติดอยู่กับพวกเขา ) ดังนั้นจึงมีบางกรณีที่มันใช้งานได้
Robert Harvey

1
เท่าที่ฉันจำได้ C # เกิดมาหลังจาก Microsoft พยายามสร้างการใช้งาน Java ที่ไม่สอดคล้องกับคำสั่งนั้นถูกฟ้องโดย Sun และเสียไป cnet.com/news/sun-microsoft-settle-java-suitเนื่องจากพวกเขาไม่สามารถเรียกมันว่า Java ได้อีกต่อไปพวกเขาพัฒนาภาษาของตัวเองซึ่งในขั้นต้นคล้ายกับ Java มาก
Giorgio

1
"ภาษาใหม่นี้อาจหยุดอยู่ตลอดเวลา" - หากการออกแบบภาษาของคุณอนุญาตให้คุณหลีกเลี่ยงข้อบกพร่องของแอพพลิเคชั่นในชั้นเรียนทั้งหมดนี่อาจเป็นการแลกเปลี่ยนที่ยอมรับได้
Eric

16
เคยได้ยินเรื่อง C ไหม มีรายงานว่ามีการพัฒนาภายในองค์กรสำหรับระบบปฏิบัติการเดียวบนคอมพิวเตอร์เครื่องเดียว เหตุใด K&R จึงไม่ใช้สิ่งที่พิสูจน์ว่าใช้สำหรับการเขียนระบบปฏิบัติการเช่น PL / 1, BCPL หรือ Algol 68
idrougge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.