প্রোগ্রামিং ভাষায় "প্রথম-শ্রেণীর নাগরিক" বা "প্রথম শ্রেণীর উপাদান" ধারণাটি প্রথম শ্রেণির কার্যাবলির প্রসঙ্গে ১৯60০ এর দশকে ব্রিটিশ কম্পিউটার বিজ্ঞানী ক্রিস্টোফার স্ট্রাচি প্রবর্তন করেছিলেন । এই নীতিটির সর্বাধিক বিখ্যাত সূত্রটি সম্ভবত জেরাল্ড জে সুসমান এবং হ্যারি অ্যাবেলসনের কম্পিউটার প্রোগ্রামগুলির কাঠামো এবং ব্যাখ্যায় :
- তারা ভেরিয়েবল দ্বারা নামকরণ করা যেতে পারে।
- তারা প্রক্রিয়া যুক্তি হিসাবে পাস হতে পারে।
- প্রক্রিয়াগুলির ফলাফল হিসাবে তারা ফিরে আসতে পারে।
- এগুলি ডেটা স্ট্রাকচারে অন্তর্ভুক্ত থাকতে পারে।
মূলত, এর অর্থ এই যে আপনি প্রোগ্রামিং ভাষার অন্যান্য উপাদানগুলির সাথে এই প্রোগ্রামিং ভাষা উপাদানটি যা করতে পারেন তা করতে পারেন।
এটি সমস্ত "সমান অধিকার" সম্পর্কে: আপনি উপরের সমস্ত কিছু করতে পারেন, বলতে পারেন, পূর্ণসংখ্যার সাথে, তবে অন্য কোনও জিনিস আলাদা হওয়া উচিত কেন?
উপরোক্ত সংজ্ঞাটি এই অর্থে কিছুটা সীমাবদ্ধ যে এটি কেবলমাত্র প্রথম শ্রেণির শ্রেণীর দিকটি প্রোগ্রামের বিষয় হিসাবে সম্পর্কিত বলে আলোচনা করে। আরও সাধারণ সংজ্ঞাটি হ'ল কোনও জিনিস প্রথম শ্রেণীর হয় যদি আপনি এটির সাথে সমস্ত কিছু করতে পারেন তবে একই জাতীয় অন্যান্য জিনিসগুলিও আপনি করতে পারেন।
উদাহরণস্বরূপ, জাভা অপারেটর এবং জাভা পদ্ধতিগুলি একই ধরণের। আপনি নতুন পদ্ধতি সংজ্ঞায়িত করতে পারেন, আপনি (কিছুটা) অবাধে নিজের পদ্ধতিগুলির নাম চয়ন করতে পারেন, আপনি পদ্ধতিগুলিকে ওভাররাইড করতে পারেন, আপনি পদ্ধতিগুলি ওভারলোড করতে পারেন। জেমস গোসলিং অপারেটরগুলির সাথেও এই সমস্ত কিছু করতে পারে তবে আপনি এবং আমি পারব না। আমি বলতে চাচ্ছি, জনপ্রিয় বিশ্বাসের বিপক্ষে, জাভা করে সমর্থন অপারেটর ওভারলোডিং: যেমন, +
অপারেটর জন্য ওভারলোড হয় byte
, short
, int
, long
, float
, double
এবং String
, এবং IIRC জাভা 7 এছাড়াও BigInteger
এবং BigDecimal
(এবং সম্ভবত একটি দম্পতি আমি ভুলে গেছি), এটা ঠিক যে আপনিএটির উপর কোনও প্রভাব ফেলবে না। এটি পরিষ্কারভাবে অপারেটরদের এই দ্বিতীয় সংজ্ঞা অনুযায়ী দ্বিতীয় শ্রেণিতে পরিণত করে। নোট করুন যে পদ্ধতিগুলি এখনও প্রথম সংজ্ঞা অনুযায়ী প্রথম শ্রেণীর অবজেক্ট নয়। (এটি অপারেটরদের কি তৃতীয় শ্রেণীর করে তোলে?)