JavaRush /وبلاگ جاوا /Random-FA /انتخاب زبان برنامه نویسی

انتخاب زبان برنامه نویسی

در گروه منتشر شد
من اولین بار با برنامه نویسی در مدرسه، در کلاس های علوم کامپیوتر مواجه شدم. اینها توضیحات خسته کننده ای از اصول سیستم های عددی n بود. خوب، به عنوان یک آزمایش، مجبور شدم وب سایت خودم را بنویسم. سپس به نظرم رسید که دیگر هیچ فعالیت خسته کننده ای در دنیا وجود ندارد. چقدر اشتباه کردم! متاسفانه برنامه درسی علوم کامپیوتر مدرسه تصویر کاملی از کار آی تی ارائه نمی دهد و نحوه انتخاب زبان برنامه نویسی مشخص نیست. انتخاب زبان برنامه نویسی - 1قبل از پرسیدن این سوال که "کدام زبان برنامه نویسی را برای یادگیری انتخاب کند"، یک مبتدی باید با زبان های موجود و تفاوت های آنها آشنا شود.

آستانه ورود: بالا، کم، متوسط

در میان برنامه نویسان، شما اغلب می توانید در مورد "آستانه ورود" بشنوید - مفهومی که نشان دهنده میزان تلاش مورد نیاز برای یک "جوانر" فردی برای تسلط بر زبان برنامه نویسی در سطح کافی برای نوشتن اولین برنامه جدی خود و یافتن شغل است. "آستانه ورود" شامل دانش است:
  • ویژگی های نحو و تفاوت های ظریف زبان؛
  • کتابخانه ها
  • الگوریتم ها و ساختارهای داده
در واقع حتی کار در اکسل را هم می توان نوعی برنامه نویسی نامید. به هر حال، این برنامه آفیس آشنا به آن سادگی که به نظر می رسد نیست. برای یکی، آستانه ورود، توانایی ساخت جدول خواهد بود، برای دیگری - دانش فرمول های پیچیده و ماکروها. در هر صورت این آستانه کم است. بعد شبه زبان ها آمده اند: به عنوان مثال، برنامه نویسی 1C . سپس - ساده ترین زبان ها برای یادگیری: به عنوان مثال، PHP . بعد زبان هایی با نحو بومی (معمولاً از انگلیسی مشتق شده) هستند که نیازی به تعامل دستی با حافظه ندارند: به عنوان مثال، جاوا ، JS . سپس زبان هایی وجود دارند که به مدیریت بسیار دقیق حافظه، ساختار داده ها و الگوریتم ها نیاز دارند: به عنوان مثال، C ، C++ . زبان‌های چند پارادایم جوان، شاید بالاترین مانع ورود را داشته باشند، زیرا برای تسلط بر آنها باید بیش از یک سگ در زبان‌های برنامه‌نویسی دیگر بخورید: به عنوان مثال، Scala . اما قبل از هر چیز، هنگام انتخاب یک زبان، باید تصمیم بگیرید که در مرحله بعد چه کاری انجام دهید: برنامه های کاربردی وب، سازمانی، دسکتاپ یا موبایل را توسعه دهید .

وب یا نه وب؟

وب

برنامه نویسان وب را می توان به توسعه دهندگان Frontend و Backend تقسیم کرد . ارزش درک این را دارد که این اصطلاحات به چه معنا هستند. توسعه دهندگان "Frontend" با به اصطلاح سمت مشتری سر و کار دارند - آنچه کاربر خواهد دید. "Backend" بخش نرم افزاری و سخت افزاری سرویس است - چیزی که روی سرور اجرا می شود. برای یک توسعه دهنده Frontend که تصمیم می گیرد کدام زبان برنامه نویسی را انتخاب کند، جاوا اسکریپت و چارچوب های آن ضروری است : Angular JS، React و دیگران. لهجه های JS به اندازه والد خود محبوب نیستند، اما می توانند مفید باشند: CoffeeScript، TypeScript. فلش AS نیز وجود دارد، قبل از اینکه JScript و VBScript وجود داشته باشد، اما فقط دایناسورها به یاد دارند که =) علاوه بر این، شما باید HTML و CSS را درک کنید .
انتخاب زبان برنامه نویسی - 2
بسیاری از مبتدیان فکر می کنند که جاوا اسکریپت و جاوا تقریباً یکسان هستند؛ این زبان ها را نباید اشتباه گرفت. JS قبلا "LiveScript" نامیده می شد و نام فعلی خود را دقیقاً به دلیل محبوبیت کلمه "Java" دریافت کرد. PHP، Python، Ruby، Pearl، Java برای بک‌اند وب مناسب هستند. در اینجا می‌خواهم توجه را به PHP جلب کنم - بعداً در مورد سایر زبان‌ها صحبت خواهیم کرد - یکی از آسان‌ترین زبان‌ها برای یادگیری که آستانه ورودی پایینی دارد. روبی، با قضاوت بر اساس نظرسنجی از توسعه دهندگان وب آشنا، به آرامی اما مطمئناً محبوبیت پیدا می کند: به دلیل کوتاهی و زیبایی اش مورد علاقه است.

غیر وب (سازمانی، رومیزی، تلفن همراه)

من به طور خاص این زبان های برنامه نویسی را در دسته ای با چنین نام عجیبی گروه بندی کردم. بیشتر آنها را می توان برای نوشتن برنامه های کاربردی سازمانی، دسکتاپ و حتی تلفن همراه استفاده کرد. Python ، یک OOLP آسان برای درک، اخیراً به دلیل توسعه یادگیری ماشینی بسیار محبوب شده است : طرفداران آن به طور گسترده از Python استفاده می کنند. ML یک حوزه نسبتاً جوان در IT است و اگرچه اولین ثمرات قبلاً دریافت شده است ، هنگام انتخاب یک زبان برنامه نویسی عجله ای برای فرو رفتن در این صنعت ندارم. اول، شما باید در ریاضیات خیلی خوب باشید. ثانیاً، موج محبوبیت ممکن است مانند «بلاک چین» یا «نانوتکنولوژی» پیش رود. علاوه بر این، همانطور که به یاد دارید، پایتون در توسعه وب استفاده می شود. C++ : کلاسیک، همه چیز بر اساس "مضافات" ساخته شده است. این زبان مولد همه OOLP های محبوب بود و یک مبتدی قطعا باید به آن توجه کند. بسیاری از برنامه های محبوب بر اساس آن هستند. اما احتمال زیاد "تیراندازی به پای خود" و نحوی که درک آن دشوار است، احتمال تسلط یک مبتدی بر این ماستودون برنامه نویسی را نفی می کند. Kotlin - جاوا برای هیپسترها - ترکیبی دیوانه از OOP و برنامه نویسی کاربردی. اخیراً به دلیل این واقعیت که یک توسعه‌دهنده با تجربه که از جاوا به کاتلین تغییر می‌کند، به طور قابل توجهی بهره‌وری خود را بهبود می‌بخشد. یک توسعه دهنده با تجربه به سرعت به این زبان عادت می کند. به هر حال، همین امر در مورد اسکالا نیز صدق می کند، اما کاتلین در اندروید محبوب است. یادگیری جاوا برای یک مبتدی آسان است. از جمله، به لطف JavaRush : اینجا بود که فهمیدم چگونه یک زبان برنامه نویسی را انتخاب کنم =) نحو جاوا واضح است، امکان "تیراندازی به پای خود" وجود دارد، اما مهم نیست.

OOP یا POP؟

رویکرد رویه ای

رویکرد رویه گرا شامل نوشتن برنامه ای متشکل از عبارات متوالی است که می توانند در یک کل واحد جمع شوند تا به طور موثر طیف خاصی از مسائل را حل کنند. این زبان ها عبارتند از: C ، PureBasic و Pascal . همان هایی که باعث ناامیدی دانش آموزان دبیرستانی و راهنمایی می شود. همچنین یک GO نسبتاً جوان وجود دارد . با این حال، آشنایی با زبان های رویه ای برای یک توسعه دهنده بالقوه بسیار مفید است. برای من، غوطه ور شدن در زبان های رویه ای با سیستم Mathematica (Wolfram) و فعالیت های تحقیقاتی دانشگاه مرتبط است. به لطف رویکردهای الگوریتمی درست و رویه‌های ساده، حرکت خطی از ابتدای برنامه تا پایان آن، من توانستم مقادیری را محاسبه کنم که با فیزیک نظری مدرن مرتبط هستند. به لطف این زبان های "متوالی" است که شما شروع به درک می کنید که گاهی اوقات نوشتن کد آسان تر از حساب کردن روی خود است. مطالعه PPP آموزش الگوریتمی خوبی را ارائه می دهد، که یک کارفرما تقریباً همیشه می خواهد در هنگام استخدام آن را در یک نامزد ببیند. اساس همه چیز و همه افراد در IT بر روی زبان های رویه ای بنا شده است، بنابراین آنها را دست کم نگیرید. به هر حال، مبتدیانی که تصمیم می گیرند کدام زبان برنامه نویسی را برای یادگیری انتخاب کنند، اغلب فکر می کنند که multithreading در انحصار 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. محبوبیت.

    جاوا محبوب ترین زبان برنامه نویسی در جهان است: علاوه بر توسعه دهندگان اندروید و وب که در بالا ذکر شد، تقریباً هر توسعه دهنده سازمانی که برای اولین بار است به جاوا می نویسد. Enterprise یک توسعه داخلی است که برای نیازهای شرکت های بزرگ ضروری است.

    هر سال، متنفران "مرگ جاوا" را پیش بینی می کنند، آنها می گویند: " اوراکل از آن پشتیبانی نمی کند، و به طور کلی شما مزخرف می کنید ." این اشتباه است! نسخه‌های جدید جاوا هر شش ماه یکبار منتشر می‌شوند. مهم ترین نوآوری ها و ویژگی های آخرین نسخه را می توانید اینجا بخوانید .

    برای من لامبداها در جاوا 8 یک انقلاب و یک کشف بود، نه به نسخه های جدید! اکنون من روی یک پروژه رتروگراد کار می کنم، بنابراین به نوآوری ها نمی پردازم، اما این واقعیت که جاوا ادامه دارد یک واقعیت است.

    انتخاب زبان برنامه نویسی - 4
  4. اندروید.

    اندروید با اطمینان بیش از 80 درصد از بازار تلفن همراه را در 4 سال گذشته اشغال کرده است ؛ تلویزیون ها، پخش کننده های رسانه ای و حتی سیستم های رسانه ای در خودروها تحت این سیستم عامل کار می کنند. و توسعه این سیستم عامل عمدتاً در جاوا انجام می شود. فقط تصور کنید چه چشم اندازی در حال باز شدن است. زمانی که به عنوان یک توسعه دهنده اندروید مشغول به کار شدم، علاقه مند شدم: هزینه محصولی که در حال توسعه آن هستم چقدر است؟ معلوم شد که قیمت در سال تقریباً 5 دلار است. یک سوال منطقی مطرح شد: بودجه این دفتر از کجا آمده است، برای حقوق، کلوچه، میز تنیس، روبات ها و سایر "چیزهای خوب"؟ این موضوع کمیت است: برنامه ما 20 میلیون کاربر دارد.

  5. حقوق و دستمزد

    و برای دسر: حقوق یک توسعه دهنده جاوا یکی از بالاترین حقوق در صنعت است. شما قصد دارید برنامه نویسی را برای یک هدف خاص یاد بگیرید: به دست آوردن یک شغل خوب.

محبوبیت یک زبان برنامه نویسی

هنگام انتخاب یک زبان برنامه نویسی، باید به هدف نهایی از یادگیری فکر کنید - به دست آوردن اولین شغل خود. برای ارزیابی محبوبیت زبان های مختلف، به یک پورتال محبوب استخدام رفتم و شروع به بررسی تعداد جای خالی برای درخواست های مختلف برای مسکو کردم. در زیر می توانید نتایج را مشاهده کنید.
جاوا: 277
پایتون: 227
php: 188
c#: 147
c++: 131
یاقوت سرخ: 40
اسکالا: 24
کاتلین: 20
حتی پایتون اخیراً محبوب نیز نتوانست از جاوا پیشی بگیرد. اما اینها داده های ذهنی هستند: یک شهر خاص، یک روز خاص. منابع رسمی وجود دارد، اجازه دهید به آنها مراجعه کنیم. از اکتبر 2018، طبق TIOBE، جاوا در رتبه اول قرار دارد. در رتبه بندی PYPL ، جاوا در جایگاه دوم قرار می گیرد، بسیار جلوتر از JS و با پایتون "مد" رقابت می کند.

نتایج

در اینجا چیزی است که یک مبتدی باید در هنگام انتخاب یک زبان برنامه نویسی به آن توجه کند:
  • محبوبیت (جاوا به طور مداوم موقعیت پیشرو را اشغال می کند).
  • آستانه ورود (برای جاوا - میانگین: دامنه شایستگی های مورد نیاز کارفرما بسیار گسترده است).
  • مواد موجود (هیچ پورتالی مشابه JavaRush به زبان روسی وجود ندارد، بنابراین، کف دست می رود تا حدس بزند چه کسی =)).
  • زمینه های کاربردی: هر چه صنایعی که بتوان از زبان برنامه نویسی در آن ها استفاده کرد، به متخصصان بیشتری در بازار نیاز است. قبلاً در مورد کراس پلتفرم صحبت کرده ام، اما از تکرار آن خسته نمی شوم.
مطمئناً همه جا مشکلاتی وجود دارد، اما کسی که قدم می‌زند بر جاده مسلط می‌شود: فقط شما می‌توانید تصمیم بگیرید که کدام زبان برنامه‌نویسی را انتخاب کنید . امیدوارم در مطالعه موفق باشی!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION