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

برنامه نویس بکند و فرانت که بیش از ۲ مانیتور داره. برنامه نویس خوبی نیست. از ما گفتن بودسلامی چو بوی خوش زندگانی به تمامی آنان که در راستای ارتقای شخصی خود گام بر می دارند. پول که چرک کف دسته. .والابسته به تصمیمی که از برنامه نویس شدن دارید قضیه فرق می کنه. اما یک قاعده کلی وجود داره و اونم اینه که: اگه تو هر کاری حرفه ای و متخصص باشی و صبر هم داشته باشی به همه چی می رسی. میگی نه ۳ رو بفرست به انجمن برنامه نویسان خفن و اینازبان هایی که با آن ها پروژه نوشتم چه به صورت تیمی و چه به صورت فردی:Python:‌ شروع سال ۸۹ - هنوزم دارم کار می کنمC#: شروع سال ۹۲ از سال ۹۷ دیگه کار نمی کنمJava: شروع سال ۸۷ هر از چند گاهی برای پروژه های اندروید از اون استفاده می کنمو فرانت (بخش کد نویسی)AngularJS, Angular2.0: از سال ۹۳ تا ۹۹ دیگه استفاده نمی کنمVueJS: از سال ۱۴۰۰البته اینا رو به صورت تکی انجام نمی دم و تیم داریم و به عنوان یک تیم لید تجربیاتم رو باهاتون به اشتراک می زارمیه اصلی هست که همیشه باید مد نظر داشته باشین و اون هم عمر آدمی هست که سریعا می گذره و از یه زمانی به بعد: رویابافی و یادگیری و اینا کم و کند میشه. پس سعی کنید در یک فیلد - یا یک زبان، خیلی حرفه ای بشیدPythonدر مورد پایتون اگه بگم، به شدت سرعت تولید محصول بالاست چه در زمینه وب و چه در سایر زمینه ها. خیلی زبان سطح بالاییه. بزارید با یه مثال براتون بگمفرض کنید بخوایم تو یه آرایه دنبال یه آیتم بگردیم:کد پایتونif value in array: print('yes')کد C#foreach(var item in array) if(value == item) Console.WriteLine("yes");همون طور که مشاهده کردین زبان پایتون خیلی به زبان انسان ها نزدیک تره و کدهای کمتری نوشته میشه. اما و اونم یه امای بزرگ:‌ به شدت زبان کندی هست. اما خیالتون راحت باشه که هیچ بیزنسی انقد بزرگ نیست که پایتون نتونه از پسش بر بیاید. و یه اما که این اما خیلی مهمتره. خیلی زبان خطرناکی هست چون تعریف نوع نداره و در هر جایی می تونین نوع و مقدار متغییر رو تغییر بدین و علی برکت الله. و اینجاست که تست نوشتن نقش خیلی پر رنگی رو ایفا می کنهخب بریم سراغ انتقادات خودم. مثه همه زبان های دیگر یه سری استایل کد براش تعریف کردن که مثلا متغییرها رو اینجوری تعریف کنید و انجوری نباشه اما ماژول داخلی خودش هم اینو رعایت نکردن به عنوان مثالgetsizeof()متد overloading نداره. به نظرم اینو باید می داشتکلمه def برای تعریف متد و تابع گذاشتن یعنی چیبرای اونایی که از C# , Java میان پایتون، اینو در نظر داشته باشین که a++ نداره به نظرم این یکی از بهترین کارهایی که کرده. به نظر من حالت بی منطقی هست مثه تخم مرغ عید پاک. گفتم یه کم غارجی بنویسم حال کنیدخیلی چیزاش میشه گفت خوبه. مثلا GIL در کل تصمیم خوبیه که نمی زاره دو thread هم زمان یه کد رو اجرا کنن چون سرعت اجرا خیلی بهتر میشه برای اجرای IO بهتر از asyncio استفاده کنیددر کل برای استارت آپ ها به شدت توصیه می شه.هنگام استفاده از پایتون باید دانش عمیقی از طراحی الگوریتم داشته باشید چون زبان کندی هست و برای preformance بهتر، بایستی کدهای بهتری بنویسیدC#با C# خیلی خاطره دارم و یادمه اوایل که داشتم asp.net mvc رو یاد می گرفتم کتاب pro asp.net mvc از apress رو خوندم خیلی دانش عمیقی بهم داد هر چند در مورد برنامه نویسی وب بود اما دانش برنامه نویسی من را هم افزایش داد. یادمه بخش dependency injection رو که ۱۰ صفحه بود یک ماه داشتم هی می خوندم و با سعی و خطا پیش می رفتم تا یاد بگیرم. در کل کتاب خوبی بود.اما در مورد C# اگه بگم بهترین زبان برنامه نویسی بعد از جاوا از دید من هست، دروغ نگفتم اما چرا دیگه با اون کار نمی کنمنکته:‌ اصول و قواعد پایه اش خیلی حرفه ای طراحی شدهچرا دیگه با اون کار نمی کنم چون برای یه کار ساده خیلی درگیر یادگیری اصول و قواعد و دانش زیادی می شین. در مورد زبان بگم: ساختارهای in, out, ref اینا چیه گذاشتن(می دونم چیکار می کنن نیاید تو کامنت برام توضیح بدین:) ) سطح دسترسی ها زیادی internal protected اینا چیه اضافه کردن. یا کلاس sealed که چی. برات انقد دانش اضافی گذاشتن اگه استفاده هم نکنی هیچ اتفاقی برات نمی افته. pinterest رو با پایتونی که اینا رو نداره ساختن گوگل از پایتون استفاده می کنه ...و موارد بالا و سعی در اثبات خود به عنوان بهترین برنامه نویس جهان و ایران و زور چپون کردن اصول مارتین و فاولر برای کارهای پیش پا افتاده. دیگه علاقه ای به کار کردن با زبان C# در شرکت ها نداشتمبزارید با یه مثال توضیح بدم. سال ۹۳ تو یه پروژه DDD شرکت کردم که تقریبا ۲ سال با اون تیم همکاری کردم. برای یک نمایش دادن آیتم های یک dropdown ۱۸ تا فایل ایجاد می کردیم و کدهای زیاد هم برای جنریک ها می نوشتیم دیگه بماند unit_of_work های اضافی (دیالوگ مزخرف که همیشه می گن شاید فردا از orm دیگه ای استفاده کنیم) و پابلیش تغییرات در یک eventbus و اینا و در نهایتش هم پروژهایی که می نوشتند درست حسابی کار نمی کردبعد ها، یک سال نشستم و همه اون دانش ها را خودم از صفر بروز کردم و فهمیدم اون شخص تصمیم گیرنده دانشی که به ما انتقال داد همش اشتباه بود و اسرار هم به درست بودن کارش داشتهر جایی هم می رفتم دانش ها همه نصفه نیمه بود و با کلماتی مانند autofac, structuremap, windsore, ... سر هم دیگه رو شیره می مالیدن. بماند در کل دنیا همین قوانین حاکمه اما تو ایران اوضاع داغون تر بود. چون همه می خواستن به نحوی خودشون رو ثابت کنن. به عنوان مثال یکی از ساختارهای اشتباهی که دیدم:schedule رو گذاشته بودن داخل whileاین شخص الان مربی و مشاور استفاده از microservice , DDD اینا هست. تو یه مصاحبه می خواست منو رد کنه که مدیر عامل نزاشت. اما خودم نرفتمبعد هر جایی هم می رفتم همه یه سری سوال مشابه می پرسیدن. یه بار از یکی از اونها پرسیدم این کد خیلی آشناست گفت نه خیر اینو خودم نوشتمبرای مصاحبه یه شرکت بزرگ ایرانی رفتم ازم پرسیدن اگه یه سیستم پرواز رو به شما بدین از چه الگوهایی استفاده می کنین. منم گفتم اگه براساس تجربه جلو برم از همون تمپلیت mvc استفاده می کنم. هر جا نیاز باشه خودمون رو اصلاح می کنیم و نیرو هم به راحتی براش پیدا میشه. یه عقیده ای دارم که برنامه نویسی حرفه ای است که بخواهد و علاقه داشته باشد که مداوما کدهایش را بهبود بخشد. رد شدمدر کل سرعت c# نسبت به پایتون خیلی بیشتره اما دانش بیشتری نسبت به پایتون برای یکسری کار می خواد که در بحث بیزنس مخصوصا بیزنس های استارت آپی خیلی بهینه نیست اما برای پروژه بانکی حتی الامکان از C# یا جاوا استفاده کنیدخیلی طولانی شد بعدا در یه مقاله ی دیگه در مورد زبان های دیگه ای که باهاشون کار کردم می نویسم. اگه آپدیتی هم داشتم اضافه می کنم