أي لغة الخادم لاختيار ... لمطور المحمول

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

في AppsConf ، نعتقد جميعًا أننا في بعض الأحيان نحتاج إلى تجاوز تطوير الأجهزة المحمولة وضخ قبعة الحرف T في نموذج T. هنا ، على سبيل المثال ، تعرف على لغات الخادم بشكل أعمق قليلاً من: "سمعت أن روبي قد مات". وعلى نطاق أوسع قليلاً - وهذا ليس فقط مع الشعبية ، ولكن أيضًا من الصفوف الثانية وحتى الصفوف السرية.

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

- ما مدى إعجابك بفكرة وجود مجموعة كاملة من تقارير المراجعة حول التقنيات المختلفة بدءًا من الواجهة الخلفية وحتى الواجهة الأمامية في مؤتمر تطوير الأجهزة المحمولة ، والذي أطلقنا عليه اسم "المقدمة"؟

نيكيتا سوبوليف CTO في wemake.services ، مؤلف منهجية عملية تطوير البرمجيات القابلة للتكرار ، ومنظم ElixirLangMoscow ، وعضو لجنة برنامج موسكو بيثون ++ Conf ++ ، متحدث متكرر في مؤتمرات تكنولوجيا المعلومات وبطل جودة البرمجيات .


في رأيي ، هذا هو المسار الأفضل في مؤتمر عبر الأجهزة المحمولة.

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

لسوء الحظ ، يبدو لي أن مطوري الأجهزة المحمولة بهذا المعنى هم وحدهم. تتفاقم المسألة من حقيقة أنها تعتمد اعتمادا كبيرا على البائع. بمعنى تقريبي ، ستغلق Apple - سوف تغادر في البرد.

لذلك ، أحب حقًا فكرة المسار التمهيدي وحقيقة أن ضيوف المؤتمر مدعوون للنظر حولهم ومعرفة ما لديهم من الآخرين والتعلم من تجربتهم وتحسين أنفسهم كمتخصص من حيث اتساع وجهات النظر.

- لأي مؤتمرات أخرى تعتبر هذه الفكرة ذات صلة؟

بالنسبة للكثيرين. لدي في متناول اليد مثال بيثون. آخر مرة قمنا بدعوة Go ، Elixir و Julia. هذا العام أريد أن أدعو الواجهة الأمامية و Haskellist ( بالمناسبة ، دعوة للأوراق مفتوحة بالفعل ). نظرًا لأن مطوري Python مختلفون أيضًا ، حيث يعمل الكثير منهم كمكدس كامل ، فمن المفيد لهم أيضًا الحصول على المعرفة من الخارج.

- هل تعتقد أن مطوري الأجهزة المحمولة أصبحوا أكثر استعدادًا للالتفاف حولهم ، لأنه أصبح ضروريًا للتطوير المهني ، أم أنه كان دائمًا كذلك ، لقد نضج المجتمع فقط؟

يصعب علي الحكم بدقة ، آخر مرة كتبت فيها تطبيقًا للهاتف المحمول في عام 2010. لغتي الرئيسية هي Java ، أخذت Objective-C وكتبت تطبيقًا لنظام iOS. اعتقدت أنني كنت مستوحىً من ذلك ، وسأبدأ الآن في القيام بكل هذا. لكن لا: لم تكن هناك إدارة للذاكرة ، ولم تكن هناك مكتبات ، ولم تكن هناك إدارة تبعية ، وكان نظام الإنشاء مثير للاشمئزاز. منذ ذلك الحين ، لم أنظر بعناية في هذا المجال.

والآن أرى العديد من الاتجاهات التي تجذب العمال المتنقلين بشكل طبيعي إلى "البرمجة الجادة".

في الماضي ، كانت اللغات متخصصة للغاية في هذا المجال. كان الهدف- C فقط لتطوير أبل. والآن ، على سبيل المثال ، يحاولون سحب Swift إلى الخادم والقيام بشيء فيه. كانت Java للواجهة الخلفية ولأندرويد لغتين مختلفتين. والآن Kotlin يشبه إلى حد ما على حد سواء. ظهرت JavaScript في عالم تطوير تطبيقات الأجهزة المحمولة ، وهذا نوع من لغة الخادم ، وفي الوقت نفسه ، لغة الواجهة الأمامية.

هناك بنية تحتية واحدة تبدأ باهتمام الناس. إذا كان تطوير الهاتف المحمول في وقت سابق (في حالتي 2010) بعيدًا تمامًا عن الأنظار ، فقد أصبح كل شيء مختلفًا الآن.

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

- ولكن إذا كان التكامل نفسه يذهب إلى مطور الهاتف المحمول ، فلماذا يفهم لغات الواجهة الخلفية؟

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

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

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

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

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

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

- هل لدى مطور تطبيقات الهاتف المحمول أفكار عامة كافية أم لا؟

ذلك يعتمد أولاً على البيئة. إذا كان الشخص بحاجة إلى التأثير بشكل مباشر على الواجهة الخلفية في شركته: تعيين المزيد من المهام الصحيحة لهم ، والمشاركة في العملية ، وربما لإدارة هؤلاء الأشخاص ، فسيتعين عليك تحديد ذلك بعمق.

ولكن إذا كنت منخرطًا فقط في تطوير الأجهزة المحمولة ، فستكون لديك فكرة سطحية عما يحدث هناك ، وما هي اللغات ، والمشاكل ، والحلول الشائعة. بالنسبة لهؤلاء الأشخاص ، يتم احتساب تقريري حول Saint AppsConf. بطبيعة الحال ، لا يمكن تقديم عرض عميق في تقرير واحد.

- ماذا يحتاج المطور أن يكون مطورًا رائعًا؟

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

هذه المهارات ، كما يبدو لي ، كافية. يمكن استنتاج كل شيء آخر من هذه الأشياء أو التخلص منها.

- إذن أنت تعتقد أنك بحاجة إلى فهم الموضوع؟

محدود ، بالطبع ، ولكن ضروري. على سبيل المثال ، لدينا 3 إلى 4 مشاريع في وقت واحد ، بالطبع ، لا أفهمها تمامًا ، لكنني أفهم المفاهيم الأساسية التي أعمل بها. كيف تترابط ، وكيف تؤثر على المال ، أين النفقات ، أين الدخل ، لماذا كل هذا ضروري للعمل.

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

- دعنا ننظر إلى مثال. إذا كتبت خدمة توصيل لمخبز ، فأنت بحاجة إلى فهم كيفية عمل التسليم ، ولكن ليس عليك أن تفهم أنواع الكعك التي يخبزها هذا المخبز؟

وفي بعض أنواع الكعك أيضا. لأنه يمكن تخزين بعض الكعك لمدة ساعة ، وحوالي يومين. وفقا لذلك ، فإن تسليمها سيكون مختلفا.

- في تقريرك ، تعد بمراعاة العديد من اللغات الشائعة في آن واحد ، وعدة لغات من الصفوف الثانية وعدة لغات من تحت الأرض العميق. ما هي اللغات ستكون؟

لن أتناول تلك اللغات التي يمكن للمشاركين في المؤتمر معرفتها بالفعل: Kotlin و Java و JavaScript. لا معنى للتحدث عنهم إذا كان معظم الجمهور على دراية بها بالفعل. قررت التحدث عن اللغات التي يضمن للناس عدم معرفتها ، لأن تطبيقات الهاتف المحمول لا تكتب لهم على الإطلاق. هناك الكثير للاختيار من بينها.

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

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

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

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

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

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

- هل تعتقد أنك بحاجة إلى اختيار لغتك لكل مهمة ، مشروع؟

هذه فكرة جيدة ، لكنها لا تعمل في الممارسة. بالضبط حيث بدأنا. هناك مبرمجون لنظام Android ، وهناك مبرمجون في Python ، عندما يعرضون لهم رمز Ruby ، ​​وهو نفس الشيء ، فقط في الملف الشخصي ، يقولون: "أوه لا ، كل شيء غير مفهوم ، لا أريد أن أفهمه".

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

يضاف عامل التوظيف هنا أيضا. على سبيل المثال ، في شركتنا ، لم نتمكن من الاختيار من بين TypeScript و Python. ولكن ، إذا كنت بحاجة إلى استئجار مطور Elixir ، فسأبحث عنه طوال حياتي. أنا أعرف هؤلاء المطورين ، لكن ليس كثيرًا ، وليس حتى يمكنني أن أجذبهم إلي بسرعة. لذلك ، يجب عليك التخفيف من طموحاتك والتكيف مع السوق والعملاء الذين لديهم أيضًا كومة محدودة وفقًا للسوق.

- تعد بنظرة ذاتية إلى حوالي 10 لغات مختلفة تمامًا. هل أنت على دراية بهم جميعًا ، هل كتبت شيئًا ما عليهم؟

مع كل بطرق مختلفة ، ولكن ، بالطبع ، حاولت كل منهم على الأقل إلى حد ما.

على سبيل المثال ، في Rust I ، اكتب المصدر المفتوح ، وعلى المهر كتبت 15 سطرًا من التعليمات البرمجية ، وقرأت البرنامج التعليمي ، وأُعجب ، والآن أريد أن أعرض المشاركين في المؤتمر. بحيث هم أيضا مستوحاة من الفكرة.

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

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

- ماذا ستكون العناصر الرئيسية لبرنامجك؟

هناك العديد من اللغات ، كلها رائعة ، ولكن لا يوجد شيء للكتابة عليها.

هناك العديد من اللغات الشائعة لحل مشكلات عملك: التوظيف والعملاء والمكتبات. لكنها أصبحت كلها شعبية لسبب ما. كقاعدة عامة ، السبب الرئيسي هو أنها بسيطة للغاية. تعتمد على مفاهيم بسيطة يسهل البدء بها ، ولكن من الصعب الاستمرار فيها.

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

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

- كتابة "Hello world" على هاسكل هي بالفعل إنجاز كبير ، لكن أليس هذا كافياً؟

نعم ، تحتاج إلى الغليان في مجتمع الموظفين. للاستماع إلى المشكلات التي يحلونها وما هي التقارير التي يقدمونها - حتى تتمكن من فهم القسم.

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

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

النظام مهم.

- بالإضافة إلى اللغات واللغات الشائعة ، كما تقول ، من السلسلة الثانية ، والتي تُسمع على الأقل إلى حد ما ، ستقدم لغات غير معروفة تمامًا. على سبيل المثال ، ما هذا المهر؟

Pony هي لغة برمجة مفتوحة المصدر وموجهة للكائنات ونموذج ممثل وآمنة من حيث القدرات وعالية الأداء. هذا ، مكتوب بشدة ، ذاكرة آمنة ، لغة الممثل. انه شاب جدا ومثيرة للاهتمام للغاية.

يقوم مطوروها بإنشاء لغة يمكنك من خلالها إنشاء عدد كبير جدًا من الممثلين ، كما هو الحال في Elixir ، لكن هذه الجهات المضمونة مضمونة من حيث النوع. حدود تطبيق هذه اللغة لا تزال غير مفهومة تماما. لكنني أقول إنه يستطيع أن يضرب Go ، وأنا أؤيد بنشاط كل ما يمكن أن يضرب Go.

- إذا كانت جميع اللغات بها عيوب وقيود ، فما العمل؟ ماذا تفعل حيال ذلك؟

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

Saint AppsConf بعد 10 أيام. اختارت لجنة البرنامج 35 تقريرًا و 12 اجتماعًا ، سيجد كل مطور للهواتف المحمولة أفكارًا مفيدة لحل المشكلات اليومية ولتطورهم المهني والشخصي. سأقابلك يومي 21 و 22 أكتوبر في سان بطرسبرج!

سؤال مكافأة لأولئك الذين يرغبون في تبادل خبراتهم ، ولكن لسبب ما لم تصبح بعد المتحدث. تتحدث كثيرًا ، لماذا تحتاجه وما الذي يحفزك؟

لدي ثلاثة أهداف:

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

يمكن للمتحدث في المؤتمر التأثير على الصناعة من خلال الجمهور. يستطيع من المنصة إثبات وجهة نظره وتحفيز الناس على التغيير.

Source: https://habr.com/ru/post/ar471070/


All Articles