سؤال

عندما أرى Lua، فإن الشيء الوحيد الذي قرأته هو "رائع للتضمين" و"سريع" و"خفيف الوزن" وفي أغلب الأحيان أكثر من أي شيء آخر:"World of Warcraft" أو باختصار "WoW".

لماذا يقتصر الأمر على دمج كل شيء في تطبيق آخر؟لماذا لا تكتب نصوصًا للأغراض العامة كما تفعل مع Python أو Perl؟

يبدو أن Lua تقوم بعمل رائع في جوانب مثل السرعة واستخدام الذاكرة (أسرع لغة برمجة نصية afaik) فلماذا لا أرى أبدًا استخدام Lua كـ "لغة برمجة نصية لسطح المكتب" لأتمتة المهام؟على سبيل المثال:

  • إعادة تسمية مجموعة من الملفات
  • قم بتنزيل بعض الملفات من الويب
  • تجريف على شبكة الإنترنت

هل هو عدم وجود المكتبة القياسية؟

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

المحلول

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

نصائح أخرى

Lua هي لغة رائعة وخفيفة الوزن وسريعة للغاية!

لكن النقطة هي: Is performance so important for those tasks you mentioned?

  • إعادة تسمية مجموعة من الملفات
  • قم بتنزيل بعض الملفات من الويب
  • تجريف على شبكة الإنترنت

ربما تكتب هذه البرامج مرة واحدة، وتقوم بتشغيلها مرة واحدة أيضًا.لماذا تهتم بالأداء كثيراً بالنسبة لبرنامج التشغيل مرة واحدة؟

على سبيل المثال:

  1. تكلفة كتابة برنامج C/C++ هي 3 ساعات، ومعالجة البيانات مرة واحدة، وسيستغرق تشغيل البرنامج ساعة واحدة.
  2. تكلف 30 دقيقة لكتابة برنامج بايثون للتعامل مع البيانات مرة واحدة، وسيستغرق تشغيل البرنامج 10 ساعات.

If you choose the first, you save the time to run the program, but you cost your time to develop the program.

On the other hand, if you choose the second, you waste time to run the program, but you can do other things when the program is running. أكل D.O.T!:ص

هذا كل شيء!على الرغم من أن كتابة Lua ليست صعبة للغاية، إلا أن كل شيء يتعلق بـ Lua مصمم ليكون فعالاً. والأكثر من ذلك، هناك وحدات قليلة لـ Lua، ولكن هناك العديد من الوحدات لـ Python.أنت لا تريد نقل مكتبة C لـ Lua فقط لبرنامج يتم تشغيله مرة واحدة، أليس كذلك؟بدلاً من ذلك، اختر Python واستخدم هذه الوحدة لإنجاز مهمتك بسهولة قد تكون فكرة أفضل.

لعِلمِكَ: The bottleneck of webscraping is not on the performance of the language.وأخيرا، اخترت بايثون بدلا من لوا.

لقد كتبت مقالاً عن مقدمة لهذه التكنولوجيا.

الخيار الأفضل للحصول على البيانات من مواقع الويب:بايثون + ملتوية + lxml

نأمل أن يكون هذا مفيدا.

تحتوي Lua على مكتبات أقل من Python.ولكن تأكد من إلقاء نظرة على لوافورج.لديها الكثير من libs مثيرة للاهتمام، مثل لواكيرل, wxLua أو com.getopt.

ثم قم بزيارة لواروكس, ، نظام إدارة الحزم لـ Lua.باستخدامه، يمكنك البحث عن وحدات Lua الأكثر نضجًا وتثبيتها باستخدام التبعيات.يبدو الأمر كذلك روبيجيمز أو موهبة.

الموقع لوا-users.org لديه الكثير من الموارد المثيرة للاهتمام أيضًا، مثل البرامج التعليمية أو لوا ويكي.

ما يعجبني في Lua ليس سرعتها، بل لغتها الأساسية البسيطة ومرونتها وقابليتها للتوسعة.

ومع ذلك، ربما سأستخدم بايثون للمهام التي ذكرتها بسبب المجتمع الأكبر الذي يفعل مثل هذه الأشياء في بايثون.

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

هذا سؤال اجتماعي وليس سؤال برمجة.

أستخدم Lua في البرمجة النصية للأغراض العامة بشكل حصري تقريبًا.ولكن كان علي أن أكتب بضع مئات من الأسطر من التعليمات البرمجية حتى تتمكن Lua من اللعب بشكل أفضل مع الصدفة.وشمل ذلك حيلًا مثل

  • نقلاً عن سلسلة بحيث يُنظر إليها على أنها كلمة واحدة بواسطة الصدفة
  • كتابة دالة لالتقاط مخرجات الأمر كما في Shell $(command)
  • كتابة دالة للزحف إلى نظام الملفات باستخدام مكتبة Lua posix وتوسيع أنماط الصدفة

(لأولئك الذين قد يكونون مهتمين، لقد تركت الكود في ملفي صندوق إسقاط لوا, ، والذي يحتوي أيضًا على بعض الأشياء الأخرى.ربما تكون الأشياء المثيرة للاهتمام موجودة osutil في os.quote, os.runf, os.capture, ، و ربما os.execve.اللمعان موجود posixutil.lua.كلاهما يستخدم أسلوب لويز هنريكي دي فيغيريدو مكتبة لوا بوسيكس.)

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

بالتأكيد نقص المكتبات القياسية.كما أنها أقل شهرة من Python أو Perl أو Ruby.

كانت هناك دفعة حديثة لإنشاء تثبيت متضمن للبطاريات لـ Lua على نظام التشغيل Windows.النتيجة يمكن العثور عليها في لوا لنظام التشغيل Windows المشروع في LuaForge.يتضمن المترجم ومجموعة كبيرة من الوحدات الإضافية التي تسمح بكتابة البرامج النصية والتطبيقات المفيدة واستخدامها خارج الصندوق.

أعلم أن توزيعات Linux المختلفة تتضمن Lua وبعض الوحدات الآن، والمزيد في المستقبل.

هناك أيضًا اثنين من المكتبات النموذجية المقترحة قيد المناقشة في القائمة البريدية، لكن المجتمع لم يستقر بعد على إحداهما باعتبارها الآلية "الرسمية".

أستخدم Lua كلغة برمجة نصية وكحلقة "رئيسية" لتطبيقي النموذجي، مدعومة بواحدة أو أكثر من ملفات DLL التي تحتوي على تعليمات برمجية تم تنفيذها بشكل أفضل في لغة C، أو لتغليف المكتبات الموجودة أو وظائف API التي يحتاجها مشروع معين.تستخدم مع مجموعة أدوات واجهة المستخدم الرسومية مثل IUP أو wxLua (ربط Lua لـ wxWindows)، يجعل Lua كتابة تطبيقات واجهة المستخدم الرسومية الصغيرة والمتوسطة الحجم أمرًا ممتعًا للغاية.

أعتقد أن الإجابة على أنه أمر "تسويقي" ربما تكون صحيحة، إلى جانب عدم وجود مجموعة كبيرة من المكتبات للاختيار من بينها.وأود أن أشير إلى حالة أخرى لهذا:روبي.من المفترض أن تكون روبي لغة برمجة للأغراض العامة.المشكلة هي أنه منذ أن أصبحت Ruby on Rails مشهورة جدًا، أصبح من الصعب العثور على شيء لا علاقة له بـ Rails.أخشى أن Lua ستعاني من هذا أيضًا، حيث تحظى بشعبية كبيرة بسبب استخدامها لبعض الأشياء الرئيسية، لكنها لن تتمكن أبدًا من التحرر من تلك الوصمة.

عدم وجود مكتبة قياسية.فترة.حتى سرد جميع الملفات في الدليل يتطلب وحدة غير قياسية.

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

يستخدم لوا في لواتيكس, ، وهو امتداد TeX، كلغة مضمنة، وقد اكتسب شعبية سريعة بين مطوري TeX بسبب ذلك.يتم استخدامها كلغة برمجة لبعض الأدوات المساعدة في توزيعة TeX Live، سواء كان ذلك فقط لأنه يوجد الآن luatex ثنائي، متاح على جميع الأنظمة الأساسية، ويمكن استخدامه أيضًا كمترجم Lua (مع إضافة بعض الوحدات الحيوية - slnunicode، وluafilesystem، وما إلى ذلك). وهذا مهم جدًا لعمليات تثبيت Windows، التي اعتمدت على أدوات البرمجة النصية الإضافية لـ Unix سابقًا (ActivePerl، وما إلى ذلك). ) تستخدم لغة الماكرو ConTeXt نصوص Lua على نطاق واسع في الوقت الحاضر.

من المسلم به أن هذا مجال خاص جدًا :-) ولكنه لا علاقة له بالألعاب على الإطلاق!

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

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