গিডো ভন রসম
গুইডো ভ্যান রসমের সাথে একটি সাক্ষাত্কার থেকে , যা পুস্তকগুলিতে ডটকমের ডটকমের সাথে পুরো টেক্সটে দেখা যাবে (জোর আমার):
দলবদ্ধকরণের জন্য ইন্ডেন্টেশন নির্বাচন পাইথনের কোনও অভিনব ধারণা ছিল না; আমি এবিসি থেকে এটি উত্তরাধিকার সূত্রে পেয়েছি , তবে এটি ঘটনাক্রমে, একটি প্রাচীন ভাষাও ঘটেছে। আমি জানি না যে এবিসি লেখকরা ঘটনাটি থেকেই ধারণাটি পেয়েছিল, বা এটি স্বাধীনভাবে আবিষ্কার করেছিল, বা যদি কোনও সাধারণ পূর্বপুরুষ ছিল। অবশ্যই, আমি অন্যান্য অঞ্চলে যেমন এবিসির নেতৃত্ব অনুসরণ না করাই পছন্দ করতে পারি (যেমন, এবিসি ভাষার কীওয়ার্ড এবং পদ্ধতির নামগুলির জন্য বড় হাতের অক্ষর ব্যবহার করেছে, এমন একটি ধারণা যা আমি অনুলিপি করি নি) তবে আমি বৈশিষ্ট্যটি বেশ পছন্দ করতে এসেছি ABC ব্যবহার করার সময় কিছুটা সময় মনে হয়েছিল যে, তখনকার সি ব্যবহারকারীদের মধ্যে কোঁকড়ানো ধনুর্বন্ধনীটি কোথায় রাখবেন সে সম্পর্কে একটি নির্দিষ্ট ধরণের অর্থহীন বিতর্ক সরিয়ে দেওয়া উচিত ।
ভন রসম এবিসি থেকে ভারী অনুপ্রাণিত হয়েছিল এবং তার সবকটি অনুলিপি করতে না হলেও, ইনডেন্টেশন ব্যবহার রাখা হয়েছিল কারণ এটি ধর্মীয় যুদ্ধ এড়াতে উপকারী হতে পারে।
আমি এও ভালভাবে অবগত ছিলাম যে পাঠ্যযোগ্য কোডগুলি গোষ্ঠীকরণ নির্দেশ করতে স্বতঃস্ফূর্তভাবে ইন্ডেন্টেশন ব্যবহার করে, এবং আমি কোডটিতে সূক্ষ্ম বাগগুলি পেয়েছিলাম যেখানে ইন্ডেন্টেশনটি কোঁকড়ানো ধনুর্বন্ধনী ব্যবহার করে সিনট্যাক্টিক গ্রুপিংয়ের সাথে দ্বিমত পোষণ করেছিল program প্রোগ্রামার এবং কোনও পর্যালোচক ধারণা করেছিলেন যে ইনডেন্টেশনটি গ্রুপিংয়ের সাথে মিলেছে এবং এর ফলে বাগটি লক্ষ্য করা যায় নি। আবার, একটি দীর্ঘ ডিবাগিং সেশন একটি মূল্যবান পাঠ শিখিয়েছিল।
গ্রুপিং এবং ইনডেন্টের মধ্যে অসামঞ্জস্যতার কারণে রসম বাগগুলিও প্রত্যক্ষ করেছিলেন এবং দৃশ্যত যদিও কেবল কোডটি গঠনের জন্য ইনডেন্টেশনের উপর নির্ভর করা প্রোগ্রামিং ত্রুটি ১ থেকে নিরাপদ হবে ।
ডোনাল্ড ই নুথ এবং পিটার জে ল্যান্ডিন
রেফারেন্সড সাক্ষাত্কারে গুইডো ডেন নাথের ইনডেন্টেশন ব্যবহারের ধারণার উল্লেখ করেছেন। এটি নথ ইন্ডেন্টেশন উদ্ধৃতি পুনরায় আবিষ্কার , যা গেটো স্টেটমেন্ট সহ স্ট্রাকচার্ড প্রোগ্রামিংয়ের উদ্ধৃতি দিয়ে বিশদে রয়েছে । নথ পিটার জন ল্যান্ডিনের পরবর্তী 700 প্রোগ্রামিং ভাষাগুলিরও উল্লেখ করেছেন (ইনডেন্টেশন সম্পর্কিত আলোচনার বিভাগটি দেখুন)। Landin পরিকল্পিত ISWIM যা পরিবর্তে খাঁজ শুরু / শেষ ব্লক সঙ্গে প্রথম ভাষা মত দেখায়। সেসব কাগজপত্রগুলি স্ট্রাকচারিং প্রোগ্রামগুলির জন্য ইন্ডেন্টেশন ব্যবহারের সম্ভাব্যতা সম্পর্কে আরও বেশি যা প্রকৃত পক্ষে যুক্তি দেওয়ার পক্ষে রয়েছে।
১. আমি মনে করি যে এটি প্রোগ্রামিং ত্রুটিগুলি ধরা এবং পুনরুদ্ধার করার জন্য গ্রুপিং কনস্ট্রাক্টস এবং অটো-ফর্ম্যাটিং উভয়ের পক্ষে থাকার পক্ষে একটি যুক্তি । যদি আপনি পাইথনে আপনার ইন্ডেন্টেশনটি স্ক্রু করেন তবে যে ব্যক্তি আপনার কোডটি ডিবাগ করবে তাকে অনুমান করতে হবে কোনটি সঠিক:
if (test(x)):
foo(x)
bar(x)
দেব barসবসময় বলা যেতে বা শুধুমাত্র পরীক্ষা সফল তাহলে কি হবে?
দলবদ্ধকরণ কনস্ট্রাক্টসগুলি রিডানডেন্সিটির একটি স্তর যুক্ত করে যা আপনি যখন নিজের কোডটি স্বয়ংক্রিয়ভাবে যুক্ত করেন তখন কোনও ভুলকে চিহ্নিত করতে আপনাকে সহায়তা করে। সি তে, সমমানের কোডটি নীচে স্বয়ংক্রিয়ভাবে যুক্ত হতে পারে:
if (test(x))
foo(x);
bar(x);
যদি আমি অভিপ্রেত জন্য barহিসাবে একই পর্যায়ে হতে foo, তারপর কোড কাঠামো স্বয়ংক্রিয় ইন্ডেন্ট করেও ভিত্তিক আমাকে দেখতে কিছু ভুল প্রায় ধনুর্বন্ধনী যোগ করে সংশোধন করা যেতে পারে যে নেই দিন fooএবং bar।
ইন পাইথন: মিথস আঁকাবাঁকা রেখা সম্পর্কে , সেখানে C থেকে একটি কল্পনানুসারে খারাপ উদাহরণ রয়েছে:
/* Warning: bogus C code! */
if (some condition)
if (another condition)
do_something(fancy);
else
this_sucks(badluck);
উপরের মত একই ঘটনাটি, ইমাক্সে, আমি পুরো ব্লক / ফাংশনটি হাইলাইট করি, ট্যাব টিপুন এবং তারপরে সমস্ত কোডটি পুনরায় পাঠানো হয়। মানব ইন্ডেন্টেশন এবং কোড কাঠামোর মধ্যে পার্থক্য আমাকে বলে কিছু বন্ধ রয়েছে (এটি এবং পূর্ববর্তী মন্তব্য!)।
এছাড়াও, মধ্যবর্তী কোড যেখানে সিটিতে ইন্ডেন্টেশন বন্ধ রয়েছে কেবল মাস্টার শাখার মাধ্যমে এটি তৈরি করে না, সমস্ত স্টাইলের চেকগুলি জায়গাটিতে থাকা জিসিসি / জেনকিন্স আমাকে চিৎকার করবে। পাইথনের উপরে বর্ণিত একটির মতোই আমার সম্প্রতি একটি সমস্যা হয়েছিল, যার এক পর্যায়ে ইন্ডেন্টেশন বন্ধ রয়েছে statement কখনও কখনও আমার সিতে কোড থাকে যা একটি বন্ধনী বন্ধনী ছাড়িয়ে যায়, কিন্তু তারপরে আমি ট্যাব এবং কোড ইনডেন্টগুলিকে "ভুলভাবে" আঘাত করি: এটি বাগটি দেখার আরও একটি সুযোগ।
let x =1; y = 2; z = 3সম্পূর্ণ বৈধ, যেমন হয়do { putStrLn $ show x; putStrLn $ show y; putStrLn $ show z; }। তাদের একই লাইনে থাকার দরকার নেই।