প্রোগ্রামিং এর নাম শুনলেই বেশিরভাগ প্রোগ্রামারদের মাথায় যে ল্যাংগুয়েজটার নাম প্রথমে আসবে তা হচ্ছে সি ল্যাঙ্গগুয়েজ। প্রাচীনতম ল্যাংগুয়েজ হওয়া সত্ত্বেও প্রোগ্রামিং এর জগতে যে কয়টি ল্যাংগুয়েজ ব্যবহার করা হয় তার মধ্যে সি ল্যাংগুয়েজ অন্যতম। তবে এত পুরনো হওয়া সত্ত্বেও কিভাবে সি প্রোগ্রামিং ল্যাংগুয়েজ আজও জনপ্রিয়তার শীর্ষে তার উত্তর নিয়েই আজকের আলোচনা।
১৯৭০ সালে বেল ল্যাবে কাজ করার সময় ডেনিস রিচি সি ল্যাংগুয়েজ নির্মাণ করেন। প্রাথমিকভাবে এটি ইউনিক্স অপারেটিং সিস্টেম এর জন্য নির্মাণ করা হলেও এর কাজ সেখানে থেমে থাকেনি। এর জনপ্রিয়তা তুমুল আকারে বেড়ে যাওয়ায় বর্তমানে সব অপারেটিং সিস্টেমেই সি ভাষায় কোড লেখা যায়।
সি এর জনপ্রিয়তার মূল কারণ হচ্ছে এটি তুলনামূলক ভাবে কম জটিল এবং মেশিন এর খুব কাছাকাছি একটি ল্যাংগুয়েজ। অর্থাৎ, সি তে লেখা কোড কম্পাইল করতে কম্পিউটারের খুব কম সময় লাগে। এছাড়াও এর ডেটা টাইপ, কন্ট্রোল স্ট্রাকচার একজন প্রোগ্রামারকে প্রচুর স্পেস দেয় নিজের ইচ্ছেমতো কোড লেখার যেটা অন্য কোন প্রোগ্রামিং ল্যাংগুয়েজ এ সাধারণত পাওয়া যায় না।
সি ল্যাংগুয়েজের ব্যবহার/সুবিধা
- অপারেটিং সিস্টেমঃ বিভিন্ন অপারেটিং সিস্টেম সি এর মাধ্যমে লেখা হয়েছে। যেমনঃ ইউনিক্স, পরবর্তীতে মাইক্রোসফট উইন্ডোজ তৈরিতেও সি ব্যবহার করা হয়েছে।
- গ্রাফিকাল ইউজার ইন্টারফেজঃ এডোবি ফটোশপ অন্যতম জনপ্রিয় একটি ফটো এবং ভিডিও এডিটিং টুল। এটি নির্মাণেও সি ব্যবহার করা হয়েছে। এছাড়াও এডোবি ইলাস্ট্রেটর এবং এডোবি প্রিমিয়ারও তৈরি করা হয় সি এর মাধ্যমে।
- কম্পাইলার ডিজাইনঃ প্রোগ্রামিং ভাষা যে সফটওয়্যারকে মেশিন এর বুঝার সাধ্য করে অনুবাদ করে তাকেই কম্পাইলার বলে। প্রায় সবধরনের কম্পাইলারই সি ভাষায় লেখা হয়। যেমনঃ Clang C, MINGW।
- লো-লেভেল প্রোগ্রামঃ যেকোন লো-লেভেল প্রোগ্রাম অর্থাৎ, মেশিনের খুব কাছাকাছি কাজ করতে সি ভাষা ব্যবহার করতে হয়। কারণ হাই-লেভেল ল্যাংগুয়েজ মেশিন ইন্টারপ্রেট করতে অনেক সময় নেয় তাই খুব ধীর গতির হয়।
- প্রোগ্রামিং সম্পর্কে সঠিক ধারণা লাভঃ যেহেতু সি মেশিনের খুব কাছাকাছি একটা ল্যাংগুয়েজ, তাই এখানে খুব নির্দিষ্ট করে ডেটা টাইপ দেয়া থাকে। এর মাধ্যমে প্রোগ্রামাররা কম্পিউটার কিভাবে কাজ করে তা নিয়ে সুস্পষ্ট ধারণা লাভ করতে পারেন।
সি ল্যাংগুয়েজের অসুবিধা
- দক্ষতাগত জটিলতাঃ লো-লেভেল ল্যাংগুয়েজ হওয়ায় সি ল্যাংগুয়েজে কোড করতে প্রোগ্রামারদের প্রচন্ড দক্ষতার পরিচয় দিতে হয়। এক্ষেত্রে মেমরি এলোকেশন, পয়েন্টার ইত্যাদির মতো জটিল জিনিসে পারদর্শী হতে হয়, অন্যথায় কোডটি এফিশিয়েন্ট হয় না।
- নিরাপত্তাহীনতাঃ সি ল্যাংগুয়েজে কোনো বিল্ট ইন সিকিউরিটি (অনলাইন বিপদ শনাক্ত ও প্রতিরোধ করতে সাহায্য করে) অপশন নেই। তাই এর কোড বাফার ওভারফ্লো হয়ে যাওয়ার সম্ভাবনা থেকে যায়। এর ফলে হ্যাকারদের জন্য একটা সহজ লক্ষ্যে পরিণত করে।
- অবজেক্ট অরিয়েন্টেড নাঃ সি অবজেক্ট অরিয়েন্টেড ল্যাংগুয়েজ না হওয়ায় এর মাধ্যমে কোন জটিল কোড লেখা সম্ভব না। এছাড়াও বিভিন্ন ফিচার যেমনঃ ইনহেরিটেন্স, পলিমরফিজম ইত্যাদি অবজেক্ট অরিয়েন্টেড ফিচার ব্যবহার করা সম্ভব না।
বর্তমানে অনেক হাই লেভেল প্রোগ্রামিং ল্যাংগুয়েজ থাকলেও আপনি একজন কম্পিউটার সাইন্সের শিক্ষার্থী হয়ে থাকলে সি প্রোগ্রামিং জানা আপনার জন্য আবশ্যক বলা যেতে পারে। কারণ এর মাধ্যমেই শুধু কম্পিউটার আর্কিটেকচার, মেমরি ম্যানেজমেন্ট ও টাইম কমপ্লেক্সিটি সম্পর্কে সুস্পষ্ট জ্ঞান লাভ করা সম্ভব।
+1
+1
+1
+1
+1
2
+1
+1