یه برنامه نویس ساده که از تجربیات و آموخته هاش می نویسه
برسی کامل زبان برنامه نویسی python
اگه شما هم یک برنامه نویس باشید، حتما اسم python به گوشتون خورده. شاید هم با اون کار کرده باشید. توی این پست می خوام به برسی نقاط ضعف و قوت این زبان برنامه نویسی بپردازم
زبان برنامه نویسی پایتون، یک زبان برنامه نویسی سطح بالا، چند منظوره و شی گرا است. این زبان برنامه نویسی توسط خیدو فان روسوم (Guido van Rossum) در سال 1996 اختراع شد. هدف اولیه این زبان برنامه نویسی فقط اتوماتیک سازی کار های حوصله سر بر روزانه بود اما به دلیل سادگی ساختار، بعد ها طرفداران زیادی پیدا کرد و الان جامعه بزرگی از برنامه نویسان را داراست.
برنامه hello world در پایتون
print ("hello world")
به همین راحتی این کد رو توی مفسر (interpreter) پایتون اجرا کنید تا برایتان hello world چاپ شود. اگر برنامه hello world این زبان رو با هر زبان برنامه نویسی دیگه ای مقایسه کنید می بینید نسبتا خیلی کوتاهه
نقاط قوت پایتون
- ساختار ساده کد ها که باعث میشه که تازه وارد ها به راحتی اون رو فرا بگیرن.
- در این زبان برنامه نویسی شما می تونید با کمترین کد، بیشترین کار رو انجام بدید. کد کمتر به معنای اشکال کمتر و نگه داری راحت تره.
- این زبان برنامه نویسی، کتابخانه استاندارد (standard library) بسیار غنی داره و بیشتر نیاز های معمول برنامه نویسی شما رو برطرف می کنه.
- پایتون پکیج منیجری به نام pip داره که امکان نصب ماژول ها و library های دیگران را به ما میده. وقتی می خواستم c++ یادبگیرم، تازه فهمیدم pip چه نعمتیه :)
- این زبان می تونه هم شی گرا باشه هم تابع گرا باشه
- برنامه های نوشته شده با این زبان cross platform هستند. به این معنی که وابسته به سیستم عامل نیستند و می تونن روی لینوکس، مک او اس و ویندوز هم اجرا بشن
- وجود آموزش های زیاد در این زمینه توی اینترنت و قشر زیادی از برنامه نویسان توی وبسایت stackoverflow که می تونن اشکالات شما رو برطرف و به سوالاتون جواب بدن
ویژگی های پایتون
- این زبان برنامه نویسی به صورت تفسیری اجرا میشه. به این معنی که مفسر پایتون کد رو می خونه و در همون زمان اجراش می کنه. به عبارتی دیگر، مرحله کامپایل در پایتون وجود نداره
- متغیر های این زبان dynamic هستند به این معنی که اول بهشون مقدار داده میشه و بعد نوع اون متغیر بر اساس دیتایی که بهش داده شده معلوم میشه (به نظر من این ویژگی خیلی باحاله. مثلا می تونی کلی تابع رو رو هوا صدا بزنی بدون اینکه تعریف شده باشن. تا زمانی که مفسر کد رو اجرا نکنه متوجه خطا نمی شه. اگه این ویژگی به درستی استفاده نشه باعث ارور میشه)
- در مبحث شی گرایی این زبان، access modifier ها رو نداریم به این معنی که دیگه نمی تونیم اعضای private یا protected داشته باشیم. البته میشه با کلک هایی این ها رو پیاده سازی کرد. مثلا اگه اسم متغیر رو با دو تا آندرلاین شروع کنیم مثل __private اون متغیر private میشه. ولی این رو هم میشه به راحتی دور زد. به نظر میاد پایتون ما رو برنامه نویس هایی بالغ فرض کرده که می دونیم از جون کلاس ها و اعضاشون چی می خوایم. البته این رو هم بگم که به صورت قرار دادی هر متغیر یا متدی که با آندرلاین شروع بشه به این معنیه که کسی از خارج از کلاس نباید ازش استفاده کنه (البته به این معنی نیستش که نمی تونید استفاده کنید). این نکته رو به برنامه نویس هایی گفتم که قبلا با زبان های خانواده c کار می کردن.
- پایتون دارای garbage collector اتوماتیک می باشد. برای همین برنامه نویسان پایتون، نگرانی کمتری درباره میزان مصرف memory دارند.
- این نکته رو به برنامه نویسان c میگم. در پایتون چیزی به نام پوینتر وجود نداره. شاید یکی از دلایل سادگی پایتون فقط این باشه :). در ضمن پایتون به شما اجازه دسترسی مستقیم به حافظه رو نمی ده. البته لازم نیست که خیلی نگران حافظه باشید، پایتون به خوبی مدیریتش می کنه.
استفاده های پایتون
هیچ زبان برنامه نویسی در جهان وجود نداره که بتونه همه نیاز ها رو در همه زمینه ها برطرف کنه و پایتون هم از این قاعده مستثنا نیست. پایتون در بعضی از زمینه ها به خوبی کار می کنه اما توی بعضی از فیلد ها ضعیفه
در زمینه وب
امروزه تقریبا همه شرکت ها به یک وبسایت برای معرفی محصولات خودشون یا ارائه خدمات نیاز دارن. پس میزان تقاضا برای برنامه نویسان وب بسیار بالاست.
پایتون یکی از پرچم داران حوضه وب هستش (ولی هنوز توی ایران جای خودش رو باز نکرده). از پایتون در backend وب سایت ها استفاده می شه. جالبه که بدونید youtube، instagram، dropbox و حتی google هم از پایتون به عنوان بخشی از برنامه هاشون استفاده میکنن. فریمورک هایی در این زمینه می تونن کمکتون که هر وبسایتی که خواستید بسازید.
- Django
- Flask
- Pyramid
- Bottle
این ها لیستی از فریمورک های وب پایتون بود. به جرئت می تونم بگم که Flask و Django محبوب ترین فریمورک ها در این لیست هستند. Django برای وبسایت هایی با مقیاس بالا و خیلی بزرگ مناسبه. Flask برای وبسایت های کوچیک مناسب تره. Flask به مراتب نسبت به Django آسون تره ولی Django خیلی امکانات بیشتری داره.
حوضه امنیت سایبری
پایتون به دلیل سادگی در یادگیری، به یکی از بهترین زبان های برنامه نویسی برای هکر ها تبدیل شده است. اگه شما هم توی حوضه امنیت سایبری کار می کنید بهتون پیشنهاد می کنم که اول از همه برید پایتون رو یاد بگیرید. همچنین پایتون طیف وسیعی از کتابخانه های کد رو داراست و این یعنی همین الان شاید خیلی از ابزار هایی که نیاز دارید توسط افراد دیگه ای ساخته شده باشه و الان آماده استفاده باشه.
در زمینه یادگیری ماشین و هوش مصنوعی
امروزه هوش مصنوعی و یادگیری ماشین، فیلد های جدیدی در IT محسوب میشن. شرکت های زیادی تمایل به استفاده از اونها توی برنامه هاشون یا مثلا وبسایت هاشون دارن. مثلا با استفاده از یادگیری ماشین و هوش مصنوعی می توان chat bot هایی ساخت که کاربران برنامه رو راهنمایی و به سوال هاشون جواب بده یا اینکه تجربه کاربری مخصوص اون کاربر رو براش فراهم کنه. برای مثال وبسایت یوتیوب بر اساس علایق شما ویدیو هایی رو به شما پیشنهاد میده که بر اساس فعالیت های قبلیتونه.
پایتون یکی از محبوب ترین زبان های برنامه نویسی در این زمینه هستش.
به دلیل وجود کتابخانه های زیاد و کد های از قبل نوشته شده، برنامه نویس ها مجبور به نوشتن همه چیز توسط خودشون نیستن و این خودش خیلی کار ها رو تسریع می کنه. در پایین لیستی از کتابخانه های پایتون که خیلی در این زمینه کاربرد دارن رو معرفی می کنم
- کتابخانه Keras که برای یادگیری عمیق استفاده میشه. این کتابخانه به دلیل استفاده از GPU علاوه بر CPU کامپیوتر به شما این قابلیت رو میده که محاسبات خیلی پیچیده رو سریع انجام بدید
- کتابخانه TensorFlow برای استفاده از شبکه های عصبی (neural networks) با حجم دیتا بالا
- کتابخانه Pandas که به شما قابلیت آنالیز، ترکیب (merge) و فیلتر اطلاعاتی با حجم بالا رو به شما میده. همچنین این کتابخانه قابلیت گرفتن اطلاعات از منابع خارجی مثل یک فایل excel رو داره
- کتابخانه Scikit-learn برای پیاده سازی الگوریتم های یادگیری ماشین
- کتابخانه matplotlib که از اون برای نمایش اطلاعات در نمودار های 2 دو بعدی استفاده میشه
اتوماتیک سازی کار ها (task automation)
همونطور که گفتم هدف از اختراع این زبان، همین بوده؛ اتوماتیک سازی کار ها. مثلا شما می تونید با استفاده از selenium رباتی بنویسید که وارد حساب ایمیلتون بشه و ایمیلتون رو چک کنه و اگه ایمیل جدیدی دریافت کرده باشید بهتون خبر بده. از selenium برای اتوماتیک سازی کار های روزانه توی وب استفاده میشه. خود این زبان هم امکانات خوبی در اختیارتون میزاره که مثلا کار های ساده ای مثل حذف کردن فولدر های خالی رو به راحتی انجام بدید. شما می تونید با استفاده از پایتون، اسکریپت های سیستمی بنویسید.
نقاط ضعف پایتون
همانطور که قبلا به اون اشاره کرده بودم. پایتون یک زبان برنامه نویسی تفسیر شده است و نیاز به کامپایل نداره. درسته که مجبور به کامپایل کردن دوباره کل کدتون بعد از یک سری تغییرات کوچک نیستید اما این ویژگی می تونه یه نقطه ضعف بزرگ به حساب بیاد، چرا که کد های کامپایل شده بهتر و سریع تر از کد های تفسیری پایتون اجرا میشن.
یکی از بزرگ ترین نقطه ضعف های پایتون سرعت پایینشه. برای مثال یه بازی ساده مثل platformer رو در نظر بگیرید. اگه این بازی رو با پایتون بنویسید حداکثر frame rate که می تونید دریافت کنید 150 فریم در ثانیه است. شاید باورتون نشه اما اگر همین بازی رو در c++ بنویسید، frame rate که بازی خواهد داشت حدود 5600 فریم بر ثانیه است. حالا خودتون حساب کنید که چند برابر پایتون سرعت داره. در زمینه هایی که سرعت عملکرد خیلی مهمه پایتون اصلا خوب عمل نمی کنه مخصوصا در زمینه بازی سازی. توی بازی سازی c++ برنده مطلق رقابت به حساب میاد.
آپدیت 8 مهر 1399
"البته توی بحث سرعت اجرا، با انتخاب ساختمان داده درست و بهینه کردن الگوریتم و مولتی تردینگ و از همه این ها مهم تر استفاده از کتابخانه cython برای کامپایل کردن کد پایتون، تا حد قابل توجهی میشه سرعت رو بهبود داد" خیلی ممنون از آقا "مهدی ت" عزیز
پایتون در چه زمینه هایی ضعیف عمل میکند
اندروید:
اگه خیلی اصرار دارید که با پایتون اپ اندروید بنویسید، می تونید با استفاده از kivy این کار رو بکنید. اما فرصت های شغلی کمی وجود داره و همچنین به دلیل کمبود منابع آموزشی کارتون خیلی سخته. به نظر من برای ساختن اپلیکیشن های اندروید از زبان هایی مثل java یا kotlin استفاده کنید
ساخت نرم افزار دسکتاپ:
پایتون برای ساختن اسکریپت های کوتاه خیلی مناسبه اما برای ساختن اپلیکیشن های دسکتاپ استفاده نمی شه. برای اینکار بهتره از c# یا java استفاده کنید.
صنعت بازی سازی:
برای ساختن بازی های دوبعدی و ساده می تونید از کتابخانه pygame استفاده کنید اما در زمینه بازی سازی زبان c# و c++ بهترین هستند. اگر می خواید به صورت حرفه ای بازی سازی بکنید، پایتون انتخاب مناسبی نیست از طرفی هم اگر تاحالا برنامه نویسی نکردید، شاید مطالب c++ خیلی سخت باشه. من c# رو پیشنهاد می کنم چون نسبت به c++ ساده تره. برای بازی سازی در اصل باید از موتور های بازی سازی استفاده کنید و به مهارت های دیگه ای به غیر از برنامه نویسی هم نیاز خواهید داشت مثل انیمیشن سازی و مدل سازی سه بعدی شخصیت های بازی. من دو موتور بازی سازی میشناسم که امروزی خیلی استفاده میشن. اگه زبان c# رو انتخب کردید، unity 3D رو برای یادگیری انتخاب کنید و اگر هم c++ رو انتخاب کردید، unreal engine رو انتخاب کنید
خوب. من هر چیزی که درباره پایتون می دونستم رو بهتون گفتم. حالا نوبت شماست که اهداف خودتون رو در نظر بگیرید و بر اساس اونها زبان برنامه نویسی مناسب رو یاد بگیرید.
البته این نکته پایانی رو هم بگم که این ها همه دانسته ها و نظر خودمه. به نظر من بهتره که به منابع دیگه هم سر بزنید و بیشتر درباره پایتون تحقیق کنید تا تصمیمات به مراتب بهتری بگیرید.
منتظر نظرات شما عزیزان هستم.
مطلبی دیگر از این انتشارات
آموزش برنامه نویسی صفر تا صد
مطلبی دیگر از این انتشارات
آموزش سی شارپ
مطلبی دیگر از این انتشارات
مدل ذهنی Mental Model جاوااسکریپت