ما لغة البرمجة للتعلم في 2018 ولماذا؟

إذا كنت تريد بإصرار الانضمام إلى فريق تطوير المترجم أو في "Wild West world" ، فلا تتردد في اختيار وتعلم أفضل لغة برمجة من TIOBE وأفضل ما في الأمر: على مستوى مواصفاته. ولكن على محمل الجد ، أصبح كل شيء في الصناعة الآن مرتبكًا جدًا بالمنطق والاستنتاجات ، والكثير من التسويق والماء ، بحيث أن الاستراتيجية الأكثر ربحًا هي تشغيل عقلك وإجراء إعادة تقييم صريحة للقيم التقنية التي اعتدنا عليها. في المنشور ، سأحاول توجيه أكبر قدر ممكن من المطورين الذين بدأوا حياتهم المهنية إلى مخاطر اختيار التقنيات واستخلاص الاستنتاجات الصحيحة والبعيدة (البعيدة) البعيدة المدى.

هل نضجت أم لا؟


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



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

صناعة تكنولوجيا المعلومات - بالجنون


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



سرعة الدماغ


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

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

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

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

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



هندسة الدماغ والمشاريع


لأن لا أحد يعرف كيفية البرمجة بشكل صحيح ، فقد تشكلت طريقة "التصميم والموثوقية المختصة" عن طريق الانتقاء الطبيعي. أنت مجنون بالبرمجة بلغات تسمح بعمليات الذاكرة غير الآمنة عبر المؤشرات - يمكنك أيضًا جلب العالم إلى نهاية العالم: "خطأ التجزئة في برنامج مفاعل نووي". كيف يمكن للمرء أن يبدأ في تنفيذ مشروع دون دعم الكتابة القوية باللغة؟ وقد توصلوا إلى لغات البرمجة الصحيحة التالية: Java و C #. لكن في جاوا ، نسوا مخاطر القيم الفارغة ، وفي سي # لم يفكروا بالكامل في التوافق العكسي. والنتيجة عالم ضخم مؤمن نسبياً ومتوافق إلى الوراء نسبياً. في هذا العالم ، يتم قياس الهدف في أسطر من التعليمات البرمجية في اليوم (عادةً ما لا يزيد عن بضع عشرات ، لأن الأصابع يتم فركها في الدم) والكتب الفلسفية والدينية السميكة حول أنماط التصميم ، ونعمًا ، لقد نسيت تقريبًا طريقة دفن نفسي والمشروع والعميل والبيئة العالم في الكود والغرق فيه ، تذكر في عذاب التسلسل الهرمي للوراثة على مستوى 20 - حول OOP . واحدة من الشعارات الرئيسية في المخيم هي "لماذا ببساطة ، إن أمكن ... صعبة وموثوقة ، لفترة طويلة ، لقرون!". علاوة على ذلك ، يمكن لبعضهم الكتابة بسرعة وأناقة ، وغسل أيديهم بالدم وجمع هيكل المشروع في رؤوسهم كل صباح ، بالنظر إلى 3 شاشات في نفس الوقت. لكن البعض مدمنون للغاية لدرجة أنهم يواصلون إنشاء تسلسلات هرمية داخل التسلسل الهرمي للتسلسل الهرمي إلى ما لا نهاية - وقد ضاع الهدف منذ فترة طويلة ، ولا تزال العيون تحترق وتسبب الحكة.

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



إنه أمر ممتع بشكل خاص عندما يكون هناك "ثابت" (علامات الاقتباس ، لأن ما سيحدث بعد ذلك حول haskell) الكتابة الثابتة (هذا هو عندما يتم معرفة أنواع الكيانات مقدمًا ، ويتم التحقق منها من قبل المترجم ولا يمكنك إضافة سلسلة إلى الرقم) بسهولة ومتعة عند إعادة هيكلة وتحسين الشفرة ومرتفعة إذا ناهيك عن بيئات تطوير رائعة وعالية الجودة. غالبًا ما يكون الزملاء في هذا المخيم متعلمين للغاية في هندسة البرمجيات ، ويقرأون كثيرًا (حد الدخول مرتفع) ، ويفهمون إمكانيات العديد من مكتبات المنصات ، وأنماط التصميم ، وتقنيات كتابة أطنان من الوثائق وإنشاء اختبارات مؤتمتة ، واختبارات هذه الاختبارات ويمكنهم كتابة محاكاة لأشهر ، والتي تبين غير ضروري. مرة أخرى - غالبًا ما يتم إنشاء المشاريع وإطلاقها لفترة طويلة جدًا ، من قبل فرق كبيرة ، هناك حاجة إلى العديد من المختبرين ، لكن طبيعة الأخطاء هي أمر أقل خطورة ، مما يلهم. الدخول في هذه "طبقة" تنمية المشاريع أمر صعب للغاية. إذا أوضحت كيف يمكنك في PHP حل المشكلة المكونة من 5 أسطر التي سيحلها زملاؤك في جافا في 5 أيام ، سيتم حرقك على قيد الحياة في الميكروويف :-)

موثوقية الدماغ


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

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



نتيجة وفعالية "الدماغ"


إلى الجحيم مع العمارة و OOP ، أخي! Cthulhu يحبك ، وطباعة البط هي مفتاح النجاح! كتابة قوية؟ ومن الذي في صوابه أن يعين خيطًا لرقم؟ الكتابة والتجميع الثابت مضيعة للوقت ، لأن الشفرة مكتوبة مرة واحدة ، وإذا لم يكن لديك الوقت لكتابتها من أجل الإصدار ، فسيتم التخلص منها (وحتى التخلص منها ، ولكن بعد ذلك بقليل). إعادة بيع ديون؟ كتابة الحق :-) التغليف؟ ضع شرطة أمام اسم المتغير وكل الأشياء . OOP هو إعادة توجيه غير ضرورية. ما هو تجميع الجحيم F5 وترى النتيجة. أنماط التصميم - لا ، لم تسمع: البرمجة النصية لدينا كلها ... هل تريد بعض الأعشاب؟

الشيء الأكثر إثارة للاهتمام هو أنه عندما تتعمق في اللغات ذات الكتابة الديناميكية (صارمة في الثعبان ، وغير صارمة في php و javascript) ، فإن عينيك تفتحان تدريجيًا على الصورة الحقيقية للأشياء ، لأن:

  • يصبح الرمز واضحًا ومختصرًا للغاية ولا توجد حاجة لتسلق 20 صفًا (إذا لم يكن يتعلق بمكتبات النظام)
  • يمكنك التحقق من الفكرة بسرعة من خلال REPL
  • اللغات بسيطة ، وغالبًا ما تكون بسيطة ، وتحتوي على البدائل الضرورية والقوية (القوائم والقواميس) ، والأهم من ذلك - تناسب رأسك!
  • هناك سحابة من المكتبات ويمكنك دائمًا حل أي مشكلة في 5 أسطر

وإلى الجحيم ، مع إعادة البيع :-) أصبحت الحياة أكثر متعة (آمل أن المطور الذي يدعم الكود الخاص بي لن يعرف أين أعيش). في هذا المخيم ، ستقابل في الغالب العديد من الأشخاص المبتهجين من تخصصات مختلفة تمامًا ، باستثناء "برمجة المجمّع" ، الذين ، مع ذلك ، قادرين ، مع ذلك ، بسرعة وكفاءة ، على حل المشكلات في 5 أسطر ودعم مشاريع الشفرة والويب لفترة طويلة وبنجاح.

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



وما مدى سهولة رفع خادم الويب غير المحظور الذي يخدم آلاف الاتصالات في 10 خطوط على node.js والمجتمع ينمو بسرعة فائقة ؟

ولا يوجد "Eclipse XML Soap Entiny beans Enterprise OOP ..." - json و csv وابتسامة (ورائحة نبات غير معروف). ويتم قراءة الكود ووضعه في الدماغ ، وبالتالي فهو يعمل بسعادة وطويل ويتم الحفاظ عليه بنفس السهولة لسنوات عديدة.

وتبين أنه يمكن أيضًا برمجة "هذه الطريقة" بنجاح وأن السنوات التي يتم قضاؤها في "لغات البرمجة الصناعية" تعيش عبثًا (لكن الأصابع أصبحت أقوى).

اختيار التكنولوجيا


هل أنت في حالة صدمة؟ أنا أيضًا. وتخيل مدى دهشة العملاء ، واختيار التكنولوجيا لتنفيذ مشروع الأعمال! :-)

أعتقد أنك فهمت جيدًا في الوقت الحالي جيدًا أن عالم تكنولوجيا المعلومات أصبح مجنونًا حقًا وضاع (تمزح فقط). تحاول بعض لغات البرمجة ، مثل سكالا ، الجلوس على جميع الكراسي ، لكنها ما زالت لا تنجح حقًا - أصبح من الصعب فهم الرمز باعتباره مجرد بشر. ولكن بجدية ، فإن المنافسة على نماذج البرمجة ستشتد فقط لأن ... المهام في المشاريع مختلفة تمامًا وهي من المهام التي تحتاجها "للرقص"! في المجال المستقر (الخوادم والمكتبات) ، تكون الكتابة الاسمية (C ++ ، Java ، C # ...) أفضل ، في مكان ما سيكون أفضل مع الكتابة الهيكلية (Golang ، Haskell ...) ، وفي برمجة الويب أو مهام الجهاز سوف يجلب التعلم السعادة الحقيقية مع البط (python ، php ، javascript ...). ليس من الضروري التفكير في أن الكتابة الثابتة ، وخاصة الكتابة الصارمة ، هي "يجب أن يكون لديك" مباشرة - ستفشل في المواعيد النهائية وسيتم طرح الشفرة مع التفكير بجنون الارتياب حول "الأخطاء المحتملة" في سلة المهملات. في الويب ، والبرمجة النصية ، والتعلم الآلي ، يمكنك المضي قدمًا بثقة إلى الأمام بسرعة كبيرة وبطباعة ديناميكية من البطة و php و python مع عدد كبير من المكتبات الجميلة والقوية ، وهذا مثال جيد.

لذلك ، ننسى "ماذا تعلم لغة برمجة في 2018" إلى الجحيم:

  • فهم نماذج البرمجة (OOP يمكن أن يكون قبرًا ، أو يمكن أن يوفر لك مشروعًا)
  • فهم تعقيدات الكتابة والمخاطر والفرص المرتبطة بهذا (يمكنك لعنة الكتابة الديناميكية في مكتبة مالية ، أو يمكنك التضحية بمبرمج جافا لـ Cthulhu وإعادة كتابة 100 فصله في 100 سطر في برنامج نصي مفهومة حتى للأطفال)
  • على مستوى الحدس ، فهم الخوارزميات (تحتاج إلى التمييز بين البحث والفرز ، والشبكة العصبية من الانحدار اللوجستي - ولفهم المزيد ، عليك أن تتعلم ... طوال حياتك ، لكن الأمر يستحق ذلك)
  • نفهم أن المطورين ذوي الخبرة (على الرغم من أن لا أحد يعرف مكان العثور عليها في السوق) سينفذ المشروع في الوقت المحدد تقريبًا على أي تقنية (حتى الدماغ) وسيفعل ذلك بشكل جيد ، ولكن سيتعين على ذوي الخبرة اختيار لغة برمجة مع المستوى الأكثر راحة لمخاطر الدخول والانهيار لا تزال رائعة

بعد ذلك ، حدد مجال المهام التي ترغب في القيام بها ، مثل الويب أو التعلم الآلي ، و:

  • انظر إلى ما يحل الناس هذه المشاكل
  • تبديد المخاطر والفرص لكل صك وفقا للمعايير المذكورة أعلاه
  • اجلس في عطلة نهاية الأسبوع مع 1-3 أدوات محددة ، ولكن لا يصل الأمر بأي حال من الأحوال إلى التعصب أو المواصفات
  • انطلق إلى العمل بشكل أسرع واكتسب خبرة في استخدام الأدوات في الممارسة - وهذا هو أهم شيء
  • لست بحاجة إلى تعلم لغة البرمجة "حتى النهاية" - من الأفضل أن تتعلم كيفية حل مشكلتك في الأدوات الخمسة الأكثر شيوعًا في 10-15 سطرًا وستتصرف في الواقع بطريقة مناسبة للغاية!

دراسة حالة - ML


لنفترض أنك مهتم بتعلم الآلة ... تهانينا! من ناحية ، هناك نظرية أكاديمية - ولكن عليك أن تستخلص جوهرها وفقًا للإحصاءات والجبر الخطي ، ولا يجب أن تقضي وقتًا طويلًا في دورات لعدة شهور (اذهب ، صدقني ، مجنون إذا لم تكن عالم رياضيات ، ولكن إنسانيًا - وهو غير محسوس بالنسبة لك ) من ناحية أخرى ، تحتاج إلى معرفة كيفية كتابة رمز مفيد بسرعة وحل مشكلة في 5-15 سطرًا. نعم ، يمكنك كتابة كل شيء بلغة C في 10000 سنة ، لذلك يمكنك إلقاء نظرة على تجربة الزملاء واختيار ، بشكل صحيح ، python ، حيث يوجد الكثير من المكتبات والحلول الجاهزة حول هذا الموضوع. أنت تكرس يومين من الراحة لدراسة الثعبان - ليس هناك المزيد لتعلمه هناك ، اللغة بسيطة للغاية (واتفقنا على عدم الصعود إلى البرية ، لأن الوقت هو المال).

بالإضافة إلى ذلك ، اقرأ عن جوهر numpy ، pandas ، scikit-تعلم ، وإذا كانت عيناك مستقيمتين ، فعندئذ Keras والمضي قدمًا ، نفذ المشاريع. ولكن يمكنك الذهاب بطريقة أخرى ، طويلة وصعبة وتؤدي إلى قداسة شخصية وفقر اجتماعي (بعد 3 سنوات ستفهم جوهر الخوارزمية ، وتبيع الصحف في قطار كهربائي ، ولكن ربما هذه طريقة خاصة) - ابدأ في تطبيق الخوارزميات بنفسك ، باستخدام إدارة الذاكرة اليدوية ، أو تنفيذ حل أثقل والحفر في الرمز لأشهر. الأداة الخاطئة - مفتاح الليالي الخالية من النوم والوقت الضائع - تتجنب التعقيد بكل الطرق.

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

الاستنتاجات


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

  • تجنب الالتصاق والانغماس في الأجزاء التكنولوجية المفرطة ، التي يتزايد عددها بشكل كبير
  • اختر مجالًا مثيرًا للاهتمام من المشكلات التي تهتم فيها بحل مشكلات العملاء
  • تعلم كيفية استخراج الجوهر القصير والمثير من أدوات ولغات البرمجة
  • اكتب أقل قدر ممكن ، ولكن واضح ومفهوم لك والأشخاص من حولك
  • تعلم حل المشكلات في 5-15 سطرًا ، وليس 20-50 فصلًا
  • إذا كنت تريد الذهاب إلى أي مكان آخر ، فليكن الأشياء الأساسية مثل الرياضيات أو haskell أو rfc بواسطة tcp / ip
  • استمتع بالبرمجة ودفئ زملائك معها!



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

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


All Articles