কেন আমাদের বেশিরভাগ লোক লুপের পাল্টা ভেরিয়েবল হিসাবে 'আই' ব্যবহার করেন?


126

আমাদের মধ্যে কেন অনেকে একই ভেরিয়েবল নাম ব্যবহার করে একই প্যাটার্নটি পুনরাবৃত্তি করে সে সম্পর্কে কেউ ভেবে দেখেছেন?

for (int i = 0; i < foo; i++) {
    // ...
}

এটা কোড আমি কখনো ব্যবহারসমূহ দিকে তাকিয়ে করেছি বলে মনে হয় i, j, kইত্যাদি পুনরাবৃত্তির ভেরিয়েবল হিসেবে।

আমি মনে করি আমি এটি কোথাও থেকে তুলে নিয়েছি তবে আমি অবাক হয়েছি কেন এটি সফ্টওয়্যার বিকাশে এত বেশি প্রচলিত। এটি কি আমরা সবাই সি থেকে বাছাই করে এমন কিছু?

আমার মাথার পিছনে কিছুক্ষণের জন্য আমার চুলকানি হয়েছে।


4
ইতিমধ্যে খুব দীর্ঘ সময় আগে SO এ জিজ্ঞাসা করা হয়েছে; : সম্ভবত ঐ এখানে স্থানান্তরিত করা উচিত stackoverflow.com/questions/454303/... এবং stackoverflow.com/questions/4137785/...
ড্যানি Pflughoeft - BlueRaja

8
এটি একটি সদৃশ প্রশ্ন এবং আমি এই উত্তরটি পছন্দ করি। নাম ইজক স্ট্রের কারণে।
ভিভার্ট

2
আমি সর্বদা ভাবতাম যে আমি, জে এবং কে ডি ইজ্ক স্ট্র থেকে নেওয়া হয়েছিল
খ্রিস্টান কেজির

1
বিটিডাব্লু: আমি সর্বদা ii(এবং jj, kk...) ব্যবহার করি যাতে অনুসন্ধানের সময় সনাক্ত করা সহজ হয়।
সাবুনকু

1
আপনি আর কি ব্যবহার করবেন?
থরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


205

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

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

বেশিরভাগ লোকেরা এটি পরিবর্তন করার খুব কম কারণ দেখেছে বলে মনে হয়। এটি ব্যাপকভাবে পরিচিত এবং বোঝা, এবং বেশ সংক্ষিপ্ত। প্রতি একবারে আপনি কিছু মনস্তাত্ত্বিক দ্বারা লিখিত কিছু দেখতে পান যিনি মনে করেন যে এর মতো কোনও কিছুর আসল সুবিধা রয়েছে:

for (int outer_index_variable=0; outer_index_variable < 10; outer_index_variable++)
    for (int inner_index_variable=0; inner_index_variable < 10; inner_index_variable++)
        x[outer_index_variable][inner_index_variable] = 0;

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


13
+1 আমি এখানে গণিতের সম্পর্ক সম্পর্কে চিন্তা করি নি। এটি একটি আকর্ষণীয় উপলব্ধি ছিল।
কেসি প্যাটন

79
কিছু কিছু স্টাইল হিসাবে কী কল্পনা করে তা সাইকোসিসের জন্য দায়ী করার জন্য +1।
ক্র্যাশ ওয়ার্কস

2
ঠিক আছে - সুতরাং আমি এবং জে গণিতের সাবস্ক্রিপ্ট হিসাবে কেন ব্যবহৃত হয়? আমার মনে হয় এই ব্যবহারটি
ফরটারনের পূর্বে রয়েছে

34
@ গুয়াই 'আমি' সূচকের জন্য, জ এর পরের চিঠিটি হ'ল
মার্টিন বেকেট

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

64

i - সূচক, সূচিপত্র.

একটি অস্থায়ী পরিবর্তনশীল যা লুপ পুনরাবৃত্তির সূচীকরণের জন্য ব্যবহৃত হয়। আপনার কি ইতিমধ্যে একটি থাকে তাহলে i, কি করতে যাচ্ছি চেয়ে বেশি স্বাভাবিক j, k, এবং তাই ঘোষণা?

সেই প্রসঙ্গে idxপ্রায়শই ব্যবহৃত হয়।

ভেরিয়েবলের নামটি কীভাবে হওয়া উচিত তা সংক্ষিপ্ত, সরল এবং ভেরিয়েবলের ব্যবহার ঠিক কী তা দেখায়।


35
ijk = "আমি মজা করছি" :-)
মাহমুদ হোসাম

2
আপনি একটি উল্লেখ উল্লেখ করতে পারেন?
লুই রাইস

23
আপনি চাইলে আমাকে রেফারেন্স হিসাবে উদ্ধৃত করতে পারেন।
ক্যাপ্টেন সেনসিবল

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

3
আপনার চিন্তার ট্রেনটিতে iপুনরাবৃত্তির অর্থও হতে পারে।
টটিমেডলি

39

FORTRAN iএ প্রথম অক্ষরটি পূর্ণসংখ্যার ধরণে ডিফল্ট হয়। অন্তর্নিহিত পূর্ণসংখ্যা ধরনের সম্পূর্ণ পরিসর কোন অক্ষর দিয়ে শুরু হওয়া ছিল iথেকে n। তিন মাত্রার জন্য লুপ নিয়ে কাজ করা আমাদের পেয়েছিলাম i, jএবং k। প্যাটার্নটি অতিরিক্ত মাত্রার জন্য অব্যাহত ছিল। তেমনিভাবে 'x', 'y' এবং 'z' যা ভাসমান পয়েন্ট হিসাবে ডিফল্ট হয়েছিল যেখানে লুপ ভেরিয়েবলের জন্য ব্যবহার করা হয় যেখানে আসল সংখ্যার প্রয়োজন হয়।

litleadvনোট হিসাবে , iএছাড়াও সূচক জন্য একটি সংক্ষিপ্ত সংকোচনের।

এই ভেরিয়েবলগুলির স্থানীয় ব্যবহারের কারণে, আমি আরও বর্ণনামূলক নাম ব্যবহার না করে কোনও সমস্যা দেখছি না।


একক লুপের জন্য আমি সম্মত, তবে লুপযুক্ত লুপগুলির জন্য আমি কিছুটা আরও বিবরণ চাই।
এডওয়ার্ড স্ট্রেঞ্জ

1
শেষ পর্যন্ত উত্তর জড়তা । আমি ১৯ 197৩ সালে ওয়াটফোর (ওয়াটারলু ফোরট্রান) দিয়ে এটি শুরু করেছিলাম এবং ... আমি এখনও এটি ২০১১
পিটার রোয়েল

1
@ ক্রজি এডি: লুপগুলিতে যদি অনেকগুলি কার্যকারিতা থাকে তবে আমি সম্মত হই। তবে শক্তভাবে নেস্ট করা লুপগুলি সহ, কোডটির দৈর্ঘ্য n + 1 বা 2n + 1 এর ক্রম হওয়া উচিত যেখানে n মাত্রাগুলির সংখ্যা। সেক্ষেত্রে আর পরিবর্তনশীল নাম পড়ার ক্ষমতা হ্রাস করতে পারে।
বিলথোর

11
"ইন ফোর্টরান" এর জন্য +1 কারণ thatতিহ্যটি এভাবেই শুরু হয়েছে - আপনি ফোর্টরান পছন্দ করেন কিনা তা বিবেচ্য নয়।
আর্টেম

34

আমি বিশ্বাস করি এটি সমষ্টি থেকে এসেছে :

সঙ্কলন


3
মজাদার! এটি ফরটারনের পূর্বাভাস দেয়, তবে সিএসের প্রসঙ্গে?
কেপ্রোবস্ট

3
যেহেতু ব্যাকাসের গণিতে স্নাতকোত্তর ছিল তা যৌক্তিক বলে মনে হয়।
dbasnett

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

8

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

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

এটিকে ব্যাক আপ করার কোনও রেফারেন্স আমার কাছে নেই, তবে আমি যেমন বলেছি এটি মোটামুটি পুরানো অধ্যাপকের কাছ থেকে এসেছে এবং এটি অনেকটা বোধগম্য বলে মনে হচ্ছে।

আশাকরি এটা সাহায্য করবে


6

আমি ভাবি যে আমি, জে, কে অঙ্কগুলিতে সংক্ষেপগুলিতে এবং ম্যাট্রিক্স উপাদানগুলির জন্য (আমি সারিগুলির জন্য এবং কলামগুলির জন্য জে) সূচকগুলি নির্দেশ করতে গণিতে ব্যবহৃত হয়। গাণিতিক স্বরলিপিতে, কিছু অক্ষর অন্যদের তুলনায় নির্দিষ্ট অর্থের সাথে প্রায়শই ব্যবহার করা হয়, যেমন ক, ধ্রুবকগুলির জন্য এ, বি, সি, ফ, জি, এইচ, ভেরিয়েবল বা স্থানাঙ্কের জন্য x, y, z, i, j, সূচকের জন্য কে। স্কুলে আমি যে ম্যাথটি নিয়েছিলাম তা থেকে অন্তত এটিই মনে পড়ে।

সম্ভবত এই স্বরলিপিটি কম্পিউটিংয়ে স্থানান্তরিত হয়েছে কারণ শুরুতে অনেক কম্পিউটার বিজ্ঞানী গণিতবিদ ছিলেন বা অন্তত একটি শক্তিশালী গাণিতিক পটভূমি ছিল।


3

i == পুনরুক্তি বা সূচক

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


1

i, j, k কার্টেসিয়ান স্থানাঙ্ক ব্যবস্থায় ব্যবহৃত হয়। X এবং y এর সাথে তুলনা করা যা একই সিস্টেমে অক্ষগুলি প্রতিনিধিত্ব করে এবং যা সর্বদা চলক হিসাবে ব্যবহৃত হয়, আমরা বলতে পারি যে আমি, জে এবং কেও সেখান থেকে এসেছিল।


1

"আমি" সূচকের জন্য।

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


0

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.