تاریخچه پایتون

پایتون اواخر دههٔ هشتاد میلادی توسط خودو فان روسوم (CWI) واقع در کشور هلند ایجاد شد. و پیاده‌سازی آن در دسامبر ۱۹۸۹ آغاز شد. خیدو فان روسوم پایتون را به عنوان جانشینی برای زبان ABC ساخت. زبان ABC توانایی مدیریت استثناءها را داشت و همچنین رابط سیستم عامل آمیب نیز بود نقش مداوم فان روسوم (طراح اصلی پایتون) در تصمیم‌گیری پیرامون اهداف پایتون، باعث شد که انجمن پایتون به او لقب دیکتاتور خیرخواه جاویدان را بدهد. (اگرچه فان روسوم در ۱۲ ژوئیه ۲۰۱۸ از سمت خود کناره گرفت.) نام پایتون از نمایش تلویزیونی بی‌بی‌سی یعنی سیرک پرنده مانتی پایتان گرفته شده‌است.

پایتون ۲٫۰ در ۱۶ اکتبر ۲۰۰۰ منتشر شد. این نسخه قابلیت‌های جدید زیادی داشت، از جمله بازیافت حافظه با قابلیت شناسایی دور (علاوه بر مرجع شماری) برای مدیریت حافظه و پشتیبانی از یونی‌کد. اما مهمترین تغییر در خودِ روند توسعه بود که به سمت شفافیت بیشتر و پشتیبان‌گیری بیشتر از جامعه پیش می‌رفت.

پایتون ۳٫۰، در ۳ دسامبر 2008 پس از یک دوره طولانی آزمایشی منتشر شد. این نسخه از پایتون نسخه ای بزرگ و بدون سازگاری عقبرو بود. بسیاری از ویژگی‌های عمده آن نیز پیش‌انتقال شده‌است به نسخه‌های با سازگاری عقبرو، یعنی پایتون ۲٫۶ و ۲٫۷ که در حال حاضر دیگر پشتیبانی نمی‌شوند.

 نسخه‌های آغازین 
در فوریه ۱۹۹۱، فان روسوم کد پایتون (تحت نسخهٔ ۰٫۹٫۰) را در alt.source منتشر کرد.در این مرحله از توسعه کلاس‌های با وراثت، مدیریت استثناء، توابع و نوع داده‌های اصلیِ list ، dict ، str و… وجود داشته‌است. در این نسخه یک سیستم پودمان (ماژول) وجود داشت که از ماجولا ۳ به عاریت گرفته شده بود؛ فان روسوم ماژول را به عنوان «یکی از واحدهای مهم برنامه‌نویسی پایتون» توصیف می‌کند. مدل استثناء پایتون نیز، به ماجولا ۳ شباهت دارد. در سال ۱۹۹۴ انجمن اصلی بحث و گفتگوی پایتون،comp.lang.python (در یوزنت)، تشکیل شد که نشانه ای از رشد کاربران پایه‌ای پایتون بود.

 نسخه ۱ 
در ژانویه ۱۹۹۴ نسخهٔ ۱٫۰ پایتون منتشر شد. خصوصیات جدید قابل توجه این نسخه شامل ابزارهای برنامه‌نویسی تابعی lambda ،  map ،  filter و  reduce بود. فان روسوم در این‌باره توضیح داد: «پایتون lambda , reduce() , filter() و map() را از راه یک هکر لیسپ که آنها را رد کرد و وصله‌های کار را ارائه داد. به دست آورد.»

پایتون ۱٫۲ آخرین نسخهٔ پایتون بود که هنگام حضور فان روسوم در CWI منتشر شد. در سال ۱۹۹۵، فان روسوم کار روی پایتون را در (CNRI) (Corporation for National Research Initiatives) در رستون، ویرجینیا ادامه داد و از آنجا چندین نسخه منتشر کرد.

در نسخه ۱٫۴ چندین ویژگی جدید به پایتون اضافه شد. از ویژگی‌های جالب توجه در میان این اضافات می‌توان به الهام گرفتن از آرگومان‌های کلیدی ماژول-۳ (که خود آن از آرگومان‌های کلیدی لیسپ الهام گرفته شده بود) و پشتیبانی از اعداد مختلط اشاره کرد. همچنین اضافه شدن شکل ابتدایی نهان‌سازی اطلاعات به وسیلهٔ دستکاری نام، اگرچه به راحتی قابل دور زدن بود.

فان روسوم در مدت فعالیت خود در CNRI، پروژهٔ «برنامه‌نویسی کامپیوتر برای هر کس» (CP4E)Computer Programming for Everybody را ایجاد کرد تا برنامه‌نویسی را در دسترس افراد بیشتری قرار دهد افرادی که تنها سواد پایه‌ای در برنامه‌نویسی نویسی دارند. (با سواد پایه ای خواندن و نوشتن زبان انگلیسی و سواد ابتدایی ریاضی مقایسه کنید که از ملزومات استخدام شدن توسط کار فرمایان است) پایتون در این پروژه نقش اصلی را ایفا می‌کرد: به دلیل تمرکز روی نحو تمیز، از قبل مناسب بود، و اهداف CP4E شباهت‌هایی با سلف خود، یعنی ABC داشت. این پروژه توسط دارپا سرمایه‌گذاری شداز سال ۲۰۰۷ پروژه CP4E غیرفعال شد، و با این حال پایتون تلاش می‌کند در نحو و معناشناسی خود به راحتی قابل یادگیری باشد و خیلی رازآلود نباشد، و برقراری ارتباط با غیر برنامه نویسان یک نگرانی فعال نباشد.

 BeOpen 
در سال ۲۰۰۰ تیم توسعه دهنده پایتون به BeOpen.com منتقل شدhttps://slashdot.org/story/00/05/30/1931239/python-development-team-moves-to-beopencom و بدین صورت تیمPythonLabs BeOpen شکل گرفت.https://web.archive.org/web/20000815095541/http://www.beopen.com/company/team.htmlhttp://joeellsworth.com/resume/references/pybiz_beopen_partnership.pdf CNRI درخواست کرد ورژن ۱٫۶ساخته شود، بدین ترتیب اعضای گروه توسعه دهندهٔ پایتون را به جایی رساند که CNRI را ترک کنند. برنامه‌های انتشار ۱٫۶و ۲٫۰ همپوشانی قابل توجهی داشتند. پایتون ۲٫۰ تنها نسخه ای بود که BeOpen.com آن را طراحی کرده بود. بعد از نوشتن پایتون ۲٫۰، خیدو و دیگر توسعه دهندگان تیم PythonLabs به تولیدات دیجیتالی ای مثل نرم‌افزار زوپ Zope روی آوردند.

نسخهٔ پایتون ۱٫۶ پروانهٔ CNRI جدیدی داشت که بسیار طولانی‌تر از پروانهٔ CWI بود (پروانهٔ CWI برای نسخه‌های قبلی استفاده شده بود). این پروانهٔ جدید دارای بندی بود که بیان می‌کرد پروانه تحت قوانین ایالت ویرجینیا اجرا شود. بنیاد نرم‌افزار آزاد توضیح داد که بند انتخاب قانون با GNU GPL ناسازگار است. BeOpen , CNRI و FSF تغییراتی را در پروانه پایتون ایجاد کردند تا با GPL سازگار شود. پایتون ۱٫۶٫۱ عمدتاً مشابه پایتون ۱٫۶ بود و تفاوت آن فقط در پروانهٔ سازگار با GPL جدید و رفع جند باگ جزئی بود.

 نسخه ۲ 
پایتون ۲٫۰ در اکتبر سال ۲۰۰۰ منتشر شد، پایتون ۲٫۰ شامل ویژگی ((list comprehensions بود که آن را از زبان‌های برنامه‌نویسی تابعی SETL و هسکل اقتباس کرده بود. نحو این ساختار در پایتون بسیار مشابه نحو آن در هسکل بود. (به جز اینکه هسکل در کاراکترهای نشانه‌گذاری برتری داشت و پایتون در کلمات کلیدی الفبایی برتری داشت) پایتون ۲٫۰ همچنین سیستمی برای بازیافت حافظه با قابلیت جمع‌آوری دورهای مرجع نیز داشت.
پایتون ۲٫۱ به پایتون ۱٫۶٫۱ و ۲٫۰ بسیار شبیه بود. جواز آن به جواز مؤسسهٔ نرم‌افزار پایتون تغییر نام یافت؛ و تمام کدها، اسناد و مشخصاتی که از زمان انتشار نسخهٔ آلفای پایتون ۲٫۱ اضافه شده بودند را مؤسسه نرم‌افزار پایتون (PFS) دارا شد.سازمان غیرانتفاعی‌ای که در سال ۲۰۰۱ تشکیل شد و از بنیاد نرم‌افزار آپاچی الگو برداری کرده بود. تغییرات در این انتشار شامل تغییری در مشخص‌گری زبان(language specification) بود تا مانند دیگر زبان‌های دامنه ایستا، دامنه‌های تو در تو را پشتیبانی کند.(این ویژگی تا پیش از پایتون ۲٫۲ به‌طور پیش فرض خاموش بود و مورد نیاز نبود)

پایتون ۲٫۲ در دسامبر ۲۰۰۱ منتشر شد.<https://www.python.org/download/releases/2.2/ تغییر عمده در پایتون ۲٫۲ یکسان‌سازی نوع‌های پایتون که به زبان C نوشته شده بودند و نوع‌هایی که به زبان پایتون نوشته شده بوند (کلاس‌ها) به یک سلسله مراتب بود. این یکسان‌سازی اشیاء پایتون را کاملاً شیء گرا کرد. همچنین مولدها اضافه شدند که از زبان آیکون الهام گرفته شده بودند.

پایتون ۲٫۵ در سپتامبر ۲۰۰۶ منتشر شد و داری حکم (statement)  with بود، که کار آن جداکردن بلوک کد همراه با یک مدیر زمینه (context manager) بود (برای مثال، دستیابی به قفلی قبل از اجرای بلوک کد و آزاد سازی آن قفل پس از آن، یا بازکردن فایلی و سپس بستن آن)، اجازه دادن به رفتار شبیه به Resource Acquisition Initialization (RAII) و عوض کردن اصطلاح رایج try/finally است.

پایتون ۲٫۶ همزمان با پایتون ۳٫۰ منتشر شد و برخی از ویژگی‌های آن نسخه را نیز داشت، و از آن نسخه ویژگی اخطارها "warnings" اضافه شد که وظیفهٔ آن نشان دادن یک پیام اخطار هنگام استفاده از ویژگی‌های حذف شده در پایتون ۳ بود. به همین ترتیب، پایتون ۲٫۷ همزمان با پایتون ۳٫۱ در تاریخ ۲۶ ژوئن ۲۰۰۹ منتشر شد، از آن پس انتشار موازی نسخه‌های 2.x و 3.x پایتون متوقف شد و پایتون ۲٫۷ آخرین نسخه در سری 2.x بود. در نوامبر ۲۰۱۴ اعلام شد که پایتون ۲٫۷ فقط تا سال ۲۰۲۰ پشتیبانی می‌شود و کاربران تشویق می‌شوند هرچه سریع تر به پایتون ۳ مهاجرت کنندپشتیبانی از پایتون ۲٫۷ از اول ژانویه سال ۲۰۲۰ به پایان رسید. نسخه نهایی پایتون ۲ یعنی نسخه ۲٫۷٫۱۸ در تاریخ ۲۰ آوریل ۲۰۲۰ منتشر شدکه شامل رفع باگ‌های حساس و release blockers می‌شد. که این نشانگر پایان زندگی end-of-life پایتون ۲ است.
.

 نسخه ۳ 
پایتون ۳٫۰ (که به آن پایتون ۳۰۰۰ و Py3k نیز گفته می‌شود) در ۳ دسامبر ۲۰۰۸ منتشر شد.این نسخه برای اصلاح نقایص اساسی طراحی شده‌بود - تغییرات مورد نیاز نمی‌توانستند با رعایت کامل سازگاری عقبرو با سری 2.x، انجام شوند همین موجب شد که به نسخه اصلی جدیدی نیاز باشد. اصل راهنمای پایتون ۳ چنین بود: «کاهش ویژگی‌های‌های تکرار شده به وسیلهٔ حذف روش‌های قدیمی انجام کار».

پایتون ۳ با فلسفهٔ نسخه‌های قبلی توسعه داده شد. با این حال از آنجایی که در پایتون روش‌های نو و زائد برای انجام یک کار مشخص انباشته شده بود پایتون ۳ بر حذف ساختارها و ماژول‌های تکراری مبادرت ورزید؛ و این کار را باتوجه به اصل «برای انجام این کار باید یک (ترجیها یک) روش آشکار وجود داشته باشد.» انجام داد.

با این وجود، پایتون ۳٫۰ چند پارادایمی باقی ماند و کد نویسان همچنان می‌توانستند، از پارادایم‌های برنامه‌نویسی مختلفی مثل شیء گرا، ساخت یافته و تابعی پیروی کنند، اما در چنین حالتی که گزینه‌های گوناگونی وجود داشتند، مقرر شد جزئیات در پایتون ۳٫۰ واضح تر از آنچه در پایتون 2.x بود، باشد.

 سازگاری 
پایتون ۳ به منظور شکستن سازگاری عقبرو (به انگلیسی: backward compatibility) یا به عبارتی قطع سازگاری با گذشته پایتون ۲ و بهبود خطاها و رخنه‌ها در نسخهٔ ۲ و همچنین حذف روش‌های قدیمی طراحی شد. تایپ پویا پایتون با طرح تغییر نحو متدهای خاص دیکشنری‌ها ترکیب شد، به عنوان مثال، ترجمه مکانیکی کاملی از Python 2.x به Python 3.0 را بسیار دشوار کرد. ابزاری به نام "2to3" بخش‌هایی از ترجمه را که می‌توان به صورت خودکار انجام داد، انجام می‌دهد. در این مرحله، به نظر می‌رسید 2to3 نسبتاً موفق بوده‌است، هرچند که در یک بررسی اولیه، اشاره شد که جنبه‌هایی از ترجمه وجود دارند که چنین ابزاری هرگز قادر به انجام آن نیست.Ruby, Sam; , September 1, 2007 قبل از قدرت گرفتن پایتون ۳، پروژه‌هایی وجود داشتند که نیاز به سازگاری با هر دو سری 2.x و 3.x داشتند توصیه می‌شد که یک منبع (برای سری 2.x) داشته باشند و نسخه‌هایی را برای پلتفرم پایتون 3.x با استفاده از 2to3 ارائه دهند تا مدت‌ها ویرایش‌های مربوط به کد پایتون 3.x نادرست شمرده می‌شد زیرا لازم بود کد در پایتون 2.x اجرا شود. این دیگر توصیه نمی‌شود. از سال ۲۰۱۲، رویکرد ارجح ایجاد کد پایه ای واحد است که بتواند تحت هر دو پایتون ۲ و ۳ با استفاده از ماژول‌های سازگار کننده اجرا شود.Coghlan, Nick; Python 3 Q & A, June 29, 2012

 خصوصیات 
فهرست برخی از تغییرات عمده پایتون ۳٫۰:
 تغییر printاز یک حکم statement به یک تابع ذاتیbuilt-in function. که این باعث مشود تغییر ماژول به منظور استفاده از یک تابع پرینت دیگر آسان‌تر شود و بنابراین نحو را قاعده مند تر می‌کند. در پایتون ۲٫۶ و ۲٫۷ نیز فعال کردن این امکان با تایپ کردن from __future__ و import print_function فراهم می‌شود.
 حذف تابع inputاز نوع پایتون ۲ و تغییر نام تابع raw_input به input. تابع input پایتون ۳ مثل تابع raw_input پایتون ۲ رفتار می‌کند. در آن حالت تابع ورودی داده شده به جای این که یک عبارت در نظر گرفته شود یک رشته به عنوان خروجی می‌دهد.
 انتقال reduce به خارج از فضای نام ذاتی built-in و به functools (کد عقلانی که از  reduce  استفاده می‌کرد ناخواناتر از کدیست که از for loop و متغیر انباشتگر استفاده می‌کند)
 پشتیبانی از یادآوری تابع انتخابی که می‌تواند برای معرفی تایپ خصوصی یا اهداف دیگر استفاده شود.
 پشتیبانی از گزارمان‌های اختیاری تابع optional function annotations که برای اعلان غیررسمی نوع informal type declarations و کارهای دیگر استفاده می‌شود.
 یکسان کردن تایپ‌های str/unicode، به نمایندگی از یک متن، و معرفی یک تایپ bytes تغییرناپذیر؛ با یک تایپ مطابق با bytearray تغییرپذیر، که هر دو آرایه از بایت‌ها را ارائه می‌کنند.
 از بین بردن خصوصیات سازگاری معکوس، شامل کلاس‌های به فرم قبل، استثناءهای رشته‌ای، و Implicit Relative Import.
 تغییر تابع تقسیم عدد صحیح: در پایتون ۲ ، 5 / 2 برابر 2  می‌شد ولی در پایتون ۳، 5 / 2  برابر  2.5 می‌شود. (در پایتون ۲ (۲٫۲ به بعد) و پایتون ۳، یک عملگر جداگانه برای نمایش نتیجهٔ قدیمی وجود دارد: 5 // 2 برابر 2 می‌شود)

نسخه‌های بعدی سری Python 3.x امکانات بنیادین جدیدی داشتند. تمام نسخه‌های پایتون که هم‌اکنون توسعه داده می‌شوند در سری 3.x هستند.

 جدول نسخه‌ها 
نسخه‌های قبل از شماره گذاری:
 پیاده‌سازی آغاز شد - دسامبر ۱۹۸۹
 نسخه‌های داخلی در Centrum Wiskunde & Informatica - 1990

 Version Latest micro version Release date End of full support End of security fixes ۰٫۹ 0.9.9 1991-02-20 colspan="2"  ۱٫۰ 1.0.4 1994-01-26 colspan="2"  ۱٫۱ 1.1.1 1994-10-11 colspan="2"  ۱٫۲ 1995-04-13 colspan="2"  ۱٫۳ 1995-10-13 colspan="2"  ۱٫۴ 1996-10-25 colspan="2"  ۱٫۵ 1.5.2 1998-01-03 colspan="2"  ۱٫۶ 1.6.1 2000-09-05 colspan="2"  ۲٫۰ 2.0.1 2000-10-16 colspan="2"  ۲٫۱ 2.1.3 2001-04-15 colspan="2"  ۲٫۲ 2.2.3 2001-12-21 colspan="2"  ۲٫۳ 2.3.7 2003-06-29 colspan="2"  ۲٫۴ 2.4.6 2004-11-30 colspan="2"  ۲٫۵ 2.5.6 2006-09-19 colspan="2"  ۲٫۶ 2.6.9 2008-10-01   ۲٫۷ 2.7.18 2010-07-03 colspan="2"  ۳٫۰ 3.0.1 2008-12-03 colspan="2"  ۳٫۱ 3.1.5 2009-06-27   ۳٫۲ 3.2.6 2011-02-20   ۳٫۳ 3.3.7 2012-09-29   ۳٫۴ 3.4.10 2014-03-16   ۳٫۵ 3.5.9 2015-09-13   ۳٫۶ 3.6.11 2016-12-23   ۳٫۷ 3.7.8 2018-06-27   ۳٫۸ 3.8.5 2019-10-14   ۳٫۹ 3.9.0 beta 1 2020-10-05   ۳٫۱۰ 2021-10-25    Italic is the latest micro version of currently supported versions as of 2020-04-20.

یادداشت‌های جدول: 

 پشتیبانی 

 جستارهای وابسته 
 تاریخچه مهندسی نرم‌افزار

 منابع 

 پیوند به بیرون 
 [ وبلاگ Guido Van Rossum در مورد تاریخ پایتون]

رده:پایتون (زبان برنامه‌نویسی)
رده:تاریخچه نرم‌افزار

https://www.aparat.com/Python.Academy/Python_Academy