Tại sao các biến số i i đá và bầu jv được sử dụng cho các quầy?


179

Tôi biết đây có vẻ là một câu hỏi hoàn toàn ngớ ngẩn để hỏi, nhưng tôi quá tò mò không hỏi ...

Tại sao "i" và "j" trở thành biến để sử dụng làm bộ đếm trong hầu hết các cấu trúc điều khiển?

Mặc dù ý thức thông thường cho tôi biết họ giống như X, được sử dụng để đại diện cho các giá trị không xác định, tôi không thể nghĩ rằng phải có lý do tại sao mọi người được dạy lặp đi lặp lại như vậy.

Là bởi vì nó thực sự được khuyến nghị cho các thực tiễn tốt nhất, hoặc một quy ước, hoặc nó có một số lý do mơ hồ đằng sau nó?

Chỉ trong trường hợp, tôi biết tôi có thể đặt cho họ bất cứ tên nào tôi muốn và tên biến đó không liên quan.


17
i = lặp trong khi j = sau khi
giao thoa

7
lạ 'c' không được chọn? như trong thanh ghi truy cập Intel 'cx'.


16
Tại sao các câu hỏi thực tế trở thành wiki cộng đồng chỉ vì chúng phổ biến? Điều này cảm thấy rất gợi nhớ về chủ nghĩa cộng sản. Nếu ai đó phát minh ra thứ gì đó thực sự tuyệt vời, chính phủ đánh cắp phát minh để chia sẻ với cộng đồng.
orokusaki

9
Đóng sai cách: các câu trả lời ở đây có nhiều thông tin hơn so với qn khác ...
Charles Stewart

Câu trả lời:


330

Cuối cùng nó đến từ toán học: ký hiệu tóm tắt theo truyền thống sử dụng i cho chỉ số đầu tiên, j cho thứ hai, v.v. Ví dụ (từ http://en.wikipedia.org/wiki/Summation ):

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

Nó cũng được sử dụng theo cách đó cho các bộ sưu tập các thứ, như nếu bạn có một loạt các biến x 1 , x 2 , ... x n , thì một biến tùy ý sẽ được gọi là x i .

Về lý do tại sao như vậy, tôi tưởng tượng SLaks là chính xác và đó là vì tôi là chữ cái đầu tiên trong Index.


93
@SLott: Và tại sao lại được isử dụng trong toán học?
SLaks

13
@Slaks: Đó là một câu hỏi hay. Tôi thực sự nghĩ rằng "i" có thể đến từ số nguyên nhiều hơn chỉ số. Tôi cũng nghĩ thật dễ dàng để viết lên bảng phấn. Trở lại những năm 70, chúng tôi đã được cảnh báo để chắc chắn rằng chúng tôi đã viết "i" và "j" theo cách hoàn toàn đặc biệt. Thật vậy, chúng tôi được yêu cầu vẽ chữ "i" chính xác như chữ "j" ngược để hoàn toàn rõ ràng về nó.
S.Lott

26
@ S.Lott: Tôi nghi ngờ nó đến từ số nguyên. Chúng tôi sử dụng ℤ (bảng đen in đậm Z) cho các số nguyên vì nó là viết tắt của từ tiếng Đức Zahlen , có nghĩa là số . Giả sử rằng ký hiệu tổng hợp phát sinh cùng khoảng thời gian đó, ký hiệu gốc tiếng Đức sẽ được mong đợi và từ tiếng Đức có nghĩa là chỉ mụcIndex , cũng bắt đầu bằng chữ i . Và tôi không thể nghĩ ra nhiều chữ cái đặc biệt khó viết trên bảng phấn. Chà, ngoại trừ :-)
Antal Spector-Zabusky

14
"Quy ước này tồn tại bởi vì quy ước này đã tồn tại trước đây." Đó là cách thức hoạt động của từ nguyên: không ai biết tại sao một tiếng ồn cụ thể lại có ý nghĩa đặc biệt trong PIE. Sẽ rất tốt để giải thích quy ước toán học, nhưng câu hỏi là "tại sao chúng được sử dụng làm bộ đếm trong các cấu trúc điều khiển", vì vậy cho đến khi ai đó đưa ra câu trả lời đi xa hơn, đây là cách tốt nhất. Nó ít nhất suy đoán tại sao nó được sử dụng trong toán học. Một nhà sử học toán học thích hợp có thể tìm ra, có thể sử dụng một nhị phân. Euclid đã không sử dụng nó, tôi cá là von Neumann đã làm. Làm thế nào về Cauchy? Anh ấy đã sử dụng chỉ số rất nhiều
Steve Jessop

14
Tôi nghĩ rằng chính Lagrange đã khuyến nghị sử dụng a, b, c cho các hằng số của hàm và x, y, z cho các biến của hàm. i, j, k biểu thị 'hướng' của một vectơ và các yếu tố của một tổng chính thức như thế này có thể được hiểu là bậc tự do [hướng, theo tên khác] của phương trình.
David

200

Tôi tin rằng nó có từ Fortran. Các biến bắt đầu từ I đến Q là số nguyên theo mặc định, các biến khác là có thật. Điều này có nghĩa đó Ilà biến số nguyên đầu tiên và biến Jthứ hai, v.v., vì vậy chúng rơi vào sử dụng trong các vòng lặp.


53
Tôi nghĩ rằng điều này xuất phát từ cách các nhà toán học dường như thích sử dụng i, j, k như các chỉ số tiện dụng cho các chỉ số nhân và ma trận tổng hợp và những gì không. Tôi nhớ đọc trong một hướng dẫn Fortran II đầu tiên một cái gì đó về điều đó. (Vâng, Fortran II.)
S.Lott

5
Vâng, FORTRAN bắt nguồn những quy ước này.
Jé Queue

9
Tôi đã được dạy Iqua Nkhông Q. Google dường như chủ yếu đồng ý. (các phiên bản khác nhau của FORTRAN?)
Hugh Allen

2
Và mọi thứ khác ở Fortran, theo mặc định, là có thật. Điều này dẫn đến câu nói đùa "Chúa là có thật, trừ khi được tuyên bố là số nguyên".
Lagerbaer

4
@learnvst - bởi vì các nhà toán học đã sử dụng i, j trong ít nhất một thế kỷ trước đó.
Martin Beckett

195

Các nhà toán học đã sử dụng i, j, k để chỉ định các số nguyên trong đại số (bảng con, chuỗi, tổng, v.v.) từ lâu trước đó (ví dụ 1836 hoặc 1816 ) máy tính đã xuất hiện (đây là nguồn gốc của mặc định loại biến FORTRAN). Thói quen sử dụng các chữ cái ở cuối bảng chữ cái (..., x, y, z) cho các biến không xác định và từ đầu (a, b, c ...) cho các hằng số thường được quy cho Rene Descartes , (xem cũng ở đây ) vì vậy tôi giả sử i, j, k ... n (ở giữa bảng chữ cái) cho các số nguyên có khả năng là do anh ta quá.


17
Đối với tôi, đây rõ ràng là câu trả lời tốt nhất. (Đề cập đáng trân trọng cho câu trả lời của Michael Borgwardt, cũng trích dẫn quy ước toán học nhưng không cụ thể.) Tôi xin lỗi bạn không phải là người được chấp nhận. Tất cả những gì tôi có thể làm là cung cấp cho nó upvote của tôi.
John Y

3
Đây chính xác là lý do mà chúng tôi cần để có thể bỏ phiếu cho câu trả lời được cộng đồng chấp nhận (và vâng tôi biết điều này thuộc về uservoice).
Kredns

Heh. Thỉnh thoảng tôi cập nhật liên kết đến một cuốn sách cũ của google trong câu trả lời này vì google liên tục cắt các thứ xung quanh. Tình cờ, tôi lưu ý rằng tài liệu năm 1816 hiện được liên kết bao gồm Charles Babbage (có lẽ ông là người nổi tiếng về động cơ phân tích / động cơ phân tích) với tư cách là một tác giả. Vì vậy, có thể coi đó là một ví dụ về lần đầu tiên sử dụng biến số nguyên "i" của một lập trình viên máy tính: ^)
timday

..OK liên kết 1816 không đi đến trang có chữ "i" được sử dụng trên đó, nhưng chúng ở đó.
timday

129

i = số nguyên

Đến từ Fortran, nơi các biến số nguyên phải bắt đầu bằng các chữ cái I đến N và các biến thực bắt đầu bằng các chữ cái khác. Do đó, tôi là tên biến số nguyên đầu tiên và ngắn nhất. Fortran là một trong những ngôn ngữ lập trình sớm nhất được sử dụng rộng rãi và thói quen được phát triển bởi các lập trình viên sử dụng nó được chuyển sang các ngôn ngữ khác.

BIÊN TẬP : Tôi không có vấn đề với câu trả lời rằng nó xuất phát từ toán học. Không còn nghi ngờ gì nữa, đó là nơi các nhà thiết kế của Fortran lấy cảm hứng từ họ. Thực tế là, đối với tôi, khi tôi bắt đầu lập trình ở Fortran, chúng tôi đã sử dụng I, J, K, ... cho các bộ đếm vòng lặp vì chúng ngắn và là tên biến được phép hợp pháp đầu tiên cho số nguyên. Là sinh viên năm thứ hai, có lẽ tôi đã nghe nói về Descartes (và rất ít người khác), nhưng có rất ít kết nối với toán học khi lập trình. Trên thực tế, khóa học đầu tiên tôi tham gia có tên là "Fortran for Business" và được giảng dạy không phải bởi các giảng viên toán học, mà là giảng viên kinh doanh / econ.

Đối với tôi, ít nhất, việc đặt tên biến không liên quan nhiều đến toán học, nhưng tất cả mọi thứ là do thói quen tôi chọn viết mã Fortran mà tôi mang theo các ngôn ngữ khác.


4
Tôi khá chắc chắn rằng đó là FORTRAN.
Cade Roux

4
Ya, fortran ..... Nó làm hỏng tâm trí. Chúng tôi có một lập trình viên sử dụng i ii và iii làm tên biến vòng lặp. Triệu chứng khác là tên biến / hàm 6 ký tự không có nguyên âm.
EvilTeach

4
@tvan, tôi khá chắc chắn các biến bắt đầu từ I đến N được mặc định là số nguyên, nhưng bạn vẫn có thể khai báo chúng là thật do đó câu nói đùa "Chúa là có thật, trừ khi số nguyên được khai báo". Dù sao +1, vì hồi ức của tôi từ rất nhiều năm trước có thể KHÔNG hoàn hảo.
paxdiablo

10
Này, những người FORTRAN đã lấy nó ra khỏi các nhà toán học!
timday

6
Tôi đồng ý với @timday. Sử dụng i làm chỉ số của một chuỗi đã được các nhà toán học thực hành trong ít nhất 2 thế kỷ.
Scottie T

91

ilà viết tắt của I ndex.
jđược đưa ra sau i.


12
Tôi nghĩ anh ấy đã nói về bảng chữ cái, hãy thử sử dụng một số trí tưởng tượng :)
Jack

33
@Jack: Tôi nghĩ rằng @Pete đã nói đùa ;-)
Chris Pfohl

13
@Cpfohl: vâng, chỉ muốn nhàm chán: D
Jack

4
@Pete Kirkham: Cảm ơn bạn rất nhiều Pete, đó là tiếng cười tốt nhất tôi có trong tháng qua.
AMissico

@SLaks ... Tôi tin rằng quyền của bạn là i = Index xuất phát từ ký hiệu chỉ mục được sử dụng trong Math en.wikipedia.org/wiki/Index_notation hoặc đây là một tài liệu tham khảo tốt đẹp.ucsb.edu / ~ physCS31 / fall2010 / index- ký hiệu.pdf
John Hartsock

63

Những biểu tượng này đã được sử dụng làm chỉ số ma trận trong toán học từ lâu trước khi máy tính điện tử được phát minh.


52

Tôi nghĩ rằng rất có thể nó bắt nguồn từ chỉ mục (theo nghĩa toán học ) - nó thường được sử dụng như một chỉ mục trong tổng hoặc các hoạt động dựa trên tập hợp khác, và rất có thể đã được sử dụng theo cách đó từ trước khi có ngôn ngữ lập trình.


Câu trả lời tốt. Điều này (với tôi) thực sự có vẻ như là lời giải thích có thể xảy ra nhất.
Noldorin

3
Vâng Ký hiệu toán học cho một tổng như Y = Σ Xitrước mỗi ngôn ngữ lập trình.
Treb

Tôi đang nghĩ về chỉ số mỗi khi tôi sử dụng i. Nhưng ban đầu tôi sử dụng nó chủ yếu là do tất cả các mã tôi nhìn vào nơi khác sử dụng nó, và rằng có thể được thừa hưởng từ các lập trình viên Fortran ...
kinh ngạc

47

Có một ưu tiên trong toán học khi sử dụng các chữ cái liên tiếp trong bảng chữ cái cho các biến "ẩn danh" được sử dụng theo cách tương tự. Do đó, không chỉ "i, j, k", mà còn "f, g, h", "p, q, r", "x, y, z" (hiếm khi có "u, v, w" được đặt trước), và "α, β, γ".

Bây giờ "f, g, h" và "x, y, z" không được sử dụng tự do: cái trước là cho các hàm, cái sau là cho kích thước. "P, q, r" cũng thường được sử dụng cho các hàm.

Sau đó, có các ràng buộc khác đối với các chuỗi có sẵn: "l" và "o" được tránh, bởi vì chúng trông quá giống "1" và "0" trong nhiều phông chữ. "T" thường được sử dụng cho thời gian, "d &" cho các vi sai và "a, s, m, v" cho các biện pháp vật lý của gia tốc, chuyển vị, khối lượng và vận tốc. Điều đó không để lại quá nhiều khoảng trống của ba chữ cái liên tiếp mà không có mối liên hệ không mong muốn trong toán học cho các chỉ số.

Sau đó, như một số người khác đã nhận thấy, các quy ước từ toán học có ảnh hưởng mạnh mẽ đến các quy ước lập trình ban đầu và "α,," không có sẵn trong nhiều bộ ký tự đầu tiên.


2
Đã đồng ý. Mặc dù, a, b, clà một chuỗi được sử dụng khá phổ biến mặc dù acó nhiều ý nghĩa ...
Stobor

32

Tôi tìm thấy một câu trả lời khả dĩ khác có thể là i, j và k đến từ Hamilton's Quaternions .

văn bản thay thế

Euler chọn i cho đơn vị tưởng tượng.

Hamilton cần thêm hai căn bậc hai của -1: ii = jj = kk = ijk = -1

Hamilton thực sự có ảnh hưởng và tứ phương là cách tiêu chuẩn để phân tích 3D trước năm 1900. Đến lúc đó, các nhà toán học đã quen nghĩ (ijk) như một bộ phù hợp. Phép tính véc tơ thay thế phân tích bậc bốn vào những năm 1890 bởi vì đó là cách tốt hơn để viết phương trình Maxwell. Nhưng mọi người có xu hướng viết số lượng vector như thế này:(3i-2j+k) thay vì (3,-2,1) . Vì vậy (ijk) đã trở thành các vectơ cơ sở tiêu chuẩn trong R ^ 3.

Cuối cùng, các nhà vật lý bắt đầu sử dụng lý thuyết nhóm để mô tả các đối xứng trong các hệ phương trình vi phân. Vì vậy, (ijk) bắt đầu đưa ra "các vectơ được hoán đổi xung quanh bởi các nhóm hoán vị", sau đó trôi về phía "những thứ giống như chỉ số đảm nhận tất cả các giá trị có thể trong một số tập xác định" , về cơ bản là ý nghĩa của chúng trong một vòng lặp for.


11
cuối cùng là một cách tiếp cận khác nhau cho câu hỏi, điểm thú vị +1
Fabian

30

bằng cách loại bỏ (một chút thiên vị)

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
Tôi thấy n như number, thường là số phần tử trong một tập hợp.
Tom Leys

6
Ôi trời, và dường như XXX là gì? )) +1 cho sự sáng tạo;)
Hovhannes Grigoryan

Đôi khi tôi rất vui vì hầu hết thời gian tôi không phải bận tâm đến những kiểu người khác thường nghĩ ra trong đầu vì những điều như thế ...
Thies Heidecke

21

Một buổi chiều nắng, Archimedes suy ngẫm gì ( như thường lệ cho những buổi chiều đầy nắng ) và tình cờ gặp bạn Eratosthenes của mình.

Archimedes nói: "Chào mừng đến với Eratosthenes! Tôi đang cố gắng đưa ra một giải pháp cho tỷ lệ của một số vật thể cứng nhắc hình cầu ở trạng thái cân bằng. Tôi muốn lặp đi lặp lại trên những cơ thể này nhiều lần, nhưng tôi có một thời gian đáng sợ để theo dõi trong số bao nhiêu lần tôi đã thực hiện! "

Eratosthenes nói, "Tại sao Archimedes, bạn chín mọng của một đứa trẻ, bạn chỉ có thể đánh dấu các hàng liên tiếp trên cát, mỗi lần theo dõi số lần lặp bạn đã thực hiện trong vòng lặp!"

Archimedes đã kêu lên với thế giới rằng người bạn tuyệt vời của ông không thể phủ nhận là một ngọn hải đăng thông minh sáng chói khi đưa ra một giải pháp đơn giản như vậy. Nhưng Archimedes nhận xét rằng anh ta thích đi vòng tròn quanh hố cát trong khi suy ngẫm. Do đó, có nguy cơ mất dấu của hàng nào ở trên cùng và hàng dưới cùng.

"Có lẽ tôi nên đánh dấu các hàng này bằng một chữ cái của bảng chữ cái ở bên cạnh để tôi sẽ luôn biết đó là hàng nào! Bạn nghĩ gì về điều đó?" anh hỏi, rồi nói thêm, "Nhưng Eratosthenes ... tôi nên sử dụng chữ cái nào?"

Eratosthenes chắc chắn rằng anh ta không biết bức thư nào là tốt nhất, và đã nói nhiều với Archimedes. Nhưng Archimedes đã không hài lòng và tiếp tục thúc đẩy người thủ thư nghèo chọn, ít nhất, hai chữ cái mà anh ta sẽ yêu cầu cho giải pháp cân bằng hình cầu hiện tại của mình.

Eratosthenes, cuối cùng đã mệt mỏi với yêu cầu không liên tục cho hai lá thư, hét lên, "TÔI CHỈ KHÔNG BIẾT !!!"

Vì vậy, Archimedes đã chọn hai chữ cái đầu tiên trong câu cảm thán của Eratosthenes và cảm ơn bạn mình vì sự đóng góp.


Những biểu tượng này nhanh chóng được các nhà phát triển Java Hy Lạp cổ đại chấp nhận và phần còn lại là ... lịch sử.


6
... và đã có bức thư j.
Andrew Grimm

Ồ, gần như đọc câu chuyện của Rùa và Achilles từ GEB của Hofstadter
ProfK

15

Tôi nghĩ rằng đó là bởi vì rất nhiều vòng lặp sử dụng biến kiểu Int để đếm, như

for (int i = 0; etc

và khi bạn gõ, bạn thực sự nói ra điều đó trong đầu (như khi bạn đọc), vì vậy trong tâm trí của bạn, bạn nói 'int ....'

và khi bạn phải tạo một chữ cái ngay sau 'int ....', bạn nói / gõ 'i' vì đó là chữ cái đầu tiên bạn nghĩ đến khi bạn vừa nói 'int'

giống như bạn đánh vần một từ cho những đứa trẻ bắt đầu học đọc bạn đánh vần các từ cho chúng bằng cách sử dụng tên, như thế này:

WORD đánh vần William W, Ok O, Ruby R, Done D

Vì vậy, bạn nói Int I, Double d, Float f, chuỗi s, vv dựa trên chữ cái đầu tiên.

Và j được sử dụng bởi vì khi bạn đã thực hiện int I, J theo ngay sau nó.


7
icó trước cú pháp này.
SLaks

1
Đó là một cách tuyệt vời để nhầm lẫn giữa những đứa trẻ bạn thực sự dạy bạn đánh vần như vậy?!
Các cuộc đua nhẹ nhàng trong quỹ đạo

14

Tôi nghĩ đó là sự kết hợp của các lý do được đề cập khác:

Đối với người mới bắt đầu, 'i' thường được sử dụng bởi các nhà toán học trong ký hiệu của họ, và trong những ngày đầu của máy tính với các ngôn ngữ không phải là nhị phân (nghĩa là phải được phân tích cú pháp và theo từ ngữ), đại đa số người dùng máy tính là cũng là các nhà toán học (... và các nhà khoa học và kỹ sư), do đó, ký hiệu đã được sử dụng trong các ngôn ngữ máy tính cho các vòng lặp lập trình, và có loại bị mắc kẹt kể từ đó.

Kết hợp điều này với thực tế là không gian màn hình trong những ngày đầu rất hạn chế, cũng như bộ nhớ, việc giữ các tên biến ngắn hơn có ý nghĩa.


13

Có thể lịch sử?

FORTRAN, có thể là ngôn ngữ cấp cao đầu tiên, được định nghĩa i, j, k, l, m là kiểu dữ liệu Integer theo mặc định và các vòng lặp chỉ có thể được điều khiển bởi biến số nguyên, quy ước có tiếp tục không?

ví dụ:

làm 100 i = j, 100,5 .... 100 tiếp tục ....


FWIW, tôi thường bỏ qua chữ l vì nó trông quá giống số 1.
Nosredna

13

i = iterator, i = index, i = số nguyên

Mà bạn từng nghĩ "i" là viết tắt của nó vẫn "phù hợp với hóa đơn".

Ngoài ra, trừ khi bạn chỉ có một dòng mã trong vòng lặp đó, có lẽ bạn nên đặt tên biến lặp / chỉ số / số nguyên cho một cái gì đó có ý nghĩa hơn. Giống như: worker Index

BTW, tôi thường sử dụng "i" trong các vòng lặp đơn giản của mình; trừ khi tất nhiên nó chứa nhiều dòng mã.


13

i = iota, j = jot; cả hai thay đổi nhỏ.

iota là chữ cái nhỏ nhất trong bảng chữ cái Hy Lạp; trong ngôn ngữ tiếng Anh, ý nghĩa của nó được liên kết với những thay đổi nhỏ, như trong "không phải một iota" (từ một cụm từ trong Tân Ước: "cho đến khi trời và đất qua đi, không phải là iota, không phải là dấu chấm, sẽ vượt qua Luật" (Mt 5:18)).

Một bộ đếm đại diện cho một thay đổi nhỏ trong một giá trị.

Và từ iota đến jot (iot), đó cũng là một từ đồng nghĩa cho một thay đổi nhỏ.

xem http://en.wikipedia.org/wiki/Iota


13

Vâng từ Toán học: (đối với các chữ cái Latinh)

a, b: được sử dụng như hằng số hoặc là số nguyên cho số hữu tỷ
c: hằng số
d: đạo hàm
e: Số
E của f, g, h: hàm
i, j, k: là các chỉ số (cũng là vectơ đơn vị và bậc bốn)
l: nói chung không được sử dụng. trông giống như 1
m, n: là các hàng và cột của ma trận hoặc là số nguyên cho các số hữu tỷ
o: cũng không được sử dụng (trừ khi bạn có ký hiệu o nhỏ)
p, q: thường được sử dụng làm số nguyên tố
r: đôi khi là sự thay đổi không gian của biến các lần khác liên quan đến các số nguyên tố
s, t: biến không gian và biến thời gian hoặc s được sử dụng làm thay đổi biến cho t
u, v, w: thay đổi biến
x, y, z: biến


11

Nhiều lý do chính có thể, tôi đoán:

  • Các nhà toán học sử dụng ijcho Số tự nhiên trong các công thức ( ít nhất là số ít sử dụng Số phức ), do đó, điều này được chuyển sang lập trình
  • từ C , igợi ý đến int. Và nếu bạn cần cái khác intthì i2chỉ là quá lâu, vì vậy bạn quyết định sử dụng j.
  • có những ngôn ngữ mà chữ cái đầu tiên quyết định loại, và isau đó là một integer.


7

Nó chắc chắn xuất phát từ toán học, mà trước đó lập trình máy tính.

Vì vậy, nơi đã làm nếu đến từ trong toán học? Dự đoán hoàn toàn vô học của tôi là như một người bạn đã nói, các nhà toán học thích sử dụng các cụm chữ cái cho các thứ tương tự - f, g, h cho các hàm; x, y, z cho các biến số; p, q, r cho các biến logic; u, v, w cho các bộ biến khác, đặc biệt là trong phép tính; a, b, c cho rất nhiều thứ. i, j, k có ích cho các biến lặp, và điều đó làm cạn kiệt các khả năng. Tại sao không m, n? Chà, chúng được sử dụng cho các số nguyên, nhưng thường là điểm cuối của các lần lặp hơn là các biến lặp.

Ai đó nên hỏi một nhà sử học toán học.


6

Bộ đếm rất phổ biến trong các chương trình và trong những ngày đầu của máy tính, mọi thứ đều ở mức cao ...
Các lập trình viên cố gắng bảo tồn pixel một cách tự nhiên và 'i' yêu cầu ít pixel hơn bất kỳ chữ cái nào khác để thể hiện. (Các nhà toán học, lười biếng, đã chọn nó vì lý do tương tự - như glyph nhỏ nhất).
Như đã nói trước đây, 'j' cứ tự nhiên theo sau ...

:)


24
Trong những ngày đầu của máy tính, pixel không tồn tại .
SLaks

1
@Slaks, đó là một bình luận chiến thắng. Chỉ cần nhìn thấy nụ cười trên khuôn mặt của tôi đọc nó, và phiếu bầu. Đẹp!
ProfK

"Các lập trình viên tự nhiên cố gắng bảo tồn pixel và 'i' yêu cầu ít pixel hơn bất kỳ chữ cái nào khác để thể hiện." <<< đó là vui nhộn.
ocodo

1
... và do đó, tối ưu hóa sớm đã ra đời!
Gerrat

4

Tôi sử dụng nó cho một số lý do.

  • Thông thường các vòng lặp của tôi dựa trên int, vì vậy bạn tạo một hình tam giác hoàn chỉnh trên bàn phím gõ "int i" ngoại trừ khoảng trống tôi xử lý bằng ngón tay cái của tôi. Đây là một chuỗi rất nhanh để gõ.

  • "I" có thể là viết tắt của iterator, số nguyên, số tăng hoặc chỉ số, mỗi số có ý nghĩa logic.

Với việc sử dụng cá nhân của tôi được đặt sang một bên, lý thuyết về nó được bắt nguồn từ FORTRAN là chính xác, trong đó các số nguyên sử dụng các chữ cái I - N.


4

Tôi đã học FORTRAN trên Control Data Corp 3100 vào năm 1965. Các biến bắt đầu từ 'I' đến 'N' được ngụ ý là số nguyên. Ví dụ: 'IGGY' và 'NORB' là các số nguyên, 'XMAX' và 'ALPHA' là dấu phẩy động. Tuy nhiên, bạn có thể ghi đè điều này thông qua khai báo rõ ràng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.