پرش به محتوا

پیش‌نویس:تاریخچه پایتون

از ویکی‌پدیا، دانشنامهٔ آزاد
لوگوی پایتون، در سال‌های ۱۹۹۰–۲۰۰۶

پایتون اواخر دههٔ هشتاد میلادی توسط خودو فان روسوم در مؤسسه ملی تحقیقات ریاضی و رایانه (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 منتقل شد[۱۶] و بدین صورت تیمPythonLabs BeOpen شکل گرفت.[۱۷][۱۸] CNRI درخواست کرد ورژن ۱٫۶ساخته شود، بدین ترتیب اعضای گروه توسعه دهندهٔ پایتون را به جایی رساند که CNRI را ترک کنند. برنامه‌های انتشار ۱٫۶و ۲٫۰ همپوشانی قابل توجهی داشتند.[۸] پایتون ۲٫۰ تنها نسخه ای بود که BeOpen.com آن را طراحی کرده بود. بعد از نوشتن پایتون ۲٫۰، خیدو و دیگر توسعه دهندگان تیم PythonLabs به تولیدات دیجیتالی ای مثل نرم‌افزار زوپ Zope روی آوردند.

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

نسخه ۲

[ویرایش]

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

پایتون ۲٫۲ در دسامبر ۲۰۰۱ منتشر شد.[۲۱] تغییر عمده در پایتون ۲٫۲ یکسان‌سازی نوع‌های پایتون که به زبان 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 نسبتاً موفق بوده‌است، هرچند که در یک بررسی اولیه، اشاره شد که جنبه‌هایی از ترجمه وجود دارند که چنین ابزاری هرگز قادر به انجام آن نیست.[۳۲] قبل از قدرت گرفتن پایتون ۳، پروژه‌هایی وجود داشتند که نیاز به سازگاری با هر دو سری 2.x و 3.x داشتند توصیه می‌شد که یک منبع (برای سری 2.x) داشته باشند و نسخه‌هایی را برای پلتفرم پایتون 3.x با استفاده از 2to3 ارائه دهند تا مدت‌ها ویرایش‌های مربوط به کد پایتون 3.x نادرست شمرده می‌شد زیرا لازم بود کد در پایتون 2.x اجرا شود. این دیگر توصیه نمی‌شود. از سال ۲۰۱۲، رویکرد ارجح ایجاد کد پایه ای واحد است که بتواند تحت هر دو پایتون ۲ و ۳ با استفاده از ماژول‌های سازگار کننده اجرا شود.[۳۳]

خصوصیات

[ویرایش]

فهرست برخی از تغییرات عمده پایتون ۳٫۰:

  • تغییر 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[۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 1993-07-29[الف][۲]
۱٫۰ 1.0.4[۲] 1994-01-26[۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 1994-02-15[الف][۲]
۱٫۱ 1.1.1[۲] 1994-10-11[۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 1994-11-10[الف][۲]
۱٫۲ 1995-04-13[۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: Unsupported
۱٫۳ 1995-10-13[۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: Unsupported
۱٫۴ 1996-10-25[۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: Unsupported
۱٫۵ 1.5.2[۳۹] 1998-01-03[۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 1999-04-13[الف][۲]
۱٫۶ 1.6.1[۳۹] 2000-09-05[۴۰] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2000-09[الف][۳۹]
۲٫۰ 2.0.1[۴۱] 2000-10-16[۴۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2001-06-22[الف][۴۱]
۲٫۱ 2.1.3[۴۱] 2001-04-15[۴۳] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2002-04-09[الف][۴۱]
۲٫۲ 2.2.3[۴۱] 2001-12-21[۴۴] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2003-05-30[الف][۴۱]
۲٫۳ 2.3.7[۴۱] 2003-06-29[۴۵] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2008-03-11[الف][۴۱]
۲٫۴ 2.4.6[۴۱] 2004-11-30[۴۶] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2008-12-19[الف][۴۱]
۲٫۵ 2.5.6[۴۱] 2006-09-19[۴۷] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2011-05-26[الف][۴۱]
۲٫۶ 2.6.9[۲۶] 2008-10-01[۲۶] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2010-08-24[ب][۲۶] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2013-10-29[۲۶]
۲٫۷ 2.7.18[۳۱] 2010-07-03[۳۱] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2020-01-01[پ][۳۱]
۳٫۰ 3.0.1[۴۱] 2008-12-03[۲۶] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2009-02-13[۴۸]
۳٫۱ 3.1.5[۴۹] 2009-06-27[۴۹] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2011-06-12[۵۰] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2012-06[۴۹]
۳٫۲ 3.2.6[۵۱] 2011-02-20[۵۱] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2013-05-13[ب][۵۱] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2016-02-20[۵۱]
۳٫۳ 3.3.7[۵۲] 2012-09-29[۵۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2014-03-08[ب][۵۲] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2017-09-29[۵۲]
۳٫۴ 3.4.10[۵۳] 2014-03-16[۵۳] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2017-08-09[۵۴] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2019-03-18[الف][۵۳]
۳٫۵ 3.5.9[۵۵] 2015-09-13[۵۵] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2017-08-08[۵۶] نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود: 2020-09-13[۵۷][اطلاعات تاریخ‌گذاری‌شده]
۳٫۶ 3.6.11[۵۸] 2016-12-23[۵۸] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2018-12-24[ب][۵۸] نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود: 2021-12[۵۸][اطلاعات تاریخ‌گذاری‌شده]
۳٫۷ 3.7.8[۵۹] 2018-06-27[۵۹] نگارش قدیمی، دیگر پشتیبانی نمی‌شود: 2020-06-27[ب][۵۹] نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود: 2023-06[۵۹][اطلاعات تاریخ‌گذاری‌شده]
۳٫۸ 3.8.5[۶۰] 2019-10-14[۶۰] نگارش پایدار جاری: 2021-04[۶۰][اطلاعات تاریخ‌گذاری‌شده] نگارش پایدار جاری: 2024-10[۶۰][اطلاعات تاریخ‌گذاری‌شده]
۳٫۹ 3.9.0 beta 1[۶۱] 2020-10-05[۶۱] نگارش آتی: 2022-05[۶۲][اطلاعات تاریخ‌گذاری‌شده] نگارش آتی: 2025-10[۶۱][۶۲]
۳٫۱۰ 2021-10-25[۶۳] نگارش آتی: 2023-05[۶۳][اطلاعات تاریخ‌گذاری‌شده] نگارش آتی: 2026-10[۶۳]
ایجاز:
نگارش قدیمی
نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود
نگارش پایدار جاری
آخرین نگارش پیش‌نمایش
انتشار آتی
Italic is the latest micro version of currently supported versions as of 2020-04-20.

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

  1. ۱٫۰۰ ۱٫۰۱ ۱٫۰۲ ۱٫۰۳ ۱٫۰۴ ۱٫۰۵ ۱٫۰۶ ۱٫۰۷ ۱٫۰۸ ۱٫۰۹ ۱٫۱۰ ۱٫۱۱ Date of last micro release.
  2. ۲٫۰ ۲٫۱ ۲٫۲ ۲٫۳ ۲٫۴ Date of last non security only release.
  3. Official support ended on 2020-01-01, but a final release of the code as it appeared on 2020-01-01, 2.7.18 occurred on 2020-04-20.[۳۱]

پشتیبانی

[ویرایش]

جستارهای وابسته

[ویرایش]

منابع

[ویرایش]
  1. ۱٫۰ ۱٫۱ ۱٫۲ "The Making of Python". Artima Developer. Retrieved March 22, 2007.
  2. ۲٫۰۰ ۲٫۰۱ ۲٫۰۲ ۲٫۰۳ ۲٫۰۴ ۲٫۰۵ ۲٫۰۶ ۲٫۰۷ ۲٫۰۸ ۲٫۰۹ ۲٫۱۰ ۲٫۱۱ ۲٫۱۲ ۲٫۱۳ ۲٫۱۴ van Rossum, Guido (2009-01-20). "A Brief Timeline of Python". Retrieved 2019-11-29.
  3. ۳٫۰ ۳٫۱ "Why was Python created in the first place?". Python FAQ. Retrieved March 22, 2007.
  4. van Rossum, Guido (July 31, 2008). "Origin of BDFL". Retrieved August 1, 2008.
  5. "Python Creator Scripts Inside Google". www.eweek.com. Retrieved May 13, 2008.
  6. Fairchild, Carlie (July 12, 2018). "Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life". Linux Journal (به انگلیسی). Retrieved July 12, 2018.
  7. "General Python FAQ — Python 3.8.3 documentation". docs.python.org.
  8. ۸٫۰ ۸٫۱ ۸٫۲ ۸٫۳ Kuchling, Andrew M.; Zadka, Moshe. "What's New in Python 2.0". Archived from the original on December 14, 2009. Retrieved March 22, 2007.
  9. ۹٫۰ ۹٫۱ "Welcome to Python.org". python.org. Retrieved December 27, 2016.
  10. ۱۰٫۰ ۱۰٫۱ van Rossum, Guido (2006-04-05). "PEP 3000 -- Python 3000". Retrieved December 27, 2016.
  11. "HISTORY". Python source distribution. Python Foundation. Retrieved 2017-11-23.
  12. van Rossum, Guido. "The fate of reduce() in Python 3000". Artima Developer. Retrieved 2007-03-22.
  13. "LJ #37: Python 1.4 Update". Archived from the original on May 1, 2007. Retrieved 2007-04-29.
  14. van Rossum, Guido. "Computer Programming for Everybody". Retrieved 2007-03-22.
  15. "Computer Programming for Everybody". Python Software Foundation. Archived from the original on March 29, 2007. Retrieved 2007-03-22.
  16. https://slashdot.org/story/00/05/30/1931239/python-development-team-moves-to-beopencom
  17. https://web.archive.org/web/20000815095541/http://www.beopen.com/company/team.html
  18. http://joeellsworth.com/resume/references/pybiz_beopen_partnership.pdf
  19. ۱۹٫۰ ۱۹٫۱ "History of the software". Python Library Reference. Archived from the original on March 29, 2007. Retrieved 2007-03-22.
  20. Hylton, Jeremy (2000-11-01). "PEP 227 -- Statically Nested Scopes". Retrieved 2007-03-22.
  21. <https://www.python.org/download/releases/2.2/
  22. Kuchling, Andrew M. (2001-12-21). "PEPs 252 and 253: Type and Class Changes". What's New in Python 2.2. Python Foundation. Archived from the original on September 17, 2008. Retrieved 2008-09-05.
  23. Schemenauer, Neil; Peters, Tim; Hetland, Magnus (2001-12-21). "PEP 255 -- Simple Generators". Retrieved 2008-09-05. {{cite web}}: Cite has empty unknown parameter: |1= (help)
  24. "Python 2.5 Release". Python.org.
  25. "Highlights: Python 2.5". Python.org.
  26. ۲۶٫۰ ۲۶٫۱ ۲۶٫۲ ۲۶٫۳ ۲۶٫۴ ۲۶٫۵ Norwitz, Neal; Warsaw, Barry (2006-06-29). "PEP 361 -- Python 2.6 and 3.0 Release Schedule". Retrieved 2019-11-29.
  27. Kuchling, Andrew M. (2010-07-03). "What's New in Python 2.7". Retrieved 2012-10-07. Much as Python 2.6 incorporated features from Python 3.0, version 2.7 incorporates some of the new features in Python 3.1. The 2.x series continues to provide tools for migrating to the 3.x series.
  28. Warsaw, Barry (2011-11-09). "PEP 404 -- Python 2.8 Un-release Schedule". Retrieved 2012-10-07.
  29. Gee, Sue (2014-04-14). "Python 2.7 To Be Maintained Until 2020". i-programmer.info. Retrieved December 27, 2016.
  30. "Commits · python/cpython at 2.7".{{cite web}}: نگهداری CS1: url-status (link)
  31. ۳۱٫۰ ۳۱٫۱ ۳۱٫۲ ۳۱٫۳ ۳۱٫۴ Peterson, Benjamin (2008-11-03). "PEP 373 -- Python 2.7 Release Schedule". Retrieved 2020-04-20.
  32. Ruby, Sam; 2to3, September 1, 2007
  33. Coghlan, Nick; Python 3 Q & A, June 29, 2012
  34. Brandl, Georg (2007-11-19). "PEP 3105 -- Make print a function". Retrieved December 27, 2016.
  35. van Rossum, Guido. "Python 3000 FAQ". artima.com. Retrieved December 27, 2016.
  36. "The fate of reduce() in Python 3000". www.artima.com. Retrieved 2019-12-31.
  37. Winter, Collin; Lownds, Tony (2006-12-02). "PEP 3107 -- Function Annotations". Retrieved December 27, 2016.
  38. van Rossum, Guido (2007-09-26). "PEP 3137 -- Immutable Bytes and Mutable Buffer".
  39. ۳۹٫۰ ۳۹٫۱ ۳۹٫۲ "Releases | Python.org". Retrieved 2019-11-29.
  40. Drake, Fred L. , Jr. (2000-07-25). "PEP 160 -- Python 1.6 Release Schedule". Retrieved 2019-11-29.
  41. ۴۱٫۰۰ ۴۱٫۰۱ ۴۱٫۰۲ ۴۱٫۰۳ ۴۱٫۰۴ ۴۱٫۰۵ ۴۱٫۰۶ ۴۱٫۰۷ ۴۱٫۰۸ ۴۱٫۰۹ ۴۱٫۱۰ ۴۱٫۱۱ ۴۱٫۱۲ "Download Python | Python.org". Retrieved 2019-11-29.
  42. Hylton, Jeremy. "PEP 200 -- Python 2.0 Release Schedule". Retrieved 2019-11-29.
  43. Hylton, Jeremy (2000-10-16). "PEP 226 -- Python 2.1 Release Schedule". Retrieved 2019-11-29.
  44. Warsaw, Barry; van Rossum, Guido (2001-04-17). "PEP 251 -- Python 2.2 Release Schedule". Retrieved 2019-11-29.
  45. van Rossum, Guido (2002-02-27). "PEP 283 -- Python 2.3 Release Schedule". Retrieved 2019-11-29.
  46. Warsaw, Barry; Hettinger, Raymond; Baxter, Anthony (2003-07-29). "PEP 320 -- Python 2.4 Release Schedule". Retrieved 2019-11-29.
  47. Norwitz, Neal; van Rossum, Guido; Baxter, Anthony (2006-02-07). "PEP 356 -- Python 2.5 Release Schedule". Retrieved 2019-11-29.
  48. "17. Development Cycle — Python Developer's Guide". Retrieved 2019-11-29.
  49. ۴۹٫۰ ۴۹٫۱ ۴۹٫۲ Peterson, Benjamin (2009-02-08). "PEP 375 -- Python 3.1 Release Schedule". Retrieved 2019-11-29.
  50. Peterson, Benjamin (2011-06-12). "[RELEASED Python 3.1.4"]. https://mail.python.org/archives/list/python-announce-list@python.org/message/6HBADVUPFMK3TUJVZWAMYIO2JP4WZ7UT/. Retrieved 2019-11-29.
  51. ۵۱٫۰ ۵۱٫۱ ۵۱٫۲ ۵۱٫۳ Brandl, Georg (2009-12-30). "PEP 392 -- Python 3.2 Release Schedule". Retrieved 2019-11-29.
  52. ۵۲٫۰ ۵۲٫۱ ۵۲٫۲ ۵۲٫۳ Brandl, Georg (2011-03-23). "PEP 398 -- Python 3.3 Release Schedule". Retrieved 2019-11-29.
  53. ۵۳٫۰ ۵۳٫۱ ۵۳٫۲ Hastings, Larry (2012-10-17). "PEP 429 -- Python 3.4 Release Schedule". Retrieved 2019-11-29.
  54. Hastings, Larry (2017-08-09). "[RELEASED Python 3.4.7 is now available"]. https://mail.python.org/archives/list/python-announce-list@python.org/message/S6OZYIRIRG7ZLSTFLXA36KUQ56LV2DH6/. Retrieved 2019-11-29.
  55. ۵۵٫۰ ۵۵٫۱ Hastings, Larry (2014-09-22). "PEP 478 -- Python 3.5 Release Schedule". Retrieved 2020-03-17.
  56. Hastings, Larry (2017-08-08). "[RELEASED Python 3.5.4 is now available"]. https://mail.python.org/archives/list/python-announce-list@python.org/message/HOIDGMHH35YLRM72UKOWI4CVXPXH3DJ2/. Retrieved 2019-11-29.
  57. "Python Developer's Guide". Retrieved 2019-11-29.
  58. ۵۸٫۰ ۵۸٫۱ ۵۸٫۲ ۵۸٫۳ Deily, Ned (2015-05-30). "PEP 494 -- Python 3.6 Release Schedule". Retrieved 2020-04-20.
  59. ۵۹٫۰ ۵۹٫۱ ۵۹٫۲ ۵۹٫۳ Deily, Ned (2016-12-23). "PEP 537 -- Python 3.7 Release Schedule". Retrieved 2020-04-20. {{cite web}}: Cite has empty unknown parameter: |1= (help)
  60. ۶۰٫۰ ۶۰٫۱ ۶۰٫۲ ۶۰٫۳ Langa, Łukasz (2018-01-27). "PEP 569 -- Python 3.8 Release Schedule". Retrieved 2020-04-20.
  61. ۶۱٫۰ ۶۱٫۱ ۶۱٫۲ Langa, Łukasz (2019-06-04). "PEP 596 -- Python 3.9 Release Schedule". Retrieved 2020-04-20.
  62. ۶۲٫۰ ۶۲٫۱ Langa, Łukasz (2019-06-04). "PEP 602 -- Annual Release Cycle for Python". Retrieved 2019-11-29.
  63. ۶۳٫۰ ۶۳٫۱ ۶۳٫۲ Pablo, Pablo (2020-05-25). "PEP 619 -- Python 3.10 Release Schedule". Retrieved 2020-05-25.

پیوند به بیرون

[ویرایش]