গ্লোবাল এডিট: সরি বলছি, আমি সবাই বরখাস্ত হয়েছি এবং প্রচুর বাজে কথা লিখেছি। সবেমাত্র একটি পুরানো গিজার রেটিং।
আমি বিশ্বাস করতে চেয়েছিলাম সি কে রেহাই দেওয়া হয়েছে তবে হায় আফসোস সি 11 এর পরে এটি সি ++ এর সাথে সমান হয়। স্পষ্টতই, সংকলকটি এক্সপ্রেশনগুলিতে পার্শ্ব প্রতিক্রিয়াগুলির সাথে কী করবে তা জেনে এখন একটি "সিঙ্ক্রোনাইজেশন পয়েন্টের আগে অবস্থিত" এর উপর ভিত্তি করে কোড সিকোয়েন্সগুলির আংশিক ক্রম জড়িত একটি সামান্য গণিত ধাঁধা সমাধান করতে হবে।
আমি কে ও আর এর দিনগুলিতে কিছু সমালোচিত রিয়েল-টাইম এম্বেডেড সিস্টেমগুলি আবার নকশা করে এবং প্রয়োগ করেছি (একটি বৈদ্যুতিক গাড়ির কন্ট্রোলার যা ইঞ্জিনটি পরীক্ষায় না রাখলে লোকেরা নিকটবর্তী প্রাচীরের সাথে বিধ্বস্ত হওয়া লোক পাঠাতে পারে, একটি 10 টন শিল্প রোবট যা সঠিকভাবে কমান্ড না দিলে লোককে স্ক্ল্যাশে ফেলতে পারে এবং এমন একটি সিস্টেম স্তর যা ক্ষতিগ্রস্থ হলেও কয়েক ডজন প্রসেসর তাদের ডেটা বাসটিকে 1% এরও কম সিস্টেমের ওভারহেড দিয়ে শুকিয়ে ফেলতে পারে)।
অপরিজ্ঞাত এবং অনির্ধারিত মধ্যে পার্থক্য পেতে আমি খুব বুদ্ধিমান বা বোকা হতে পারি, তবে আমি মনে করি সমবর্তী সম্পাদনা এবং ডেটা অ্যাক্সেস বলতে কী বোঝায় তার সম্পর্কে এখনও আমার বেশ ভাল ধারণা আছে। আমার যুক্তিযুক্তভাবে মতামত অনুসারে, সি ++ এবং এখন সি ছেলেরা তাদের পোষা ভাষার সাথে সিঙ্ক্রোনাইজেশন সংক্রান্ত বিষয়গুলি গ্রহণ করার এই আবেশটি ব্যয়বহুল পাইপ স্বপ্ন। হয় আপনি জানেন যে যুগপত এক্সিকিউশনটি কী, এবং আপনার এই গিজমোগুলির কোনও প্রয়োজন নেই, বা আপনার প্রয়োজন নেই, এবং আপনি বিশ্বের পক্ষে এটির সাথে ঝামেলা করার চেষ্টা করবেন না do
চোখের জল সরবরাহকারী মেমরি বাধা বিমূর্ততাগুলির এই সমস্ত ট্রাকলোড কেবলমাত্র বহু-সিপিইউ ক্যাশে সিস্টেমের সীমাবদ্ধতার অস্থায়ী সেটগুলির কারণে, এগুলির সবগুলি সাধারণ ওএস সিঙ্ক্রোনাইজেশন অবজেক্টগুলিতে নিরাপদে এনক্যাপুলেটেড করা যেতে পারে যেমন উদাহরণস্বরূপ, মিউটেক্স এবং শর্ত ভেরিয়েবল সি ++ অফার.
এই এনক্যাপসুলেশনটির ব্যয়টি পারফরম্যান্সে এক মিনিট ড্রপ যা তুলনায় সূক্ষ্ম দানাযুক্ত নির্দিষ্ট সিপিইউ নির্দেশাবলী ব্যবহার করতে পারে তার কিছু ক্ষেত্রে। শব্দ (বা একটি
volatile
#pragma dont-mess-with-that-variable
সকলের জন্য, আমি একটি সিস্টেম প্রোগ্রামার হিসাবে, যত্ন) মেমরি অ্যাক্সেসগুলি পুনরায় সাজানো বন্ধ করতে সংকলকটি বলার পক্ষে যথেষ্ট ছিল। অ্যাডহক সিপিইউ নির্দিষ্ট নির্দেশাবলীর সাথে নিম্ন স্তরের ড্রাইভার এবং ওএস কোড ছিটানোর জন্য সরাসরি এএসএম নির্দেশাবলী সহ সর্বোত্তম কোডটি সহজেই উত্পাদিত হতে পারে। অন্তর্নিহিত হার্ডওয়্যার (ক্যাশে সিস্টেম বা বাস ইন্টারফেস) কীভাবে কাজ করে তার অন্তরঙ্গ জ্ঞান ব্যতীত আপনি যেভাবেই অকেজো, অদক্ষ বা ত্রুটিযুক্ত কোডটি লিখতে বাধ্য bound
volatile
কীওয়ার্ড এবং ববটির এক মিনিটের সামঞ্জস্য হ'ল সকলেই হতবাক্য তবে নিম্ন স্তরের প্রগ্রেমার চাচা। তার পরিবর্তে, সি ++ ম্যাথ গণিতের সাধারণ গ্যাংয়ের মাঠের দিনটি ছিল আরও একটি অজানা বিমূর্ততা ডিজাইন করার জন্য, অস্তিত্বহীন সমস্যাগুলির সন্ধানের জন্য সমাধানগুলি ডিজাইন করার এবং সাধারণ সংকলকটির স্পেকস সহ একটি প্রোগ্রামিং ভাষার সংজ্ঞা ভুল করার জন্য তাদের সাধারণ প্রবণতাটির ফলস্বরূপ।
কেবলমাত্র এই সময় সি এর একটি মৌলিক দিককেও অচল করার জন্য পরিবর্তনের প্রয়োজন, কারণ এই "বাধাগুলি" সঠিকভাবে কাজ করতে নিম্ন স্তরের সি কোডেও উত্পন্ন করতে হয়েছিল। এটি অন্যান্য বিষয়গুলির মধ্যেও, কোনও ব্যাখ্যা বা ন্যায়সঙ্গততা ছাড়াই অভিব্যক্তির সংজ্ঞাটিতে সর্বনাশ করেছে।
একটি উপসংহার হিসাবে, এই সঙ্কলিত সি এর সংকলক থেকে কোনও সংকলক একটি সামঞ্জস্যপূর্ণ মেশিন কোড তৈরি করতে পারে তা এই সত্য যে কেবল 2000 + এর দশকের শেষের দিকে ক্যাশ সিস্টেমগুলির সম্ভাব্য অসামঞ্জস্যতা সহ সি ++ ছেলেরা যেভাবে মোকাবেলা করেছিল তার একটি সুদূরপ্রসারী পরিণতি।
এটি সি (এক্সপ্রেশন সংজ্ঞা) এর একটি মৌলিক দিকটির একটি ভয়াবহ জগাখিচুড়ি করেছে, যাতে সি প্রোগ্রামারদের সংখ্যাগরিষ্ঠ - যারা ক্যাশে সিস্টেম সম্পর্কে কোনও অভিবাদন দেয় না, এবং যথাযথভাবে - এখন ব্যাখ্যা করতে গুরুদের উপর নির্ভর করতে বাধ্য হয় a = b() + c()
এবং মধ্যে পার্থক্য a = b + c
।
এই দুর্ভাগ্য অ্যারেতে কী হবে তা অনুমান করার চেষ্টা করা যাইহোক সময় এবং প্রচেষ্টাগুলির নিট ক্ষতি। সংকলক এটি যা তৈরি করবে তা নির্বিশেষে এই কোডটি রোগগত দিক থেকে ভুল। এটির সাথে একমাত্র দায়িত্বশীল জিনিসটি এটি বিনকে প্রেরণ করা।
ধারণাগতভাবে, পার্শ্ব প্রতিক্রিয়াগুলি সর্বদা প্রকাশের বাইরে চলে যায়, স্পষ্টভাবে পরিবর্তনের আগে বা পরে মূল্যায়নের আগে বা পৃথক বিবৃতিতে সংশোধন ঘটানোর তুচ্ছ চেষ্টা করে।
এই ধরণের শিট কোডটি 80 এর দশকে ন্যায়সঙ্গত হতে পারে, যখন আপনি কোনও সংকলক কোনও কিছুরই অনুকূলতা আশা করতে পারেন না। তবে এখন যে সংকলকগুলি বেশিরভাগ প্রোগ্রামারদের তুলনায় অনেক বেশি চালাক হয়ে উঠেছে, যা অবশিষ্ট রয়েছে তা শিট কোডের একটি অংশ।
আমি এই অপরিজ্ঞাত / অনির্ধারিত বিতর্কটির গুরুত্ব বুঝতেও ব্যর্থ হয়েছি। হয় আপনি সামঞ্জস্যপূর্ণ আচরণ সহ কোড উত্পন্ন করতে সংকলকটির উপর নির্ভর করতে পারেন বা আপনি পারবেন না। আপনি যেটিকে অনির্ধারিত বা অনির্ধারিত বলছেন তা একদম পয়েন্টের মতো মনে হচ্ছে।
আমার তর্কতর্কভাবে অবগত মতামতে, সি এর কে ও আর অবস্থায় ইতিমধ্যে যথেষ্ট বিপজ্জনক। একটি কার্যকর বিবর্তন হ'ল সাধারণ জ্ঞানের সুরক্ষা ব্যবস্থা যুক্ত করা। উদাহরণস্বরূপ, এই উন্নত কোড বিশ্লেষণ সরঞ্জামটি ব্যবহার করে চশমাগুলি কমপ্লায়ারকে কমপক্ষে চূড়ান্তভাবে সম্ভাব্য অবিশ্বাস্য কোড তৈরির পরিবর্তে কমপক্ষে চূড়ান্তভাবে কোনও কোড তৈরি করার পরিবর্তে, বোনার কোড সম্পর্কে সতর্কতা তৈরি করতে বাধ্য করে।
তবে পরিবর্তে ছেলেরা সিদ্ধান্ত নিয়েছে, উদাহরণস্বরূপ, সি ++ 17 এ একটি স্থির মূল্যায়ন আদেশ সংজ্ঞায়িত করতে। এখন প্রতিটি সফ্টওয়্যার প্রতিবন্ধকতা সক্রিয়ভাবে তার কোডটিতে পার্শ্ব প্রতিক্রিয়াগুলি উদ্দেশ্যমূলকভাবে উত্সাহিত করার জন্য উত্সাহিত করছে, এই দৃ in়তার সাথে বিশ্বাস রেখে যে নতুন সংকলকরা উদ্বেগজনকভাবে একটি নির্জনবাদী উপায়ে অবধি পরিচালনা করবে handle
কে অ্যান্ড আর কম্পিউটারের জগতের অন্যতম সত্য আশ্চর্য ছিল। বিশ টাকার বিনিময়ে আপনি ভাষাটির একটি বিস্তৃত স্পেসিফিকেশন পেয়েছেন (আমি একক ব্যক্তি কেবলমাত্র এই বইটি ব্যবহার করে সম্পূর্ণ সংকলক লিখতে দেখেছি), একটি চমৎকার রেফারেন্স ম্যানুয়াল (বিষয়বস্তু সারণীটি আপনাকে সাধারণত উত্তরের কয়েকটি পৃষ্ঠাতে নির্দেশ করবে) প্রশ্ন) এবং একটি পাঠ্যপুস্তক যা আপনাকে ভাষাটি বোধগম্যভাবে ব্যবহার করতে শেখাবে। আপনি ভাষাটি খুব, খুব বোকা কাজ করতে অপব্যবহার করতে পারেন এমন অসংখ্য উপায় সম্পর্কে যুক্তিযুক্ত উদাহরণ, উদাহরণস্বরূপ এবং বুদ্ধিমান শব্দগুলির সাহায্যে সম্পূর্ণ।
এত সামান্য লাভের জন্য সেই heritageতিহ্যটিকে ধ্বংস করা আমার কাছে নিষ্ঠুর অপচয় হিসাবে মনে হচ্ছে। তবে আবার আমি খুব ভালভাবে পয়েন্টটি সম্পূর্ণরূপে দেখতে ব্যর্থ হতে পারি। হতে পারে কিছু दयाশীল আত্মা আমাকে নতুন সি কোডের উদাহরণের দিকে নির্দেশ করতে পারে যা এই পার্শ্ব প্রতিক্রিয়াগুলির একটি উল্লেখযোগ্য সুবিধা নেয়?