১৯৫০-এর দশকের শুরুতে একটি ইলেকট্রনিক কম্পিউটারে প্রোগ্রাম করা ছিল এক দুঃসহ যন্ত্রণা। প্রোগ্রামারদের খাতা-কলমে হেক্সাডেসিমাল বা অক্টাল কোড লিখে মেমোরির রেজিস্টার ঠিকানা মুখস্থ করে পাঞ্চ কার্ডে ফুটা করতে হতো। হার্ডওয়্যার বদলানোর সাথে সাথে পূর্বের লেখা সমস্ত সফটওয়্যার আবর্জনায় পরিণত হতো। আজকের আধুনিক বিশ্ব টিকে আছে কারণ দূরদর্শী কম্পিউটার বিজ্ঞানীরা তৈরি করেছিলেন বিমূর্ততার স্তর (Abstraction Layers): মানুষের ভাষাকে কম্পিউটারের ভোল্টেজে রূপান্তর করার কম্পাইলার এবং সফটওয়্যারকে চিরন্তন রূপ দেওয়ার অপারেটিং সিস্টেম।

১. গ্রেস হপার এবং কম্পাইলারের উদ্ভাবন

১৯৫২ সালে মার্কিন নৌবাহিনীর গণিতবিদ ও প্রোগ্রামার গ্রেস ব্রুস্টার মারি হপার এক বৈপ্লবিক প্রস্তাব দিলেন: কম্পিউটারকে বাইনারি সংখ্যার বদলে মানুষের ইংরেজি ভাষার মতো নির্দেশের মাধ্যমে প্রোগ্রাম করা সম্ভব।

তাঁর সহকর্মীরা এই ধারণাকে উপহাস করে উড়িয়ে দিয়ে বলেছিলেন যে কম্পিউটার কেবল পাটিগণিতের যোগ-বিয়োগ করতে পারে, এটি কোনো ভাষাতাত্ত্বিক অনুবাদক নয়। কিন্তু পিছু হটার পাত্রী ছিলেন না গ্রেস হপার। তিনি তৈরি করলেন বিশ্বের প্রথম কার্যকর কম্পাইলার: এ-জিরো সিস্টেম (A-0 System)।

গ্রেস হপার পরে তৈরি করেন ফ্লো-ম্যাটিক (FLOW-MATIC)—প্রথম প্রোগ্রামিং ভাষা যাতে ইংরেজি ক্রিয়াপদ (যেমন COMPUTE, COMPARE) ব্যবহার করা হতো। এই গবেষণাই ১৯৫৯ সালে আন্তর্জাতিক ব্যাংকিং ও বাণিজ্যের প্রধান মেরুদণ্ড কোবোল (COBOL) ভাষার ভিত্তি রচনা করে।

২. উচ্চস্তরের ভাষার জন্ম: ফোরট্রান এবং লিস্প

১৯৫৪ থেকে ১৯৫৮ সালের মধ্যে দুটি অমর প্রোগ্রামিং ভাষা সফটওয়্যার উন্নয়নের দুটি চিরন্তন ধারা সৃষ্টি করে:

  • ফোরট্রান (FORTRAN – Formula Translation, ১৯৫৭): জন ব্যাকাস এবং আইবিএমের তৈরি বৈজ্ঞানিক ভাষা। ব্যাকাস প্রমাণ করেন যে কম্পাইলার অপটিমাইজেশনের মাধ্যমে উচ্চস্তরের কোড থেকেও অ্যাসেম্বলি কোডের সমান দ্রুতগতির মেশিন কোড তৈরি সম্ভব। ব্যাকাস ভাষার ব্যাকরণ লেখার জন্য উদ্ভাবন করেন ব্যাকাস-নাউর ফর্ম (BNF)।
  • লিস্প (LISP – List Processing, ১৯৫৮): জন ম্যাকার্থির হাত ধরে জন্ম নেওয়া কৃত্রিম বুদ্ধিমত্তার আদিম ও সবচেয়ে প্রভাবশালী ভাষা। লিস্পে কোড এবং ডেটা উভয়কেই নেস্টেড এস-এক্সপ্রেশন (list) হিসেবে বিবেচনা করা হতো। ম্যাকার্থি উদ্ভাবন করেন ডায়নামিক টাইপিং, রিকার্শন এবং মেমোরি স্বয়ংক্রিয়ভাবে পরিষ্কার রাখার গার্বেজ কালেকশন (Garbage Collection)।

৩. ১৯৬৮ সালের সফটওয়্যার সংকট এবং মাল্টিক্সের পতন

১৯৬০-এর দশকের শেষে হার্ডওয়্যারের উন্নতির তুলনায় সফটওয়্যার তৈরির পদ্ধতি পিছিয়ে পড়ে। সফটওয়্যার প্রকল্পগুলোতে লক্ষ লক্ষ ডলারের বাজেট নষ্ট হতে থাকে এবং নির্ধারিত সময়ের বছরের পর বছর পার হয়ে যেত। ১৯৬৮ সালের অক্টোবরে জার্মানিতে ন্যাটো সম্মেলনে বিজ্ঞানীরা ঘোষণা করেন “সফটওয়্যার ক্রাইসিস (Software Crisis)”।

এমআইটি, জেনারেল ইলেকট্রিক এবং বেল ল্যাবস মিলে শুরু করে মাল্টিক্স (Multics) প্রজেক্ট—বিদ্যুৎ গ্রিডের মতো একটানা চলা এক বিশাল অপারেটিং সিস্টেমের স্বপ্ন। কিন্তু অতিরিক্ত জটিলতা ও আমলাতান্ত্রিক ভুলের কারণে মাল্টিক্স মুখ থুবড়ে পড়ে। ১৯৬৯ সালে বেল ল্যাবস নিজেদের এই প্রকল্প থেকে প্রত্যাহার করে নেয়।

৪. কেন থম্পসন, ডেনিস রিচি এবং ইউনিক্সের অমর দর্শন

মাল্টিক্স থেকে বেরিয়ে এসে বেল ল্যাবসের দুই প্রতিভাবান গবেষক কেন থম্পসন এবং ডেনিস রিচি একটি পরিত্যক্ত পিডিপি-৭ (PDP-7) মিনিকম্পিউটারে একদম হালকা ও চমকপ্রদ একটি অপারেটিং সিস্টেম তৈরির সিদ্ধান্ত নেন। ব্রায়ান কার্নিগান রসিকতা করে এর নাম দেন ইউনিক্স (Unix)।

সি (C) ভাষা: পোর্টেবল সফটওয়্যারের মুক্তি

১৯৭২ সালে ইউনিক্সকে ১৬-বিটের নতুন ডিইসি পিডিপি-১১ (PDP-11) কম্পিউটারে স্থানান্তর করার জন্য ডেনিস রিচি তৈরি করেন আধুনিক পৃথিবীর সবচেয়ে শক্তিশালী ও প্রভাবশালী প্রোগ্রামিং ভাষা: সি (C Programming Language)।

১৯৭৩ সালে থম্পসন ও রিচি এক ঐতিহাসিক কাণ্ড করলেন: তাঁরা সি ভাষা ব্যবহার করে পুরো ইউনিক্স কার্নেল নতুন করে লিখলেন। ইউনিক্সের আগে পৃথিবীর প্রতিটি অপারেটিং সিস্টেম নির্দিষ্ট কম্পিউটারের অ্যাসেম্বলি ভাষায় লেখা হতো। সি ভাষায় ইউনিক্স লেখার ফলে ইউনিক্স হয়ে গেল পোর্টেবল (Portable): যেকোনো নতুন কম্পিউটারের জন্য শুধু একটি সি কম্পাইলার বানালেই পুরো ইউনিক্স ও তার সমস্ত প্রোগ্রাম কয়েক দিনের মধ্যে নতুন যন্ত্রে চালু করা সম্ভব হলো!

ইউনিক্স দর্শন (The Unix Philosophy)

ইউনিক্স এমন কিছু মৌলিক নীতি প্রবর্তন করেছিল, যা আজও আধুনিক ক্লাউড ও সফটওয়্যারের প্রাণভোমরা:

  1. একটি প্রোগ্রাম কেবল একটি কাজ করবে এবং তা নিখুঁতভাবে করবে।
  2. প্রোগ্রামগুলো যেন একে অপরের সাথে যুক্ত হতে পারে। ১৯৭৩ সালে কেন থম্পসন উদ্ভাবন করেন বিখ্যাত পাইপ (Pipe / |)—যার মাধ্যমে এক প্রোগ্রামের আউটপুট সরাসরি অন্য প্রোগ্রামের ইনপুট হিসেবে পাঠানো যায়।
  3. সবকিছুই একটি টেক্সট স্ট্রিম। সার্বজনীন ইন্টারফেস হিসেবে টেক্সটকে গ্রহণ করা।
  4. সবকিছুই ফাইল (Everything is a file)। হার্ডডিস্ক, মেমোরি, প্রিন্টার কিংবা নেটওয়ার্ক সকেট—সবকিছুকেই ভার্চুয়াল ফাইল সিস্টেমের কাঠামোর অধীনে আনা।

আজকের ইন্টারনেট ক্লাউড চালানো লিনাক্স (Linux), অ্যাপলের ম্যাকওএস (macOS/iOS) থেকে শুরু করে অ্যান্ড্রয়েড স্মার্টফোন—উইন্ডোজ ব্যতীত পৃথিবীর প্রায় সমস্ত আধুনিক অপারেটিং সিস্টেম বেল ল্যাবসের পিডিপি-১১ কম্পিউটারে জন্ম নেওয়া ইউনিক্স ও সি ভাষার অমর সন্তান।


প্রধান একাডেমিক তথ্যসূত্র

  • Hopper, G. M. (1952). The Education of a Computer. ACM, 243–249.
  • Backus, J. W. (1957). The FORTRAN automatic coding system. WJCC, 188–198.
  • McCarthy, J. (1960). Recursive functions of symbolic expressions. CACM, 3(4), 184–195.
  • Ritchie, D. M., & Thompson, K. (1974). The UNIX Time-Sharing System. CACM, 17(7), 365–375.