لماذا بنينا ليس أكثر لغات البرمجة في واجهات لمدير النافذة؟

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

سؤال

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

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

وكانت هناك محاولات مختلفة على لينكس، وكثير منها تم إيقافها من دون تفسير. واحد هو مكتبة تى سى ال الخاملة: الروبوت. البحث مدونة جوجل لالروبوت، لانج: تى سى ال

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

المحلول

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

و"البشر استخدام الكمبيوتر من خلال لوحة المفاتيح، والماوس، والتفاعل مع وحدة التحكم أو مدير النوافذ".

وهذا غير صحيح تماما في حالتي. "المستخدم" يرسل الطلبات عن طريق HTTP. أي لوحة المفاتيح، لا الفأرة، لا وحدة، لا يوجد مدير النافذة.

قد يكون المستخدم باستخدام نوع من واجهة المستخدم الرسومية يتوهم، ولكن لا يهم بالنسبة لي أو برنامجي. كل ما أراه هي HTTP GET وطلبات POST. النص النقي.

واضاف "لكن عدد قليل جدا من اللغات قد بنيت في الوظائف التي توفر واجهة لهذه الكائنات الحوسبة الأساسية."

وتصحيح. ليس لدي أي استخدام لوحة المفاتيح، والماوس، وحدة أو مدير النافذة.

نصائح أخرى

جميع منصات الحوسبة الشخصية لديها مكتبات من شأنها أن تفعل هذا.

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

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

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

وسأكون مندهشا إذا كنت لا تستطيع أن تفعل ذلك مع ج #.

إذا هناك العديد من اللغات التي لا تستطيع أن تفعل هذا، كنت اعتقد انه هو لأنه من الصعب القيام بذلك دون ربط اللغة لنظام التشغيل.

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

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

ولكن أشياء مثل مدير النوافذ، واجهة المستخدم الرسومية، وما إلى ذلك، فهي <م> كثير أكثر تحديدا لبعض المنابر وهو لماذا لا يتم تضمينها في المكتبات القياسية. وهذا ما يجعل C / C ++ المحمولة بذلك.

والمهام التي تقوم بها أجهزة الكمبيوتر دون أي تدخل من واجهة الجهاز البشري يفوق عدد تلك دفعتها مباشرة من قبل الإنسان من قبل عامل هائلة.

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

وفيما يتعلق ضربات المفاتيح، وحدات الماكرو وبعض المواد، وأبسط طريقة أنا أفعل ذلك الآن هي فبسكريبت صحيح أو في بوويرشيل:)

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