কম্পিউটার কোড লেখার চেয়ে গাণিতিক প্রমাণগুলি লেখার চেয়ে বেশি ফল্ট-প্রুফ কেন?


190

আমি লক্ষ্য করেছি যে কোনও বাগ ছাড়াই কম্পিউটার প্রোগ্রাম লেখার চেয়ে কোনও ভুল না করে গাণিতিক প্রমাণগুলি লেখা আমার পক্ষে অনেক সহজ মনে হয়েছে।

দেখে মনে হচ্ছে এটি আমার অভিজ্ঞতা থেকে কিছু বেশি বিস্তৃত। বেশিরভাগ লোকেরা তাদের প্রোগ্রামিংয়ে সমস্ত সময় সফ্টওয়্যার বাগ তৈরি করে এবং ভুলটি কী তা সর্বদা তা জানাতে তাদের সংকলক রয়েছে। আমি এমন কোনও ব্যক্তির কথা শুনিনি যে যিনি একবারে কোনও বড় কম্পিউটার প্রোগ্রাম লিখেছেন তাতে কোনও ভুল নেই, এবং সম্পূর্ণ আত্মবিশ্বাস ছিল যে এটি বগল হবে bu (আসলে, খুব সহজেই কোনও প্রোগ্রামই বগল, এমনকি অনেকগুলি উচ্চ ডিবাগড) ones

তবুও লোকেরা সম্পূর্ণ কাগজপত্র বা গাণিতিক প্রমাণগুলির বই লিখতে পারে কোনও সংকলক ছাড়াই তাদের কোনও মতামত দেয় না যে তারা ভুল করেছে, এবং কখনও কখনও অন্যের কাছ থেকে প্রতিক্রিয়া না পেয়ে।

আমাকে পরিষ্কার করা যাক। এটি গাণিতিক প্রমাণগুলিতে ভুল করে না এমনটি বলার অপেক্ষা রাখে না, তবে হালকা অভিজ্ঞ গণিতবিদদের জন্যও ভুলগুলি সাধারণত সমস্যাযুক্ত হয় না এবং সংকলকের মতো কিছু "বাহ্যিক ওরাকল" এর সাহায্য ছাড়াই সমাধান করা যেতে পারে যা আপনার নির্দেশককে নির্দেশ করে ভুল।

আসলে, যদি এটি না হয়, তবে গণিত খুব কমই আমার পক্ষে সম্ভব বলে মনে হত।

সুতরাং এটি আমাকে প্রশ্ন জিজ্ঞাসা করতে পরিচালিত করেছিল: দোষহীন গাণিতিক প্রমাণগুলি লেখার ক্ষেত্রে এবং ফল্টলেস কম্পিউটার কোড লেখার সাথে এত আলাদা কী এটি তৈরি করে যাতে প্রাক্তনটি পরবর্তীটির চেয়ে অনেক বেশি ট্র্যাকটেবল হয়?

কেউ বলতে পারেন যে এটি কেবলমাত্র সত্য যে লোকেরা একটি সংকলকটির "বাহ্যিক ওরাকল" রয়েছে যা তাদের ভুলের দিকে নির্দেশ করে যা প্রোগ্রামারদের অলস করে তোলে, কোডটি কঠোরভাবে লেখার জন্য যা করা প্রয়োজন তা করতে বাধা দেয়। এই দৃষ্টিভঙ্গির অর্থ হ'ল যদি তাদের সংকলক না থাকে তবে তারা গণিতবিদদের মতো নির্দোষ হতে সক্ষম হবেন।

আপনি এই অনুপ্রেরণাকারী খুঁজে পেতে পারেন, কিন্তু আমার অভিজ্ঞতা প্রোগ্রামিং এবং গাণিতিক প্রমাণ লিখিত উপর ভিত্তি করে, এটা স্বজ্ঞাত মনে হয় যে এটি আসলে ব্যাখ্যা নয়। দুটি প্রচেষ্টা সম্পর্কে মূলত আলাদা কিছু বলে মনে হচ্ছে।

আমার প্রাথমিক চিন্তাটি হ'ল, পার্থক্য কী হতে পারে তা হ'ল একজন গণিতবিদের জন্য একটি সঠিক প্রমাণের জন্য কেবলমাত্র প্রতিটি লজিকাল পদক্ষেপই সঠিক হওয়া দরকার। প্রতিটি পদক্ষেপ যদি সঠিক হয় তবে পুরো প্রমাণটি সঠিক। অন্যদিকে, কোনও প্রোগ্রাম বগল হওয়ার জন্য, কেবলমাত্র কোডের প্রতিটি লাইনই সঠিক হতে হবে না, তবে প্রোগ্রামের প্রতিটি কোডের সাথে তার সম্পর্কও কাজ করতে হবে।

অন্য কথায়, যদি প্রমাণের ধাপটি সঠিক হয়, তবে ধাপে ওয়াইয়ের মধ্যে ভুল করা ধাপ কখনও গণ্ডগোল করবে না । তবে যদি কোডের একটি লাইন সঠিকভাবে লিখিত হয়, তবে লাইন মধ্যে একটি ভুল করা লাইন প্রভাবিত করবে , যাতে আমরা যখনই লাইন লিখি তখন আমাদের অন্যান্য সমস্ত লাইনের সাথে সম্পর্ক বিবেচনা করতে হবে। এ জাতীয় সীমাবদ্ধতার জন্য আমরা এনক্যাপসুলেশন এবং এই সমস্ত জিনিস ব্যবহার করতে পারি, তবে এটি সম্পূর্ণরূপে সরানো যায় না।এক্সওয়াইএক্স ওয়াই এক্স এক্সএক্সএক্সওয়াইএক্সএক্স

এর অর্থ হ'ল গাণিতিক প্রমাণে ত্রুটিগুলি পরীক্ষা করার পদ্ধতিটি প্রুফ-পদক্ষেপের সংখ্যায় মূলত রৈখিক, তবে কম্পিউটার কোডে ত্রুটিগুলি পরীক্ষা করার পদ্ধতি কোডের লাইনের সংখ্যায় মূলত সূচকীয়।

আপনি কি মনে করেন?

দ্রষ্টব্য: এই প্রশ্নের একটি বিশাল সংখ্যক উত্তর রয়েছে যা বিভিন্ন ধরণের তথ্য এবং দৃষ্টিকোণগুলি অন্বেষণ করে। আপনি উত্তর দেওয়ার আগে, দয়া করে এগুলি সমস্ত পড়ুন এবং আপনার যুক্ত করার জন্য নতুন কিছু আছে তবেই উত্তর দিন। অপ্রয়োজনীয় উত্তর বা উত্তর যা সত্যের সাথে মতামত ব্যাক আপ করে না, মুছে ফেলা হতে পারে।


3
আপনি কি প্রোগ্রামের জন্য নির্ভুলতার প্রমাণগুলি সম্পর্কে কাগজ এবং তত্ত্বীয় প্রবাদগুলিতে যান্ত্রিকীকরণের বিষয়ে সচেতন? উভয়ই বিদ্যমান এবং আপনার আপডেটের বিরোধিতা করছে। সত্য যে সাধারণভাবে শেখানো প্রোগ্রামিংয়ের সঠিকতা প্রমাণের সাথে প্রোগ্রামিংয়ের সাথে খুব একটা সম্পর্ক নেই।
ব্লেজারব্লেড

76
আমাকে একটি নথের উদ্ধৃতি মনে করিয়ে দেয়, আমি মনে করি "উপরের কোড থেকে সাবধান! আমি কেবল এটি সঠিক প্রমাণ করেছি, আমি কখনই এটি পরীক্ষা করে দেখিনি"
হ্যাগেন ভন ইটজেন

মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
গিলস

7
আমাকে একটি হাতে লিখিত গণিতের প্রমাণটি সন্ধান করুন যা 100 মিলিয়ন লাইনের দীর্ঘ এবং এতে কোনও "বাগ" নেই, এবং আমি আমার নিজের সমস্ত কিছু আপনাকে দেব।
Davor

প্রমাণের চেয়ে কার্যকরী প্রোগ্রামগুলি লেখা আরও সহজ হতে পারে, তবে রাষ্ট্রের সাথে সাথেই ...
সমস্যাটি

উত্তর:


226

আপনার প্রশ্নের উত্তর হিসাবে আমাকে একটি কারণ এবং একটি ভুল ধারণা দেওয়া উচিত।

প্রধান কারণ এটা লিখতে (আপাতদৃষ্টিতে) সঠিক গাণিতিক প্রমাণের সহজ যে তারা একটি খুব উচ্চ পর্যায়ে লিখিত হয়। মনে করুন আপনি এই জাতীয় একটি প্রোগ্রাম লিখতে পারেন:

function MaximumWindow(A, n, w):
    using a sliding window, calculate (in O(n)) the sums of all length-w windows
    return the maximum sum (be smart and use only O(1) memory)

এইভাবে প্রোগ্রামিং করার সময় ভুল হওয়া অনেক কঠিন হবে, যেহেতু প্রোগ্রামটির স্পেসিফিকেশন এর প্রয়োগের চেয়ে অনেক বেশি সাফল্যযুক্ত । প্রকৃতপক্ষে, প্রতিটি প্রোগ্রামার যিনি সিউডোকোডকে কোডে, বিশেষত দক্ষ কোডে রূপান্তরিত করার চেষ্টা করেন , একটি অ্যালগরিদমের ধারণা এবং এর বাস্তবায়নের বিশদগুলির মধ্যে এই বৃহত অস্তিত্বের মুখোমুখি হন । গাণিতিক প্রমাণগুলি ধারণাগুলিতে বেশি মনোনিবেশ করে এবং বিশদে কম।

গাণিতিক প্রমাণগুলির জন্য কোডের আসল অংশটি কম্পিউটার-সরবরাহিত প্রমাণ । এগুলি স্বাভাবিক পাঠ্য প্রমাণগুলির তুলনায় আরও শক্তিশালী এবং এটি প্রায়শই বিভিন্ন লুকানো কোণগুলি আবিষ্কার করে যা পাঠকের কাছে "সুস্পষ্ট" (যারা সাধারণত সেগুলি লক্ষ্য করে না), তবে কম্পিউটারের কাছে এতটা স্পষ্ট নয়। এছাড়াও, যেহেতু কম্পিউটারটি বর্তমানে কেবল তুলনামূলকভাবে ছোট ফাঁকগুলি পূরণ করতে পারে, তাই প্রমাণগুলি এমন স্তরে ব্যাখ্যা করতে হবে যে কোনও মানব সেগুলি পড়লে গাছের জন্য বনটি মিস করবে।

একটি গুরুত্বপূর্ণ ভুল ধারণাটি হ'ল গাণিতিক প্রমাণগুলি প্রায়শই সঠিক থাকে। আসলে এটি সম্ভবত আশাবাদী। ভুল ছাড়াই জটিল প্রমাণগুলি লেখা খুব কঠিন এবং কাগজপত্রগুলিতে প্রায়শই ত্রুটি থাকে। সম্ভবত সর্বাধিক পালিত সাম্প্রতিক ঘটনাগুলি হ'ল ওয়াইলসের প্রথম প্রয়াস (একটি বিশেষ ক্ষেত্রে) মডিউলারিটি উপপাদ্য (যা ফেরামতের শেষ উপপাদ্যটি বোঝায়), এবং সীমাবদ্ধ গ্রুপগুলির শ্রেণিবিন্যাসের বিভিন্ন ফাঁকাসমূহ, যা কোয়াসিথিন গ্রুপের প্রায় 1000+ পৃষ্ঠাগুলি সহ ছিল শ্রেণিবিন্যাস শেষ হওয়ার 20 বছর পরে লিখিত।

ভয়েভডস্কির একটি গবেষণাপত্রে একটি ভুল তাকে লিখিত প্রমাণকে এত সন্দেহ করতে লাগল যে তিনি হোমোপি টাইপ তত্ত্বটি বিকাশ শুরু করেছিলেন , এটি একটি যৌক্তিক কাঠামো যা মূলত হোমোপপি তত্ত্বকে বিকাশের জন্য দরকারী এবং তার পরবর্তী সমস্ত কাজ যাচাই করার জন্য একটি কম্পিউটার ব্যবহার করেছিল (কমপক্ষে তার নিজের অনুসারে ভর্তি)। যদিও এটি একটি চূড়ান্ত (এবং বর্তমানে অযৌক্তিক) অবস্থান, তবুও এটি এমন পরিস্থিতি যে কোনও ফলাফল ব্যবহার করার সময়, একজনকে তার প্রমাণটি দেখে নেওয়া উচিত এবং এটি সঠিক কিনা তা যাচাই করা উচিত। আমার অঞ্চলে এমন কয়েকটি কাগজপত্র রয়েছে যা ভুল বলে জানা যায় তবে কখনও তা প্রত্যাহার করা হয়নি, যার স্ট্যাটাস বিশেষজ্ঞদের মধ্যে মুখ থেকে কানে জড়িত।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
DW

1
এটা কি ভবিষ্যতে সম্ভব, প্রমাণ সহায়ক আপনার কোড এবং প্রমাণ উভয়ই পরীক্ষা করার জন্য ব্যবহৃত হবে? সম্ভবত আপনি আগদা শিখার সময় এসেছে ? (দুঃখিত ...)
অ্যালেক্স ভং

3
@ অ্যালেক্সভং এর সাথে একটি সমস্যা হ'ল নন-তুচ্ছ কোডের জন্য একটি আনুষ্ঠানিক স্পেসিফিকেশন লেখা (যাতে আপনি যাচাই করতে পারেন যে কোডটি নির্দিষ্টভাবে নির্দিষ্টকরণটি পূরণ করে) প্রায় অসম্ভব। উদাহরণস্বরূপ, আপনি কী ব্রাউজারের জন্য একটি আনুষ্ঠানিক স্পেসিফিকেশন জটিল হতে পারবেন তা কল্পনা করতে পারেন (সমস্ত ব্যবহারকারীর ইন্টারঅ্যাকশন, সমস্ত সমর্থিত ফাইল ফর্ম্যাট এবং প্রোটোকল ইত্যাদি সহ)?
সোভিক

2
@ এসভিক আপনি ঠিক বলেছেন, ব্যবহারকারীর মিথস্ক্রিয়ার জন্য, কখনও কখনও এটি এমনকি পরিষ্কার আচরণও করা যায় না যে সঠিক আচরণ কী হওয়া উচিত। সুতরাং আমাদের পরিবর্তে যথাযথ আনুষ্ঠানিক নির্দিষ্টকরণের (যেমন প্রমাণ, সংকলক) কিছুতে নিজেকে ফোকাস করা উচিত।
অ্যালেক্স ভং

1
প্রকৃতপক্ষে. এটি উচ্চ-স্তরের, বিমূর্ত ভাষাগুলিতে কোডিংয়ের চেয়ে নিম্ন স্তরের ভাষাগুলিতে কোডিং কেন অনেক বেশি ক্লান্তিকর এবং কম মজাদার হতে পারে তার একটি ব্যাখ্যা হতে পারে। যদিও এটি ব্যক্তির দ্বারা পৃথকও হতে পারে, অবশ্যই (কিছু লোক এমনকি তাদের উপর চালিত সফ্টওয়্যার লেখার চেয়ে খুব নিম্ন স্তরের হার্ডওয়্যার / ইলেকট্রনিক সার্কিট তৈরি করা উপভোগ করতে পারে? এছাড়াও, নিম্ন-স্তরের কোডটি এখনও অনেক ক্ষেত্রে অপরিবর্তনীয় হতে পারে এবং এটি ভালভাবে লিখতে পারে) একটি দুর্লভ দক্ষতা / নিজেরাই প্রশংসার যোগ্য যোগ্য হয়ে উঠতে পারে)।
এক্সজি

77

(আমি সম্ভবত এখানে কয়েকটি নিম্নবিত্তদের ঝুঁকির মধ্যে ফেলছি, কারণ এর যথাযথ উত্তর দেওয়ার জন্য আমার কোনও সময় / আগ্রহ নেই, তবে আমি নীচে উদ্ধৃত টেক্সটটি (এবং নিবন্ধের বাকী অংশটি) যথেষ্ট অন্তর্দৃষ্টিপূর্ণ বলে মনে করি, সেগুলিও বিবেচনা করা হয়েছে) একজন প্রখ্যাত গণিতবিদ দ্বারা। সম্ভবত আমি পরে উত্তরটি উন্নত করতে পারি))

ধারণাটি, যা আমি মনে করি বিদ্যমান উত্তর থেকে বিশেষভাবে পৃথক নয়, এটি হ'ল একটি "প্রমাণ" বা যুক্তি একটি গাণিতিক সম্প্রদায়ের সাথে যোগাযোগ করে, যেখানে উদ্দেশ্য তাদের বোঝানো যে (ক্লান্তিকর) বিশদটি নীতিগতভাবে পূরণ করা যেতে পারে, একটি সম্পূর্ণ নির্দিষ্ট আনুষ্ঠানিক প্রমাণ অর্জন - প্রায়শই এটি না করে। এর একটি সমালোচনা উদাহরণ হ'ল আপনি বিদ্যমান উপপাদাগুলি কেবল সেগুলি উল্লেখ করে ব্যবহার করতে পারেন তবে কোড পুনরায় ব্যবহার সাধারণভাবে অনেক বেশি চ্যালেঞ্জিং। অপ্রাপ্তবয়স্ক "বাগগুলি" বিবেচনা করুন, যা পুরোপুরি বেহুদা কোডের একটি টুকরো রেন্ডার করতে পারে (উদাহরণস্বরূপ, এটি SEGFAULTs) তবে গাণিতিক যুক্তিটি বহুলাংশে অক্ষত থাকতে পারে (অর্থাত্ যদি ত্রুটিটি সঙ্কুচিত না হয়ে থাকতে পারে)।

কোনও কম্পিউটার প্রোগ্রামে কাজ করার জন্য যথার্থতা এবং সম্পূর্ণতার প্রয়োজনীয়তার মান হ'ল গণিতের সম্প্রদায়ের বৈধ প্রমাণগুলির মানের চেয়ে কয়েকগুণ পরিমাণের অর্ডার। তবুও, বড় কম্পিউটার প্রোগ্রামগুলি, এমনকি যখন সেগুলি খুব সাবধানতার সাথে লেখা হয়েছে এবং খুব সতর্কতার সাথে পরীক্ষা করা হয়েছে, সর্বদা বাগ রয়েছে বলে মনে হয়। [...] আমরা অনুশীলন করার মতো গণিত অন্যান্য বিজ্ঞানের তুলনায় অনেক বেশি আনুষ্ঠানিকভাবে সম্পূর্ণ এবং সুনির্দিষ্ট, তবে এটি কম্পিউটার প্রোগ্রামগুলির চেয়ে আনুষ্ঠানিকভাবে সম্পূর্ণ এবং এর বিষয়বস্তুর জন্য সুনির্দিষ্ট নয়। পার্থক্যটি কেবল প্রচেষ্টার পরিমাণের সাথে করা উচিত নয়: প্রয়াসের ধরণটি গুণগতভাবে পৃথক। বৃহত কম্পিউটার প্রোগ্রামগুলিতে, প্রচুর প্রচেষ্টার অগণিত সামঞ্জস্যতা সমস্যাগুলিতে ব্যয় করতে হবে: সমস্ত সংজ্ঞাটি সুসংগত হয় তা নিশ্চিত করে "উন্নত" বিকাশ করে ডেটা স্ট্রাকচারগুলিতে দরকারী তবে জটিল জেনারেলটি নয়, ফাংশনগুলির জন্য "সঠিক" সাধারণতা নিয়ে সিদ্ধান্ত নেওয়া ইত্যাদি। কোনও বড় প্রোগ্রামের কাজের অংশে যে পরিমাণ শক্তি ব্যয় করা হয়, বুককিপিং অংশ থেকে আলাদা হিসাবে, আশ্চর্যজনকভাবে ছোট। সামঞ্জস্যতার কারণে যেগুলি প্রায় অনিবার্যভাবে হাতছাড়া হয়ে যায় কারণ "ডান" সংজ্ঞাগুলি সাধারণতা এবং কার্যকারিতা যুক্ত হওয়ার সাথে সাথে পরিবর্তিত হয়, কম্পিউটার প্রোগ্রামগুলি সাধারণত প্রায়শই স্ক্র্যাচ থেকে প্রায়শই পুনরায় লিখতে হয়।

উইলিয়াম পি। থারস্টন https://arxiv.org/pdf/math/9404236.pdf দ্বারা গাণিতিক বিষয়গুলিতে প্রমাণ এবং অগ্রগতি (pp। 9-10)


3
"কোড পুনরায় ব্যবহার" সম্পর্কে পয়েন্টটি বেশ অ্যাপ্রোপস। রাশিয়ান থেকে ইংরেজী ভাষায় একটি দীর্ঘ প্রমাণ অনুবাদ করা টাইপিংয়ে যথেষ্ট লাগে ; তবে এর থেকে একটি বৃহত কম্পিউটার প্রোগ্রাম অনুবাদ করে, ধরা যাক, সি ++ জাভাতে, বেশ চিন্তাভাবনা করে । এছাড়াও, প্রাচীন গ্রীক ভাষায় 3000 বছরের পুরনো প্রমাণকে পুনরুত্থিত করা ঠিক তত সহজ; পিএল / ১-এ একটি 30-বছরের পুরানো প্রোগ্রামকে পুনরুত্থিত করা ঠিক প্রায় শক্ত বা শক্ত or
কুক্সপ্লসোন

2
প্রাচীন গ্রিক উদাহরণস্বরূপ এছাড়াও আমাকে তৈরি উপলব্ধি: কম্পিউটার প্রোগ্রামার একটি ব্যবহার টন স্থানীয় অপভাষা এবং যেমন colloquialisms, এর (void*)1এবং open('/dev/null'), যা এমনকি বিভিন্ন উপ-সংস্কৃতি মধ্যে পোর্টেবল নাও হতে পারে, একা থাকতে দাও গন্তব্য ভাষা অনুবাদযোগ্য। (পাঠককে কেবল দীর্ঘ অভিজ্ঞতার জের ধরে তাদের আনুমানিক শব্দার্থক শব্দগুলি ছাঁটাইতে হবে I) আমি মনে করি গাণিতিক প্রমাণগুলিতে এই ধরণের "স্ল্যাং" কম থাকে। যদি কোনও প্রমাণ কোনও শব্দ ব্যবহার করে তবে এর আসল সর্বজনীন অর্থটি কোনওভাবে পাঠক দ্বারা ছাড়যোগ্য বলে মনে করা হচ্ছে । কম্পিউটার প্রোগ্রাম এমনকি না আছে সার্বজনীন অর্থ!
কুক্সপ্লসোন

1
+1 টি কারণ হিসেবে constructivist , একটি দ্রুত বেড়ে চলা অনুমান একটি ইচ্ছামত বড় মূল্য থেকে স্বতন্ত্র আমাকে পাগল করে। গণিতবিদরা যখন অসীম সিরিজের কথা বলতে শুরু করেন এবং তারপরে সেই সিরিজের উপর ভিত্তি করে যুক্তি তৈরি করেন, তখন কোনও লুকানো -0 দিয়ে ত্রুটি-বিচ্যুতি কার্যকর করে এটি মান-স্তরের তাত্পর্য থেকে উঠে আসে ভুল 00
নাট

@ না কি আপনি বিস্তারিত বলতে পারবেন? আমি পাই না।
গ্রেগরি মাগারশাক

@ গ্রেগরিমাগারশাক এই উত্তরটি এমন একটি ঘটনা দেখিয়েছিল যাতে ধারাবাহিক নির্মাণে অনন্তের বৈধতা ধরে নেওয়া একটি বিভ্রান্তির দিকে নিয়ে যায়, যা আমি এই গোপনীয়তার মতো বলে বর্ণনা করছি ফলস00(উইকিপিডিয়া বিভাগে"ছদ্মবেশী" সংস্করণ কম)। একজন শাস্ত্রীয় গণিতবিদ বলতে পারেন যে ভুলটি ধরেই নিয়েছিল যে একটি অসীম ধারাবাহিক রূপান্তরিত হয়েছে, যদিও একজন গঠনবাদী অসম্পূর্ণতাকে অসীমের অনুপযুক্ত অনুমান হিসাবে বর্ণনা করেছিলেন।
নাট

55

আমাকে ইডাব্লু ডিজকস্ট্রার উদ্ধৃতি দিয়ে শুরু করার অনুমতি দিন:

"প্রোগ্রামিং প্রয়োগিত গণিতের অন্যতম কঠিন শাখা; দরিদ্র গণিতবিদদের আরও বিশুদ্ধ গণিতবিদদের থেকে ভাল ছিল।" (EWD498 থেকে)

যদিও 'প্রোগ্রামিং' দিয়ে ডিজকস্ট্রার অর্থ যা ছিল তা বর্তমান ব্যবহারের থেকে কিছুটা পৃথক, এই উদ্ধৃতিতে এখনও কিছুটা যোগ্যতা রয়েছে। অন্যান্য উত্তরগুলি ইতিমধ্যে উল্লেখ করেছে যে গণিতে বিমূর্ততার স্তর প্রোগ্রামিংয়ের তুলনায় অনেক বেশি হতে দেওয়া হয়, যার অর্থ আমরা যদি কিছু করতে চান তবে আমরা কিছু জটিল অংশগুলি উপেক্ষা করতে পারি।

যাইহোক, আমি বিশ্বাস করি যে এটি কেবল একটি প্রমাণ এবং কম্পিউটার প্রোগ্রামের মধ্যে আরও মৌলিক পার্থক্যের একটি পরিণতি যা তাদের উদ্দেশ্য

গাণিতিক প্রমাণের মূল উদ্দেশ্য, অন্যদের মধ্যে নিজেকে বোঝানো যে একটি গাণিতিক দাবি সঠিক এবং সম্ভবত আরও গুরুত্বপূর্ণ, বোঝা অর্জন করা । অতএব, আপনি কেবল গণিতের জগতে কাজ করতে বেছে নিতে পারেন, যেখানে সবকিছুই তৈরি করা হয়েছে যাতে বোঝাপড়া ডিজাইনের মাধ্যমে পৌঁছানো যায় (যদিও কিছু শিক্ষার্থী পৃথক হতে ভিক্ষা করে ...) "খাঁটি গণিতবিদ" বলতে ঠিক এইটাই ডিজজস্ট্রার বোঝানো হয়েছিল, যারা (প্রায়) শুধুমাত্র গাণিতিক তথ্য এবং তাদের সম্পত্তি বোঝার সাথে তাদের উদ্বেগ করে।

সুতরাং, আপনি সঠিক প্রমাণগুলি উত্পাদন করা তুলনামূলকভাবে দোষ-প্রমাণ হবেন না: এটি পুরো "অনুশীলন" এর মূল বিষয়। (তবুও, এর অর্থ এই নয় যে ভুলগুলি কেবল অস্তিত্বহীন হয় না বা সবে থাকে না, ত্রুটি কেবল মানবই হয়, তারা বলে)

এখন, আমরা যদি প্রোগ্রামিং বিবেচনা করি, আমাদের উদ্দেশ্য কী? আমরা সত্যিই বোঝার খুঁজি না আমরা কিছু চাই কাজ করে । কিন্তু কিছু যখন "কাজ" করে? কিছু সফল হয় যখন আমরা সফলভাবে এমন কিছু তৈরি করেছি যা কিছু অদ্ভুত মেশিনকে আমরা এটি করা কাজটি সম্পন্ন করার অনুমতি দেয় এবং পছন্দমতো খুব দ্রুত।

এটি, আমি বিশ্বাস করি, মৌলিক পার্থক্য, কারণ এটির অর্থ আমাদের লক্ষ্যটি কিছু উপপাদ্য হিসাবে বর্ণনা করা যায় না যা আমাদের প্রোগ্রাম "প্রমাণিত" করে, আমরা বাস্তব জগতে (যা কিছু হোক) কিছু চাই, কিছু গাণিতিক শৈল্পিক নয়। এর অর্থ হ'ল আমরা তাত্ত্বিকভাবে আমাদের লক্ষ্য অর্জন করতে পারি না (যদিও ডিজকস্ট্রা আপনি এটি অনিয়ন্ত্রিত করে দেখতে চাইবেন) যেমন আমাদের অবশ্যই মেশিনকে তুষ্ট করতে হবে, আশা করি আমরা আসলে কোন কাজটি করতে চাই তা অবশ্যই জেনেছি এবং কোনটি বিবেচনা না করা বিষয় সম্পর্কে সচেতন হতে হবে, তবুও ঘটবে না একরকম।

সুতরাং, শেষ পর্যন্ত, চেষ্টা করার ব্যতীত আর কোনও উপায় নেই এবং সম্ভবত ব্যর্থ হওয়া, সংশোধন করা, ব্যর্থ হওয়া এবং ফলাফলের সাথে কিছুটা সন্তুষ্ট না হওয়া পর্যন্ত আবার চেষ্টা করুন।


নোট করুন যে আপনার হাইপোথিসিসটি ফল্ট-কম প্রুফ লেখার ক্ষেত্রে ফল্ট-কম প্রোগ্রামের চেয়ে সহজ (যা বাস্তবে @ অ্যারিল পয়েন্ট হিসাবে বিভিন্ন বক্তব্য রয়েছে ) আসলে ভুল হতে পারে, কারণ প্রমাণগুলি প্রায়শই কোনও স্তরে ট্রায়াল এবং ত্রুটির মাধ্যমে নির্মিত হয়। তবুও, আমি আশাবাদী যে এটি এই প্রশ্নের উপরে কিছুটা আলোকপাত করেছে: "কিছু উপপাদ্য প্রমাণ করা এবং একটি প্রোগ্রাম লেখার মধ্যে আসলে কী পার্থক্য?" (যা কারি-হাওয়ার্ডের চিঠিপত্রের এক গাফেল পর্যবেক্ষক বলতে পারেন: "কিছুই নয়!")


@Wvxvw মন্তব্যগুলিতে যেমন উল্লেখ করেছেন, 'স্ট্রাকচার্ড প্রোগ্রামিং-এ নোটস' (EWD249, পৃষ্ঠা 21) থেকে নিম্নলিখিত অনুচ্ছেদগুলি অত্যন্ত প্রাসঙ্গিক:

(...) একটি প্রোগ্রাম নিজেই কখনও লক্ষ্য হয় না; একটি প্রোগ্রামের উদ্দেশ্য গণনা উত্সাহিত করা এবং গণনা উদ্দেশ্য একটি পছন্দসই প্রভাব স্থাপন করা হয়। যদিও প্রোগ্রামারটি প্রোগ্রামার দ্বারা তৈরি চূড়ান্ত পণ্য, তবুও এর দ্বারা তৈরি করা সম্ভাব্য গণনাগুলি - "মেকিং" মেশিনে রেখে গেছে! - তার ব্যবসায়ের আসল বিষয়। উদাহরণস্বরূপ, যখনই কোনও প্রোগ্রামার বলে যে তার প্রোগ্রামটি সঠিক, তখন সে সত্যই তা জাগিয়ে তুলতে পারে এমন গুণাগুণ সম্পর্কে একটি দৃser়তা দেয়।

(...) এক অর্থে একটি প্রোগ্রাম তৈরি করা গাণিতিক তত্ত্ব তৈরির চেয়ে বেশি কঠিন: প্রোগ্রাম এবং তত্ত্ব উভয়ই কাঠামোগত, কালজয়ী অবজেক্ট। তবে গাণিতিক তত্ত্বটি যেমন দাঁড়ায় ততই অর্থবোধ করে, তবে প্রোগ্রামটি কেবলমাত্র তার প্রয়োগের মাধ্যমে অর্থবোধ করে।


2
আমি কেবল একজন সাধারণ মানুষ; "প্রোগ্রামিং" দ্বারা ডিজকস্ট্রার আসলে কী বোঝায়?
ওভি

2
@ ওভি আমি ঠিক নিশ্চিত নই, তবে মূল পার্থক্য হ'ল তিনি 'সাধারণ' প্রোগ্রামিং কাজের চেয়ে বেশি অ্যালগোরিদমিক সমস্যা সমাধানের বিষয়ে কথা বলেন, অর্থাত্ তিনি অবশ্যই কিছু সিআরইউডি প্রোগ্রামের কথা বলছেন না যা কিছু সংযোগের প্রয়োজন needs বিদ্যমান আর্কিটেকচারের বা অন্যান্য উপাদান ইত্যাদি প্রোগ্রামিং Dijkstra মতামত আরও দেখা যায় এই উত্তর
বিচ্ছিন্ন টিকটিকি

3
ডিজকস্ট্রার উদ্ধৃতি দেওয়ার জন্য আপভোট দিয়েছিলেন, তবে আপনি ভুল জায়গাটি বেছে নিয়েছেন! স্ট্রাকচার্ড প্রোগ্রামিংয়ের প্রথম অনুচ্ছেদে তিনি এই সমস্যাটি সম্পর্কে অনেক কিছু লিখেছেন। আমি অন্য একটি উক্তি জমা দিয়ে আপনার উত্তরটি পরিবর্তন করতে চাই না, তবে আমি আশা করব যে আপনি এই উত্তরটি পেপার থেকে আরও যুক্ত করার চেষ্টা করবেন!
wvxvw

@ ওভি আপনার প্রশ্নের সম্পর্কে আমার ধারণা হ'ল ডিজকস্ট্রার সময়ে প্রোগ্রামিংয়ের অর্থ প্রায়শই উচ্চমানের ভাষার আধুনিক যুগে অ্যাসেম্বলি কোড লেখা। একইভাবে, আমি পৌরাণিক ম্যান-মাসের 1974 সংস্করণটি পড়ছি, ধারণাগুলি এখনও বিদ্যমান তবে প্রযুক্তিগত উল্লেখগুলি সিস্টেম-স্তরের
এসেমব্লার

46

প্রমাণ কীভাবে লিখতে হয় তার প্রমাণগুলিতে ত্রুটি বিস্তারের বিষয়ে মতবিরোধের জন্য ল্যাম্পোর্ট কিছু ক্ষেত্র সরবরাহ করে (পৃষ্ঠা 8-9) :

প্রায় বিশ বছর আগে, আমি একটি প্রারম্ভিক গণিত শ্রেণির জন্য শ্রোয়েডার-বার্নস্টেইন উপপাদ্যের প্রমান লেখার সিদ্ধান্ত নিয়েছিলাম। সবচেয়ে সহজ প্রমাণটি আমি পেয়েছিলাম কেলির ক্লাসিক সাধারণ টপোলজি পাঠ্যে। কেলি যেহেতু আরও পরিশীলিত শ্রোতাদের জন্য লিখছিলেন, তাই তাঁর অর্ধ-পৃষ্ঠার প্রমাণটিতে আমাকে বিস্তৃত ব্যাখ্যা যোগ করতে হয়েছিল। আমি যখন পাঁচটি পৃষ্ঠা লিখেছিলাম যখন বুঝতে পারি কেলির প্রমাণটি ভুল ছিল। সম্প্রতি, আমি আমার প্রমাণ শৈলীতে একটি বক্তৃতা একটি দৃinc়প্রত্যয়ী ভুল প্রমাণ সহ চিত্রিত করতে চেয়েছিলাম, তাই আমি কেলির দিকে রইলাম। তার প্রমাণের সাথে আমি কিছুই ভুল করতে পারি নি; এটা স্পষ্টতই সঠিক বলে মনে হয়েছিল! প্রমাণটি পড়া এবং পুনরায় পড়া আমাকে নিশ্চিত করেছিল যে হয় আমার স্মৃতিশক্তি ব্যর্থ হয়েছিল, নাহলে আমি বিশ বছর আগে খুব বোকা ছিলাম। তবুও, কেলির প্রমাণটি সংক্ষিপ্ত ছিল এবং এটি একটি দুর্দান্ত উদাহরণ হিসাবে কাজ করবে, তাই আমি এটি কাঠামোগত প্রমাণ হিসাবে আবার লিখতে শুরু করি।

... শৈলীটি প্রথমে মার্টিন আবাদীর সাথে লেখা একটি গবেষণাপত্রে সাধারণ উপপাদ্যের প্রমাণের জন্য প্রয়োগ করা হয়েছিল। তিনি ইতিমধ্যে প্রচলিত প্রমাণ লিখেছিলেন - এমন প্রমাণ যা আমাদের বোঝানোর পক্ষে যথেষ্ট ছিল এবং সম্ভবতঃ রেফারিরা। কাঠামোগত শৈলীতে প্রমাণগুলি পুনর্লিখন করে আমরা আবিষ্কার করেছি যে প্রায় প্রত্যেকটির তীব্র ত্রুটি ছিল যদিও তত্ত্বগুলি সঠিক ছিল। ভুল প্রমাণগুলি ভুল উপপাদকদের দিকে পরিচালিত করতে পারে না এমন কোনও আশা আমাদের পরবর্তী সহযোগিতায় ধ্বংস হয়ে গিয়েছিল। বারবার, আমরা অনুমান করা এবং ব্ল্যাকবোর্ডে একটি প্রুফ স্কেচ লিখতাম - এমন একটি স্কেচ যা সহজেই একটি দৃinc়প্রতিজ্ঞ প্রচলিত প্রমাণ হিসাবে রূপান্তরিত হতে পারে — কেবলমাত্র একটি কাঠামোগত প্রমাণ লেখার চেষ্টা করে আবিষ্কার করার জন্য, যে অনুমানটি মিথ্যা ছিল। সেই থেকে, আমি কোনও সতর্কতাপূর্ণ, কাঠামোগত প্রমাণ ছাড়াই কোনও ফলাফল বিশ্বাস করি না।


6
একই কাগজ: "উপাখ্যানীয় প্রমাণগুলি প্রমাণ করে যে গাণিতিক জার্নালগুলিতে প্রকাশিত সমস্ত কাগজের তৃতীয়াংশের মধ্যে ভুল রয়েছে - কেবল ছোটখাটো ত্রুটিই নয়, ভুল তাত্ত্বিকতা এবং প্রমাণাদি"। ঠিক আছে, 90 এর দশকে ছিল, কিন্তু এটি কি আজকের চেয়ে আলাদা? সম্ভবত those দিনগুলিতে বিদ্যমান সেই কাগজপত্রগুলি এখনও বিদ্যমান রয়েছে এবং সমস্ত কিছুই পাইল করে দিয়েছে ... সুতরাং, আমি পুরোপুরি নিশ্চিত নই যে কাগজগুলিতে প্রদত্ত গাণিতিক প্রমাণগুলিতে কম ত্রুটি রয়েছে।
মার্কোক্রামম

আকর্ষণীয় উপাখ্যান, কিন্তু আমি সরাসরি উত্তর দিচ্ছি বা প্রশ্নের সাথে জড়িত তা দেখছি না। আপনি কি আপনার উত্তর সম্পাদনা করতে চাইলে যে প্রশ্ন জিজ্ঞাসা করা হয়েছিল তার প্রত্যক্ষভাবে প্রতিক্রিয়া জানাতে চান? আপনি কি যুক্তি দিচ্ছেন যে গাণিতিক প্রমাণগুলি কম্পিউটার কোড লেখার মতো ত্রুটিযুক্ত? আপনি যে সরবরাহ করতে পারেন তার কি আরও প্রমাণ আছে? একটি উপাখ্যান বা দু'জন সত্যই তা প্রদর্শন করে না, তাই না?
DW

@ ডিডাব্লু আমি লেসলির কাছে একটি ইমেল বার্তা প্রেরণ করি, যদি তিনি দাবিটির আরও প্রমাণ দিতে পারেন।
মার্কোক্রাম এম

3
@ ডিডাব্লু লেসলি তার আন্তরিক উত্তরে বলেছিলেন যে তাঁর কলেজটি সেই সময় ম্যাথ রিভিউতে প্রকাশিত ৫১ টি প্রমাণ নিয়ে তদন্ত করেছিল। তাঁর মতে এটি উপাখ্যানের চেয়ে বেশি তবে বেশ কয়েকটি তথ্যের কারণে দৃ evidence় প্রমাণের জন্য এটি উপযুক্ত নয়। কেসটি আরও জটিল ছিল কারণ প্রমাণগুলিতে কিছু ত্রুটি ঘটেছিল কারণ তারা প্রাক্তন প্রকাশিত কাগজপত্র ইত্যাদির জন্য ভ্রান্ত প্রমাণাদি ব্যবহার করেছিল a এটি একটি দুর্দান্ত গবেষণার বিষয় হতে পারে তবে এতো কাজ দরকার requires কর্মসূচির মাধ্যমে গণিতের প্রমাণগুলি কীভাবে যাচাই করা যায় তা এখনও একটি বিশাল প্রশ্ন। ইন্টারেক্টিভ প্রুফ সহায়তার জন্য তৈরি অ্যাপ্লিকেশনগুলি খুব প্রাথমিক পর্যায়ে রয়েছে। কমপক্ষে তাদের ইন্টারফেস।
মার্কোক্রামম

@ ডিডাব্লু-র উপাখ্যান দু'টি দেখায় যে কীভাবে একটি গাণিতিক প্রমাণ "সঠিক" প্রদর্শিত হতে পারে তবে বাস্তবে তা নিরবচ্ছিন্ন হতে পারে। উভয়ই একটি জটিল কম্পিউটার অ্যালগরিদম লিখেছেন এবং গাণিতিক প্রমাণ করেছেন, এবং একটি গাণিতিক প্রমাণের মতো একটি কম্পিউটার অ্যালগরিদম লেখার চেষ্টা করেছিলেন এবং তারপরে উচ্চ স্তরের "অ্যালগরিদম" কীভাবে অনেকের দ্বারা বিশ্বাসঘাতকতা করা হয়েছে তা আবিষ্কার করার জন্য, বিশদে অনেক বাগ, ফলাফল মোটেও অবাক হওয়ার কিছু নেই।
ইয়াক্ক

39

একটি বড় পার্থক্য হ'ল প্রোগ্রামগুলি সাধারণত ইনপুটগুলিতে পরিচালনা করার জন্য লেখা হয়, যেখানে গাণিতিক প্রমাণগুলি সাধারণত অ্যাকোমিয়ামস এবং পূর্ব-জ্ঞাত উপপাদ্যগুলির একটি সেট থেকে শুরু হয়। কখনও কখনও পর্যাপ্ত সাধারণ প্রমাণ পেতে আপনাকে একাধিক কোণার কেসগুলি আবরণ করতে হয়, তবে কেসগুলি এবং তাদের রেজোলিউশন সুস্পষ্টভাবে গণনা করা হয় এবং ফলাফলের ক্ষেত্রটি অন্তর্ভুক্ত মামলার ক্ষেত্রে সুস্পষ্টভাবে সীমাবদ্ধ থাকে।

এটি একটি কম্পিউটার প্রোগ্রামের সাথে তুলনা করুন, যা সম্ভাব্য ইনপুটগুলির একটি ব্যাপ্তির জন্য 'সঠিক' আউটপুট সরবরাহ করতে হবে। সমস্ত ইনপুট গণনা করা এবং সেগুলি চেষ্টা করা খুব কমই সম্ভব। আরও খারাপ, ধরুন যে প্রোগ্রামটি কোনও মানুষের সাথে ইন্টারেক্ট করে এবং তাদের ইনপুটটিকে কার্য সম্পাদন করার অনুমতি দেয়? মানুষ কুখ্যাতভাবে অনির্দেশ্য এবং মানুষের আন্তঃসংযোগের সাথে যুক্তিসঙ্গতভাবে একটি বৃহত প্রোগ্রামের সম্ভাব্য ইনপুটগুলির সংখ্যা এক অদ্ভুত হারে বৃদ্ধি পায়। কোনও প্রোগ্রাম ব্যবহৃত হতে পারে তার বিভিন্ন উপায় সম্পর্কে আপনাকে আগে থেকে দেখার চেষ্টা করতে হবে এবং ব্যর্থতার একমাত্র বিকল্প হ'ল এই সমস্ত ব্যবহারের ক্ষেত্রে হয় কাজ করে বা কমপক্ষে যুক্তিসঙ্গত উপায়ে ব্যর্থ করার চেষ্টা করতে হবে। এবং এটি ধরে নিচ্ছে যে এমনকি এই সমস্ত অস্পষ্ট কোণার ক্ষেত্রে এটি কীভাবে কাজ করার কথা

অবশেষে, একটি বৃহত প্রোগ্রামকে সত্যিকারের সাথে একটি একক প্রমাণ, এমনকি জটিল একটির সাথে তুলনা করা যায় না। একটি বৃহত প্রোগ্রাম সম্ভবত সাহিত্যের একটি ছোট গ্রন্থাগার সংগ্রহ এবং পর্যালোচনা করার অনুরূপ, যার মধ্যে কিছুতে ত্রুটি থাকতে পারে যা আপনার চারপাশে কাজ করা দরকার। একটি একক প্রমাণের স্কেল আরও প্রোগ্রামের জন্য, যা একটি ছোট অ্যালগরিদম বাস্তবায়ন হতে পারে, আসুন আমরা যাক, অভিজ্ঞ সফ্টওয়্যার ইঞ্জিনিয়াররা ভুল না করে এগুলি সম্পূর্ণ করতে / করতে পারে, বিশেষত যখন সাধারণ সরঞ্জামগুলি ব্যবহার করে যা সাধারণ তুচ্ছ ত্রুটিগুলি রোধ করে / সমাধান করে (যেমন বানান ভুল) ) যা প্রুফরিডিংয়ের ক্ষেত্রে সমাধান করা প্রারম্ভিক সমস্যার সমতুল্য।


14
আপনার শেষ অনুচ্ছেদের জন্য +1। যদিও গাণিতিক প্রমাণগুলি একে অপরের শীর্ষে নির্মিত নীতিগতভাবে, সাধারণত বেসিকগুলি ভালভাবে বোঝা যায়, কম্পিউটার গ্রন্থাগারের এনালগ (যদিও তাদের বাগ রয়েছে ...), এবং প্রকৃত প্রমাণ খুব বেশি দীর্ঘ নয়। বিপরীতে, ভোক্তা সফ্টওয়্যারটি দীর্ঘ এবং জটিল এবং ব্যর্থ হওয়ার আরও অনেক সুযোগ রয়েছে।
যুবাল ফিল্মাস

6
অনুশীলনে, ভোক্তা সফ্টওয়্যারটির সাথে অন্য সমস্যাটি হ'ল 'সঠিক' আচরণটি প্রায়শই সামনের দিকে সামনের দিক থেকে খারাপভাবে সংজ্ঞায়িত হয় এবং তাই যা পরে ব্যবহৃত হত তা ভুল হয়ে যায়। এটি কেবল প্রমাণটি লেখার চেষ্টা করার মতো হবে যে লোকেরা স্বতঃস্ফূর্ত পরিবর্তন করার সিদ্ধান্ত নিয়েছে। আপনি এটি স্বরলিপি ঠিক করতে পারেন, তাই না?
ড্যান ব্রায়ান্ট

2
@ ড্যানব্রায়্যান্ট সেই পরিস্থিতি গণিতে ঘটে। বিশেষত শর্তগুলির সংজ্ঞা সময়ের সাথে সাথে স্থানান্তরিত হয় এবং প্রায়শই অস্পষ্ট হয় এমনকি তাদের ব্যবহৃত হিসাবে ডান। ইম্রে লাকাতোসের "প্রুফস এবং খণ্ডন" এটিকে "বহুভুজ" শব্দটি দিয়ে বর্ণনা করে। "ফাংশন" এবং কম পরিমাণে "অবিচ্ছেদ্য" এর সাথেও একই রকম ঘটনা ঘটেছে। আজও, "বিভাগ" দ্ব্যর্থহীন এবং প্রমাণ নয় এবং তাত্ত্বিকতা আপনার স্পষ্টভাবে বলতে চাইছেন তার উপর নির্ভর করে ব্যর্থ হতে পারে।
ডেরেক এলকিন্স

25

তারা বলে কম্পিউটারের সাথে সমস্যা হল তারা হয় ঠিক কি আপনি তাদের বলুন।

আমি মনে করি এটি অনেকগুলি কারণ হতে পারে।

লক্ষ্য করুন যে একটি কম্পিউটার প্রোগ্রাম সহ লেখক (আপনি) বুদ্ধিমান কিন্তু পাঠক (সিপিইউ) বোবা।
তবে গাণিতিক প্রমাণ সহ লেখক (আপনি) স্মার্ট এবং পাঠক (পর্যালোচক )ও স্মার্ট।

এর অর্থ আপনি কখনই "ভাল" .ুকতে পারবেন না, আপনি কি জানেন আমি কি বলতে চাইছি কম্পিউটারের সাথে " । আপনার উদ্দেশ্যগুলি না জেনে আপনি যা বলছেন তা ঠিক এটি করে।

উদাহরণস্বরূপ, আসুন বলি এটি কিছু প্রমাণের একটি পদক্ষেপ:

x2+4x+3x+3=(x+1)(x+3)x+3=x+1

x2+4x+3x+3x=3


3
দুর্দান্ত উত্তর! কম্পিউটার হিসাবে এটি বাদ দিয়ে আমি আপনার "অযথা" শব্দটি ব্যবহার করতে আপত্তি জানাই। ;) [ধরুন যে -xএটি একটি যৌগিক প্রমাণ করার লক্ষ্যে বৃহত্তর প্রমাণের মাত্র এক ধাপ ছিল । সম্পূর্ণ প্রমাণের সঠিকতার সাথে অত্যন্ত প্রাসঙ্গিক হওয়ার সাথে সাথে এই পদক্ষেপটি ভুল হওয়ার বিষয়টি সত্য -x = 3!]
কুইকসপ্লসোন

@Quuxplusone: = পি
Mehrdad

কম্পিউটারগুলি প্রতীকী গণিত এবং অ-নিরোধক পুনরায় লেখার নিয়মগুলিও ব্যবহার করতে পারে, এটি ঠিক যে আমরা সি ++ এর মতো যে ভাষাগুলি ব্যবহার করি তা সবগুলি খুব নিম্ন স্তরের এবং প্রাচীন প্রযুক্তির উপর ভিত্তি করে (সি হিসাবে আলগোলের 60 এর চেয়ে কম বৈশিষ্ট্য ছিল)। একমাত্র ব্যতিক্রম হ'ল ইদ্রিস / আগদা, প্রতীকী সমাধানকারী এবং গণিতের মতো লিস্পের মতো প্রমাণ / পরীক্ষা করা ভাষা languages ja.wolframalpha.com/input/…
aoeu256

23

আমার মনে হয় যে একটি বিষয় যুওয়ালের উত্তরে সমাধান করা হয়নি, তা হ'ল মনে হচ্ছে আপনি বিভিন্ন প্রাণীর তুলনা করছেন।

এনএন!। এটি প্রকৃতপক্ষে একটি কঠিন কাজ, এবং এর উত্তর দেওয়ার জন্য, আপনাকে কেবল বাক্যবিন্যাসের বাইরেও তাকাতে হবে। এর জন্য আপনার গাণিতিক উপমাটি হ'ল "এই প্রমাণটি সঠিক", যা খুব কমই সঠিক, কারণ সঠিক উপমাটি হওয়া উচিত "এটি কি এই উপপাদ্যটি সত্য, এবং যদি তাই হয় তবে আমরা কীভাবে এটি প্রমাণ করতে পারি?"। যদিও পূর্বেরটি একটি সিন্ট্যাকটিক স্টেটমেন্ট যা "সহজেই" যাচাই করা যেতে পারে, তবে পরবর্তীটি আরও কঠোর (এর কঠোরতাটি আনুষ্ঠানিকভাবে করা যেতে পারে)। আপনি যেতম জটিল কোডটি নিয়ে আসতে চেষ্টা করেছেন সে সম্পর্কে ভাবুন এবং এটিকে পিনকারির অনুমান (বর্তমানে উপপাদ্য) প্রমাণ করার চেষ্টা করার সাথে তুলনা করুন,

প্রোগ্রামগুলির শব্দার্থক বৈশিষ্ট্য যাচাই করা অনির্বচনীয় (ধানের উপপাদ্য), এবং আনুষাঙ্গিকভাবে, প্রথম ক্রমে প্রাকটিক লজিকের কোনও বিবৃতি সত্য কিনা তা পরীক্ষা করাও অনস্বীকার্য। মুল বক্তব্যটি হ'ল আপনি যেভাবে সমস্যাগুলি দেখছেন সেখান থেকে কঠোরতার কোনও সত্যিকারের পার্থক্য নেই। অন্যদিকে, আমরা প্রোগ্রামগুলির সংশ্লেষিক বৈশিষ্ট্যগুলি সম্পর্কে ধারণা করতে পারি (সংকলক), এবং এটি প্রমাণটি যাচাই করতে পারি তার সাথে সাদৃশ্যপূর্ণ। বাগগুলি (কোডটি আমি যা চাই তা না করে) শব্দার্থক, তাই আপনার তাদের তুলনা করা উচিত তাদের সঠিক সমমনা অংশের সাথে।

আমি ইউভালকে শক্তিশালী করব এবং বলব যে কিছু ক্ষেত্রের গাণিতিক প্রমাণগুলি লেখার অনুপ্রেরণায় পুরো ক্ষেত্রগুলি বৃদ্ধি পেয়েছিল যা কিছু আনুষ্ঠানিক পদ্ধতিতে লেখা ও যাচাই করা যায়, তাই যাচাইকরণ প্রক্রিয়াটিও একেবারেই তুচ্ছ নয়।


18

ফল্টলেস গাণিতিক প্রমাণাদি লেখার ক্ষেত্রে এবং ফল্টলেস কম্পিউটার কোড লেখার ক্ষেত্রে এত কী আলাদা যে এর ফলে প্রাক্তনটি তারপরের চেয়ে অনেক বেশি ট্র্যাকটেবল হয়?

আমি বিশ্বাস করি যে প্রাথমিক কারণগুলি হ'ল আদর্শশক্তি (একই ইনপুটগুলির জন্য একই ফলাফল দেয়) এবং অপরিবর্তনীয়তা (পরিবর্তন হয় না)।

যদি কোনও গাণিতিক প্রমাণ বিভিন্ন ফলাফল দিতে পারে যদি এটি একটি মঙ্গলবারে পড়ে বা 1999 সাল থেকে 2000 এ উন্নীত হয়? যদি কোনও গাণিতিক প্রমাণের অংশটি কয়েক পৃষ্ঠার পিছনে ফিরে যাওয়া, কয়েকটি লাইন পুনরায় লেখার এবং সেই বিন্দু থেকে আবার শুরু করা হত?

আমি নিশ্চিত যে এইরকম প্রমাণ কম্পিউটার কোডের একটি সাধারণ বিভাগ হিসাবে বাগের মতো প্রায় প্রবণ হয়ে থাকবে।

আমি অন্যান্য গৌণ বিষয়গুলিও দেখতে পাচ্ছি:

  1. গণিতবিদরা সাধারণত কোনও উল্লেখযোগ্য / প্রকাশযোগ্য প্রমাণ লেখার চেষ্টা করার আগে অনেক বেশি শিক্ষিত হন। স্ব-শিরোনামযুক্ত পেশাদার বিকাশকারীদের 1/4 জন 6 বছরেরও কম আগে কোডিং শুরু করেছিলেন ( এসও সমীক্ষা 2017 দেখুন ) তবে আমি ধরে নিই যে বেশিরভাগ গণিতবিদদের এক দশকেরও বেশি সময় ধরে আনুষ্ঠানিক গণিত শিক্ষা রয়েছে।
  2. গাণিতিক প্রমাণগুলি খুব কমই কম্পিউটার কোড হিসাবে তদন্তের একই স্তরে রাখা হয়। একটি একক টাইপ / একটি প্রোগ্রাম ভাঙতে পারে, তবে কয়েক ডজন টাইপো প্রমাণের মান (কেবলমাত্র তার পাঠ্যযোগ্যতা) নষ্ট করতে যথেষ্ট নাও হতে পারে।
  3. শয়তান বিশদে রয়েছে এবং কম্পিউটার কোড বিশদটি এড়িয়ে যেতে পারে না। প্রমাণগুলি সরল / রুটিন হিসাবে বিবেচিত এমন পদক্ষেপগুলি এড়াতে মুক্ত। আধুনিক ভাষাগুলিতে কিছু দুর্দান্ত সিনট্যাকটিক শর্করা পাওয়া যায় তবে এগুলি কঠোর কোডেড এবং তুলনায় বেশ সীমিত।
  4. গণিত পুরানো এবং এর আরও শক্ত ভিত্তি / মূল রয়েছে। গণিতে অবশ্যই নতুন এবং চকচকে সাবফিল্ডগুলির আধিক্য রয়েছে, তবে বেশিরভাগ মূল নীতিগুলি কয়েক দশক ধরে ব্যবহৃত হয়ে আসছে। এটি স্থিতিশীলতার দিকে নিয়ে যায়। অন্যদিকে প্রোগ্রামাররা এখনও বেসিক কোডিং পদ্ধতিতে দ্বিমত পোষণ করেন (কেবলমাত্র চতুর বিকাশ এবং এর গ্রহণের হার সম্পর্কে জিজ্ঞাসা করুন)।

উল্লেখ করার মতো বিষয় যে প্রোগ্রামিংয়ের সমতুল্য 'অনিরাপদ' এর কার্যকরী বিশুদ্ধতা যা হাস্কেলের মতো কিছু ভাষায় স্বীকৃত এবং সমর্থিত।
ফারাপ

12

ইউভাল যা লিখেছেন তাতে আমি একমত। তবে আরও সহজ উত্তর আছে: অনুশীলন সফ্টওয়্যার ইঞ্জিনিয়াররা সাধারণত তাদের প্রোগ্রামগুলির যথার্থতা পরীক্ষা করার চেষ্টা করেন না, তারা সাধারণত করেন না, তারা সাধারণত প্রোগ্রামটি সঠিক হওয়ার সাথে সংজ্ঞায়িত শর্তগুলিও লিখেন না।

এর বিভিন্ন কারণ রয়েছে। একটি হ'ল বেশিরভাগ সফ্টওয়্যার ইঞ্জিনিয়ারদের গাণিতিকভাবে সমস্যাগুলি পরিষ্কার করার দক্ষতা নেই বা তারা কীভাবে সঠিকতার প্রমাণগুলি লিখতে জানেন।

আর একটি হ'ল জটিল সফটওয়্যার সিস্টেমের জন্য নির্ভুলতার শর্তগুলি নির্দিষ্ট করে দেওয়া (বিশেষত বিতরণ করা একটি) একটি অত্যন্ত কঠিন এবং সময় সাপেক্ষ কাজ। তাদের কাছে এমন কিছু প্রত্যাশা রয়েছে যা কয়েক সপ্তাহের মধ্যে কাজ করে বলে মনে হচ্ছে।

আরেকটি কারণ হ'ল যে কোনও প্রোগ্রামের নির্ভুলতা অন্যদের দ্বারা লিখিত অনেকগুলি সিস্টেমে নির্ভর করে যা আবার স্পষ্ট শব্দার্থবিজ্ঞান নেই। একটি হরমের আইন রয়েছে যা মূলত বলে যদি আপনার গ্রন্থাগার / পরিষেবায় একটি পর্যবেক্ষণযোগ্য আচরণ থাকে (এর চুক্তির অংশ না হয়) তবে শেষ পর্যন্ত কেউ এর উপর নির্ভর করবে। এর অর্থ হ'ল গণিতে লেমাসের মতো পরিষ্কার চুক্তি সহ মডুলার আকারে সফটওয়্যার বিকাশের ধারণাটি বাস্তবে কার্যকর হয় না। এটি এমন ভাষাগুলিতে আরও খারাপ হয় যেখানে প্রতিবিম্ব ব্যবহার করা হয়। এমনকি যদি কোনও প্রোগ্রাম আজ সঠিক হয় তবে এটি কাল ভেঙে যেতে পারে যখন কেউ তার নির্ভরতার একটিতে কিছু তুচ্ছ রিফ্যাক্টরিং করে।

অনুশীলনে সাধারণত যা ঘটে তা হ'ল তাদের পরীক্ষা have পরীক্ষা প্রোগ্রাম থেকে প্রত্যাশিত হিসাবে কাজ করে। যখনই কোনও নতুন ত্রুটি পাওয়া যায়, তারা এটি ধরার জন্য পরীক্ষা যোগ করে। এটি কিছুটা প্রসারিত করে, তবে এটি কোনও সঠিকতার প্রমাণ নয়।

লোকেরা যখন সঠিকতা সংজ্ঞায়িত করার বা সঠিক প্রোগ্রাম লেখার দক্ষতা রাখে না বা এটি করার প্রত্যাশা করে তবে এটি করা বরং কঠিন হয়, সফ্টওয়্যারগুলি সঠিক না হওয়ায় অবাক হওয়ার কিছু নেই।

তবে আরও লক্ষ করুন যে ভাল জায়গায় শেষে সফ্টওয়্যার ইঞ্জিনিয়ারিং কোড পর্যালোচনা দ্বারা সম্পন্ন হয়। এটি কোনও প্রোগ্রামের লেখককে অন্তত অন্য একজনকে বোঝাতে হবে যে প্রোগ্রামটি সঠিকভাবে কাজ করে। এটি হ'ল কিছু অনানুষ্ঠানিক উচ্চ স্তরের যুক্তি দেওয়া হয়। তবে আবার সাধারণত নির্ভুলতার সুস্পষ্ট কঠোর সংজ্ঞা বা সঠিকতার প্রমাণের কাছাকাছি কিছু হয় না।

গণিতে মানুষ সঠিকতার দিকে মনোনিবেশ করে। সফ্টওয়্যার বিকাশে অনেকগুলি বিষয় রয়েছে যা একটি প্রোগ্রামারকে যত্ন নিতে হবে এবং তাদের মধ্যে বাণিজ্য বন্ধ রয়েছে। বাগ-মুক্ত সফটওয়্যার বা এমনকি সঠিকতার একটি ভাল সংজ্ঞা থাকা (সময়ের সাথে সাথে পরিবর্তনের প্রয়োজনীয়তা সহ) একটি আদর্শ, তবে এটি অন্যান্য কারণগুলির বিরুদ্ধে লেনদেন করতে হয় এবং এর মধ্যে অন্যতম গুরুত্বপূর্ণ এটি বিদ্যমান দ্বারা এটি বিকাশে ব্যয় করা হয় time ডেভেলপারদের। সুতরাং আরও ভাল জায়গায় অনুশীলনের ক্ষেত্রে লক্ষ্য এবং প্রক্রিয়াগুলি সফটওয়্যারটি বাগ-মুক্ত করার চেয়ে বাগের ঝুঁকিটিকে যতটা সম্ভব সম্ভব হ্রাস করে দিচ্ছে।


আমি আসলে নিশ্চিত নই যে প্রোগ্রামার এবং গণিতবিদদের মধ্যে আনুষ্ঠানিকভাবে (যথা একটি মেশিন-পরীক্ষিত পদ্ধতিতে) সঠিকতার নির্দিষ্টকরণ তৈরি করা এবং 10KLOC বা বৃহত্তর প্রোগ্রামের জন্য কোড সঠিক প্রমাণ করার জন্য কে আরও খারাপ who একদিকে, আপনি সম্পূর্ণরূপে সঠিক যে বেশিরভাগ প্রোগ্রামারদের মধ্যে দক্ষতা প্রমাণ করার দক্ষতা ভালভাবে বিকাশিত নেই। অন্যদিকে, বৃহত্তর আনুষ্ঠানিক প্রমাণগুলি বড় প্রোগ্রামগুলির মতো এবং পরিচালনা করার জন্য প্রয়োজনীয়ভাবে সফ্টওয়্যার ইঞ্জিনিয়ারিং দক্ষতা প্রয়োজন। আমি সম্পূর্ণরূপে আত্মবিশ্বাসী যে এই জাতীয় প্রোগ্রামের জন্য নির্ভুলতার কোনও অনানুষ্ঠানিক প্রমাণ সঠিক হওয়ার কোনও আশা থাকবে না।
ডেরেক এলকিন্স

হতে পারে. যে কোনও ক্ষেত্রে এবং কেবল স্পষ্ট করে বলার জন্য, আমি আমার উত্তরে আনুষ্ঠানিক প্রমাণ গ্রহণ করছি না, আমরা যে স্তরের অ্যালগরিদমের কাগজগুলিতে দেখি কেবল মাত্র অনানুষ্ঠানিক প্রমাণাদি দেখছি।
কাভেহ

11

ইতিমধ্যে অনেক ভাল উত্তর রয়েছে তবে আরও কিছু কারণ রয়েছে যেখানে গণিত এবং প্রোগ্রামিং এক নয়।

1 গাণিতিক প্রমাণ কম্পিউটার প্রোগ্রামগুলির তুলনায় অনেক সহজ হতে থাকে। একটি অনুমানমূলক প্রমাণের প্রথম পদক্ষেপগুলি বিবেচনা করুন:

একটি পূর্ণসংখ্যা হতে দিন

খ একটি পূর্ণসংখ্যা হতে দিন

চলুন সি = এ + বি

এখনও পর্যন্ত প্রমাণ ঠিক আছে। আসুন এটি একটি অনুরূপ প্রোগ্রামের প্রথম ধাপে পরিণত করুন:

যাক a = ইনপুট ();

চলুন খ = ইনপুট ();

চলুন সি = এ + বি;

ইতিমধ্যে আমাদের অনেক সমস্যা রয়েছে। ধরে নিই যে ব্যবহারকারী সত্যই কোনও পূর্ণসংখ্যা প্রবেশ করেছে, আমাদের সীমানা পরীক্ষা করতে হবে। কি একটি বেশি -32768 (অথবা যাই হোক না কেন মিনিট আপনার সিস্টেমে কোন int হয়)? কি একটি 32767 কম কিসে? এখন আমাদের জন্য একই জিনিস পরীক্ষা করতে হবে । এবং কারণ আমরা একটি এবং বি যুক্ত করেছি প্রোগ্রামটি সঠিক নয় যদি না + + বি-32768 এর চেয়ে বেশি হয় এবং 32767 এর চেয়ে কম না হয় That's এটি 5 টি পৃথক শর্ত যা কোনও প্রোগ্রামারকে চিন্তিত করতে হবে যে কোনও গণিতবিদ এড়াতে পারবেন না। প্রোগ্রামারকে কেবল তাদের সম্পর্কেই চিন্তিত হতে হবে তা নয়, যখন শর্তগুলির মধ্যে একটি পূরণ না হয় তখন তিনি কী করতে হবে তা নির্ধারণ করতে হবে এবং তিনি সিদ্ধান্ত নিয়েছেন যেখানেই করার কোডটি লিখবেন সেই শর্তগুলি পরিচালনা করার উপায়। গণিত সহজ। প্রোগ্রামিং শক্ত।

2 প্রশ্নকর্তা সংকলন-সময় ত্রুটিগুলি বা রান-টাইম ত্রুটিগুলি উল্লেখ করছেন কিনা তা বলছেন না, তবে প্রোগ্রামাররা সাধারণত সংকলন-সময় ত্রুটিগুলি সম্পর্কে চিন্তা করে না। সংকলক তাদের খুঁজে পায় এবং সেগুলি ঠিক করা সহজ। তারা টাইপসের মতো। লোকেরা প্রথমবার ত্রুটি ছাড়াই কতগুলি অনুচ্ছেদ টাইপ করে?

3 প্রশিক্ষণ।খুব অল্প বয়স থেকেই আমাদের গণিত করতে শেখানো হয় এবং আমরা বার বার ছোট ছোট ভুলগুলির পরিণতির মুখোমুখি হই। একজন প্রশিক্ষিত গণিতবিদকে সাধারণত মাঝারি বিদ্যালয়ে বহু-পদক্ষেপ বীজগণিত সমস্যাগুলি সমাধান করতে হয়েছিল এবং এক সপ্তাহের জন্য প্রতি সপ্তাহে কয়েক ডজন (বা আরও) এই জাতীয় সমস্যাগুলি করতে হয়েছিল। একটি একক বাদ দেওয়া নেতিবাচক চিহ্নের ফলে পুরো সমস্যাটি ভুল হতে পারে। বীজগণিতের পরে সমস্যাগুলি আরও দীর্ঘতর হয়ে ওঠে। অন্যদিকে প্রোগ্রামারদের সাধারণত আনুষ্ঠানিক প্রশিক্ষণ অনেক কম থাকে। অনেকে স্ব-শিক্ষিত (কমপক্ষে প্রাথমিকভাবে) এবং বিশ্ববিদ্যালয় পর্যন্ত আনুষ্ঠানিক প্রশিক্ষণ পান না। এমনকি বিশ্ববিদ্যালয় পর্যায়ে প্রোগ্রামারদের বেশ কয়েকটি গণিতের ক্লাস নিতে হয়, যখন গণিতবিদরা সম্ভবত এক বা দুটি প্রোগ্রামিং ক্লাস নেন।


10

আমি ইউভালের উত্তরটি পছন্দ করি তবে আমি এটির জন্য কিছুটা ছড়িয়ে দিতে চাই। ম্যাথ প্রুফগুলি লেখা আপনার পক্ষে সহজ মনে হতে পারে তার একটি কারণ প্লাটোনিক ম্যাথ অনটোলজি কীভাবে তা ফুটে উঠতে পারে। আমি কী বলতে চাইছি তা দেখতে, নিম্নলিখিতটি বিবেচনা করুন:

  • ম্যাথে ফাংশনগুলি খাঁটি (কোনও ফাংশন বলার সম্পূর্ণ ফলাফলটি সম্পূর্ণরূপে রিটার্ন মানকে আবদ্ধ করা হয়, যা নিরোধক এবং ইনপুট মান থেকে সম্পূর্ণ গণনা করা হয়)।
  • গণিতে কোনও রূপান্তর বা পুনর্নির্দিষ্টকরণ নেই (যখন আপনাকে এই জাতীয় জিনিসগুলির প্রয়োজন হয়, ফাংশন এবং সিকোয়েন্সগুলি ব্যবহার করা হয়)।
  • গণিতটি উল্লেখযোগ্যভাবে স্বচ্ছ (উদাহরণস্বরূপ কোনও পয়েন্টার নয়, কল-বাই-ভুমু কল-বাই-মানের কোনও ধারণা নয়) এবং গাণিতিক বস্তুগুলির এক্সটেনশনাল সমতা শব্দার্থবিজ্ঞান রয়েছে (যদি "দুটি" জিনিস প্রতিটি পর্যবেক্ষণযোগ্য পদ্ধতিতে একই হয়, তবে তারা বাস্তবে সত্য একই জিনিস).

উপরোক্ত বিধিনিষেধগুলি কোনও প্রোগ্রামকে লেখার পক্ষে সহজ করে তোলে কি না তা তর্কযোগ্য হলেও , আমি মনে করি যে উপরোক্ত বিধিনিষেধগুলি কোনও প্রোগ্রাম সম্পর্কে যুক্তি সহজ করে তোলে। ম্যাথ প্রুফ লেখার সময় আপনি যে প্রধান জিনিসটি করেন তা হ'ল আপনি বর্তমানে যে প্রমাণটি লিখছেন তা সম্পর্কে কারণ (যেহেতু প্রোগ্রামিংয়ের বিপরীতে আপনাকে কখনই অ্যাথস্ট্রাকশনস বিনামূল্যে বলে ম্যাথের জন্য সদৃশ প্রচেষ্টা করতে হবে না), তাই সাধারণত জোর দেওয়া উচিত নয় বাধা উপরোক্ত।


7

মৌলিক গাণিতিক প্রমাণগুলি জীবিত মানুষের চাহিদা পূরণের জন্য ডিজাইন করা একটি বাস্তব বিশ্বের প্রয়োগের সমান নয়।

মানুষ কম্পিউটার প্রোগ্রামগুলির ক্ষেত্রে সম্ভবত প্রতিদিনের ভিত্তিতে যা রয়েছে তার উপর তাদের আকাঙ্ক্ষা, চাহিদা এবং প্রয়োজনীয়তা পরিবর্তন করবে।

ফল্টলেস গাণিতিক প্রমাণাদি লেখার ক্ষেত্রে এবং ফল্টলেস কম্পিউটার কোড লেখার ক্ষেত্রে এত কী আলাদা যে এর ফলে প্রাক্তনটি তারপরের চেয়ে অনেক বেশি ট্র্যাকটেবল হয়?

একটি গাণিতিক সমস্যা হিসাবে প্রয়োজনীয়তা পরিষ্কার হিসাবে, একটি ত্রুটিবিহীন প্রোগ্রাম লেখা যেতে পারে। ডিজাকস্ট্রার অ্যালগরিদম গ্রাফের দুটি পয়েন্টের মধ্যে সংক্ষিপ্ততম পথটি আবিষ্কার করতে পারে তা প্রমাণ করে যে কোনও প্রোগ্রাম কার্যকর করা যা নির্বিচারে ইনপুট গ্রহণ করে এবং এর মধ্যে দুটি পয়েন্টের মধ্যে সংক্ষিপ্ত পয়েন্টগুলি সন্ধান করে।

পরিচালনা করার জন্য মেমরি, কর্মক্ষমতা এবং হার্ডওয়্যার উদ্বেগ রয়েছে। আমি আশা করি আমরা অ্যালগরিদম লেখার সময় তাদের সম্পর্কে চিন্তা না করতে পারি, আমরা এটি পরিচালনা করতে খাঁটি এবং কার্যকরী কাঠামো ব্যবহার করতে পারি, তবে কম্পিউটার প্রোগ্রামগুলি হার্ডওয়্যারের "আসল" বিশ্বে বাস করে যেখানে গাণিতিক প্রমাণ ... "তত্ত্ব" তে থাকে।


বা, আরও সংহত হতে :

এখানে চিত্র বর্ণনা লিখুন


4

এটি অন্য একটি কোণ থেকে দেখলে, একটি নন-একাডেমিক সেটিংসে এটি প্রায়শই টাকার নিচে নেমে আসে।

অন্যান্য পোস্টগুলি যেমন দৃsert়ভাবে জোর দিয়েছিল, গণিতটি একটি একক বিমূর্ত স্পেসিফিকেশন, সুতরাং প্রমাণ হিসাবে প্রমাণের জন্য কেবল সেই স্পেসিফিকেশনের মধ্যে ধারাবাহিকভাবে কাজ করা দরকার। একটি কম্পিউটার প্রোগ্রাম গণিতের বিমূর্ত স্পেসিফিকেশনের অনেকগুলি প্রয়োগের উপর পরিচালিত হতে পারে - যার অর্থ একটি ভাষা বা হার্ডওয়্যার নির্মাতারা ভাসমান পয়েন্ট গণিতের যে পদ্ধতি প্রয়োগ করে তা অন্যের তুলনায় কিছুটা আলাদা হতে পারে যার ফলশ্রুতিতে সামান্য ওঠানামার কারণ হতে পারে।

যেমন, কম্পিউটার প্রোগ্রাম লেখার আগে এটি প্রমাণ করার পরে হার্ডওয়্যার স্তর, অপারেটিং সিস্টেম স্তর, ড্রাইভার স্তর, প্রোগ্রামিং ল্যাঙ্গুয়েজ, সংকলক, সম্ভবত ইন্টারপ্রেটার এবং এ জাতীয় হার্ডওয়ারের প্রতিটি সম্ভাব্য সংমিশ্রণের জন্য যুক্তি প্রমাণ করা জড়িত কল্পিতভাবে চালানো যেতে পারে এবং এটি সংক্রামিত হতে পারে এমন কোনও ডেটা। আপনি সম্ভবত মহাকাশ মিশন, অস্ত্র সিস্টেম বা পারমাণবিক শক্তি নিয়ন্ত্রণ ব্যবস্থা সম্পর্কে এই স্তরের প্রস্তুতি এবং বোঝার সন্ধান পাবেন, যেখানে ব্যর্থতার অর্থ হ'ল কয়েক বিলিয়ন ডলার এবং সম্ভাব্য বহু লোকের প্রাণ হারানো, তবে অন্য কিছু নয়।

আপনার 'দৈনন্দিন' প্রোগ্রামার এবং / বা ব্যবসায়ের জন্য, বেশিরভাগ-সঠিক কোডে নির্দিষ্ট স্তরের নির্ভুলতা গ্রহণ করা এবং একটি ব্যবহারযোগ্য পণ্য বিক্রয় করা অনেক বেশি কার্যকর, এবং বিকাশকারীরা বাগের সময় এটি অনাবৃত হওয়ার সাথে সাথে ফিরিয়ে আনতে পারে ব্যবহার সঞ্চয় করুন।


3
আপনার কাছে মনে হচ্ছে গণিত কী এবং তার একটি সংক্ষিপ্ত দৃষ্টিভঙ্গি এবং একটি কম্পিউটার প্রোগ্রাম কীভাবে "প্রমাণিত" হয় তার একটি খুব বেশি দৃষ্টিভঙ্গি। কোনও প্রোগ্রামকে সঠিক প্রমাণ করার জন্য আপনাকে পুরো সিস্টেমটি সঠিক প্রমাণ করার দরকার নেই, আপনাকে কেবল এটি প্রমাণ করতে হবে যে এটি অনুমান করে অন্যান্য উপাদানগুলি তাদের নির্দিষ্টকরণগুলি পূরণ করে। যদি তারা না করে তবে এটি আপনার প্রোগ্রামের দোষ নয়। অন্যদিকে, যদি আপনার প্রোগ্রাম বিরতি কারণ এটি বিবরণ ঐ উপাদান স্পেসিফিকেশন অংশ নয় উপর নির্ভর করে, IEEE754 এর বাস্তবায়নের এর যেমন বৈচিত্র, তাহলে সেই হয় তোমার ভুল।
ডেরেক এলকিন্স

সুষ্ঠু মন্তব্য। আমি সম্ভবত কিছু পরিভাষা এটি আমার একাডেমিক ব্যাকগ্রাউন্ড হিসাবে অপব্যবহার করছি। যদিও আমি অনুভব করি যে আমার পূর্ববর্তী মন্তব্যের কারণে অন্যান্য উপাদানগুলি ত্রুটিহীন বলে ধরে নেওয়া বুদ্ধিমানের কাজ নয়।
নেভিগেটর_

4

আমি মনে করি যে আপনার যুক্তি বৈধ, কিন্তু আপনার ইনপুট না। গাণিতিক প্রমাণগুলি কেবল প্রোগ্রামগুলির চেয়ে বেশি দোষ-সহনশীল নয়, যদি উভয়ই মানুষের দ্বারা লেখা থাকে। ডিজকস্ট্রার ইতিমধ্যে এখানে উদ্ধৃত হয়েছিল, তবে আমি একটি অতিরিক্ত উদ্ধৃতি দেব।

তবুও আমাদের কম্পিউটেশনগুলি এমনভাবে সংগঠিত করতে হবে যাতে আমাদের সীমিত ক্ষমতাগুলি গ্যারান্টি দিতে যথেষ্ট যে গুনটি পছন্দসই প্রভাবটি প্রতিষ্ঠা করবে। এই আয়োজনে প্রোগ্রামটির সংমিশ্রণ অন্তর্ভুক্ত রয়েছে এবং সেখানে আমরা আকারের পরবর্তী সমস্যার মুখোমুখি হচ্ছি। প্রোগ্রামের পাঠ্যের দৈর্ঘ্য এবং আমাদের এই সমস্যাটিও স্পষ্ট স্বীকৃতি দেওয়া উচিত। আমাদের এই সত্যটি সম্পর্কে সচেতন থাকা উচিত যে আমরা কোনও পাঠ্যকে কতটা পড়তে বা লিখতে পারি তার আকারের উপর নির্ভর করে। [...]

আমি একই মেজাজে পাঠকের দৃষ্টি আকর্ষণ করতে চাই যে "স্পষ্টতা" পরিমাণগত দিকগুলি উচ্চারণ করেছে, অনেক গণিতবিদ, কৌতূহলবশত যথেষ্ট, এটি অজানা বলে মনে হয়। দশটি পৃষ্ঠা শর্ত পূর্ণ হলে একটি উপসংহারের বৈধতা উল্লেখ করে এমন একটি উপপাদ্য সম্ভবতই একটি সুবিধাজনক সরঞ্জাম, কারণ যখনই উপপাদীর কাছে আবেদন করা হয় তখন সমস্ত শর্তাদি যাচাই করতে হয়। ইউক্লিডিয়ান জ্যামিতিতে পাইথাগোরসের উপপাদ্য যে কোনও তিনটি বিন্দু A, B এবং C এর জন্য ধারণ করে যে A এবং C এর মাধ্যমে একটি সরল রেখাটি B এবং C এর মধ্য দিয়ে একটি সরলরেখায় অঙ্কিত হতে পারে কতজন গণিতবিদগণ উপস্থাপন করেন যে কিছুটি তত্ত্বটি প্রযোজ্য থাকে যখন কিছু বা এ, বি এবং সি সমস্ত পয়েন্ট মিলছে? তবুও পাইথাগোরাস উপপাদ্যটি যে সুবিধায় ব্যবহার করা যেতে পারে তার জন্য এটি বেশিরভাগ ক্ষেত্রেই দায়বদ্ধ বলে মনে হচ্ছে।

সংক্ষিপ্তসার: একজন ধীর-বুদ্ধিমান মানুষ হিসাবে আমার খুব ছোট মাথা রয়েছে এবং আমি এটির সাথে বেঁচে থাকতে এবং আমার সীমাবদ্ধতার প্রতি শ্রদ্ধা জানানো এবং তাদের উপেক্ষা করার চেষ্টা করার চেয়ে তাদের সম্পূর্ণ কৃতিত্ব দেওয়ার বিষয়ে আরও ভাল শিখতাম, কারণ পরেরটি বৃথা প্রচেষ্টা হবে will ব্যর্থতা দ্বারা শাস্তি।

এটি ডিজকস্ট্রার স্ট্রাকচার্ড প্রোগ্রামিংয়ের প্রথম অধ্যায় থেকে শেষ তিনটি অনুচ্ছেদে সামান্য সম্পাদিত।

সম্ভবত এটিকে পুনরায় ব্যাখ্যা করতে আপনার প্রশ্নের আরও ভাল প্রয়োগ করার জন্য: নির্ভুলতা মূলত আপনার প্রমাণের আকারের একটি কার্য। দীর্ঘ গাণিতিক প্রমাণগুলির নির্ভুলতা প্রতিষ্ঠা করা খুব কঠিন (প্রচুর প্রকাশিত "প্রমাণ" অনিশ্চয়তার কায়দায় বাস করে যেহেতু বাস্তবে কেউ সেগুলি যাচাই করে না)। তবে, আপনি যদি তুচ্ছ প্রোগ্রামগুলির যথার্থতাটিকে তুচ্ছ প্রমাণগুলির সাথে তুলনা করেন তবে সম্ভবত কোনও লক্ষণীয় পার্থক্য নেই। তবে, অটোমেটেড প্রুফ অ্যাসিস্ট্যান্টস (একটি বিস্তৃত অর্থে, আপনার জাভা সংকলকটিও প্রুফ সহকারী), প্রোগ্রামগুলি প্রচুর ভিত্তিতে কাজ করে স্বয়ংক্রিয়ভাবে জয়লাভ করুন।


"দীর্ঘ গাণিতিক প্রমাণ" বলতে কী বোঝ? গ্রাফ গৌণ উপপাদকের প্রমাণটি বেশ দীর্ঘ, তবে এটি কারও দ্বারা সত্যই বিতর্কিত নয়। ফিট-থম্পসন উপপাদ্যের বেশ দীর্ঘ প্রমাণ রয়েছে, তবে বাস্তবে কখনও তা ছিল না। আপনি কীভাবে প্রমাণ এবং প্রোগ্রামগুলির দৈর্ঘ্যের তুলনা করেন? শব্দের সংখ্যা? আপনি যখন অনুরূপ জটিলতার (দৈর্ঘ্যের) প্রমাণ এবং প্রোগ্রামগুলির তুলনা করেন তখন প্রমাণ এবং প্রোগ্রামগুলির মধ্যে সত্যই কোনও লক্ষণীয় পার্থক্য নেই?
যুবাল ফিল্মাস

@ ইউভালফিল্মাস ঠিক উক্তিটির মতো: দশ পৃষ্ঠার দাবী মানুষের পক্ষে দীর্ঘ। কোনও প্রোগ্রামের দৈর্ঘ্য সম্পর্কে আমি কীভাবে বিচার করব? ঠিক আছে, ডিকস্ট্রা একটি মেট্রিক অফার করেছিলেন: এর পাঠ্যের দৈর্ঘ্য। আমি মনে করি এটি খুব সরলবাদী হতে পারে তবে এটি তবুও এটি একটি ভাল তাত্পর্যপূর্ণ। আরও রয়েছে, আরও আকর্ষণীয় মেট্রিকস, যেমন, উদাহরণস্বরূপ,
চক্রবিজ্ঞান সংক্রান্ত

3

অন্যান্য উত্তরগুলি যেমন তাদের উত্তরগুলিতে স্পর্শ করেছে (আমি বিস্তৃত করতে চাই) তবে ইস্যুটির একটি বড় অংশ গ্রন্থাগার ব্যবহার। এমনকি নিখুঁত ডকুমেন্টেশন সহ (বুগলস কোড হিসাবে সাধারণ), গ্রন্থাগারটি ব্যবহার করে প্রতিটি প্রোগ্রামারকে লাইব্রেরির সম্পূর্ণ জ্ঞান স্থানান্তর করা অসম্ভব। প্রোগ্রামার যদি তাদের লাইব্রেরিটি পুরোপুরি বুঝতে না পারে তবে এটি ব্যবহার করার সময় তারা ভুল করতে পারে। কখনও কখনও এর ফলে কোডটি কাজ না করে এমন জটিল বাগের ফলাফল হতে পারে। তবে ছোটখাটো বাগের জন্য এগুলি নজরে নাও যেতে পারে।

একই রকম পরিস্থিতি যদি কোনও গণিতবিদ বিদ্যমান প্রমাণ এবং লেমমাগুলি পুরোপুরি না বুঝে ব্যবহার করেন; তাদের নিজস্ব প্রমাণ সম্ভবত ত্রুটিযুক্ত হবে। যদিও এটির সমাধানটি হ'ল সমাধানটি হ'ল প্রতিটি লাইব্রেরি সঠিকভাবে শেখা; এটি কার্যত অত্যন্ত সময়সাপেক্ষ এবং এটির জন্য ডোমেন জ্ঞানের প্রয়োজন হতে পারে যা প্রোগ্রামারটির নেই doesn't (আমি ডিএনএ সিকোয়েন্সিং / প্রোটিন সংশ্লেষণের খুব কম জানি; তবুও গ্রন্থাগারগুলি ব্যবহার করে এই ধারণাগুলি নিয়ে কাজ করতে পারি)।

আরও সংক্ষেপে বলা যায়, সফটওয়্যার ইঞ্জিনিয়ারিং (সাধারণভাবে প্রকৌশল) বিভিন্ন সমস্যার বিমূর্ততার উপর ভিত্তি করে লোকেদের যে সমস্যার ক্ষেত্রে বিশেষভাবে বিশেষায়িত করা হয় তার জন্য ছোট ক্ষেত্রগুলিতে মনোনিবেশ করতে পারে This এটি লোকেরা তাদের অঞ্চলে দক্ষতার বিকাশ করতে দেয়, তবে দুর্দান্ত যোগাযোগেরও প্রয়োজন প্রতিটি স্তর মধ্যে। যখন যোগাযোগটি নিখুঁত হয় না, এটি সমস্যার কারণ হয়।


3
অপেক্ষা করুন, আপনি কী ভাবেন যে গণিতবিদরা প্রমাণ এবং লেমাস ব্যবহার করেন সেগুলি "পুরোপুরি বোঝে"? আমি এখানে গণিতবিদ এবং প্রোগ্রামারদের মধ্যে পার্থক্য সম্পর্কে নিশ্চিত নই যা আপনি এখানে প্রদর্শনের চেষ্টা করছেন।
ডেরেক এলকিন্স

3

আমি এই দুর্দান্ত উত্তরের পরে আসল হওয়ার চেষ্টা করব।

প্রোগ্রামগুলি তার প্রমাণ হয়

কারি-হাওয়ার্ড isomorphism আমাদের বলে, আপনার প্রোগ্রামে ধরনের উপপাদ্য এবং প্রকৃত কোড তাদের প্রমাণ।

স্বীকার করা, এটি খুব বিমূর্ত এবং উচ্চ-স্তরের দৃশ্য। আপনি সম্ভবত সম্ভবত বোঝার বিষয়টিটি একটি সাধারণ লেখা কোড শক্ত কারণ এটি খুব নিম্ন-স্তরের হয়ে যায়। বেশিরভাগ ক্ষেত্রে আপনাকে "মেশিনকে কী করা উচিত তা বলা দরকার"। বা, এটিকে অন্য দিক থেকে দেখার জন্য: গণিতবিদরা বিমূর্ততায় সত্যই ভাল।

পার্শ্ব নোট হিসাবে: "স্ট্রিমগুলির সংগীত" উভয়ের মধ্যে সর্বাধিক সুন্দর সেতুগুলির মধ্যে একটি। এটি মূলত বলতে "পাবে জিনিষ আপ সেট করে আমি চাই এই মধ্যে যে উপায়" এবং মেশিন জাদুর করে এই ঠিক হিসাবে পছন্দসই।


আমি এই প্রশ্নের উত্তর দিচ্ছি কিনা তা পুরোপুরি দেখছি না। ওপি কোনও শক্তিশালী টাইপ সিস্টেমের সাথে প্রোগ্রামিং ভাষার বিষয়ে যে ইঙ্গিত দিচ্ছে তা কোনও ইঙ্গিত দেয়নি এবং আমি মনে করি তারা আরও জেনেরিক টাইপ সিস্টেম বোঝায়। সুতরাং কারি-হাওয়ার্ড এক্ষেত্রে তুচ্ছ ধরনের।
6005

আমি জানি এটি সি বা অনুরূপ জিনিসগুলির জন্য কিছুটা দূরের। তবে আমার বক্তব্যটি হল: গণিতটি সিএস সূচনাপ্রসূত সূত্রের তুলনায় আরও কাছাকাছি!
ওলেগ লোবাচেভ

1
দেখে মনে হচ্ছে আপনি কারি-হাওয়ার্ডস আইসোমরফিজমের একজন 'অযত্ন পর্যবেক্ষক', আমি আমার উত্তরে উল্লেখ করেছি। এমনকি যদি আমাদের প্রোগ্রাম এবং প্রমাণগুলির মধ্যে আইসোম্পারিজম থাকে তবে এটি অনুসরণ করে না যে প্রোগ্রামগুলি লেখার এবং প্রুফ লেখার কাজটি মোটেও একই রকম। আসলে, এটি এমনও হতে পারে যে সমস্ত 'আকর্ষণীয়' বা 'সাধারণ' প্রোগ্রামগুলি একটি সাধারণ প্রমাণের সাথে মিল নয় এবং বিপরীতে।
বিচ্ছিন্ন টিকটিকি

@ ডিসক্রিটেলিজার্ড এটি "আকর্ষণীয়" প্রোগ্রামগুলি "আদর্শ প্রমাণ" এর সাথে সামঞ্জস্যপূর্ণ নয় এমনটি প্রদর্শনযোগ্যভাবে নয়। এখানে একটি উদাহরণ যেখানে আমি কারও "সাধারণ প্রমাণ" নিই এবং একটি (স্কেচ) একটি অনস্বীকার্যভাবে আকর্ষণীয় প্রোগ্রাম (গাউসিয়ান নির্মূলের সাথে ঘনিষ্ঠভাবে সম্পর্কিত কিছু) উত্পাদন করি। যথাযথ সুনির্দিষ্ট প্রকারের সাথে সজ্জিত, আমি মনে করি বেশিরভাগ "আকর্ষণীয়" প্রোগ্রামগুলি দরকারী লেমমাস বা উপপাদ্য হবে, তবে অনেকগুলি (গঠনমূলক) প্রমাণগুলির প্রকৃত গণনাগত তাত্পর্য নেই - তারা কেবল পার্শ্ব-শর্তগুলি যাচাই করছে - যদিও অনেকগুলি করে।
ডেরেক এলকিন্স

3

অন্যান্য অনেক উত্তরের কোনওটিই নীচের দিকে নির্দেশ করে না। গাণিতিক প্রমাণগুলি কাল্পনিক কম্পিউটিং সিস্টেমে অপারেট করে যা অসীম স্মৃতি এবং অসীম কম্পিউটিং শক্তি রাখে। অতএব তারা অসীম নির্ভুলতার জন্য নির্বিচারে বড় সংখ্যা ধরে রাখতে পারে এবং কোনও গণনায় কোনও নির্ভুলতা হারাতে পারে না।

π


2
"গাণিতিক প্রমাণগুলি কাল্পনিক কম্পিউটিং সিস্টেমে অপারেট করে যা অসীম স্মৃতি এবং অসীম কম্পিউটিং শক্তি রাখে।" বেশিরভাগ গাণিতিক প্রমাণগুলি আনুষ্ঠানিক বীজগণিত সিস্টেমগুলিতে 'পরিচালনা' করে, যেমন আসল সংখ্যা (যেখানে আমাদের 'অসীম নির্ভুলতা রয়েছে')। এটি প্রোগ্রামগুলিতেও করা যেতে পারে: তথাকথিত কম্পিউটার বীজগণিত সিস্টেম (সিএএস) রয়েছে যা এটি অবশ্যই করে! তদুপরি, গণিতের পুরো ক্ষেত্রগুলি এই বিষয়টি নিয়ে উদ্বিগ্ন যে আমরা সমস্ত আসল সংখ্যাকে ঠিক সীমাবদ্ধ ভাসমান পয়েন্ট সংখ্যা হিসাবে উপস্থাপন করতে পারি না। আমি মনে করি আপনি গণিত এবং প্রোগ্রামিংয়ের মধ্যে একটি পার্থক্য তৈরি করছেন যেখানে কিছুই নেই।
বিচ্ছিন্ন টিকটিকি

1
@ ডিসক্রিটেলিজার্ড, হ্যাঁ, স্বেচ্ছাসেবী যথাযথতার সাথে বিশেষ প্যাকেজ উপস্থিত রয়েছে তবে তারপরেও উপলব্ধ মেমরি প্রকৃত অর্জনযোগ্য নির্ভুলতার সীমাবদ্ধ করবে। এছাড়াও তারা বিশেষ প্যাকেজ। এই জাতীয় প্যাকেজগুলির সাথে প্রোগ্রামিংয়ের একটি ক্ষুদ্র অনুপাত কেবল বেশিরভাগই একাডেমিক সেটিংয়ে সম্পন্ন হয়।
ক্রোবার

π

@ ডিসক্রিটেলিজার্ড, আমার ধারণা এখনও আমার বক্তব্য দাঁড়িয়ে আছে, বেশিরভাগ প্রোগ্রামাররা এ জাতীয় সিএএস সিস্টেম ব্যবহার করে না। রিয়েল-ওয়ার্ল্ড প্রোগ্রামিংয়ের জন্য এগুলি অনেক ধীর। বেশিরভাগ প্রোগ্রামিংয়ে সীমিত নির্ভুলতার সংখ্যার উপর ক্রিয়াকলাপ জড়িত। শীর্ষ ভাষাগুলি হ'ল সি, সি ++, পাইথন, জাভা ইত্যাদি কোনওটিই ডিফল্টরূপে সিএএস শৈলীর উপস্থাপনা ব্যবহার করে না (যদিও এটি করার জন্য প্যাকেজগুলি সেগুলিতে তৈরি হতে পারে)। আপনার প্রতিবিম্বটি কম্পিউটার ভাষা / সিস্টেমগুলির একটি ছোট কুলুঙ্গি উপসেট।
ক্রোবার

2
@ ক্রোবার আপনার উত্তর সহ সমস্যাটি হ'ল শনাক্ত হওয়া বাগের সিংহভাগটি ভাসমান পয়েন্ট ত্রুটি বা পূর্ণসংখ্যার অতিরিক্ত প্রবাহের কারণে নয় (যদিও এগুলি একটি শালীন সংখ্যার অবদান রাখে, এবং এই দিকগুলি অবশ্যই কোনও প্রোগ্রামের সম্পূর্ণ নির্ভুলতার চেয়ে অনেক বেশি সম্ভাবনা তৈরি করে)। তবে আপনি আরও সাধারণ দাবি করতে পারেন যে গণিতবিদদের কর্মক্ষমতা, সময়ের সাথে বাজার, রক্ষণাবেক্ষণযোগ্যতা এবং যদি তারা খুব চ্যালেঞ্জ প্রমাণ করে তবে প্রয়োজনীয়তাগুলি পরিবর্তন করার একটি সীমিত ক্ষমতার মতো প্রোগ্রামারের অনেক উদ্বেগের অভাব রয়েছে।
ডেরেক এলকিন্স

3

এটা না। গাণিতিক প্রমাণগুলি প্রকৃতির দ্বারা ঠিক বগি, এটি ঠিক যে তাদের পাঠক সংকলক অপেক্ষা আরও অনুমতিপ্রাপ্ত। একইভাবে, কোনও কম্পিউটার প্রোগ্রামের পাঠকরা কমপক্ষে এটি চালানোর চেষ্টা না করা পর্যন্ত এটি সঠিক বলে বিশ্বাস করে সহজেই বোকা হয়ে যায়।

উদাহরণস্বরূপ, আমরা যদি গাণিতিক প্রমাণকে জেডএফসির মতো একটি আনুষ্ঠানিক ভাষায় অনুবাদ করার চেষ্টা করি তবে এতে বাগগুলিও থাকবে। কারণ এই প্রমাণগুলি সত্যই দীর্ঘায়িত হতে পারে তাই আমরা প্রমাণ উত্পন্ন করতে একটি প্রোগ্রাম লিখতে বাধ্য হই। ফাউন্ডেশনাল প্রমাণগুলি আনুষ্ঠানিককরণে সক্রিয় গবেষণা থাকলেও খুব কম লোকই তাদের বিপদে পড়ে যায়।

এবং প্রকৃতপক্ষে, গণিত বিএসওড পেতে পারে! এটা প্রথম হবে না!

এখানে চিত্র বর্ণনা লিখুন

এই গোঁড়া ধারণাটি যে সমস্ত গাণিতিক প্রমাণ যা যথেষ্ট পরিমাণে যাচাই করা হয়েছে তা মূলত সঠিক বা সঠিক তৈরি করা যেতে পারে যা আপনার সফ্টওয়্যার প্রকল্পে কাজ করার জন্য অনুপ্রাণিত করে: যতক্ষণ আমরা রোডম্যাপে থাকব, আমরা সমস্ত বাগ খুঁজে বের করব এবং বৈশিষ্ট্যগুলি সম্পূর্ণ - এটি একটি পুনরাবৃত্তি প্রক্রিয়া যা একটি চূড়ান্ত চূড়ান্ত পণ্যের দিকে পরিচালিত করে।

এখানে ফ্লিপ পাশ। দেখুন, আমরা ইতিমধ্যে তহবিল পেয়েছি, ব্যবসায়িক ধারণাটি বৈধতা দিয়েছি, সমস্ত দস্তাবেজগুলি আপনার পড়ার জন্য এখানেই রয়েছে। আমাদের কেবলমাত্র আপনাকে কার্যকর করা দরকার এবং এটি একটি নিশ্চিত বিষয়!

হিলবার্টের জন্য খুব বেশি দু: খ অনুভব করা যাক না , তিনি জানতেন যে তিনি কীভাবে প্রবেশ করছেন। এটা শুধু ব্যবসা।

আপনি যদি সত্যিই নিশ্চিত হতে চান, তবে কেস-কেস-কেস ভিত্তিতে সমস্ত কিছু নিন এবং আপনার নিজের সিদ্ধান্তে আঁকুন!


3

আমি গণিতের প্রমাণগুলির চেয়ে প্রোগ্রামগুলিকে আরও ত্রুটিযুক্ত হওয়ার দুটি গুরুত্বপূর্ণ কারণ দেখছি:

1: প্রোগ্রামগুলিতে সময়ের সাথে পরিবর্তনশীল বা গতিশীল অবজেক্ট থাকে, যখন প্রমাণগুলিতে গাণিতিক অবজেক্টগুলি সাধারণত স্থির থাকে। সুতরাং, গণিতে স্বরলিপিটি যুক্তির প্রত্যক্ষ সমর্থন হিসাবে ব্যবহার করা যেতে পারে, (এবং যদি a = খ হয়, তবে এটি এখনও রয়ে যায়) যেখানে এটি প্রোগ্রামগুলিতে কাজ করে না। এছাড়াও, প্রোগ্রামগুলি সমান্তরাল হয় বা একাধিক থ্রেড থাকে যেখানে এই সমস্যাটি আরও খারাপ হয় gets

2: গণিত প্রায়শই তুলনামূলকভাবে পরিষ্কারভাবে সংজ্ঞায়িত অবজেক্ট (গ্রাফ, ম্যানিফোল্ডস, রিং, গ্রুপ, ইত্যাদি) ধরে রাখে যেখানে প্রোগ্রামিং খুব অগোছালো এবং বরং অনিয়মিত বিষয়গুলির সাথে সম্পর্কিত: সুনির্দিষ্ট নির্ভুল গণিত, সসীম স্ট্যাকস, চরিত্র-সংখ্যার রূপান্তর, পয়েন্টার, আবর্জনা যা সংগ্রহের প্রয়োজন , ইত্যাদি ... সঠিকতার সাথে প্রাসঙ্গিক শর্তাদি সংগ্রহ তাই মনে রাখা খুব কঠিন।


3

আপনার দুটি পৃথক "বিভাগ" আলাদা করা উচিত:

  • সিউডো-প্রমাণাদি (বা সিউডো কোড) - এটি আপনি বইগুলিতে দেখেন। এটি প্রাকৃতিক ভাষায় রচিত (যেমন ইংরেজিতে)। ম্যাথ (বা অ্যালগোরিদম) শিখতে আপনার এটি ব্যবহার করা উচিত।
  • প্রথাগত প্রমাণ (বা ফর্মাল কোড) - আপনি যখন আপনার প্রমাণ (বা কোড) যান্ত্রিকভাবে যাচাইযোগ্য (বা এক্সিকিউটেবল) হতে হবে তখন আপনি এটি লিখেন। এই জাতীয় প্রতিনিধিত্বের জন্য কোনও "মানব বুদ্ধি" প্রয়োজন হয় না। এটি পূর্বনির্ধারিত কিছু পদক্ষেপ অনুসরণ করে (সাধারণত আজ কম্পিউটার দ্বারা করা হয়) যান্ত্রিকভাবে এটি যাচাই (বা সম্পাদিত) হতে পারে।

আমরা কয়েক হাজার বছর ধরে সিউডো-কোড ব্যবহার করে আসছি (যেমন ইউক্লিডস অ্যালগরিদম)। কম্পিউটারের আবিষ্কারের পরে আনুষ্ঠানিক কোড (সি বা জাভার মতো আনুষ্ঠানিক ভাষায়) লেখা অত্যন্ত জনপ্রিয় এবং দরকারী হয়ে ওঠে। তবে, দুঃখের বিষয়, আনুষ্ঠানিক প্রমাণ (প্রিন্সিপিয়া ম্যাথমেটিকা ​​বা মেটামথের মতো আনুষ্ঠানিক ভাষায়) খুব জনপ্রিয় নয়। এবং যেহেতু সকলেই আজ সিউডো প্রুফ লেখেন, লোকেরা প্রায়শই নতুন প্রমাণ সম্পর্কে তর্ক করে। এগুলিতে ভুলগুলি বছর, দশক বা এমনকি শতাব্দীর শতাব্দী পরেও সত্যিকারের "প্রমাণ" পাওয়া যায়।


3

আমি রেফারেন্সটি খুঁজে পাচ্ছি না, তবে আমি মনে করি টনি হোয়ের একবার নিম্নলিখিত লাইনের সাথে কিছু বলেছিল: একটি প্রোগ্রাম পরীক্ষা করা এবং একটি প্রমাণ পরীক্ষা করার মধ্যে পার্থক্য হ'ল প্রমাণটি একবারে দুটি লাইন চেক করা যায়।

এক কথায়: লোকালয়।

প্রুফগুলি লিখিত হয় যাতে তাদের সহজে পরীক্ষা করা যায়। প্রোগ্রামগুলি লিখিত হয় যাতে তাদের কার্যকর করা যায়। এই কারণে প্রোগ্রামাররা সাধারণত এমন তথ্য ফেলে রাখে যা প্রোগ্রামটি পরীক্ষা করার জন্য কারও পক্ষে উপকারী হবে।

এই প্রোগ্রামটি বিবেচনা করুন, যেখানে এক্স কেবল পঠনযোগ্য

    assume x >= 0
    p := 0 ;
    var pp := 0 ;
    while( x >= pp + 2*p + 1 ) 
    {
        var q := 1 ;
        var qq := q ;
        var pq := p ;
        while(  pp + 4*pq + 4*qq <= x )
        {
            q, pq, qq := 2*q, 2*pq, 4*qq ;
        }
        p, pp := p + q, pp + 2*pq + qq ;
    }
    assert  p*p <= x < (p+1)*(p+1)

এটি কার্যকর করা সহজ, তবে চেক করা কঠিন।

তবে আমি যদি অনুপস্থিত প্রতিবেদনে আবার যুক্ত করি তবে আপনি স্থানীয়ভাবে প্রোগ্রামটি পরীক্ষা করে পরীক্ষা করে দেখতে পারেন যে প্রতিটি কার্যক্রমে তার পূর্বের এবং পোস্টকন্ডিশনের প্রতিস্থাপনের সাথে সঠিক রয়েছে এবং প্রতিটি লুপের জন্য লুপের পোস্টকন্ডিশনটি দ্বারা বোঝানো হয়েছে আক্রমণকারী এবং লুপ গার্ডের অবহেলা।

    assume x >= 0
    p := 0 ;
    var pp := 0 ; 
    while( x >= pp + 2*p + 1 ) 
        invariant p*p <= x 
        invariant pp == p*p
        decreases x-p*p 
    {
        var q := 1 ;
        var qq := q ; 
        var pq := p ; 
        while(  pp + 4*pq + 4*qq <= x )
            invariant (p+q)*(p+q) <= x
            invariant q > 0 
            invariant qq == q*q 
            invariant pq == p*q 
            decreases x-(p+q)*(p+q)
        {
            q, pq, qq := 2*q, 2*pq, 4*qq ;
        }
        assert (p+q)*(p+q) <= x and pp==p*p and pq==p*q and qq==q*q and q>0
        p, pp := p + q, pp + 2*pq + qq ;
    }
    assert  p*p <= x < (p+1)*(p+1)

আসল প্রশ্নে ফিরে আসছি: কম্পিউটার কোড লেখার চেয়ে গাণিতিক প্রমাণগুলি কেন বেশি ফল্ট-প্রুফ লেখা হচ্ছে? যেহেতু প্রমাণগুলি তাদের পাঠকদের দ্বারা সহজেই পরীক্ষা করার জন্য ডিজাইন করা হয়েছে, তাই তারা সহজেই তাদের লেখক দ্বারা চেক করা হয় এবং এইভাবে সতর্ক লেখকরা তাদের প্রমাণগুলিতে যৌক্তিক ত্রুটিগুলি (বা কমপক্ষে রাখবেন না)। আমরা যখন প্রোগ্রাম করি, আমরা প্রায়শই আমাদের কোড সঠিক হওয়ার কারণটি লিখতে ব্যর্থ হই; ফলাফলটি হ'ল পাঠক এবং একটি প্রোগ্রামের লেখক উভয়ের পক্ষে কোডটি পরীক্ষা করা কঠিন; ফলাফলটি হ'ল লেখকরা ত্রুটি করে (এবং তারপরে রাখেন)।

তবে আশা আছে। যদি আমরা কোনও প্রোগ্রাম লিখি, আমরা প্রোগ্রামটি সঠিক বলে মনে করি কারণটিও আমরা লিখে রাখি, তারপরে আমরা কোডটি লেখার সাথে সাথে চেক করতে পারি এবং এভাবে কম বগী কোডটি লিখতে পারি। এটিরও আরও সুবিধা রয়েছে যে অন্যরা আমাদের কোডটি পড়তে এবং নিজের জন্য এটি পরীক্ষা করতে পারে।


2

আমরা জিজ্ঞাসা করতে পারি যে অনুশীলনে আরও কঠিন , বা নীতিগতভাবে , প্রমাণগুলি লিখতে বা কোড লিখতে হবে কিনা ।

অনুশীলনে, প্রমাণ করা কোডিংয়ের চেয়ে অনেক বেশি শক্ত। কলেজ স্তরের গণিতের দু'বছর গ্রহণকারী খুব কম লোকই প্রমাণ, এমনকি তুচ্ছ বিষয়গুলিও লিখতে পারে। এমন লোকদের মধ্যে যারা কলেজ-স্তরের সিএস দুই বছর নিয়েছেন, সম্ভবত কমপক্ষে 30% FizzBuzz সমাধান করতে পারেন

তবে নীতিগতভাবে , এটি অন্যান্য উপায়ে কেন মৌলিক কারণ রয়েছে। প্রমাণগুলি, অন্তত নীতিগতভাবে, এমন প্রক্রিয়াটির মাধ্যমে সঠিকতার জন্য যাচাই করা যেতে পারে যার কোনও রায় বা বোঝার দরকার নেই। প্রোগ্রামগুলি পারে না - আমরা কোনও নির্ধারিত প্রক্রিয়ার মাধ্যমে বলতে পারি না, কোনও প্রোগ্রাম থামবে কিনা।


3
কলেজ-স্তরের গণিতের দুই বছরের অর্থ প্রমাণ লেখার জন্য (বা প্রমাণ লেখার জন্য কোনও সময় ব্যয় করা ) দু'বছর নয় focused এটি বলেছিল, আমার ধারণাটি হ'ল মধ্য-/ প্রাথমিক বিদ্যালয়ের জ্যামিতি ক্লাসগুলির পক্ষে প্রমাণগুলি অন্তর্ভুক্ত করা সাধারণ, তাই স্পষ্টতই আমরা আশা করতে পারি যে 13 বছরের বাচ্চারাও স্কুল শিক্ষার চেয়ে কম বছরের সাথে সহজ প্রমাণ লিখতে সক্ষম হবে বিষয়। ধাপে ধাপে বীজগণিত গণনাগুলিও মূলত প্রমাণ। আমি মনে করি আপনি "তুচ্ছ" প্রোগ্রামিংয়ের জন্য খুব কম এবং উপায়টিকে খুব বেশি প্রমাণ করার জন্য বারটি রাখছেন।
ডেরেক এলকিন্স

3
আমরা একইভাবে প্রোগ্রাম লিখতে পারে। আপনি একটি প্রয়োজনীয়তা কল্পনা করতে পারেন যে আপনার লেখা প্রতিটি ফাংশন / পদ্ধতিতে একটি আনুষ্ঠানিক স্পেসিফিকেশন এবং একটি প্রমাণ সরবরাহ করতে হবে (কোক ভাষায়, বলুন) যে এটি অনুমিত হয়। সেই প্রমাণকে সঠিকভাবে যাচাই করার উপায়গুলি এমনভাবে রয়েছে যাতে কোনও বিচার বা বোঝার দরকার নেই।
DW

@ ডিডাব্লু: আপনি ধরে নিচ্ছেন যে (১) পছন্দসই আচরণটি সমস্ত ক্ষেত্রে সম্পূর্ণরূপে নির্দিষ্ট করা যেতে পারে, (২) প্রয়োজনীয় প্রমাণ উপস্থিত রয়েছে (যেমন, সমস্যাটি অনস্বীকার্য নয়), এবং (৩) যদি প্রমাণ উপস্থিত থাকে তবে আমরা এটি খুঁজে পেতে পারেন। আমি মনে করি এই তিনটি অনুমান কমপক্ষে কিছু ক্ষেত্রে (সম্ভবত প্রায় সব ক্ষেত্রেই) মিথ্যা। পুনরায় 3, নোট করুন যে যদিও কিছু প্রমাণ সহজ হতে পারে তবে অনেক প্রমাণ খুঁজে পাওয়া খুব কঠিন।
বেন ক্রোয়েল

@ ডেরেকএলকিনস: আমার দাবি যে খুব কম কলেজ ছাত্র এমনকি তুচ্ছ প্রমাণ লিখতে পারে আমার ছাত্রদের সাথে আমার নিজের অভিজ্ঞতার ভিত্তিতে। এটি একটি কমিউনিটি কলেজে, তাই ওয়াইএমএমভি। কিছু হাই স্কুল জ্যামিতি ক্লাসে প্রুফ রাইটিংয়ের একটি ভারী ডোজ অন্তর্ভুক্ত হওয়া সত্য যে কোনও কলেজের সমস্ত শিক্ষার্থী প্রুফ লিখতে পারে তা অনুবাদ করে না। তারা বেসিক বীজগণিত কীভাবে করতে হয় তাও জানার কথা, তবে আমার বিদ্যালয়ে প্রায় অর্ধেক নবীন ক্যালকের শিক্ষার্থীরা তা করতে পারে না - যা কেন এত ব্যর্থ হয় তা ব্যাখ্যা করতে সহায়তা করে।
বেন ক্রোয়েল

উত্তরের সাথে যুক্ত করার জন্য, প্রোগ্রামটির সঠিকতার জন্য যাচাই করার জন্য কেন আপনি একই পন্থাটি গ্রহণ করতে পারবেন না তা ব্যাখ্যা করার জন্য এটি একটি ভাল ব্যাখ্যা হবে। সাধারণত (2) এবং (3) খুব কমই একটি সমস্যা হয়, হয় অনুশীলনে বা নীতিগতভাবে (যদি আপনি প্রোগ্রামটি সঠিক প্রমাণ করতে না পারেন, আপনি এটি সঠিক প্রমাণ না করা পর্যন্ত অন্যভাবে লিখুন )। তবে আপনার (1) হয় একটি গুরুত্বপূর্ণ পয়েন্ট, এবং আমি মনে করি এটা ব্যাখ্যা করার কেন যে এটি হার্ড হিসাবে আমরা প্রমাণাদি জন্য কি প্রোগ্রামের জন্য একই জিনিস করে করে তোলে উত্তর জোরদার হবে।
DW

2

গাণিতিক বিবৃতিগুলির একটি ছোট্ট অংশ যা সত্য তা কার্যকরভাবে প্রমাণিত হতে পারে। আরও উল্লেখযোগ্যভাবে, গাণিতিক অলসিওমের একটি অ-তুচ্ছ (*) সেট তৈরি করা অসম্ভব যে সমস্ত সত্য বিবৃতি প্রমাণিত করতে দেয়। কম্পিউটারের সাহায্যে যে কাজগুলি করা যায় তার একটি ক্ষুদ্র ভগ্নাংশ করার জন্য যদি কেবল প্রোগ্রাম লেখার প্রয়োজন হয়, তবে সম্ভবত সঠিক-সঠিক সফ্টওয়্যারটি লেখা সম্ভব ছিল, তবে কম্পিউটারগুলি প্রায়শই সঠিকভাবে-সঠিকের সীমার বাইরে কাজ করার জন্য বলা হয় সফ্টওয়্যার সম্পন্ন করতে পারেন।

(*) অক্ষরবৃত্তের একটি সেট সংজ্ঞায়িত করা সম্ভব যা সমস্ত সত্য বিবৃতি গণনা করার অনুমতি দেয় এবং এভাবে প্রমাণিত হয়, তবে সেগুলি সাধারণত খুব আকর্ষণীয় নয়। তুলনামূলকভাবে বক্তৃতাযুক্ত, অ-তুচ্ছ, সেগুলির মধ্যে আনুষ্ঠানিকভাবে অক্সিজমের সেটগুলি শ্রেণীবদ্ধ করা সম্ভব হলেও মূল বিষয়টি হ'ল যে বক্তব্যগুলির প্রমাণযোগ্য অস্তিত্ব সত্য তবে প্রমাণিত হতে পারে না সেগুলি কোনও ত্রুটি নয় axioms এর। যে কোনও বিদ্যমান সত্য-তবে-অযোগ্য-বিবৃতি প্রমাণযোগ্য হিসাবে অক্ষর যুক্ত করা অন্য বিবৃতিগুলি সত্য হয়ে উঠবে তবে সেগুলি প্রযোজনীয় না করে।


1
"গাণিতিক বিবৃতিগুলির একটি ক্ষুদ্র অংশ যা সত্য, এটি ব্যবহারিকভাবে প্রমাণিত হতে পারে।" - আপনি কিভাবে "অংশ" পরিমাপ করছেন? এটি কি কিছু সম্ভাবনা বন্টনের অধীনে? আপনার এই বিবৃতি সমর্থন করার প্রমাণ আছে?
DW

"কম্পিউটারগুলি প্রায়শই সম্ভবত সঠিক-সঠিক সফ্টওয়্যার যা অর্জন করতে পারে তার সীমার বাইরে কিছু করার জন্য বলা হয়।" - আপনার কাছে এর কোনও প্রমাণ আছে কি? আপনার কি উদাহরণ আছে? আপনি কি দাবি করছেন যে "নীতিগতভাবে সঠিক প্রমাণিত হতে পারে তার বাইরে" বা "আমরা বাস্তবে প্রমাণ করার পক্ষে কল্পনা করতে পারি তার বাইরেও"?
DW

@ ডাব্লুডাব্লু: যদি এক্স এবং ওয়াই অরথোগোনাল স্টেটমেন্টগুলি সত্য তবে অ-প্রমাণযোগ্য নয় তবে প্রতিটা প্রমাণযোগ্য বক্তব্য পি এর জন্য কমপক্ষে দুটি অर्थোগোনাল স্টেটমেন্ট (পি এবং এক্স), এবং (পি এবং ওয়াই) থাকবে যা সত্য তবে অ -provable। অসীম সেটগুলির সাথে কাজ করার সময়, এই জাতীয় যুক্তি অগত্যা কিছু প্রমাণ করে না, যেহেতু কেউ একই রকম যুক্তি ব্যবহার করতে পারে তা দেখানোর জন্য যে দ্বিগুণ সংখ্যক এমনকি পূর্ণসংখ্যার দ্বিগুণ হয়, যেহেতু প্রতিটি বিজোড় পূর্ণসংখ্যার জন্য একজন দুটি এমনকি পূর্ণসংখ্যা (4x) সনাক্ত করতে পারে এবং (4x + 2) যা অন্য কোনও বিজোড় পূর্ণসংখ্যার সাথে সম্পর্কিত নয় তবে অবশ্যই এবং বিজোড় পূর্ণসংখ্যার সমান কার্ডিনালিটি রয়েছে।
সুপারক্যাট

@ ডাব্লুডাব্লু: "ছোট অংশ" বাক্যাংশটি কেবলমাত্র সত্য বিবৃতিগুলির ভগ্নাংশের বর্ণনায় সত্যিকার অর্থে বোধগম্য হতে পারে যা ব্যবহারিকভাবে প্রমাণিত হতে পারে, তবে আমি মনে করি এটি দরকারী যে সমস্ত সত্য বিবৃতি প্রমাণ করতে অক্ষমতা "ত্রুটি" নয়। কম্পিউটারের ক্ষেত্রে, অনেকগুলি ক্ষেত্র নিয়মিতভাবে অ্যালগরিদম ব্যবহার করে যার একটি খুব ছোট, তবে শূন্য নয়, ব্যর্থতার সম্ভাবনা রয়েছে এবং তারপরে টিউন করুন যাতে সম্ভাবনা গ্রহণযোগ্যভাবে কম হয় (যেমন, উল্কাপিণ্ডের দ্বারা চিহ্নিত সরঞ্জামগুলির নীচে)। অনেক ক্ষেত্রে, বিভিন্ন ব্যর্থতা মোডগুলি স্বতন্ত্র নয়, তবে এটি মূলত অসম্ভব হতে পারে ...
সুপারক্যাট

... বিভিন্ন ব্যর্থতার সংমিশ্রণের সম্ভাবনাগুলি নির্ধারণ করতে। যদি কেউ নির্বিচারে এক মিনিটের সময়কালে ব্যর্থতার সম্ভাবনাটি 10 ​​^ -500 এ এক হতে পারে, তবে শত শত আদেশ দ্বারা এটি বন্ধ হয়ে যেতে পারে এবং এখনও একটি নির্ভরযোগ্য সিস্টেম থাকতে পারে, তবে যদি 494 আদেশের মাত্রার দ্বারা বন্ধ থাকে সিস্টেমটি প্রতি কয়েক বছর পর একবার ব্যর্থ হয়।
সুপারক্যাট

2
  1. কম্পিউটার প্রোগ্রামগুলি বাস্তব বিশ্বে পরীক্ষিত হয়। একটি দীর্ঘ গাণিতিক প্রমাণের মধ্যে একটি জটিল প্রযুক্তিগত ত্রুটি, যা কেবলমাত্র সীমিত সংখ্যক লোক বুঝতে পারে, তার অপরিবর্তিত থাকার খুব ভাল সম্ভাবনা রয়েছে। কোনও সফ্টওয়্যার প্রোডাক্টে একই ধরণের ত্রুটিটি সম্ভবত সাধারণ ব্যবহারকারীরা খেয়াল করে এমন এক বিচিত্র আচরণ তৈরি করতে পারে। সুতরাং অনুমানটি সঠিক নাও হতে পারে।

  2. কম্পিউটার প্রোগ্রামগুলি দরকারী রিয়েল ওয়ার্ল্ড ফাংশন সম্পাদন করে। এটি করার জন্য তাদের 100% সঠিক হতে হবে না এবং সঠিকতার উচ্চতর মানগুলি বেশ ব্যয়বহুল। প্রমাণগুলি কেবল তখনই কার্যকর যখন তারা কিছু প্রমাণ করে, তাই '100% সঠিক' অংশটি এড়ানো গণিতবিদদের পক্ষে বিকল্প নয়।

  3. গাণিতিক প্রমাণগুলি পরিষ্কারভাবে সংজ্ঞায়িত করা হয়। যদি কোনও প্রমাণ ত্রুটিযুক্ত থাকে তবে লেখক ভুল করেছেন। কম্পিউটার প্রোগ্রামগুলিতে অনেকগুলি বাগ ঘটে থাকে কারণ প্রয়োজনীয়তাগুলি যথাযথভাবে জানানো হয়নি বা প্রোগ্রামার কখনও শোেনি এমন কোনওটির সাথে সামঞ্জস্যতার সমস্যা রয়েছে।

  4. অনেক কম্পিউটার প্রোগ্রাম সঠিক প্রমাণিত হতে পারে না। তারা মুখগুলি স্বীকৃতি দেওয়ার মতো অনানুষ্ঠানিকভাবে সংজ্ঞায়িত সমস্যার সমাধান করতে পারে। অথবা এগুলি স্টক মার্কেটের পূর্বাভাস সফ্টওয়্যারগুলির মতো হতে পারে এবং একটি আনুষ্ঠানিকভাবে সংজ্ঞায়িত লক্ষ্য থাকতে পারে তবে অনেকগুলি আসল ওয়ার্ল্ড ভেরিয়েবল জড়িত।


2

একটি মানবিক ক্রিয়াকলাপ হিসাবে গণিতের একটি বড় অংশটি ডোমেন-নির্দিষ্ট ভাষাগুলির বিকাশ করছে যেখানে প্রমাণগুলির যাচাই করা মানুষের পক্ষে সহজ।

একটি প্রমাণের গুণমান তার দৈর্ঘ্য এবং জটিলতার সাথে বিপরীতভাবে আনুপাতিক। বিবেচনাধীন বিশেষ প্রমাণের মধ্যে ইন্টারেক্টিভ সহায়ক ধারণাগুলি সহ আমরা যে বিবৃতি দিচ্ছি সে সম্পর্কে পরিস্থিতি বর্ণনা করার জন্য ভাল স্বরলিপি তৈরির মাধ্যমে দৈর্ঘ্য এবং জটিলতা প্রায়শই হ্রাস পায়।

এটি কোনও সহজ প্রক্রিয়া নয় এবং গবেষণার অগ্রভাগ থেকে সরানো লোকদের দ্বারা প্রমাণিত বেশিরভাগ প্রমাণগুলি গাণিতিক ক্ষেত্রে (যেমন বীজগণিত এবং বিশ্লেষণের মতো) হয়ে থাকে যা কয়েক হাজার বছর না হলেও কয়েক হাজার বছর ধরে এই ক্ষেত্রটির স্বীকৃতি পেয়েছে এমন জায়গায় পরিমার্জন করা হয়েছে যেখানে প্রকৃতপক্ষে প্রমাণগুলি লেখার কাজটি বাতাসের মতো মনে হয়।

গবেষণার সর্বাগ্রে যদিও, বিশেষত আপনি যদি এমন সমস্যাগুলি নিয়ে কাজ করেন যা ক্ষেত্রগুলিতে সুপ্রতিষ্ঠিত বা সু-বিকাশযুক্ত স্বরলিপি নয় তবে আমি একটি সঠিক প্রমাণ লেখার সমস্যাটিও সঠিক প্রোগ্রাম লেখার অসুবিধার কাছে পৌঁছে যাব। এটি হ'ল কারণ আপনাকে একই সাথে কোনও প্রোগ্রামিং-ল্যাঙ্গুয়েজ ডিজাইনের এনালগ লিখতে হবে, আপনার নিউরাল নেটওয়ার্কটিকে এটি সঠিকভাবে সংকলন করতে প্রশিক্ষণ দিতে হবে, সেই প্রমানটি লেখার চেষ্টা করতে হবে, স্মৃতিশক্তি হারিয়েছে, ভাষাটিকে অনুকূলিত করার চেষ্টা করবে, ভাষা শিখতে আপনার মস্তিষ্ককে পুনরাবৃত্তি করুন, প্রমাণটি আবার লিখুন, ইত্যাদি

পুনরাবৃত্তি করার জন্য, আমি মনে করি যে সঠিক প্রমাণগুলি লেখাই গণিতের নির্দিষ্ট কিছু ক্ষেত্রে সঠিক প্রোগ্রাম লেখার অসুবিধাটির কাছে যেতে পারে, তবে এই অঞ্চলগুলি অল্প বয়সী এবং স্বল্প বিকাশযুক্ত কারণ গণিতে অগ্রগতির খুব ধারণা নিখুঁতভাবে প্রমাণের সহজতার সাথে আবদ্ধ হয় প্রতিপাদন.

আমি যে পয়েন্টটি তৈরি করতে চাইছি তার অন্য একটি পদ্ধতি হ'ল প্রোগ্রামিং ভাষা এবং গণিত উভয়ই ডিজাইন করা দিনের শেষে যাতে কম্পিউটার প্রোগ্রাম এবং প্রমাণগুলি যথাক্রমে সংকলন করা সম্ভব হয়। এটি ঠিক যে একটি কম্পিউটার প্রোগ্রাম সংকলন একটি কম্পিউটারে সম্পন্ন হয় এবং সিনট্যাকটিক যথার্থতা নিশ্চিত করে যা সাধারণত প্রোগ্রামের যথার্থতার সাথে খুব কমই কাজ করে, যখন "সংকলন" প্রমাণ একটি মানব দ্বারা করা হয় এবং সিনট্যাকটিক নির্ভুলতা নিশ্চিত করে যা একই জিনিস প্রমাণের সঠিকতা।


1

আপনি সৎভাবে এখানে আপেল এবং কমলা তুলনা করছেন। ফল্ট-প্রুফ এবং বাগ-মুক্ত একই জিনিস নয়।

একটি প্রোগ্রাম সংখ্যার তুলনা যদি 2এবং 3এবং এটি বলছে যে 2 is greater than 3, তাহলে এটি একটি বগী বাস্তবায়ন কারণে হতে পারে:

# Buggy implementation
function is_a_greater_than_b(a,b):
  return b > a

প্রোগ্রামটি এখনও ত্রুটি মুক্ত। যখন দুটি সংখ্যার তুলনা aএবং b, এটা সবসময় তোমাকে বলতে যদি সক্ষম হবে bচেয়ে বড় a। আপনি (প্রোগ্রামার) কম্পিউটারটিকে যা করতে বলেছিলেন তা ঠিক এটি নয়।


2
তখন কোন প্রোগ্রামে আপনার "দোষ" এর সংজ্ঞা কী?
user56834

0

ক) কারণ কম্পিউটার প্রোগ্রামগুলি গণিতের প্রমাণের চেয়ে বড়

ক .১) আমি বিশ্বাস করি যে জটিল কম্পিউটার প্রোগ্রাম লেখার সময় গণিতের প্রমাণ লেখার চেয়ে বেশি লোক ব্যবহৃত হয় used এর অর্থ ভুলের মার্জিন বেশি।

খ) কারণ সিইও / শেয়ারহোল্ডাররা ছোট বাগগুলি ঠিক করার চেয়ে অর্থের বিষয়ে বেশি যত্ন করে , ইতিমধ্যে আপনাকে (বিকাশকারী হিসাবে) কিছু প্রয়োজনীয়তা / সময়সীমা / ডেমো পূরণের জন্য আপনার কাজগুলি করতে হবে

গ) যেহেতু আপনি কম্পিউটার বিজ্ঞানে "গভীর" জ্ঞান ছাড়াই প্রোগ্রামার হতে পারবেন, এরই মধ্যে গণিতে করা কঠিন হবে (আমি বিশ্বাস করি)

উপরন্তু:

নাসা:

এই সফ্টওয়্যারটি বাগ-মুক্ত। এটি নিখুঁত, যতটা মানুষ অর্জন করেছে তত নিখুঁত। এই পরিসংখ্যানগুলি বিবেচনা করুন: প্রোগ্রামটির শেষ তিনটি সংস্করণ - প্রতিটি 420,000 লাইনের দীর্ঘ - প্রতিটিটিতে একটি মাত্র ত্রুটি ছিল। এই সফ্টওয়্যারটির সর্বশেষ 11 সংস্করণগুলিতে মোট 17 টি ত্রুটি ছিল।

গ্লোবাল পজিশনিং স্যাটেলাইটের সাথে চলাচল করতে শাটলটিকে অনুমতি দেওয়ার জন্য সফ্টওয়্যারটির আপগ্রেড নিন, যা প্রোগ্রামের মাত্র 1.5% বা কোডের 6,366 লাইনের সাথে জড়িত একটি পরিবর্তন। এই পরিবর্তনের জন্য নির্দিষ্টকরণগুলি 2,500 পৃষ্ঠাগুলি চালায় যা একটি ফোন বইয়ের চেয়ে ভলিউম ঘন। বর্তমান প্রোগ্রামের স্পেসিফিকেশনগুলি 30 টি ভলিউম পূরণ করে 40,000 পৃষ্ঠা চালায়।

https://www.fastcompany.com/28121/they-write-right-stuff


"কম্পিউটার প্রোগ্রামগুলি গণিতের প্রমাণের চেয়ে বড় হয়" এটি প্রোগ্রাম এবং প্রমাণের উপর নির্ভর করে। এবং এর অনেক কিছুই অনুমানযোগ্য বলে মনে হয়।
ডেভিড রিচার্বি

@ ডেভিডরিচার্বি ভাল লাস্ট ফার্মের উপপাদ্য এবং নাসার অ্যাপোলো github.com/chrislgarry/Apollo-11 math.wisc.edu/~boston/869.pdf- এর মতো জিনিসগুলি আমার মনে পড়েছিল - এবং আমরা এমনকি অপারেটিং সিস্টেমগুলি সম্পর্কে কথা বলি না।
Exeus

0

বেসিক স্তর:

আসুন বিষয়গুলিকে সহজতম এবং সবচেয়ে বেসিক স্তরে দেখি।

গণিতের জন্য, আমাদের কাছে রয়েছে:
2 + 3 = 5

আমি যখন খুব খুব ছোট ছিলাম সে সম্পর্কে শিখেছি। আমি সর্বাধিক প্রাথমিক উপাদানগুলি দেখতে পারি: দুটি বস্তু এবং তিনটি বস্তু। গ্রেট।

কম্পিউটার প্রোগ্রামিংয়ের জন্য, বেশিরভাগ লোকের উচ্চ স্তরের ভাষা ব্যবহার করার ঝোঁক। কিছু উচ্চ-স্তরের ভাষা এমনকি সি সি এর মতো নিম্ন স্তরের ভাষাগুলির একটিতে "সংকলন" করতে পারে Assembly অ্যাসেম্বলি ভাষা তখন মেশিন কোডে রূপান্তরিত হয়। অনেক লোক মনে করেন জটিলতা সেখানেই শেষ হয়ে যায়, তবে তা হয় না: আধুনিক সিপিইউগুলি মেশিন কোডকে নির্দেশ হিসাবে গ্রহণ করে, তবে প্রকৃতপক্ষে সেই নির্দেশাবলী কার্যকর করতে "মাইক্রো কোড" চালায়।

এর অর্থ হ'ল, সর্বাধিক প্রাথমিক স্তরে (কাঠামোর সহজতম ব্যবহারের সাথে), আমরা এখন মাইক্রো-কোড নিয়ে কাজ করছি, যা হার্ডওয়্যারটিতে এম্বেড থাকে এবং যা বেশিরভাগ প্রোগ্রামার সরাসরি ব্যবহার করেন না, আপডেটও করেন না। প্রকৃতপক্ষে, কেবলমাত্র বেশিরভাগ প্রোগ্রামারই মাইক্রো কোড স্পর্শ করে না (মাইক্রো কোডের চেয়ে 0 স্তর উচ্চতর), বেশিরভাগ প্রোগ্রামার মেশিন কোড স্পর্শ করে না (মাইক্রো কোডের তুলনায় 1 স্তর বেশি), এমনকি সমাবেশও নয় (মাইক্রো কোডের চেয়ে 2 স্তর বেশি) ( কলেজের সময় কিছুটা প্রথাগত প্রশিক্ষণের জন্য বাদে)। বেশিরভাগ প্রোগ্রামার মাত্র 3 বা তার বেশি স্তর উচ্চতর সময় ব্যয় করবে।

তদ্ব্যতীত, আমরা যদি অ্যাসেমব্লির দিকে লক্ষ্য করি (যা লোকেরা সাধারণত পায় তত নিম্ন স্তরের), প্রতিটি স্বতন্ত্র পদক্ষেপটি এমন ব্যক্তিদের দ্বারা সাধারণত বোঝা যায় যাঁরা প্রশিক্ষিত হয়েছেন এবং সেই পদক্ষেপটির ব্যাখ্যা করার মতো সংস্থান আছে। এই অর্থে, সমাবেশ উচ্চতর স্তরের ভাষার চেয়ে অনেক সহজ। তবে, সমাবেশটি এত সহজ যে জটিল কাজ সম্পাদন করা বা এমনকি সাধারণ কাজগুলি করা খুব ক্লান্তিকর। উচ্চ স্তরের ভাষা আমাদের সে থেকে মুক্ত করে।

"রিভার্স ইঞ্জিনিয়ারিং" সম্পর্কিত একটি আইনে একজন বিচারক ঘোষণা করেছিলেন যে কোডটি যদি তাত্ত্বিকভাবে একবারে একটি বাইট পরিচালনা করা যায় তবে আধুনিক প্রোগ্রামগুলি কয়েক মিলিয়ন বাইট জড়িত, তাই কিছু ধরণের রেকর্ড (যেমন কোডের অনুলিপি) কেবল তাদের জন্য তৈরি করতে হবে সম্ভাব্য হওয়ার চেষ্টা (সুতরাং অভ্যন্তরীণ বিকাশকে কপিরাইট আইনের সাধারণীকরণের "কপি না করার" নিয়মের লঙ্ঘন হিসাবে বিবেচনা করা হত না।) (আমি সম্ভবত অননুমোদিত সেগা জেনেসিস কার্তুজ তৈরি করার কথা ভাবছি, তবে গেম জিনির মামলার সময় কিছু বলা হয়েছে বলে মনে হতে পারে)। )

আধুনিকিকরণ:

আপনি কি 286s এর জন্য কোড বোঝাচ্ছেন? অথবা আপনি 64-বিট কোড চালাচ্ছেন?

গণিতে মৌলিক উপাদানগুলি ব্যবহার করা হয় যা সহস্রাব্দের পরে ফিরে আসে। কম্পিউটারের সাহায্যে লোকেরা সাধারণত দুই দশক পুরানো কোনও কিছুর জন্য বিনিয়োগকে অযথা সম্পদ অপ্রয়োজনীয় বলে মনে করেন। তার মানে গণিত অনেক বেশি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা যেতে পারে।

ব্যবহৃত সরঞ্জামগুলির মান:

আমাকে শিখানো হয়েছিল (আমার চেয়ে আরও বেশি আনুষ্ঠানিক কম্পিউটার প্রোগ্রামিং প্রশিক্ষণের এক বন্ধু দ্বারা) যে সি-স্পেসিফিকেশনগুলি পূরণ করে কোনও বাগ-মুক্ত সি সংকলক বলে কোনও জিনিস নেই। এটি কারণ সি ভাষা মূলত একটি স্ট্যাকের উদ্দেশ্যে অসীম স্মৃতি ব্যবহার করার সম্ভাবনাটি ধরে নিয়েছে। স্পষ্টতই, এই ধরনের একটি অসম্ভব প্রয়োজনীয়তা যখন প্রকৃতপক্ষে কিছুটা সসীম প্রকৃত মেশিনগুলির সাথে কাজ করে এমন ব্যবহারযোগ্য সংকলক তৈরির চেষ্টা করেছিল যেগুলি এড়িয়ে যেতে হয়েছিল।

অনুশীলনে, আমি খুঁজে পেয়েছি যে উইন্ডোজ স্ক্রিপ্ট হোস্টে জেএসক্রিপ্টের সাহায্যে আমি অবজেক্টগুলি ব্যবহার করে অনেক ভাল করতে সক্ষম হয়েছি। (আমি পরিবেশটি পছন্দ করি কারণ নতুন কোডটি চেষ্টা করার জন্য প্রয়োজনীয় টুলসটি মাইক্রোসফ্ট উইন্ডোজের আধুনিক সংস্করণে অন্তর্নির্মিত ছিল)) এই পরিবেশটি ব্যবহার করার সময়, আমি খুঁজে পেয়েছি যে কখনও কখনও কীভাবে অবজেক্টটি কাজ করে সে সম্পর্কে সহজে সন্ধানযোগ্য কোনও দলিল নেই। যাইহোক, অবজেক্টটি ব্যবহার করা এত উপকারী, আমি যাইহোক এটি করি। সুতরাং আমি যা করব তা হল কোড লেখা, যা শিংয়ের বাসা হিসাবে বগী হতে পারে এবং একটি সুন্দর স্যান্ডবক্সযুক্ত পরিবেশে এটি করতে পারি যেখানে আমি এর প্রভাবগুলি দেখতে পারি এবং এর সাথে ইন্টারঅ্যাক্ট করার সময় অবজেক্টের আচরণগুলি সম্পর্কে জানতে পারি।

অন্যান্য ক্ষেত্রে, কখনও কখনও কেবল যখন কোনও জিনিসটি কীভাবে আচরণ করে তা অনুধাবন করার পরে, আমি দেখতে পেলাম যে বস্তুটি (অপারেটিং সিস্টেমের সাথে বান্ডিল করা) বগী, এবং এটি একটি জ্ঞাত সমস্যা যা মাইক্রোসফ্ট ইচ্ছাকৃতভাবে সিদ্ধান্ত নিয়েছে তা স্থির করা হবে না will ।

এই জাতীয় পরিস্থিতিতে, আমি কি ওপেনবিএসডি-র উপর নির্ভর করি, মাস্টারফুল প্রোগ্রামারদের দ্বারা তৈরি, যা নিয়মিতভাবে (বছরে দু'বার) নতুন রিলিজ তৈরি করে, 10+ বছরে "মাত্র দুটি রিমোট হোল" এর বিখ্যাত সুরক্ষা রেকর্ড সহ? (এমনকি তাদের কম গুরুতর সমস্যার জন্য ত্রুটিযুক্ত প্যাচ রয়েছে)) না, কোনওভাবেই না। আমি এ জাতীয় উন্নত মানের পণ্যটির উপর নির্ভর করি না, কারণ আমি এমন একটি ব্যবসায়ের পক্ষে কাজ করছি যা মাইক্রোসফ্ট উইন্ডোজ ব্যবহার করে এমন মেশিন সরবরাহকারী লোকদের সহায়তা করে এমন ব্যবসায়ের জন্য, যাতে আমার কোডটিতে কাজ করা দরকার।

ব্যবহারিকতা / ব্যবহারযোগ্যতার জন্য আমি প্ল্যাটফর্মগুলিতে লোকদের দরকারী বলে কাজ করা প্রয়োজন এবং এটি এমন একটি প্ল্যাটফর্ম যা সুরক্ষার জন্য বিখ্যাত খারাপ (যদিও সহস্রাব্দের প্রথম দিন থেকেই একই কোম্পানির পণ্যগুলি আরও খারাপ ছিল) ।

সারাংশ

কম্পিউটার প্রোগ্রামিং আরও ত্রুটিযুক্ত হওয়ার কারণ রয়েছে এবং এটি কম্পিউটার ব্যবহারকারীদের সম্প্রদায় গ্রহণ করে numerous প্রকৃতপক্ষে, বেশিরভাগ কোডটি পরিবেশে লিখিত যা ত্রুটি-মুক্ত প্রচেষ্টা সহ্য করবে না। (কিছু ব্যতিক্রম যেমন সুরক্ষা প্রোটোকল বিকাশ করা এ ক্ষেত্রে কিছুটা বেশি প্রচেষ্টা পেতে পারে)) ব্যবসায়ের আরও বেশি অর্থ বিনিয়োগ করতে না চাওয়ার কারণগুলি এবং গ্রাহকদের খুশি করতে কৃত্রিম সময়সীমা মিস করার সাধারণ কারণ ছাড়াও এর প্রভাব রয়েছে প্রযুক্তির পদযাত্রায় বলা হয়েছে যে আপনি যদি খুব বেশি সময় ব্যয় করেন তবে আপনি একটি অচল প্ল্যাটফর্মে কাজ করবেন কারণ এক দশকের মধ্যে জিনিসগুলি উল্লেখযোগ্যভাবে পরিবর্তিত হয়।

অফহ্যান্ড, আমি খুব খুব দরকারী এবং জনপ্রিয় ফাংশনগুলি কত সংক্ষিপ্ত ছিল তা অবাক করে দিয়ে স্মরণ করতে পারি, যখন আমি স্ট্রেন এবং আরআরসিপি-র জন্য কিছু উত্স কোড দেখেছি। উদাহরণস্বরূপ, স্ট্র্লেন "ইন্ট স্ট্রেন (চর * এক্স) {চর y = x; যখন ( (y ++)); রিটার্ন (yx) -1;}" এর মতো কিছু হতে পারে

তবে সাধারণ কম্পিউটার প্রোগ্রামগুলি এর চেয়ে দীর্ঘতর length এছাড়াও, প্রচুর আধুনিক প্রোগ্রামিং অন্যান্য কোডগুলি ব্যবহার করবে যা কম পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা হতে পারে, বা এমনকি বাগি হিসাবে পরিচিত। "নিম্ন স্তরের দ্বারা পরিচালিত বিবরণ" হিসাবে অনেকগুলি মিনটিয়া হাতছাড়া করে বাদ দিয়ে আজকের সিস্টেমগুলি সহজেই যা ভাবা যায় তার চেয়ে অনেক বেশি বিস্তৃত।

এই বাধ্যতামূলক জটিলতা এবং জটিল এবং এমনকি ভুল সিস্টেমের সাথে কাজ করার নিশ্চয়তা কম্পিউটার প্রোগ্রামিংকে অনেক গণিতের তুলনায় অনেক বেশি হার্ডওয়্যার করে তোলে যেখানে জিনিসগুলি খুব সহজ স্তরে নেমে আসে।

আপনি যখন গণিতে জিনিসগুলি ভেঙে দেন, তখন শিশুরা বুঝতে পারে এমন পৃথক টুকরা আপনি পেয়ে যান। বেশিরভাগ লোক গণিতে বিশ্বাস রাখে; কমপক্ষে প্রাথমিক গাণিতিক (বা, কমপক্ষে, গণনা)

আপনি যখন হুডের নীচে কী ঘটছে তা দেখতে কম্পিউটার প্রোগ্রামিংটি ভেঙে ফেলেন, আপনি শেষ পর্যন্ত বৈদ্যুতিনভাবে কার্যকর করা ভাঙা মান এবং কোডের ভাঙ্গা বাস্তবায়ন শেষ করেন এবং শারীরিক বাস্তবায়ন মাইক্রোকোডের ঠিক এক ধাপ পরে যা বেশিরভাগ বিশ্ববিদ্যালয় প্রশিক্ষিত কম্পিউটার বিজ্ঞানীরা ডন করেন না don স্পর্শ করার সাহস করবেন না (যদি তারা এটি সম্পর্কে সচেতনও থাকে)।

আমি এমন কিছু প্রোগ্রামারদের সাথে কথা বলেছি যারা কলেজে বা সাম্প্রতিক স্নাতকদের যারা বাগ-ফ্রি কোড লিখতে পারে এই ধারণার প্রতি সম্পূর্ণ আপত্তি জানায়। তারা সম্ভাবনাটি লিখে ফেলেছে, এবং যদিও তারা স্বীকৃতি দিয়েছে যে কয়েকটি চিত্তাকর্ষক উদাহরণ (যা আমি দেখাতে সক্ষম হয়েছি) কিছু দৃing় বিশ্বাসযোগ্য যুক্তি, তারা এ জাতীয় নমুনাগুলিকে আপত্তিজনক বিরল তাত্পর্য বলে বিবেচনা করে এবং এখনও গণনা করতে সক্ষম হওয়ার সম্ভাবনাটি বাতিল করে দেয় যেমন উচ্চতর মান আছে উপর। (আমরা গণিতে আরও নির্ভরযোগ্য ভিত্তির চেয়ে অনেক অনেক বেশি মনোভাব))


1
আপনি প্রোগ্রামিংয়ের জটিলতার জন্য দুর্দান্ত কেস তৈরি করার সময়, আপনি সবে গণিত বিবেচনা করেন না! প্রকৃতপক্ষে, আপনি আনুষ্ঠানিক গণিতে জড়িত জটিলতাটিকে অবমূল্যায়ন বলে মনে করছেন: "আপনি যখন গণিতে জিনিসগুলি ভেঙে ফেলেন, তখন শিশুরা বুঝতে পারে এমন আলাদা আলাদা টুকরো পেয়ে যাবে", সত্যই ? এছাড়াও পর্যাপ্ত 'উচ্চ-স্তরের' প্রোগ্রামিং সম্পর্কে একই কথা বলা যেতে পারে (যেমন স্ক্র্যাচ বাচ্চাদের জন্য ডিজাইন করা হয়েছে)। আরও মনে রাখবেন যে যদিও পূর্ণ সি-স্পেক বাস্তবায়নযোগ্য নয়, একটি গুরুত্বপূর্ণ সাবসেটকে সমর্থনকারী একটি সংকলক কম্পিউটার-সহায়তার প্রমাণ ব্যবহার করে আনুষ্ঠানিকভাবে সঠিক দেখানো হয়েছে।
বিচ্ছিন্ন টিকটিকি

একমত। গবেষণা-স্তরের প্রমাণে, আপনি অবশ্যই স্তরে কিছু দেখতে পাবেন না2+ +3=5। পরিবর্তে, আপনি "এক্স দ্বারা সহজেই প্রমাণিত হতে পারে" এর মতো বিবৃতি পাবেন যেখানে এক্স আপনাকে আয়ত্ত করতে দুই বছর সময় নিয়েছে; বা "উপপাদ্য ওয়াইয়ের একটি সরাসরি-ফরোয়ার্ড অ্যাপ্লিকেশন", যেখানে Y প্রমাণ করতে কয়েক দশক এবং কয়েক ডজন লোক নিয়েছিল। অবশ্যই, আপনি প্রতিটি গবেষণামূলক কাগজকে "সংকলন" করতে পারেন একাদশ, আনুষ্ঠানিক গণিত / যুক্তি - অগণিত বাগ খুঁজে পাওয়া, আমি নিশ্চিত - তবে কেউ এটি করতে বিরত হয় না । (এবং না সবাই সম্মত হয় যে এটা ভালো এবং ভাল তাই কয়েক জনের। না গণিত ডিক্রী চেষ্টা করুন।)
রাফায়েল

মেটা নোট: আপনি যদি কোনও জিনিসে বিশেষজ্ঞ হন এবং অন্য কোনও ক্ষেত্রে বিশেষজ্ঞ শিক্ষানবিশ (বা নিম্ন) হন তবে আপনি দুটিটির তুলনায় সবচেয়ে খারাপ অবস্থানে রয়েছেন।
রাফেল

পৃথক টিকটিকি - এটি কম্পিউটার বিজ্ঞান এসই। তদ্ব্যতীত, পোস্ট করার আগে অন্যান্য উত্তরগুলি আসলে পড়েছিলাম বলে আমার মনে হয়েছিল যে তারা কম্পিউটারের চেয়ে গণিতে অনেক বেশি স্পর্শ করেছে। আমি অনুভব করেছি যে আমার উত্তরটি আরও দীর্ঘায়িত না করে কেবলমাত্র এমন শব্দ যুক্ত করা যা অন্য কোথাও যা লেখা ছিল তাতে মূলত অনর্থক হতে পারে। /// স্ক্র্যাচ হিসাবে, উচ্চ স্তর আরও জটিল, সহজ নয় (সমস্ত চলমান অংশগুলি সম্পূর্ণরূপে বোঝার দৃষ্টিকোণের দিকে তাকালে)। এই দৃষ্টিকোণ দ্বারা, আমি যেখান থেকে লিখছিলাম, অন্যান্য স্তরগুলির উপরে স্ক্র্যাচের তুলনায়
সমাবেশটি

0

গাণিতিক প্রমাণগুলি "কী" জ্ঞান এবং প্রোগ্রামগুলিকে "জ্ঞান" কীভাবে বর্ণনা করে তা বর্ণনা করে।

প্রোগ্রামগুলি লেখার বিষয়টি আরও জটিল কারণ প্রোগ্রামারকে উত্থাপিত হতে পারে এমন সমস্ত রাজ্য এবং প্রোগ্রামটির আচরণের ফলস্বরূপ কীভাবে পরিবর্তিত হয় সে সম্পর্কে তর্ক করতে হবে। প্রুফগুলি অন্যান্য সংজ্ঞা সম্পর্কে জিনিস প্রমাণ করতে সূত্র বা শ্রেণিবদ্ধ যুক্তি ব্যবহার করে।

বেশিরভাগ বাগ প্রসেসার প্রত্যাশা করে না এমন প্রক্রিয়ায় প্রবেশের ফলে ঘটে। একটি প্রোগ্রামে আপনার সাধারণত হাজার হাজার থাকে বা একটি বৃহত সিস্টেমে, লক্ষ লক্ষ সম্ভাব্য ভেরিয়েবল যা স্থির ডেটা নয়, তবে প্রোগ্রামটি কার্যকর করার উপায়ে রূপান্তর করে। এই সমস্ত ইন্টারেক্টিভ এমন আচরণ তৈরি করে যা প্রত্যাশা করা অসম্ভব, বিশেষত এমন একটি আধুনিক কম্পিউটারে যেখানে নীচে বিমূর্ততার স্তরগুলি পরিবর্তিত হয়।

একটি প্রমাণ হিসাবে, কোন পরিবর্তন রাষ্ট্র। সংজ্ঞা এবং আলোচনার বিষয়গুলি স্থির করা হয়। প্রমাণ করার জন্য সাধারণত সমস্যাটি সম্পর্কে চিন্তাভাবনা করা এবং প্রচুর মামলা বিবেচনা করা প্রয়োজন না, তবে এই মামলাগুলি সংজ্ঞা অনুসারে স্থির হয়।


2
আমি বলব যে গাণিতিক প্রমাণগুলি 'কি' জ্ঞান বর্ণনা করতে সম্পূর্ণরূপে সক্ষম: উদাহরণস্বরূপ এমন কোনও প্রমাণ গ্রহণ করুন যা অস্তিত্ব প্রমাণের জন্য উদাহরণ তৈরি করে বা কোনও মান গণনা করার পদ্ধতি তৈরি করে। তবুও, আমি সম্মত হই যে রাষ্ট্র প্রমাণ হিসাবে কিছু অনুপস্থিত, এই অর্থে যে লেখক (বা পাঠক!) দ্বারা স্পষ্টভাবে বর্ণিত রাষ্ট্র ছাড়া অন্য কোনও রাষ্ট্র নেই। স্পষ্টতই এই রাষ্ট্রটি যা কোনও প্রোগ্রামকে এমন কিছু করার সুযোগ দেয় যা পাঠক / লেখক অসচেতন, যখন প্রমাণ হিসাবে এটি অসম্ভব। (অবশ্যই, প্রমাণগুলিতে অনিচ্ছাকৃত বৈশিষ্ট্য বা ফলাফল থাকতে পারে তবে সেগুলি পেতে এখনও কিছু সক্রিয় চিন্তাভাবনা রয়েছে)
বিচ্ছিন্ন টিকটিকি

@ ডিসক্রিটেলাইজার্ড এটি একটি সহায়ক মন্তব্য। আমি মনে করি "কী" এবং "কীভাবে" এর মধ্যে লাইনটি অবশ্যই অস্পষ্ট। একটি অ্যালগরিদম প্রমাণ করে যা আপনার মনে হয় তা করে, সত্যিই আমার মনে "কীভাবে" বর্ণনা করা হয় না, এটি কেবল কিছু সম্পত্তি রাখার গ্যারান্টি দেয়। দার্শনিক দৃষ্টিভঙ্গি থেকে, আমি মনে করি "কীভাবে" জ্ঞানের সাথে বিশ্বের সাথে যোগাযোগের প্রয়োজন। প্রোগ্রামগুলি সর্বদা আপনি যা বলবেন তাই করেন। আপনি যখন যা ত্রুটি করেছিলেন তখন আপনি যা করতে বলেছিলেন তা বিশ্বের সাথে মিল রাখে না (আপনি কী মডেলিং করছেন)। ম্যাথ, কোনও প্রয়োগের চেয়ে আলাদা (পদার্থবিজ্ঞানের সমস্যার মতো) সমস্ত সংহতির উপর নির্ভরশীল বলে মনে হয়।
জাস্টিন মাইনার্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.