Почему в методе main() аргумент массива строк традиционно называется “args”?

266
13 августа 2021, 06:20

Почему в методе main в языке C в роле аргументов принимаются argc и argv, а в Java - args? Как расшифровывается эта короткая форма или почему она именно такая?

Answer 1

В C аргументы назывались argc и argv как сокращения от: argument count и argument vector. Да да, именно vector. Вас может это удивить, потому что векторы в C еще не существовали, когда C придумывался, однако этому есть объяснение. Все дело в том, что когда K&R придумывали C были уже другие языки, такие известные, как Algol 68, так вот там уже использовали термин vector:

bits - a "packed vector" of bool. bytes - a "packed vector" of char.

Потому что раньше одномерный массив и вектор у математиков были синонимами, а программисты тогда были в основном математиками. Поэтому суффикс v прижился как vector в именах переменных. K&R просто сделали так, потому что это уже было в других языках.

Оригинальный ответ

Теперь вернемся к Java. Мы знаем, что когда создавалась Java, то на рынке программистов большинство знало C/C++, поэтому чтобы сделать переход к Java тех программистов, которые уже писали на C, более легким, в Java изначально было сделано много языковых конструкций, которые были похожи на C. Много соглашений о коде были похожи на C. Как мне кажется, это в той или иной мере коснулось и имени параметра args. Поскольку argc для Java уже не имел смысла, так как размер массива в Java хранится в объекте массива, то достаточно было одного аргумента. Однако argv [в C] в себе на первом месте хранит название программы, а в Java args в себе на первом месте хранит первый аргумент, то есть если бы использовали argv - это могло бы запутать начинающих Java программистов. Поэтому, как мне кажется, args больше всего подходило, так как это:

  • не agrv, структура хранения параметров немного иная
  • короткое название для аргументов (arguments), прямо как в старом добром C/C++
READ ALSO
Как правильно сопоставить на одну таблицу сущность разделенную на несколько классов

Как правильно сопоставить на одну таблицу сущность разделенную на несколько классов

Есть таблица на 30 и более полейЯ хочу разделить данную таблицу на несколько классов и в каждом классе по 5 полей, чтобы удобней было работать

187
отправка audio на сервер (java android, volley)

отправка audio на сервер (java android, volley)

Я Java изучаю только месяц и никак не могу понять, как правильно отправить audio, файл кодируется в base64 не верно и файл на сервере не открываетсяКак...

181
Как правильно работать с триггером таблицы базы Oracle при использовании Spring Data

Как правильно работать с триггером таблицы базы Oracle при использовании Spring Data

Для автоматической генерации id записи в базу oracle, используется встроенный триггер, ранее использовалась последовательность

178