ภาษาที่ใช้งานได้ดีเพียงใดใน Android


10

นี่เป็นกรณีพิเศษของคำถามนี้ที่ฉันรู้สึกว่าเกี่ยวข้องโดยเฉพาะ

ฉันกำลังเล่นเกมสำหรับ Android และฉันวางแผนที่จะใช้ Scala กับ libgdx ฉันวางแผนที่จะสร้างเกมนักแสดง แต่ไม่จำเป็นว่าจะต้องเป็นเกมที่มีประสิทธิภาพมากเกินไป ฉันเห็นเอกสารของ libgdx เกี่ยวกับ Garbage Collectionและสิ่งนี้ทำให้ฉันคิดว่า:

  1. ฟังก์ชั่นการเขียนโปรแกรมหมายถึงวัตถุที่ไม่เปลี่ยนรูปจำนวนมาก
  2. ดังนั้นการกลายพันธุ์วัตถุต้องสร้างวัตถุใหม่
  3. ดังนั้นวัตถุจำนวนมากได้รับการรวบรวมขยะซึ่งทำให้ประสิทธิภาพลดลง

นี่เป็นปัญหาที่ผ่านไม่ได้หรือไม่ มีปัญหาที่สำคัญอื่น ๆ เกี่ยวกับสไตล์การใช้งานบน Android หรือไม่?

คำตอบ:


3

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


2

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

ภาษาที่ใช้งานได้ดีที่สุดสำหรับ Android จะยังคงให้ประสบการณ์การพัฒนาที่แย่กว่า Java หรือ C ++ ไม่ใช่เพราะภาษาเหล่านั้นเป็นภาษาที่ดีกว่า แต่เป็นเพราะพวกเขาดีกว่าสำหรับงานเฉพาะด้าน เครื่องมือที่เหมาะสมสำหรับงานและทุกสิ่ง

สิ่งนี้เป็นจริงบนมือถือพีซีคอนโซลและอื่น ๆ ไม่มีใครใช้ภาษาที่ใช้งานได้สำหรับเกม Naughty Dog ใช้ LISP ในการเขียนสคริปต์แต่ไม่ใช่รหัสเกมหลัก พวกเขาไม่สามารถ มันจะไม่ทำงานถ้าพวกเขาพยายาม

คนส่วนใหญ่ที่ใกล้เคียงที่สุดคือ shaders ซึ่งใช้งานได้ในบางวิธี แต่เขียนด้วยภาษาที่มีขั้นตอนขั้นสูงเช่น HLSL หรือ GLSL


> สำหรับการเล่นเกม? หลีกเลี่ยงภาษาที่ใช้งานได้ น่าสนใจว่าการแข่งขัน Google AI Challenge ปี 2010 นั้นได้รับรางวัลจาก Lisp bot อาจจะไม่ดีสำหรับการเขียนเกม แต่มันก็ค่อนข้างมีประโยชน์เมื่อพูดถึงการเล่นเกม semanticweb.com/…

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

2
For gaming? Avoid functional languages. Their entire paradigm fails to mesh well with games.ที่จริงแล้วฉันได้อ่านบทความบางส่วนจากผู้พัฒนาเกมรายละเอียดสูงแสดงให้เห็นถึงความตั้งใจในการเขียนโปรแกรมการทำงาน มีอยู่คนหนึ่งโดย Tim Sweeney scribd.com/doc/5687/ …และ John Carmack ดูเหมือนจะมีความตั้งใจอย่างแข็งขันในการประเมินภาษาที่ใช้งานได้และกำลังทำท่าของ Wolfenstein 3d ใน Haskell, tinyurl.com/cnzx57u
James McMahon

คุณมีการอ้างอิงสำหรับ Naughty Dog เพียงใช้ Lisp สำหรับการเขียนสคริปต์ด้วยหรือไม่ ฉันรู้สึกว่าพวกเขามีสำเนียงท้องถิ่นของ Lisp ด้วยคอมไพเลอร์ที่กำหนดเองที่กำหนดเป้าหมายฮาร์ดแวร์ PS2 และพวกเขาได้เขียนซีรี่ส์ Jax และ Dexter เป็นส่วนใหญ่ แก้ไข: ไม่เป็นไรพบ, gamasutra.com/view/feature/131394/ … Practically all of the run-time code (approximately half a million lines of source code) was written in GOAL (Game Object Assembly Lisp)
James McMahon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.