এবিসি (প্রোগ্রামিং ভাষা)

এবিসি (ইংরেজি: ABC) একটি জেনারেল পারপাস প্রোগ্রামিং ভাষানেদারল্যান্ডস্থ সিডব্লিউআই (CWI) এর তিন প্রোগ্রামিং ভাষা বিশেষজ্ঞ, লিও গিউর্টস, ল্যাম্বার্ট মার্টিন্স এবং স্টিভ পেম্বারটন, এই ভাষাটির উন্নয়ন করেন। প্রোগ্রামিং ভাষার সাথে সাথে প্রোগ্রামারদের জন্য একটি এবিসি আইডিই বা ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্টেরও উন্নয়ন করা হয় তখন। এবিসি প্রোগ্রামিং ভাষাটিকে বেসিক (BASIC), প্যাস্ক্যাল (Pascal) ও এডব্লিউকে (AWK)-এর বিকল্প হিসেবে ব্যবহার করার জন্য উন্নয়ন করা হয়েছিল। এবিসি একটি হাই লেভেল প্রোগ্রামিং ভাষা। এই ভাষাটি সিস্টেমস প্রোগ্রামিংয়ের জন্য নয়, মূলত: শিক্ষাদান বা প্রটোটাইপিংয়ের জন্য উন্নয়ন করা হয়েছিল।

এবিসি (ABC)
প্যারাডাইমমাল্টি প্যারাডিজম প্রোগ্রামিং ভাষা, ইম্পারেটিভ প্রোগ্রামিং, প্রসিডিউরাল প্রোগ্রামিং, স্ট্রাকচারড প্রোগ্রামিং।
নকশাকারলিও গিউর্টস, ল্যাম্বার্ট মার্টিন্স এবং স্টিভ পেম্বারটন
বিকাশকারীসেন্ট্রাম উইসকুন্ড এন্ড ইনফরমেটিকা (সিডব্লিউআই)।
স্থিতিশীল সংস্করণ
১.০৫.০২
টাইপিং পদ্ধতিস্ট্রং টাইপড প্রোগ্রামিং ভাষা, টাইপ পলিমরফিজম।
ওয়েবসাইটhomepages.cwi.nl/~steven/abc/
যার দ্বারা প্রভাবিত
এসইটিএল (SETL) এবং এলগল ৬৮(ALGOL 68) [১]
যাকে প্রভাবিত করেছে
পাইথন

বৈশিষ্ট্য সম্পাদনা

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

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

প্রভাব সম্পাদনা

পাইথন প্রোগ্রামিং ভাষার জনক গুইডো ভ্যান রস্যিউম আশির দশকে এবিসি প্রোগ্রামিং ভাষায় কাজ করেন। এর ফলাফল স্বরূপ পরবর্তী সময়ে তার উন্নয়নকৃত পাইথন প্রোগ্রামিং ভাষাটির উপর এবিসির প্রচুর প্রভাব দেখতে পাওয়া যায়।[২][৩] বিশেষ করে পাইথন ও এবিসির সিনট্যাক্সের মধ্যে প্রভূত মিল খুঁজে পাওয়া যায়।

এবিসি আইডিই সম্পাদনা

এবিসি উন্নয়নকারীরা এই প্রোগ্রামিং ভাষার সাথে সাথে এর প্রোগ্রামারদের সুবিধার্থে একটি ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট বা আইডিইর উন্নয়ন করেছেন যা সিনট্যাক্স-ডাইরেক্টেড সম্পাদনা, পরামর্শ, একধিক ওয়ার্কস্পেস ব্যবহারের সুবিধা, স্ট্যাটিক ভেরিয়েবল সুবিধা ইত্যাদি প্রদান করে থাকে। বর্তমানে এবিসি ইন্টারপ্রেটার/কম্পাইলার এর ১.০৫.০২ সংস্করণ প্রচলিত রয়েছে। এবিসি ভাষাটি ইউনিক্স (UNIX), ডস (DOS), আটারি এবং অ্যাপল ম্যাকিন্টোশ অপারেটিং সিস্টেম চালিত কম্পিউটারে ব্যবহার করা যায়।

উদাহরণ সম্পাদনা

নিচে এবিসি প্রোগ্রামের একটি উদাহরণ দেয়া হল:

  PUT {} IN collection
  FOR line IN document:
     FOR word IN split line:
        IF word not.in collection:
           INSERT word IN collection
  RETURN collection

তথ্যসূত্র সম্পাদনা

  1. "He was clearly influenced by ALGOL 68's philosophy of providing constructs that can be combined in many different ways to produce all sorts of different data structures or ways of structuring a program." - Guido van Rossum Federico Biancuzzi; Shane Warden (২০০৯)। Masterminds of Programming: Conversations with the Creators of Major Programming LanguagesO'Reilly Media। পৃষ্ঠা 32। আইএসবিএন 0-596-51517-0। সংগ্রহের তারিখ ডিসেম্বর ১৪, ২০০৯  অজানা প্যারামিটার |1= উপেক্ষা করা হয়েছে (সাহায্য); অজানা প্যারামিটার |month= উপেক্ষা করা হয়েছে (সাহায্য)
  2. "সংরক্ষণাগারভুক্ত অনুলিপি"। ১ নভেম্বর ২০১৩ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২৩ ডিসেম্বর ২০১৩ 
  3. "সংরক্ষণাগারভুক্ত অনুলিপি"। ১৫ এপ্রিল ২০১২ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২৯ নভেম্বর ২০১৮