زبان برنامه نویسی پایتون (Python) یکی از زبانهای پرکاربرد و محبوب دنیای برنامه نویسی میباشد. در سال ۲۰۲۱ این زبان به عنوان محبوبترین زبان برنامه نویسی در نظرسنجی سایت استک اورفلو (Stack Overflow) انتخاب شد. این زبان تقریبا یک زبان چند منظوره به حساب میآید و در حوزههای مختلفی همچون هوش مصنوعی، تحلیل داده، طراحی وب، ساخت بازیهای کامپیوتری و طراحی نرمافزارهای دسکتاپی کاربرد دارد. در سالهای اخیر، زبان برنامه نویسی پایتون مورد توجه بسیاری از برنامهنویسان در جهان قرار گرفته و روزبهروز به تعداد آنها افزوده میشود، هرچند هنوز در ایران جایگاه خود را پیدا نکرده است ولی با توجه به کاربردهای بسیاری که در برنامه نویسی دارد، میتوان آیندهی روشنی برای آن تصور کرد.
تاریخچه زبان برنامه نویسی پایتون
در سال ۱۹۸۹ یک برنامه نویس هلندی به اسم خیدو فان روسوم (Guido van Rossum) در یکی از شب های کریسمس برای سرگرمی با سیستم شخصی که در دفتر کارش داشت تصمیم گرفت که مترجمی برای یک زبان اسکریپتی بنویسد. هدف او طراحی یک زبان شبیه سی (C) و یونیکس (Unix) بود که برای هکرها جذاب و پژوهشگران منعطف باشد.
شاید بسیاری از ما فکر کنیم اسم پایتون برای این زبان از مارهای معروف پیتون الهام گرفته شده است اما جالب است بدانید که ۶ سال بعد آقای روسوم در این رابطه مینویسد:
نام پایتون را برای عنوان کاری این پروژه انتخاب کردم چرا که در حالتی جسورانه و غیر سنتی به سر میبردم و البته از طرفداران پروپاقرص سیرک دوره گرد مانتی پایتان بودم.
زبان برنامه نویسی پایتون چیست؟
پایتون یک زبان اسکریپتی مفسری سطح بالا و چند منظوره است. فلسفه اصلی این زبان خوانایی بالای کد میباشد، پایتون یک زبان برنامه نویسی شی گراست و خیدو روسوم پایتون را طوری طراحی کرده است که جانشینی برای زبان ایبیسی (ABC) با قابلیت پردازش استثناها باشد.
زبان برنامه نویسی پایتون رسما در تاریخ ۲۰ فوریه ۱۹۹۱ منتشر شد. نسخه دوم این زبان در سال ۲۰۰۰ منتشر گردید و از ویژگیهای آن میتوان به پشتیبانی از یونیکد اشاره کرد و این بدین معناست که پایتون میتوانست تا ۶۵.۵۳۶ کارکتر را پشتیبانی کند و ۸ سال بعد نسخه سوم این زبان که به نوعی میتوان بازنویسی مجدد پایتون گفت منتشر شد. هدف این نسخه رفع مشکلات موجود در نسخه دوم بود.
از سال ۲۰۲۰ فقط از پایتون نسخه ۳ پشتیبانی میشود و رسما نسخه ۲ پایتون برای همیشه منسوخ شد و دیگر آپدیتی برای نسخه ۲ منتشر نشد. همچنین از نسخه ۳.۹ به بالا پایتون در سیستم عامل ویندوز فقط بر روی ویندوزهای ۸ و بالاتر نصب میشود. در حال حاضر نسخه ۳.۱۰ جدیدترین نسخه پایتون میباشد که از مهمترین ویژگیهای آن اضافه شدن پترن مچینگ (pattern matching) یا همان ساختار کنترلی به پایتون میباشد. این پروژه بصورت متن باز و زیر نظر بنیاد نرم افزار پایتون توسعه داده میشود.
ویژگی های زبان برنامه نویسی پایتون
• متن باز بودن
متن باز بودن زبان برنامه نویسی پایتون یکی از ویژگیهای جذاب این زبان میباشد. سورس کد پایتون در گیت هاب (GitHub) موجود است و شما با بررسی این ریپازیتوری میتوانید سورس کد کامل پایتون رو مشاهده کنید. متن باز بودن پایتون این کمک را به این زبان میکند که در صورت وجود باگ یا برای درخواست ایجاد یک قابلیت جدید، بتوان به راحتی با توسعه دهندگان آن مکاتبه کرد و حتی در صورت توانایی در پروژه پایتون هم مشارکت داشته باشند.
• خوانایی بهتر و کدهای تمیزتر
سطح بالا بودن این زبان باعث شده است تا کدهای نوشته شده با زبان برنامه نویسی پایتون به زبان محاورهای انسانها نزدیکتر باشد و کدهای این زبان قابل فهم و تمیزتر باشد. به عنوان مثال در اکثر زبان های برنامه نویسی برای نوشتن یک برنامه ساده که فقط کلمه «سلام» را چاپ کند باید تعداد خطوط بالایی کد نوشته شود تا پایه برنامه طراحی بشود و بعد برنامه مورد نظر را در میان این کدها نوشت. در صورتیکه در زبان برنامه نویسی پایتون فقط با نوشتن یک خط کد میتوان این برنامه را نوشت.
همچنین پایتون برخلاف قانون اکثر زبان های برنامه نویسی که باید در انتهای یک خط کد، علامت سیمی کالن (؛) قرار داده شود اما در پایتون نیازی به این مورد نیست زیرا پایتون انتهای کد را بصورت اتوماتیک تشخیص میدهد و بعد از اتمام یک خط میفهمد که این خط به اتمام رسیده و سراغ خط بعدی میرود.
• داینامیک تایپ
در اکثر زبان های برنامه نویسی مانند زبان سی (C) و جاوا (Java) و … زمان تعریف یک متغیر نیاز است ابتدا دیتا تایپ (Data Type) متغییر را مشخص کرد و سپس متغیر خود را تعریف کنید، اما پایتون در این مورد بصورت داینامیک متوجه خواهد شد! یعنی در صورت تعریف یک متغیر در پایتون با توجه به تایپ مقداری که در متغیر ذخیره شده تایپ متغیر را میفهمد. به عنوان مثال اگر شما یک متغیر با مقدار ۱۲ تعریف کنید پایتون متوجه میشود که ۱۲ یک عدد صحیح است پس خودش میفهمد که تایپ آن متغیر تایپ اعداد صحیح است.
• نزدیکی به زبان انگلیسی
یکی دیگر از مواردی که نقطه قوت این زبان محسوب میشود نزدیکی آن به زبان محاورهای میباشد زیرا کلمات کلیدی و دستورات و توابع پایتون به نحوی تعریف شدند که به کلمات انگلیسی نزدیکتر باشند، بنابراین شما اگر به کسی که زبان پایتون را بلد نیست کدهای این زبان را نشان دهید میتواند یک دید کلی نسبت به آن برنامه داشته باشد زیرا کدهای آن به شدت به زبان انگلیسی شباهت دارد. این ویژگی به همراه مورد متن باز بودن در محبوبیت این زبان نقش اساسی دارند.
• کتابخانههای متعدد
یکی از مواردی که باعث قدرتمندتر شدن زبان برنامه نویسی پایتون شده است کتابخانههای آن است. همانطور که در موارد بالا اشاره شد، زبان پایتون به دلیل خوانایی بالای کدها و نزدیکی به زبان انگلیسی، توجه بسیاری از توسعه دهندگان را به خود جلب کرده است و توسعه دهندگان برای این زبان کتابخانههای متعددی طراحی کردند بطوری که میتوان گفت پایتون برای هر زمینهای حداقل یک کتابخانه دارد و این باعث شده است که از پایتون در هر زمینهای میتوان استفاده کرد ولی این نکته را باید متذکر شد که درست است زبان برنامه نویسی پایتون در هر زمینهای حداقل یک کتابخانه دارد اما این مورد الزاما درجه یک بودن آن کتابخانه را در آن حوزه تایید نمیکند.
• مفسر پایتون
خب همانطور که در بالا اشاره شد پایتون یک زبان مفسری میباشد. این بدین معناست که هنگام اجرای کدهای پایتون، خط به خط کدها توسط مفسر به زبان ماشین ترجمه شده و بعد از اتمام ترجمه هر خط به سراغ خط بعدی میرود. این مورد از نظر سرعت اجرای برنامه یک نقطه ضعف به حساب میآید زیرا به نسبت کامپایلرها که تمام کد را ترجمه کرده و یک خروجی قابل فهم برای ماشین میدهند، مفسرها سرعت کمتری دارند اما مفسرها از جمله مفسر پایتون از مزایایی برخوردار هستند که آنها را نسبت به کامپایلرها برتری میدهد.
• جامعه بزرگ و پویا
در موارد بالا اشاره شد که زبان برنامه نویسی پایتون به زبان انگلیسی نزدیک است و کدهای آن قابل فهم و تمیزتر است. این ویژگی باعث شده تا افراد بیشتری مشتاق یادگیری این زبان شوند که منجر به بزرگ شدن جامعه برنامه نویسان پایتون میشود. از موارد مثبت زبان پایتون این است که اگر مشکلاتی را اعم از فهم مفاهیم یا خطاها و باگهای در حین توسعه برنامهای داشتید، به راحتی میتوانید جواب خود را با جستجو کردن در انجمنهای مربوط به برنامه نویسی همچون استک اورفلو، گیت هاب و غیره پیدا کنید و به کمک آنها مشکلات خود را برطرف نمایید.
کاربرد پایتون در حوزههای مختلف
همانطور که اشاره شد پایتون دارای کتابخانههای زیادی میباشد. این ویژگی باعث شده است تا زبان برنامه نویسی پایتون یک زبان چند منظوره باشد و بتوان هر نوع برنامهای را با این زبان نوشت. در این بخش به کاربرد زبان پایتون در برخی از حوزههای نرم افزاری میپردازیم. همچنین درباره هر کدام از این کتابخانههایی که نامبرده میشوند قرار است در آینده بصورت مفصلتر با آنها آشنا شویم.
• طراحی بک اند وب
همانطور که در مقاله فرانت اند یا بک اند گفته شد، پایتون برای برنامه نویسی بخش نرم افزاری و سمت سرور یا به اصطلاح بک اند وبسایتها استفاده میشود. پایتون قابلیتهای زیادی را برای توسعه وب فراهم میکند که از این جمله میتوان به مواردی که در ادامه آمده اشاره کرد.
- فریمورک هایی مانند جنگو (Django) و چری پای (CherryPy)
- میکرو فریمورک هایی مانند فلسک (Flask) و باتل (Bottle)
- و درنهایت سیاماسهایی مانند جنگو سی ام اس (django CMS) و پلون (Plone)
این زبان با توجه به قابلیتهای فراوانی که دارد زبان مورد علاقه برنامه نویسان وب میباشد. شرکتهای عظیمی مانند گوگل، یاهو، اینستاگرام و … در سطح وسیعی در حال استفاده از زبان برنامه نویسی پایتون هستند.
• طراحی رابط گرافیکی دسکتاپ و اپ موبایل
شما با استفاده از پایتون میتوانید علاوه بر ساخت برنامههای تحت کامندلاین (Command Line)، برنامههای گرافیکی نیز طراحی کنید. در پایتون به وسیله کتابخانه استاندارد تکینتر (Tkinter) این کار را انجام دهید اما به غیر از این کتابخانه از کتابخانههایی مانند پای کیوت (PyQt) و کیوی (Kivy) که توسط دیگر توسعه دهندگان پایتون نوشته شدند استفاده کنید. همچنین از کتابخانه کیوی (Kivy) برای طراحی اپلیکیشنهای موبایل نیز استفاده میشود.
• توسعه نرم افزار
زبان برنامه نویسی پایتون اغلب به عنوان یک زبان پشتیبان توسط توسعه دهندگان نرم افزار برای ساخت، کنترل و مدیریت، تست و کامپایل خودکار و مداوم، ردیابی باگ و مدیریت پروژه و کارهای دیگر مورد نیاز در فرآیند تولید و نگهداری نرم افزار مورد استفاده قرار میگیرد.
• کاربرد تجاری
از زبان برنامه نویسی پایتون برای ساخت سیستمهای برنامهریزی منابع سازمانی مورد استفاده قرار میگیرد و همچنین نرم افزار اودو (Odoo) یک نرم افزار برنامهریزی یکپارچه منابع سازمانی به زبان پایتون است که یک مجموعه کامل از برنامههای کاربردی مدیریت کسبوکار به حساب میآید.
• آموزش به کودکان و نوجوانان
امروزه بسیاری از کشورها همچون انگلستان، آمریکا، استونی، ژاپن، چین و … با هدف رشد مهارتهای حل مسئله، خلاقیت و فکری مانند تفکر انتقادی و الگوریتمی و … به کودکان و نوجوانان آموزش برنامه نویسی میدهند و بعضی اوقات این مهارت را در مدرسه به عنوان یکی از دروس در چارت آموزشی قرار میدهند.
تا سالها پیش زبان برنامه نویسی جاوا (Java) به عنوان یک زبان برنامه نویسی منتخب در مدارس و دانشگاهها بوده اما در حال حاضر زبان برنامه نویسی پایتون به علت سینتکس (Syntax) راحت و نزدیکی آن به زبان محاورهای، توانسته این جایگاه را تصاحب کند و بسیاری از موسسات آموزشی و مدارس، برنامه نویسی را با زبان پایتون به دانش آموزان و دانشجویان خود آموزش دهند.
• علم داده و داده کاوی
داده کاوی و تحلیل داده از شاخههای بسیار مهم در علوم کامپیوتر است. با تحلیل داده ها میتوان اطلاعات مفیدی را در اختیار کسبوکارها و شرکتها قرار داد. روشها و الگوریتمهای مختلفی برای داده کاوی وجود دارد اما به جرات میتوان گفت بهترین زبان برنامه نویسی برای تحلیل داده و داده کاوی زبان برنامه نویسی پایتون است. پایتون دارای کتابخانههای بسیار قوی و کاربردی مانند پانداس (Pandas)، نامپای (NumPy)، مت پلات (Matplotlib)، سایکیت لرن (Scikit-Learn) و … در این حوزه میباشد.
• هوش مصنوعی
علم هوش مصنوعی در این روزها جزو محبوبترین حوزههای برنامه نویسی است. در این حوزه برای برنامه نویسی و طراحی هوش مصنوعی، نیازمند به زبان برنامه نویسی هستیم که بینقص باشد تا وقت کمتری صرف تصحیح خطاها شود. همینطور باید کار کردن با آن راحت باشد تا سرعت کدنویسی بالاتر برود. زبان برنامه نویسی پایتون جزو معدود زبانهایی است که این ویژگیها را با خود دارد و این باعث شده در این حوزه زبان پایتون به شدت قدرتمند و پرکاربرد شود. در این حوزه زبان پایتون از کتابخانههایی مانند تنسرفلو (TensorFlow)، پایتورچ (Pytorch)، کراس (Keras)، ثینو (Theano)، ان ال تی کی (NLTK)، پای برین (PyBrain) و … برخوردار است.
• هک و امنیت
در موارد بالاتر اشاره کردیم یکی از اهداف اولیه سازنده این زبان طراحی یک زبان جذاب برای هکرها بود. پایتون به دلیل سطح بالا بودن و همچنین عدم نیاز به کامپایل کدهای خود و اسکریپتی بودنش باعث شد تا خیلی از هکرها جذب این زبان شوند. زبان برنامه نویسی پایتون در این حوزه کتابخانههایی مانند سوکت (Socket)، او اس (OS)، ریکوئست (Requests) و … دارد که کتابخانههای قوی در این حوزه محسوب میشوند. پایتون همچنین زمان اتصال به شبکه را کوتاهتر کرده و جزو یکی از بهترین زبان های برنامه نویسی برای هک وب سرورها محسوب میشود.
معایب پایتون
پایتون دارای ویژگیهای بسیار زیاد و متنوعی است و توسعه دهندگان، این زبان را نسبت به دیگر زبانها بدلیل سادگی یادگیری و کدنویسی ترجیح میدهند. گرچه این زبان هنوز جایگاهی برای خود در برخی از حوزههای پردازش کامپیوتری بدست نیاورده است بنابراین ممکن است این زبان توانایی حل برخی از راهکارهای سازمانی را ندارد و با محدودیتهایی که برخی از آنان را در ادامه عنوان میکنیم مواجه میکند. همچنین در بعضی مواقع نقاط قوت این زبان به یکی از ضعفهای بزرگش تبدیل میشود!
• سادگی پایتون
بله درست متوجه شدید! این مورد یکی از مواردیست که برای زبان برنامه نویسی پایتون یک مزیت بزرگ محسوب میشود اما از سویی دیگر این مورد یکی از عیبهای بزرگ این زبان میباشد، زیرا مشتاقان و برنامه نویسان پایتون که با ویژگیها و کتابخانههای گسترده این زبان خو گرفتند ممکن است در کار یا یادگیری دیگر زبانهای برنامهنویسی دچار مشکل شوند چون همانطور که در بالا اشاره شد ممکن است اعلان مقادیر یا نوع متغیرها و الزام به افزودن آکولاد {} و سیمی کالن (؛) را در بخشهایی از کد به علت اینکه در پایتون نیازی به نوشتن و تعریف کردن آنها نیست دشوار و بیدلیل بپندارند.
• پایین بودن سرعت
همانطور که در موارد بالا عنوان کردیم گاهی یک نقطه قوت منجر به ایجاد ضعفهایی میشود. زبان برنامه نویسی پایتون یک زبان تفسیر شده و با قابلیت تعیین تایپ و نوع بصورت خودکار است و همین مشخصهها باعث میشوند تا کدها بصورت خط به خط اجرا شده و سرعت اجرای پایتون پایین بیاید. مشخصه داینامیک تایپ (Dynamic Type) در زبان پایتون دلیل دیگری بر سرعت پایین این زبان است، زیرا در این حالت باید کارهای بیشتری را در طی فرایند اجرا انجام دهیم و بطور کلی وقت بیشتری در این زبان صرف میشود. بخاطر وجود چنین نقصی در پایتون جهت ایجاد برنامههایی که در آنها سرعت از اهمیت فراوانی برخوردار است از پایتون استفاده نمیشود. از سوی دیگر، زبان برنامه نویسی پایتون برای بسیاری از کاربردهای وب سریع به شمار میآید.
• ضعیف در پردازش موبایل
زبان برنامه نویسی پایتون در بسیاری از حوزهها همچون دسکتاپ و سرور جایگاه خوبی را بدست آورده است اما در پردازش موبایل ضعیف به نظر میرسد. از آنجایی که زبان پایتون قدرت پردازش کندی داشته و در مقایسه با دیگر زبانها کارایی حافظه کمتری دارد، از پایتون در برنامه نویسی دستگاههای تلفن همراه استفاده نمیشود.
• خطاهای زمان اجرا
در ویژگیهای زبان برنامه نویسی پایتون به این نکته اشاره کردیم که پایتون بصورت داینامیک تایپ کار میکند، بنابراین دارای محدودیتهای طراحی زیادی است که توسط برخی توسعه دهندگان این زبان عنوان شده است. حتی در مواردی مشاهده شده که این زبان نیازمند زمان تست بیشتری است و هنگامی که برنامهها در نهایت اجرا میشوند با خطاهایی روبرو هستند.
• دسترسی به پایگاه داده
لایههای دسترسی به دیتابیس زبان برنامه نویسی پایتون در مقایسه با دیگر فناوریهای محبوب مانند جی دی بی سی (JDBC) و او دی بی سی (ODBC) کمی تحت توسعه و ابتدایی میباشد و به همین دلیل قابل اعمال بر کسبوکارهایی نیست که نیاز به تعامل رواندادههای پیچیده دارند.
اما حرف آخر…
من در این مطلب تلاش کردم تا درباره این زبان محبوب برنامه نویسی، اطلاعاتی را در اختیار شما قرار دهم و از کاربردهای آن در صنایع مختلف صحبت کنم، در مقالههای بعدی به سراغ فریمورکها و کتابخانههای مختلف پایتون میروم و آنها را مورد بررسی قرار میدهم. برای یادگیری این زبان دورههای فراوانی در منابع فارسی و انگلیسی وجود دارد که بعدها به آنها اشاره خواهم کرد. همچنین یک دوره منتورشیپ برنامه نویسی پایتون توسط من طراحی شده است که در مسیر یادگیری زبان برنامه نویسی پایتون شما را همراهی میکنم. اگر پس از خواندن این مطلب سوالی داشتید که در اینجا پاسخی به آن داده نشده است، حتما سوالات خود را در کامنت بپرسید تا پاسخ دهم.
امتیاز بده!
۵ ستاره یادت نره...
عالی بود
مرسی
مقاله خیلی خوبی بود✌
امیدوارم از خواندن این مطلب لذت ببرید
https://t.me/shahriaarrr12
مطلب خیلی عالی بود. من تو حوزه BI میخوام وارد بشم بنظر شما چقدر باید تسلط روی پایتون داشته باشم تا از پس کار ها بر بیام؟ مثلا در سطح یک برنامه نویس یا کمتر
درود و ارادت علی جان
باید و حتما روی زبان برنامه نویسی پایتون تسلط صددرصدی داشت و متخصص این زبان برنامه نویسی شد
ممنونم از همراهیت
عالی بود
مختصر و مفید👍
ضمن عرض خسته نباشید
حقیقت میخواستم یه مژده بدم که با توجه به استقبال زیادی که از زبان typescript شد، توسعه دهنده زبان هم یه وعدههایی برای اتخاذ رویکرد مشابهی داد.
از جهتی هم در حوزه ریزپردازندهها Cpython خیلی بازخورد خوبی دریافت کرده!
خودم به شخصه خیلی مشتاقم ببینم که ترکیبی از رویکرد استفاده از مفسر یا کامپایل کردن کد به زبان ماشین حاصل خواهد شد یا خیر.
میتونم نظر شمارو در اینباره بدونم؟
سلام مسعود عزیز
بله سایتون یکی از اون مواردی هست که واقعا کاربردیه و بین برنامه نویسان پایتون داره جا باز میکنه.متاسفانه من با سایتون کار نکردم و از نقاط قوت و ضعفش اطلاعی ندارم اما از نظر من ما باید اول ببینیم این رویکرد ترکیبی چه فوایدی در پرفورمنس یک زبان داره داره؟همونطور که اشاره کردیم مفسری بودن پایتون یکی از مزیت های اون هست اون هم توی علومی مثل هوش مصنوعی.اما خب باید ببینیم این تلفیق مفسر و کامپایلر آیا باعث میشه یکسری مزایا رو بیاره و معایبی رو بپوشونه یا صرفا ما رو با چالش های بیشتری رو به رو میکنه.
دقیقا چیزی که ذهن منو م بخودش مشغول کرده همینه
بخاطر همین گفتم نظر دیگران رو بدونم، بلکه به درک بهتری از اتفاقی که خواهد افتاد برسم.
در نهایت که کامپایل شدن کد به بهینهتر شدن مصرف منابع خیلی کمک خواهد کرد، ولی دیگه رویکرد همیشگی به توسعه نرمافزارهای کنون (Legacy Code) تغییر خواهد کرد.
حالا باس بود و دید که کامپایلر به چه نحوی با کتابخونهها و کد خواهد پرداخت.
مرسی بابت همفکریتون!
مقاله عالی و کاملی بود
خسته نباشید
زبان خیلی پر کاربردیه
عالی بود