# பைத்தான்



**பைத்தான்** (*Python Programming Language*)) என்பது ஒரு விளக்கப்பட்ட, உயர்-நிலை, பொது-நோக்க நிரலாக்க மொழியாகும். நிரல் படிப்புத்திறன் பைத்தானின் வடிவமைப்பு மெய்யியல் குறிப்பிடத்தக்க இடைவெளியுடன் பயன்படுத்துவதை வலியுறுத்துகிறது. சிறு, பேரளவு திட்டப்பணிகளுக்குத் தருக்கமுறை நிரற்தொடரைத் தெளிவாக எழுதுத கணிப்பொறி நிரலருக்கு அதன் மொழி கட்டமைப்புகளும் பொருள் நோக்கு அணுகுமுறையும் உதவி செய்வதை நோக்கமாகக் கொண்டுள்ளது.  

பைதான் இயக்க வகையும் நினைவகச் சுத்திகரிப்பும் கொண்டதாகும். ஒழுங்குசார் (குறிப்பாகப் படிமுறைத்தன்மை) பொருள் நோக்கு, பணிமுறை போன்றவை உட்பட பன்முக-கருத்தோட்டங்களை இம்மொழி ஒத்துழைக்கின்றது, விரிந்த தரமான ஏடகம் உள்ளதால் பைதான் "மின்கலன்கள் உள்ளடக்கிய மொழி” எனப் பெரும்பாலும் விவரிக்கப்படுகிறது.  

பைத்தான் ஒரு திறந்த மூல நிரலாக்க மொழியாகும். இம்மொழியை உருவாக்கியவர் குய்டொ வான் ரூஸ்ஸொம்(Guido van Rossum) என்ற நெதர்லாந்து நாட்டு நிரலாளர் ஆவார். இவர் இம்மொழிக்குப் பெயரை, 'Monty Python's Flying Circus' என்ற இங்கிலாந்து நகைச்சுவை நாடகத்தின் பெயரைக் கொண்டு, பைத்தான் என்று வைத்தார். அந்நாடகம் ஓர் 'அடிமன வெளிப்பாட்டிய நகைச்சுவையை' (Surreal humor) அடிப்படையாகக் கொண்டதாகும். இம்மொழி பொது நோக்க இலக்குகளுக்காக, அதிகம் பயன்படுத்தப்படும் உயர் மட்ட நிரலாக்க மொழியாகும்.  

கூகிள், நாசா போன்ற புகழ்பெற்ற நிறுவனங்களில் இது பயன்படுத்தப்படுகின்றது. பைதானில் செய்நிரல்கள் எழுதுவதும், பிறர் எழுதிய செய்நிரல்களைப் படித்து புரிந்து கொள்வதும் மிக எளிதாகும். இதன் முதல் பதிப்பு 1991 வெளி வந்தது. இந்த மென்பொருளைத் தற்பொழுது பைத்தோன் மென்பொருள் நிறுவம் பராமரித்து வருகிறது. இம்மொழியின் அதிகாரப்பூர்வமான பதிப்பு சிபைத்தோன் என்பதாகும்.  

பைத்தான் இலவசமாகக் கிடைக்கக் கூடிய நிரல் மொழியாகும். வணிக நோக்கிலான மென்பொருள் உருவாக்கத்தில் இலவசமாய்ப் பயன்படுத்தப்படுகின்றது. பைத்தான் மென்பொருள் நிறுவனம் இம்மொழியின் உரிமத்தை நிர்வகித்து வருகிறது. விண்டோசு, லினக்சு, யுனிக்சு, மேக் இயங்குதளம் போன்ற பல்வேறு இயக்க சூழல்களிலும் பைத்தான் இயங்கும். சி, சி++, சி#, ஜாவா, பி.எச்.பி, பேர்ள் போன்ற அனைத்து நிரல் மொழிகளுடனும் ஒத்திசையும் வண்ணம் வடிவமைக்கப்பட்டுள்ளது.  

## வரலாறு
,பைத்தான் மொழியை உருவாக்கியவர்]]  
பைதான் 1980 களின் பிற்பகுதியில் உருவாக்கப்பட்டது, 1991 இல் ஏபிசி நிரலாக்க மொழியைப் பின் தொடர்ந்து கைடோ வான் ரோசம் ஆல் முதன்முதலில் வெளியிடப்பட்டது.  

## வடிவமைப்பு மெய்யியலும் சிறப்பியல்புகளும்

## பயன்பாட்டுத் துறைகள்
- இணைய மென்பொருள் (Web Application),  
- மின்னஞ்சல் அலகிடல் (Email Parsing)  
- வலையமைப்பு நிரலான் (Network Program)  
- மேசைத்தளம் மென்பொருள் (Desktop Application),,  
- இணைய நெறிமுறை (Internet Protocol)  
- கணினி நிருவாகம் (System administration)  
- விளையாட்டுகள் (  

sports)  

## பயன்படுத்தும் நிறுவனங்கள்
- கூகிள்
- யூடியூப்
- டராப்பாக்ஸ்
- முகநூல்
- பிட்லி
- யாகூ! நிலப்படம்
- யாகூ குழுமம்
- சோப்
- அல்ட்ரா சீக்
- லினக்சு வாரச் செய்தி
- ரெட்ஹேட்
- டிக்க
- இவன்ட்பிரைட்
- லேன்யார்ட்
- மிக்ஸ் பேனல்
- கோரா
- பின்டிரசட்
- ரேட்டிட்
- பாத்
- இன்சடாகிராம்
- மொசில்லா நிறுவனம்
- சர்வே மங்கி
- எல்பு
- அசனா
- சேக்கேன்டு லைப்பு
- வால்ட் டிச்சினி
- கூகிள் அப் இஞ்ன்
- இவ் அன்லைன் கேம்ங்
- கனோனிக்கல் நிறுவனம்
- Rackspace
- சிஸ்கோ சிஸ்டம்ஸ்
- ஐபிஎம்
- இன்டச்சிட்ரியல் லைட் மேசிக்
- பிக்சர்
- தேசிய வானூர்தியியல் மற்றும் விண்வெளி நிர்வாகம்
- ஹனிவெல்
- ஐரேபட்
- One Laptop Per Child (OLPC) project
- டிச்கச்(disqus)

## எடுத்துக்காட்டு

வருக வையகமே நிரல்  
<syntaxhighlight lang="python">  
1. !/usr/bin/python
print u"வணக்கம்"  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
வணக்கம்  
</syntaxhighlight>  

வேறுபடுபவை(Variable)  
<syntaxhighlight lang="python">  
1. ! /usr/bin/python
a = 1  
b = 2  
print a + b  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
3  
</syntaxhighlight>  

இணை ஒப்படைப்பு(parallel assignment)  
<syntaxhighlight lang="python">  
1. ! /usr/bin/python
1. comment விளக்கம் கூறு
a, b = 1, 2  
language = "python"  
print a, b, language  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
1 2 python  
</syntaxhighlight>  

கூற்று(Expression)  
<syntaxhighlight lang="python">  
1. ! /usr/bin/python
print 1 + 2, 2 - 3, 2 * 3, 5 / 2, 5.0 / 2  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
3 -1 6 2 2.5  
</syntaxhighlight>  

கூற்று  
<syntaxhighlight lang="python">  
1. ! /usr/bin/python
print 2 > 3, 1 < 3  
print 2 > 3 and 1 < 3  
print 1 < 2 < 3  
print 1 + 2 * 3 + 5  
print 1 or 2  
print 1 and 2  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
False True  
False  
True  
12  
1  
2  
</syntaxhighlight>  

சரம்(String)  
<syntaxhighlight lang="python">  
1. ! /usr/bin/python
language = "தமிழ்"  
lang = 'தமிழ்'  
l = """தமிழ்"""  
kural = """  
அகர முதல எழுத்தெல்லாம் ஆதி  
பகவன் முதற்றே உலகு.  
"""  
print language, lang, l  
print kural  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
தமிழ் தமிழ் தமிழ்  
அகர முதல எழுத்தெல்லாம் ஆதி  
பகவன் முதற்றே உலகு.  
</syntaxhighlight>  

கட்டியம்(Condition)  
<syntaxhighlight lang="python">  
1. ! /usr/bin/python
a = 23  
if a > 0:  
print "a %d is positive number" % (a)  
else:  
print "a %d is negative number " % (a)  
a = 0  
if a >= 0:  
print "a(%d) is positive number" % (a)  
elif a < 0:  
print "a(%d) is negative number" % (a)  
elif a == 0:  
print "a(%d) is zero" %(a)  

</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
a 23 is positive number  
a(0) is positive number  
</syntaxhighlight>  

## தரவுக் கட்டமைப்புகள் (Data structures)

தொடர் (List)  
<syntaxhighlight lang="python">  
1. ! /usr/bin/python
l = [] #தொடர் உருவாக்குதல்  
l.append("தமிழ்")  
l.append(1) #புதிய சேர்க்கை  
print l, l.count  
l.remove(1) #1யை நீக்குதல்  
print l  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
[தமிழ், 1], 2  
[தமிழ்]  
</syntaxhighlight>  

டியுப்பல் (Tuple)  
<syntaxhighlight lang="python">  
t = (1, 2, 3, 1)  
print t.count(1)  
print t.index(2)  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
2  
1  
</syntaxhighlight>  

அகராதி(Dictionary)  
<syntaxhighlight lang="python">  
d = {'name': 'Tamil Magan', 'age': 23, 'place': 'coimbatore'}  
print d  
print d['name']  
print d['age']  
print d.keys  
print d.values  
print d.items  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
{'age': 23, 'place': 'coimbatore', 'name': 'Tamil Magan'}  
Tamil Magan  
23  
['age', 'place', 'name']  
[23, 'coimbatore', 'Tamil Magan']  
[('age', 23), ('place', 'coimbatore'), ('name', 'Tamil Magan')]  
</syntaxhighlight>  

தொகுப்பு (set)  
<syntaxhighlight lang="python">  
s = set([1, 2, 3, 1, 2, 3])  
print s  
s.add(23)  
print s  
s.pop  
print s  
s.remove(23)  
print s  
print len(s)  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
set([1, 2, 3])  
set([1, 2, 3, 23])  
set([2, 3, 23])  
set([2, 3])  
2  
</syntaxhighlight>  

## முழுச்சுற்றுகள் (Loops)

தொடர்  
<syntaxhighlight lang="python">  
for no in [1, 2, 3, 4, 5]: #தொடர்  
print no  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
1  
2  
3  
4  
5  
</syntaxhighlight>  

டியுப்பல்  
<syntaxhighlight lang="python">  
for no in (1, 2, 3, 4, 5): #டியுப்பல்  
print no  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
1  
2  
3  
4  
5  
</syntaxhighlight>  

அகராதி  
<syntaxhighlight lang="python">  
d = {'age': 23, 'name': 'Tamil Magan', 'place': 'coimbatore'}  
for key in d: #அகராதி  
print key, d[key]  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
age 23  
place coimbatore  
name Tamil Magan  
</syntaxhighlight>  

ஒயில் (while)  
<syntaxhighlight lang="python">  
no = 1  
while no < 10:  
if no % 2 == 0:  
print no, "இரட்டை"  
elif no % 2 == 1:  
print no, "ஒற்றை"  
no += 1  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
1 ஒற்றை  
2 இரட்டை  
3 ஒற்றை  
4 இரட்டை  
5 ஒற்றை  
6 இரட்டை  
7 ஒற்றை  
8 இரட்டை  
9 ஒற்றை  
</syntaxhighlight>  
கொடுக்கப்பட்ட எண்ணை பெருக்கல் அட்டவணை அச்சிடும் நிரல் (பார் லூப் எடுத்துக்காட்டு)  
<syntaxhighlight lang="python">  
val=5  
for i in range(5):  
i=i+1  
print i," X ",int(val)," = ",int(i)*int(val),"\n"  
</syntaxhighlight>  
வெளியீடு(Output)  
<syntaxhighlight lang="text">  
1 X 5 = 5  

2 X 5 = 10  

3 X 5 = 15  

4 X 5 = 20  

5 X 5 = 25  
</syntaxhighlight>  

## செயலாற்றி (Function)

<syntaxhighlight lang="python">  
def square(no):  
return no * no  

def cube(no):  
return square(no) * no  

print square(2)  
print square(2) + square(3)  
print cube(3)  
print cube(square(2))  
print square(no=10)  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
4  
13  
27  
64  
100  
</syntaxhighlight>  

இயல்பிருப்பு(Default)  
<syntaxhighlight lang="python">  
def square(no=2):  
return no * no  

def cube(no=2):  
return square(no) * no  

print square  
print square(4)  
</syntaxhighlight>  

வெளியீடு(Output)  
<syntaxhighlight lang="text">  
4  
16  
</syntaxhighlight>  

மாற்றுப்பெயர் (Alias)  
<syntaxhighlight lang="python">  
def square(no=2):  
return no * no  

def cube(no=2):  
return square(no) * no  

def caller(func_name, arg):  
return func_name(arg)  

s = square  
c = cube  
print s(2)  
print c(3)  
print caller(s, 10)  
print caller(c, 5)  
print caller(square, 7)  
</syntaxhighlight>  

<syntaxhighlight lang="text">  
4  
27  
100  
125  
49  
</syntaxhighlight>  
## Open-Tamil library
Open-Tamil library example,  
<syntaxhighlight lang="python">  
import re, operator  
import tamil #open-tamil library  
def print_tamil_words(tatext):  
taletters = tamil.utf8.get_letters(tatext)  
1. tamil words only
frequency = {}  
for pos, word in enumerate(tamil.utf8.get_tamil_words(taletters)):  
print(pos, word)  
frequency[word] = 1 + frequency.get(word, 0)  
1. sort words by descending order of occurrence
for l in sorted(frequency.iteritems, key=operator.itemgetter(1)):  
print(l[0], ’:’, l[1])  
</syntaxhighlight>