Computer Networks

লিনিয়ার সার্চ এলগোরিদম

#পাইথনে ইমপ্লিমেন্টেশনঃ

লিনিয়ার সার্চ এলগোরিদম সবচেয়ে সহজ একটা এলগোরিদম । প্রথমে আমাদের একটা এরে/লিস্ট থাকবে। তারপর আমরা এই লিস্ট এর মধ্যে থেকে যে কোন একটা আইটেম খুঁজবো। এই খোঁজার সিস্টেম টা কেমন হবে? মানে আমরা কিভাবে খুঁজবো?  আমরা সিকুয়েন্সিয়েলি খুঁজবো একটা একটা করে আইটেমকে চেক করে। যদি আমরা আমাদের কাঙ্ক্ষিত আইটেমকে পেয়ে যাই তাহলে আমরা খোঁজা বন্ধ করে দিবো।এবং সেই  কাঙ্ক্ষিত আইটেমকে রিটার্ন/প্রিন্ট করবো। আর যদি না পাই তাহলে বলে দিবো যে আইটেম খুঁজে পাওয়া যায় নি ।

Linear Search Animation

উপরের ছবিটা ভালো করে খেয়াল করো। আশা করি এখন বুঝতে পেরেছ। এখনো না বুঝলে সমস্যা নাই। কোড ইমপ্লিমেন্ট করলে ক্লিয়ারলি বুঝবা ।

list=[2,3,5,7,8,10]
print("The list is : ",list)

প্রথমে আমরা একটা লিস্ট ডিক্লেয়ার করলাম। এতে আইটেম আছে ৬ টা । এবং এই লিস্ট টাকে প্রিন্ট করলাম।

i=flag=0

এবার আমরা দুইটা ভেরিয়েবল ডিক্লেয়ার করলাম। এই দুইটা ভেরিয়েবলই আমাদের while লুপের জন্য কাজে লাগবে। ইনিশিয়ালি দুটাকেই শুন্য করে রাখলাম।

a=int(input("Enter the item you want to search : "))

এখন আমরা যেই আইটেম টাকে খুঁজবো অইটা ইনপুট দিবো।

while i<len(list):
    if a==list[i]:

        flag=1
        break
    i=i+1

এইখানে আমরা while loop ব্যাবহার করলাম। যখন i =(0) এর ভেলু  len(list)=(6) এর ছোট তখন যদি আমার ইনপুট এবং লিস্ট আইটেম টা মিলে যায় তাহলে flag=1 হবে(মানে আমরা আইটেমকে পেয়ে গেছি) এবং লুপ   break করবে। flag=1 এর জন্য আমরা নিচে কোড লিখব। এখন আমরা যদি আমাদের কাঙ্ক্ষিত আইটেমকে না খুঁজে পাই তাহলে i এর ভেলু এক এক করে ভাড়াব । এবং সেটাকে লুপে পুনরায় পাঠাব আবার চেক করার জন্য । এভাবেই লুপ চলতে থাকবে। যখন i এর ভেলু en(list) এর সমান হবে তখন লুপ ব্রেক করবে। তার মানে আমাদের সবগুলা আইটেম চেক করা শেষ।

if flag==1:
    print("Your item is in ",i+1,"th Position")
else:
    print("Sorry! your item isn't exit here.")

এখানে  flag==1 হলে , মানে আমাদের আইটেম কে খুঁজে পেলে এখানে প্রিন্ট করে দেখাব।আর যদি না পাই তাহলেও বলে দিবো যে আইটেম খুঁজে পাওয়া যায় নি ।

আশা করা যাচ্ছে এখন অনেকটাই ক্লিয়ার। এই কোডটাকে রান করে বুঝার চেষ্টা করো  এখনই। সবগুলা সার্চ  এলগোরিদম এর মধ্যে লিনিয়ার সার্চ এলগোরিদম তাই সবচেয়ে সহজ।

 

 

linear.PNG

গিঁটহাবে এই প্রোগ্রাম এর সোর্স কোড পাওয়া যাবে ঃ  https://github.com/Revel109/Linear-Search-Algorithm—————————

আর বুঝতে কোন সমস্যা হলে মেসেজঃ https://www.facebook.com/RevelYusuf

 

যারা “সি” তে ইমপ্লিমেন্ট করতে চাও, হাসান ভাইয়ের  সাইটে  অনেক ভালো ভাবে বুঝানো হয়েছে ঃ  http://hellohasan.com/2016/10/14/%E0%A6%B2%E0%A6%BF%E0%A6%A8%E0%A6%BF%E0%A7%9F%E0%A6%BE%E0%A6%B0-%E0%A6%B8%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%9A-linear-search-algorithm/

 

 

 

Advertisements
Uncategorized

About Me

Image may contain: Revel Yusuf, standing, sunglasses and beard

Hello,

This is Revel Yusuf, from dhaka, Bangladesh.I am Currently studying  in B.S Information and Communications Technology at Bangladesh University of Professionals(Final Year) .

Python is my Passion,my dream,my fantasy.I passing my maximum time by writing Python scripts and solving  on-line judge problems.I wanna build my carrier on Python. I know some basic Programming languages also like C,C++,Java,JavaScript,html,css etc.

Now I am busy with some real life django Projects.Now I am doing some professional projects of django and django rest framework.

This is All about me 🙂

My Resume: https://revel109.github.io/Resume/

Contact Me

revelyusuf.blogspot.com

Facebook_id

gmail_account

Abu Yusuf LinkedIN:
Uncategorized

Networking in Python

server.py:


import socket
import time
host = '127.0.0.1'
port = 5000
clients = []
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host,port))
s.setblocking(0)
quitting = False
print "Server Started."
while not quitting:
try:
data, addr = s.recvfrom(1024)
if "Quit" in str(data):
quitting = True
if addr not in clients:
clients.append(addr)
print time.ctime(time.time()) + str(addr) + ": :" + str(data)
for client in clients:
s.sendto(data, client)
except:
pass
s.close()

client.py:


import socket
import threading
import time
tLock = threading.Lock()
shutdown = False
def receving(name, sock):
while not shutdown:
try:
tLock.acquire()
while True:
data, addr = sock.recvfrom(1024)
print str(data)
except:
pass
finally:
tLock.release()
host = '127.0.0.1'
port = 0
server = ('127.0.0.1',5000)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
s.setblocking(0)
rT = threading.Thread(target=receving, args=("RecvThread",s))
rT.start()
alias = raw_input("Name: ")
message = raw_input(alias + "-> ")
while message != 'q':
if message != '':
s.sendto(alias + ": " + message, server)
tLock.acquire()
message = raw_input(alias + "-> ")
tLock.release()
time.sleep(0.1)
shudown = True
rT.join()
s.close()

Uncategorized

Install avro in Ubuntu 16.04 LTS?

Image may contain: 1 person, smiling

The Contributor(Ubuntu 16.04 LTS (multi-arch) Binary Package): Maksudur Rahman Maateen

details: http://lab.maateen.me/avro/   https://en.maateen.me/install-avro-keyboard-in-ubuntu/

 

Please run these commands from the terminal. Make sure you are in the right directory.

wget "https://github.com/maateen/avro/releases/download/v2.0/avro_2.0-1_all.deb"
sudo dpkg -i avro_2.0-1_all.deb

If you get any dependency errors, then also run the following command:

sudo apt-get install -f

I hope, all is well now and the installation has been finished.

Go to System Settings -> Language Support from Unity Launcher Look at the Keyboard input method system Select IBus and close the window.

I believe that you need to restart IBus to make everything work fine. Try the following command:

ibus restart

After this a “reboot” is required. Now go to System Settings -> Keyboard -> Text Entry. Search and add Avro Phonetic as input source. That’s all.

Uncategorized

Set your default Python -v

Image result for ubuntu 16.04

(Though It’s not recommended by the community)

In Ubuntu, as we all know that the default versions are:

  1. Python2.7 &
  2. Python3.5

So, If you want to Update your Python version to latest version and want to make it default.Then follow the steps:

go to your terminal from global environment and write:


sudo apt-get update
sudo apt-get install python3.6

So, now you have three versions of python in your machine.Now set 3.6 as default.

cd ~
gedit .bash_aliases

then write:

alias python=python3.6

Save the file, close the terminal and open it again.
You should be fine now!

So, you can try it in your ubuntu16.04 Lts. If there has some issues, can comment below.

 

Uncategorized

Object Oriented Concept Covered by Yusuf!

  • Question no-01: What is Object? Explain Object Oriented Concept with Examples.

Answer:

According to Wikipedia:

In the class-based object-oriented programming paradigm, “object” refers to a particular instance of a class where the object can be a combination of variables, functions, and data structures.

According to Cambridge Dictionary:

An Object is  a thing that you can see or touch but that is not usually a living animalplant, or person.

Simply:

An Object is a Software bundle of variables and related methods that must have two properties: i) State and ii) Behavior

If we are talking about a real life example of an object then we can talk about a bicycle:

A bicycle has i) State: current gear, two wheals, no of gear etc.

And   ii) Behavior: Braking, Accelerating, breaking gears

So, we can say that a bicycle is an Object.

Python OOP Car Class and Object

From the above figure we can easily understand that what an Object is.

An Object can be different in size ,color, shape but it always made up according to as it’s Class where all the Characteristics of that Object has been Implemented/described. We can make thousands of cars from our main car class. So all the new cars are the objects of our main car class.

~ Generic attributes/properties/variables of a car: brand, speed, height, weight, colour etc.
~ Generic methods/functions/behaviors of a car: activateHorn, moveForward, moveBack, turnRight, turnLeft etc.

Note that; for different objects, the values of attributes and methods can varies or be similar but behave differently.

Examples of Real-World Objects that could be modeled into computer with OOP coding style:

 

1) ATM
2) Bank Account
3) Fruit
4) Family
5) Cars
6) Shapes
7) Animal
8) Employee
9) User Registration Form
10) Hero
11) Football Club
12) Programmers Gallery etc.

Object Oriented Concept:

Object-Oriented Programming(OOP) refers to a programming methodology based on objects, instead of just functions and procedures.

These objects are organized into classes, which allow individual objects to be group together.

Object oriented programming makes it easier for programmers to structure and organize software programs. Because individual objects can be modified without affecting other aspects of the program, it is also easier to update and change programs written in object oriented languages. As software programs have grown larger over the years, OOP has made developing these large programs more manageable.

The four major principles of object orientation are:

  • Encapsulation

  • Data Abstraction

  • Polymorphism

  • Inheritance

For better Understanding this OOP Concept we need to discuss an Example regarding this.

Example: We have a class defined for vehicles. Create two new vehicles called car1 and car2. Set car1 to be a red convertible worth $60,000.00 with a name of Fer, and car2 to be a blue van named Jump worth $10,000.00.

Implemented with Python Programming Language:

01
0203

In this carproblem.py script we can see that we have defined a class called Vehicle and we have 4 objects (just initiated) and a function within this. The desc_str function will return the object values. Outside this Vehicle class we have given the values of that initiated objects. And then we printed the values of cars that we have given before. Thus, we can make thousands of cars from vehicle class.

So, our Output is exactly what we actually wanted. Our output will be changed every time when we will change the values of that objects

Inheritance: Classes can inherit other classes. A class can inherit attributes and behavior (methods) from other classes, called super-classes. A class which inherits from super-classes is called a Sub-class. Super-classes are sometimes called ancestors as well. There exists a hierarchy relationship between classes.

Question no-02: Describe Encapsulation.

Answer:

Encapsulation:

Encapsulation is the mechanism for restricting the access to some of an object’s components, this means that the internal representation of an object can’t be seen from outside of the objects definition. Access to this data is typically only achieved through special methods: Getters and Setters.

In an object-oriented python program, you can restrict access to methods and variables. This can prevent the data from being modified by accident and is known as encapsulation.

oop new

In this Encapsulation Example we can see there are three modifiers of encapsulation: i) public ii) protected iii) privet

The basic differences between them:

Name

Notation

Behaviour

name

Public

Can be accessed from inside and outside

_name

Protected

Like a public member, but they shouldn’t be directly accessed from outside.

__name

Private

Can’t be seen and accessed from outside

In the above example we see how the encapsulation actually works.

Question no-03: The Differences between Overloading and Overriding.

Answer:

Overloading: Same Method name and different parameter within a class is called Overloading.

Overriding: Same Method name and same parameter within a class is called Overloading.

If we can show an example then the concept will be more cleared.

Overloading is when same method name is used for 2 or more methods in the same class.
Here is a simple example:

public class Sum {
public void add(int a, int b) {
return a+b;
}
public void add(int a, int b, int c) {
return a+b+c;
}
}

For method overloading, the method signature number of arguments, type of arguments and order of arguments  should be different. Return type is not a part of the signature.

Overriding is when same function name from a base class can be used in a derived class.
For example: consider the class:

public class Shape {
public void draw() {
// Do something
}
}

Consider class Circle which extends Shape:

public class Circle extends Shape {
public void draw() {
// Do something different than class Shape
}
}

In class Circle, if draw() method is not created, then implementation from class Shape will be used when we call draw() on a derived class object.
But in above code, method draw() in class Circle overrides implementation of class Shape.
This is function overriding.

To eliminate this confliction problem in overriding,  A common solution for this in languages like Java is to use double dispatch and the visitor pattern.

Personally, I’m not a huge fan of this. I prefer to try to design my way around it. That’s not always possible, of course, but it’s worth at least attempting.

BUP, Uncategorized

________সাবজেক্ট রিভিউঃ আইসিটি________

Related image
“আলকেমিস্ট” বইয়ের রুটিওয়ালা স্বপ্ন দেখতো পর্যটক হবার। কিন্তু সেই স্বপ্নকে সত্যি করার জন্য রাখালবালক হয়ে দেশবিদেশ ঘুরে না বেড়িয়ে সে স্বপ্নকে চাপা দিয়েছিলো কারণ মানুষের চোখে রুটিওয়ালার জীবন রাখালবালকের থেকে বেশি সম্মানের। তাই সমাজকে খুশি করতে গিয়ে তার স্বপ্ন পূরণ করা হয়নি। আমরা বেশিভাগই একেকজন রুটিওয়ালা, নিজের স্বপ্ন পূরণ না করে আগে চিন্তা করি কি নিয়ে পড়ালেখা করলে বেশি টাকার চাকরী পাওয়া যাবে। একটা বিষয়ের “ব” না জেনে হুট করে বিশ্ববিদ্যালয়ে ভর্তি হয়ে যাই চাকরির আশায়, তারপর একসময় হতাশা ঘিরে ধরে।
কম্পিউটার সায়েন্স/আইসিটি খুবই জনপ্রিয় একটা বিষয়। এই বিষয়টা নিয়ে মানুষের মধ্যে অনেক ভূল ধারণা প্রচলিত আছে, এই সাবজেক্টটাতে কি পড়ানো হয় এ বিষয়ে সবার ভালো ধারণা নেই। সবথেকে দু:খজনক ব্যাপার হলো এই সাবজেক্টে কি পড়ানো হয় সেটা না জেনেই বহু ছাত্রছাত্রী ভর্তি হয়ে যায় চাকরীর বাজার ভালো এই কারণে, এটা শুধু কম্পিউটার সায়েন্স/আইসিটি না বরং বাংলাদেশে যেকোনো সাবজেক্টের জন্যই সত্য। এরপর যেটা হয় সেটা হলো খাপ খাওয়াতে না পেরে অনেকেই হতাশ হয়ে পড়ে।
আমার সৌভাগ্য যে কম্পিউটার সায়েন্স/আইসিটি সম্পর্কে ভালো না জানলেও প্রোগ্রামিং আমার আগে থেকেই ভালো লাগতো এবং কম্পিউটার নিয়ে অনেক আগ্রহ ছিলো ছোটোবেলা থেকে তাই এখন আনন্দময় সময় কাটাতে পারছি, কিন্তু সবার এই সৌভাগ্য হয়না, এবং এটা শুধু সিস্টেমের দোষ না সাথে নিজেদের অসচেতনতাও বিশাল অংশে দায়ী। আমি অনেক বন্ধুবান্ধবকে দেখেছি ভর্তি পরীক্ষায় ভালো রেজাল্ট করে চাকরীর বাজার দেখে সাবজেক্ট বেছে নিয়ে এখন হতাশ হয়ে পড়েছে।
আমার এই লেখার উদ্দেশ্য কম্পিউটার সায়েন্সে কি কি পড়ানো হয় সেটা সবাইকে জানানো, বিশেষ করে কম বয়েসীদের যারা এখনো কোনো বিষয় বেছে নেয়নি এবং তাদের অভিভাবকদের। ভর্তি পরীক্ষা নিয়ে অনেক গাইডলাইন থাকলেও সাবজেক্ট নিয়ে গাইডলাইনের অভাব আছে। আর যেগুলো আছে সেগুলোতেও কম্পিউটার সায়েন্সে ক্রিয়েটিভিটি লাগে, মুখস্থ কম করতে হয় এসব কথাবার্তা শুধু লিখে রাখসে, আসলে কি কি পড়ানো হয় সেটা লিখেনি।
বাংলাদেশের মানুষের এক অংশের ধারণা কম্পিউটার সায়েন্সে ওয়ার্ড, পাওয়ারপয়েন্ট এসব শেখানো হয়, এবং এগুলো যেহেতু পাড়ার দোকানদারও ভালো পারে তাই কম্পিউটার সায়েন্স পড়ার কোনো মানে নাই। আবার কম্পিউটার সম্পর্কে ভালো জানে, টুকটাক প্রোগ্রামিংও কিছুটা জানে এমন মানুষের ধারণা এখানে শুধু এইচটিমিএল, পিএইচপিতে এ ওয়েবসাইট বানানো শেখায়, যেগুলো কম্পিউটার সায়েন্স না পড়লেও শেখা যায়, ফ্রিল্যান্সারদের মধ্যে এই ধারণাটা বেশি কাজ করে।
এখন আমরা তাহলে এক এক করে দেখি কম্পিউটার সায়েন্সে/আইসিটিতে কি কি টপিক পড়তে হবে। টপিকগুলো সম্পর্কে সংক্ষেপে আমরা জানবো। এরপরে নিজেই সিদ্ধান্ত নেয়া যাবে উপরের ধারণা গুলো কতটা সত্যি। টপিকগুলো সম্পর্কে জেনে এখন কাজ হবে তোমার ভেবে দেখা এই সাবজেক্টটা কি সত্যিই তোমার পছন্দ নাকি তুমি ইলেকট্রিকাল, মেকানিকাল , ফিজিক্স বা অন্য কোনো সাবজেক্ট পড়বে।
১) প্রোগ্রামিং
২)অ্যালগোরিদম
৩)ডাটা স্ট্রাকচার
৪) গণিত
৫) অপারেটিং সিস্টেম এবং সিস্টেম প্রোগ্রামিং
৬) ডাটাবেস
৭) ডাটা এনালাইসিস
৮) আর্টিফিসিয়াল ইন্টেলিজেন্স(এ.আই)
৯) কম্পাইলার
১০) গ্রাফিক্স
১১) নেটওয়ার্কিং
১২) ডিস্ট্রিবিউটেড সিস্টেম
১৩) সফটওয়্যার ইঞ্জিনিয়ারিং
১৪) এনালগ এন্ড ডিজিটাল কমিউনিকেশন
১৪) রাডার ইঞ্জিনিয়ারিং
১৫) মাইক্রোওয়েভ কমিউনিকেশন
১৬) মাইক্রোপ্রসেসর ও ইন্টারফেসিং
১৭) মোবাইল ও সেলুলার কমিউনিকেশন
১৮) টেলিকমিউনিকেশন সিস্টেম
১৯) ইলেকট্রিক্যাল এন্ড ইলেক্ট্রনিক্স
২০) সিগন্যাল প্রসেসিং
এছাড়াও আরও কিছু কোর্স পড়ানো হয়। এটা ভার্সিটির উপর নির্ভর করে। তবে এগুলা সব ভার্সিটি তেই পড়ানো হয়ে থাকে ।
কম্পিউটার সায়েন্সের/আইসিটি আকর্ষণীয় একটা দিক হলো “কনটেস্ট”। সারাবছরই বিভিন্ন বিশ্ববিদ্যালয় বা কোম্পানি প্রোগ্রামিং কনটেস্ট এবং সফটওয়্যার কনটেস্ট আয়োজন করে। প্রোগ্রামিং কনটেস্টে মূলত অলিম্পিয়াড স্টাইলে অ্যালগোরিদমের সাহায্যে প্রবলেম সলভ করতে হয়। এখানে সুযোগ আছে সারা বিশ্বের বড় বড় প্রোগ্রামারদের সাথে কনটেস্ট করার। বাংলাদেশের মানুষের গর্ব করার মতো জিনিস খুব বেশি নেই, তবে প্রোগ্রামিং কনটেস্ট অবশ্যই সেই অল্প জিনিসগুলোর একটা, অনেকবছর ধরেই বাংলাদেশিরা এসব কনটেস্টে ভালো ফল করছে। সফটওয়্যার কনটেস্টে মূলত বিভিন্ন সফটওয়্যার, ওয়েব সাইট ডিজাইন করতে হয়, মোবাইল বিশেষ করে অ্যান্ড্রয়েড ভিত্তিক মোবাইলের সফটওয়্যার কনটেস্ট বর্তমানে খুব জনপ্রিয়। মাইক্রোসফট ইমেজিন কাপের মতো বড় বড় আন্তর্জাতিক সফটওয়্যার কনটেস্টেও বাংলাদেশিরা অংশ নেয়। আবার তুমি চাইলে হার্ডওয়্যার কনটেস্টও করতে পারো, দারুণ একটা রোবট বানিয়ে চমকে দিতো পারো সবাইকে।
আরেকটি আকর্ষণীয় দিক হল

আরেকটি আকর্ষণীয় দিক হলো গবেষণার সুযোগ। কম্পিউটার সায়েন্স/আইসিটি শেষ বর্ষে কিছু ক্রেডিট থাকে গবেষণা বা প্রজেক্টের জন্য। প্রতি বছরই বাংলাদেশের অনার্সের ছাত্ররা ভালো ভালো জার্নালে পেপার পাবলিশ করে থাকে। কম্পিউটার সাইন্সের গবেষণার একটা সুবিধা হলো নিজের ডেস্কটপ কম্পিউটার ব্যবহার করেই বড় বড় গবেষণা করে ফেলা যায়, কোটি টাকা যন্ত্রপাতির দরকার হয় না(অবশ্যই দরকার হয়, তবে সেগুলো ছাড়াও অনেক কাজ করা যায়)। কম্পিউটার সায়েন্স/আইসিটি অনার্স করে তুমি চাইলে অন্যান্য বিষয় নিয়েও পড়ালেখা করতে পারো কারণ এখন সবকাজে কম্পিউটার দরকার হয়। যেমন রিসেন্টলি অ্যাস্ট্রোইনফরমেটিক্স নামের একটা সাবজেক্ট নিয়ে গবেষণা হচ্ছে, এদের কাজ মহাকাশ গবেষণায় কম্পিউটারকে আরো ভালোভাবে কিভাবে ব্যবহার করা যায় সেটা নিয়ে কাজ করা। তুমি চাইলে ফিজিক্সের লাইনে গিয়ে কোয়ান্টাম কম্পিউটার নিয়ে কাজ করতে পারো। আবার বায়োলজী ভালো লাগলে বায়োইনফরমেটিক্স নিয়ে পড়ালেখা করতে পারো, কাজ করতে পারবো ন্যানোটেকনোলজী, ডিএনএ/প্রোটিন অ্যানালাইসিস নিয়ে। এরকম হাজারটা সম্ভাবনা তোমার সামনে থাকবে। আশা করি লেখাটা পড়ার পর কম্পিউটার সায়েন্সে/আইসিটিতে কি পড়ানো হয় সে সম্পর্কে একটা ধারণা তৈরি হয়েছে এবং ভূল ধারণাগুলো ভেঙে গিয়েছে। চাকরির বাজার নিয়ে কিছু বলবোনা, যে আগেই চাকরির চিন্তা করে সাবজেক্ট চয়েস করে তার জন্য এ লেখা নয়, তবে তারপরেও শুধু বলে রাখি বর্তমানে কম্পিউটার সায়েন্স পরে আমি কাওকে বেকার বসে থাকতে দেখিনি। ভর্তি পরীক্ষার্থীদের বলবো, যেসব সাবজেক্ট পড়ার কথা ভাবছো প্রতিটা সম্পর্কে ভালোভাবে জানার চেষ্টা করো, সেখানে কি কি পড়ানো হয় সেটা খোজ নাও, এবং যদি সেগুলো তোমার সত্যিই পছন্দ হয় তাহলেই ভর্তি হয়ে যাও, কোনো সাবজেক্টই ১ নম্বর-২ নম্বর না, ইলেক্ট্রিকাল মোটেও মেকানিকালের থেকে “ভালো সাবজেক্ট” না, সেটাই তোমার কাছে “ভালো সাবজেক্ট” যেটা তোমার পছন্দ, সেটা যদি পুষ্টিবিজ্ঞানের মতো মানুষের চোখে পিছের দিকের সাবজেক্ট হয় তাহলেও সেটা ভালো, মানুষই তৈরি বিভাজন অনুসরণ করলে নিজের সাথে প্রতারণা করা হয়। এই সাবজেক্ট এ পড়ার আগে ভালো করে জেনে রাখবাঃ এ সেক্টরে মামা-খালু-নগত পাতি দিয়ে তেমন কোন সুবিধা করা যায় না যদি নিজের ঘিলুতে কিছু না থাকে।কম্পিউটার সায়েন্স/আইসিটি একটা অদ্ভুত বিষয়। বাংলাদেশে এই বিষয়ে গ্র্যাজুয়েশন করার পরে কেউ কেউ সরাসরি গুগল, ফেসবুক, অ্যামাজন, মাইক্রোসফটে চলে যায়। এছাড়াও এশিয়া ও ইউরোপ-আমেরিকার বিভিন্ন কোম্পানীতেও যায়। এসব জায়গায় একজন ফ্রেশ গ্র্যাজুয়েটের বেতন হয় জায়গাভেদে তিন থেকে সাত লক্ষ টাকা! তাহলে তো সবারই সিএসই পড়া উচিত। কিন্তু আসলে বেশিরভাগ শিক্ষার্থী পাশ করার পরে দশ হাজার টাকা বেতনের চাকরি জোটাতেই হিমশিম খায়, গুগল-ফেসবুক তো অনেক দূরের কথা। দেশের মধ্যেও যারা চাকরি পায়, তাদের কারো কারো বেতন শুরুতে ৫০-৬০ হাজার টাকা। আর কারো কারো বেতন ১০-১৫ হাজার টাকা। এর কারণ কী? এত বৈষম্য কেন? সবই কি মামা-চাচার জোর? কারণটা হচ্ছে দক্ষতা। আশা করছি ব্যাপারটা ক্লিয়ার করতে পেরেছি।

সকল ভর্তি পরীক্ষার্থীদের প্রতি শুভকামনা, আশা করি আইসিটি নিয়ে আর কোন কনফিউশন থাকবে না।

Revel Yusuf

ICT-01 Batch,BUP.

Uncategorized

বাবল সর্ট অ্যালগরিদম – Bubble Sort Algorithm… পাইথনে ইমপ্লিম্যান্টেশন।

বাবল সর্ট নিয়ে ভাবলাম একটা পোস্ট লিখবো। হঠাৎ হাসান ভাইয়ের ব্লগটা দেখলাম। আমি যা লিখব ভেবেছি তার চাইতেও অনেক সুন্দর  উদাহরন দিয়ে বুজিয়েছেন ভাই। তাই উনার পোস্ট টাই নিচে তুলে ধরলামঃ

” ধরো, তোমাকে ১০০০, ৫০০, ১০০, ৫০, ২০, ১০ ইত্যাদি টাকার কিছু নোট দিলাম। বললাম সবগুলো নোট ও সিকি-আধুলি যা দেয়া হয়েছে সবগুলোকে ছোট থেকে বড় আকারে সাজাও। তখন তুমি কী করবে?

Bubble Sort
Bubble Sort. Photo Credit: Wikipedia

প্রথমে দেখবে সবচেয়ে বড় নোটটা কত? এটাকে সবার শেষে পাঠাবে। অর্থাৎ ১০০০ টাকার নোটটা সবার শেষে চলে যাবে। এরপর এই ১০০০ টাকার নোট বাদে যেই নোটগুলো তোমার হাতে আছে এগুলোর মধ্যে সবচেয়ে বড়টাকে ১০০০ টাকার নোটের আগে স্থান দিবে। ধর সেই নোটটা ৫০০ টাকার। তাহলে তুমি দুইটা ধাপে দুইটা নোটকে জায়গা মত প্লেস করতে পেরেছ। প্রথম ধাপের কাজ শেষ হবার পর তোমার টাকার বান্ডিলের সর্বশেষ নোটটি (element-টি) ঠিক ঠাক মত সাজানো হয়ে গেছে (sorted)। দ্বিতীয় ধাপে ৫০০ টাকাকে যখন ১০০০ এর আগে প্লেস করলে তখন তোমার টাকার বান্ডিলের সর্বশেষ দুটি ইলিমেন্ট সজ্জিত বা sorted হয়ে গেছে। এভাবে প্রতিটি ধাপে একটি করে নোট তার নিজ পজিশনে বসে যাবে। আর একটা নোট তার নিজ পজিশনে বসার পর সেটা থেকে শেষ পর্যন্ত সবগুলো নোটই সাজানো অবস্থায় থাকে (ধরো, …, ১০০, ৫০০, ১০০০)। তাই পরের ধাপে বাকি যে কটা নোট সাজানো হয় নি সেগুলোর থেকে সবচেয়ে বড়টাকে তার নিজ পজিশনে বসাতে হবে। এভাবে সাজাতে সাজাতে যদি কোন একটা ধাপে এমন পাওয়া যায় যে কোন নোটকে সাজানোর জন্য তাকে সামনে বা পিছনে নিতে হচ্ছে না তাহলে বুঝতে হবে তোমার সব নোটগুলো সাজানো হয়ে গেছে। এভাবে তোমার হাতে যদি ১০টা নোট থাকে তাহলে সর্বোচ্চ ৯ টা ধাপে তুমি সবগুলো নোটকে সাজিয়ে ফেলা যাবে।

এই নোট সাজানোর জটিলতম (!) কাজটা তুমি জীবনে কখনো না কখনো করেছ। যদি করে থাক তার মানে তুমি অলরেডি বাবল সর্ট জানো। উপরের যেই পদ্ধতিতে নোটগুলোকে সাজানো হল কম্পিউটার সায়েন্সে এই পদ্ধতির নামই বাবল সর্ট এলগরিদম। Bubble Sort এর আরেক নাম Sinking Sort. ” উপরের স্টেপগুলোই কোড আকারে লিখা যায় এভাবেঃ

bubble sort

হাসান ভাইয়ের বাবল সর্ট পোস্টের লিঙ্কঃ

https://hellohasan.com/2016/10/18/%E0%A6%AC%E0%A6%BE%E0%A6%AC%E0%A6%B2-%E0%A6%B8%E0%A6%B0%E0%A7%8D%E0%A6%9F-%E0%A6%85%E0%A7%8D%E0%A6%AF%E0%A6%BE%E0%A6%B2%E0%A6%97%E0%A6%B0%E0%A6%BF%E0%A6%A6%E0%A6%AE-bubble-sort-algorithm/

Uncategorized

Codenza

Basics:2

Python3: Access and print a URL’s content to the console:

import urllib.request
url = urllib.request.urlopen("http://www.facebook.com")
data = url.read()
print(data

this is much efficient 😉

 Basics03: Access Environment Variable:

import os
print('*....................................................*')
print(os.environ)
print('*....................................................*')
print(os.environ['HOME'])
print('*....................................................*')
print(os.environ['PATH'])
print('*....................................................*')
Uncategorized

বাইনারি সার্চ অ্যালগরিদম – Binary Search Algorithm

binary search.jpg

#বাইনারি সার্চ অ্যালগরিদম – Binary Search Algorithm ইমপ্লিমেন্টেশন ইন পাইথন ঃ

লিনিয়ার সার্চ অ্যালগরিদমে আমারা দেখেছি কিভাবে  একটা লিস্ট থেকে   একটা একটা   করে  ইলিমেন্ট গুলোকে সিকুয়েন্সিয়েলি চেক করে কাঙ্ক্ষিত আইটেমকে খুঁজে বের করা যায়। কিন্তু এই পদ্ধতিতে আইটেমকে খুঁজে বের করা অনেক কমপ্লেক্স হয়ে যায়। ৫/১০/২০ টা লিস্টের আইটেম হয়ত  খুব সহজে খুঁজে বের করা যাবে কিন্তু আমাকে যদি ১০০০টা আইটেম দিয়ে এখান থেকে যেকোনো একটা আইটেম খুঁজে বের করতে বলে তাহলে আমি যদি  লিনিয়ার সার্চ অ্যালগরিদমে সার্চ করি তাহলে আমাকে ১০০০ বার চেক করতে হবে যা আমার পক্ষে প্রায় অসম্ভব। এতে আমার প্রোগ্রাম কমপ্লিক্সিটি অনেক বেড়ে যাবে । আর  এই  কমপ্লিক্সিটি কমানোর জন্যই আমাদের  বাইনারি সার্চ অ্যালগরিদম পদ্ধতি অনুসরণ করা ।

বাইনারি সার্চ অ্যালগরিদম কি? 

বাইনারি সার্চ অ্যালগরিদম হচ্ছে একটি  দ্রুত সার্চ  অ্যালগরিদম। এই  সার্চ  অ্যালগরিদম ডিভাইড  এন্ড কনকয়ের প্রসেস এর ভিত্তিতে কাজ করে। এই  অ্যালগরিদম তখনি কাজ করবে যখন কোন লিস্ট/এরে সরটেড/সাজানো  আকারে থাকবে । এর  কমপ্লিক্সিটি হচ্ছে  Ο(log n) যা লিনিয়ার সার্চ অ্যালগরিদমের কমপ্লিক্সিটির  O(n) এর চেয়ে অনেক ইফিসিয়েন্ট ।

একটা লিস্টকে বাইনারি সার্চ তিনটা পার্ট এ  ভাগ করেঃ ১) Low ২)  Mid  ৩) High

binsearch

মনে করি আমাদেরকে উপরের  এই লিস্ট টা দেয়া হয়েছে এবং বলা হল এর মধ্য থেকে ১৩কে খুঁজে বের করতে। প্রথমে আমরা লিস্ট থেকে মিড বের করবো। লো আর হাই তো দেখতেই পাচ্ছি। মিড বের করার জন্যে একটা সুত্র আছে ঃ  mid = low + (high – low) / 2  তাহলে আমাদের মিড হবে ঃ মিড=০+(৭-০)/২ =৩.৫ যেহেতু  ইন্ডেক্সিং  এ  ৩.৫ বলতে কিছু নাই, তাই আমরা এখানে ৩ কেই আমাদের মিড বিবেচনা করবো ।

এখন আমরা এই মিডের আইটেমের সাথে আমাদের ১৩(খুজতে চাচ্ছি) এর তুলনা করবো। যেহেতু ১৩>৭ তাই আমরা এখন মিড এর ডান দিকের অংশে খুঁজবো। বামদিক আর খুজতে হবে না কারন আমরা এখন নিশ্চিত যে বাম দিকে আমাদের ১৩ থাকতে পারে না।

এবার আবার আমরা  মিড আইটেম(৭) কে বাদ দিবো কারন ৭<১৩। এবং ইনডেক্স ৪ থেকে ৭  এর মধ্যে আমাদের আইটেম কে খুঁজবো।  এখন আমরা চিন্তা করি যে ৪  আমাদের low আর ৭ আমাদের high তাহলে আমাদের মিড হবে ঃ মিড = ৪+(৭-৪)/২= ৫.৫ মানে ৫ নাম্বার ইনডেক্স  ই হবে  আমাদের মিড। এখন আমরা আমদের মিডের ভেলুর  সাথে আমাদের আইটেম এর তুলনা করবো। যদি সমান হয় তাহলে তার ইনডেক্স নাম্বার রিটার্ন করবো। এখানে আমাদের মিড ভেলু =আমাদের আইটেম। তাহলে আমরা এখন মিড এর ইনডেক্সকে রিটার্ন করবো। তারমানে আমরা ১৩কে খুঁজে পেয়েছি ৫ নাম্বার ইনডেক্স এ । এখন আমাদের প্রোগ্রাম এই ইনডেক্স নাম্বারকেই প্রিন্ট করে দেখাবে। তাহলেই আমাদের কাজ শেষ। বিঃদ্রঃ কেউ আবার ইনডেক্স আর আইটেম এর মধ্যে গোলমাল পাকিয়ে ফেলোনা। তাইলে ভুল হবে সিউর।

বাইনারি সার্চ আর লিনিয়ার সার্চ এর মধ্যে কম্পারিজন টা দেখতে পারো  ঃ

Binary Search and Linear Search comparison

এখন আশা করি সহজেই বুঝতে পারতেসো যে কেনো আমরা বাইনারি সার্চ অ্যালগরিদম ব্যাবহার করবো।

কোড ইমপ্লিমেন্টেশনঃ 

তুমি যদি থিউরিটা ভালভাবে বুঝতে পারো তাহলে কোড ইমপ্লিমেন্ট করাটা বেশি যামেলার মনে হবে না।সহজেই পারবা।

binary search

binary

Any Suggestion or query: https://www.facebook.com/RevelYusuf

 

 

 

 

 

 

 

 

 

 

 

 

Uncategorized

পাইথন প্রোগ্রামিং এর ইতিহাস !

python2

পাইথন (Python) একটি বস্তু-সংশ্লিষ্ট (object-oriented) উচ্চস্তরের প্রোগ্রামিং ভাষা। ১৯৯১ সালে গুইডো ভ্যান রস্যিউম এটি প্রথম প্রকাশ করেন। পাইথন নির্মাণ করার সময় প্রোগ্রামের পঠনযোগ্যতার উপর বেশি গুরুত্ব দেয়া হয়েছে। এখানে প্রোগ্রামারের পরিশ্রমকে কম্পিউটারের চেয়ে বেশি গুরুত্ব দেয়া হয়েছে। পাইথনের কোর সিনট্যাক্স ও সেমান্টিক্‌স খুবই সংক্ষিপ্ত, তবে ভাষাটির স্ট্যান্ডার্ড লাইব্রেরি অনেক সমৃদ্ধ। পাইথন প্রোগ্রামারদের সমাজ থেকে পাইথন দর্শন এর সূচনা হয়েছে।

পাইথন একটি বহু-প্যারাডাইম প্রোগ্রামিং ভাষা (ফাংশন-ভিত্তিক, বস্তু-সংশ্লিষ্ট ও নির্দেশমূলক) এবং এটি একটি পুরোপুরি চলমান প্রোগ্রামিং ভাষা যার স্বনিয়ন্ত্রিত মেমরি ব্যবস্থাপনা রয়েছে। এদিক থেকে এটি পার্ল, রুবি প্রভৃতি প্রোগ্রামিং ভাষার মত।

পাইথন ভাষার মুক্ত, কমিউনিটি-ভিত্তিক উন্নয়ন মডেল রয়েছে, যার দায়িত্বে আছে পাইথন সফটওয়্যার ফাউন্ডেশন নামের একটি অলাভজনক প্রতিষ্ঠান। এই ভাষাটির বিভিন্ন অংশের বিধিবদ্ধ বৈশিষ্ট্য ও আদর্শ থাকলেও পুরো ভাষাটিকে এখনো সম্পূর্ণ বিধিবদ্ধ করা হয়নি। তবে কার্যত সিপাইথন ভাষাটির আদর্শ বাস্তবায়িত রূপ।

ইতিহাসঃ 

১৯৮০ দশকের শেষের দিকে পাইথনের জন্ম দেন নেদারল্যান্ডের সিডব্লিউআই’র গবেষক গুইডো ভ্যান রস্যিউম। মূলত এবিসি’র উত্তরসূরী হিসেবে পাইথনের আবির্ভাব হয়েছে যা এক্সেপশন হ্যান্ডলিং করতে এবং অ্যামিবা অপারেটিং সিস্টেমের সাথে কাজ করতে সক্ষম ছিল। ভ্যান রস্যিউম পাইথনের প্রধান লেখক এবং বর্তমানে পাইথনের উন্নয়নে তিনিই প্রধানত নেতৃত্ব দিচ্ছেন। তাঁকে পাইথনের আজীবন পরিচালক হিসেবে সম্মান দেয়া হয়েছে।

১৯৯১ সালে ভ্যান রস্যিউম পাইথনের কোড প্রকাশ করেন (ভার্শন ০.৯.০)। পাইথন ডিজাইনের এই ধাপেই ক্লাস ইনহেরিটেন্স, এক্সেপশন হ্যান্ডলিং, ফাংশন, ও প্রধান ডাটা টাইপ list, dict, str প্রভৃতি সংযুক্ত ছিল। এই প্রাথমিক প্রকাশে ছিল মডুলা-৩ থেকে ধার করা মডিউল সিস্টেম; ভ্যান রোসাম এই মডিউলকে “পাইথনের মূল প্রোগ্রামিং ইউনিটের একটি” আখ্যায়িত করেছেন। পাইথনের এক্সেপশন মডেলটিও অনেকটা মডুলা-৩’র মত যাতে কেবল অতিরিক্ত else যুক্ত হয়েছে। ১৯৯৪ সালে পাইথনের প্রধান ফোরাম comp.lang.python গঠিত হয়, এবং পাইথনের ব্যবহারকারীদের জন্য তা মাইলফলক হিসেবে চিহ্নিত হয়।

১৯৯৪ সালের জানুয়ারি পাইথন ১.০ সংস্করনে প্রবেশ করে। এই সংস্করনে যে প্রধান বিষয়াদি যুক্ত হয় তা হলো ফাংশনাল প্রোগ্রামিং টুলস lambda, map, filterreduce। ভ্যান রস্যিউম বলেন “পাইথন lambda, reduce(), filter() ও map() অধিকার করেছে, (আমি বিশ্বাস করি) একজন লিস্প হ্যাকারের কাছ থেকে যে নিজেকে এগুলো থেকে বঞ্চিত মনে করছিল এবং কর্মক্ষম প্যাচগুলো সরবরাহ করেছে।” এর প্রধান অবদানকারী ছিলেন অমৃত প্রেম; এবং এর প্রকাশ নোটে সে সময় কোন লিস্প প্রোগ্রামের উত্তরসূরী হওয়ার উল্লেখ করা হয়নি।

সিডব্লিউআই থেকে প্রকাশিত সর্বশেষ সংস্করন হচ্ছে পাইথন ১.২। ১৯৯৫ সালে ভ্যান রস্যিউম ভার্জিনিয়ার কর্পোরেশন ফর ন্যাশনাল রিসার্চ ইনিশিয়েটিভস (সিএনআরআই) প্রতিষ্ঠান থেকে পাইথনের ওপর তার কাজ চালিয়ে যেতে থাকেন এবং এখান থেকে সফটওয়ারটির কয়েকটি সংস্করন বের করেন।

১.৪ সংস্করনের মধ্যে পাইথনের কিছু নতুন বৈশিষ্ঠ্য যোগ করা হয়। এর মধ্যে উল্লেখযোগ্য হলো মডুলা-৩ থেকে উদ্বুদ্ধ হয়ে গ্রহণ করা নতুন কিওয়ার্ড আর্গুমেন্ট (keyword argument) (যা কমন লিস্প এর কিওয়ার্ড আর্গুমেন্টের সাথে অনেকটা মেলে), এবং জটিল সংখ্যার জন্য অভ্যন্তরীন সমর্থন। এছাড়া তথ্য লুকানোর জন্যও একটি বিশেষ ব্যবস্থা ছিল, যদিও তা তেমন কঠিন কিছু ছিলনা।

সিএনআরআই তে থাকাকালীন ভ্যান রস্যিউম কম্পিউটার প্রোগ্রামিং ফর এভরিবডি (সিপি৪ই) উদ্যোগ গ্রহণ করেন, যাতে আরো অনেক মানুষ কম্পিউটার প্রোগ্রামিং এর সুবিধা গ্রহণ এবং অল্প মৌলিক প্রোগ্রামিং জ্ঞানের (ইংরেজি ও গণিতের জন্য সাধারণ যে জ্ঞান থাকা প্রয়োজন) মাধ্যমে ছোটখাট সমস্যা সমাধান করতে পারে। পাইথন এক্ষেত্রে কেন্দ্রীয় ভূমিকা পালন করেছে যার মূল কারণঃ এর পরিষ্কার সিনট্যাক্সের প্রতি মনোযোগ, এর ব্যবহার উপযোগিতা এবং সিপি৪ই এর লক্ষ্যের সাথে পাইথনের পূর্বসূরী এবিসির লক্ষ্যের মিল। এই প্রকল্পের অর্থায়ন করে DARPA।এই ২০০৭ সাল পর্যন্ত সিপি৪ই প্রকল্প নিস্ক্রিয় রয়েছে এবং অন্যদিকে পাইথন সাধারণ মানুষের জন্য সহজে শিখার মত প্রোগ্রামিং ভাষা তৈরির লক্ষ্য থেকে অনেকটাই দূরে সরে গেছে। এটা এখন আর পাইথনের জন্য সক্রিয় বিবেচ্য নয়।

২০০০ সালে পাইথনের মূল উন্নয়নকারী দল বিওপেন.কম এর সাথে যুক্ত হয়ে যৌথভাবে বিওপেন পাইথনল্যাবস গঠন করে। সিএনআরআই পাইথনের একটি সংস্করন ১.৬ প্রকাশের অনুরোধ করেছিল যা মূলত এ পর্যন্ত সিএনআরআইতে পাইথনের যেটুকু উন্নয়ন হয়েছে তার সম্মিলিত প্রকাশ। একারণে পাইথনের ১.৬ ও ২.০ সংস্করনের মধ্যে অনেক বিলম্ব ঘটেছিল। পাইথন ২.০ ছিল বিওপেন.কম থেকে প্রকাশিত প্রথম ও একমাত্র পাইথন ডিস্ট্রিবিউশন। পাইথন ২.০ প্রকাশিত হওয়ার পর গুইডো ভ্যান রোসাম ও অন্যান্য পাইথনল্যাবস কর্মীরা ডিজিটাল ক্রিয়েশন্‌স এ যোগ দেন।

পাইথন ২.০ তার বিভিন্ন বৈশিষ্টের অনেকাংশই ধার করেছে ফাংশনভিত্তিক প্রোগ্রামিং ভাষা হ্যাস্কেল থেকে। হ্যাস্কেলের লিস্ট ও পাইথনের মধ্যে অনেক মিল রয়েছে যদিও হ্যাস্কেল যতিচিহ্নকে বেশি গুরুত্ব দেয় আর পাইথন গুরুত্ব দেয় বর্ণভিত্তিক কিওয়ার্ড এর উপর। পাইথন ২.০ তে গারবেজ কালেকশন ব্যবস্থা যুক্ত হয়েছে যা নিয়মিত ভাবে মেমরি পরিষ্কার করতে সক্ষম।

এই দ্বৈত প্রকাশের পর ও ভ্যান রস্যিউমের সিএনআরআই ত্যাগ করে বাণিজ্যিক সফটওয়ার নির্মাতাদের সাথে যুক্ত হবার পর পরিষ্কার হয়ে যায় যে, জিপিএল লাইসেন্সের অধীনে পাইথন সফটওয়ারের ব্যবহারের খুবই প্রয়োজনীয়। সে সময় যে লাইসেন্স ব্যবহৃত হত তা ছিল পাইথন লাইসেন্স। এতে একটি সংযুক্তি ছিল যাতে বলা থাকে এই লাইসেন্স ভার্জিনিয়া রাজ্যের নিয়ন্ত্রনাধীন যারা এটা তৈরি করেছে। ফ্রি সফটওয়ার ফাউন্ডেশনের (এফএসএফ) আইনজীবিদের মতে এই লাইসেন্স গনু জিপিএলের সাথে সঙ্গতিপূর্ণ নয়। সিএনআরআই ও এফএসএফ একত্রিত হয়ে পাইথনের লাইসেন্সে পরিবর্তন আনেন যাতে এটা জিপিএলের সাথে সঙ্গতিপূর্ণ হয়। একই বছর (২০০১) ভ্যান রোসামকে এফএসএফ অ্যাওয়ার্ড ফর দ্য অ্যাডভান্সমেন্ট ওব ফ্রি সফটওয়ার পুরস্কার দেয়া হয়।

পাইথন ১.৬.১ আসলে শুধুই পাইথন ১.৬ যাতে কিছুটা ত্রুটি মুক্ত করা হয়েছে এবং নতুন জিপিএল-সঙ্গতিপূর্ণ লাইসেন্স রয়েছে।

সিনট্যাক্স বর্ণায়িত পাইথন কোড

পাইথন ২.১ তৈরি করা হয়েছে পাইথন ১.৬.১ ও পাইথন ২.০ এর উপর ভিত্তি করে। এর লাইসেন্সের নাম পরিবর্তন করে রাখা হয় পাইথন সফটওয়ার ফাউন্ডেশন লাইসেন্স। পাইথন ২.১ এর প্রকাশের পর এগুলোর সমস্ত কোড, ডকুমেন্টেশন ও স্পেসিফিকেশন পাইথন সফটওয়ার ফাইন্ডেশন (পিএসএফ) এর অধীনে চলে আসে। অলাভজনক প্রতিষ্ঠান হিসেবে পিএসএফ গঠন করা হয় ২০০১ সালে। এটির ব্যবস্থাপনা ও গঠন অ্যাপাচি সফটওয়ার ফাউন্ডেশনের আদলে করা হয়।এই ভার্শনে স্ট্যাটিক স্কোপিং নিয়মাবলী (যেটির মূল প্রবক্তা হচ্ছে স্কিম নামে একটি প্রোগ্রামিং ভাষা) যোগ করা হয়, যদিও প্রথম দিকে এটি বাধ্যতামূলক ও সাধারনভাবে সক্রিয় ছিল না।

পাইথন ২.২ এর একটি প্রধান উদ্ভাবন হচ্ছে পাইথনের বিভিন্ন টাইপ (সি তে লেখা টাইপসমূহ) ও ক্লাসের (পাইথনে লেখা টাইপসমূহ) একই গঠনের আওতায় নিয়ে আসা। এর ফলে পাইথনের অবজেক্ট মডেল অনেক স্থিতিশীল ও প্রকৃত অবজেক্ট ওরিয়েন্টেড হয়েছে।এতে আরও যুক্ত করা হয়েছে জেনারেটর যেটি আইকন নামে একটি ভাষায় প্রথম ব্যবহৃত হয়েছে।

পাইথনের স্ট্যান্ডার্ড লাইব্রেরি ও সিনট্যাক্টিক্যাল ব্যবহার জাভা থেকে অনুপ্রাণিত হয়েছে। কোন কোন ক্ষেত্রে যেমনঃ logging প্যাকেজ, যা যুক্ত হয় ২.৩ ভার্সনে,স্যাক্স পার্সার যা ২.০ সংস্করনে যুক্ত হয় এবং ডেকোরেটর সিনট্যাক্স যা @ ব্যবহার করে এবং ২.৪ সংস্করনে যুক্ত হয়added in version 2.4ইত্যাদি।

ব্যবহারঃ 

geekswipe-python-twitter-bot-source-photo-by-karthikeyan-kc

যে সকল বড় বড় প্রকল্পে পাইথন ব্যবহৃত হয়েছে তার মধ্যে জোপ অ্যাপ্লিকেশন সার্ভার, এমনেট ডিস্ট্রিবিউটেড ফাইল স্টোর, ইউটিউব এবং মূল বিটটরেন্ট ক্লায়েন্ট উল্লেখযোগ্য। যে সমস্ত বড় প্রতিষ্ঠান পাইথন ব্যবহার করে তাদের মধ্যে গুগলও নাসাউল্লেখযোগ্য।

তথ্য নিরাপত্তা শিল্পে পাইথনে বহুবিধ ব্যবহার লক্ষনীয়। এর মধ্যে ইমিউনিটি সিকিউরিটির কিছু টুলস,কোর সিকিউরিটির কিছু টুলস, ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা স্ক্যানার ওয়াপিটি, ও ফাজার টিএওএফবিশেষভাবে উল্লেখযোগ্য। সাধারণত দ্রুত সফটওয়ার নির্মাণের জন্য পাইথন ব্যবহৃত হয়।দিন দিন এর ব্যাবহার ক্রমেই বেড়ে যাচ্ছে। এর সাধারন গঠনশৈলী একে সবার কাছে দ্রত গ্রহণযোগ্য করে তুলছে।

 

ইন্‌ডেন্‌টেশনঃ

পাইথন কোডের একটি ব্লক বোঝাতে ব্রাকেট বা কীওয়ার্ডের পরিবর্তে হোয়াইটস্পেস ইন্‌ডেন্‌টেশন ব্যবহার করে। এই ব্যবস্থাটিকে অফ-সাইড নিয়ম বলা হয়। কোন একটি ব্লক বোঝাতে ইন্‌ডেন্‌টেশন বেশি করা হয়। আবার চলতি ব্লক শেষ বোঝাতে কম ইন্‌ডেন্‌টেশন করা হয়।

স্টেট্‌মেন্ট এবং কন্ট্রোল ফ্লোঃ

পাইথনে যেসব স্টেট্‌মেন্ট আছে তার মধ্যে অন্যতম হল-

  • if স্টেট্‌মেন্ট যা else এবং elif (else if এর সংক্ষিপ্ত রূপ) এর সাথে কোডের একটি ব্লক শর্তের উপর ভিত্তি করে এক্সিকিউট করে।
  • while স্টেট্‌মেন্ট যা কোডের একটি ব্লক এক্সিকিউট করে যতক্ষণ পর্যন্ত এর শর্ত পূরণ হতে থাকে।
  • def স্টেট্‌মেন্ট যা একটি ফাংশন অথবা মেথড লেখার জন্য ব্যবহৃত হয়।
  • yeild স্টেট্‌মেন্ট যা একটি জেনারেটর ফাংশন থেকে মান পাঠায়। পাইথন ২.৫ থেকে yield কে অপারেটর এর মধ্যেও অন্তর্ভুক্ত করা হয়েছে। এটি করা হয়েছে মূলত কোরুটিন বাস্তবায়নের জন্য।

অন্যান্য সুবিধাদিঃ 

CPython’s interactive mode, used via IDLE

পাইথনের নিজস্ব বহু মডিউল ও লাইব্রেরি থাকা সত্বেও বিশেষ ধরনের কাজের জন্য বিশেষভাবে তৈরি বিভিন্ন প্যাকেজ পাওয়া যায়। যেমনঃ বায়োইনফর্মেটিক্স বিষয়ক কাজের জন্য রয়েছে BioPython, গ্রাফিকেল ইন্টারফেস প্রোগ্রামিং এর জন্য PyGTK, ইমেজ প্রসেসিং এর জন্য OpenCVইত্যাদি।