سؤال

لقد قمت بالبرمجة بلغة C وC++ وC# وبعض اللغات الأخرى لسنوات عديدة، خاصة لنظامي التشغيل Windows وLinux ولكن أيضًا للأنظمة الأساسية المضمنة.بدأت مؤخرًا في القيام ببعض برمجة iPhone كمشروع جانبي، لذا فأنا أستخدم منصات Apple لأول مرة منذ أيام Apple II.أتساءل ما رأي المطورين الآخرين الذين يأتون إلى Mac OSX وXcode وiPhone SDK.وهذه انطباعاتي حتى الآن:

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

  • كود اكس:لا تبدو جيدة مثل VisualStudio أو Eclipse، البيئتين اللتين أعرفهما.أعتقد أنه يمكنني التعود على ذلك ولكني أتساءل عما إذا كانت Apple لن تكون في وضع أفضل مع Eclipse.قبل أن أجد المكان الذي تكون فيه جميع النوافذ ملتصقة ببعضها البعض، كنت أكرهه، والآن يمكنني تحمله.

  • اي فون SDK:الاستغراب.أنا أتفهم رغبة شركة Apple في التحكم في بيئتها، لكن في هذا اليوم وهذا العصر يبدو الأمر مهلهلًا بعض الشيء ويفقدون الكثير من خلال تدمير النوايا الحسنة للمطورين.

  • ج موضوعية:لقد عرفت ذلك منذ سنوات ولكنني لم ألقي نظرة عليه مطلقًا.بناء الجملة غير مؤجل ولكنني في الواقع مفتون جدًا باللغة.أعتقد أنها نقطة ثالثة مثيرة للاهتمام بين C++ وC#، وكلاهما أحبهما كثيرًا.هل هناك أي فرصة لخروج Obj-C من وضع حماية Mac بسبب الارتفاع الكبير في شعبية تقنية Apple؟

من الفضول قراءة أفكارك،

أندرو

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

المحلول

أنا في نفس القارب مثلك (إلى حد ما).لقد قمت بالتطوير في لغة C# لمدة 7 سنوات، منذ .NET 1.0.على مدى الأسابيع القليلة الماضية كنت أقوم بتعليم نفسي الكاكاو والهدف-C.هنا انطباعاتي (ملاحظة للملاحظة معكم)

  • المتفق عليه في أن الفوضى يمكن أن يكون مشكلة.أميل إلى استخدام Spaces بشكل كبير عند التطوير في XCode (ضع XCode في مساحة واحدة، وInterface Builder في مساحة أخرى، والأدوات في مساحة ثالثة).إذا لم يكن لديك Leopard (وبالتالي لا توجد مسافات)، فاستخدم Command-H لإخفاء نافذتك النشطة.يؤدي استخدام ذلك إلى تنظيف الأشياء إلى حد ما (على الرغم من أنه سيكون من الرائع أن تتمكن من توجيه الأوامر تلقائيًا للنافذة الحالية عند الانتقال إلى تطبيق آخر).

  • أنا أحب XCode أكثر فأكثر.أنا أكره Visual Studio - أجده غير مستقر، وبطيء، وحسنًا، مجرد نوع من بيئة التطوير المتكاملة (IDE) السيئة.نسبيًا، وجدت XCode سريعًا ومستقرًا، وأحب طريقة تنظيمه وتصفيته لملفاتك.أنا لست مهتمًا جدًا باختصارات XCode الخاصة بي، ولكنني آمل أن تكون هناك طريقة يمكنني من خلالها التبديل السريع من فئة إلى أخرى (على غرار اختصار ctrl +n في ReSharper).يمكن أن يكون Intellisense أفضل فيما يتعلق بكيفية عرضه للمستخدم، ولكني أحب حقًا الطريقة التي يقوم بها بإنشاء قالب بشكل أساسي ويمكنك ctrl + / للانتقال إلى الوسيطة التالية في الرسالة.

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

  • لم أتمكن من الوصول إلى هذا الحد بعد، حيث إنني أتصفح إطار عمل Cocoa الكامل لأجهزة كمبيوتر Mac المكتبية.حتى الآن أنا حقًا أحب ما أراه.شيء واحد سأقوله هو أنه سيكون من الرائع أن يسمح iPhone SDK بجمع البيانات المهملة ...

  • Objective-C - لم أستخدمه مطلقًا، وهذه هي أول تجربة لي فيه.في البداية كنت منزعجًا نوعًا ما من بناء الجملة والأقواس المربعة للمراسلة، لكن الأمر بدأ يتزايد بالنسبة لي.من السهل جدًا تصفح إحدى الطرق ورؤية استدعاءات الرسائل التي تقوم بها هذه الطريقة.كلما استخدمته أكثر، أصبح Objective-C أكثر متعة...ومع ذلك، فإن القوالب/الأدوية العامة ستكون إضافة مرحب بها إلى اللغة.

بشكل عام، كانت مغامرتي في تطوير أجهزة Mac ممتعة، وأنا متحمس لبدء العمل (اليوم!)رائع!) في بعض مشاريع Mac/iPhone الفعلية.

نصائح أخرى

أنا أوافق مشاعرك.يعد الانتقال من أدوات تطوير Microsoft (والكسوف) إلى XCode أمرًا صعبًا نوعًا ما.XCode يشعر فقط ...غير مكتمل في بعض النواحي.من المؤكد أنه لا يتمتع بالصقل الذي أتوقعه من VS وEclipse.

إن SDK مشابه، والكثير منها موثق بشكل سيئ، وهناك الكثير من الثغرات التي تعرف أن شيئًا ما يجب أن يكون، لكنه ليس كذلك.تعد محاولة التحكم بعناية في تشغيل ملفات الصوت/الفيديو أحد الأمثلة.

ومع ذلك، فإن Objective-C رائع.أنا حقًا أحب اللغة، على الرغم من مراوغاتها وخصائصها (الرسائل إلى null ليست استثناءً في وقت التشغيل؟حقًا؟) بمجرد أن تعتاد عيناك في لغة C++ على بناء الجملة، فإن الرسائل المجهولة المكتوبة بشكل فضفاض ينتهي بها الأمر إلى أن تكون رائعة حقًا للعب بها (إذا كانت خطيرة إلى حد ما وعرضة لـ RTEs.)

أريد حقًا المضي قدمًا والبدء في تطوير تطبيقات iPhone أيضًا.لقد قمت ببعض عمليات تطوير Motorola وBlackberry وWindows Mobile، والتي كانت جميعها رائعة وسهلة للتعامل مع وثائق جيدة، وسهولة الوصول إلى حزم SDK وتثبيتها.حتى الآن، أشعر أن شركة Apple نخبوية بعض الشيء في حقيقة أنه يبدو أن بيئة التطوير الخاصة بها متاحة فقط على جهاز Mac.أنا أيضًا لا أحب مفاهيم الترخيص الخاصة بهم تمامًا.إذا كنت تريد أن تكون قادرًا على نشر التطبيقات فعليًا، فأنت بحاجة إلى الاطلاع عليها، وسيكون لهم الكلمة الأخيرة بشأن ما إذا كنت تستطيع ذلك أم لا، أو ما إذا كان تطبيقك مقبولًا للتشغيل على منتجهم المتفوق.أعتقد أنهم يجعلون الأمر أكثر صعوبة بالنسبة لمجتمع المصادر المفتوحة لصيانة التطبيقات وإنتاجها أو بالنسبة للمبتدئين في iPhone، مثلي، حتى للبدء في كتابة التطبيقات للمنتجات.هناك الكثير من الأشياء السيئة التي قيلت عن Microsoft، لكن يجب أن أقول إنها قامت بطرح واجهات برمجة التطبيقات (APIs) وحزم تطوير البرامج (SDK) الخاصة بها قبل فترة طويلة من وصول منتجاتها إلى السوق، وتشجع حقًا المبرمجين من جميع المستويات على التنقيب والمشاركة في كتابة التطبيقات لأطر عملهم و أنظمة التشغيل.

لقد عملت على عدد قليل من تطبيقات iPhone الصغيرة وأنا مندهش من أنها لم تتضمن مكونات إطار العمل التي تمكن المطورين من الوصول بسهولة إلى خدمات الويب SOAP.هل يشعر أي شخص آخر يعمل في بيئة تكنولوجيا المعلومات بالمؤسسة بالألم؟

أنا شخصياً أعتقد أن التوثيق جيد جدًا في هذه المرحلة.في أي فئة من فئات Objective C، يمكنك النقر نقرًا مزدوجًا لإظهار الوثائق الخاصة بهذا المصطلح، وإذا كان هناك أي مشاريع أمثلة تستخدم تلك الفئة المعينة المدرجة في (على الأقل بالنسبة للعديد من فئات iPhone المحددة).

انظر أيضًا إلى تشغيل Research Assistant عند البدء لأول مرة، وتشغيل Code Sense (لا تعتقد أنه قيد التشغيل افتراضيًا).يعد الجمع بين XCode + Interface Builder قويًا للغاية عندما تعتاد عليه، وبصراحة خلال بضعة عقود لم أستخدم أبدًا أداة إنشاء واجهات أفضل من حيث كيفية عمل التكامل مع التعليمات البرمجية أو القدرة على تصميم واجهات يمكن تغيير حجمها بذكاء دون الحاجة إلى ذلك. طن من العمل الإضافي.

أنا جديد على برمجة iPhone وXCode أيضًا، بعد سنوات عديدة من البرمجة للعديد من المنصات وانطباعي قريب جدًا من انطباعك (مع بعض الاختلافات):

  • ماك أو إس إكس:لقد قمت بالتبديل من Windows منذ حوالي عامين (كتجربة) وبقيت :) - لا أعتقد أنني سأعود مرة أخرى.يعد وجود أساس Unix أمرًا رائعًا للغاية وأنا أحب واجهة المستخدم الرسومية المبهرجة + أحب البساطة الأساسية للواجهة.لقد استغرق الأمر مني حوالي شهرين للتعود عليه، لكن لا أستطيع أن أتخيل العودة.أنا أكره تخطيط لوحة مفاتيح MacBook وبعض قيود لوحة المفاتيح الخاصة بـ OSX.من المضحك كيف يمكن لشركة فخورة جدًا برؤى سهولة الاستخدام الخاصة بها أن تتوصل إلى مثل هذه المجموعة الرديئة من القرارات.ربما تكون أفضل الأمثلة هي عدم وجود اختصار لوحة المفاتيح لقائمة السياق (النقر بزر الماوس الأيمن) وحقيقة أنك تحتاج إلى مفتاحين لإنجاز مهام مثل Home وEnd وPgUp وما إلى ذلك.نصيحتي الرئيسية هي قضاء الوقت في تعلم أكبر عدد ممكن من اختصارات لوحة المفاتيح.أوصي أيضًا بتثبيت واستخدام تطبيقات الطرف الثالث التالية التي أدت إلى تحسين تجربتي مع Mac بشكل كبير: الزئبق, مكتشف المسار, 1كلمة المرور, أشياء, TextMate, رانجلر النص & نقل.

  • كود اكس:أنا أتفق معك تماما.أعتقد أن XCode هو بدائية إلى حد ما.أقارنه مع IntelliJ IDEA الذي أعمل معه كثيرًا ويبدو أن شركة Apple عالقة منذ 7 سنوات على الأقل:

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

    المفارقة الكبرى هي أن مطوري Mac الجادين لا أفهم حتى أن لديهم مشكلة...لقد اعتادوا على الفوضى التي يتعين عليهم التعامل معها لدرجة أنهم لا يستطيعون تخيل عالم أفضل ...بدلاً من مساعدتك، يستمر XCode في الوقوف في طريقك.يمكنني أن أتوصل إلى عشرات الأمثلة حول مدى سوء هذه البيئة، عند مقارنتها بـ Java IDEs الحديثة (Eclipse، IntelliJ)، لكنني أعتقد أنها مضيعة للوقت - يبدو أن Apple فخورة جدًا بالتعلم من الآخرين ...وهو أمر مضحك إذا أخذت في الاعتبار حقيقة أن مخترعي جافا لم يخجلوا من ذلك تعلم من الهدف-C.نصيحتي الوحيدة (لنفسي أيضًا) هي أن تأخذ نفسًا عميقًا عندما تفتح XCode و تعلم أكبر قدر ممكن من الخبراء الذين هم أكثر استخداما لهذه البيئة.

  • اي فون SDK:إنه أسوأ من ذلك - لقد فكرنا في النقل التطبيق المحمول لدينا إلى iPhone منذ بضعة أشهر ولكننا قررنا عدم الإزعاج لأننا كنا قلقين من أن Apple قد ترفضه من متجر التطبيقات ولا يمكنك معرفة ذلك مسبقًا (لقد مرفوض تطبيق مشابه إلى حد ما في الماضي على أساس أنه قريب جدًا من iTunes!)

  • الكائن-C:أجد لغة Objective-C لطيفة جدًا، وبعد بضعة أيام تعتاد على صياغة الرسائل غير الملائمة، ولكن هل أفتقد جمع البيانات المهملة...يبدو أن الاضطرار إلى التعامل مع عمليات تخصيص الذاكرة وإصداراتها يشبه إلى حد ما العودة بالزمن إلى أيام C/C++ المبكرة.لقد بدأت للتو في تعلم الفروق الدقيقة في هذه اللغة، ولكن حتى الآن أحب ما وجدته.هناك عدد لا بأس به من النصائح المنتشرة حول الويب حول أفضل ممارسات Obj-C والتي لا يمكنك العثور عليها في المستندات الرسمية وقد تعلمت الكثير منها (راجع على سبيل المثال المناقشة التالية هنا على Stackoverflow)

لقد جئت من خلفية C# أيضًا وأعمل مع iPhone SDK منذ الإصدار التجريبي 2.أنا أتفق تمامًا مع كرانلي بشأن كون VS ثقيلًا بعض الشيء مقارنة بـ Xcode.Xcode مختلف تمامًا، وأجنبي تمامًا عند بدء استخدامه.هكذا كان VS على الرغم من العودة في اليوم.بمجرد تجاوز منحنى التعلم، تصبح تجربة رائعة.تستخدم التطبيقات التي أقوم بتطويرها جانب خادم C# (خدمة الويب) وأنا أكره تمامًا الاضطرار إلى التبديل إلى VS لكتابة رمز خدمة الويب من Xcode.يعد Obj-C أيضًا ممتعًا جدًا للاستخدام بمجرد أن تتعلم كيف يعمل بشكل أفضل:المندوبون (يختلفون تمامًا عن مندوبي .NET)، والرسائل، والفئات وجميع الأشياء الغريبة الأخرى الموجودة.

لقد قمت ببعض برمجة Java وFlex قبل .NET وكنت دائمًا أكره مستندات .NET مقارنة بمستندات Java.هم فقط لا يقطعونها.لقد وجدت شخصيًا أن مستندات Xcodes ونظام البحث ليس أقل من مذهل.هناك عدد لا يحصى من أدلة PDF المرتبطة من المستندات التي تحتوي على الكثير من نماذج التعليمات البرمجية.التفكير في هذا:لقد كان iPhone SDK خارج النسخة التجريبية منذ شهرين تقريبًا.تظهر المستندات مستوى النضج لسنوات عديدة.ونعم، يرجع السبب في ذلك إلى أن Obj-C موجود منذ أكثر من عام وأن أطر العمل متشابهة.

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

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