পাইথন (প্রোগ্রামিং ভাষা): সংশোধিত সংস্করণের মধ্যে পার্থক্য

বিষয়বস্তু বিয়োগ হয়েছে বিষয়বস্তু যোগ হয়েছে
WikitanvirBot (আলোচনা | অবদান)
বট বানান ঠিক করছে, কোনো সমস্যায় তানভিরের আলাপ পাতায় বার্তা রাখুন
আফতাব বট (আলোচনা | অবদান)
টেমপ্লেটে সংশোধন
২৮ নং লাইন:
}}
 
'''পাইথন''' (Python) একটি বস্তু-সংশ্লিষ্ট (object-oriented) [[উচ্চস্তরের প্রোগ্রামিং ভাষা]]। ১৯৯১ সালে গুইডো ভ্যান রস্যিউম এটি প্রথম প্রকাশ করেন।<ref name="svn-history">{{ citeওয়েব webউদ্ধৃতি | title = HISTORY | url = http://svn.python.org/view/*checkout*/python/trunk/Misc/HISTORY | work = Python source distribution | publisher = Python Foundation | accessdate = 2007-03-21 }}</ref> পাইথন নির্মাণ করার সময় প্রোগ্রামের পঠনযোগ্যতার উপর বেশি গুরুত্ব দেয়া হয়েছে।<ref>{{ citeওয়েব webউদ্ধৃতি | url = http://www.python.org/doc/essays/blurb/ | title = What is Python? Executive Summary | publisher = Python Foundation | work = Python documentation | accessdate = 2007-03-21 }}</ref> এখানে প্রোগ্রামারের পরিশ্রমকে কম্পিউটারের চেয়ে বেশি গুরুত্ব দেয়া হয়েছে। পাইথনের কোর সিনট্যাক্স ও সেমান্টিক্‌স খুবই সংক্ষিপ্ত, তবে ভাষাটির স্ট্যান্ডার্ড লাইব্রেরি অনেক সমৃদ্ধ। পাইথন প্রোগ্রামারদের সমাজ থেকে [[পাইথন দর্শন]] এর সূচনা হয়েছে।
 
পাইথন একটি [[বহু-প্যারাডাইম প্রোগ্রামিং ভাষা]] ([[ফাংশন-ভিত্তিক প্রোগ্রামিং ভাষা|ফাংশন-ভিত্তিক]], [[বস্তু-সংশ্লিষ্ট প্রোগ্রামিং ভাষা|বস্তু-সংশ্লিষ্ট]] ও [[নির্দেশমূলক প্রোগ্রামিং ভাষা|নির্দেশমূলক]]) এবং এটি একটি পুরোপুরি [[চলমান প্রোগ্রামিং ভাষা]] যার স্বনিয়ন্ত্রিত মেমরি ব্যবস্থাপনা রয়েছে। এদিক থেকে এটি [[পার্ল]], [[রুবি (প্রোগ্রামিং ভাষা)|রুবি]] প্রভৃতি প্রোগ্রামিং ভাষার মত।
৩৯ নং লাইন:
== ইতিহাস ==
[[চিত্র:Guido van Rossum.jpg|thumb|upright|পাইথন এর উদ্ভাবক, [[গুইডো ভ্যান রস্যিউম]]]]
[[১৯৮০]] দশকের শেষের দিকে পাইথনের জন্ম দেন [[নেদারল্যান্ড|নেদারল্যান্ডের]] [[ন্যাশনাল রিসার্চ ইনস্টিটিউট ফর ম্যাথমেটিকস অ্যান্ড কম্পিউটার সায়েন্স|সিডব্লিউআই'র]] গবেষক [[গুইডো ভ্যান রস্যিউম]]।<ref name="venners-interview-pt-1">{{citeওয়েব webউদ্ধৃতি|url = http://www.artima.com/intv/pythonP.html|title = The Making of Python|accessdate = 2007-03-22|publisher = Artima Developer}}</ref> মূলত [[এবিসি (প্রোগ্রামিং ভাষা)|এবিসি'র]] উত্তরসূরী হিসেবে পাইথনের আবির্ভাব হয়েছে যা এক্সেপশন হ্যান্ডলিং করতে এবং [[অ্যামিবা ডিস্ট্রিবিউটেড অপারেটিং সিস্টেম|অ্যামিবা অপারেটিং সিস্টেমের]] সাথে কাজ করতে সক্ষম ছিল।<ref name = "faq-created">{{ citeওয়েব webউদ্ধৃতি | url = http://www.python.org/doc/faq/general/#why-was-python-created-in-the-first-place | title = Why was Python created in the first place? | publisher = Python FAQ | accessdate = 2007-03-22}}</ref> ভ্যান রস্যিউম পাইথনের প্রধান লেখক এবং বর্তমানে পাইথনের উন্নয়নে তিনিই প্রধানত নেতৃত্ব দিচ্ছেন। তাঁকে পাইথনের আজীবন পরিচালক হিসেবে সম্মান দেয়া হয়েছে।
 
১৯৯১ সালে ভ্যান রস্যিউম পাইথনের কোড প্রকাশ করেন (ভার্শন ০.৯.০)।<ref name="svn-history" /> পাইথন ডিজাইনের এই ধাপেই ক্লাস ইনহেরিটেন্স, এক্সেপশন হ্যান্ডলিং, ফাংশন, ও প্রধান ডাটা টাইপ <code>list</code>, <code>dict</code>, <code>str</code> প্রভৃতি সংযুক্ত ছিল। এই প্রাথমিক প্রকাশে ছিল ''মডুলা-৩'' থেকে ধার করা ''মডিউল সিস্টেম''; ভ্যান রোসাম এই মডিউলকে "পাইথনের মূল প্রোগ্রামিং ইউনিটের একটি" আখ্যায়িত করেছেন।<ref name="venners-interview-pt-1" /> পাইথনের এক্সেপশন মডেলটিও অনেকটা মডুলা-৩'র মত যাতে কেবল অতিরিক্ত <code>else</code> যুক্ত হয়েছে।<ref name = "faq-created" /> ১৯৯৪ সালে পাইথনের প্রধান ফোরাম [news://comp.lang.python comp.lang.python] গঠিত হয়, এবং পাইথনের ব্যবহারকারীদের জন্য তা মাইলফলক হিসেবে চিহ্নিত হয়।
 
১৯৯৪ সালের জানুয়ারি পাইথন ১.০ সংস্করনে প্রবেশ করে। এই সংস্করনে যে প্রধান বিষয়াদি যুক্ত হয় তা হলো ফাংশনাল প্রোগ্রামিং টুলস <code>[[ল্যাম্বডা ক্যালকুলাস|lambda]]</code>, <code>map</code>, <code>filter</code> ও <code>reduce</code>। ভ্যান রস্যিউম বলেন "পাইথন lambda, reduce(), filter() ও map() অধিকার করেছে, (আমি বিশ্বাস করি) একজন [[লিস্প (প্রোগ্রামিং ভাষা)|লিস্প]] হ্যাকারের কাছ থেকে যে নিজেকে এগুলো থেকে বঞ্চিত মনে করছিল এবং কর্মক্ষম প্যাচগুলো সরবরাহ করেছে।"<ref>{{citeওয়েব webউদ্ধৃতি|url = http://www.artima.com/weblogs/viewpost.jsp?thread=98196|title = The fate of reduce() in Python 3000|author = Guido van Rossum|accessdate = 2007-03-22|publisher = Artima Developer}}</ref> এর প্রধান অবদানকারী ছিলেন অমৃত প্রেম; এবং এর প্রকাশ নোটে সে সময় কোন লিস্প প্রোগ্রামের উত্তরসূরী হওয়ার উল্লেখ করা হয়নি।
 
সিডব্লিউআই থেকে প্রকাশিত সর্বশেষ সংস্করন হচ্ছে পাইথন ১.২। ১৯৯৫ সালে ভ্যান রস্যিউম [[ভার্জিনিয়া|ভার্জিনিয়ার]] [[কর্পোরেশন ফর ন্যাশনাল রিসার্চ ইনিশিয়েটিভস]] (সিএনআরআই) প্রতিষ্ঠান থেকে পাইথনের ওপর তার কাজ চালিয়ে যেতে থাকেন এবং এখান থেকে সফটওয়ারটির কয়েকটি সংস্করন বের করেন।
 
১.৪ সংস্করনের মধ্যে পাইথনের কিছু নতুন বৈশিষ্ঠ্য যোগ করা হয়। এর মধ্যে উল্লেখযোগ্য হলো [[মডুলা-৩]] থেকে উদ্বুদ্ধ হয়ে গ্রহণ করা নতুন ''কিওয়ার্ড আর্গুমেন্ট'' (keyword argument) (যা [[কমন লিস্প]] এর কিওয়ার্ড আর্গুমেন্টের সাথে অনেকটা মেলে), এবং [[জটিল সংখ্যা|জটিল সংখ্যার]] জন্য অভ্যন্তরীন সমর্থন। এছাড়া তথ্য লুকানোর জন্যও একটি বিশেষ ব্যবস্থা ছিল, যদিও তা তেমন কঠিন কিছু ছিলনা।<ref>{{citeওয়েব webউদ্ধৃতি|url=http://www.amk.ca/python/writing/12-14|title=LJ #37: Python 1.4 Update|accessdate=2007-04-29}}</ref>
 
সিএনআরআই তে থাকাকালীন ভ্যান রস্যিউম [[কম্পিউটার প্রোগ্রামিং ফর এভরিবডি]] (সিপি৪ই) উদ্যোগ গ্রহণ করেন, যাতে আরো অনেক মানুষ কম্পিউটার প্রোগ্রামিং এর সুবিধা গ্রহণ এবং অল্প মৌলিক প্রোগ্রামিং জ্ঞানের (ইংরেজি ও গণিতের জন্য সাধারণ যে জ্ঞান থাকা প্রয়োজন) মাধ্যমে ছোটখাট সমস্যা সমাধান করতে পারে। পাইথন এক্ষেত্রে কেন্দ্রীয় ভূমিকা পালন করেছে যার মূল কারণঃ এর পরিষ্কার সিনট্যাক্সের প্রতি মনোযোগ, এর ব্যবহার উপযোগিতা এবং সিপি৪ই এর লক্ষ্যের সাথে পাইথনের পূর্বসূরী এবিসির লক্ষ্যের মিল। এই প্রকল্পের অর্থায়ন করে [[:en:DARPA|DARPA]]।<ref>{{citeওয়েব webউদ্ধৃতি|url = http://www.python.org/doc/essays/cp4e.html|author = Guido van Rossum|title = Computer Programming for Everybody|accessdate = 2007-03-22}}</ref> এই ২০০৭ সাল পর্যন্ত সিপি৪ই প্রকল্প নিস্ক্রিয় রয়েছে এবং অন্যদিকে পাইথন সাধারণ মানুষের জন্য সহজে শিখার মত প্রোগ্রামিং ভাষা তৈরির লক্ষ্য থেকে অনেকটাই দূরে সরে গেছে। এটা এখন আর পাইথনের জন্য সক্রিয় বিবেচ্য নয়।<ref>{{citeওয়েব webউদ্ধৃতি|url = http://www.python.org/cp4e/|title = Computer Programming for Everybody|accessdate = 2007-03-22|publisher = Python Software Foundation}}</ref>
 
২০০০ সালে পাইথনের মূল উন্নয়নকারী দল [[BeOpen.com|বিওপেন.কম]] এর সাথে যুক্ত হয়ে যৌথভাবে বিওপেন পাইথনল্যাবস গঠন করে। সিএনআরআই পাইথনের একটি সংস্করন ১.৬ প্রকাশের অনুরোধ করেছিল যা মূলত এ পর্যন্ত সিএনআরআইতে পাইথনের যেটুকু উন্নয়ন হয়েছে তার সম্মিলিত প্রকাশ। একারণে পাইথনের ১.৬ ও ২.০ সংস্করনের মধ্যে অনেক বিলম্ব ঘটেছিল।<ref name="newin-2.0">{{citeওয়েব webউদ্ধৃতি|url = http://www.amk.ca/python/2.0/|title = What's New in Python 2.0|author = A.M. Kuchling and Moshe Zadka|accessdate = 2007-03-22}}</ref> পাইথন ২.০ ছিল বিওপেন.কম থেকে প্রকাশিত প্রথম ও একমাত্র পাইথন ডিস্ট্রিবিউশন। পাইথন ২.০ প্রকাশিত হওয়ার পর গুইডো ভ্যান রোসাম ও অন্যান্য পাইথনল্যাবস কর্মীরা [[:en:Digital Creations|ডিজিটাল ক্রিয়েশন্‌স]] এ যোগ দেন।
 
পাইথন ২.০ তার বিভিন্ন বৈশিষ্টের অনেকাংশই ধার করেছে [[ফাংশনভিত্তিক প্রোগ্রামিং]] ভাষা [[হ্যাস্কেল (প্রোগ্রামিং ভাষা)|হ্যাস্কেল]] থেকে। হ্যাস্কেলের লিস্ট ও পাইথনের মধ্যে অনেক মিল রয়েছে যদিও হ্যাস্কেল যতিচিহ্নকে বেশি গুরুত্ব দেয় আর পাইথন গুরুত্ব দেয় বর্ণভিত্তিক কিওয়ার্ড এর উপর। পাইথন ২.০ তে [[গারবেজ কালেকশন (কম্পিউটার বিজ্ঞান)|গারবেজ কালেকশন]] ব্যবস্থা যুক্ত হয়েছে যা নিয়মিত ভাবে মেমরি পরিষ্কার করতে সক্ষম।<ref name="newin-2.0" />
৫৭ নং লাইন:
এই দ্বৈত প্রকাশের পর ও ভ্যান রস্যিউমের সিএনআরআই ত্যাগ করে বাণিজ্যিক সফটওয়ার নির্মাতাদের সাথে যুক্ত হবার পর পরিষ্কার হয়ে যায় যে, [[জিপিএল]] লাইসেন্সের অধীনে পাইথন সফটওয়ারের ব্যবহারের খুবই প্রয়োজনীয়। সে সময় যে লাইসেন্স ব্যবহৃত হত তা ছিল '''পাইথন লাইসেন্স'''। এতে একটি সংযুক্তি ছিল যাতে বলা থাকে এই লাইসেন্স ভার্জিনিয়া রাজ্যের নিয়ন্ত্রনাধীন যারা এটা তৈরি করেছে। [[ফ্রি সফটওয়ার ফাউন্ডেশন|ফ্রি সফটওয়ার ফাউন্ডেশনের]] (এফএসএফ) আইনজীবিদের মতে এই লাইসেন্স [[গনু জিপিএল|গনু জিপিএলের]] সাথে সঙ্গতিপূর্ণ নয়। সিএনআরআই ও এফএসএফ একত্রিত হয়ে পাইথনের লাইসেন্সে পরিবর্তন আনেন যাতে এটা জিপিএলের সাথে সঙ্গতিপূর্ণ হয়। একই বছর (২০০১) ভ্যান রোসামকে '''এফএসএফ অ্যাওয়ার্ড ফর দ্য অ্যাডভান্সমেন্ট ওব ফ্রি সফটওয়ার''' পুরস্কার দেয়া হয়।
 
পাইথন ১.৬.১ আসলে শুধুই পাইথন ১.৬ যাতে কিছুটা ত্রুটি মুক্ত করা হয়েছে এবং নতুন জিপিএল-সঙ্গতিপূর্ণ লাইসেন্স রয়েছে।<ref name="lib-history">{{citeওয়েব webউদ্ধৃতি|url = http://www.python.org/doc/2.5/lib/node951.html|title = History of the software|work = Python Library Reference|accessdate = 2007-03-22}}</ref>
 
[[চিত্র:Python add5 syntax.svg|thumb|360px|সিনট্যাক্স বর্ণায়িত পাইথন কোড]]
 
পাইথন ২.১ তৈরি করা হয়েছে পাইথন ১.৬.১ ও পাইথন ২.০ এর উপর ভিত্তি করে। এর লাইসেন্সের নাম পরিবর্তন করে রাখা হয় '''পাইথন সফটওয়ার ফাউন্ডেশন লাইসেন্স'''। পাইথন ২.১ এর প্রকাশের পর এগুলোর সমস্ত কোড, ডকুমেন্টেশন ও স্পেসিফিকেশন [[পাইথন সফটওয়ার ফাইন্ডেশন]] (পিএসএফ) এর অধীনে চলে আসে। অলাভজনক প্রতিষ্ঠান হিসেবে পিএসএফ গঠন করা হয় ২০০১ সালে। এটির ব্যবস্থাপনা ও গঠন [[অ্যাপাচি সফটওয়ার ফাউন্ডেশন|অ্যাপাচি সফটওয়ার ফাউন্ডেশনের]] আদলে করা হয়।<ref name="lib-history" /> এই ভার্শনে স্ট্যাটিক স্কোপিং নিয়মাবলী (যেটির মূল প্রবক্তা হচ্ছে [[স্কিম (প্রোগ্রামিং ভাষা)|স্কিম]] নামে একটি প্রোগ্রামিং ভাষা) যোগ করা হয়, যদিও প্রথম দিকে এটি বাধ্যতামূলক ও সাধারনভাবে সক্রিয় ছিল না।<ref>{{citeওয়েব webউদ্ধৃতি|url = http://www.python.org/dev/peps/pep-0227/|title = Statically Nested Scopes|author = Jeremy Hylton|accessdate = 2007-03-22}}</ref>
 
পাইথন ২.২ এর একটি প্রধান উদ্ভাবন হচ্ছে পাইথনের বিভিন্ন টাইপ (সি তে লেখা টাইপসমূহ) ও ক্লাসের (পাইথনে লেখা টাইপসমূহ) একই গঠনের আওতায় নিয়ে আসা। এর ফলে পাইথনের অবজেক্ট মডেল অনেক স্থিতিশীল ও প্রকৃত অবজেক্ট ওরিয়েন্টেড হয়েছে।<ref>http://www.python.org/doc/2.2.3/whatsnew/sect-rellinks.html</ref> এতে আরও যুক্ত করা হয়েছে [[জেনারেটর (প্রোগ্রামিং ভাষা)|জেনারেটর]] যেটি [[আইকন (প্রোগ্রামিং ভাষা)|আইকন]] নামে একটি ভাষায় প্রথম ব্যবহৃত হয়েছে।<ref>http://www.python.org/doc/2.2.3/whatsnew/node5.html</ref>
১৫৬ নং লাইন:
Python also allows programmers to define their own types. This is in the form of [[class (computer science)|class]]es, most often used for an [[object-oriented]] style of programming. New [[instance (programming)|instance]]s of classes are constructed by calling the class (ie, like <code>FooClass()</code>), and the classes themselves are instances of class <code>type</code> (itself an instance of itself), allowing [[metaprogramming]] and [[reflection (programming)|reflection]].
 
[[Method (programming)|Method]]s on objects are [[function (programming)|function]]s attached to the object's class; the syntax <code>instance.method(argument)</code> is, for normal methods and functions, [[syntactic sugar]] for <code>Class.method(instance, argument)</code>. This is why Python methods must have an explicit <code>[[This (computer science)|self]]</code> parameter to access [[instance data]], in contrast to the implicit self in some other object-oriented programming languages (for example, [[Java (programming language)|Java]] or [[Ruby (programming language)|Ruby]]).<ref>{{ citeওয়েব webউদ্ধৃতি | url = http://www.python.org/doc/faq/general/#why-must-self-be-used-explicitly-in-method-definitions-and-calls | title = Why must 'self' be used explicitly in method definitions and calls? | publisher = Python FAQ }}</ref>
-->
 
২৬১ নং লাইন:
 
== তথ্যসূত্র ==
{{সূত্র তালিকা|2}}
{{reflist|2}}
 
{{FOSS}}