ทำไม Python ไม่ใช่ Lua [ปิด]


45

ทำไม Python ได้รับการสนับสนุนโดย google และได้รับความนิยมอย่างรวดเร็วและ Lua ไม่ได้

คุณรู้ไหมว่าทำไม Lua จึงอยู่ในพื้นหลัง


3
Lua ชอบที่จะแกล้งทำเป็นอาเรย์และพจนานุกรมเป็นสิ่งเดียวกันและมีความทะเยอทะยานที่ไม่เพียง แต่จะให้ผลลัพธ์ที่ผิดเท่านั้น แต่ยังส่งผลที่ไม่ต่อเนื่องอีกด้วย ฉันไม่รู้ว่าอะไรคือเหตุผลของ Google แต่นี่เป็นเหตุผลเพียงพอที่ฉันจะไม่ชอบมัน
Steve314

4
สำหรับฉัน Python ง่ายต่อการเขียนโค้ดสนุกกว่าและมีคุณสมบัติเพิ่มเติม ตัวอย่างจากหัวของฉัน: เครื่องปั่นไฟมาเป็นพลเมืองชั้นหนึ่งใน Python ( yield) และ Lua ต้องการการติดตั้งที่ยุ่งยากมากขึ้น การจัดทำดัชนีรายการของ Python เป็นข้อดี[::]อย่างมาก Python มีคลาสและการสืบทอดที่ถูกต้อง Lua เร็วขึ้นใช่ แต่ฉันชอบเขียนโค้ด Go เพื่อใช้ใน Pythonเมื่อความเร็วมีความสำคัญ
Frank Bryce

ฉันรัก LuaJIT แต่ส่วนใหญ่ของความรักของฉันคือความง่ายในการฝังความเร็วและรอยเท้าที่เล็ก ถ้าฉันต้องเขียนโปรแกรมบางอย่างตลอดทั้งวันฉันอาจเอนไปทาง Python มากขึ้น

@ FrankBryce คุณได้รับมันย้อนหลัง เครื่องกำเนิดไฟฟ้าของไพ ธ อนเป็นเซตย่อยของ coroutines ของ Lua ดูinf.puc-rio.br/~roberto/docs/MCC15-04.pdf
capr

คำตอบ:


37

ฉันรัก Lua จริง ๆ แต่มันมีข้อ จำกัด จริง ๆ และอย่างที่คนอื่น ๆ พูดถึงพวกเขาส่วนใหญ่มาจากต้นกำเนิดของ Lua ในฐานะภาษาไฟล์การตั้งค่าและต่อมาเป็นภาษาสคริปต์ฝังตัว

เนื่องจากเป้าหมายในการรักษา Lua ให้เล็กจึงมีเพียงห้องสมุดมาตรฐานขนาดเล็กมากที่มีฟังก์ชั่นการทำงานของกระดูกเปล่าเท่านั้น

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

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

อย่าเข้าใจฉันผิด ฉันชอบ Lua ด้วยเหตุผลเดียวกับที่ฉันเพิ่งทำรายการ


54

ง่าย: Lua มีมากขึ้น "ช่อง" วัตถุประสงค์กว่างูหลาม

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

ลัวะมีการกำหนดเป้าหมายโดยสมบูรณ์เพื่อเป็นภาษาสคริปต์ฝังตัว มันมีจุดประสงค์เริ่มต้นแม้ว่าจะใช้ในบริบทอื่น ๆ ในปัจจุบันเช่นระบบสร้าง จะถูกฝังในซอฟต์แวร์และเพื่อให้สามารถใช้งานฟังก์ชันและโครงสร้างสคริปต์เฉพาะโดเมนได้ง่าย มันเรียบง่ายมากจนสามารถใช้กับฮาร์ดแวร์ที่ จำกัด ได้จริง ๆ (ฉันใช้ Lua บน NintendoDS) มันมีน้ำหนักเบาใช้งานง่าย FAST และเป็นภาษาที่เรียบง่าย แต่คิดว่าจะขยายออกไปมาก ๆ การวางแนววัตถุ) พร้อมใช้งาน มันเป็นอุปกรณ์พกพา (ANSI C) ที่คุณสามารถใช้กับฮาร์ดแวร์ฝังตัวใด ๆ ที่มีจำนวนหน่วยความจำที่เหมาะสมสำหรับซอฟต์แวร์ฝังตัวที่ทันสมัย ​​(ถ้าฉันจำได้ดีค่าเริ่มต้น lua vm อยู่ที่ประมาณ 400ko และแทบจะไม่เติบโตเลยถ้าคุณไม่สร้างวัตถุ ... )

ดังนั้นLua ถูกนำมาใช้ครั้งแรกในบริบทที่คุณจำเป็นต้องฝังภาษาสคริปต์สำหรับงานของคุณ

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

เป็นเพียงการใช้ Python ในบริบทมากกว่า Lua เท่าที่ฉันรู้นอกเหนือจาก Android (ที่ให้การสนับสนุนภาษาจาวาและภาษาพื้นเมือง) Google ไม่ใช่ บริษัท ซอฟต์แวร์แบบฝังดังนั้นพวกเขาจึงไม่ต้องการ Lua ทุกที่ในขณะที่ Python มีประโยชน์สำหรับสิ่งที่พวกเขาทำ (เว็บสร้างระบบ การสื่อสารเว็บและเว็บ)

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

สำหรับการเปรียบเทียบสุดขีดบางภาษาที่กำหนดเป้าหมายการฝังและพยายามที่จะมีซินแท็กซ์ที่สมบูรณ์กว่า Lua แบบมินิมัลลิสต์และแข่งขันกับประสิทธิภาพ: ChaiScript, AngelScript, Io ...

โดยวิธีการที่ฉันได้เห็นระบบการสร้างใหม่เช่น PreMake หรือ Bam ใช้ Lua เป็นภาษาไฟล์สร้าง แนวคิดก็คือมันมีน้ำหนักเบาและเป็นที่รู้จักกันดีจากผู้พัฒนาเกม (การสร้างระบบในการพัฒนาเกมเป็นปัญหาสำคัญ) ดังนั้นอาจเป็นอีกโดเมนหนึ่งที่ Lua อาจชื่นชมมากขึ้น มันใช้งานง่ายกว่า CMake syntax แน่นอน ....


4
ฉันคิดว่าเป้าหมายของ Lua ในฐานะภาษาที่ใช้ในการฝังอาจเป็นตัวช่วยสำคัญ แต่ถึงกระนั้นฉันเชื่อว่า "ความนิยม" ของภาษามีน้อยกว่าด้วยการออกแบบที่แท้จริงหรือความสามารถของภาษาเองและอีกเรื่องของ "เวลาที่ถูกที่ถูกต้อง" (ดูตัวอย่าง PHP)
Dean Harding

ฉันคิดว่าภาษาที่กำหนดเป้าหมายตามวัตถุประสงค์เฉพาะย่อมดึงดูดผู้ใช้โดยเฉพาะทำให้ผู้ชมมีความยับยั้งชั่งใจมากกว่าภาษาที่ใช้ทั่วไป การมีผู้ฟังน้อยกว่าภาษาที่ใช้ทั่วไปมีผลกระทบโดยตรงต่อจำนวนคนที่จะพูดถึง นอกเหนือจากนั้นเป้าหมายเฉพาะหมายถึงคุณสมบัติเฉพาะ ดังนั้นจึงไม่ดีสำหรับทุกสถานการณ์ ตัวอย่างเช่นที่นี่ lua เพียงอย่างเดียวไม่ใช่ภาษา gui-programming ที่ดีมาก มันต้องมีการเพิ่มเติมบางส่วนจะมีประโยชน์จริงๆ
Klaim

ที่กล่าวว่าฉันเห็นด้วยอย่างยิ่ง: ถ้า php ไม่ได้ใช้สำหรับเขตข้อมูลที่ใช้กันอย่างแพร่หลายเช่นการพัฒนาเว็บไซต์
Klaim

Lua ส่วนใหญ่จะใช้เป็นภาษาที่ฝังตัว แต่เป็นภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปเช่นคุณสามารถสร้างสคริปต์ CGI ด้วย mod_lua ฉันสามารถเปลี่ยนคำถามของฉันเป็นเหตุให้ลัวะอยู่ในฐานะภาษาที่ฝังตัวได้?
BenjaminB

เพราะมันเป็นจุดกำเนิด คุณสามารถใช้มันเป็นภาษาที่มีวัตถุประสงค์ทั่วไปได้เช่นคุณสามารถใช้ php ได้เช่นกันสำหรับวัตถุประสงค์ทั่วไป คุณยังสามารถใช้ Perl เพื่อทำเช่นเดียวกัน แต่ต้นกำเนิดของพวกเขาทำให้การวางแนวของพวกเขา อีกครั้งวัตถุประสงค์เริ่มต้นของพวกเขาทำให้พวกเขามีประโยชน์น้อยกว่าภาษาอื่น ๆ สำหรับภาษาที่ใช้งานทั่วไป Lua ขาดภาษาฟีเจอร์บางอย่างที่จะใช้งานง่ายด้วยระบบ GUI สำหรับตัวอย่างเช่นการวางแนววัตถุ (ที่คุณสามารถเพิ่มได้อย่างง่ายดาย แต่ไม่ใช่ภาษาท้องถิ่น) ตรวจสอบให้แน่ใจว่าคุณเห็นความแตกต่างระหว่างภาษาที่สร้างขึ้นเพื่อวัตถุประสงค์เฉพาะและภาษาทั่วไป พวกเขาทั้งหมดมีข้อ จำกัด อยู่แล้ว
Klaim

4

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

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