বেসিক স্তর:
আসুন বিষয়গুলিকে সহজতম এবং সবচেয়ে বেসিক স্তরে দেখি।
গণিতের জন্য, আমাদের কাছে রয়েছে:
2 + 3 = 5
আমি যখন খুব খুব ছোট ছিলাম সে সম্পর্কে শিখেছি। আমি সর্বাধিক প্রাথমিক উপাদানগুলি দেখতে পারি: দুটি বস্তু এবং তিনটি বস্তু। গ্রেট।
কম্পিউটার প্রোগ্রামিংয়ের জন্য, বেশিরভাগ লোকের উচ্চ স্তরের ভাষা ব্যবহার করার ঝোঁক। কিছু উচ্চ-স্তরের ভাষা এমনকি সি সি এর মতো নিম্ন স্তরের ভাষাগুলির একটিতে "সংকলন" করতে পারে Assembly অ্যাসেম্বলি ভাষা তখন মেশিন কোডে রূপান্তরিত হয়। অনেক লোক মনে করেন জটিলতা সেখানেই শেষ হয়ে যায়, তবে তা হয় না: আধুনিক সিপিইউগুলি মেশিন কোডকে নির্দেশ হিসাবে গ্রহণ করে, তবে প্রকৃতপক্ষে সেই নির্দেশাবলী কার্যকর করতে "মাইক্রো কোড" চালায়।
এর অর্থ হ'ল, সর্বাধিক প্রাথমিক স্তরে (কাঠামোর সহজতম ব্যবহারের সাথে), আমরা এখন মাইক্রো-কোড নিয়ে কাজ করছি, যা হার্ডওয়্যারটিতে এম্বেড থাকে এবং যা বেশিরভাগ প্রোগ্রামার সরাসরি ব্যবহার করেন না, আপডেটও করেন না। প্রকৃতপক্ষে, কেবলমাত্র বেশিরভাগ প্রোগ্রামারই মাইক্রো কোড স্পর্শ করে না (মাইক্রো কোডের চেয়ে 0 স্তর উচ্চতর), বেশিরভাগ প্রোগ্রামার মেশিন কোড স্পর্শ করে না (মাইক্রো কোডের তুলনায় 1 স্তর বেশি), এমনকি সমাবেশও নয় (মাইক্রো কোডের চেয়ে 2 স্তর বেশি) ( কলেজের সময় কিছুটা প্রথাগত প্রশিক্ষণের জন্য বাদে)। বেশিরভাগ প্রোগ্রামার মাত্র 3 বা তার বেশি স্তর উচ্চতর সময় ব্যয় করবে।
তদ্ব্যতীত, আমরা যদি অ্যাসেমব্লির দিকে লক্ষ্য করি (যা লোকেরা সাধারণত পায় তত নিম্ন স্তরের), প্রতিটি স্বতন্ত্র পদক্ষেপটি এমন ব্যক্তিদের দ্বারা সাধারণত বোঝা যায় যাঁরা প্রশিক্ষিত হয়েছেন এবং সেই পদক্ষেপটির ব্যাখ্যা করার মতো সংস্থান আছে। এই অর্থে, সমাবেশ উচ্চতর স্তরের ভাষার চেয়ে অনেক সহজ। তবে, সমাবেশটি এত সহজ যে জটিল কাজ সম্পাদন করা বা এমনকি সাধারণ কাজগুলি করা খুব ক্লান্তিকর। উচ্চ স্তরের ভাষা আমাদের সে থেকে মুক্ত করে।
"রিভার্স ইঞ্জিনিয়ারিং" সম্পর্কিত একটি আইনে একজন বিচারক ঘোষণা করেছিলেন যে কোডটি যদি তাত্ত্বিকভাবে একবারে একটি বাইট পরিচালনা করা যায় তবে আধুনিক প্রোগ্রামগুলি কয়েক মিলিয়ন বাইট জড়িত, তাই কিছু ধরণের রেকর্ড (যেমন কোডের অনুলিপি) কেবল তাদের জন্য তৈরি করতে হবে সম্ভাব্য হওয়ার চেষ্টা (সুতরাং অভ্যন্তরীণ বিকাশকে কপিরাইট আইনের সাধারণীকরণের "কপি না করার" নিয়মের লঙ্ঘন হিসাবে বিবেচনা করা হত না।) (আমি সম্ভবত অননুমোদিত সেগা জেনেসিস কার্তুজ তৈরি করার কথা ভাবছি, তবে গেম জিনির মামলার সময় কিছু বলা হয়েছে বলে মনে হতে পারে)। )
আধুনিকিকরণ:
আপনি কি 286s এর জন্য কোড বোঝাচ্ছেন? অথবা আপনি 64-বিট কোড চালাচ্ছেন?
গণিতে মৌলিক উপাদানগুলি ব্যবহার করা হয় যা সহস্রাব্দের পরে ফিরে আসে। কম্পিউটারের সাহায্যে লোকেরা সাধারণত দুই দশক পুরানো কোনও কিছুর জন্য বিনিয়োগকে অযথা সম্পদ অপ্রয়োজনীয় বলে মনে করেন। তার মানে গণিত অনেক বেশি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা যেতে পারে।
ব্যবহৃত সরঞ্জামগুলির মান:
আমাকে শিখানো হয়েছিল (আমার চেয়ে আরও বেশি আনুষ্ঠানিক কম্পিউটার প্রোগ্রামিং প্রশিক্ষণের এক বন্ধু দ্বারা) যে সি-স্পেসিফিকেশনগুলি পূরণ করে কোনও বাগ-মুক্ত সি সংকলক বলে কোনও জিনিস নেই। এটি কারণ সি ভাষা মূলত একটি স্ট্যাকের উদ্দেশ্যে অসীম স্মৃতি ব্যবহার করার সম্ভাবনাটি ধরে নিয়েছে। স্পষ্টতই, এই ধরনের একটি অসম্ভব প্রয়োজনীয়তা যখন প্রকৃতপক্ষে কিছুটা সসীম প্রকৃত মেশিনগুলির সাথে কাজ করে এমন ব্যবহারযোগ্য সংকলক তৈরির চেষ্টা করেছিল যেগুলি এড়িয়ে যেতে হয়েছিল।
অনুশীলনে, আমি খুঁজে পেয়েছি যে উইন্ডোজ স্ক্রিপ্ট হোস্টে জেএসক্রিপ্টের সাহায্যে আমি অবজেক্টগুলি ব্যবহার করে অনেক ভাল করতে সক্ষম হয়েছি। (আমি পরিবেশটি পছন্দ করি কারণ নতুন কোডটি চেষ্টা করার জন্য প্রয়োজনীয় টুলসটি মাইক্রোসফ্ট উইন্ডোজের আধুনিক সংস্করণে অন্তর্নির্মিত ছিল)) এই পরিবেশটি ব্যবহার করার সময়, আমি খুঁজে পেয়েছি যে কখনও কখনও কীভাবে অবজেক্টটি কাজ করে সে সম্পর্কে সহজে সন্ধানযোগ্য কোনও দলিল নেই। যাইহোক, অবজেক্টটি ব্যবহার করা এত উপকারী, আমি যাইহোক এটি করি। সুতরাং আমি যা করব তা হল কোড লেখা, যা শিংয়ের বাসা হিসাবে বগী হতে পারে এবং একটি সুন্দর স্যান্ডবক্সযুক্ত পরিবেশে এটি করতে পারি যেখানে আমি এর প্রভাবগুলি দেখতে পারি এবং এর সাথে ইন্টারঅ্যাক্ট করার সময় অবজেক্টের আচরণগুলি সম্পর্কে জানতে পারি।
অন্যান্য ক্ষেত্রে, কখনও কখনও কেবল যখন কোনও জিনিসটি কীভাবে আচরণ করে তা অনুধাবন করার পরে, আমি দেখতে পেলাম যে বস্তুটি (অপারেটিং সিস্টেমের সাথে বান্ডিল করা) বগী, এবং এটি একটি জ্ঞাত সমস্যা যা মাইক্রোসফ্ট ইচ্ছাকৃতভাবে সিদ্ধান্ত নিয়েছে তা স্থির করা হবে না will ।
এই জাতীয় পরিস্থিতিতে, আমি কি ওপেনবিএসডি-র উপর নির্ভর করি, মাস্টারফুল প্রোগ্রামারদের দ্বারা তৈরি, যা নিয়মিতভাবে (বছরে দু'বার) নতুন রিলিজ তৈরি করে, 10+ বছরে "মাত্র দুটি রিমোট হোল" এর বিখ্যাত সুরক্ষা রেকর্ড সহ? (এমনকি তাদের কম গুরুতর সমস্যার জন্য ত্রুটিযুক্ত প্যাচ রয়েছে)) না, কোনওভাবেই না। আমি এ জাতীয় উন্নত মানের পণ্যটির উপর নির্ভর করি না, কারণ আমি এমন একটি ব্যবসায়ের পক্ষে কাজ করছি যা মাইক্রোসফ্ট উইন্ডোজ ব্যবহার করে এমন মেশিন সরবরাহকারী লোকদের সহায়তা করে এমন ব্যবসায়ের জন্য, যাতে আমার কোডটিতে কাজ করা দরকার।
ব্যবহারিকতা / ব্যবহারযোগ্যতার জন্য আমি প্ল্যাটফর্মগুলিতে লোকদের দরকারী বলে কাজ করা প্রয়োজন এবং এটি এমন একটি প্ল্যাটফর্ম যা সুরক্ষার জন্য বিখ্যাত খারাপ (যদিও সহস্রাব্দের প্রথম দিন থেকেই একই কোম্পানির পণ্যগুলি আরও খারাপ ছিল) ।
সারাংশ
কম্পিউটার প্রোগ্রামিং আরও ত্রুটিযুক্ত হওয়ার কারণ রয়েছে এবং এটি কম্পিউটার ব্যবহারকারীদের সম্প্রদায় গ্রহণ করে numerous প্রকৃতপক্ষে, বেশিরভাগ কোডটি পরিবেশে লিখিত যা ত্রুটি-মুক্ত প্রচেষ্টা সহ্য করবে না। (কিছু ব্যতিক্রম যেমন সুরক্ষা প্রোটোকল বিকাশ করা এ ক্ষেত্রে কিছুটা বেশি প্রচেষ্টা পেতে পারে)) ব্যবসায়ের আরও বেশি অর্থ বিনিয়োগ করতে না চাওয়ার কারণগুলি এবং গ্রাহকদের খুশি করতে কৃত্রিম সময়সীমা মিস করার সাধারণ কারণ ছাড়াও এর প্রভাব রয়েছে প্রযুক্তির পদযাত্রায় বলা হয়েছে যে আপনি যদি খুব বেশি সময় ব্যয় করেন তবে আপনি একটি অচল প্ল্যাটফর্মে কাজ করবেন কারণ এক দশকের মধ্যে জিনিসগুলি উল্লেখযোগ্যভাবে পরিবর্তিত হয়।
অফহ্যান্ড, আমি খুব খুব দরকারী এবং জনপ্রিয় ফাংশনগুলি কত সংক্ষিপ্ত ছিল তা অবাক করে দিয়ে স্মরণ করতে পারি, যখন আমি স্ট্রেন এবং আরআরসিপি-র জন্য কিছু উত্স কোড দেখেছি। উদাহরণস্বরূপ, স্ট্র্লেন "ইন্ট স্ট্রেন (চর * এক্স) {চর y = x; যখন ( (y ++)); রিটার্ন (yx) -1;}" এর মতো কিছু হতে পারে
তবে সাধারণ কম্পিউটার প্রোগ্রামগুলি এর চেয়ে দীর্ঘতর length এছাড়াও, প্রচুর আধুনিক প্রোগ্রামিং অন্যান্য কোডগুলি ব্যবহার করবে যা কম পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা হতে পারে, বা এমনকি বাগি হিসাবে পরিচিত। "নিম্ন স্তরের দ্বারা পরিচালিত বিবরণ" হিসাবে অনেকগুলি মিনটিয়া হাতছাড়া করে বাদ দিয়ে আজকের সিস্টেমগুলি সহজেই যা ভাবা যায় তার চেয়ে অনেক বেশি বিস্তৃত।
এই বাধ্যতামূলক জটিলতা এবং জটিল এবং এমনকি ভুল সিস্টেমের সাথে কাজ করার নিশ্চয়তা কম্পিউটার প্রোগ্রামিংকে অনেক গণিতের তুলনায় অনেক বেশি হার্ডওয়্যার করে তোলে যেখানে জিনিসগুলি খুব সহজ স্তরে নেমে আসে।
আপনি যখন গণিতে জিনিসগুলি ভেঙে দেন, তখন শিশুরা বুঝতে পারে এমন পৃথক টুকরা আপনি পেয়ে যান। বেশিরভাগ লোক গণিতে বিশ্বাস রাখে; কমপক্ষে প্রাথমিক গাণিতিক (বা, কমপক্ষে, গণনা)
আপনি যখন হুডের নীচে কী ঘটছে তা দেখতে কম্পিউটার প্রোগ্রামিংটি ভেঙে ফেলেন, আপনি শেষ পর্যন্ত বৈদ্যুতিনভাবে কার্যকর করা ভাঙা মান এবং কোডের ভাঙ্গা বাস্তবায়ন শেষ করেন এবং শারীরিক বাস্তবায়ন মাইক্রোকোডের ঠিক এক ধাপ পরে যা বেশিরভাগ বিশ্ববিদ্যালয় প্রশিক্ষিত কম্পিউটার বিজ্ঞানীরা ডন করেন না don স্পর্শ করার সাহস করবেন না (যদি তারা এটি সম্পর্কে সচেতনও থাকে)।
আমি এমন কিছু প্রোগ্রামারদের সাথে কথা বলেছি যারা কলেজে বা সাম্প্রতিক স্নাতকদের যারা বাগ-ফ্রি কোড লিখতে পারে এই ধারণার প্রতি সম্পূর্ণ আপত্তি জানায়। তারা সম্ভাবনাটি লিখে ফেলেছে, এবং যদিও তারা স্বীকৃতি দিয়েছে যে কয়েকটি চিত্তাকর্ষক উদাহরণ (যা আমি দেখাতে সক্ষম হয়েছি) কিছু দৃing় বিশ্বাসযোগ্য যুক্তি, তারা এ জাতীয় নমুনাগুলিকে আপত্তিজনক বিরল তাত্পর্য বলে বিবেচনা করে এবং এখনও গণনা করতে সক্ষম হওয়ার সম্ভাবনাটি বাতিল করে দেয় যেমন উচ্চতর মান আছে উপর। (আমরা গণিতে আরও নির্ভরযোগ্য ভিত্তির চেয়ে অনেক অনেক বেশি মনোভাব))