பைத்தான்

பைத்தான் (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)

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

வருக வையகமே நிரல்
#!/usr/bin/python
print u"வணக்கம்"

வெளியீடு(Output)
வணக்கம்

வேறுபடுபவை(Variable)
#! /usr/bin/python
a = 1
b = 2
print a + b

வெளியீடு(Output)
3

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

வெளியீடு(Output)
1 2 python

கூற்று(Expression)
#! /usr/bin/python
print 1 + 2, 2 - 3, 2 * 3, 5 / 2, 5.0 / 2

வெளியீடு(Output)
3 -1 6 2 2.5

கூற்று
#! /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

வெளியீடு(Output)
False True
False
True
12
1
2

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

வெளியீடு(Output)
தமிழ் தமிழ் தமிழ்
அகர முதல எழுத்தெல்லாம் ஆதி
பகவன் முதற்றே உலகு.

கட்டியம்(Condition)
#! /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)

வெளியீடு(Output)
a 23 is positive number
a(0) is positive number

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

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

வெளியீடு(Output)
[தமிழ், 1], 2
[தமிழ்]

டியுப்பல் (Tuple)
t = (1, 2, 3, 1)
print t.count(1)
print t.index(2)

வெளியீடு(Output)
2
1

அகராதி(Dictionary)
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()

வெளியீடு(Output)
{'age': 23, 'place': 'coimbatore', 'name': 'Tamil Magan'}
Tamil Magan
23
['age', 'place', 'name']
[23, 'coimbatore', 'Tamil Magan']
[('age', 23), ('place', 'coimbatore'), ('name', 'Tamil Magan')]

தொகுப்பு (set)
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)

வெளியீடு(Output)
set([1, 2, 3])
set([1, 2, 3, 23])
set([2, 3, 23])
set([2, 3])
2

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

தொடர்
for no in [1, 2, 3, 4, 5]: #தொடர்
    print no

வெளியீடு(Output)
1
2
3
4
5

டியுப்பல்
for no in (1, 2, 3, 4, 5): #டியுப்பல்
    print no

வெளியீடு(Output)
1
2
3
4
5

அகராதி
d = {'age': 23, 'name': 'Tamil Magan', 'place': 'coimbatore'}
for key in d: #அகராதி
    print key, d[key]

வெளியீடு(Output)
age 23
place coimbatore
name Tamil Magan

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

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

2  X  5  =  10

3  X  5  =  15

4  X  5  =  20

5  X  5  =  25

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

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)

வெளியீடு(Output)
4
13
27
64
100

இயல்பிருப்பு(Default)
def square(no=2):
    return no * no

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

print square()
print square(4)

வெளியீடு(Output)
4
16

மாற்றுப்பெயர் (Alias)
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)

4
27
100
125
49

Open-Tamil library 
Open-Tamil  library example,
import re, operator
import tamil #open-tamil library
def print_tamil_words(tatext):
     taletters = tamil.utf8.get_letters(tatext)
     # 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)
     # sort words by descending order of occurrence
     for l in sorted(frequency.iteritems(), key=operator.itemgetter(1)):
          print(l[0], ’:’, l[1])

மேற்கோள்கள்

புற இணைய இணைப்புகள் 
 தமிழில் பைத்தான் நிரல்மொழிப் பற்றிய அறிமுக யூடியூப் காணொலி
 ஓப்பன் தமிழ் இணையத்தளம் 

பைத்தான்
பல்லியக்குதள கட்டற்ற மென்பொருட்கள்
தமிழ்க் கணிமை நிரல் எடுத்துக்காட்டுக்கள் உள்ள கட்டுரைகள்