সেই দিনগুলিতে, বিকাশকারীরা ধাতবটির খুব কাছাকাছি কাজ করছিলেন। সি মূলত সমাবেশের জন্য একটি উচ্চ স্তরের প্রতিস্থাপন ছিল, যা আপনি যেমন পেতে পারেন হার্ডওয়্যারটির প্রায় কাছাকাছি, তাই কোডিং সমস্যা সমাধানে দক্ষ হওয়ার জন্য আপনার পয়েন্টার প্রয়োজন স্বাভাবিক। তবে পয়েন্টারগুলি হ'ল তীক্ষ্ণ সরঞ্জাম, যা যদি অযত্নে ব্যবহার করা হয় তবে বড় ক্ষতি হতে পারে। এছাড়াও, পয়েন্টারগুলির সরাসরি ব্যবহারের ফলে অনেকগুলি সুরক্ষা সমস্যার সম্ভাবনা খুলে যায়, যা তখন কোনও সমস্যা ছিল না (১৯ 1970০ সালে, বেশ কয়েকটি বিশ্ববিদ্যালয় জুড়ে ইন্টারনেট প্রায় কয়েক ডজন মেশিন নিয়েছিল, এবং এমনকি এটির মতো বলাও হয়নি) was ...), তবে আরও বেশি গুরুত্বপূর্ণ হয়ে উঠেছে। সুতরাং আজকাল উচ্চ স্তরের ভাষাগুলি সচেতনভাবে কাঁচা মেমরি পয়েন্টারগুলি এড়াতে ডিজাইন করা হয়েছে।
"VB.Net বা জাভাতে সম্পন্ন অগ্রণী জিনিসগুলি সি তে সম্ভব নয়" এই কথাটি বলে খুব কম সীমাবদ্ধ দৃষ্টিভঙ্গি দেখায়: কমপক্ষে :-)
প্রথমত, এই সমস্ত ভাষা (এমনকি সমাবেশ) টিউরিং সম্পূর্ণ তাই তাত্ত্বিকভাবে একটি ভাষায় যা কিছু সম্ভব, সব ক্ষেত্রেই সম্ভব। ভিসি. নেট বা জাভা কোডের টুকরোটি সংকলিত এবং কার্যকর করা হলে কী ঘটে তা ভেবে দেখুন: অবশেষে, এটি মেশিন কোডে অনুবাদ করা হয় (বা ম্যাপ করা হয়), কারণ মেশিনটি কেবল এটিই বোঝে। সি এবং সি ++ এর মতো সংকলিত ভাষায়, আপনি প্রকৃত উচ্চ স্তরের উত্স কোডের সমতুল্য মেশিন কোডের সম্পূর্ণ দেহটি এক বা একাধিক এক্সিকিউটেবল ফাইল / লাইব্রেরি হিসাবে পেতে পারেন। ভিএম ভিত্তিক ভাষাগুলিতে আপনার প্রোগ্রামের পুরো সমতুল্য মেশিন কোডের উপস্থাপনা পাওয়া আরও জটিল (এবং এমনকি এটি সম্ভবও নয়) তবে শেষ পর্যন্ত রানটাইম সিস্টেম এবং জেআইটির গভীর অবকাশগুলির মধ্যে এটি কোথাও রয়েছে।
এখন, অবশ্যই এটি একটি সম্পূর্ণ ভিন্ন প্রশ্ন যে কোনও সমাধান কোনও নির্দিষ্ট ভাষায় সম্ভব কিনা। কোনও বুদ্ধিমান বিকাশকারী সমাবেশে কোনও ওয়েব অ্যাপ লিখতে শুরু করবেন না :-) তবে এটি মনে রাখতে হবে যে এই উচ্চ স্তরের ভাষাগুলির বেশিরভাগ বা সমস্তগুলি বিশাল পরিমাণ রানটাইম এবং শ্রেণিকালীন লাইব্রেরি কোডের উপরে নির্মিত, এর একটি বিশাল অংশ যা নিম্ন স্তরের ভাষায় প্রয়োগ করা হয়, সাধারণত সিতে in
সুতরাং প্রশ্ন পেতে,
আপনি কি মনে করেন তরুণদের কাছে নির্দেশকের উপর জ্ঞান গুরুত্বপূর্ণ [...]?
পয়েন্টার পিছনে ধারণা অপ্রত্যক্ষ্যতার । এটি একটি অত্যন্ত গুরুত্বপূর্ণ ধারণা এবং আইএমএইচও প্রতিটি ভাল প্রোগ্রামারকে এটি একটি নির্দিষ্ট স্তরে উপলব্ধি করা উচিত। এমনকি যদি কেউ উচ্চ স্তরের ভাষার সাথে এককভাবে কাজ করে তবে ইন্ডিरेশন এবং রেফারেন্সগুলি এখনও গুরুত্বপূর্ণ। এটি বুঝতে ব্যর্থ হবার অর্থ খুব শক্তিশালী সরঞ্জামগুলির একটি সম্পূর্ণ শ্রেণিটি ব্যবহারে অক্ষম হওয়া, দীর্ঘমেয়াদে নিজের সমস্যা সমাধানের ক্ষমতা গুরুতরভাবে সীমাবদ্ধ করে।
সুতরাং আমার উত্তর হ্যাঁ, আপনি যদি সত্যই একজন ভাল প্রোগ্রামার হতে চান তবে আপনাকে অবশ্যই পয়েন্টারগুলি বুঝতে হবে (পাশাপাশি পুনরাবৃত্তি - এটি উদীয়মান বিকাশকারীদের জন্য অন্যান্য সাধারণ হোঁচট খাচ্ছে)। আপনার এটি দিয়ে শুরু করার দরকার নেই - আজকের দিনে সি ভাষার প্রথম ভাষা হিসাবে অনুকূল বলে আমি মনে করি না। তবে এক পর্যায়ে একজনকে দিকনির্দেশনার সাথে পরিচিত হওয়া উচিত। এটি ছাড়া আমরা কখনই বুঝতে পারি না যে আমরা কীভাবে সরঞ্জামগুলি, গ্রন্থাগারগুলি এবং ফ্রেমওয়ার্কগুলি ব্যবহার করছি বাস্তবে কীভাবে কাজ করে। এবং একজন কারিগর যারা বুঝতে পারেন না যে কীভাবে তার সরঞ্জামগুলি কাজ করে তা খুব সীমাবদ্ধ। যথেষ্ট উপযুক্ত, উচ্চ স্তরের প্রোগ্রামিং ভাষাগুলিতেও এটির উপলব্ধি পেতে পারে। একটি ভাল লিটমাস টেস্ট সঠিকভাবে দ্বিগুণ সংযুক্ত তালিকার প্রয়োগ করছে - আপনি যদি এটি আপনার পছন্দের ভাষায় করতে পারেন তবে আপনি দাবি করতে পারেন যে আপনি সঠিকভাবে ইন্ডিরিশনকে ভালভাবে বুঝতে পেরেছেন।
তবে অন্য কোনও কিছুর জন্য না হলে, আমাদের সেই প্রাচীন প্রোগ্রামারদের প্রতি শ্রদ্ধা জানার জন্য করা উচিত যারা তাদের কাছে হাস্যকর সহজ সরঞ্জামগুলি ব্যবহার করে (আমরা এখনকার তুলনায়) তুলনায় অবিশ্বাস্য জিনিস তৈরি করতে পেরেছি। আমরা সবাই দৈত্যের কাঁধে দাঁড়িয়ে আছি এবং আমাদের নিজেরাই দৈত্য বলে ভান করার পরিবর্তে এটি স্বীকৃতি দেওয়া আমাদের পক্ষে ভাল does