پنج دلیل برای یادگیری یک زبان برنامه نویسی جدید در سال ۹۹
در این مطلب، پنج دلیل برای یادگیری یک زبان برنامه نویسی جدید در سال ۹۹ بیان شده است. «بروس لی» (Bruce Lee) یک جمله معروف دارد: «من از مردی که ۱۰,۰۰۰ ضربه گوناگون را یکبار تمرین کرده است نمیترسم؛ اما از مردی که یک ضربه را ۱۰,۰۰۰ بار تمرین کرده است، میترسم». پرسشی که اکنون و با بیان این نقل قول برای بسیاری از افراد مطرح میشود، این است که آیا افراد نیازی به یادگیری زبانهای برنامهنویسی گوناگون دارند یا باید روی زبانی که در حال حاضر آن را میدانند متمرکز شوند و صرفا از آن استفاده کنند؟ همچون بسیاری از دیگر پرسشها، پاسخ این پرسش نیز، «بستگی دارد»، است. در ادامه مطلبِ پنج دلیل برای یادگیری یک زبان برنامه نویسی جدید در سال ۹۹، به این پرسش پاسخ داده شده است.
دلایل یادگیری یک زبان برنامه نویسی جدید در سال نو
به افرادی که در حال یادگیری اولین زبان برنامهنویسی خود هستند، توصیه میشود تا در ابتدا، همان یک زبان را به خوبی یاد بگیرند. اما در پاسخ به افرادی که در حال حاضر یک زبان برنامهنویسی را به خوبی بلد هستند و برنامهنویسانی که روی بیش از یک زبان برنامهنویسی مسلط هستند، توصیه میشود که در سال جدید، یک زبان برنامهنویسی جدید را بیاموزند.
یادگیری یک زبان برنامهنویسی جدید نیز مانند یادگیری بسیاری از دیگر چیزها، قیمت خودش را دارد. این کار نیازمند تخصیص زمان، انرژی و توان فکری و مغزی زیادی است. یادگیری یک زبان جدید میتواند مزایای زیادی را به صورت مستقیم یا غیرمستقیم دربرداشته باشد. در ادامه، پنج مزیت کلی که افراد میتوانند با یادگیری یک زبان جدید از آنها بهرهمند شوند بیان شده است.
جهانبینی وسیعتر در زمینه برنامهنویسی
در عصر نوین، چشمانداز زبانهای برنامهنویسی، گسترده، متنوع و پیچیده است. معمولا، یک زبان برنامهنویسی تنها بخشی از چشمانداز زبانهای برنامهنویسی را پوشش میدهد. یک داستان معروف وجود دارد که چند فرد چشم بسته، بخشهایی از بدن یک فیل را لمس و آن را بر اساس ظن خودشان تفسیر میکنند.
برای مثال، یک نفر، دُم فیل را لمس میکند و میگوید که این یک طناب است؛ دیگری بدن او را لمس میکند و میگوید این یک دیوار است و به همین صورت این ماجرا ادامه دارد. داستان مشابهی نیز برای زبانهای برنامهنویسی وجود دارد.
در تصویر زیر، پارادایمهای برنامهنویسی اصلی بیان شدهاند.
در یک پارادایم، زیرپارادایمهای بیشتری وجود دارند. معمولا، یک زبان برنامهنویسی روی یک پارادایم متمرکز میشود. برای مثال، «زبان برنامهنویسی سی» (C Programming Language) از پارادایم «رویهای» (Procedural) و «هسکل» (Haskell) از پارادایم «تابعی» (Functional) تبعیت میکند. همچنین، زبانهای زیادی وجود دارند از پارادایمهای گوناگون - نه به صورت صد درصد - تبعیت میکنند. برای مثال، «جاوا» (Java) هم از پارادایم «شیگرایی» (Object Oriented) و هم تا حدی تابعی پشتیبانی میکند. یادگیری یک زبان برنامهنویسی جدید، به فرد تصویر بزرگتری از زبانهای برنامهنویسی میدهد و در واقع، جهانیبینی او را گسترش خواهد داد. همچون دیگر زمینهها، در حوزه برنامهنویسی نیز داشتن یک تصویر بزرگتر، معمولا کمککننده است و به افراد یک دیدگاه عمیقتر و وسیعتر پیرامون دنیای برنامهنویسی میدهد.
سازگاری
در روزگاری نه چندان دور، زندگی یک توسعهدهنده، آسان و البته، ایستا بود. در آن روزگاران، افراد میتوانستند یک زبان برنامهنویسی اصلی را بیاموزند و باقی عمر خود را با همان زبان، کار کنند و درآمد داشته باشند. اما در روزگار مدرن، زندگی یک توسعهدهنده نرمافزار پویاتر است.
با افزایش «میکروسرویسها» (Microservices)، «برنامهنویسی چند زبانه» (Polyglot Programming) به یک کار عادی مبدل شده است و یک کار استثنائی و ویژه محسوب نمیشود. امروزه، افراد ممکن است یک زبان برنامهنویسی جدید را به خاطر شغل یا پروژهای که در حال انجام آن هستند یاد بگیرند. مغز انسان در «یادگیری انتقال» (Transfer Learning) بسیار قدرتمند عمل میکند. برای مثال، افرادی که در حال حاضر زبان برنامهنویسی هسکل یا «اسکالا» (Scala) را بلد هستند، میتوانند دیگر زبانهای برنامهنویسی تابعی را سریعتر یاد بگیرند.
افرادی که قصد یادگیری یکی از زبانهای برنامهنویسی مدرن مانند «کاتلین» (Kotlin) را دارند، میتوانند دیگر زبانهای مدرن مشابه (مانند تایپاسکریپت) را به سرعت یاد بگیرند. امروزه، حتی چارچوبهای وب فرانتاِند (Frontend) نیز از پارادایمهای برنامهنویسی گوناگونی استفاده میکنند. بنابراین، اگر افراد در حال حاضر اسکالا یا هسکل را میدانند، میتوانند چارچوب فرانتاند «ریاکت» (React) را سریعتر یاد بگیرند؛ زیرا ریاکت به شدت از مفاهیم برنامهنویسی تابعی استفاده میکند. اغلب شرکتها در صدد توسعه برنامههای جدید با یک پشته نرمافزاری جدید هستند. افرادی که زبانهای برنامهنویسی گوناگونی را میدانند، به راحتی میتوانند شانس خود را برای پیوستن به یک پروژه جدیدتر و جذابتر امتحان کنند.
جعبه ابزار بزرگتر
این امکان وجود دارد که افرادی که میدانند چگونه از یک ابزار مانند چکش استفاده کنند، از آن ابزار برای هر کاری، حتی کارهایی که برای آن مناسب محسوب نمیشود نیز، استفاده کنند. داستان مشابهی نیز برای توسعهدهندگان نرمافزاری وجود دارد. نوع بشر تمایل دارد تا در منطقه امن خود باقی بماند. در نتیجه، برنامهنویسها نیز معمولا تمایل دارند به زبانی که در حال حاضر به آن مسلط هستند کد بزنند و از آن در هر شرایطی استفاده کنند.
برنامهنویسان زیادی وجود دارند که یک زبان (مثلا جاوا یا جاوا اسکریپت) را میدانند و سعی میکنند تا از آن در هر شرایطی استفاده کنند. یادگیری یک زبان برنامهنویسی جدید، مجموعه ابزارهای فرد را ارتقا میدهد و از او، توسعهدهنده بهتری میسازد.
راهی به سوی توسعه نرمافزار فول-استک
با رشد معماری میکروسرویس، تقاضا برای برنامهنویسهای فولاستک افزایش پیدا میکند. معماری میکروسرویس نیاز به یک تیم چند-عملکردی دارد. اگر در تیمی برای مثال دو توسعهدهنده وجود دارد که تنها میتوانند بکاند کار کنند، تیم به اندازه کافی انعطافپذیر نخواهد بود.
در برخی از پروژهها، چنانکه توسعهدهندگان فرانتاند و بکاند به صورت موازی کار کنند، مانع از پیشرفت تیم میشوند. به طور ویژه، هنگامی که هر دو توسعهدهنده فرانتاند یا هر دو بکاند کار باشند، کار نمیتواند به خوبی پیش برود.
تیم در صورت داشتن توسعهدهندگان فولاستک میتواند بین کارهای گوناگون به راحتی جا به جا شود. همچنین، شرکتها معمولا پرداختهای بیشتری به توسعهدهندگان فولاستک دارند. شایان توجه است که یادگیری یک زبان برنامهنویسی جدید از فرد یک توسعهدهنده فول استک نمیسازد. اما به او کمک میکند تا به یک توسعهدهنده فولاستک مبدل شود.
توسعه شغلی
افرادی که در صدد صعود از نردبان شغلی خود هستند، نه تنها باید کارشناسانی با دانش عمیق باشند، بلکه باید دامنه تخصصهای بیشتری نیز داشته باشند. در نقش یک معمار نرمافزار، افراد باید تصمیماتی پیرامون طراحی استک کامل، و نه فقط فرانتاند یا بکاند، بگیرند.
روزی روزگاری، معماران «برج عاج» (Ivory Tower) (کنایه از شکاف بین دانش و کاربرد) وجود داشتند که میتوانستند معماری نرمافزار را برای یک پروژه، بدون کدنویسی کردن، طراحی کنند. اما در حاضر شرکتها به دنبال معمارهای نرمافزاری هستند که میتوانند کدنویسی کنند.
فردی که یک معمار نرمافزار است که میتواند در چندین زبان برنامهنویسی به کدنویسی بپردازد، بیشتر توسط سایر توسعهدهندگان مورد احترام قرار میگیرد. البته، نباید فراموش کردن که انجام معماری نرمافزار یا معمار راهکار، نیازمند فراگیری مهارتهای بیشتری است. اما یادگیری یک زبان برنامهنویسی جدید به افراد کمک میکند تا در صورت تمایل، به یک معمار نرمافزار یا معمار راهکار مبدل شوند.
اگر مطلب بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشود: