Friday 15 April 2016

                                           

                      পাইথন (প্রোগ্রামিং ভাষা)


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

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

নামকরণ

পাইথন প্রোগ্রামিং ভাষার নামকরণ করা হয়েছে ব্রিটিশ রম্য অনুষ্ঠান "মন্টি পাইথন ফ্লাইং সারকাসের" নামে।

ইতিহাস


পাইথন এর উদ্ভাবক, গুইডো ভ্যান রস্যিউম
১৯৮০ দশকের শেষের দিকে পাইথনের জন্ম দেন নেদারল্যান্ডের সিডব্লিউআই'র গবেষক গুইডো ভ্যান রস্যিউম।মূলত এবিসি'র উত্তরসূরী হিসেবে পাইথনের আবির্ভাব হয়েছে যা এক্সেপশন হ্যান্ডলিং করতে এবং অ্যামিবা অপারেটিং সিস্টেমের সাথে কাজ করতে সক্ষম ছিল।ভ্যান রস্যিউম পাইথনের প্রধান লেখক এবং বর্তমানে পাইথনের উন্নয়নে তিনিই প্রধানত নেতৃত্ব দিচ্ছেন। তাঁকে পাইথনের আজীবন পরিচালক হিসেবে সম্মান দেয়া হয়েছে।
১৯৯১ সালে ভ্যান রস্যিউম পাইথনের কোড প্রকাশ করেন (ভার্শন ০.৯.০)।পাইথন ডিজাইনের এই ধাপেই ক্লাস ইনহেরিটেন্স, এক্সেপশন হ্যান্ডলিং, ফাংশন, ও প্রধান ডাটা টাইপ listdictstr প্রভৃতি সংযুক্ত ছিল। এই প্রাথমিক প্রকাশে ছিল মডুলা-৩ থেকে ধার করামডিউল সিস্টেম; ভ্যান রোসাম এই মডিউলকে "পাইথনের মূল প্রোগ্রামিং ইউনিটের একটি" আখ্যায়িত করেছেন।পাইথনের এক্সেপশন মডেলটিও অনেকটা মডুলা-৩'র মত যাতে কেবল অতিরিক্ত else যুক্ত হয়েছে।১৯৯৪ সালে পাইথনের প্রধান ফোরাম গঠিত হয়, এবং পাইথনের ব্যবহারকারীদের জন্য তা মাইলফলক হিসেবে চিহ্নিত হয়।
১৯৯৪ সালের জানুয়ারি পাইথন ১.০ সংস্করনে প্রবেশ করে। এই সংস্করনে যে প্রধান বিষয়াদি যুক্ত হয় তা হলো ফাংশনাল প্রোগ্রামিং টুলসlambdamapfilter ও reduce। ভ্যান রস্যিউম বলেন "পাইথন lambda, reduce(), filter() ও map() অধিকার করেছে, (আমি বিশ্বাস করি) একজনলিস্প হ্যাকারের কাছ থেকে যে নিজেকে এগুলো থেকে বঞ্চিত মনে করছিল এবং কর্মক্ষম প্যাচগুলো সরবরাহ করেছে।"[৬] এর প্রধান অবদানকারী ছিলেন অমৃত প্রেম; এবং এর প্রকাশ নোটে সে সময় কোন লিস্প প্রোগ্রামের উত্তরসূরী হওয়ার উল্লেখ করা হয়নি।
সিডব্লিউআই থেকে প্রকাশিত সর্বশেষ সংস্করন হচ্ছে পাইথন ১.২। ১৯৯৫ সালে ভ্যান রস্যিউম ভার্জিনিয়ার কর্পোরেশন ফর ন্যাশনাল রিসার্চ ইনিশিয়েটিভস(সিএনআরআই) প্রতিষ্ঠান থেকে পাইথনের ওপর তার কাজ চালিয়ে যেতে থাকেন এবং এখান থেকে সফটওয়ারটির কয়েকটি সংস্করন বের করেন।
১.৪ সংস্করনের মধ্যে পাইথনের কিছু নতুন বৈশিষ্ঠ্য যোগ করা হয়। এর মধ্যে উল্লেখযোগ্য হলো মডুলা-৩ থেকে উদ্বুদ্ধ হয়ে গ্রহণ করা নতুন কিওয়ার্ড আর্গুমেন্ট (keyword argument) (যা কমন লিস্প এর কিওয়ার্ড আর্গুমেন্টের সাথে অনেকটা মেলে), এবং জটিল সংখ্যার জন্য অভ্যন্তরীন সমর্থন। এছাড়া তথ্য লুকানোর জন্যও একটি বিশেষ ব্যবস্থা ছিল, যদিও তা তেমন কঠিন কিছু ছিলনা।[৭]
সিএনআরআই তে থাকাকালীন ভ্যান রস্যিউম কম্পিউটার প্রোগ্রামিং ফর এভরিবডি (সিপি৪ই) উদ্যোগ গ্রহণ করেন, যাতে আরো অনেক মানুষ কম্পিউটার প্রোগ্রামিং এর সুবিধা গ্রহণ এবং অল্প মৌলিক প্রোগ্রামিং জ্ঞানের (ইংরেজি ও গণিতের জন্য সাধারণ যে জ্ঞান থাকা প্রয়োজন) মাধ্যমে ছোটখাট সমস্যা সমাধান করতে পারে। পাইথন এক্ষেত্রে কেন্দ্রীয় ভূমিকা পালন করেছে যার মূল কারণঃ এর পরিষ্কার সিনট্যাক্সের প্রতি মনোযোগ, এর ব্যবহার উপযোগিতা এবং সিপি৪ই এর লক্ষ্যের সাথে পাইথনের পূর্বসূরী এবিসির লক্ষ্যের মিল। এই প্রকল্পের অর্থায়ন করে DARPA[৮] এই ২০০৭ সাল পর্যন্ত সিপি৪ই প্রকল্প নিস্ক্রিয় রয়েছে এবং অন্যদিকে পাইথন সাধারণ মানুষের জন্য সহজে শিখার মত প্রোগ্রামিং ভাষা তৈরির লক্ষ্য থেকে অনেকটাই দূরে সরে গেছে। এটা এখন আর পাইথনের জন্য সক্রিয় বিবেচ্য নয়।[৯]
২০০০ সালে পাইথনের মূল উন্নয়নকারী দল বিওপেন.কম এর সাথে যুক্ত হয়ে যৌথভাবে বিওপেন পাইথনল্যাবস গঠন করে। সিএনআরআই পাইথনের একটি সংস্করন ১.৬ প্রকাশের অনুরোধ করেছিল যা মূলত এ পর্যন্ত সিএনআরআইতে পাইথনের যেটুকু উন্নয়ন হয়েছে তার সম্মিলিত প্রকাশ। একারণে পাইথনের ১.৬ ও ২.০ সংস্করনের মধ্যে অনেক বিলম্ব ঘটেছিল।[১০] পাইথন ২.০ ছিল বিওপেন.কম থেকে প্রকাশিত প্রথম ও একমাত্র পাইথন ডিস্ট্রিবিউশন। পাইথন ২.০ প্রকাশিত হওয়ার পর গুইডো ভ্যান রোসাম ও অন্যান্য পাইথনল্যাবস কর্মীরা ডিজিটাল ক্রিয়েশন্‌স এ যোগ দেন।
পাইথন ২.০ তার বিভিন্ন বৈশিষ্টের অনেকাংশই ধার করেছে ফাংশনভিত্তিক প্রোগ্রামিং ভাষা হ্যাস্কেল থেকে। হ্যাস্কেলের লিস্ট ও পাইথনের মধ্যে অনেক মিল রয়েছে যদিও হ্যাস্কেল যতিচিহ্নকে বেশি গুরুত্ব দেয় আর পাইথন গুরুত্ব দেয় বর্ণভিত্তিক কিওয়ার্ড এর উপর। পাইথন ২.০ তে গারবেজ কালেকশন ব্যবস্থা যুক্ত হয়েছে যা নিয়মিত ভাবে মেমরি পরিষ্কার করতে সক্ষম।[১০]
এই দ্বৈত প্রকাশের পর ও ভ্যান রস্যিউমের সিএনআরআই ত্যাগ করে বাণিজ্যিক সফটওয়ার নির্মাতাদের সাথে যুক্ত হবার পর পরিষ্কার হয়ে যায় যে, জিপিএল লাইসেন্সের অধীনে পাইথন সফটওয়ারের ব্যবহারের খুবই প্রয়োজনীয়। সে সময় যে লাইসেন্স ব্যবহৃত হত তা ছিল পাইথন লাইসেন্স। এতে একটি সংযুক্তি ছিল যাতে বলা থাকে এই লাইসেন্স ভার্জিনিয়া রাজ্যের নিয়ন্ত্রনাধীন যারা এটা তৈরি করেছে। ফ্রি সফটওয়ার ফাউন্ডেশনের (এফএসএফ) আইনজীবিদের মতে এই লাইসেন্স গনু জিপিএলের সাথে সঙ্গতিপূর্ণ নয়। সিএনআরআই ও এফএসএফ একত্রিত হয়ে পাইথনের লাইসেন্সে পরিবর্তন আনেন যাতে এটা জিপিএলের সাথে সঙ্গতিপূর্ণ হয়। একই বছর (২০০১) ভ্যান রোসামকে এফএসএফ অ্যাওয়ার্ড ফর দ্য অ্যাডভান্সমেন্ট ওব ফ্রি সফটওয়ারপুরস্কার দেয়া হয়।
পাইথন ১.৬.১ আসলে শুধুই পাইথন ১.৬ যাতে কিছুটা ত্রুটি মুক্ত করা হয়েছে এবং নতুন জিপিএল-সঙ্গতিপূর্ণ লাইসেন্স রয়েছে।[১১]

সিনট্যাক্স বর্ণায়িত পাইথন কোড
পাইথন ২.১ তৈরি করা হয়েছে পাইথন ১.৬.১ ও পাইথন ২.০ এর উপর ভিত্তি করে। এর লাইসেন্সের নাম পরিবর্তন করে রাখা হয় পাইথন সফটওয়ার ফাউন্ডেশন লাইসেন্স। পাইথন ২.১ এর প্রকাশের পর এগুলোর সমস্ত কোড, ডকুমেন্টেশন ও স্পেসিফিকেশন পাইথন সফটওয়ার ফাইন্ডেশন (পিএসএফ) এর অধীনে চলে আসে। অলাভজনক প্রতিষ্ঠান হিসেবে পিএসএফ গঠন করা হয় ২০০১ সালে। এটির ব্যবস্থাপনা ও গঠন অ্যাপাচি সফটওয়ার ফাউন্ডেশনের আদলে করা হয়।[১১] এই ভার্শনে স্ট্যাটিক স্কোপিং নিয়মাবলী (যেটির মূল প্রবক্তা হচ্ছে স্কিম নামে একটি প্রোগ্রামিং ভাষা) যোগ করা হয়, যদিও প্রথম দিকে এটি বাধ্যতামূলক ও সাধারনভাবে সক্রিয় ছিল না।[১২]
পাইথন ২.২ এর একটি প্রধান উদ্ভাবন হচ্ছে পাইথনের বিভিন্ন টাইপ (সি তে লেখা টাইপসমূহ) ও ক্লাসের (পাইথনে লেখা টাইপসমূহ) একই গঠনের আওতায় নিয়ে আসা। এর ফলে পাইথনের অবজেক্ট মডেল অনেক স্থিতিশীল ও প্রকৃত অবজেক্ট ওরিয়েন্টেড হয়েছে।[১৩] এতে আরও যুক্ত করা হয়েছে জেনারেটর যেটি আইকন নামে একটি ভাষায় প্রথম ব্যবহৃত হয়েছে।[১৪]
পাইথনের স্ট্যান্ডার্ড লাইব্রেরী ও সিনট্যাক্টিক্যাল ব্যবহার জাভা থেকে অনুপ্রাণিত হয়েছে। কোন কোন ক্ষেত্রে যেমনঃlogging প্যাকেজ,[১৫] যা যুক্ত হয় ২.৩ ভার্সনে,[১৬] স্যাক্স পার্সার যা ২.০ সংস্করনে যুক্ত হয় এবং ডেকোরেটর সিনট্যাক্স যা@ ব্যবহার করে এবং ২.৪ সংস্করনে যুক্ত হয়[১৭] added in version 2.4[১৮] ইত্যাদি।

ব্যবহার

যে সকল বড় বড় প্রকল্পে পাইথন ব্যবহৃত হয়েছে তার মধ্যে জোপ অ্যাপ্লিকেশন সার্ভার, এমনেট ডিস্ট্রিবিউটেড ফাইল স্টোর, ইউটিউব এবং মূল বিটটরেন্ট ক্লায়েন্ট উল্লেখযোগ্য। যে সমস্ত বড় প্রতিষ্ঠান পাইথন ব্যবহার করে তাদের মধ্যে গুগল[১৯] ও নাসা[২০] উল্লেখযোগ্য।
তথ্য নিরাপত্তা শিল্পে পাইথনে বহুবিধ ব্যবহার লক্ষনীয়। এর মধ্যে ইমিউনিটি সিকিউরিটির কিছু টুলস,[২১][২২] কোর সিকিউরিটির কিছু টুলস,[২৩] ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা স্ক্যানার ওয়াপিটি,[২৪] ও ফাজার টিএওএফ[২৫] বিশেষভাবে উল্লেখযোগ্য। সাধারণত দ্রুত সফটওয়ার নির্মাণের জন্য পাইথন ব্যবহৃত হয়।[২৬][২৭]

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

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

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

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

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


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

Friday 8 April 2016

                       সার্চ ইঞ্জিন অপ্টিমাইজেশান(SEO)


সার্চ ইঞ্জিন অপ্টিমাইজেশান (ইংরেজিSearch Engine Optimization) বা সংক্ষেপে এসইও (SEO) হলো একটি পদ্ধতি যার মাধ্যমে একটি ওয়েবসাইট বা ওয়েবপেজকে সার্চ ইঞ্জিন ব্যবহারকারীদের সার্চ বা অনুসন্ধান ফলাফলের তালিকায় প্রথম দিকে দেখানোর চেষ্টা করা হয়। এসইও কোনো একক কাজ নয়, বরং বহুক্ষেত্রে বিভিন্ন ধরণের কাজের সাথে সম্পৃক্ত একটি পদ্ধতি, বলা যায় সমন্বিত পদ্ধতি।[১]
সাধারণত একটি সার্চ ইঞ্জিনের ওয়েব ক্রলার বা সার্চ রোবট বা সার্চ স্পাইডার প্রায় সবসময় ওয়েবে থাকা একটি ওয়েবপেজ অন্য ওয়েবপেজে ও একই ভাবে এক ওয়েবসাইট থেকে অন্য ওয়েবসাইট ঘুরে বেড়ায়। এই রোবট বা স্পাইডা্র বা ক্রলার সমুহ বিভিন্ন তথ্য সংগ্রহ করে নিদির্ষ্ট শ্রেণীতে সজ্জিত করে এবং সার্চ ইঞ্জিন ব্যবহারকারীর খোজকৃত শব্দ বা শব্দগুচ্ছ অনুসারে সার্চ ইঞ্জিনের ফলাফল পাতায় প্রদর্শন করে। এই ক্রলার বিভিন্ন বিষয়ের উপর গুরুত্ব প্রদান করে । বিষয় সমুহকে দুই ভাগে শ্রেনীবদ্ধ করা যায়।
  • অনপেজ বা ওয়েবসাইটের ভিতরকার বিষয়সমুহ
  • অফপেজ বিষয়সমুহ
অনপেজ বা ওয়েবসাইটের ভিতরকার বিষয়গুলোর মধ্যে উল্লেখযোগ্য হল
  • ওয়েবসাইটের টাইটেল বা নাম
  • ওয়েবসাইটের মেটা ডেসক্রিপশন বা বিবরণ
  • ওয়েবসাইটের ম্যাটা কিওয়ার্ড ট্যাগ
  • ওয়েবসাইটে ব্যবহৃত ছবিগুলোর টাইটেল বা নাম
  • ওয়েবসাইটে ব্যবহৃত ছবিগুলোর অল্ট ট্যাগ
  • ওয়েবসাইটে ব্যবহৃত ছবিগুলোর ক্যাপশন
  • ওয়েবসাইটের বিভিন্ন পেজের মধ্যে অন্ত:সংযোগ
  • ওয়েবসাইটের সাথে অন্য ওয়েবসাইটের বহি:সংযোগ
  • সংযোগকৃত শব্দ ইত্যাদি
অফপেজ বা ওয়েবসাইটের বাইরের বিষয়সমুহের মধ্যে উল্লেখযোগ্য হল
  • সোশ্যাল শেয়ার বা সামাজিক সাইটগুলোতে আলোচনা
  • ব্যাকলিংক বা অন্য ওয়েবসাইটের সাথে সংযোগের সংখ্যা ইত্যাদি
এই বিষয়গুলো নিশ্চিত করে ওয়েবসাইটকে সার্চ ইঞ্জিনের কাছে দৃষ্টিগোচর করার কাজটিই এসইও'র মূল কাজ পরিগণিত হয়। এছাড়া, ওয়েবসাইটকে বিভিন্ন সার্চ ইঞ্জিনের কাছে সাবমিশন বা সমর্পণ,বিভিন্ন সম্ভাবনাময় ওয়েবসাইটে বিজ্ঞাপন স্থাপন বা আদান-প্রদান ইত্যাদির মাধ্যমেও এসইও কাজ করে থাকে। সম্প্রতি সার্চ ইঞ্জিনগুলো যেকোন ওয়েবপেজ বা ওয়েবসাইট এর সোশ্যাল প্লাটফর্ম এর অপর গুরুত্ব দিয়ে র‌্যাংক প্রদান করছে। এক্ষেত্রে যে ওয়েব পেজ বা সাইটের সোশ্যাল প্লাটফর্ম যত উন্নত সে সাইট সার্চ ইঞ্জিনের প্রথম দিকে থাকার সম্ভবনা তত বেশি।

                     কম্পিউটার প্রোগ্রামিং কি?


মানুষের ভাষা কে কম্পিউটারের বোধগম্য ভাষায় রূপান্তরের প্রক্রিয়াকেই  প্রোগ্রামিং বলে ।

অ্যালগোরিদম ও উপাত্ত সংগঠনগুলো কম্পিঊটারে বাস্তবায়িত করার জন্য সফ্‌টওয়্যার প্রকৌশলীরা প্রোগ্রাম রচনা করেন। এই প্রোগ্রামগুলো লিখতে গিয়ে তাঁরা যেসব কৃত্রিম ভাষার সাহায্য নেন, তাদেরকে প্রোগ্রামিং ভাষা বলা হয়। মানুষের মুখের স্বাভাবিক ভাষা দ্ব্যর্থবোধক এবং এ ভাষার পদসংগঠন ও শব্দার্থ বহুভাবে অনুধাবন করা যায়, তাই এটি প্রোগ্রাম লেখার জন্য উপযুক্ত নয়। এর পরিবর্তে সরল ও দ্ব্যর্থহীন কৃত্রিম প্রোগ্রামিং ভাষার আশ্রয় নেয়া হয়। কম্পিউটার বিজ্ঞানীরা এমন প্রোগ্রামিং ভাষা উদ্ভাবনের চেষ্টা করেন, যা দিয়ে সহজে প্রোগ্রাম লেখা যায় এবং প্রোগ্রামে ভুলের পরিমাণ কম হয়। প্রোগ্রামিং ভাষাগুলোকে যন্ত্রের ভাষায় ভাষান্তরিত করে নিতে হয়, যাতে কম্পিউটার প্রোগ্রামের নির্দেশগুলো পালন করতে পারে। কম্পিউটার বিজ্ঞানীরা আরও ভাল ভাষান্তরকরণ অ্যালগোরিদম বের করার চেষ্টা করেন, যাতে যন্ত্রের ভাষায় ভাষান্তরিত প্রোগ্রামগুলো আরও দক্ষভাবে সম্পাদন করা যায়।
কম্পিউটার বিজ্ঞানের একেবারে আদি পর্যায়ে বাইনারী সংখ্যাভিত্তিক যান্ত্রিক ভাষায় (machine language) কম্পিউটারের হার্ডওয়্যারকে নির্দেশ দেয়া হত। এরপর কাজের সুবিধার জন্য প্রথম যেসব প্রোগ্রামিং ভাষা তৈরি করা হয়, তাদের নাম অ্যাসেম্বলি ভাষা। এগুলি যান্ত্রিক ভাষা থেকে খুব একটা বেশি পৃথক ছিল না। ১৯৫০-এর দশক থেকে ব্যবহারকারীরা আরও স্বাচ্ছন্দ্যদায়ী প্রোগ্রামিং ভাষা লেখা শুরু করেন। এদের মধ্যে ফোরট্রান ভাষাটি ছিল অন্যতম। ফোরট্রান প্রোগ্রামারদেরকে গাণিতিক অপারেশন ছাড়াও বীজগাণিতিক এক্সপ্রেশন লেখার সুযোগ দেয়। ১৯৬০-এর দশকে ফোরট্রানের একটি সরলীকৃত সংস্করণ বেসিক তৈরি করা হয়, এবং এটি নতুনদের শেখার জন্য প্রথম প্রোগ্রামিং ভাষা হিসেবে স্কুল-কলেজে ব্যাপক জনপ্রিয়তা লাভ করে। ফোরট্রান উদ্ভাবনের কাছাঁকাছি সময়ে আরেকটি ভাষা কোবোল তৈরি করা হয়, যেটি সাধারণ ব্যবসায়িক রেকর্ড, নথিপত্র, ও অন্যান্য ব্যাবসায়িক প্রক্রিয়া দেখাশোনা করার জন্য ব্যবহার করা হয়।
কোবোল ও ফোরট্রান এবং এদের উত্তরসূরী প্যাসকাল ও সি হল নির্দেশমূলক ভাষা (Imperative language)। অর্থাৎ এগুলোতে কম্পিউটারকে কতগুলি প্রত্যক্ষ নির্দেশ দেয়ার মাধ্যমে কাজ করানো হয়; এটা যান্ত্রিক ভাষার সাথে অনেকটাই তুলনীয়। এই ধারার আরও দুটি ভাষা হল অ্যাডা ও অ্যালগল। এছাড়াও আরেক ধরনের ভাষা আছে যেগুলি ফাংশনভিত্তিক (Functional), অর্থাৎ প্রোগ্রামের ভিতরের অংশবিশেষ বা ফাংশন কল করে প্রোগ্রামিং-এর লক্ষ্য পূরণ করা হয়। ফাংশনভিত্তিক ভাষার মধ্যে সবচেয়ে পরিচিত হচ্ছে লিস্পএমএল ও হ্যাস্কেল-ও ফাংশনভিত্তিক ভাষা। পরবর্তীকালে বস্তু-সংশ্লিষ্ট (Object Oriented অব্জেক্ট-ওরিয়েন্টেড) ভাষা উদ্ভাবন করা হয় যেখানে উপাত্ত ও মেথড আধারে আবৃত করা হয়, এবং এই আধারকে বলা হয় অবজেক্ট বা বস্তু। এই ধারায় একাধিক অবজেক্টের মধ্যে বার্তা আদানপ্রদান করে প্রোগ্রামিঙের লক্ষ্য পূরণ করা হয়। স্মলটকসি++আইফেলভিজুয়াল বেসিকজাভা, ইত্যাদি বস্তু-সংশ্লিষ্ট ভাষার উদাহরণ। এছাড়াও আছে উপাত্ত-প্রবাহ (Dataflow ডাটাফ্লো) ভাষা যেমন সিসালভালইদ নুভো, লজিক প্রোগ্রামিং ভাষা যেমন প্রোলগ, স্ট্রিং প্রসেসিং ভাষা যেমন - স্নোবল ও আইকন, এবং সহবর্তমানতাভিত্তিক (concurrency-based) প্রোগ্রামিং ভাষা যেমন - কনকারেন্ট প্যাসকালঅকামএসআরমডুলা-৩
প্রোগ্রামিং ভাষার তত্ত্বে আলোচিত বিষয়গুলির মধ্যে রয়েছে:

                            ডাটা স্ট্রাকচার 


কম্পিউটার বিজ্ঞানে উপাত্ত সংগঠন (ইংরেজিData structure, ডেটা স্ট্রাক্‌চার) বলতে উপাত্তকে কম্পিউটারে রাখার একটি নির্দিষ্ট উপায়কে বোঝায় যাতে উপাত্তকে দক্ষতার সাথে ব্যবহার করা যায়। যত্নের সাথে বাছাই করা উপাত্ত সংগঠন উপাত্তের উপর সবচেয়ে দক্ষ অ্যালগোরিদমের ব্যবহার সম্ভব করে তোলে। একটি সুপরিকল্পিত উপাত্ত সংগঠন মেমরি ও সময় যথাসম্ভব বাঁচিয়ে উপাত্তের উপর অনেকগুলি জরুরি অপারেশন প্রয়োগ করার ক্ষমতা দেয়। কোন একটি প্রোগ্রামিং ভাষাতে প্রদত্ত উপাত্ত টাইপ, রেফারেন্স ও অপারেশন অনুসারে উপাত্ত সংগঠনগুলি বাস্তবায়ন করা হয়।
এ্যাপ্লিকেশনের ধরণের উপর ডাটা স্ট্রাকচারের শ্রেণীবিভাগ হয়ে থাকে এবং এদের মধ্যে অনেকগুলো নির্দিষ্ট কিছু কাজের জন্য বিশেষভাবে তৈরি করা হয়। উদাহরণস্বরূপ, বি-ট্রিগুলো ডাটাবেসের ক্ষেত্রে প্রয়োগ করার জন্য বিশেষভাবে উপযুক্ত এবং রুটিং টেবিলগুলো মেশিন নেটওয়ার্কের উপর নির্ভরশীল।
বিভিন্ন ধরণের প্রোগ্রামের ডিজাইনে, ডাটা স্ট্রাকচারের বাছাইকরণ একটি অন্যতম প্রধান বিষয়। বড় ধরণের সিস্টেম তৈরির অভিজ্ঞতা থেকে জানা যায় যে, চূড়ান্ত ফলাফলের মান ও সার্থকতা অনেকাংশে শ্রেষ্ঠ ডাটা স্ট্রাকচার বাছাই করার উপর নির্ভরশীল। ডাটা স্ট্রাকচার বাছাই করার পর, এ্যালগরিদমের ব্যবহার অবশ্যম্ভাবী হয়ে ওঠে। অবশ্য কখনো এর বিপরীত পদ্ধতিও অবলম্বন করা হয় এবং এক্ষেত্রে কোন নির্দিষ্ট এ্যালগরিদমের জন্য উপযুক্ত ডাটা স্ট্রাকচার বাছাই করা হয়। উভয় ক্ষেত্রেই প্রয়োজনীয় ডাটা স্ট্রাকচারের বাছাইকরণ অত্যন্ত জরুরী।
সুসংগঠিত ডিজাইন পদ্ধতি এবং প্রোগ্রামিং ভাষাগুলোর গভীর বিশ্লেষণের মাধ্যমে জানা যায় যে, এ্যালগরিদমের বদলে ডাটা স্ট্রাকচারই হল প্রধান সাংগঠনিক উপকরণ। অনেক প্রোগ্রামিং ভাষা বেশ কিছু মডিউল সিস্টেম ব্যবহার করে যার মাধ্যমে বিভিন্ন এ্যাপ্লিকেশনের জন্য ডাটা স্ট্রাকচারগুলো ব্যবহার করা যায়। এজন্য নিয়ন্ত্রিত ইণ্টারফেসের আড়ালে তাদের সুনির্দিষ্ট প্রয়োগপদ্ধতিগুলো আড়াল করে রাখা হয়। অবজেক্ট-ওরিয়েণ্টড প্রোগ্রামিং ভাষা যেমন সি++ এবং জাভা এই উদ্দেশ্য বিভিন্ন ক্লাস ব্যবহার করে।
ডাটা স্ট্রাকচারের অত্যধিক গুরুত্বের কারণে অনেক প্রোগ্রামিং ভাষার লাইব্রেরিতে এদের অন্তর্ভুক্ত করা হয়। সি++ এর স্ট্যাণ্ডার্ড টেমপ্লেট লাইব্রেরী কণ্টেইনার্স, জাভার কালেকশন্স ফ্রেমওয়ার্ক এবং মাইক্রোসফটের .নেট ফ্রেমওয়ার্কে এই পদ্ধতি অবলম্বন করা হয়।
অ্যারেস্ট্যাককিউলিংকড লিস্টট্রিগ্রাফসার্চিং এবং সর্টিং, ইত্যাদি কতগুলি বহুল ব্যবহৃত উপাত্ত সংগঠন। ডাটা স্ট্রাকচার ইম্লিমেণ্টেশন বা ইণ্টারফেসের প্রতিনিধিত্ব করে। একটি ডাটা স্ট্রাকচারকে দু’টি ফাংশনের মাঝে একটি ইণ্টারফেস হিসেবে দেখা যায় বা সংশ্লিষ্ট ডাটা টাইপের মাধ্যমে সাজানো ও সংরক্ষিত তথ্যভাণ্ডার প্রয়োগ করার একটি পদ্ধতি হিসেবে দেখা যায়।

                            আইসিটি কি?????

তথ্য ও যোগাযোগ প্রযুক্তি বা আইসিটি (ইংরেজিInformation and communications technology (ICT)) সাধারণভাবে তথ্য প্রযুক্তির সমার্থক শব্দ হিসেবে ব্যবহৃত হয়। প্রকৃতপক্ষে তথ্য ও যোগাযোগ প্রযুক্তি এক ধরনের একীভূত যোগাযোগব্যবস্থা এবং টেলিযোগাযোগকম্পিউটার নেটওয়ার্ক ও তৎসম্পর্কিত এন্টারপ্রাইজ সফটওয়্যার, মিডলওয়্যার তথ্য সংরক্ষণঅডিও-ভিডিও সিস্টেম ইত্যাদির সমন্বয়ে গঠিত এমন এক ধরনের ব্যবস্থা যার মাধ্যমে একজন ব্যবহারকারী খুব সহজে তথ্য গ্রহণ, সংরক্ষণ, সঞ্চালন ও বিশ্লেষণ করতে পারেন। প্রযুক্তি।
আইসিটি শব্দটির ব্যবহার শুরু করে একাডেমিক গবেষকরা ১৯৮০ সালের দিকে। কিন্তু শব্দটি জনপ্রিয়তা লাভ করে ১৯৯৭ সাল থেকে। স্টিভেনসন ১৯৯৭ সালে যুক্তরাজ্য সরকারকে দেওয়া এক প্রতিবেদনে এই শব্দটি উল্লেখ করেন, যা পরবর্তীতে ২০০০ সালে যুক্তরাজ্যের নতুন জাতীয় পাঠ্যপুস্তকে সংযোজন করা হয়।
বর্তমান সময়ে তথ্য ও যোগাযোগ প্রযুক্তি দ্বারা একক তার বা একক লিঙ্ক সিস্টেমের মাধ্যমে টেলিফোন, অডিও-ভিজুয়াল ও কম্পিউটার নেটওয়ার্কের সমন্বয় প্রযুক্তিকে প্রকাশ করা হয়। একক লিঙ্ক সিস্টেমের মাধ্যমে টেলিফোন, অডিও-ভিজুয়াল ও কম্পিউটার নেটওয়ার্কের সমন্বয়ের ফলে বিশাল অঙ্কের অর্থনৈতিক খরচ কমে গিয়েছে।
আইসিটি ডেভেলপমেন্ট ইন্ডেক্স বিশ্বব্যাপী আইসিটি ব্যবহার ও আইসিটি তে অংশগ্রহণ তুলনা ও বিন্যাস করে।