سؤال

ولدي مشروع ج ++ جانب الخادم أنني بحاجة إلى تضمين نوعا من البرمجة إلى. وهو جزء من نوع MMO على الانترنت من الخادم. لدي خبرة كبيرة باستخدام TCL، ويبدو مثل نوبة طبيعية. لقد فعلت الحد الأدنى من لوا في أيامي عبة ديف، وأنا أتساءل عما إذا كان هذا قد يكون أفضل لغة للبرمجة المضمنة. ومن الجميل أيضا أن تتعلم لغة جديدة. ما هي نقاط القوة والضعف النسبية للTCL مقابل لوا؟ شكرا!

هل كانت مفيدة؟

المحلول

وبصراحة، انهم على حد سواء للغاية مناسبة تماما لهذه المهمة. كلاهما من السهل أن تغرس في تطبيق ولديها تركيب بسيط إلى حد ما. أنا أعرف حقيقة أن الأمر بسيط للغاية لإضافة أوامر جديدة (للتفاعل مع التطبيق) في تى سى ال، وقيل لي لوا جيدة جدا في هذا النوع من الشيء، أيضا.

وتوصيتي سيكون للعب مع حولها لوا لبعض الوقت لنرى كيف كنت ترغب في ذلك (منذ كنت تعرف تى سى ال) ... ومن ثم اختيار واحد أن يشعر أكثر راحة لك. إذا كنت تكتب الكثير من التعليمات البرمجية، سوف تنتهي العمل معها كثيرا، لذلك عليك شيء يمكنك استخدامها أيضا. في النهاية، يجب أن يكون كل من الخيارات لغة السهل بالنسبة للمستخدمين النهائيين لالنصي في.

وبلدي تفضيل شخصي هو تى سى ال، سواء لأنني لا أحب لوا (لقد فعلت قدرا معقولا من البرمجة في ذلك لaddsons علب) ولأنني أحب تى سى ال (لقد فعلت الكثير من البرامج في ذلك ل من الناحيتين المهنية والعمل الخاص).

وتحرير: واضاف ملاحظة حول كلا كونها سهلة بالنسبة للمستخدمين النهائيين. حصلت على 2 أسفل الأصوات، ولا يمكن التفكير في أي شيء آخر قد يكون لأغراض أخرى غير عدم توضيح لماذا جزءا من بياني.

نصائح أخرى

وأعتقد أنا عكس RHSeeger هناك. لقد استعملت كلا لوا وTCL جزءا لا يتجزأ من الألعاب (العاب اون لاين، بالمناسبة) وأنا لن أتطرق TCL مرة أخرى مع 'bargepole 10 إذا كان لي الاختيار. رأيي شخصي جدا هو أن لوا هي لغة سليمة وTCL ليست كذلك. بالنسبة إلى خيارات أخرى لغات البرمجة، تركيب TCL هو غامض جدا لمعظم الناس، مع كل مجموعة وعلامات EXPR والدولار والكثير من الأقواس الخ صالح الهدف الوحيد لها هو سهولة دمج - ولكن لوا ولا ترهل في هذا القسم أيضا.

إذا هذه الواجهة البرمجة هو محض بالنسبة لك، ثم يمكنك الذهاب، وكذلك مع TCL لأن لوا لا نقدم لكم أي شيء جديد (ما لم توجه الكائن الشيء الخاص بك). في يد المستخدم المهرة TCL هو أداة معقولة. ولكن، إذا كنت تتوقع للمستخدمين الأقل خبرة لاستخدام نظام ثم انتقل مع لوا - فإن تركيب بسيط شرائها الكثير من الإنتاجية

وأظن أن تى سى ال والحصول على مزيد من المكتبات التي قد تجد من الضروري أو مريحة على طول الطريق.

وكما قال آخرون، فإن اللغتين تعمل بشكل جيد جدا. أما الخيار الثالث الذي من شأنه أيضا العمل المحتمل حول وكذلك هو جافا سكريبت، لأنه يناسب في نفسه تقريبا نفس المتخصصة. وبدلا من محاولة التودد لك واحدة أو أخرى (كما أحب باللغتين كثيرا) سأحاول التركيز على بعض الاختلافات الموضوعية، ونشير إلى حيث أعتقد أن واحدة من قبل البعض.

وأهم قضية في خادم اللعبة ومن المرجح أن يكون أداء الخام. اللغتين ناضجة والأمثل جيدا، ولكن كلا ندرك أيضا أن بعض القضايا هي أفضل الأمثل من خلال تأجيل إلى رمز المترجمة. اللغتين تستخدم أساسا نفس آلية لتنفيذ ذلك. من وجهة نظر لغات أنفسهم، يبدو لوا هو مجرد أسرع قليلا. صلة

من وجهة نظر من المكتبات، وهو عامل كبير المقبل، لا لغة يتطلب استخدام أي مكتبات لتكون مفيدة. في آن معا اللغات المدمجة جدا، بالمقارنة مع لغات مثل جافا والتي تتطلب مكتبات وقت التشغيل الكبيرة لتكون مفيدة. مرة أخرى، وهذا هو نتيجة لمتطلبات التصاميم الأصلية. اللغتين لها وفيرة إضافة على المكتبات للاختيار من بينها، ولكن انها انطباعي على الأقل TCL لديها اكثر بعض الشيء متنوعة في هذه الفئة. تى سى ال :( تى سى ال تمديد الأرشيف / <لأ href = "http://www.flightlab.com/~ جو / مزراب / index.html و"يختلط =" noreferrer "> تى سى ال تمديد مستودع) لوا: ( LuaForge )

وثمة فرق آخر هو بين اللغات الأساسية نفسها. تقدر اللغتين البساطة على النمط، ولكن هذا التشابه ينتهي فيها. يستخدم لوا ما قد يكون جملة مألوفة لمعظم المبرمجين، مع السياق النحوي الحرة بسيط جدا. تركيب TCL أيضا بسيطة، ولكن ليس لديها أي شيء حقا من القواسم المشتركة مع اللغات الأخرى القائمة، على الرغم من أنها تبدو ظاهريا قليلا مثل يونيكس اللغة قذيفة. تى سى ال وربما أسهل فقط على غير المبرمجين لخط الموجهة جملة الأمر منه هو واضح جدا، ولكن المبرمجين ذوي الخبرة في لغات أخرى عادة ما تعترض على بناء الجملة غامضة. لا أحد غير متسامح بشكل رهيب من حيث توليد رمز، ولكن لديهما مرافق metaprogramming قوية (للمقارنة، ولكن ربما ليس قويا مثل وحدات الماكرو CLISP).

ووAPI لوا C من السهل للغاية على الاندماج في تطبيق. من C لديك حق الوصول الكامل إلى الدولة لوا، وإلى أنواع بيانات موطنه الأصلي. لقد أوصى باستخدام لوا فقط للحصول على تنفيذ جدول التجزئة حتى مع عدم وجود حاجة للبرمجة، على سبيل المثال.

وظائف لوا مكتوب في C يمكن حقن كأسماء العالمية، التي تم جمعها في الجدول مثل معظم وظائف المكتبة القياسية، أو تنفيذها في دلس وتحميلها بشكل حيوي في وقت التشغيل. يسمح تطبيق لتوفير API مستقر، وكذلك لدعم الإضافات مكتوبة في أي لوا أو C.

ولوا كلغة غير القوية جدا، مع دعم لكلا أسلوب البرمجة الوظيفية وجوه المنحى. بل هو أيضا خفيفة الوزن من المستغرب: عدة مصدر كاملة وثائق كاملة تناسبها في أقل من 1 MB، وكله VM، المترجم، والمكتبات القياسية في DLL هو الوحيد 164KB على ويندوز

وأنا لم تدرس بجدية TCL منذ الإصدار 2 أو نحو ذلك ... وأنا لن محاولة مقارنتها بطريقة ملموسة. أعتقد أن كلا منهما قد اخترع لتناسب نفس المتخصصة، وفي نفس الوقت تقريبا. فهي بالتأكيد اللغتين ناضجة مع المجتمعات المستخدم متعطشا.

ولوا ديه LuaJIT ، وهو مترجم JIT التي تصل سرعات C في حلقات ضيقة، ويستخدم لمشاريع مثل <ل أ href = "https://github.com/snabbco/snabb" يختلط = "نوفولو"> Snabb تبديل حيث الأداء أمر بالغ الأهمية (Snabb يمكن التعامل مع غيغابت في الثانية، كل معالجتها من خلال LuaJIT). لديها LuaJIT أيضا وسيلة سهلة الاستخدام ل FFI الذي يسمح احد للوصول إلى وظائف C دون كتابة التعليمات البرمجية C كعب.

وPUC-لوا (تنفيذ قياسي) يدعم التعافي من نفاد الذاكرة. لا LuaJIT ولا TCL القيام به.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top