
من مترجم: هذه المقالة عبارة عن ترجمة مختصرة قليلاً
للمقال الأصلي من قبل Gal Schlesinger ، مطور الواجهة الأمامية ذو الخبرة. إنه يحب البرمجة حقًا ، وتدرس هوايته لغات برمجة مختلفة (وأحيانًا غير متوقعة للغاية) لأغراض العمل وللمشاريع الخاصة بالحيوانات الأليفة. يتحدث جال أيضًا عن مزايا وعيوب العديد منهم في هذه المواد.
على الرغم من حقيقة أنني في العمل غالبًا ما أعمل مع Java و JS و Ruby ، إلا أنني أحب تعلم لغات وأطر عمل جديدة. يبدو لي أن التدريب المستمر يساعد على تكوين أفكار جديدة مثيرة للاهتمام يمكن استخدامها ، إذا لزم الأمر ، لحل مشكلة معينة. بالإضافة إلى ذلك ، تساعد البرمجة الوظيفية على فهم المزيد عن البرمجة الموجهة للكائنات ، والعمل المستمر مع ريلز يسمح لك بتعلم العديد من الفروق الدقيقة في الاختبار (بالطبع ، إذا كنت تمارس). تكمن المشكلة في أنه عاجلاً أم آجلاً ، في عملية تعلم لغات أخرى ، تبدأ في التساؤل: هل هناك مثال مثالي بينهم ، حيث سيتم جمع جميع الوظائف المفيدة التي وجدتها في الآخرين؟
توصي Skillbox بما يلي: دورة عملية "Mobile Developer PRO" .
نذكرك: لجميع قراء "هبر" - خصم 10000 روبل عند التسجيل في أي دورة من دورات Skillbox باستخدام الرمز الترويجي "Habr".
أريد أن أضيف: تفضيلاتي في لغات البرمجة قد لا تتطابق مع تفضيلاتك. في هذه المقالة أصف تجربتي المكتسبة خلال الشهرين الماضيين في سياق العمل في المشاريع الكبرى وتلك التي أنشأتها في وقت فراغي.
روبي
بدأت أتعلم روبي فقط لأن مجتمعه يكرر باستمرار فكرة أن كل شيء هنا يختلف عن Java ، التي عملت معها سابقًا. أنا حقا أحب روبي. هذه لغة رائعة مع عدد كبير من المكتبات الجاهزة (نسميها الأحجار الكريمة ، الأحجار الكريمة) ، والتي تسمح لك بتطوير تطبيق جديد بسرعة واستخدامه. القضبان - ما يمكن تسميته "جلست وذهبت".
روبي هي لغة موجهة للكائنات ، بحيث تكون جميع التعليمات البرمجية بنفس النمط تقريبًا ، بغض النظر عن المكتبة التي تقرر اختيارها. المجتمع هنا قوي جدًا: يفضل المبرمجون تعديل المكتبات الحالية بدلاً من إنشاء مكتبة جديدة في كل مرة (ActiveRecord و Sequel كمثال). تسمح لك هذه الميزة بجعل حياتك أسهل.
صحيح أن روبي ليست سريعة بما يكفي عندما يتعلق الأمر بالأداء. عادة ما تكون المكونات "ثقيلة" وتستغرق وقتًا طويلاً للتحميل. التدريب مع ريلز أمر ممتع ، ولكن تشغيل التطبيقات يعني قضاء الوقت والمال. يعد كل من Heroku و AWS ECS أمثلة على ذلك: سيتعين عليك الدفع مقابل ذاكرة الوصول العشوائي ومساحة الملفات وحركة المرور ووقت التشغيل. بالإضافة إلى ذلك ، يجب أن يوضع في الاعتبار أن وقت البدء المقدر لتطبيق متوسط الحجم هو 5-10 ثوانٍ.
جافا سكريبت
أحب جافا سكريبت. معظم مشاريع الواجهة الأمامية للويب ، حيث يمكن لأي شخص الآن الوصول إلى المتصفح. هذه لغة سهلة التعلم نسبيًا ، وهي شائعة جدًا ، وعتبة الدخول منخفضة. أدوات المطور جيدة جدًا ، وتنفيذ النماذج باستخدام JavaScript هو مجرد حلم. لدى المجتمع أيضًا العديد من الأعضاء الذين يولون الكثير من الاهتمام لتحسين المكونات.
شبيبة لديه الكثير من العيوب. أحد أهمها هو تقسيم المجتمع إلى مناطق مختلفة من تطوير اللغة وفقًا لتفضيلاته. لذا ، فإن التمايز الرئيسي هو حول أنظمة النوع (التدفق مقابل TS) ، وتختلف طرق استخدام المكتبات وكل شيء آخر. ونتيجة لذلك ، العديد من التطورات ، وحدات ببساطة "الخام".
سويفت
بعد العمل باللغتين السابقتين ، بدأت في تعلم Swift. كنت بحاجة إلى اللغة للتقدم في "لعبة المطور". في البداية ، كنت في المستوى صفر ، لأنني كنت أعرف فقط كيفية إنشاء تطبيقات باستخدام Native React. من حيث المبدأ ، كان هذا كافياً ، لكنني أردت معرفة المزيد.
Swift هي لغة مكتوبة بشكل ثابت. في البداية ، تم إنشاؤه لتطوير التطبيقات في نظام Apple البيئي ، ولكن بعد ذلك أصبح مفتوح المصدر ، لذلك يعملون الآن معه لإنشاء تطبيقات لنظام Linux. ميزة اللغة هي أن التطبيقات المكتوبة فيها يتم تحميلها بسرعة ، وعملية التجميع واضحة ، وبالتالي يتم تقليل عدد أخطاء وقت التشغيل تدريجيًا.
بناء جملة اللغة مثير للاهتمام وليس من الصعب تعلمه ، بعض الوظائف تساعد على تجنب الأخطاء والمشاكل. على سبيل المثال ، إذا كان جزء من الرمز "يتوقع" سلسلة ، فلا يُسمح بالإرسال الخاطئ لعدد صحيح. يسمح لك هذا بالتقاط الأخطاء وتصحيحها في المرحلة الأولى من عملية التطوير.
لماذا سويفت ليس بطلي؟ والحقيقة هي أنه ليس من السهل الكتابة في Swift في المحررين بخلاف Xcode. عادة ما أستخدم Vim ، المحررين الآخرين أبطأ. بطريقة ما جربت VSCode و Atom ، لكني لم أحبهم حقًا. ربما في النهاية سأركز على Swift CLI ، والذي سيسمح لك بإنشاء مكونات إضافية للمحرر ، ولكن ليس الآن. لا يحتوي Swift أيضًا على تجميع ثابت ، لذا لاستخدام CLI ، ستحتاج إلى تكوين البيئة الخاصة بك باستخدام Swift. هذا أمر طبيعي لتطبيقات Mac ، لكن الخوادم هي Linux.
السبب
أنا سعيد جدًا بهذه البنية ومجموعة الأدوات الجديدة لـ Ocaml التي طورها Facebook. التولكيت ناضجة للغاية ، فهي تعطي الكثير من الوظائف. الجيدون هم OPAM ، مدير الحزم ، بالإضافة إلى Merlin و OCaml / Reason. كل هذا يعمل بشكل جيد مع Vim. وحتى إذا لم تذكر محرك الإكمال التلقائي ووظائف أخرى. أدوات المطور هنا جيدة جدًا.
يمكن تجميع السبب في JS باستخدام BuckleScript ، الذي يولد JS قابل للتنفيذ من كود Reason / OCaml. هذا مذهل ، لأنه في هذه الحالة نحصل على أنظمة مكتوبة بالكامل مع تفاعل JS ممتاز ، ويمكننا أيضًا استخدام المكتبات الضرورية.
الشيء الوحيد الذي لا يعجبني هو أنه يتعين علي إنشاء العديد من تعريفات الأنواع فقط لاستخدام التبعية. لكن هذا ليس شيئًا ، لأننا لسنا بحاجة إلى تجميع الوحدة بالكامل ، ولكن فقط إدخال / إخراج الوظيفة / الفئة / الطريقة المحددة التي نستخدمها. كل هذا يعمل بسرعة كبيرة وبدون مشاكل.
تحولت صعوبة إنشاء تطبيق Reason الأصلي إلى استخدام بعض المكتبات. هذا هو OCaml في المقام الأول ، ولكن نظرًا لأن OCaml و Reason قابلة للتبادل ، فقد استخدمت امتداد Chrome للعمل مع رمز السبب. تحولت المشكلة إلى وجود رمز OCaml لا يمكن تحويله إلى السبب ، ربما بسبب نقص PPX في ملحق Chrome. PPX ، كما أفهمها ، ملحق بناء الجملة هو ماكرو يحول الشفرة. هذا جزء من البرنامج المساعد بابل.
بالمناسبة ، لا يدعم Reason / Ocaml متعدد النواة ، فهناك Lwt لهذا الغرض. ولكن بالنسبة لهذه المكتبة ، لا توجد حتى الآن كتيبات واضحة!
حد دخول OCaml / Reason مرتفع جدًا ، وهو أمر محبط قليلاً. لم يتم تطوير المجتمع كثيرًا ، وقليل من الناس يفسرون الأشياء الغريبة جيدًا. ربما سيتغير هذا بمرور الوقت.
جولانج
مجرد لغة رائعة. من السهل التعلم ، يتم تجميع التعليمات البرمجية وتشغيلها دون مشاكل. هناك دعم للأنظمة متعددة النواة والعديد من الميزات المفيدة الأخرى. تم تطوير المجتمع تمامًا ، مع وجود عدد كبير من المتخصصين.
حقيقة أن هناك العديد من الوحدات والتطبيقات القوية المكتوبة في Go ، مثل Docker ، Kubernetes ، CockroachDB ، تعني أنه يمكنك إنشاء بنية أساسية ثنائية ، على سبيل المثال ، Raspberry pi داخل التطبيق الخاص بك.
إن عدم وجود الأدوية الجنيسة (التي يمكن إضافتها في أحد الإصدارات التالية) أمر غريب لأنه توجد صعوبات "هيكلية" عند استخدام الرسوم البيانية والأشجار والخوارزميات. أفضل المترجم أن يفعل كل شيء من أجلي.
بالإضافة إلى ذلك ، المشكلة بالنسبة لي ليست واضحة جدا نظام VGO وحدات. مع مرور الوقت ، سنتعلم المزيد عنه ، حيث يتطور المجتمع تدريجيًا ، ولكن حتى الآن هناك القليل من المعلومات. اللغة نفسها معقدة للغاية. هذا ليس سببًا لعدم استخدامه ، ولكن في الوقت الحالي أتجنب العمل بدوام كامل مع Golang. إنه ، إذا جاز التعبير ، ممل. ربما خلال الوقت سوف أعيد النظر في آرائي.
كريستال
بدأنا مع روبي ، لذلك أقترح إنهاء كريستال.
هذه واحدة من اللغات الجديدة ، ما زالت لا تصل إلى الإصدار 1.0 ، الذي يشبه روبي تقريبًا ، ولكنه مكتوب بشكل ثابت وسريع! يقدم للمطورين عددًا كبيرًا من الوظائف ، بما في ذلك الأنواع الاختيارية ، CSP وأكثر من ذلك بكثير. هناك زوجان من أطر عمل Crystal الجديدة مثل Lucky و Amber. هناك كمال ، مثل سيناترا ، ولكن بالنسبة لـ Crystal ، بالإضافة إلى هناك ORMs.
ولكن ، بما أن اللغة لا تزال شابة ، فهي ليست جاهزة تمامًا للاستخدام النشط. على سبيل المثال ، أود أن يستخدم كريستال جميع النوى ، مثل Go. محرر مع الإكمال التلقائي وتلميحات من الأنواع أثناء التحويم لن يكون غير ضروري. أنا قلق قليلاً بشأن فكرة أن كريستال قد لا يصل إلى الإصدار 1.0. آمل بصدق أن ينجح.
ما هي لغة البرمجة المفضلة لديك ولماذا؟
توصي Skillbox بما يلي: