CodeGym /وبلاگ جاوا /Random-FA /انتخاب زبان برنامه نویسی
John Squirrels
مرحله
San Francisco

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

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

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

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

وب یا نه وب؟

وب

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

نه وب (سازمانی، دسکتاپ، موبایل)

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

OOP یا POP؟

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

رویکرد رویه‌محور شامل نوشتن برنامه‌ای متشکل از عبارات متوالی است که می‌توانند در یک کل واحد جمع شوند تا به طور مؤثر مجموعه خاصی از مسائل را حل کنند. چنین زبان هایی عبارتند از C , PureBasic و Pascal . به عبارت دیگر زبان هایی که ناامیدی را برای دانش آموزان دبیرستانی و کارشناسی به ارمغان می آورد. همچنین زبان نسبتاً جوان GO وجود دارد . گفته می شود، آشنایی با زبان های رویه ای برای یک توسعه دهنده بالقوه بسیار مفید است. غوطه ور شدن من در زبان های رویه ای با سیستم Wolfram Mathematica و تحقیقات دانشگاهی حاصل شد. الگوریتم‌های مناسب و رویه‌های ساده، حرکت خطی از ابتدای برنامه تا پایان، به من امکان داد مقادیر مربوط به فیزیک نظری مدرن را محاسبه کنم. این زبان برنامه نویسی "متوالی" تنها چیزی است که به شما کمک می کند درک کنید که گاهی اوقات نوشتن کدهایی که محاسبات را به صورت دستی انجام می دهند آسان تر است. برنامه نویسی مبتنی بر روش یادگیری (POP) آموزش الگوریتمی خوبی را ارائه می دهد، که یک کارفرما تقریباً همیشه می خواهد آن را در یک نامزد شغلی ببیند. مطلقاً همه چیز در IT بر اساس زبان‌های رویه‌ای ساخته شده است، بنابراین آنها را دست کم نگیرید. به هر حال، مبتدیانی که تصمیم می گیرند کدام زبان برنامه نویسی را یاد بگیرند، اغلب فکر می کنند که فقط زبان های OOP از چند رشته ای پشتیبانی می کنند. این درست نیست. زبان های برنامه نویسی رویه ای نیز امکان محاسبات موازی را فراهم می کنند. انتخاب زبان برنامه نویسی - 3

رویکرد شی گرا

کسانی که با زبان‌های رویه‌ای شروع کرده‌اند، معمولاً در ریاضیات، الگوریتم‌ها و ساختار داده‌ها (به دلیل تأکید دانشگاه‌های فنی بر این حوزه‌ها) به خوبی آشنا هستند. با این حال، واقعیت امروز این است که برنامه نویسان موفق معمولاً کسانی هستند که بر رویکرد متفاوتی در برنامه نویسی تسلط دارند: پارادایم شی گرا. ایدئولوژی OOP به شما امکان می دهد سیستم های واقعا جهانی بسازید. یکی از ویژگی های این رویکرد شباهت آن با دنیای واقعی است:
  • اشیاء مختلف با یکدیگر تعامل دارند و مستقل از یکدیگر وجود دارند.
  • اشیا دارای یک سلسله مراتب هستند و می توانند رفتار اجداد خود را بپذیرند یا تغییر دهند.
  • شما می توانید از مفاهیم انتزاعی استفاده کنید، اما فقط اشیایی که در واقع وجود دارند می توانند تعامل داشته باشند.

مثال

زبانهای رویه گرا ابزارهایی برای حل مسائل خاص هستند. اگر وظیفه شما حتی اندکی تغییر کند، احتمالاً باید زمان و تلاش خود را صرف بازنویسی همه الگوریتم‌ها کنید.

برنامه ای را تصور کنید که یک نمایندگی خودرو را توصیف می کند که خودروها و کامیون های نو و دست دوم را می فروشد. در یک زبان رویه‌ای، باید توابعی را تعریف کنید که ورودی یا خروجی داده‌ها را برای هر موجودیت پردازش می‌کنند: یک ماشین جدید، یک کامیون جدید، یک ماشین دست دوم و یک کامیون مستعمل. OOP چه چیزی را ارائه می دهد؟ با یک رویکرد شی گرا، ما فقط باید یک کلاس پایه Vehicle تعریف کنیم که ویژگی های مشترک همه انواع خودرو را ذخیره می کند:

  • بسازید
  • جابجایی موتور
  • اسب بخار
  • سال
  • نو یا دست دوم
  • قیمت

و روشهای دریافت و ارسال اطلاعات سپس اشیایی ایجاد می کنیم که ویژگی های کلاس Vehicle را به ارث می برند: Car and Truck. آنها حاوی اطلاعاتی هستند که به طور خاص به این نوع خودروها و همچنین روش های ورودی/خروجی مربوط می شود.

ناگهان مدیریت نمایندگی تصمیم می گیرد با ارائه موتورسیکلت، خط تولید را گسترش دهد. تحت رویکرد رویه‌ای، ما باید تمام منطق موتورسیکلت‌های جدید و کارکرده را بازسازی کنیم، در حالی که یک زبان OOP به ما اجازه می‌دهد تا یک کلاس موتورسیکلت جدید ایجاد کنیم که تمام ویژگی‌های سوپرکلاس خودرو را به ارث می‌برد و شامل اصلاحات خاص موتورسیکلت است.

و اگر وسایل نقلیه مختلف را اضافه کنیم چه اتفاقی می افتد؟ اجرای رویه ای به کار بیشتری نسبت به OOP نیاز دارد. علاوه بر این، هرچه صف آرایی بزرگتر باشد، عملیات کمتری شامل اشیا مورد نیاز خواهد بود.

بنابراین، OOP یک سبک برنامه نویسی است که به شما امکان می دهد داده ها و متدها را در یک موجودیت واحد ترکیب کنید و با آنها به عنوان یک شی واحد کار کنید. موجودیت‌ها می‌توانند در یک سلسله مراتب مرتب شوند و بدون پرداختن به جزئیات پیاده‌سازی داخلی یکدیگر، با یکدیگر تعامل داشته باشند. من به سه دلیل اشاره می کنم که چرا OOP برای من رویکرد مترقی تر است:
  1. OOP شامل توسعه مستقل ماژول های فردی است که به برنامه نویس یا تیم اجازه می دهد تا روش و مرزهای تماس و تبادل اطلاعات را انتخاب کند.
  2. کد تقسیم شده به ماژول های کوچک بسیار راحت تر از رویه های یکپارچه خوانده می شود. در نتیجه، یک فرد خارجی می تواند به سرعت کد شما را درک کند، و به همین ترتیب، در صورت لزوم می توانید به یک پروژه جدید بپیوندید.
  3. یک کلاس را می توان بدون تأثیر بر تعامل کلاس دیگر تغییر داد، اما چنین تغییری می تواند سلسله مراتب اشیاء فرزند را تحت تأثیر قرار دهد. هنگامی که بر این رویکرد مسلط شدید، گسترش و اصلاح یک برنامه امری بی اهمیت می شود.
به یاد داشته باشید که یک رویکرد با رویکرد دیگر در تضاد نیست، اما OOP همچنان در سلسله مراتب بالاتر است. بنابراین، چرا جاوا را توصیه می کنم؟ دلایل زیر را برجسته می کنم:
  1. کراس پلت فرم.

    جاوا به لطف ماشین مجازی جاوا (JVM) در همه جا کار می کند. یکی از مزیت های اصلی این زبان ماهیت چند پلتفرمی آن است: نیازی به فکر کردن در مورد اینکه کدام کتابخانه را اضافه کنید یا معماری یک پردازنده خاص نیست. "یک بار بنویس، هر جا فرار کن."

  2. مستندات.

    یک پایگاه مستندات عظیم وجود دارد: اسناد رسمی اوراکل، پورتال های آموزشی، و یک جامعه دائما در حال تکامل. پاسخ اکثر سوالاتی که در طول توسعه ایجاد می شود را می توان در چند دقیقه پیدا کرد. نکته اصلی این است که بفهمیم چه چیزی را وارد موتور جستجو کنیم =)

  3. محبوبیت.

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

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

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

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

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

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

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

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

منابع رسمی اطلاعات وجود دارد، بنابراین اجازه دهید به آنها مراجعه کنیم. طبق TIOBE ، جاوا از اکتبر 2019 در رتبه اول قرار دارد. در رتبه بندی PYPL ، جاوا در رتبه دوم قرار دارد، بسیار جلوتر از JS و رقیب پایتون مرسوم.

نتیجه

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