13

سؤال: عن اللغة الأنسب لتطبيق عابر للمنصات ؟

على وشك البدء بتطبيق المطلوب أن يكون منه اصدارات على معظم المنصات:

 -الويب

-سطح مكتب ويندوز

-وسطح مكتب ماك

-وأندرويد

-iOS

التطبيق سيكون على جزئين، جزء في السيرفر وجزء للمستخدم بمختلف المنصات الآنفة الذكر.

بالنسبة لطرف السيرفر فأي لغة تفي بالغرض كونها API تستقبل طلب وترد باستجابة.

السؤال هو حول الجزء من طرف العميل، التطبيق يميل للنوع الجرافيكي التفاعلي من قبل المستخدم.

سؤالي ما هي اللغة الأنسب التي يمكن أن أبني بها التطبيق لأكثر عدد من المنصات السابقة الذكر.

خبرتي القصوى هي في .Net لكني سأستبعدها لأني بدأت بالتوسع لما هو خارجها.

الخيارات الأخرى التي أتأرجح بينها

بايثون

روبي

فمن خلال من تعامل بمثل هذه المسألة بشكل عملي، أي لغة ترشحها بأنها هي الأنسب لما سألت عنه؟

ولا مانع من طرح خيارات غير الواردة أعلاه إن كنت ترى أنها الأصلح.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

هناك العديد من الأدوات التي ستوفر لك جهدا و وقتا كبيرا لبناء تطبيقات عابر للمنصات، من بين اللغات التي لا يعرفها الناس هي لغة PureBasic .. قوية، فعّالة، سريعة، خفيفة الحجم لأن كل تعليماتها تترجم الى الأسمبلي (Fasm) + سهلة التعلم من جمالية اللغة أنها فاقت الدلفي و السي في قوتها.. كذلك يمكن برمجة Kernel-Mode Driver عبر SDK خاص باللغة فأي شئ أكثر من هذا يرده المبرمج.

و قريبا سأصدر أول كتاب للتعريف بها؛ بهذه اللغة يمكنك أن توفر ما تشاء من العمل أي:

  • كود واحد يدعم جميع المنصات بما فيها لينوكس التي لم تذكرها.

  • بناء سيرفر خفيف و واجهة رسومية سهلة جدا عبر لغة لها نفس Syntax تسمى Spiderbasic و مجانية تابعة لها.

  • دعم رائع للمنصة، غير أنها ليست مجانية و يمكنك العمل على النسخة التجريبية و تفي بالغرض كاملاً.

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

و أنصحك بالتعامل مع اللغة لبرمجيات سطح المكتب و لجهة السيرفر أنصحك باستعمال لغة PHP مع اطار عمل سهل جداً Laravel يوفر لك API متكامل و سهولة عمل جدّ رائعة.

نصل الى مرحلة التطبيقات:

  • كذلك هناك أداة رائعة تسمى B4X موقعها كالتالي: (^1) تنتج تطبيقات Native و سهلة، تعليماتها تشبه فيجوال بيسك تدعم Android و iOS و Windows Phone. تصميم الواجهة فيها يكون عبر Visual Designer أو عبر أندرويد ستوديو و Material Design. تتمتع بدعم قوي و مكتبات لا تحصى. و المعلوم كذلك مفهوم اللغة هته مثل زامارين تترجم السورس الى لغة الجافا و سوفت لكلتا الحالتين.

1 - https://www.b4x.com

http://www.purebasic.com

http://forum.purebasic.com

لفتة مفيدة منك لهذه المعلومات.

طالما أنها بهذه المواصفات المميزة فلما هي ليست واسعة الانتشار، هل لأنها جديدة أم أن مجتمعها لم يسوق لها كما يجب ؟

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

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

كمثال لجمالية اللغة:

  • لانشاء واجهة رسومية GUI و نافذة تعرض معلومات تدعم جميع OS يكفيك كتابة دالة MessageRequester بثلاث بارامترات: العنوان، المضمون، نوع النافذة. بسهولة، حجم الملف التنفيذي 3kb لن تجد لغة أخرى تقدم سطر واحد بذاك الحجم.

  • كذلك يمكنك استخدام OS API بدون استدعاء أي مكتبة أخرى خارجية اكتب دالة MessageBox_ بسطر واحد كذلك.

أتمنى تجربتك لها و ترجع لي نتائج اختبارك موفق أخي @عبد الرحمن أحمد

  1. إن لم يكن الأداة مهمًا عندك اِستخدم Node.JS مع WebKit وريح بالك بشيفرة واحدة للواجهات ولكل شيء.

  2. إن أردت أداة أعلى من السابق لكن ليس صعبًا جدًا يمكنك البقاء مع NodeJS واستخدام React Native للهاتف، وQT أو GTK لسطح المكتب يوجد Wrappers لـNodeJS.

  3. وللأداة الأعلى مع سهولة نوعًا ما استخدم لغة Go لن تختلف الشيفرة بين المنصات، عدا الواجهات للهاتف استخدم gomobile لكن ستختلف صناعة الواجهة بين Android وIOS، ولسطح المكتب استخدم GTk، وإن أردتُ الأداة الأعلى لسطح المكتب استخدم Win32API وCocoa مع objective-c أو gogoa للماك ستحتاج إلى الكثير من الكتابة مع هذا الحل، لكنه سيكسبك خبرة جد كبيرة في التعامل مع الأنظمة.

ذكرتُ Go لأنها أسهل وأكثر عملية من C ستريح بالك من أمور مثل عبور المنصات -نوعًا ما-، وإدارة الذاكرة وفي النهاية ستستخدم وظائف C معها بسهولة كأنهما لغة واحدة، قبل البدء أنصحك بكتاب Go in Action وعن البناء العابر للمنصات في Go وعن CGO.

حتى لا أكرر التعليق يمكنك الاطلاع عليه

NodeJS خيار ممتاز صراحة لبناء واجهة تفاعلية وتطبيق سطح مكتب

باستخدام مكتبة مثل ElectronJS تستطيع بناء تطبيق سطح مكتب للماك والويندوز يتعامل مع API من سيرفر بسهولة (

)

بالنسبة لتطبيق الهواتف، اذا كنت قد كتبت تطبيق سطح المكتب ب AngularJS فتستطيع نقله بسهولة باستخدام

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

من الأفضل استخدام NW.JS

أما بالنسبة للهواتف الذكية فاستخدام React Native أفضل. أو أرشح C# مع زامارين ، لكن الاخ عبد الرحمان أكد أنه لا ينوي استخدامها.

لكن الاخ عبد الرحمان أكد أنه لا ينوي استخدامها.

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

كلامه محق , قلت تريد لغة تقلل إمكانيات إنتقالك إلي لغات أخري أنا سأتكلم من ناحية المستخدم عليك باللغة C++ بالتحديد عليك أختيار منصة Qt للأندريود وتطبيق سطح المكتب ويندوز وماك

في الغالب JS هي الأفضل في مثل هذه الحالات :

للويب - NodeJs

لسطح المكتب - Electron

للهواتف - PhoneGap

أو بواسطة C# :

للويب - asp.net

لسطح المكتب - mono

للهواتف - xmarine

يبدو أني وصلت إلى ضالتي فقد حسمنا الأمر لصالح كيوت Qt

 

أنوه أنه بعد الاطلاع تبين أنها تدعم معظم المنصات لكنها ليست مثالية لصالح تطبيق الويب، لكن يوجد هناك شركات طرف ثالث حاولت تغلق هذه الفجوة، مثل Wt حيث هي لتطوير الويب ب ++C

لكن أفضل اعتماد Node.js أو أي تقنية أخرى على ذلك.

ولا مانع من طرح خيارات غير الواردة أعلاه إن كنت ترى أنها الأصلح.

Node.JS من أجل برمجة الAPI ؟ هذا benchmark لبناء Restful API بسيط

 

كما ترى فC++ ثم Node.JS ثم بايثون من ناحية السرعة.

يمكنك القيام بتجارب خاصة بك للتأكد . أقترح عليك أيضا تجربة لغة Go فهي لغة مجمعة ولها استخدامات كبيرة في مجال الBack-End:

شخصيا أقترح Node.JS لأنك ستبني لمنصات مختلفة فيمكنك بناء Hybrid Apps بلغة JS

أو هناك إطار عمل React Native من فيسبوك يمكنك من كتابة تطبيقات Native بلغة JS.

وبما أنك مبرمج C# فأعتقد أنك على علم بمنصة Xamarin لبناء تطبيقات الهواتف الذكية لمختلف أنظمة التشغيل.

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

بالنسبة للسي شارب مستبعدة حاليا لبعض الأسباب.

بما أن الأمر رسومي بالدرجة الاولى فأظن أن ++C ليس خيار مثالي.

فيما يخص Go هل يصلح لبناء تطبيقات لكافة المنصات المذكورة ؟

لو سألتك أن ترشح بين بايثون وروبي فأيهما ترشح ؟

فيما يخص Go هل يصلح لبناء تطبيقات لكافة المنصات المذكورة ؟

نعم وأكثر وتدعم الكثير من المعماريات، هي تحتوي الكثير من الحزم الافتراضية العابرة للمنصات لكل شيء رغم أنها لغة مجمعة Native ينقصها الواجهات فقط.

لو سألتك أن ترشح بين بايثون وروبي فأيهما ترشح ؟

فيما تريد بايثون؛ لها مجتمع أكبر وستجد أغلب ما تحتاج من المكتبات.

لم أنتبه أن الامر يتعلق بالعميل ، أعتذر.

فيما يخص Go هل يصلح لبناء تطبيقات لكافة المنصات المذكورة ؟

الموبايل :

ويمكن أيضا لسطح المكتب https://mattn.github.io/go-gtk لم أجربها شخصيا

لو سألتك أن ترشح بين بايثون وروبي فأيهما ترشح ؟

بايثون طبعا ، فدعمها للرسوميات كبير وتلاحظ أن أغلبية برامج لينكس GUI مبرمجة بها أو C++ .

فلديك المكتبات :

هذا رابط لمكتبات Python الرسومية https://wiki.python.org/moi...

بالنسبة لروبي فلاأعلم عنها سوى الأساسيات لذا لا يمكنني إفادتك بهذا الخصوص

ويمكن أيضا لسطح المكتب https://mattn.github.io/go-gtk لم أجربها شخصيا

لا ينصح بها أبدًا غير مكتملة وقديمة كومة من الهراء، التعامل مع GTK بدون Wrapper أفضل وأسرع.

*لم أجربها من قبل D: * ، كنت أنتظر هذا الرد في الحقيقة.

تحققت فعلا من الIssues وبعض المواضيع من هنا وهناك وفعلا ما قلته صحيح،

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

Node أصبحت عابرة للمنصات و البيئات ، حيث يمكن إستخدامها في تطبيقات (الويب ، سطر الاوامر و حتى سطح المكتب) ، كما ذكر أحد الاخوة يمكنك إستخدامها لتطوير تطبيق سطح مكتب عبر إطار العمل Electron مع تطبيق ويب من نوع (الصفحة الواحدة أو Single Page Application ) فستكون تجربة قريبة من تجربة تطبيق سطح المكتب إن لم تكن مطابقة .

أود أن أذكر أن اللغات مثل ruby هي لا تستخدم في جانب العميل أيضاً .

أود أن أذكر أن اللغات مثل ruby هي لا تستخدم في جانب العميل أيضاً

بالنسبة لروبي حسب ما أعلم أنه يمكن برمجة سطح المكتب بها، لكن توجهها الأكبر للويب.

يمكنك استخدام React.js مع Electron.js لتطبيق سطح المكتب للويندوز و الماك و لينكس اما الهواتف فيمكنك استخدام React Native.

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

كإجابة عامة يمكنك إستخدام لغة Javascript و شهرتها لا تحتاج إلي شرح

Electron كما ذكرت وذكر كثير من الاخوة هنا من أجل تطبيقات سطح المكتب .

NativeScript تعمل بـ Javascript و XML تجربة قريبة جداً من الـ Native Applications كما قال مطوروها في توثيق اللغة ، ولكن لم أجربها

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

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

من طرف السيرفر يمكنك استخدام ماتريد

اما من طرف العميل فإن Qt قادرة على دعم عدة منصات


لسطح المكتب:

Linux

Mac Os

Windows


للهواتف:

Android

IOS

WinRT

Windows phone

Blackberry 10


هذا ما اظن ان Qt تقوم بدعمه ولكن لم اقم بتجربتها في تعدد المنصات وليست لدي الخبرة في كيفية استخدامها لعدة منصات

ويمكن للأخ @sudanix ان يفيدك اكثر حول Qt

يمكن تقسم التطبيق إلى قسمين:

القسم الاول: هو جزء السيرفر وسيكون عبارة عن خدمة ويب xml، وتضع فيه كافة الدوال والجزء البرمجي، تقوم ببرمجته باستخدام أحدى لغات الـ dot net

والقسم الثاني: تبرمجه باي لغة على اي منصة وتربطه بخدمة xml.

فما هو رأيك؟

السؤال يركز على النقطة الثانية، وهو اختيار لغة تقلل من انتقالي للغات أخرى عند دعم منصات مختلفة