تفاعلية شل .صافي تطبيقات تضمين لغات البرمجة مثل الثعبان/الحديد الثعبان في ذلك

StackOverflow https://stackoverflow.com/questions/808692

سؤال

كنت تعلم بايثون باستخدام البرنامج التعليمي الذي يأتي مع بيثون القياسية التثبيت.واحدة من الفوائد أن صاحب البلاغ عن الثعبان هو "ربما كنت قد كتبت برنامج التي يمكن أن تستخدم امتداد اللغة و لا ترغب في تصميم وتنفيذ لغة جديدة للتطبيق الخاص بك" - سؤالي هو كيف يمكنني تصميم برنامج (باستخدام c#) التي يمكن توسيعها باستخدام بايثون بشكل تفاعلي(هذا ممكن أتصور أنني سوف تحتاج إلى إنشاء نوع من "شل" أو "التفاعلية" واسطة .برنامج net) ?

هل هناك أي مؤشرات على كيفية تصميم .صافي برامج تفاعلية قذيفة.وأود أن استخدام بيثون السيناريو في قذيفة إلى "توسيع" أو التفاعل مع البرنامج.

تحرير: هذا السؤال جزئيا ينبع من العرض تعطي ميغيل دي إيكازا خلال PDC 2008 حيث أظهر التفاعلية csharp موجه الأوامر, C# 4.0 أعتقد أيضا أن هذا "مترجم كخدمة" الميزة.نظرت في ذلك وفكرت كم سيكون رائع لتصميم ويندوز أو برنامج ويب في .الشبكة التي كان التفاعلية قذيفة..و لغة البرمجة مثل بايثون يمكن استخدامها لتوسيع الميزات التي يقدمها البرنامج.

كما أنني بدأت التفكير في هذا النوع من الوظائف بعد قراءة واحدة من ستيف Yegge مقالات يتحدث فيها عن الأنظمة التي تعيش إلى الأبد.

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

المحلول

هذا يبدو وكأنه من IronPython.

فإنه من السهل نسبيا إلى إعداد بسيطة scripting host من C# للسماح يدعو إلى IronPython النصوص, فضلا عن السماح IronPython الاتصال في التعليمات البرمجية C#.وهناك نماذج وأمثلة على موقع CodePlex التي تبين كيفية القيام بهذا الشيء.

آخر موقع جيد للحصول على أمثلة وعينات هو ironpython.info

و هنا هي الصفحة مكرسة مثال على الإجابة على السؤال ، وإن كان ذلك في عام DLR تتمحور الطريق -- وهذا من شأنه أن يسمح لك لاستضافة IronPython, IronRuby ، أو أيا كان DLR اللغات التي تريد الدعم.

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

نصائح أخرى

كنت أبحث عن حل لنفس المشكلة و وجدت IronTextBox: http://www.codeproject.com/KB/edit/irontextbox2.aspx

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

بيثون امتدادا اللغة يسمى "التضمين الثعبان".

يمكنك الاتصال بيثون وحدة من c++ من قبل bascially استدعاء الثعبان intepreter ويكون ذلك تنفيذ الثعبان المصدر.وهذا ما يسمى تضمين.

يعمل من C و C++ و ربما سوف تعمل فقط كذلك من C#.

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

هنا هو ارتباط إلى بلوق وظيفة حول إضافة IronRuby النصي C# التطبيق.

http://blog.jimmy.schementi.com/2008/11/adding-scripting-to-c-silverlight-app.html

المبادئ أيضا تعمل بشكل جيد باستخدام IronPython.

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

حاليا أنا أستخدم CCScript باسم "الغراء" رمز تكوين تطبيق كائنات تشبه إلى حد ما باستخدام بو.

هذا الرابط المهام إلى رمز المشروع المادة التي توفر لمحة عامة جيدة.

أنا لا أعرف ماذا يعني لك مع

"تمديد" أو التفاعل مع البرنامج

لذلك لا أستطيع الإجابة على سؤالك.هل يمكنك إعطاء مثال ؟

هناك مفتوح المصدر التفاعلي C# قذيفة في مونو: http://www.mono-project.com/CsharpRepl

عندما كنت مثل الثعبان،.صافي و تمديد اللغة, وربما كنت سوف مثل بو على الحديد بيثون.بو يأتي مع المصدر المفتوح التفاعلي شل أيضا.

أنا أختلف مع

"أنت لا ترغب في تصميم و تطبيق جديد كليا لغة التطبيق الخاص بك"

انها ليست صعبة كما كان لإنشاء بسيطة DSL.فإنه لن يأخذك أيام لتنفيذ ساعات فقط.قد يكون خيار مثير للاهتمام.

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