مقدمه
پایتون از اواخر سال 1980 میلادی آغاز میشود، آقای روسوم پس از پایان دانشگاه به عنوان یک برنامهنویس وارد تیم توسعه زبانABC در مرکز Centrum Wiskunde & Informatica) واقع در آمستردام هلند میشود.
ABC یک زبان برنامهنویسی تفسیرشده (Interpreted) با اهداف آموزشی است که از اواخر دهه هفتاد میلادی، تحت پروژهای در این مرکز آغاز شده بود. وی چهار یا پنج سال بعد، زمانی که از پروژه زبان ABC نتیجه مطلوب حاصل نمیگردد از آن خارج و به تیم توسعه سیستم عامل آمیب (Amoeba) میپیوندد. این موضوع از آن جهت دارای اهمیت است که در هنگام کار بر روی این سیستم عامل بود که آقای روسوم به فکر ایجاد یک زبان اسکریپتی (Scripting Language) جدید میافتد. در دسامبر سال ۱۹۸۹ میلادی، تعطیلات کریسمس فرصتی میشود تا آقای روسوم به ایده سرگرم کننده خود بپردازد. البته پس از آن نیز زمان زیادی از وقتهای آزاد خود را برای پیشرفت پروژهای که ”Python“ نامیده بود صرف میکند. در این مسیر، تجربه کار بر روی زبان ABC و همینطور مطالعات وی بر روی زبان Modula-3 نقش فراوانی داشته است، در واقع او یک نسخه شخصی از بخشهای مورد علاقه خود از ABC ایجاد نمود. در واقع ون راسوم، نویسنده اصلی پایتون است. منشا انتخاب نام پایتون توسط آقای روسوم برخلاف تصور عمومی یا آنچه که از لوگوی آن مشاهده میشود به نوع خاصی از مار مربوط نمیشود!؛ در حقیقت این نام برگرفته از یک سریال کمدی تولید انگلستان با عنوان ”Monty Python’s Flying Circus“ میباشد که پخش اصلی آن در طی سالهای ۱۹۶۹ تا ۱۹۷۴ میلادی از شبکه BBC One بوده است.
یک سال بعد آقای روسوم از پایتون در پروژه آمیب استفاده میکند؛ نتیجه مطلوب و نیز بازخورد آن در بین همکارانش موجب میشود تا وی به بسیاری از بهینه سازیهای اولیه در پایتون اقدام نماید. این روند ادامه مییابد تا اینکه سرانجام در ماه دوم از سال ۱۹۹۱ میلادی این زبان را با نسخه 0.9.0 منتشر میسازد که با استقبال بالایی نیز رو به رو میگردد. البته در این مرحله از پیشرفت وجود داشت.
زبان برنامهنویسی پایتون همانطور که اشاره شد در سال ۱۹۹۱ میلادی توسط آقای روسوم خلق شده و توسعه آن نیز زیر نظر مستقیم اوست. آقای روسوم زاده سال ۱۹۵۶ میلادی و نخستین دارنده عنوان BDFL (دیکتاتور خیرخواه جاویدان) میباشد و هم اکنون (سال ۲۰۱۵) در شرکت Dropbox مشغول به کار است. توسعه پایتون با عصر توسعه و محبوبیت زبانهای متن باز دیگری همچون Tcl ،Perl و Ruby هم زمان بوده که این امر به پیشرفت و توسعه آن کمک زیادی کرده است. پایتون یک جامعه کاربری بسیار بزرگ و پویا به همراه خود دارد که عامل پیشرفت و توسعه بسیار مهمی برای هر زبان برنامهنویسی به شمار میرود. این جامعه هر ساله با برپایی همایشهای گوناگون در سراسر جهان به تبادل آموختهها میپردازد. یکی از رایجترین این همایشها PyCon (پایکان) میباشد که خوشبختانه در ایران (PyCon Iran یا PyIran) نیز برگزار میشود.
این زبان تاکنون توسط شرکت یا سازمانهای مطرح زیادی مورد استفاده قرار گرفته و در برنامههای کاربردی زیادی نیز از آن استفاده شده است که از جمله این موارد میتوان به: reddit ،Pinterest ،Instagram (شبکههای اجتماعی) / Google (موتور جستجوگر و نیز سرویس یوتیوب) / Yahoo (سرویس نقشه) / IBM ،Intel ،Cisco ،Seagate (تست سختافزار) / Dropbox (سرویس میزبانی ابری فایل) / EVE Online (بازیهای آنلاین) / NASA ،Los Alamos (امور علمی) / iRobot (رباتیک) / Pixar ،Industrial Light and Magic ،Walt Disney (ساخت فیلمهای انیمیشن) / BitTorrent (اشتراک فایل نظیر به نظیر) / CIA (وبسایت) / PayPal (سیستم انتقال پول آنلاین) / Mercurial (سیستم کنترل نسخه) / ESRI (نقشهبرداری در برنامه GIS) و بسیاری دیگر [4] اشاره نمود.
نکته مهم در مورد زبان برنامهنویسی پایتون، انواع پیادهسازی (Implementation) آن است. تاکنون از این زبان پیادهسازیهای گوناگون و با اهداف متفاوتی توسعه یافته است که از این بین میتوان به Jython (خاص ماشین مجازی جاوا)، IronPython (خاص چارچوب NET. مایکروسافت)، PyPy (با هدف سرعت اجرای بیشتر)، Stackless (با هدف اجرای بهتر برنامههای چندنخی) و البته CPython اشاره نمود.
به طور کلی می توان گفت که بعضی از بزرگترین سایت های جهان با پایتون نوشته شده اند. این زبان یکی از بهترین و آسانترین زبان های برنامه نویسی به حسایب می آیند. ساخت وب سایت یا همان برنامه نویسی وب سایت یکی از پرطرفدارترین و رایج ترین انواع و حوزه در برنامه نویسی می باشد. برای همین، بسیاری از افراد دنبال یادگیری نحوه ساخت وب سایت با پایتون هستند. در این مقاله، به مبحث ساخت سایت با پایتون یا به بیان بهتر حوزه برنامه نویسی وب سایت با پایتون می پردازیم.
طی سال های گذشته پایتون از محبوبیت بسیار زیادی برخوردار شده است. و از لحاظ محبوبیت، طرفداران بیشتری نسبت به جاوا پیدا کرده ولی با توجه به پیشرفت روزانه حوزه هایی از جمله یادگیری ماشین، تحلیل داده ها و توسعه وب اپلیکیشن ها، و تعداد زیادی از توسعه دهندگان از پایتون به خاطر کتابخانه های غنی و قدرتمند، جابجاپذیری آن و سینتکس آسان، از آن استفاده می کنند. و این موضوع اصلا تعجب آور نیست. اکنون زمان مناسبی برای یادگرفتن زبان پایتون به عنوان برنامه نویس است.
تعریف طراحی وب سایت
طراحی وب سایت (Website Design) در بعضی مواقع با برنامه نویسی وب سایت (Website Development) اشتباه گرفته می شود. در واقع کلمه طراحی معادل Design می باشد که به رسم المان های بصری و تعیین ویزگی ها و ایجاد UI یا رابط کاربری گفته می شود.
طراحی وب سایت به طراحی صفحه ای میگویند که در اینترنت کاربران آن را می بینند. البته در دنیای امروز طراحی وب سایت از زیبایی شناسی فراتر رفته و شامل تعیین ویژگی ها و قابلیت های کلی عملکرد وب سایت هم می باشد. وب دیزاین یا همان طراحی وب سایت بجز وب سایت، طراحی های وب اپلیکیشن ها، اپلیکیشن های موبایل و طراحی رابط کاربری را نیز شامل می شود.
زمانی که درباره طراحی وب سایت با پایتون صحبت می کنیم در حقیقت منظور (برنامه نویسی وب با پایتون) یا (توسعه وب سایت با پایتون) می باشد. در واقع زبان برنامه نویسی پایتون در بک اند (Back End) سمت سرور کاربرد دارد و این برای ارتباط با پایگاه داده و عملکردهای سمت سرور استفاده می شود. ولی اگر طراحی وب سایت نقاط مشترکی با برنامه نویسی وب داشته باشد وجه اشتراکشان در سمت مرورگر و یا کلاینت (Front End) می باشد.
برنامه نویسی وب سایت
برنامه نویسی وب سایت به زبان ساده به نشانه گذاری (Markup که منظور همان HTML و CSS می باشد) و همینطور کدنویسی هایی که در حوزه توسعه وب سایت انجام می شود می گویند. که به طور کلی شامل اسکریپت نویسی سمت سرور، امنیت شبکه، برنامه نویسی سمت کلاینت یا کاربر و تولید محتوای وب می باشد. توسط برنامه نویسی وب می توان به علاوه ساخت یک صفحه HTML ساده و ایستا، قابلیت های پویا و تعاملی نیز به آن افزود و کارایی و کیفیت آن صفحه را بالا برد.
ساخت وب سایت با پایتون
برای ساخت سایت با پایتون باید از فریم ورک های مخصوص توسعه وب پایتون استفاده کرد. قابلیت های کلیدی زبان پایتون، این زبان را به یک گزینه بسیار مناسب و پرطرفدار برای استفاده در طراحی وب سایت تبدیل کرده است. این زبان به برنامه نویسان این امکان را می دهد تا سایت های مختلفی را بر اساس الگوهای مختلف برنامه نویسی بسیاری ایجاد کنند. فرم ورک های مختلفی برای پیاده سازی اهداف متفاوت برای زبان های مختلف برنامه نویسی وجود دارند. جهت طراحی وب سایت با پایتون نیز از فریم ورک های مخصوص طراحی وبسایت ارائه شده برای این زبان برنامه نویسی استفاده می شود. در ابتدا باید برنامه نویسی پایتون را در سطح مقدماتی آموخت.
زبان پایتون برای توسعه سمت سرور در سایت ها و وب اپلیکیشن ها مورد استفاده قرار می گیرد. برای توسعه و ساخت یک وب سایت به صورت کامل(فول استک)، لازم است آشنایی با زبان های برنامه نویسی فرانتاند هم وجود داشته باشد. جاوا اسکریپت، HTML و CSS مهم ترین زبان ها و فناوری هایی هستند که برای توسعه فرانتاند با آموخت. برای CSS و خصوصا جاوا اسکریپت، کتابخانه ها و فریم ورک ها و ابزارهای سهل کننده ای وجود دارند که باید آن ها را آموخت.
پس از یادگیری مهارت های فرانتاند، برای ساخت وب سایت با پایتون باید به سمت یادگیری یکی از فریمورک های رایج پایتون در زمینه طراحی سایت رفت. فریمورک های جنگو (Django) و فلسک (Flask)، از بهترین فریمورک های برنامه نویسی وب سایت برای زبان پایتون می باشند. بعد از یادگیری کدنویسی و کار با یکی از فریمورک های طراحی سایت پایتون، می بایست تمرینات عملی و اجرای پروژه هایکوچک و به تدریج بزرگ را شروع کرد.آشنایی با معماری ها و الگوهای رایج در برنامه نویسی وب سایت مانند الگوی MVC بسیار حائز اهمیت است. همچنین یادگیری جیکوئری و DOM برای طراحی سایت با پایتون لازم است.
امتیازات طراحی وب سایت با پایتون
قبل از اینکه شروع به طراحی سایت با پایتون بکنیم باید بدانیم چه مواردی باعث می شود پایتون گزینه مناسبی برای توسعه وب سایت باشد.
1- یادگیری آسان
پایتون یک زبان محبوب برنامه نویسی برای افراد تازه کار نیز است. زبان پایتون مبتنی بر اصطلاحات مرسوم و فضای خالی»می باشد تا قابلیت این را پیدا کند که حجم کدنویسی کاهش داد و کدهای کمتری نسبت به زبان های جاوا، ++C و غیره نوشت. این موضوع تنها نکته مثبت پایتون در این زمینه نیست علاوه بر این زبان پایتون موانع کمتری برای ورودی های برنامه دارد. زبان برنامه نویسی پایتون به میزان قابل توجه ای به زبان روزمره انسان نزدیک است و همین امر این زبان را قابل درک و فهم کرده است.
2- کتابخانه های کامل و غنی پایتون
پایتون کتابخانه ها و بسته های توسعه بسیاری دارد که این امکان را به برنامه نویسان می دهند تا کدهای از پیش نوشته شده زمان ساخت هر نوع برنامه ای را کاهش دهد.
3- امکان طراحی سریع پیش نمونه با پایتون
به خاطر اینکه زمان ساخت یک پروژه با زبان پایتون نسبت به بقیه زبان ها به طور قابل توجهی کمتر است، می توانیم به ایده های خود با سرعت بیشتری جامه عمل بپوشانیم و از آن طرف میتوان خیلی سریع تر بازخورد گرفت و دوباره این فرآیند را تکرار و اصلاح نمود. به همین دلیل برای کارهای استارت آپ مناسب می باشد.
4- پرطرفدار بودن پایتون
پایتون به دلیل طرفداران زیادی که در جامعه برنامه نویسان دارد به لحاظ نرم افزاری دائما قابلیت ها و کتابخانه های جدید در حال بروز رسانی است.
امتیازات دیگر ساخت سایت با پایتون
در این بخش برخی دیگر از مزایای طراحی وب با پایتون را نام می بریم:
- پایتون نرمافزاری متنباز به حساب میآید.
- خواندن کدهای پایتون و کدنویسی به این زبان آسان است.
- پایتون زبانی جابجاپذیر و تعاملی به حساب میآید.
- امکان ادغام و ترکیب پایتون با سایر زبانها و فناوریها در سطح سازمانی وجود دارد.
- امکان برنامه نویسی غیرهمزمان (ناهمگام) در پایتون وجود دارد.
- رویکرد برنامه نویسی پایتون بر اساس محدودیت کمتری بنا شده است.
- پایتون را میتوان برای اسکریپت نویسی اپلیکیشن و تست نرمافزار به کار گرفت.
- پایتون دارای فریمورکهای خوب و باکیفیتی برای توسعه وب است.
- از پایتون میتوان در یادگیری ماشین و هوش مصنوعی استفاده کرد.
- زبان پایتون در حوزههای علمی و محاسباتی بسیار پرکاربرد است.
معایب طراحی سایت با پایتون
در حوزه برنامه نویسی همه زبان ها دارای نقص هستند که پایتون هم ازین قضیه مستثنا نیست.
1- کمبود پشتیبانی از چندپردازی
با توجه به اینکه از لحاظ فنی، پایتون چندپردازی (Multiprocessing) را پشتیبانی نمی کند. با توجه به اینکه چندپردازی از جنبه های مهم برای اپلیکیشن های تحت وب به حساب می آید، این مشکل برنامه نویسان پایتون را محدود می کند.
2- محدودیت های سرعت
پایتون زبان مفسری اسکریپتی است و از روش های ترجمه کد مختلفی استفاده می کنند. بخاطر این موضوع،پایتون به نسبت همتایان کامپایلری خود از جمله زبان های C++، C یا جاوا عملکرد کندتری دارد.
3- وظایف با مصرف حافظه بالا
انعطافپذیری پایتون در اذای هزینه مصرف حافظه بالاتر حاصل شده است. بنابراین، پایتون گزینه مناسبی برای کاربردهای دارای وظایفی با مصرف حافظه بالا به حساب نمیآید.
آیا پایتون گزینه مناسبی برای برنامه نویسی وب سایت است؟
به طور کلی می توان گفت امتیازات مثبت پایتون نسبت به معایب آن برای طراحی وب سایت بیشتر است. ولی به طور قطعی نمی توان گفت که کدام زبان برای طراحی سایت مناسب تر است. در حقیقت این موضوع که کدام زبان برنامه نویسی برای طراحی وب سایت بهتر است به نوع پروژه ای بستگی دارد که قرار است نوشته شود.
برای مثال زبان پایتون یکی از بهترین زبان ها برای استارتاپی می باشد و امکان توسعه سریع به گونه ای سریع تر با پایتون وجود داردو یا اگر قصد پیاده سازی وب سایت در هر یک از حوزه های تجزیه و تحلیل عمیق دادهها، طراحی ربات هوشمند و علم داده را دارید پایتون بهترین گزینه می باشد.
ولی برای مثال اگر می خواهید یک وب سایت وبلاگی طراحی کنید شاید اگر از برنامه نویسی PHP و وردپرس استفاده کنید بهتر باشد.
ویژگی ها
در سال ۲۰۰۰ تیم توسعه دهنده پایتون به BeOpen.com منتقل شد و بدین صورت تیم کتابخانه باز پایتون شکل گرفت. پایتون یک زبان برنامهنویسی رایگان، متن باز (Open Source) و با بیانی کاملتر، آزاد است که هماکنون (یعنی از نسخه 2.1 و جدیدتر) پروانه آن توسط « بنیاد نرمافزار پایتون» PSF اداره میگردد. پروانه پایتون سازگار با پروانه GPL3 است، با این حال به برنامهنویس این اجازه را میدهد که بتواند برنامهای با سورس بسته (Closed Source) تولید نماید. زبان پایتون از اجزای بسته نرمافزاری LAMP نیز به شمار میرود. این بسته عبارت است از: Linux سیستم عامل / Apache وب سرور / MySQL یا MariaDB پایگاه داده / Python یا Perl یا PHP زبان برنامهنویسی. این زبان خیلی پیشتر از آنکه حتی Eric Raymond و Bruce Perens از Open Source صحبت کنند، متن باز بوده است. پایتون یک زبان برنامهنویسی همه منظوره (General-Purpose) است به این معنی که میتوان از آن در توسعه طیف گستردهای از انواع برنامهها در حوزههای نرمافزاری گوناگون بهره برد؛ از جمله در توسعه برنامههای تحت وب و برنامههایی با قابلیت « واسط گرافیکی کاربر» (GUI).
پایتون یک زبان برنامهنویسی به همراه مجموعه بزرگی از قابلیتهای از پیش آماده و قابل حمل است که به عنوان کتابخانه استاندارد آن شناخته میشود. همچنین در کنار این کتابخانه میتوان از طیف بسیار وسیعی از کتابخانههای شخص ثالث (Third-Party) پایتون نیز بهره برد. کتابخانههای شخص ثالث ابزارهای مفیدی را در امور فروانی همچون: برنامهنویسی علمی ~ NumPy ،SciPy / پردازش زبانهای طبیعی NLTK / ارتباط درگاه سریال PySerial / ایجاد بازیPyGame ،Pyglet ،PyOpenGL ،PySoy / هوش مصنوعی PyBrain / ایجاد وب سایتDjango ،Flask ،Bottle ،CherryPy / پردازش تصویرPIL/Pillow ،PythonMagick / واسط گرافیکی کاربر PyGtk ،PyQt ،WxPython / کار با اسناد rdflib / pdf / رمزنگاری PyCrypto ،pyOpenSSL ،cryptography و بسیاری دیگر... که مدام در حال توسعه هستند و بر تعداد و تنوع آنها نیز افزوده میشود را در اختیار برنامهنویسان پایتون قرار میدهند.
پایتون یک زبان برنامهنویسی پویا (Dynamic) بوده و نیز از قابلیت مدیریت خودکار حافظه برخوردار است. این زبان شباهتهایی با TCL ،Perl ،Ruby ،PHP یا دیگر زبانهای برنامهنویسی پویا دارد. در این نوع زبانها برخلاف زبانهای ایستا (Static) مانند C++ ،C و Java نیازی به تعریف صریح نوع متغیرها (Variables) نیست و همچنین نوع متغیر در طول برنامه قابل تغییر است. در زبانهای پویا متغیرها از خود نوعی ندارند و تصمیم گیری برای تخصیص نوع در زمان اجرا (RunTime) انجام میپذیرد. بر خلاف زبان C، در پایتون اختصاص و آزادسازی حافظه (Memory) به صورت خودکار انجام میشود. پایتون برای آزادسازی حافظه از دو روش شمارش ارجاع (Reference Counting) و زباله روبی (Garbage Collection) بهره میگیرد.
با اینکه پایتون یک زبان پویاست ولی در عین حال یک زبان "وابسته شدید به نوع" (Strongly Typed) نیز میباشد. در این نوع زبانها (به مانند Java) تغییر ناگهانی و خودکار نوع داده (یا شی) انجام نمیشود؛ به عنوان نمونه چنانچه در پایتون عمل جمع بین یک نوع داده عددی مانند 3 و یک نوع داده غیر عددی مانند "7" صورت گیرد، یک Exception یا استثنای TypeError گزارش میگردد. در مقابل، زبانهای "وابسته ضعیف به نوع" (Weak Typed) قرار دارند؛ در این زبانها (به مانند Perl) نوع بر حسب موقعیت به صورت خودکار تغییر داده میشوند. در این مورد زبانهای برنامهنویسی رفتارهای متفاوتی دارند، به عنوان نمونه حاصل عبارت "7" + 3 در زبان Perl با تبدیل (Convert) خودکار نوع داده غیر عددی "7" به عدد (7)، مقدار 10 محاسبه میگردد.
پایتون یک زبان برنامهنویسی سطح بالا (High-Level) به مانند C ،Ruby ،PHP و Java است که به وسیله آن عمل برنامهنویسی به آسانی و با سرعتی بالا انجام میپذیرد و برخلاف زبان برنامهنویسی سطح پایینی (Low-Level) مانند Assembly، برنامهنویس را درگیر مسایل خاص موجود در این سطح به مانند کار با ثباتها (Registers)، آدرسهای حافظه و غیره... نمیسازد.
پایتون یک زبان برنامهنویسی چند الگویی (Multi-Paradigm) است و برنامهنویس را مجبور به رعایت الگوی خاصی نمیکند. این زبان از الگوهای: دستوری (Imperative) یا رویهای (Procedural)، تابعی (Functional) و شیگرایی (Object-Oriented) پشتیبانی میکند؛ البته همانطور که گفته شد نمیتوان پایتون را به صورت خالص (Pure) متعلق به هر یک از این الگوها دانست.
جدا از پشتیبانی الگوی برنامهنویسی شیگرا، ساختار پایتون به صورت کامل شیگراست و هر چیزی در این زبان یک شی (Object) است؛ در آینده بیشتر در این مورد صحبت خواهیم کرد. پایتون (پیادهسازی CPython) به عنوان یک زبان تفسیرشده (Interpreted) شناخته میشود. با یک تعریف کلی در این نوع زبانها کار خواندن سورس کد برنامه، ترجمه به زبان ماشین و در نهایت اجرای آن توسط یک مفسر انجام میگیرد. در پایتون عمل ترجمه و اجرای سورس کد را میتوان در دو مرحله متوالی خلاصه نمود:
۱- کامپایل سورس کد به بایتکد (ByteCode)
۲- تفسیر بایتکد به زبان ماشین و اجرای آن
به این صورت که ابتدا سورس کد برنامه به یک زبان میانی نزدیک به زبان ماشین با نام بایتکد ترجمه میشود و سپس بایتکد حاصل به ماشین مجازی (Virtual Machine) - به عنوان موتور زماناجرای پایتون - فرستاده و توسط آن تفسیر و اجرا میگردد.
تفاوت عملکرد کامپایلر و مفسر
یک کامپایلر (در زبانهای کامپایلشده) تمامی سطرهای سورس کد برنامه را به صورت یکجا خوانده و سپس با ساخت یک فایل جدید و مستقل از سورس کد با نام «کد مقصد یا آبجکت کد» (Object Code) یا فایل اجرایی (Executable) عمل ترجمه به زبان ماشین را پایان میبخشد. برنامه حاصل از کامپایلر توانایی هر چند بار اجرا در رایانه مقصد، بدون نیاز به کامپایل دوباره را دارد، اما فاقد حملپذیری بوده و کاربر نهایی نیز به هیچ عنوان توانایی دسترسی به سورس کد برنامه و تغییر یا ویرایش آن را نخواهد داشت. اما یک مفسر (در زبانهای تفسیرشده) سورس کد برنامه را به صورت سطر به سطر میخواند و هر سطر را به صورت جداگانه به زبان ماشین ترجمه و سپس بلافاصله آن را اجرا میکند. به این صورت که هنگامی یک سطر در حال اجراست در همان لحظه سطر بعدی در حال ترجمه به زبان ماشین میباشد. برنامههای نوشته شده با زبانهای برنامهنویسی تفسیرشده برای هر بار اجرا در رایانه هدف نیاز به تفسیر دوباره دارند. این تفاوت عملکرد گرچه باعث کاهش سرعت اجرای برنامههای تفسیرشده نسبت به برنامههای کامپایلشده میشود ولی خواندن سطر به سطر کدها در مفسر علاوه بر قابلیت تشخیص خطای بهتر، این امکان را بوجود میآورد که هر کاربری بتواند حتی در زمان اجرای برنامه سورس کد را ویرایش و تغییر دهد؛ این دسته از زبانها در مواقعی که پیوسته نیاز به افزودن ویژگیهای متفاوت به برنامه است بسیار مورد توجه قرار گرفتهاند.
پایتون یک زبان برنامهنویسی قابلحمل (Portable) است. میتوان گفت سورس کد برنامهای به این زبان قابلیت اجرا در هر رایانهای را دارد. بایتکد پایتون شبیه به زبان ماشین است ولی با این تفاوت که مخصوص هیچ ماشین (یا رایانه) خاصی نیست. در مقابل، وقتی سورس کد برنامهای توسط کامپایلر به زبان ماشین ترجمه میشود، نتیجه آن فایلی است که تنها در ماشینهایی که این کد برای آنها (متناسب با معماری پردازنده) ترجمه شده است، قابل اجرا میباشد ولی بایتکد پایتون به کمک ماشین مجازی خود این توانایی را دارد که در هر ماشینی اجرا گردد. بر همین اساس، هم اکنون سورس کد یک برنامه به زبان پایتون بدون نیاز به هیچ تغییری در تمام سیستمهای عامل مطرح قابل اجراست.
پایتون دارای دستور زبانی تمیز و خوانایی (Readability) بالای کد است. خوانایی در طراحی پایتون مورد تاکید بوده و در کنار شیگرایی از مهمترین ویژگیهای یک کد به جهت استفاده مجدد میباشد. پایتون به مانند زبان ABC از روش «تورفتگی» بوسیله فضاهای خالی برای بلاکبندی [12] استفاده میکند. در پایتون اجباری به استفاده از نقطه ویرگول (Semicolon) ; و برخی پرانتز گذاریها نمیباشد و البته وجود انواع داده (Data Types) - البته به بیانی درستتر «انواع شی» - متنوع و نیز پویایی پایتون موجب کمتر شدن حجم کدنویسی و صرفهجویی در زمان توسعه نسبت به زبانهایی به مانند C++ ،C و حتی Java میشود. تحقیقات نشان میدهند: کاری که یک برنامهنویس پایتون میتواند در مدت زمان دو ماه به انجام برساند، با برنامهنویس ++C در مدت یک سال قادر به تکمیل آن نخواهند بود! پایتون یک زبان برنامهنویسی توسعهپذیر (Extensible) است. کدهای نوشته شده با پایتون را میتوان به دیگر سورس کدهای این زبان افزود و همچنین میتوان از کتابخانهها و کدهای نوشته شده با دیگر زبانهای برنامهنویسی در میان کدهای پایتون استفاده کرد (مانند C و ++C در پیادهسازی CPython یا Java در پیادهسازی Jython).
پایتون یک زبان حساس به حرف (Case Sensitive) است. در این نوع زبانها (مانند C ،C++ ،Java ،Perl و غیره...) بین حروف کوچک (Lowercase) و بزرگ (Uppercase) به مانند a و A تفاوت وجود دارد. با توجه به این موضوع، مفسر پایتون بین کلمات True ،true و TRUE تمایز میگذارد.
کارایی
معمولا افراد در مواجه با یادگیری زبان پایتون نگرانیهایی در مورد کارایی (Performance) برنامههای توسعه یافته با این زبان خواهند داشت به خصوص در جایگاه مقایسه با زبان Java، به هر حال پایتون یک زبان تفسیرشده است و در اجرا سرعت کمتری نسبت به زبانهای کامپایلشده مانند C و Java خواهد داشت. معمولا کارایی بالا برابر با سرعت بالاست ولی قضاوت در مورد کارایی به این سادگی درست نیست!
در هر پروژهای بسته به چیزی که میخواهیم میبایست انتخاب نماییم. اگر مبنای کارایی برای یک پروژه در سرعت بالای اجرا باشد (مانند برنامههای سیستمی)؛ زبان C همیشه بهترین انتخاب است ولی اگر مبنا در سرعت بالای توسعه و صرفه جویی در منابع از جمله هزینه باشد انتخاب مناسب پایتون است. گاهی نیز بهترین کارایی با استفاده ترکیبی از زبانهای متفاوت به دست میآید. در بسیاری از کاربردها سرعت پایتون کاملا قابل قبول است، وجود بایتکد موجب افزایش سرعت در اجراهای بعدی برنامه میشود و نکات برنامهنویسی زیادی برای بهبود سرعت اجرا در پایتون وجود دارد که در این کتاب به تدریج اشاره خواهد شد. نباید فراموش کرد که یکی از مهمترین عاملهای کارایی داشتن الگوریتمی بهینه است و البته نوشتن ماژولها به زبان C نیز موجب افزایش قابل توجه کارایی پایتون میشود - پایتون کند است اگر اشتباه استفاده شود - با این وجود در حالت عادی اگر هزار مورد وجود داشته باشد که پایتون برای آنها بهترین انتخاب باشد، سرعت یکی از آنها نخواهد بود و برای توسعه برنامههایی که سرعت اجرا نقش بسیار تعیین کنندهای دارد باید از زبانهای دیگری استفاده نمایید. لازم است به این نکته هم توجه داشته باشیم که تمام این صحبتها در مورد پیادهسازی CPython از زبان پایتون بوده و پیادهسازیهای دیگری نیز از زبان پایتون با هدف سرعت بالای اجرا (به مانند PyPy) توسعه یافته است.
نسخه ها
در یک سیر تاریخی، نسخه پایدار 2.0 در شانزدهم اکتبر سال ۲۰۰۰ میلادی و در ادامه نسخه 1.6 منتشر (Release) میشود؛ پس از آن نیز توسعه پایتون به همان صورت پیشین ادامه مییابد تا این که در دسامبر سال ۲۰۰۸ میلادی نسخهای از پایتون با شماره 3.0 که از آن با عنوان ”Python 3000“ یا ”Py3K“ نیز یاد میشود، با رویکرد شکستن «سازگاری با نسخههای پیشین» (Backward Compatibility) منتشر میگردد. به بیان دیگر: مفسر نسخههای جدید (3x) پایتون قادر به اجرای سورس کدی که بر پایه مفسر نسخههای پیشین تهیه شده است، نخواهد بود. (که این اتفاق در جامعه پایتون بسیار بحث برانگیز بوده و هست!)
ظاهرا آقای روسوم خیلی پیش از این زمان نیاز به ایجاد یک سری تغییرات در ساختار و سینتکس این زبان را احساس کرده بود. شاید نخستین نشانه از لزوم ایجاد تغییرات در پایتون را بتوان از صحبتهای ایشان در همایش متن باز اوریلی (OSCON) سال ۲۰۰۲ با عنوان «پشیمانیهای پایتون» (Python Regrets) دریافت کرد. به هر صورت تیم توسعه پایتون در پی رفع این نیاز، از بین حفظ گذشته پایتون و پایبندی به فلسفه سادگی آن؛ دومی را انتخاب میکند، ویژگیهای کهنه کنار گذاشته و ویژگیهای جدید جایگزین میگردند.
با انتشار یک نسخه جدید به صورت معمول میبایست توسعه نسخه قدیمی متوقف شود، ولی از آنجا که زیرساخت شرکتهای بزرگی به پایتون وابسته بوده (مانند Google) و ارتقا نسخه برای آنها حداقل بسیار زمانبر خواهد شد، برنامهها و کتابخانههای کوچک و بزرگ بسیار زیادی توسط کاربران جامعه پایتون برای نیازهای ریز و کلان گوناگونی توسعه یافته است که سازگار شدن تمام آنها با نسخه جدید پایتون بعید به نظر میرسد و از همه مهمتر خود برنامهنویسان پایتون میباشند که پس از سالها اکنون مجبور هستند کارهای دیروز خود را با سینتکس و در مواقعی حتی با کتابخانه و ماژولهایی متفاوت به انجام برسانند؛ تیم توسعه پایتون، برای پر کردن شکاف به وجود آمده بین دیروز و امروز پایتون یا به بیانی هموار کردن مسیر مهاجرت به نسخه جدید پایتون، علاوه بر اینکه از پیش سعی کرده بود تا ویژگیهای جدید و سینتکس نسخه 3.0 را به نسخه 2.6 (که دو ماه زودتر منتشر شده بود) پورت (Port) کند، به توسعه نسخه قدیمی پایان نمیدهد و نسخه دیگری را با شماره 2.7 در سوم جولای ۲۰۱۰، تقریبا یک سال پس از انتشار نسخه 3.1 به همراه بسیاری از ویژگیهای جدید آن منتشر میسازد. بر طبق سند PEP 404، هرگز نسخهای با شماره 2.8 به صورت رسمی منتشر نخواهد شد و نسخه 2.7 با یک پشتیبانی طولانی مدت، نقطه پایان نسخه قدیمی پایتون خواهد بود. ابتدا قرار شد از این نسخه به مدت پنج سال پشتیبانی (تلاش برای رفع باگها) شود ولی چند ماه پیش، این زمان به ده سال یعنی تا سال ۲۰۲۰ افزایش یافت.
نسخه پایدار (Stable) پایتون با قالب A.B.C؛ مانند 3.4.2 شمارهگذاری و منتشر میشود. عدد A، بخش اصلی (Major) شماره نسخه است و زمانی افزایش مییابد که واقعا تغییرات بزرگ و زیادی در زبان پایتون ایجاد شده باشد. عدد B، بخش جزئی (Minor) شماره نسخه را نشان میدهد و با ایجاد یک سری تغییرات مهم در زبان پایتون افزایش خواهد یافت. عموما شماره نسخه پایتون تنها به صورت A.B نشان داده میشود، زیرا عدد C تنها با رفع اشکال (Bug) احتمالی نسخه منتشر شده افزایش مییابد (از عدد صفر) که این امر نیز شامل همه نسخههای پایتون نمیشود. کدام نسخه؟ برای شروع یادگیری و اهداف آموزشی نسخه 3x مناسب است و در صورت نیاز تنها با مطالعه مقایسه بین این دو نسخه میتوانید با نسخه قدیمی نیز آشنا شوید. همچنین اگر قصد توسعه برنامههای دسکتاپ را داشته (یعنی زمانی که محدود به نسخه نصب شده بر روی سرور نیستید) یا مواقعی که در ایجاد برنامه خود نیازی به کتابخانههایی که هنوز (اوایل ۲۰۱۵) با نسخه 3x سازگار نشدهاند (مانند Twisted) را ندارید؛ استفاده از نسخه 3x بسیار خوب است. به هر حال تلاش میشود که این کتاب بتواند به دور از آشفتگی هر دو نسخه را پوشش دهد.