امروز می خواهیم مقایسه ای داشته باشیم بین زبان سی شارپ و پایتون.
اما می خوام بپرسم مدوسا را میشناسید؟
مدوسا یک مار چند سر در اسطورههای یونان که تا یکی از سرهایش را قطع می گردید، یک مار جدید به جایش سبز میشد. خب حالا این ماجرای ترسناک چه ربطی به موضوع مقاله ما دارد؟ عرض میکنیم خدمتتان!
دنیای برنامهنویسی و زبانهای مختلفش، شاید به ترسناکی دنیای قهرمانان یونان نباشد، اما به خاطر وجود زبانهای مختلف، دست کمی از آن مار چندسر ندارد. دو تا از این سرها یا زبانها تقریبا از دیگران معروفتر هستند و تازهواردها را بدجوری گیر میاندازند. بحث امروز ما هم راجع به همین دو زبان پرکاربرد است و قرار است به شما بگوییم که از میان زبانهای پایتون یا سی شارپ کدام یک را برای آموزش انتخاب کنید تا بتوانید موفق بشوید.
اما میدانید که یک قهرمان واقعی اول تمام نقاط ضعف و قوت حریف را بررسی میکند؛ پس ما هم اول زبان python و c sharp را کامل معرفی میکنیم و بعد یک دوئل تمام عیار میان این دو زبان برگزار میکنیم تا شما بتوانید راحتتر تصمیم بگیرید کدام زبان برنامهنویسی مناسب احوال شما است.
زندگی نامه پایتون:
پایتون یک چند سالی از سی شارپ بزرگتر است. پدرش آقای خیدو، یک روز در هلند مشغول کدنویسی بود که دید یک چیزی مثل دم مار از گوشهی کدها هی تکان میخورد، خلاصه دم مار محترم را کشید تا به python رسید.
پایتون از همان اول، خیلی سخاوتمند بود برای همین هم به شکل open source یا متنباز وارد بازی شد، یعنی چه؟ یعنی اینکه همهی برنامهنویسها میتوانستند از کدهایش استفاده کنند.
پایتون یکی از زبانهای برنامهنویسی است که از غیر مستقیم حرف زدن اصلا خوشش نمیآید و دستورهای لازم را خیلی رک به سیستم میگوید. مثلا وقتی قرار است یک عبارت را پرینت بگیرد، به جای اینکه با کلی تابع، حاشیه برود تا برسد به موضوع پرینت، همان اول ماجرا مینویسد: print و در نتیجه کلی کار خودش و سیستم و برنامهنویس را راحتتر میکند.
از آنجایی که پایتون مثل آدم حرفش را میزند و در واقع از keywordهای انگلیسی به جای ویرگول و … استفاده میکند، یادگیری آن هم برای مبتدیها آسانتر است و اگر بخشی از برنامه به مشکل بخورد، خیلی راحت میشود ایراد کار را پیدا کرد.
البته پایتون کمی تنبل است وحوصله ندارد هزاران دستور و کد را همان اول ماجرا و به صورت یکجا اجرا کند، و ترجیح میدهد دستورات را خط به خط به سیستم بدهد، بنابراین در دستهی زبانهای تفسیری قرار میگیرد. زبانهای تفسیرپذیر نقطهی مقابل زبانهای کامپایلر هستند. سخت شد؟ بگذارید سادهترش کنیم.
تا به حال به مترجمهای همزمانی که در اجلاسهای مختلف حضور دارند، دقت کردهاید؟ بعضی ازآنها کلمههای گوینده را به شکل کلمه به کلمه ترجمه میکنند، اما برخی دیگر صبر میکنند تا عبارت گوینده تمام بشود و بعد تمام عبارت را ترجمه میکنند. برنامههای تفسیری مثل مترجم شمارهی یک عمل میکنند. آنها کدها را خط به خط ترجمه میکنند و همین باعث میشود که سرعت کارشان کمتر بشود و حافظهی بیشتری را اشغال کنند، در مقابل برنامههای اجرایی مثل همان مترجم شمارهی دو عمل میکنند و تمام عبارت را به صورت یکجا اجرا میکنند.
برای همین هم هست که برای پیدا کردن باگهای یک برنامه، برنامهنویسها معمولا ترجیح میدهند از پایتون یا سایر زبانهای تفسیری کمک بگیرند تا ناگهان دیوار کدها بر سرشان آوار نشود.
Python چند خصوصیت خوب دیگر هم دارد، پایتون عاشق اشیا و کلاسهای مختلف است و اصلا از همان اول گفت آقاجان من یک زبان برنامهنویسی شیگرا هستم، البته جناب پایتون به سبک زندگی مینی مالیسیتی هم خیلی علاقهمند است و برای همین دارای خاصیت Garbage Collection است، یعنی اگر کد یا متدی در سیستم تعریف بشود و از آن استفاده نشود، بعد از مدتی پایتون متوجه میشود یک متد اضافی، خیلی بیخود و بیجهت، بخشی از حافظه را اشغال کردهاست، بنابراین آن را از صفحهی روزگار محو میکند.
پایتون فرزند رفیقباز خانوادهی برنامهنویسی است، برای همین با بیشتر غولهای فناوری مثل اینستاگرام و گوگل و … دوست است و البته برای پیدا کردن دوستهای جدید همیشه سری به کتابخانهها میزند، برنامهنویسها هم که میبینند پایتون بچهی اجتماعیای است، هر روز کلی کد جدید وارد کتابخانهها و libraryهای مختلف پایتون میکنند. کتابخانههایی مثل pytorch, spark, و … از مهمترین و پرکاربردترین کتابخانههای پایتون در توسعهی وب هستند.
از طرف دیگر پایتون خودش را محدود به یک پلتفرم خاص نکردهاست و کدهایش در تمام پلتفرمها مثل ios, android و … باکمی تغییر قابل اجرا هستند.
پایتون ماجرای ما بسیار هم اهل ماجراجویی است، برای همین دائم به چارچوبها و فریمورکهای مختلف سر میزند، تا ببیند محیط کدامشان برای پرورش استعدادهایش مناسبتر است. خوب است بدانید فریمورکها در واقع همان زمینهای بازیای هستند که مجموعهای از امکانات و کدها و در واقع کتابخانههای پیشرفته را در اختیار برنامهنویسها قرار میدهند تا به کمک آنها بتوانند سریعتر یک دستور را بنویسند.
بعضی از زبانها مثل سی شارپ فقط در یک فریمورک اختصاصی فعالیت میکنند. و برخی دیگرمثل پایتون دارای فریمورکهای متنوعی هستند. اهالی سرزمین پایتون از فریمورک جانگو برای توسعه وب اپلیکیشنها، فریمورک باتل برای توسعهی وب و فریمورکهای پریمید و توربوگیرز برای سادهتر شدن کدنویسی و انجام پروژههایی مثل سی ام سی استفاده میکنند.
پایتون بچهی آرامی نیست و دوست ندارد از دنیای صفر و یک عقب بماند، بنابراین ردپایش همه جا هست وکاربردهای زیادی دارد. اما اگربخواهیم از مهمترین فعالیتهایش نام ببریم، میتوانیم به انجام فعالیتهای محاسباتی بزرگ و داده محور، و کاربردش در علومی مثل هوش مصنوعی یا پروژههای مختلف امنیت شبکه و هک، طراحی وبسایت، بازیسازی و توسعهی اپلیکیشنهای مختلف، اشاره کنیم.
زندگی نامه سی شارپ:
داستان تولد سی شارپ از یک حسادت ساده شروع شد. شرکت مایکروسافت آن موقع رقابت سختی با سایر شرکتها داشت و دلش میخواست یک بچه مثل جاوا داشتهباشد، و البته این بچه خیلی بیشتر شبیه به سایر زبانهای خانوادهی c باشد. خلاصه مایکروسافت به مهندسانش دستور داد و در نهایت از دل کلی تلاش و وسط مایکروسافت، c sharp متولد شد.
سی شارپ مثل بسیاری از زبانهای قدرتمند دیگر، شیگرا است، ولی تفاوتش این است که کلاس کارش با اشیا نسبت به پایتون بالاتر است و اگر دوست دارید به دل برنامهنویسی شیگرا بزنید، و شیگرایی را در سطح بالای آن تجربه کنید، بهتر است به سراغ سی شارپ بروید.
مایکروسافت از این بچهی جدید که همان سی شارپ باشد، خیلی خوشش میآمد، برای همین حسابی مراقبش بود. مایکروسافت یک حیاط بزرگ برای سی شارپ درست کرد و اسمش را گذاشت .net این حیاط بازی، چارچوب اصلی سی شارپ است و بسیاری از ابزارها و کتابخانههای مختلف برای بهتر کار کردن با سی شارپ، در این فریمورک تعریف شدهاست.
.net مزایای زیادی دارد مثلا open source است و این یعنی به راحتی میشود از منابع آن استفاده کرد. محیط .net به لطف ویژگی Garbage Collection همیشه تمیز است و خب این یعنی کلی فضا در حافظه باقی میماند.
یکی دیگر از ویژگیهای مهم .net داشتن زبان میانی است، این دیگر چیست؟ زبان میانی، یک جورایی مثل پل ارتباطی میان پلتفرمهای مختلف عمل میکند. مثلا اگر شما یک برنامه را با زبان سی شارپ بنویسید و بعد با خودتان بگویید: «وای چه برنامهی خوبی! کاش میشد این برنامه را در اندروید هم اجرا کنم» همان موقع سی شارپ و .net مثل دو تا ابرقهرمان سرراهتان سبز میشوند و با ایجاد تغییرات جزیی، کاری میکنند تا کدهایتان با اندکی تغییر در اندروید هم قابل استفاده بشود، و این یعنی طی کردن یک راه صدساله در چند ساعت، چیزی که روزی رویای بسیاری از برنامهنویسها بود.
C# خیلی محتاط است، برای همین به محض اینکه حس کند یک کد ممکن است به سیستم آسیب بزند، سریع کارت قرمزش را درمیآورد و یک اخطار حسابی به برنامهنویس محترم میدهد.
سی شارپ حسابی در خانهی پدریاش یعنی محیط ویندوز راحت است و تقریبا هر کاری میتواند بکند، بنابراین اگر دوست دارید نرمافزارهای تحت ویندوز را توسعه بدهید، برای اولین قدم خوب است که به سراغ سی شارپ بروید.
سی شارپ کمی زرنگتر از پایتون است و خیلی سریع وارد دار و دستهی زبانهای اجرایی شد. بنابراین امکان پیدا کردن خطا در این زبان کمی مشکل است، از طرف دیگر اگر در یک پروژه وقت برایتان خیلی طلاست و البته به حجم حافظهی ذخیره شده هم احتیاج دارید، بهتر است از همان اول به سراغ سی شارپ بروید، چرا که این زبان به خاطر کامپایلر بودن، زمان کمتری را تلف میکند.
سی شارپ چهارمین زبان برای آموزش برنامه نویسی در دنیا از نظر محبوبیت و کاربرد است و با ارائهی نسخههای جدید .net مثل .net core و یا .asp.net از طرف مایکروسافت، هر روز به این محبوبیت اضافه میشود. چرا؟ چون به وسیلهی این فریم ورکها برنامهنویسها دیگر به راحتی میتوانند فضاهای مختلف وبسایت را طراحی کنند و البته اپلیکیشنها را توسعه بدهند.
البته خوب است بدانید تا همین چند وقت پیش، بسیاری از برنامهنویسها، برای ایجاد و یا توسعهی اپلیکیشنهای موبایل به سراغ جاوا میرفتند، اما خب بابا مایکروسافت اصلا دوست نداشت کسی رقیب بچهی دلبندش بشود، برای همین یک ابزار ساخت به اسم زامارین. حالا سی شارپ هم میتوانست پا به پای جاوا و حتی سریعتر از آن، اپلیکیشنهای موبایل را توسعه بدهد و بسازد.
سی شارپ کاربردهای زیادی دارد و تقریبا در بازار ایران، برای ساخت بازی و انواع اپلیکیشن حرف اول را میزند، نرمافزارهای کاربردیای مثل آفیس 360، شیرپوینت، اتوکد و … با این نرمافزار نوشتهشدهاند. از طرف دیگر در توسعه وبسایتهای مختلف هم کاربرد دارد.
به خاطر سادگیاش و نزدیک بودنش به زبانهای برنامهنویسیای مثل C++ و جاوا، یادگیری سی شارپ هم راحتتر است. راستی میتوانید مقاله معرفی و آموزش برنامه نویسی ما را هم بخوانید.
مدت یادگیری سی شارپ و پایتون چه قدر طول می کشد؟
تا اینجا سی شارپ و پایتون هرچند تا برگ برنده که در جیبشان داشتند، برای شما رو کردند، و خوب از آنجایی که هنوز برندهی نهایی معلوم نشده است، آنها تصمیم گرفتند سری به خاطرات مدرسه بزنند تا ببیند کدامشان با کدها و برنامهنویسها زودتر رفیق میشدند!
از آنجایی که keywordها در زبان پایتون، به زبان آدمیزاد و انگلیسی هستند، یادگیری این زبان برای مبتدیها سادهتر است. از طرف دیگر منابع آموزشی پایتون و کتابخانههای آن هم زیاد است و به خاطر همین خیلی راحت میشود از تجربههای دیگران هم استفاده کرد.
البته وقتی بحث تجربهیدیگران وسط باشد، c sharp هم میتواند تا ده سال آینده، از گوشه و کنار اینترنت، منبع آموزشی بیاورد. نکتهی بعدی اینکه یادگیری سی شارپ برای کسانیکه قبلا با زبانهایی مثل جاوا و c++ کار کردهاند بسیار ساده است و به خاطر شباهتشان، مثل رفتن از یک اتاق خانه به اتاق دیگر است. اما در نهایت بسیاری از برنامهنویسها معتقد هستند برای یادگیری و تسلط بر سی شارپ باید وقت بیشتری صرف کرد و این زبان به همین راحتیها به کسی روی خوش نشان نمیدهد.
در نهایت نوبت به تصمیم گیری میرسد:
خب حالا وقتش است، تعداد گلها را بشماریم و از میان پایتون یا سی شارپ یکی را بهعنوان برندهی نهایی اعلام کنیم.
سی شارپ و پایتون هر دو برنامههایی شیگرا هستند، اما کلاس شیگرایی در سی شارپ به مراتب بالاتر است و همین موضوع یادگیری این زبان را کمی سختتر میکند. از طرف دیگر شروع برنامهنویسی با پایتون چندان هم بد نیست، چرا که بعد از مدتی میتوانید با استفاده از محیط برنامهنویسی ironpython وارد فازآموزش برنامه نویسی در محیط .net بشوید و تمام آن فعالیتهایی که قبلا ذکر خیرشان را کردیم، انجام بدهید.
پایتون یک زبان تفسیری است، بنابراین با بار کدهایی که روی دوشش است خیلی طبیعی است که از نظر سرعت در مقابل سی شارپ که زبانی کامپایلر یا اجرا کنندهاست، کم بیاورد، پس اگر قرار است وارد پروژههایی بشوید که در آنها سرعت حرف اول را میزند، بهتر است وارد دنیای سی شارپ بشوید، البته اگر یک شرلوک هلمز درون دارید، که همیشه به دنبال پیدا کردن مجرم و عیب و ایرادهای مختلف است، و دوست دارید در دنیای برنامهنویسی هم به دنبال رفع اشکال برنامههای مختلف باشید، بهتر است به سراغ پایتون بروید.
و در نهایت اگر نگاهی به مهاجرت و فعالیت در حوزههایی مثل هوش مصنوعی، علوم داده و یا کار با کامپیوترهای غولپیکر دارید، یا به برنامهنویسی به شکل فریلنسر در داخل کشور علاقهمند هستید، میتوانید با خیال راحت به سراغ python بروید.
اما اگر کودک درونتان هنوز سرحال است و عاشق بازیسازی هستید، یا دوست دارید با انواع اپلیکیشنها سر و کله بزنید یا رویای سر زدن به تمام غارهای مخفی ویندوز و desktop را دارید و یا عاشق توسعهی وبسایتهای مختلف هستید، بهتر از همین حالا با c sharp صمیمیتر بشوید.
در نهایت هر دو زبان برنامهنویسی پایتون و سی شارپ به شدت کارآمد و محبوب هستند، و این شما هستید که با توجه به تواناییهایتان و رشتهای که در آن قصد فعالیت دارید، زبان مورد علاقهتان را انتخاب میکنید.