เหตุใดตัวแปร“ i” และ“ j” จึงถูกใช้สำหรับตัวนับ


179

ฉันรู้ว่านี่อาจดูเหมือนเป็นคำถามที่โง่มากที่จะถาม แต่ฉันก็อยากรู้อยากเห็นเกินไปที่จะถาม ...

เหตุใด "i" และ "j" จึงกลายเป็นตัวแปรเพื่อใช้เป็นตัวนับในโครงสร้างการควบคุมส่วนใหญ่

แม้ว่าสามัญสำนึกบอกฉันว่าพวกเขาเป็นเหมือน X ซึ่งใช้แทนค่าที่ไม่รู้จักฉันไม่สามารถช่วยคิดได้ว่าต้องมีเหตุผลว่าทำไมทุกคนได้รับการสอนแบบเดียวกันซ้ำแล้วซ้ำอีก

เป็นเพราะมีการแนะนำให้ใช้เพื่อการปฏิบัติที่ดีที่สุดหรือการประชุมหรือมีเหตุผลที่คลุมเครือบ้างไหม?

ในกรณีที่ฉันรู้ว่าฉันสามารถตั้งชื่ออะไรก็ได้ที่ฉันต้องการและชื่อตัวแปรนั้นไม่เกี่ยวข้องกัน


17
i = การวนซ้ำในขณะที่ j = หลังการ
เติม

7
แปลก 'c' ไม่ได้เลือก? เช่นเดียวกับในการลงทะเบียนเคาน์เตอร์ 'cx' ของ Intel


16
ทำไมคำถามจริงกลายเป็นชุมชนเพราะเพียงแค่พวกเขาเป็นที่นิยม? สิ่งนี้ให้ความรู้สึกชวนให้นึกถึงลัทธิคอมมิวนิสต์ หากใครบางคนประดิษฐ์สิ่งที่ยอดเยี่ยมจริง ๆ รัฐบาลจะขโมยสิ่งประดิษฐ์เพื่อแบ่งปันกับชุมชน
orokusaki

9
ปิดให้บริการในทางที่ผิด: คำตอบที่นี่มีข้อมูลมากกว่าไป qn อื่น ๆ ...
ชาร์ลส์สจ๊วต

คำตอบ:


330

ในที่สุดมันก็มาจากคณิตศาสตร์: สัญกรณ์การรวมแบบดั้งเดิมใช้iสำหรับดัชนีแรก, jสำหรับวินาทีและอื่น ๆ ตัวอย่าง (จากhttp://en.wikipedia.org/wiki/Summation ):

\ sum_ {i = 1} ^ {n} i = \ frac {n ^ 2 + n} {2}

นอกจากนี้ยังใช้วิธีการที่คอลเลกชันของสิ่งเช่นถ้าคุณมีพวงของตัวแปรเอ็กซ์1 , x 2 , x ... nแล้วโดยพลการอย่างใดอย่างหนึ่งจะเป็นที่รู้จักในฐานะ x ฉัน

สำหรับสาเหตุที่เป็นเช่นนั้นฉันคิดว่า SLaks นั้นถูกต้องและเป็นเพราะฉันเป็นตัวอักษรตัวแรกในดัชนี


93
@SLott: แล้วทำไมต้องiใช้ในวิชาคณิตศาสตร์?
SLaks

13
@ Slaks: นั่นเป็นคำถามที่ดี ฉันคิดว่า "ฉัน" อาจมาจากจำนวนเต็มมากกว่าดัชนี ฉันก็คิดว่ามันง่ายที่จะเขียนบนกระดานดำ ย้อนกลับไปในยุค 70 เราได้รับคำเตือนให้แน่ใจว่าเราเขียน "i" และ "j" ของเราในลักษณะที่แตกต่างอย่างสมบูรณ์แบบ แน่นอนว่าเราถูกบอกให้วาด "i" ของเราเหมือนย้อนกลับ "j" เพื่อให้ชัดเจนเกี่ยวกับมัน
S.Lott

26
@ S.Lott: ฉันสงสัยว่ามันมาจากจำนวนเต็ม เราใช้ℤ (กระดานดำตัวหนา Z) สำหรับจำนวนเต็มเพราะมันย่อมาจากคำภาษาเยอรมันZahlenซึ่งหมายถึงตัวเลข สมมติว่าสัญกรณ์บวกที่เกิดขึ้นในเวลาเดียวกัน, สัญกรณ์เยอรมันตามที่คาดว่าจะและคำภาษาเยอรมันสำหรับดัชนีเป็นดัชนีที่ยังเริ่มต้นด้วยการฉัน และฉันไม่สามารถนึกถึงตัวอักษรมากมายที่เขียนยากบนกระดานดำ ดียกเว้นξ :-)
Antal Spector-Zabusky

14
"การประชุมนี้มีอยู่เพราะอนุสัญญานี้มีมาก่อน" นั่นเป็นวิธีการทำงานของนิรุกติศาสตร์: ไม่มีใครรู้ว่าทำไมเสียงบางเสียงจึงมีความหมายเฉพาะใน PIE มันจะดีที่จะอธิบายการประชุมทางคณิตศาสตร์ แต่คำถามคือ "ทำไมพวกเขาใช้เป็นตัวนับในโครงสร้างการควบคุม" ดังนั้นจนกว่าจะมีใครสร้างคำตอบที่กลับไปไกลกว่านี้เป็นสิ่งที่ดีที่สุด อย่างน้อยก็คาดเดาว่าทำไมมันถึงใช้ในวิชาคณิตศาสตร์ นักประวัติศาสตร์คณิตศาสตร์ที่เหมาะสมสามารถค้นพบบางทีใช้ไบนารีสับ Euclid ไม่ได้ใช้ฉันเดิมพัน von Neumann แล้ว Cauchy ล่ะ? เขาใช้ดัชนีมาก
Steve Jessop

14
ฉันคิดว่ามันเป็นลากรองจ์ที่แนะนำให้ใช้ a, b, c สำหรับค่าคงที่ของฟังก์ชันและ x, y, z สำหรับตัวแปรของฟังก์ชัน i, j, k แสดงถึง 'ทิศทาง' ของเวกเตอร์และปัจจัยของผลบวกอย่างเป็นทางการเช่นนี้สามารถตีความได้ว่าองศาอิสระ [ทิศทาง, ด้วยชื่ออื่น] ของสมการ
เดวิด

200

ฉันเชื่อว่ามันย้อนกลับไปที่ Fortran ตัวแปรที่ขึ้นต้นด้วย I ถึง Q เป็นจำนวนเต็มโดยปริยายส่วนที่เหลือเป็นของจริง นี่หมายความว่าIเป็นตัวแปรจำนวนเต็มตัวแรกและJตัวที่สองเป็นต้นดังนั้นพวกมันจึงล้มลงในการใช้งานแบบลูป


53
ฉันคิดว่าสิ่งนี้มาจากวิธีที่นักคณิตศาสตร์ดูเหมือนว่าต้องการใช้ i, j, k เป็นตัวห้อยที่มีประโยชน์สำหรับดัชนีการคูณและการคูณเมทริกซ์และสิ่งที่ไม่ ฉันจำได้ว่าอ่านคู่มือ Fortran II รุ่นแรก ๆ เกี่ยวกับสิ่งนั้น (ใช่ Fortran II.)
S.Lott

5
ใช่ FORTRAN มีต้นกำเนิดของอนุสัญญาเหล่านี้
Jé Queue

9
ฉันถูกสอนIผ่านไม่ได้N QGoogle ดูเหมือนจะเห็นด้วยส่วนใหญ่ (FORTRAN รุ่นที่แตกต่างกันอย่างไร)
Hugh Allen

2
และทุกสิ่งทุกอย่างในฟอร์แทรนนั้นเป็นของจริง ซึ่งนำไปสู่เรื่องตลก "พระเจ้าเป็นจริงเว้นแต่ประกาศจำนวนเต็ม"
Lagerbaer

4
@ learnvst - เนื่องจากนักคณิตศาสตร์ใช้ i, j มาก่อนอย่างน้อยหนึ่งศตวรรษ
Martin Beckett

195

นักคณิตศาสตร์ใช้ i, j, k เพื่อระบุจำนวนเต็มในพีชคณิต (ตัวห้อย, ซีรีย์, การสรุป ฯลฯ ) นานก่อน (เช่น1836หรือ1816 ) คอมพิวเตอร์อยู่รอบ ๆ (นี่คือจุดเริ่มต้นของค่าเริ่มต้นประเภทตัวแปร FORTRAN) นิสัยของการใช้ตัวอักษรจากจุดสิ้นสุดของตัวอักษร ( ... , X, Y, Z) สำหรับตัวแปรที่ไม่รู้จักและจากจุดเริ่มต้น (A, B, C ... ) สำหรับค่าคงที่โดยทั่วไปจะประกอบไปRene Descartes (ดู เช่นกันที่นี่ ) ดังนั้นฉันคิดว่าฉัน, j, k ... n (กลางตัวอักษร) สำหรับจำนวนเต็มน่าจะเกิดจากเขาเช่นกัน


17
สำหรับฉันนี่เป็นคำตอบที่ชัดเจนที่สุด (พูดถึงรางวัลอันทรงเกียรติสำหรับคำตอบของ Michael Borgwardt ซึ่งอ้างถึงการประชุมเชิงคณิตศาสตร์ แต่ไม่เจาะจงเท่าไร) ฉันขอโทษด้วยที่คุณไม่ได้รับการยอมรับ ทั้งหมดที่ฉันทำได้คือให้ upvote ของฉัน
John Y

3
นี่คือเหตุผลที่เราต้องสามารถลงคะแนนให้กับคำตอบที่ได้รับการยอมรับจากชุมชน (และใช่ฉันรู้ว่าสิ่งนี้เป็นส่วนหนึ่งของการใช้สิทธิประโยชน์)
Kredns

หึ ฉันอัปเดตลิงก์ไปยังหนังสือ google เล่มเก่าเป็นครั้งคราวในคำตอบนี้เพราะ google ยังคงสับเนื้อหา โดยบังเอิญฉันทราบว่าเอกสาร 1816 ที่เชื่อมโยงในขณะนี้รวมถึง Charles Babbage (สมมุติว่าเขามีชื่อเสียงด้านเครื่องยนต์ / เครื่องมือวิเคราะห์แตกต่าง) ในฐานะผู้เขียน ดังนั้นเนื้อหาจะเป็นตัวอย่างของการใช้งานครั้งแรกของตัวแปรจำนวนเต็ม "ฉัน" โดยโปรแกรมคอมพิวเตอร์ที่ใช้งาน: ^)
timday

..OK ลิงค์ 1816 ไม่ได้ไปที่หน้าที่มี "i" ใช้อยู่ แต่มีอยู่
2552

129

i = จำนวนเต็ม

มาจาก Fortran ที่ตัวแปรจำนวนเต็มต้องเริ่มต้นด้วยตัวอักษร I ถึง N และตัวแปรจริงเริ่มต้นด้วยตัวอักษรอื่น ดังนั้นฉันจึงเป็นชื่อตัวแปรเลขจำนวนเต็มแรกและสั้นที่สุด Fortran เป็นหนึ่งในภาษาการเขียนโปรแกรมที่เก่าแก่ที่สุดในการใช้งานอย่างกว้างขวางและนิสัยที่พัฒนาโดยโปรแกรมเมอร์ใช้มันดำเนินการไปยังภาษาอื่น ๆ

แก้ไข : ฉันไม่มีปัญหากับคำตอบที่มาจากคณิตศาสตร์ ไม่ต้องสงสัยเลยว่าที่นักออกแบบ Fortran ได้รับแรงบันดาลใจ ความจริงก็คือสำหรับฉันแล้วเมื่อฉันเริ่มโปรแกรมใน Fortran เราใช้ I, J, K, ... สำหรับเคาน์เตอร์วนเพราะพวกเขาสั้นและชื่อตัวแปรแรกที่อนุญาตสำหรับจำนวนเต็ม ในฐานะนักเรียนปีที่สองใน HS ฉันอาจเคยได้ยินชื่อ Descartes (และอีกไม่กี่คน) แต่ก็มีการเชื่อมต่อทางคณิตศาสตร์ในการเขียนโปรแกรมน้อยมาก อันที่จริงหลักสูตรแรกที่ฉันได้รับเรียกว่า "Fortran for Business" และไม่ได้สอนโดยคณะคณิตศาสตร์ แต่เป็นคณะวิชาธุรกิจ / econ

อย่างน้อยสำหรับฉันการตั้งชื่อของตัวแปรมีน้อยที่เกี่ยวกับคณิตศาสตร์ แต่ทุกอย่างเนื่องจากนิสัยที่ฉันเลือกเขียนรหัส Fortran ที่ฉันใช้เป็นภาษาอื่น


4
ฉันค่อนข้างแน่ใจว่ามันเป็น FORTRAN
เคด Roux

4
Ya, fortran ..... มันทำลายจิตใจ เรามีโปรแกรมเมอร์ที่ใช้ i ii และ iii เป็นชื่อตัวแปรลูป อาการอื่น ๆ คือชื่อตัวแปร / ฟังก์ชัน 6 ตัวอักษรที่ไม่มีสระ
EvilTeach

4
@tvan ผมว่าสวยตัวแปรเริ่มต้นด้วยผมผ่าน N ผิดนัดจำนวนเต็ม แต่คุณยังคงสามารถประกาศให้จริงจึงตลก "พระเจ้าทรงเป็นจริงเว้นแต่ประกาศจำนวนเต็ม" +1 อย่างไรก็ตามเนื่องจากความทรงจำของฉันเมื่อหลายปีก่อนอาจไม่สมบูรณ์แบบ
paxdiablo

10
เฮ้พวก FORTRAN เอามันไปจากนักคณิตศาสตร์!
พุธที่

6
ฉันเห็นด้วยกับ @timday การใช้ i เป็นดัชนีของซีรี่ส์ได้รับการฝึกฝนโดยนักคณิตศาสตร์เป็นเวลาอย่างน้อย 2 ศตวรรษ
Scottie T

91

iหมายถึงI ndex มาหลังจาก
ji


12
ผมคิดว่าเขาได้พูดคุยเกี่ยวกับตัวอักษรให้ลองใช้จินตนาการบาง :)
แจ็ค

33
@ แจ็ค: ฉันคิดว่า @Pete กำลังล้อเล่น ;-)
Chris Pfohl

13
@Cpfohl: อ๋อแค่อยากจะเบื่อ: D
แจ็ค

4
@Pete Kirkham: ขอบคุณมาก Pete มันเป็นเสียงหัวเราะที่ดีที่สุดที่ฉันมีในเดือนที่ผ่านมา
AMissico

@SLaks ... ฉันเชื่อว่าสิ่งที่ถูกต้องของคุณคือ i = ดัชนีซึ่งมาจากสัญกรณ์ดัชนีที่ใช้ในคณิตศาสตร์en.wikipedia.org/wiki/Index_notation หรือนี่คือการอ้างอิงที่ดีในสาขาฟิสิกส์ notation.pdf
John Hartsock

63

สัญลักษณ์เหล่านี้ถูกใช้เป็นดัชนีเมทริกซ์ในคณิตศาสตร์นานก่อนที่จะมีการคิดค้นคอมพิวเตอร์อิเล็กทรอนิกส์


52

ฉันคิดว่ามันน่าจะมาจากดัชนี (ในแง่คณิตศาสตร์ ) - มันถูกใช้โดยทั่วไปเป็นดัชนีในผลรวมหรือการดำเนินการแบบ set-based อื่น ๆ และส่วนใหญ่มีการใช้แบบนั้นมาตั้งแต่ก่อนมีภาษาโปรแกรม


คำตอบที่ดี. ดูเหมือนว่าคำอธิบายนี้น่าจะเป็นไปได้มากที่สุดสำหรับฉัน
Noldorin

3
ได้. สัญกรณ์คณิตศาสตร์สำหรับผลรวมเหมือนY = Σ Xiก่อนหน้าทุกภาษาการเขียนโปรแกรม
Treb

ฉันคิดของดัชนีiแต่ละใช้เวลาฉัน แต่เดิมผมใช้ส่วนใหญ่เป็นเพราะทุกคนดูรหัสฉันที่อื่นใช้มันและที่อาจจะได้รับมรดกจากโปรแกรมเมอร์ Fortran ...
กลัว

47

มีการตั้งค่าในวิชาคณิตศาสตร์สำหรับการใช้ตัวอักษรต่อเนื่องในตัวอักษรสำหรับตัวแปร "ไม่ระบุชื่อ" ที่ใช้ในลักษณะเดียวกัน ดังนั้นไม่ใช่เพียงแค่ "i, j, k" แต่ยังรวมถึง "f, g, h", "p, q, r", "x, y, z" (ไม่ค่อยมี "u, v, w" ที่ได้เตรียมไว้) และ "α, β, γ"

ตอนนี้ "f, g, h" และ "x, y, z" ไม่ได้ใช้อย่างอิสระ: ตัวแรกใช้สำหรับฟังก์ชั่น "p, q, r" ก็มักจะใช้สำหรับฟังก์ชั่น

จากนั้นก็มีข้อ จำกัด อื่น ๆ เกี่ยวกับลำดับที่พร้อมใช้งาน: หลีกเลี่ยง "l" และ "o" เนื่องจากมีลักษณะเหมือน "1" และ "0" มากเกินไปในแบบอักษรจำนวนมาก "t" มักจะใช้เวลา "d & δ" สำหรับความแตกต่างและ "a, s, m, v" สำหรับการวัดทางกายภาพของการเร่งความเร็วการกระจัดมวลและความเร็ว ที่เหลือช่องว่างไม่กี่ตัวอักษรสามตัวติดต่อกันโดยไม่มีการเชื่อมโยงที่ไม่ต้องการในคณิตศาสตร์สำหรับดัชนี

จากนั้นดังที่คนอื่น ๆ ได้สังเกตเห็นอนุสัญญาจากคณิตศาสตร์มีอิทธิพลอย่างมากต่ออนุสัญญาการเขียนโปรแกรมในช่วงต้นและ "α, β, γ" ไม่ได้มีอยู่ในชุดอักขระเริ่มต้นจำนวนมาก


2
ตกลง แม้ว่าa, b, cเป็นลำดับอย่างเป็นธรรมที่ใช้กันทั่วไปแม้จะaมีหลายความหมาย ...
Stobor

32

ผมพบคำตอบที่เป็นไปได้ที่อาจจะว่าผม j และ k Hamilton's Quaternionsมาจาก

ข้อความแสดงแทน

ออยเลอร์เลือก i สำหรับหน่วยจินตภาพ

แฮมิลตันต้องการรากที่สองของ -1 เพิ่มเติม: ii = jj = kk = ijk = -1

แฮมิลตันเป็นผู้ที่มีอิทธิพลมากและ quaternions เป็นวิธีมาตรฐานในการวิเคราะห์ 3 มิติก่อนปี 1900 จากนั้นนักคณิตศาสตร์ก็ใช้ความคิด (ijk) เป็นชุดที่ตรงกัน แคลคูลัส Vector แทนที่การวิเคราะห์เชิงสี่ในยุค 1890 เพราะมันเป็นวิธีที่ดีกว่าในการเขียนสมการของ Maxwell แต่คนที่มีแนวโน้มที่จะเขียนปริมาณเวกเตอร์เป็นเช่นนี้แทน(3i-2j+k) (3,-2,1)ดังนั้น (ijk) จึงกลายเป็นเวกเตอร์พื้นฐานมาตรฐานใน R ^ 3

ในที่สุดนักฟิสิกส์เริ่มใช้ทฤษฎีกลุ่มเพื่ออธิบายความสมมาตรในระบบของสมการเชิงอนุพันธ์ ดังนั้น (ijk) เริ่มแสดงความหมายว่า "เวกเตอร์ที่ถูกสลับสับเปลี่ยนโดยกลุ่มการเปลี่ยนแปลง" จากนั้นก็ลอยไปสู่ ​​"สิ่งที่คล้ายดัชนีที่รับค่าที่เป็นไปได้ทั้งหมดในชุดที่ระบุ" ซึ่งโดยทั่วไปแล้วพวกมันหมายถึงอะไร


11
ในที่สุดวิธีการที่แตกต่างกันสำหรับคำถามจุดที่น่าสนใจ +1
เฟเบียน

30

โดยการละทิ้ง (ลำเอียงเล็กน้อย)

a seems an array
b seems another array 
c seems a language name
d seems another language name
e seems exception
f looks bad in combination with "for" (for f, a pickup?)
g seems g force
h seems height

i seems an index                    
j seems i (another index)

k seems a constant k
l seems a number one (1) 
m seems a matrix
n seems a node
o seems an output
p sounds like a pointer
q seems a queue
r seems a return value
s seems a string
t looks like time
u reserved for UVW mapping or electic phase 
v reserved for UVW mapping or electic phase or a vector
w reserved for UVW mapping or electic phase or a weight
x seems an axis (or an unknown variable)
y seems an axis
z seems a third axis

3
ฉันเห็น n เป็นnumberโดยปกติจำนวนองค์ประกอบในชุด
Tom Leys

6
โอ้ผู้ชายและ XXX จะเป็นอย่างไร? )) +1 สำหรับความคิดสร้างสรรค์;)
Hovhannes Grigoryan

บางครั้งฉันดีใจที่มากที่สุดของเวลาที่ฉันจะได้ไม่ต้องกังวลกับสิ่งที่ประเภทของการขนส่งของคนอื่น ๆ เกิดขึ้นกับอยู่ในหัวของพวกเขาสำหรับสิ่งที่ต้องการที่ ...
Thies Heidecke

21

บ่ายวันหนึ่งที่มีแดดอาร์คิมีดีสคิดไตร่ตรอง ( เหมือนปกติในช่วงบ่ายที่มีแดด ) และวิ่งเข้าไปหาเพื่อน Eratosthenes

อาร์คิมีดีสกล่าวว่า "อาร์คิมีดีสอวยพร Eratosthenes! ฉันกำลังพยายามหาวิธีแก้ปัญหาอัตราส่วนของวัตถุแข็งทรงกลมหลายจุดในสภาวะสมดุลฉันต้องการวนซ้ำร่างกายเหล่านี้หลายครั้ง แต่ฉันมีเวลาที่น่าตกใจในการติดตาม จำนวนซ้ำที่ฉันทำไปแล้ว! "

Eratosthenes พูดว่า "ทำไมอาร์คิมีดีสคุณลูกพลัมสุกของเด็กคุณเพียงแค่ทำเครื่องหมายแถวของเส้นต่อเนื่องในทรายแต่ละติดตามจำนวนซ้ำที่คุณได้ทำในการทำซ้ำ!"

อาร์คิมิดีสร้องออกมาสู่โลกว่าเพื่อนที่ดีของเขาปฏิเสธไม่ได้ว่าเป็นสัญญาณแห่งความเฉลียวฉลาดที่กำลังคิดหาวิธีแก้ปัญหาที่เรียบง่าย แต่อาร์คิมีดีสตั้งข้อสังเกตว่าเขาชอบที่จะเดินเป็นวงกลมรอบ ๆ หลุมทรายของเขาในขณะที่เขาครุ่น ดังนั้นจึงมีความเสี่ยงที่จะสูญเสียการติดตามว่าแถวใดอยู่ด้านบนและอยู่ด้านล่าง

“ บางทีฉันควรทำเครื่องหมายแถวเหล่านี้ด้วยตัวอักษรของตัวอักษรที่อยู่ด้านข้างเพื่อที่ฉันจะได้รู้ว่าแถวไหนอยู่! คุณคิดว่าไง? เขาถามแล้วเพิ่ม "แต่ Eratosthenes ... ฉันต้องใช้ตัวอักษรอะไร?"

Eratosthenes มั่นใจว่าเขาไม่ทราบว่าจดหมายฉบับใดจะดีที่สุดและพูดให้อาร์คิมีดีสมาก แต่อาร์คิมีดีสไม่พอใจและยังคงแย่งบรรณารักษ์ผู้ยากไร้ในการเลือกอย่างน้อยสองตัวอักษรที่เขาจะต้องใช้สำหรับการแก้ปัญหาสมดุลทรงกลมปัจจุบันของเขา

Eratosthenes ในที่สุดก็เบื่อกับการร้องขออย่างต่อเนื่องสำหรับตัวอักษรสองตัวตะโกนว่า "ฉันแค่ไม่ได้รู้ !!!"

ดังนั้นอาร์คิมีดีสจึงเลือกตัวอักษรสองตัวแรกในประโยคอุทานของ Eratosthenes และขอบคุณเพื่อนของเขาที่ให้ความช่วยเหลือ


สัญลักษณ์เหล่านี้ถูกนำมาใช้อย่างรวดเร็วโดยนักพัฒนา Java กรีกโบราณและที่เหลือก็คือ ...


6
... jและมีตัวอักษร
Andrew Grimm

ว้าวที่เกือบอ่านเรื่องราวของเต่าและ Achilles จาก GEB ของ Hofstadter
ProfK

15

ฉันคิดว่าเป็นเพราะลูปจำนวนมากใช้ตัวแปร Int type ในการนับเช่น

for (int i = 0; etc

และเมื่อคุณพิมพ์คุณจะพูดออกมาในหัวของคุณ (เช่นเมื่อคุณอ่าน) ดังนั้นในใจของคุณคุณพูดว่า 'int .... '

และเมื่อคุณต้องสร้างจดหมายทันทีหลังจากนั้น 'int .... ' คุณพูด / พิมพ์ 'i' เพราะนั่นเป็นตัวอักษรตัวแรกที่คุณคิดเมื่อคุณเพิ่งพูดว่า 'int'

เช่นเดียวกับที่คุณสะกดคำให้เด็ก ๆ ที่เริ่มเรียนรู้การอ่านคุณสะกดคำสำหรับพวกเขาโดยใช้ชื่อเช่นนี้:

WORD สะกดคาถา William W, Ok O, Ruby R, Done D

คุณบอกว่า Int I, Double d, Float f, string s ฯลฯ ตามตัวอักษรตัวแรก

และจะใช้ j เพราะเมื่อคุณทำ int I แล้ว J จะตามมาทันที


7
iลงวันที่ก่อนไวยากรณ์นี้
SLaks

1
นั่นเป็นวิธีที่ดีในการสร้างความสับสนให้กับเด็ก คุณสอนให้คุณสะกดแบบนี้จริงๆเหรอ!
Lightness Races ในวงโคจร

14

ฉันคิดว่ามันเป็นการรวมกันของเหตุผลที่กล่าวถึงอื่น ๆ :

สำหรับนักเริ่ม 'i' ถูกใช้โดยนักคณิตศาสตร์ในรูปแบบของพวกเขาและในยุคแรก ๆ ของการคำนวณด้วยภาษาที่ไม่ได้เป็นแบบไบนารี่ นักคณิตศาสตร์ (... และนักวิทยาศาสตร์และวิศวกร) ดังนั้นสัญกรณ์จึงล้มเหลวในการใช้ภาษาคอมพิวเตอร์ในการเขียนโปรแกรมลูปและนับตั้งแต่นั้นมา

รวมสิ่งนี้เข้ากับความจริงที่ว่าพื้นที่หน้าจอในวันแรก ๆนั้นมีข้อ จำกัดมากเช่นเดียวกับหน่วยความจำมันสมเหตุสมผลที่จะเก็บชื่อตัวแปรที่สั้นกว่า


13

อาจเป็นไปได้ในประวัติศาสตร์?

FORTRAN หรืออาจเป็นภาษาระดับสูงตัวแรกที่กำหนดโดย i, j, k, l, m เป็นประเภทข้อมูล Integer โดยค่าเริ่มต้นและลูปสามารถควบคุมได้โดยตัวแปรจำนวนเต็มเท่านั้น

เช่น:

ทำ 100 i = j, 100,5 .... 100 ดำเนินการต่อ ....


FWIW ผมมักจะข้ามตัวอักษร L เพราะมันดูมากเกินไปเช่นหมายเลข 1
Nosredna

13

i = iterator, i = index, i = จำนวนเต็ม

ที่คุณเคยคิดว่า "ฉัน" หมายถึงมันยังคง "พอดีกับใบเรียกเก็บเงิน"

นอกจากนี้หากคุณมีโค้ดเพียงบรรทัดเดียวภายในลูปนั้นคุณควรตั้งชื่อตัวแปร iterator / index / integer ให้มีความหมายมากกว่า ไลค์: employeeIndex

BTW ฉันมักจะใช้ "i" ในลูปตัววนซ้ำแบบง่ายของฉัน เว้นแต่จะมีรหัสหลายบรรทัด


13

i = iota, j = jot; ทั้งการเปลี่ยนแปลงเล็กน้อย

iota เป็นตัวอักษรที่เล็กที่สุดในตัวอักษรกรีก; ในภาษาอังกฤษมันหมายถึงการเชื่อมโยงกับการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ เช่นเดียวกับใน "Not one iota" (จากวลีในพันธสัญญาใหม่: "จนกว่าสวรรค์และโลกจะผ่านไปไม่ผ่าน iota ไม่ใช่จุดจะผ่านจากกฎหมาย" (Mt 5:18))

ตัวนับแสดงถึงการเปลี่ยนแปลงเล็กน้อยในค่า

และจาก iota ก็มาที่ jot (iot) ซึ่งก็เป็นคำพ้องสำหรับการเปลี่ยนแปลงเล็กน้อยเช่นกัน

cf เลย http://en.wikipedia.org/wiki/Iota


13

ดีจากคณิตศาสตร์: (สำหรับตัวอักษรละติน)

a, b: ใช้เป็นค่าคงที่หรือเลขจำนวนเต็มสำหรับจำนวนตรรกยะ
c: ค่าคงที่
d: อนุพันธ์
e: จำนวนออยเลอร์
f, g, h: ฟังก์ชัน
i, j, k: เป็นดัชนี (เช่นหน่วยเวกเตอร์และควอเทอร์เนียน)
l: โดยทั่วไปไม่ได้ใช้ ดูเหมือนว่า 1
m, n: เป็นแถวและคอลัมน์ของเมทริกซ์หรือเป็นจำนวนเต็มสำหรับจำนวนตรรกยะ
o: ยังไม่ได้ใช้ (เว้นแต่ว่าคุณจะอยู่ในรูปสัญกรณ์น้อย)
p, q: มักใช้เป็นช่วงเวลา
r: บางครั้งการเปลี่ยนแปลงเชิงพื้นที่ เวลาอื่นที่เกี่ยวข้องกับจำนวนเฉพาะ
s, t: spatial และตัวแปรชั่วคราวหรือ s ถูกใช้เป็นการเปลี่ยนแปลงของตัวแปรสำหรับ t
u, v, w: การเปลี่ยนแปลงของตัวแปร
x, y, z: ตัวแปร


11

เหตุผลหลักที่เป็นไปได้หลายประการฉันเดาว่า:

  • นักคณิตศาสตร์ใช้iและjสำหรับตัวเลขธรรมชาติในสูตร (จำนวนที่ใช้จำนวนเชิงซ้อนน้อย, อย่างน้อย) ดังนั้นสิ่งนี้จึงนำไปสู่การเขียนโปรแกรม
  • จากC , คำแนะนำไปi intและถ้าคุณต้องการอีกintแล้วเป็นเพียงทางยาวเกินไปดังนั้นคุณจึงตัดสินใจที่จะใช้i2j
  • มีภาษาที่ตัวอักษรตัวแรกตัดสินใจชนิดและเป็นแล้วiinteger


7

มันมาจากคณิตศาสตร์แน่นอนซึ่งก่อนหน้านี้การเขียนโปรแกรมคอมพิวเตอร์

แล้วถ้ามาจากคณิตศาสตร์ล่ะ การเดาที่ไม่ได้รับการศึกษาอย่างสมบูรณ์ของฉันคือว่ามันเป็นหนึ่งในเพื่อนที่พูดว่านักคณิตศาสตร์ชอบที่จะใช้กลุ่มตัวอักษรสำหรับสิ่งที่คล้ายกัน - f, g, h สำหรับฟังก์ชั่น; x, y, z สำหรับตัวแปรที่เป็นตัวเลข; p, q, r สำหรับตัวแปรโลจิคัล u, v, w สำหรับชุดตัวแปรอื่น ๆ โดยเฉพาะในแคลคูลัส; a, b, c สำหรับสิ่งต่าง ๆ มากมาย i, j, k มีประโยชน์สำหรับตัวแปรซ้ำและนั่นทำให้ความเป็นไปได้หมดไป ทำไมไม่ m, n? พวกมันใช้สำหรับจำนวนเต็ม แต่บ่อยครั้งที่จุดสิ้นสุดของการวนซ้ำมากกว่าตัววนซ้ำตัวเอง

บางคนควรถามนักประวัติศาสตร์คณิตศาสตร์


6

ตัวนับนั้นเป็นเรื่องธรรมดาในโปรแกรมและในช่วงแรก ๆ ของการคำนวณทุกอย่างมีคุณภาพ ...
โปรแกรมเมอร์มักพยายามอนุรักษ์พิกเซลและ 'i' ต้องการพิกเซลน้อยกว่าตัวอักษรอื่น ๆ (นักคณิตศาสตร์ที่ขี้เกียจหยิบมันด้วยเหตุผลเดียวกัน - เป็นสัญลักษณ์ที่เล็กที่สุด)
ตามที่ระบุไว้ก่อนหน้า 'j' ตามธรรมชาติ ...

:)


24
ในวันแรกของการคำนวณพิกเซลไม่อยู่
SLaks

1
@ Slaks นั่นคือความคิดเห็นที่ชนะหนึ่ง แค่เห็นรอยยิ้มบนใบหน้าของฉันอ่านและโหวต ดี!
ProfK

"โปรแกรมเมอร์พยายามประหยัดพิกเซลโดยธรรมชาติและ 'i' ต้องการพิกเซลน้อยกว่าตัวอักษรอื่น ๆ เพื่อเป็นตัวแทน" <<< นั่นคือเฮฮา
ocodo

1
... และด้วยเหตุนี้การเพิ่มประสิทธิภาพก่อนวัยอันควรจึงเกิดขึ้น!
Gerrat

4

ฉันใช้มันด้วยเหตุผลหลายประการ

  • โดยปกติแล้วลูปของฉันจะขึ้นอยู่กับ int ดังนั้นคุณจึงสร้างสามเหลี่ยมทั้งหมดบนคีย์บอร์ดที่พิมพ์ "int i" โดยมีข้อยกเว้นของพื้นที่ที่ฉันจัดการด้วยนิ้วหัวแม่มือ นี่เป็นลำดับที่รวดเร็วในการพิมพ์

  • "i" สามารถยืนได้สำหรับตัววนซ้ำจำนวนเต็มเพิ่มหรือดัชนีซึ่งแต่ละตัวมีเหตุผล

ด้วยการใช้งานส่วนตัวของฉันตั้งทฤษฎีของมันมาจาก FORTRAN ถูกต้องที่ vars จำนวนเต็มใช้ตัวอักษร I - N


4

ฉันเรียนรู้ FORTRAN ใน Control Data Corp. 3100 ในปี 1965 ตัวแปรที่ขึ้นต้นด้วย 'I' ถึง 'N' มีความหมายว่าเป็นจำนวนเต็ม ตัวอย่าง: 'IGGY' และ 'NORB' เป็นจำนวนเต็ม 'XMAX' และ 'ALPHA' เป็นทศนิยม อย่างไรก็ตามคุณสามารถแทนที่สิ่งนี้ได้ด้วยการประกาศอย่างชัดเจน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.