مسیر یادگیری Python

آخرین پرسش‌های کاربران در Python (پایتون)

Python (پایتون)

به جرات می توان گفت زبان پایتون یکی از بزرگ ترین زبان های برنامه نویسی در تمام دنیا می باشد. اگر به نظرسنجی سالانه وب سایت Stackoverflow در سال ۲۰۲۳ توجه کنید متوجه خواهید شد که زبان پایتون از نظر محبوبیت همیشه در ۵ زبان اول دنیا قرار دارد و جامعه آماری بسیار بالایی دارد. البته این اعداد و ارقام یک شبه ظاهر نشده اند؛ بسیاری از افراد به اشتباه تصور می کنند که زبان پایتون یک زبان نوپا است چرا که خودشان به تازگی نام این زبان را شنیده اند اما حقیقت این است که پایتون از سال ۱۹۹۱ در این فضا حضور داشته است و نسخه سوم آن از سال ۲۰۰۸ ارائه شده است. به عنوان اولین قدم در آموزش پایتون و برای درک اینکه زبان پایتون چیست ابتدا باید درک کنیم که زبان های برنامه نویسی چه هستند و چه ماهیتی دارند. همچنین باید درباره برخی از خصوصیات آن ها اطلاعاتی را داشته باشیم، بنابراین بدون مقدمه بیشتر شروع می کنیم.

پایتون چیست؟
پایتون چیست؟

زبان برنامه نویسی چیست؟

اگر قرار باشد مفهوم «زبان های برنامه نویسی» را به فردی توضیح بدهید، چه کار خواهید کرد؟ آیا پاسخ ساده و دقیقی برای این سوال دارید؟ اگر بخواهیم به صورت خلاصه توضیح بدهیم می گوییم برنامه نویسی به معنی دادن دستورالعمل به کامیپوترها است. روش تعامل کامپیوترها با هم روش باینری یا دودویی است بنابراین زبان کامپیوترها باینری می باشد. به همین خاطر ما نمی توانیم با زبان عادی انسان ها مثل فارسی یا انگلیسی با سیستم خودمان صحبت کنیم.

با این حساب آیا باید باینری یاد بگیریم و ما هم با صفر و یک با کامپیوترها صحبت کنیم؟ نوشتن پروژه ها و انجام کارهای برنامه نویسی به صورت باینری برای ما انسان ها تقریبا غیرممکن است. چرا؟ به دو علت اصلی! دلیل اول این است که باینری بسیار پیچیده است و دلیل دوم خطاپذیری بالای آن می باشد. مثلا حرف r در باینری به شکل 01110010 نوشته می شود و حرف o به شکل 01101111 نوشته می شود. کافی است بخواهیم یک رشته ساده مانند roxo.ir را به صورت باینری بنویسیم:

01110010 01101111 01111000 01101111 00101110 01101001 01110010

جدا از اینکه نوشتن چنین کدی برای یک رشته ساده بسیار طول خواهد کشید، در همین خط ساده باینری کافی است که یکی از صفر ها یا یک ها را جا به جا بنویسیم تا کل رشته بهم بریزد. طبیعتا چنین چیزی اصلا برای ساخت پروژه های واقعی مناسب نیست.

ما انسان ها برای حل این مشکل زبان های برنامه نویسی را ساخته ایم. این زبان ها یک میانجی بین زبان انسان ها (مثلا فارسی) و زبان کامپیوترها (باینری) هستند، دقیقا مانند یک مترجم!

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

زبان های برنامه نویسی مختلف سطوح مختلفی دارند. برخی از زبان های برنامه نویسی low level یا سطح پایین هستند یعنی به زبان سخت افزارهای کامپیوتر (همان باینری) نزدیک تر هستند در حالی که برخی از زبان های برنامه نویسی High Level هستند که یعنی به زبان ما انسان ها نزدیک تر هستند. به طور مثال assembly (یک زبان برنامه نویسی) را در نظر بگیرید؛ این زبان یک زبان کاملا low level است که یعنی به شدت به زبان کامپیوترها (باینری) نزدیک است و به همین دلیل یادگیری آن سخت تر از زبان های دیگر است. در طرف دیگر زبانی مانند پایتون را داریم که به انگلیسی بسیار نزدیک بوده و یادگیری آن صدها بار آسان تر از assembly است. بنابراین این موضوع یک طیف است که روی بازه بزرگی تقسیم می شود.

سطوح مختلف زبان های برنامه نویسی نسبت به یکدیگر
 سطوح مختلف زبان های برنامه نویسی نسبت به یکدیگر

 

مفسر یا کامپایلر؟

همانطور که گفتم زبان های برنامه نویسی مانند یک مترجم هستند که بین زبان انسان ها و باینری قرار می گیرند. زمانی که ما با زبان های برنامه نویسی کدی را می نویسیم، این کد توسط بخشی به نام مفسر (interpreter) یا کامپایلر (compiler) به کدهای دودویی تبدیل می شود تا کامپیوتر بتواند آن را خوانده و اجرا کند. تفاوت مفسر و کامپایلر چیست؟ تفاوت های جزئی و فنی زیاد است و من نمی خواهم وارد مسائل جزئی شوم اما به طور کلی می توان گفت که مفسر خط به خط کدهای شما را خوانده و سپس آن ها را به باینری تفسیر می کند در حالی که کامپایلر در همان ابتدا تمام کدها را خوانده و به باینری تبدیل می کند. طبیعتا زبان هایی که کامپایل می شوند، کمی سریع تر هستند چرا که کدهایشان به صورت باینری آماده است.

در این تصویر مسیر دو کامپایلر مختلف برای پایتون را مشاهده می کنید: Jython و CPython
در این تصویر مسیر دو کامپایلر مختلف برای پایتون را مشاهده می کنید: Jython و CPython

زبان پایتون معمولا یکی از زبان های دارای مفسر است که به آن ها interpreted languages (زبان های تفسیر شده) می گوییم. چرا؟ معمولا به دلیل اینکه نسخه های مختلفی از زبان پایتون وجود دارد و فقط یک نسخه واحد را نداریم. البته امروزه وب سایت www.python.org که از مفسر cPython استفاده می کند به عنوان استاندارد عمومی در نظر گرفته می شود.

نسخه دوم یا سوم؟

همانطور که در ابتدای مقاله توضیح دادم زبان پایتون از سال ۱۹۹۱ میلادی وارد دنیای برنامه نویسی شده است و قدمت زیادی دارد، بنابراین نسخه های مختلفی از آن را داریم. اولین نسخه از زبان پایتون در سال ۱۹۹۱ توسط آقای Guido van Rossum نوشته شد. بعدها در سال ۲۰۰۰ میلادی نسخه دوم پایتون ارائه شد که محبوبیت بسیار زیادی کسب کرد. نهایتا در سال ۲۰۰۸ میلادی نسخه سوم زبان پایتون ارائه شد که آخرین نسخه موجود می باشد (در زمان نگارش این مقاله نسخه 3.9.2). آقای Guido van Rossum در سال ۲۰۱۸ از سمت خود کناره گیری کرد.

زمانی که در اینترنت گشت و گذار می کنید به دو دسته از توسعه دهندگان پایتون برخورد خواهید کرد: اکثریت توسعه دهندگان که از آخرین نسخه (پایتون ۳) استفاده می کنند و دسته ای از توسعه دهندگان قدیمی تر که از پایتون ۲ استفاده می کنند. شما باید حواستان به این موضوع باشد چرا که برخی از کدهای موجود در اینترنت بر اساس نسخه ۲ نوشته شده اند و دیگر در نسخه ۳ پشتیبانی نمی شوند. تمام دوره ها و سری های آموزش پایتون در روکسو بر اساس آخرین نسخه زبان پایتون نوشته شده اند.

زبان پایتون چیست؟

با مراجعه به وب سایت رسمی Python به پاراگراف زیر برخورد می کنیم:

Python is an interpreted, object-oriented, high-level programming language with dynamic semantics

بر اساس تعریف بالا چند ویژگی برای زبان پایتون وجود دارد:

  • یک زبان تفسیر شده یا interpreted است.
  • یک زبان شیء گرا یا object-oriented است.
  • یک زبان سطح بالا یا high-level است.

ما در رابطه با high-level بودن و interpreted بودن پایتون صحبت کردیم اما هنوز چیزی در رابطه با شیء گرایی بودن آن توضیح نداده ایم. شیء گرا بودن یک پارادایم برنامه نویسی است. ما پارادایم های مختلفی در برنامه نویسی داریم و شیء گرایی یکی از محبوب ترین آن ها است. در این پارادایم، برنامه ما به قسمت های منطقی تقسیم می شود و برنامه را مثل یک پدیده واقعی در دنیای واقعی می بینیم. یعنی مثلا اگر بخواهیم یک فروشگاه بسازیم، خصوصیات و متدهایی خواهیم داشت. خصوصیات به چیزهایی مثل «سبد» و «محصولات» و... گفته می شود در حالی که متد به چیزهایی مثل «صدور فاکتور» و «دریافت پول» و... گفته خواهد شد. در نظر داشته باشید با اینکه پایتون به صورت شیء گرا نوشته شده است، شما می توانید در آن از پارادایم های دیگر مانند برنامه نویسی رویه ای یا برنامه نویسی تابع گرا نیز استفاده کنید.

تمام این موارد اصطلاحات فنی بودند، اما پایتون در عمل چطور است؟ اگر بخواهم به سادگی توضیح بدهم، پایتون یکی از وسیع ترین زبان های برنامه نویسی دنیا است. شما با آموزش پایتون می توانید به فکر مباحث IOT (اینترنت اشیاء) یا طراحی وب یا علوم داده یا نجوم و هزاران زمینه کاری دیگر باشید!

آموزش پایتون برای تازه کارها

باید بدانید که زبان پایتون یکی از بهترین زبان ها برای تازه کارها و همچنین افراد حرفه ای است. اگر شما هیچ زبان برنامه نویسی را نمی دانید، آموزش پایتون یکی از بهترین گزینه های پیش رویتان است. چرا؟ به سه دلیل اصلی:

ساختار ساده

زبان پایتون به شدت به زبان انگلیسی نزدیک است. شباهت این زبان به زبان های انسانی باعث می شود که آموزش پایتون برای تازه کارها بسیار راحت تر از بسیاری از زبان های برنامه نویسی دیگر باشد. به طور مثال به نمونه کد پایتون زیر توجه کنید:

kilometers = float(input("Enter value in kilometers: "))
conv_fac = 0.621371
miles = kilometers * conv_fac
print('%0.2f kilometers is equal to %0.2f miles' %(kilometers,miles))

این کد ساده، مسافت در واحد کیلومتر را به مایل تبدیل می کند. همانطور که می بینید خبری از علامت های } یا { یا ; نیست و نوشتار آن بسیار شفاف و ساده است.

گستردگی استفاده

حیطه استفاده عملی از زبان پایتون بسیار گسترده است، بدان معنی که می توانیم با زبان پایتون پروژه های بسیار پیشرفته ای را بنویسیم اما در عین حال می توانیم پروژه های بسیار کوچکی را نیز پیاده سازی کنیم. این مسئله به تازه کارها اجازه می دهد تا آموزش پایتون را با سرعت مناسب خودشان پیش ببرند و از پروژه های ساده شروع کنند.

cross-platform بودن آن

همانطور که گفتم زبان پایتون از زبان های interpreted است بنابراین cross-platform است. یعنی چه؟ یعنی کدهای پایتونی را که برای ویندوز نوشته باشید در لینوکس و مکینتاش و دیگر پلتفرم های موجود نیز اجرا خواهد شد و نیازی به نوشتن چندین باره کدهایتان نخواهید داشت.

با این حساب من آموزش پایتون را به عنوان یکی از بهترین زبان های برنامه نویسی برای زبان اولی ها پیشنهاد می کنم.

آموزش پایتون برای حرفه ای ها

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

نظرسنجی شرکت bo tree technologies از توسعه دهندگان پایتون نشان می دهد «تحلیل داده» و «توسعه ی وب» از رایج ترین دلایل استفاده از پایتون هستند.
 نظرسنجی شرکت Bo tree technologies از توسعه دهندگان پایتون نشان می دهد «تحلیل داده» و «توسعه وب» از رایج ترین دلایل استفاده از پایتون هستند.

توسعه وب

شما می توانید با استفاده از پایتون برای سرورهای خودتان اسکریپت نویسی کنید و از وب سایت های کوچک تا بزرگ را پشتیبانی کنید. به طور مثال فریم ورکی مانند Flask برای پروژه های کوچک و متوسط و فریم ورکی مانند Django برای وب سایت های بزرگ بسیار کاربردی هستند. حتی سیستم های مدیریت محتوایی (معادل wordpress) نیز مانند Plone برای زبان پایتون وجود دارد بنابراین حتی سیستم های وبلاگی به راحتی در آن پشتیبانی می شود. علاوه بر این فریم ورک ها، پکیج های بی نظیر و متعددی در توسعه وب با پایتون وجود دارد که کار شما را بسیار آسان می کنند. کمپانی هایی مانند گوگل و اینستاگرام و اسپاتیفای و نتفلیکس و غیره در بخش های مختلفی از سیستم خود از زبان پایتون استفاده می کنند.

توسعه بازی های کامپیوتری

پکیج های بی نظیر و متعدد پایتون فقط محدود به توسعه وب نیستند، بلکه پکیج های بسیاری برای توسعه بازی های کامپیوتری نیز وجود دارد. به طور مثال PySoy یک موتور برای بازی های سه بعدی است در پایتون ۳ است. این پکیج در کنار پکیج PyGame یکی از ترکیب های مشهور برای توسعه بازی های کامپیوتری است. بازی های بسیار مشهوری مانند Battlefield 2 و Civilization-IV و World of Tanks از زبان پایتون به عنوان پایه توسعه خود استفاده می کنند. علاوه بر این زبان پایتون می تواند در ساده تر کردن طراحی های بصری نیز موثر باشد.

علوم داده

شاید بتوان گفت که مشهورترین دلیل استفاده از پایتون در دنیای مدرن ما تحلیل های آماری و علوم داده می باشد. شما می توانید اعداد و ارقامی را از هر نوع وارد پایتون کرده و آن ها را تحلیل کنید. حال این اعداد می توانند تعداد مبتلایان به بیماری کرونا باشند و یا اینکه تعداد کارت های قرمز در چمپیونز لیگ اروپا باشد! نرم افزارهای مشهوری مانند FreeCAD (مدل سازی سه بعدی) و Abaqus از پایتون استفاده می کنند. اگر در این حوزه فعال باشید حتما نام پکیج های بسیار مشهوری مانند Pandas و SciPy و IPython را شنیده اید.

هوش مصنوعی و یادگیری ماشینی

حتما می دانید که هوش مصنوعی و یادگیری ماشینی حوزه های کاملا جداگانه ای از روش های سنتی کدنویسی هستند. تکنولوژی ها و مهارت های مورد نیاز در این حوزه در عین حالی که اشتراک زیادی با کدنویسی عادی دارند تفاوت های معناداری را نشان می دهند. سادگی آموزش پایتون و در عین حال قدرتمند بودنش، آن را به اولین و بهترین گزینه برای انجام یادگیری ماشینی و هوش مصنوعی کرده است. در این زمینه نیز کتابخانه هایی مانند SciPy و Seaborn و NumPy و Keras نقش زیادی دارند.

طراحی رابط گرافیکی برای دسکتاپ

از آنجایی که پایتون cross-platform است، می تواند نقش بسیار خوبی در طراحی برنامه های دسکتاپ (ویندوز، لینوکس، مکینتاش) و رابط های گرافیکی آن ها داشته باشد. فرم ورک ها و پکیج های بسیار زیادی مانند PyQt و PyGtk و Kivy و WxPython و غیره وجود دارند که به شما کمک می کنند چنین کارهایی را انجام بدهید.

Web Scraping

استخراج داده از وب سایت ها یکی دیگر از کاربردهای عالی پایتون است. برخی از وب سایت ها API ای برای دریافت داده ندارند بنابراین ما می توانیم از برنامه های scrapper استفاده کرده و آن ها را به صورت دستی استخراج کنیم. یکی از استفاده های scraping این است که می توانید قیمت کالاهای خاصی را از صدها فروشگاه مختلف استخراج کرده و سپس آن ها را تحلیل کنید. پکیج های BeautifulSoup و Scrapy و Selenium و Urllib از پکیج های فعال در این زمینه می باشند.

پردازش تصاویر

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

بازار کار پایتون

همانطور که در داده های آماری اعلام شده توسط Stackoverflow و دیگر منابع آماری معتبر دیده می شود، پایتون یکی از بزرگترین زبان های برنامه نویسی دنیا است، بنابراین بازار کار آن همیشه نیاز به نیروی کاری خواهد داشت.

متوسط درآمد توسعه دهندگان پایتون
 متوسط درآمد توسعه دهندگان پایتون

با جست و جویی ساده در وب سایت های استخدامی کشور متوجه می شویم که برنامه نویسان پایتون چیزی بین ۲۰ الی ۵۰ میلیون و حتی بالاتر در هر ماه درآمد دارند و میزان درآمدشان بستگی به عوامل مختلفی دارد؛ به طور مثال شرکتی که در آن کار می کنند، سمت شغلی آن ها (تازه کار یا مدیر پروژه)، تعداد ساعات کار و الی آخر. همچنین درآمد توسعه دهندگان پایتون خارج از کشور نیز حدود ۷۸ هزار دلار در سال برای تازه کارها و ۱۲۲ هزار دلار برای افراد حرفه ای می باشد بنابراین چه بخواهید در کشور کار کرده و چه بخواهید خارج از کشور کار کنید حقوق خوبی را خواهید داشت.