پایتون یک زبان برنامه نویسی خوانا و ساده است به طوری که ابزاری ست قدرتمند برای تحقق هرآنچه که در فکر برنامه نویس است. این زبان جامعه کاربری بسیار بزرگ و پویایی دارد. هرساله همایش های گوناگون در سراسر جهان برپا می شود، مانند همایش PyCon که در ایران نیز با عنوان های PyIran یا PyCon Iran برگزار می گردد. زبان برنامه نویسی پایتون توسط شرکت ها و سازمان های مطرح زیادی مورد استفاده قرار گرفته است. بعضی از این شرکتها از قبیل:
- شبکه های اجتماعی مانند Instagram, Pinterest, reddit
- موتور جستجوگر Google و سرویس های YouTube
- سرویس نقشه Yahoo
- سرویس میزبانی ابری فایل Dropbox
- نقشه برداری در برنامه GIS)ESRI)
- و بسیاری برنامه های دیگر
تاریخچه
داستان Python از سال ۱۹۸۲ میلادی آغاز می شود. در سال ۱۹۹۱ زبان پایتون با نسخه ۰٫۹٫۰ توسط آقای روسوم منتشر میشود که با استقبال بالایی نیز روبرو می گردد. نام این زبان بر خلاف تصور عمومی یا آنچه که از لوگوی آن مشاهده می شود به نوع خاصی از مار مربوط نمی شود، بلکه برگرفته از یک سریال کمدی تولید انگلستان می باشد.
سیر تاریخی نسخه های نرم افزاری پایتون
- نسخه ۱٫۶
- نسخه پایدار ۲٫۰ در شانزدهم اکتبر سال ۲۰۰۰ میلادی
- نسخه ۲٫۶
- نسخه ۳٫۰ (Py3k, Python3000) در دسامبر سال ۲۰۰۸ میلادی: این نسخه قادر به اجرای سورس کدی که بر پایه نسخه های پیشین تهیه شده است نمیباشد.
- نسخه ۳٫۱ در سال ۲۰۰۹ میلادی
- نسخه ۲٫۷ در سوم جولای ۲۰۱۰ میلادی و با قابلیت پشتیبانی(تلاش برای رفع باگ ها) به مدت ده سال یعنی تا سال ۲۰۲۰ میلادی
انواع پیاده سازی زبان برنامه نویسی پایتون
- Jython مخصوص ماشین مجازی جاوا
- IronPython مخصوص چارچوب مایکروسافت
- PyPy با هدف سرعت اجرای بیشتر
- Stackless با هدف اجرای بهتر برنامههای چندنخی
- CPython پیادهسازی استاندارد و اصلی زبان پایتون میباشد که با استفاده از زبان برنامهنویسی C توسعه مییابد.
پایتون (Python) نام یک زبان برنامهنویسی است اما CPython (یا دیگر پیادهسازیهای زبان پایتون) یک پردازنده برای زبان پایتون است، یعنی برنامهای که توسط آن میتوان کد منبع (سورس کد) یک برنامه به زبان پایتون را اجرا نمود.
ویژگی های زبان پایتون
- زبان برنامه نویسی متن باز (Open Source):
به برنامه نویس این امکان را نیز می دهد که بتواند برنامه ای با سورس بسته(Closed Source) تولید کند.
- زبان برنامه نویسی همه منظوره(General-Purpose) :
میتوان از آن در توسعه طیف گستردهای از انواع برنامهها در حوزههای نرمافزاری گوناگون بهره برد؛ از جمله در توسعه برنامههای تحت وب و برنامههایی با قابلیت واسط گرافیکی کاربر.(GUI)
- دارا بودن مجموعه بزرگی از کتابخانه های استاندارد و قابلیت استفاده از کتابخانه های شخص ثالث پایتون (Third-party):
این زبان به همراه مجموعه بزرگی از قابلیت های از پیش آماده و قابل حمل(کتابخانه استاندارد) شناخته می شود و همچنین کتابخانه های شخص ثالث ابزارهای مفیدی را در امور فراوانی مانند: برنامه نویسی علمی، پردازش زبان های طبیعی، ایجاد بازی، هوش مصنوعی، ایجاد وب سایت، پردازش تصویر، واسط گرافیکی کاربر، رمز نگاری و … در اختیار برنامه نویسان قرار می دهند.
- زبان برنامه نویسی پویا با قابلیت مدیریت خودکار حافظه:
بر خلاف زبان های ایستا مانند C, C++, Java در زبان های پویا نیازی به تعریف صریح نوع متغیرها نیست. همچنین نوع متغیر در طول برنامه قابل تغییر است. در این زبانها متغیرها از خود نوعی ندارند و تصمیم گیری برای اختصاص نوع در زمان اجرا انجام می گیرد.
- زبان برنامه نویسی با وابستگی شدید به نوع:
در زبان های پویا مانند زبان پایتون تغییر خودکار و ناگهانی نوع داده انجام نمی شود. به عنوان مثال در زبان برنامه نویسی پایتون که از نوع وابسته شدید به نوع(Strongly- Typed) است از جمع ۳ و “۷” پیغام TypeError نمایش داده می شود اما در زبان های وابسته ضعیف به نوع(Weak-Typed) مانند زبان برنامه نویسی Perl با جمع مقادیر ذکر شده، ابتدا “۷” به ۷ تبدیل و سپس با هم جمع می شوند. در نتیجه عدد ۱۰ نمایش داده خواهد شد.
- قابلیت برنامه نویسی آسان و سریع:
به این نوع زبان های برنامه نویسی سطح بالا (High-Level) گفته می شود، چون برنامه نویس را درگیر مفاهیم سخت افزاری مانند کار با ثبات ها(Registers) ، آدرس های حافظه و … نمی کند. زبان های C, C++,Java نیز از زبان های سطح بالا بوده و زبان ماشین و اسمبلی(Assembly) نیز از زبان های سطح پایین می باشند.
زبان ماشین تنها زبان قابل فهم و اجرا برای هر ماشین یا رایانه می باشد و تمامی برنامه های نوشته شده پیش از اجرا باید به این زبان ترجمه شوند (این نیاز به پردازش اضافی از سرعت اجرای برنامه می کاهد). عمل ترجمه برای کدهای Assembly توسط اسمبلر و برای بقیه زبان ها توسط کامپایلر(Compiler) یا مفسر(Interpreter)انجام میگیرد.
- زبان برنامه نویسی چند الگویی(Multi-Paradigm) :
الگوهای موجود در این زبان عبارتند از: الگوهای دستوری(Imperative)، رویه ای (Procedural) ، تابعی (Functional) و شیءگرایی (Object-Oriented) . با استفاده از این ویژگی برنامه نویس دیگر مجبور به رعایت تنها یک الگوی خاص نمی باشد و میتواند یکی از الگوهای ذکر شده را انتخاب کند.
جدا از پشتیبانی الگوی شیء گرایانه، ساختار پایتون کاملا شیء گرا می باشد. یعنی هر چیزی در این زبان یک شیء است.
- زبان برنامه نویسی تفسیر شده (پیاده سازی توسط CPython):
ابتدا سورس کد به یک زبان میانی نزدیک به زبان ماشین یعنی ByteCode کامپایل و ترجمه میشود، سپس بایت کد حاصل به ماشین مجازی (Virtual Machine) به عنوان موتور زمان اجرای پایتون فرستاده، تفسیر و اجرا می گردد.
تفاوت عملکرد کامپایلر و مفسر: کامپایلر تمامی سطرهای سورس کد را یکجا می خواند و با ایجاد یک فایل جدیدObject Code عمل ترجمه به زبان ماشین را انجام می دهد. برنامه حاصل از کامپایلر توانایی چندین بار اجرا در رایانه مقصد بدون اجرای دوباره کامپایل را دارد. اما فاقد حمل پذیری است یعنی کاربر توانایی دسترسی به سورس کد و تغییر و ویرایش آن را ندارد. اما مفسر سطر به سطر برنامه را خوانده و ترجمه می کند. هنگامی که مفسر در حال ترجمه سطر اول است همزمان در حال خواندن سطر دوم می باشد. برنامه های نوشته شده با زبان های برنامه نویسی مفسر در هر بار اجرا نیاز به تفسیر دوباره دارند. این کار سرعت را کاهش می دهد اما امکان ویرایش و تغییر کد در هر زمان توسط کاربر ایجاد می شود. همچنین قابلیت تشخیص خطای بهتر را به دنبال دارد.
- زبان برنامه نویسی قابل حمل(Portable) :
یعنی قابلیت اجرا در هر رایانه ای را دارد. در حالت عادی وقتی سورس کد به زبان ماشین ترجمه می گردد، فایل بدست آمده تنها در ماشینی که کد برای آن ترجمه شده است قابل اجرا است ولی در پایتون به کمک ماشین مجازی این توانایی را دارد که برنامه در هر رایانه ای قابل اجرا باشد.
ماشین مجازی پردازش، بسته ایست نرم افزاری که روی تمام ماشین ها قابل نصب است و وظیفه ی آن ایجاد یک ماشین مجزا بر روی ماشین مقصد برای اجرای مستقل بایت کدها می باشد.
- زبان برنامه نویسی توسعه پذیر(Extensible) :
کدهای نوشته شده با پایتون را می توان به دیگر سورس کدهای این زبان افزود. همچنین از کتابخانه ها و کدهای نوشته شده با دیگر زبان های برنامه نویسی مانند C, C++,Java استفاده کرد.
- دستور زبان تمیز و خوانا (Readability):
خوانایی و شیءگرا بودن این زبان از مهمترین ویژگی های کد جهت استفاده مجدد می باشد. این زبان از تورفتگی بوسیله فضاهای خالی برای بلاک بندی استفاده می کند. همچنین اجباری به استفاده از نقطه ویرگول و بعضی پرانتزگذاری ها نمی باشد. این ویژگی ها به همراه ویژگی پویایی پایتون و شیءگرا بودنش باعث حجم کم کدنویسی و صرفه جویی در زمان می شود.
- زبان برنامه نویسی حساس به حروف(Case Sensitive) :
پایتون مانند C, C++,Java, Perl بین حروف کوچک و بزرگ تفاوت قائل است.
کارائی زبان برنامه نویسی پایتون
معمولا کارائی بالا، برابر با سرعت بالاست. ولی قضاوت در این مورد به این سادگی نیست. زبان پایتون چون یک زبان تفسیر شده است در مقایسه با زبان های کامپایل شده C, Java سرعت کمتری خواهد داشت. جهت انتخاب زبان مناسب جهت برنامه نویسی یک پروژه، ابتدا باید مبنای کارائی پروژه را مشخص کرد و زبانی را انتخاب کرد که به آن مبنا نزدیکتر باشد. اگر مبنای کارائی پروژه سرعت بالا باشد، زبان C همیشه بهترین انتخاب خواهد بود. ولی اگر مبنا، سرعت بالای توسعه و صرفه جویی در هزینه باشد زبان Python انتخاب مناسبی است. گاهی کارائی بهتر با ترکیب چندین زبان محقق میشود.