JavaRush /مدونة جافا /Random-AR /اختيار لغة البرمجة

اختيار لغة البرمجة

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

عتبة الدخول: عالية، منخفضة، متوسطة

من بين المبرمجين، يمكنك أن تسمع في كثير من الأحيان عن "عتبة الدخول" - وهو مفهوم يعكس مقدار الجهد المطلوب من الفرد "المبتدئ" لإتقان لغة برمجة بمستوى كافٍ لكتابة أول برنامج جاد له والعثور على وظيفة. تتكون "عتبة الدخول" من المعرفة:
  • ميزات بناء الجملة والفروق الدقيقة في اللغة؛
  • المكتبات؛
  • الخوارزميات وهياكل البيانات.
في الواقع، حتى العمل في Excel يمكن أن يسمى نوعا من البرمجة. بالمناسبة، برنامج المكتب المألوف هذا ليس بالبساطة التي يبدو عليها. لأحد، عتبة الدخول ستكون القدرة على بناء جدول، لآخر - معرفة الصيغ المعقدة ووحدات الماكرو. وعلى أية حال، فإن هذه العتبة صغيرة. بعد ذلك تأتي أشباه اللغات: على سبيل المثال، برمجة 1C . ثم - أسهل اللغات للتعلم: مثلاً PHP . فيما يلي اللغات ذات البنية الأصلية (المشتقة عادةً من الإنجليزية) والتي لا تتطلب تفاعلًا يدويًا مع الذاكرة: على سبيل المثال، Java و JS . ثم هناك اللغات التي تتطلب معالجة دقيقة للغاية للذاكرة وهياكل البيانات والخوارزميات: على سبيل المثال، C ، C++ . ربما تكون اللغات الشابة متعددة النماذج هي العائق الأكبر أمام الدخول، لأنه لإتقانها تحتاج إلى تناول أكثر من كلب واحد في لغات البرمجة الأخرى: على سبيل المثال، Scala . ولكن قبل كل شيء، عند اختيار لغة، يجب أن تقرر ما تريد القيام به بعد ذلك: تطوير تطبيقات الويب أو المؤسسات أو سطح المكتب أو الهاتف المحمول .

الويب أم لا الويب؟

ويب

يمكن تقسيم مبرمجي الويب إلى مطوري الواجهة الأمامية والواجهة الخلفية . ومن الجدير أن نفهم ما تعنيه هذه المصطلحات. يتعامل مطورو "Frontend" مع ما يسمى بجانب العميل - وهو ما سيراه المستخدم. "الواجهة الخلفية" هي جزء البرامج والأجهزة من الخدمة - أي ما يتم تشغيله على الخادم. لكي يقرر مطور الواجهة الأمامية لغة البرمجة التي سيختارها، يجب أن يكون لديه JavaScript وأطرها: Angular JS وReact وغيرها. لهجات JS ليست شائعة مثل اللهجات الأصلية، ولكنها قد تكون مفيدة أيضًا: CoffeeScript، وTypeScript. يوجد أيضًا flash AS، قبل أن يكون هناك JScript وVBScript، لكن الديناصورات فقط هي التي تتذكر ذلك =) بالإضافة إلى ذلك، تحتاج إلى فهم HTML و CSS .
اختيار لغة البرمجة - 2
يعتقد العديد من المبتدئين أن JavaScript وJava هما نفس الشيء تقريبًا، ولا ينبغي الخلط بين هاتين اللغتين. كان يُطلق على JS اسم "LiveScript" وحصل على اسمه الحالي على وجه التحديد بسبب شعبية كلمة "Java". تعد PHP وPython وRuby وPearl وJava مناسبة للواجهة الخلفية للويب . وهنا أود أن ألفت الانتباه إلى لغة PHP - سنتحدث عن لغات أخرى لاحقاً - وهي من أسهل اللغات تعلماً، ولها عتبة دخول منخفضة. روبي، إذا حكمنا من خلال دراسة استقصائية لمطوري الويب المألوفين، تكتسب شعبية ببطء ولكن بثبات: فهي محبوبة لإيجازها وجمالها.

خارج نطاق الويب (المؤسسات، سطح المكتب، الهاتف المحمول)

لقد قمت بتجميع لغات البرمجة هذه على وجه التحديد في فئة تحمل هذا الاسم الغريب. يمكن استخدام معظمها لكتابة تطبيقات المؤسسات وسطح المكتب وحتى الأجهزة المحمولة. أصبحت Python ، وهي OOLP سهلة الفهم، شائعة بشكل لا يصدق مؤخرًا بسبب تطور التعلم الآلي : حيث يستخدم أتباعها Python على نطاق واسع. تعد ML منطقة شابة إلى حد ما في مجال تكنولوجيا المعلومات، وعلى الرغم من أن الثمار الأولى قد تم الحصول عليها بالفعل، إلا أنني لن أتسرع في الغوص في هذه الصناعة عند اختيار لغة برمجة. أولاً، يجب أن تكون جيدًا جدًا في الرياضيات. ثانيًا، قد تسير موجة الشعبية بنفس الطريقة التي تسير بها "البلوكتشين" أو "تقنية النانو". بالإضافة إلى ذلك، كما تتذكر، يتم استخدام بايثون في تطوير الويب. C++ : كلاسيكي، كل شيء مبني على أساس "الإيجابيات". كانت هذه اللغة هي سلف جميع لغات OOLPs الشائعة، ويجب على المبتدئ بالتأكيد الانتباه إليها. تعتمد عليه العديد من التطبيقات الشائعة. لكن الاحتمال الكبير لـ "إطلاق النار على قدمك" وبناء الجملة الذي يصعب فهمه ينفي احتمالية إتقان هذا المستودون من البرمجة للمبتدئين. Kotlin - Java for hipsters - مزيج مجنون من OOP والبرمجة الوظيفية. تحظى بشعبية كبيرة مؤخرًا نظرًا لحقيقة أن المطور ذي الخبرة الذي يتحول من Java إلى Kotlin يعمل على تحسين إنتاجيته بشكل كبير. سوف يعتاد المطور ذو الخبرة على هذه اللغة بسرعة. بالمناسبة، الأمر نفسه ينطبق على Scala، لكن Kotlin تحظى بشعبية كبيرة في Android. لغة جافا سهلة التعلم للمبتدئين. بما في ذلك، بفضل JavaRush : لقد فهمت هنا كيفية اختيار لغة برمجة =) بناء جملة Java واضح، وهناك إمكانية "إطلاق النار على قدمك"، ولكنها ليست حرجة.

OOP أو POP؟

النهج الإجرائي

يتضمن النهج الموجه نحو الإجراءات كتابة برنامج يتكون من بيانات متسلسلة يمكن تجميعها في كل واحد لحل مجموعة محددة من المشكلات بشكل فعال. وتشمل هذه اللغات: C و PureBasic و Pascal . نفس تلك التي تجلب اليأس لطلاب المدارس الثانوية والمبتدئين. هناك أيضًا GO صغير نسبيًا . ومع ذلك، فإن الإلمام باللغات الإجرائية مفيد جدًا للمطور المحتمل. بالنسبة لي، يرتبط الانغماس في اللغات الإجرائية بنظام Mathematica (Wolfram) وأنشطة البحث الجامعي. بفضل الأساليب الخوارزمية الصحيحة والإجراءات البسيطة، والانتقال خطيًا من بداية البرنامج إلى نهايته، تمكنت من حساب القيم ذات الصلة بالفيزياء النظرية الحديثة. بفضل هذه اللغات "المتسلسلة" تبدأ في فهم أنه في بعض الأحيان يكون من الأسهل كتابة التعليمات البرمجية بدلاً من الاعتماد عليها بنفسك. توفر دراسة الشراكة بين القطاعين العام والخاص تدريبًا خوارزميًا جيدًا، والذي يرغب صاحب العمل دائمًا في رؤيته عند المرشح عند التوظيف. إن أسس كل شيء وكل شخص في مجال تكنولوجيا المعلومات مبنية على لغات إجرائية، لذا لا تقلل من شأنها. بالمناسبة، غالبًا ما يعتقد المبتدئون الذين يقررون لغة البرمجة التي يريدون تعلمها أن تعدد مؤشرات الترابط هو اختصاص حصري لـ OOP. هذا خطأ. تتيح لك لغات البرمجة الإجرائية أيضًا إجراء عمليات حسابية متوازية.
اختيار لغة البرمجة - 3

النهج الموجه للكائنات

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

مثال

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

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    أوسع قاعدة وثائق: وثائق أوراكل الرسمية، وبوابات التدريب، والمجتمع المتطور باستمرار. يمكن العثور على إجابات لمعظم الأسئلة التي تنشأ أثناء التطوير في بضع دقائق، والشيء الرئيسي هو فهم ما يجب كتابته في محرك البحث =)

  3. شعبية.

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

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

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

    اختيار لغة البرمجة - 4
  4. ذكري المظهر.

    لقد احتل نظام Android بثقة أكثر من 80% من سوق الهواتف المحمولة على مدار السنوات الأربع الماضية، وتعمل أجهزة التلفزيون ومشغلات الوسائط وحتى أنظمة الوسائط في السيارات تحت نظام التشغيل هذا. ويتم تطوير نظام التشغيل هذا بشكل أساسي في Java. فقط تخيل ما هي الآفاق التي تفتح. عندما حصلت على وظيفة كمطور Android، أصبحت مهتمًا: ما هي تكلفة المنتج الذي أقوم بتطويره؟ اتضح أن السعر سنويًا يبلغ حوالي 5 دولارات. نشأ سؤال معقول: من أين أتت الأموال اللازمة لهذا المكتب، للرواتب والبسكويت وطاولة التنس والروبوتات وغيرها من "الأشياء الجميلة"؟ إنها مسألة كمية: تطبيقنا يضم 20 مليون مستخدم.

  5. الرواتب.

    وللحلوى: يعد راتب مطور Java من أعلى الرواتب في الصناعة. سوف تتعلم البرمجة لغرض محدد: الحصول على وظيفة جيدة.

شعبية لغة البرمجة

عند اختيار لغة البرمجة، عليك أن تفكر في الهدف النهائي للتعلم - وهو الحصول على وظيفتك الأولى. لتقييم شعبية اللغات المختلفة، ذهبت إلى بوابة التوظيف الشعبية وبدأت في النظر في عدد الوظائف الشاغرة للطلبات المختلفة لموسكو. يمكنك ان ترى النتائج اسفل.
جافا: 277
بايثون: 227
بي أتش بي: 188
ج#: 147
ج++: 131
روبي: 40
سكالا: 24
كوتلين: 20
حتى لغة بايثون الشهيرة مؤخرًا لم تتمكن من التقدم على جافا. لكن هذه بيانات ذاتية: مدينة معينة، يوم محدد. هناك مصادر رسمية فلننتقل إليها. اعتبارًا من أكتوبر 2018، وفقًا لـ TIOBE، احتلت Java المرتبة الأولى. في تصنيف PYPL ، تحتل Java المركز الثاني، متقدمة بفارق كبير عن JS وتتنافس مع لغة Python "العصرية".

نتائج

إليك ما يجب على المبتدئ الانتباه إليه عند اختيار لغة البرمجة:
  • الشعبية (تحتل Java مكانة رائدة باستمرار)؛
  • عتبة الدخول (بالنسبة لـ Java - متوسط: نطاق الكفاءات المطلوبة من قبل صاحب العمل واسع جدًا)؛
  • المواد المتاحة (لا توجد بوابات مشابهة لـ JavaRush باللغة الروسية، لذلك يمكنك تخمين من =))؛
  • مجالات التطبيق: كلما زاد عدد الصناعات التي يمكن فيها استخدام لغة البرمجة، زادت الحاجة إلى المتخصصين في السوق. لقد تحدثت بالفعل عن النظام الأساسي المشترك، لكنني لن أتعب من تكرار ذلك.
بالطبع، هناك مطبات في كل مكان، لكن من يمشي سيتقن الطريق: أنت وحدك من يستطيع أن يقرر لغة البرمجة التي سيختارها . حظ موفق في دراستك!
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION