هل سيساعد التعلم C ++ في بناء تطبيقات سطح المكتب السريعة/عدم الإضافة؟ [مغلق

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

  •  03-07-2019
  •  | 
  •  

سؤال

هل سيساعدني التعلم C ++ في بناء التطبيقات الأصلية بسرعة جيدة؟ هل سيساعدني كمبرمج ، وما هي الفوائد الأخرى؟

السبب في أنني أريد أن أتعلم C ++ هو أنني أشعر بخيبة أمل من أداء واجهة المستخدم للتطبيقات المبنية على قمة JVM و .NET. يشعرون بطيئًا ، ويبدأون ببطء أيضًا. بالطبع ، يمكن للمبرمج السيئ حقًا إنشاء تطبيق أبطأ وبطيء باستخدام C ++ أيضًا ، لكنني لا أفكر في هذه الحالة.

أحد تطبيقات Windows Utility المفضلة لدي هو ليمينسي. وفي ملف readme.pdf ، كتب مؤلف البرنامج هذا:

0.6 هذا هو أول إصدار C ++. عندما شعرت بالإحباط من متطلبات إطار عمل C#من C#ويفتقر المستخدمون إلى الرغبة في تثبيته ، قررت العودة إلى اللغة الأسرع.

وأنا أتفق تمامًا مع مؤلف Launchy حول متطلبات إطار العمل .NET أو حتى متطلبات JRE لتطبيقات سطح المكتب. ناهيك عن النسخة المحددة منهم. وبعض من أفضل تطبيقات سطح المكتب المفضلة لدي لا تحتاج إلى تشغيل .NET أو Java. أنها تعمل فقط بعد التثبيت. هل هم في الغالب بنيت باستخدام C ++؟ هل C ++ هو الخيار الوحيد لتطبيقات واجهة المستخدم الرسومية الجيدة والسريعة؟

وأنا أيضًا مهتم جدًا بسماع الفوائد الأخرى لتعلم C ++.

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

المحلول

إذا كنت ترغب في إنشاء تطبيقات Windows التي سيتم تشغيلها بدون أطر مثل .NET أو الأجهزة الافتراضية/المترجمين الفوريين ، فإن اختياراتك الوحيدة القابلة للحياة هي Visual Basic أو C/C ++

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

كمبرمج ، يعد العمل في C ++ وخاصة في C تجربة جيدة لمساعدتك على فهم شيء ما مجرد صبي أقرب إلى الجهاز بدلاً من القول ، اجعلك مبرمجًا أفضل ، ولكن إذا كنت منفتحًا على تعلم دروس جديدة منه ، فقد تجد أنه يساعدك على الحصول على منظور جديد على البرنامج. بعد كل شيء ، يتم كتابة معظم الأطر والأنظمة التي تعتمد عليها في Pure C ، لذلك لن يؤذيك أبدًا لفهم الأسس. C ++ هو حيوان مختلف عن C على التوالي ، ولكن إذا قمت بتطوير في C ++ لنظام التشغيل Windows ، فمن المحتمل أن تجد نفسك تعمل في مزيج من C و C ++ للعمل مع Windows Apis ، لذلك سيكون له تأثير متدلي.

نصائح أخرى

نعم ، C ++ رائع للغاية. يفحص كيو تي. لديها عظيم بيثون ملزمة أيضًا ، بحيث يمكنك بسهولة النموذج الأولي في Python ، ومتى/إذا كنت بحاجة إلى أداء إضافي ، فإن النقل إلى C ++ هو ترجمة في الغالب 1: 1.

ولكن في الواقع ، فإن كتابة C ++ ليست صعبة للغاية إما عندما يكون لديك منصة رائعة ، فإن أسوأ جزء هو كتابة جميع إعلانات الفصل :-)

لقد كتبت تطبيقات C ++ Windows لمدة 10 سنوات وتحولت إلى C# منذ حوالي عامين للعمل على أحدث منتج. أشعر بالحرج من مدى مثير للشفقة على تطبيق C#. يستغرق بدء 20 ثانية ، عليك الانتظار في ثانية أو نحو ذلك للتبديل بين الشاشات. لقد استخدمت بعض مكتبة التحكم في واجهة المستخدم الرسومية من طرف ثالث ، والتي تسرب الذاكرة مثل غربال! يعمل تطبيقي بسرعة 150 ميج ، ولا يكاد يفعل أي شيء.

أنا أتطلع إلى العودة إلى C ++.

يمكنك استخدام MFC ، سيكون أسرع بكثير من .NET. أو ، إذا كنت تريد حقًا حرقها ، تحقق من WTL - على الرغم من أنه لا يوجد الكثير من الوثائق لذلك. أقترح عليك الذهاب مع MFC أو QT لأنك ستجد الكثير من المعلومات والدروس التعليمية الجيدة لهم.

أستطيع أن أرى أن C# يمكن أن يكون أسرع في التطور ، وربما في بعض الإصدار المستقبلي سيكون أسرع وأصغر.

سوف تكره إجابتي:

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

دعنا نضعها على هذا النحو: أنا متأكد تمامًا من أنه يمكن للمرء تصميم واجهة مستخدم جيدة فوق .NET CLR. التعلم C ++ أمر جيد ، لكنه لن يحل المشكلات الكامنة في تطوير واجهة مستخدم جيدة.

كما هو الحال دائما. هذا يعتمد. طالما أنك تبقى بعيدًا عن الأطر microsofts الكبيرة ، حيث يمكن أن تكون تطبيقاتك MFC و .NET وما إلى ذلك. مصلحتك: سوف تتعلم حقًا كيف تعمل Windows خلف سطحها اللطيف (؟). انظر فقط إلى رمز التهيئة للكائنات com-object واعرف ما أعنيه. لن ترى مثل هذه الأشياء في VB أو C#

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

اكتب برامج صغيرة وسريعة

حظا طيبا وفقك الله!

إذا كنت ملتزمًا بتعلم التفاصيل الخام الشجرية لـ Win32 ، فسيحصل عليك C ++ إلى هناك. إذا لم تكن كذلك ، فسوف ينتهي بك الأمر باستخدام مجموعة من الأغلفة على أي حال. لشيء مثل فائدة صغيرة أو خاصة شيء يشبه امتداد قذيفة (حيث محاولة استخدام .NET سوف تسبب لك مشاكل على أي حال) ، سيتيح لك C ++ كتابة رمز فعال مع الحد الأدنى المطلق في التبعيات الخارجية. لتطبيق أكبر ، YMMV-يأتي الكثير من تباطؤ واجهة المستخدم من التصميم السيئ: الخوارزميات الساذجة ، وعدم الرغبة في التغلب عناصر التحكم المخصصة ... الأخطاء التي ارتكبت بسهولة بأي لغة.

ها هو إجابتي الصادقة على هذا.

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

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

هذا يقول ، لا أفضل C/C ++ لبرمجة واجهة المستخدم. لا يزال يتعين عليك استخدام إطار عمل للترويج الخاص بنظام التشغيل الذي تعمل عليه (MFC ، Win32 ، Motif ، GTK ، QT ، إلخ). هذه الأطر لا تقرض نفسها لمنحنيات التعلم السهلة. بالنسبة لتطوير Windows على الأقل ، فإن .NET هو في الحقيقة مستقبل تطوير واجهة المستخدم (على الرغم من أن MFC المثير للدهشة حصلت على إصلاح كبير لـ Vista الذي يقوم بالأشياء. NET لا تفعل حتى الآن). إذا كتبت واجهة المستخدم الخاصة بك في .NET ، فمن الأسهل الحفاظ على الآخرين.

عادةً ما أكتب واجهة المستخدم الخاصة بي في .NET والخلفية في C ++.

نعم و لا. الأمر كله يتعلق بالتحسين ... وبما أن C ++ يتيح لك العمل على المستوى الأدنى C ++ هو أحد أفضل اللغات التي تكتب تطبيقات سريعة. ومع ذلك ، يمكن أن تكون تلك الميكانيكا ذات المستوى المنخفض المنفذة في C ++ مزعجة للغاية إذا كنت معتادًا على أساليب أكثر تجريدية لـ OOP. عادة ما يكون اختبار البرنامج في C ++ عملية طويلة. إذا كنت تبحث عن السرعة على أي حال ، فإن C ++ سيكون بالتأكيد أحد أفضل الخيارات.

من المحتمل أن يحصل C ++ بالفعل على تطبيق أصغر حجماً وأسرعًا وأسرع (إذا قمت بذلك بشكل صحيح).

ومع ذلك ، تم تصميم إطار .NET للراحة من وجهة نظر المطور ؛ تحسن كبير على API أو MFC Win32 ، والذي قد يبدو أنه عمل شاق مقارنةً ، لذا فكر في كيفية تنفيذ الجوانب التي يعتمد عليها تطبيقك على .NET (هناك أطر أخرى متاحة قد تكون أسهل من MFC أو Win32 API) وأيضًا النظر في التكاليف وقضايا ترخيص استخدام هذه الأطر ؛ على سبيل المثال ، لا يتضمن إصدار VC ++ Express المجاني على سبيل المثال دعم MFC.

إذا كنت تعرف مكان تطبيقك بطيئًا ، فقد يكون C ++/CLI حلاً ؛ السماح لك بخلط التعليمات البرمجية المدارة والرمز الأصلي لتسريع الأجزاء التي تحتاج إليها. ومع ذلك ، إذا كان واجهة المستخدم الرسومية بطيئة في جوهرها بدلاً من معالجة التطبيق ؛ قد لا يكون هذا مسارًا مفيدًا.

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