একটি সাক্ষাত্কারের সময়, আমাকে জিজ্ঞাসা করা হয়েছিল যে আমি সি এবং সি ++ এর মধ্যে পার্থক্য জানি কিনা।
আমি ভাবছিলাম কেন এমন প্রশ্ন করা হচ্ছে?
একটি সাক্ষাত্কারের সময়, আমাকে জিজ্ঞাসা করা হয়েছিল যে আমি সি এবং সি ++ এর মধ্যে পার্থক্য জানি কিনা।
আমি ভাবছিলাম কেন এমন প্রশ্ন করা হচ্ছে?
উত্তর:
প্রশ্নগুলি যদি "সি এবং সি ++ এর মধ্যে পার্থক্য জানেন?" এবং আপনাকে কেবল "হ্যাঁ" দিয়ে প্রতিক্রিয়া জানাতে অনুমতি দেওয়া হয়েছিল তবে আমি আপনার বিভ্রান্তিটি দেখতে পাচ্ছিলাম তবে তারা যদি সত্যিই জিজ্ঞাসা করত "সি এবং সি ++ এর মধ্যে পার্থক্য কি?" এবং আরও উন্মুক্ত উত্তর প্রত্যাশিত ছিল, আমি এগুলিকে বলেছি এটি বৈধ "তদন্তের সুযোগ" হিসাবে দেখতে পাবে।
উদাহরণস্বরূপ, কেবলমাত্র সি-তে কোড করা হয়েছে এবং কখনও সি ++ এ নেই, আমি অস্পষ্টতার বাইরে উত্তর দিতে পারব না "সি ++ অবজেক্ট অরিয়েন্টেড কোডিং সমর্থন করে?"।
কিছু লোক লক্ষ্য করেছেন যে বিপুল পরিমাণ প্রোগ্রামিং জব আবেদনকারী যারা কোডটি মোটেও লিখতে পারেন না । সুতরাং, হ্যাঁ, "সুস্পষ্ট" প্রশ্ন জিজ্ঞাসা করা সঠিকভাবে বোঝায়।
তাদের একটি পুরো গুচ্ছ আছে। এমন একটি অসীম লোক রয়েছে যাদের বোকামি লেকচারার রয়েছে যারা সি-স্ট্রিং এবং new
এবং delete
, অথবা মেয়াদোত্তীর্ণ টিউটোরিয়াল বা খারাপ বই পড়েন, যারা "সি ++" শিখেন তবে প্রকৃতপক্ষে সি, যারা ভাবেন যে দুটি খুব কাছাকাছি।
অবশ্যই, আপনি যদি কোনও নিয়োগকর্তা হন, তবে তারা যে একই বা এমনকি অনুরূপ তা বলা বড় সতর্কতা আলো light
আরও কিছু লোক রয়েছে (যেমন আমার মতো) যারা সি শিখার আগে সি ++ শিখেছিলেন
আমি নিশ্চিত আপনি পার্থক্যগুলি জানেন, তবে আপনি যদি এমন একজন শিক্ষার্থী হন যা কেবলমাত্র একটি সি ++ শ্রেণি পেয়েছে, এবং কোন সি শ্রেণি নেই তবে সি +++ এর যে অংশগুলি সি সুসংগত নয় সেগুলি সুস্পষ্ট হবে না।
আমি শিখেছি আরও কিছু স্পষ্ট পার্থক্য (সম্পূর্ণ তালিকা নয়) ( ) স্ট্রাক্ট ডেটা টাইপগুলি মূলত ফাংশনগুলি ধারণ করতে পারে না এবং ব্যক্তিগত সদস্য থাকতে পারে না, অর্থাত একটি বিমূর্ত ডেটা টাইপের বৈধতা নিয়ম প্রয়োগ করা খুব কঠিন meaning সিতে ( ) ক্লাসগুলি সি ( ) এ এম্পার্স্যান্ড অপারেটর ব্যবহার করে রেফারেন্স দিয়ে পাস করা যায় না এটি নির্দিষ্ট করে C ++ ( ) সি স্ট্রিম বা টেম্পলেটগুলি (*) ম্যালোক সমর্থন করে না এবং বিনামূল্যে কেবল সিটিতে ব্যবহারের জন্য এবং এটিতে নয় সি ++
দুর্ভাগ্যক্রমে, আমি মনে করি এটি আরও বেশি সাধারণ হয়ে উঠছে।
আমি মনে করি যে তরুণ প্রোগ্রামাররা নতুনভাবে প্রযুক্তিগত স্কুল (বা যেখানে তারা তাদের দক্ষতা শিখেন) থেকে সেকেলে পুরানো ভাষা যেমন সি, সি ++, লিস্প, ওক্যামেল ইত্যাদি শিখেন না তারা কেবল "সি # প্রোগ্রামার" বা "জাভা প্রোগ্রামার" হিসাবে প্রকাশিত হন come ", ইত্যাদি এবং যখন তারা কোনও চাকরি খুঁজে পান, তখন তারা অন্য ভাষা শেখার সাথে নিজেকে চ্যালেঞ্জ জানায় না।
অবশ্যই কিছু আছে যা আছে, তবে আমি যাদের সাথে কাজ করেছি তাদের থেকে, তরুণ প্রোগ্রামারদের এই প্যাটার্নটি অনুসরণ করার জন্য একটি সাধারণ প্রবণতা রয়েছে।
দাবি অস্বীকার: যেহেতু আমি শিক্ষার কথা বলছি, তখন অবশ্যই শিক্ষার ক্ষেত্রে জোর দেওয়া হচ্ছে তা নিয়ে দেশে দেশে অবশ্যই পার্থক্য থাকতে পারে।
সম্ভবত আক্ষরিক নয়, তারা মনে করে যে সি ++ এবং সি এক এবং একই, তবে সত্যই বুঝতে এবং সি ++ এর বিভিন্ন বৈশিষ্ট্যগুলি ব্যবহার করতে সক্ষম হওয়ার ক্ষেত্রে, হ্যাঁ।
প্রধান কারণ হ'ল আপনার জীবনবৃত্তান্ত / সিভিতে ভাষা / সরঞ্জাম তালিকা বাইনারি প্রকৃতি। মূলত, স্ট্যান্ডার্ডটি মনে হয় যে আপনি যদি কোনও ভাষা সংকলন এবং চালনার জন্য "হ্যালো ওয়ার্ল্ড" পেয়ে থাকেন তবে এটি আপনার জীবনবৃত্তান্ত / সিভিতে তালিকাভুক্ত করা ঠিক নয়।
এটি হ'ল, "হ্যালো, ওয়ার্ল্ড!" এর সি সংস্করণ! C ++ তেও সংকলন করে এবং চালায়। সুতরাং, অন্য কোনও তথ্য অনুপস্থিত, একটি জীবনবৃত্তান্তে "সি ++" দেখার সমস্ত কিছুই আমাকে বলে যে এই ব্যক্তি "হ্যালো, ওয়ার্ল্ড!" পেতে যথেষ্ট পরিমাণে সি জানেন! চলমান, এবং জানে যে বেশিরভাগ সি প্রোগ্রাম সি ++ তে সংকলন করবে।
দেওয়া হয়েছে, আমি সাক্ষাত্কারে যে সামান্য একটি তদন্ত প্রয়োজন হবে। আমি সম্ভবত "হ্যাঁ / না" জিজ্ঞাসা করে এটি করতাম না "আপনি কি পার্থক্যটি জানেন?" প্রশ্ন, সংক্ষেপে কারণ এটির একটি সুস্পষ্ট "ডান" উত্তর রয়েছে। আমি সম্ভবত প্রার্থীকে জিজ্ঞাসা করব যে সে কোন ভাষাটি ভাল পছন্দ করেছে, কেন, এবং যদি সে চয়ন না করে তবে তার কোনও সুবিধা ছিল।
উত্তর
হ্যাঁ, এটি সাধারণ। আমি নিজে, সহকর্মীরা বা তৃতীয় পক্ষের লাইব্রেরি কোডটি এই পরিস্থিতিটি দেখেছি।
নিজেই, উদাহরণস্বরূপ, কখনও কখনও অন্যান্য প্রোগ্রামিং ভাষা বা প্রোগ্রামিং ফ্রেমওয়ার্কগুলির সাথে কাজ করেন এবং "খাঁটি সি" বা "সি ++" লাইব্রেরিগুলির সাথে লিঙ্ক করতে বা আপডেট করতে হয়।
আমার সবেমাত্র কিছু "খাঁটি সি" কোড সংশোধন করার সমস্যা হয়েছিল। এবং "নতুন" এবং "মোছা" মেমরি বরাদ্দকরণের ক্রিয়াগুলি ব্যবহার করে, এটি "সি ++"। বাকী কোডটি উদ্দেশ্যভিত্তিক ছিল না
সংকলকটি সি ++ ছিল। পরে, আমি অন্য একটি সংকলক মামলা করেছিলাম এবং ত্রুটিটি আবিষ্কার করেছি।
বোনাস
কেউ যদি মুখে মুখে, বা লিখিত পরীক্ষায় বা ওয়েব অনলাইন পরীক্ষায় জিজ্ঞাসা করে:
"আপনি কি সি বা সি ++ এর মধ্যে পার্থক্য জানেন?"
এবং আপনি "হ্যাঁ" বা "না" উত্তর দিন।
তাদের সত্যই অর্থ:
"আপনি কি আমাকে সি বা সি ++ এর মধ্যে পার্থক্য জানেন?
সুতরাং, আপনাকে উত্তর দিতে হবে:
"হ্যাঁ। পার্থক্যটি তার সি ++ এর অবজেক্ট ওরিয়েন্টেড, যদিও, আপনি পিছনের সামঞ্জস্যের জন্য সি ++ প্রোগ্রামের ভিতরে খাঁটি সি ব্যবহার করতে পারেন।"
কখনও কখনও, তারা আপনাকে "যদি আপনি দয়া করে আমাকে বলুন" জিজ্ঞাসা করবেন না এবং তারা ধরে নেবে যে আপনি জানেন না। শুধু "হ্যাঁ", বা "না" উত্তর দিন না।
সম্পাদন করা
অগ্রণী হিসাবে, নোট করুন যে এই উত্তরটির অর্থ এই ঘোষণার জন্য নয় যে কোনও পার্থক্য নেই বা আমি পার্থক্যগুলি জানার জন্য দাবী করি, বা এমনকি সি বা সি ++ এর মধ্যে "হ্যালো ওয়ার্ল্ড" এর চেয়েও জানি। রেফারেন্সের শর্তগুলি ফ্রেম করে এটি প্রশ্নের উত্তর, উল্লেখ করে যে প্রচুর লোক প্রাথমিক পার্থক্য জানে (যেমন একটির +
নামে কিছু চরিত্র রয়েছে) এবং খুব কম লোকই সমস্ত বা এমনকি বেশিরভাগ পার্থক্য জানতে পারবে।
এটি আপনাকে 'প্রোগ্রামার' বলতে কী বোঝায় এবং 'পার্থক্য' বলতে কী বোঝায় তা নির্ভর করে।
আমি একজন 'প্রোগ্রামার' (যদিও আমি নিজেকে একটি বিকাশকারী বলি) এবং আমি সি এবং সি ++ এর মধ্যে যে কোনও বাস্তব পার্থক্য দিতে লড়াই করছি। যদি টিপানো হয় তবে আমি সম্ভবত বলতে পারি যে সি ++ সি এর একটি সুপারসেট যার নাম স্থান এবং উত্তরাধিকার রয়েছে; স্মৃতি নিয়ে কাজ করার বিভিন্ন উপায়। আমি কিছু বাগ প্যাচ করার জন্য বা আপনার বিদ্যমান প্রোগ্রামে কিছু পরিবর্তন করার জন্য যথেষ্ট জানি তবে আমি সি বা সি ++ এর সাধারণ ইউটিলিটি ছাড়া আর কিছু লেখার কল্পনাও করতে পারি না। আমি এগুলি পেতে যথেষ্ট জানি, তবে আমি সেগুলিকে কোনও একটিরই "জ্ঞান" হিসাবে আঁকিনা।
আমি অন্যান্য 'প্রোগ্রামার' (এছাড়াও বিকাশকারী) জানি, যারা আপনাকে জাভা এবং ফরট্রান, বা জাভাস্ক্রিপ্ট এবং পাসকালের মধ্যে পার্থক্যটিও জানায় না। তারা যা করে তাতে তারা ভাল এবং তারা পদ্ধতিগত ভাষাগুলি করে না।
তারপরে এমন কয়েক মিলিয়ন মধ্যম প্রোগ্রামার রয়েছে যারা প্রতিদিনের সাথে কেবল তাদের একক ভাষা জেনে থাকে।
'পার্থক্য' শব্দটি উদ্বেগজনক। আমি উপরে কিছু পার্থক্য হিসাবে যা দেখছি তা উল্লেখ করেছি, তবে আমি জানি তারা চূড়ান্ত এবং সম্পূর্ণ নয়। খুব কম লোকই প্রতিটি পার্থক্য জানতে পারবেন - আরও অনেক লোক অবজেক্ট অরিয়েন্টেশন সম্পর্কে কিছু অস্পষ্ট উত্তর (যেমন আমার কাছে) দিতে সক্ষম হবেন।
কোনও প্রোগ্রামার সি এবং সি ++ এর মধ্যে পার্থক্য না জানার পক্ষে কি সাধারণ?
বিশ বছর আগে? হ্যাঁ.
আজ? তেমন বেশি না.
এর কারণ হ'ল প্রোগ্রামিং ল্যান্ডস্কেপটি বেশ বড় আকারে পরিবর্তিত হয়েছে। আজকের অনেক প্রোগ্রাম ওয়েব-ভিত্তিক; এমনকি ডেস্কটপগুলির জন্য লিখিত প্রোগ্রামগুলি সি বা সি ++ এর চেয়ে উচ্চ স্তরের ভাষায় লেখা যেতে পারে। যেমন, আপনি যদি এমন কোনও প্রোগ্রামার না হন যিনি ওএস কোড লেখেন তবে আপনি দুটি ভাষার কোনওটির সম্পর্কে খুব বেশি জানেন না।
প্রোগ্রামিং মৌলিক বিষয়গুলি সম্পর্কে আপনি কতটা জানেন তা বিচার করার জন্য একটি সাক্ষাত্কারে এই প্রশ্নটি জিজ্ঞাসা করতে পারে; আপনি যদি সি এবং সি ++ এর মধ্যে পার্থক্য জানেন তবে আপনি সম্ভবত অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং কী তা জানেন, আপনি সম্ভবত গ্রন্থাগার এবং সংকলকগুলি বুঝতে পারেন, আপনি মেমরি ফাংশন, রেফারেন্স, পয়েন্টারগুলি বুঝতে পারেন .... এমন অনেক কিছুই যা আজকের প্রোগ্রামিং ভাষাগুলিকে প্রভাবিত করেছে । আমি সি ++ বেশি ব্যবহার করি না (এবং আমি সত্যিই বলতে পারি না যে আমি যে কোনও ভাষায় একটি দুর্দান্ত প্রোগ্রামার; বুদ্ধি সময় সাথে আসবে) তবে আমি বলতে পারি যে সি ++ এর সাথে আমার অভিজ্ঞতা অবশ্যই আমাকে আরও উন্নত প্রোগ্রামার হিসাবে পরিণত করেছে।