C# почему оператор using так назван?
От: dmitry_npi Россия  
Дата: 17.02.23 13:51
Оценка: :)
Задал вопрос на SO, но там на меня почему-то обиделись. Спрошу тут, может, кто знает.

Обычно в языках ключевое слово, которое обозначает импорт какой-то сущности (модуля, класса, пространства имён, и т.п.) является глаголом. То есть инструкцией, командой в повелительном наклонении.

Примеры:

Кто-нибудь знает, почему авторы C# выбрали форму using (кстати, что это — герундий? причастие?)? Наверно, ответ будет "потому что так в С++", тогда вопрос переходит на С++.

P.S.: интересно, есть ли языки, где используется 'used' или даже 'will use'?
Атмосферная музыка — www.aventuel.net
Re: C# почему оператор using так назван?
От: fmiracle  
Дата: 17.02.23 13:59
Оценка: +1
Здравствуйте, dmitry_npi, Вы писали:

_>Задал вопрос на SO, но там на меня почему-то обиделись. Спрошу тут, может, кто знает.

_>Обычно в языках ключевое слово, которое обозначает импорт какой-то сущности (модуля, класса, пространства имён, и т.п.) является глаголом. То есть инструкцией, командой в повелительном наклонении.

"Обычно" инструкция должна быть осмысленной и понимаемой.

using System.Linq ~ "С использованием System.Linq", в чем тут проблема с трактовкой и чем это хуже глагола ("подключи System.Linq") я не понимаю.
Re[2]: C# почему оператор using так назван?
От: dmitry_npi Россия  
Дата: 17.02.23 14:06
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>using System.Linq ~ "С использованием System.Linq", в чем тут проблема с трактовкой и чем это хуже глагола ("подключи System.Linq") я не понимаю.


Тогда почему для единообразия не сделали "returning" (кстати есть нек-рых SQL), "doing", "breaking", "switching" (звучит отлично), "trying", "throwing", а также можно еще "awaiting" и "getting|setting". Чем using лучше?
Атмосферная музыка — www.aventuel.net
Отредактировано 17.02.2023 14:07 dmitry_npi . Предыдущая версия .
Re[3]: C# почему оператор using так назван?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 17.02.23 15:00
Оценка: +1
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте, fmiracle, Вы писали:


F>>using System.Linq ~ "С использованием System.Linq", в чем тут проблема с трактовкой и чем это хуже глагола ("подключи System.Linq") я не понимаю.


_>Тогда почему для единообразия не сделали "returning" (кстати есть нек-рых SQL), "doing", "breaking", "switching" (звучит отлично), "trying", "throwing", а также можно еще "awaiting" и "getting|setting". Чем using лучше?

using отличается тем, что не рулит control flow как try/return/break/switch и т.п. А так же не управляет состоянием как get/set. Для flow кода using namespace даже более прозрачен, чем его тезка using(){}, который сахар для try/finally.
Re: C# почему оператор using так назван?
От: Ночной Смотрящий Россия  
Дата: 17.02.23 15:12
Оценка: +3
Здравствуйте, dmitry_npi, Вы писали:

_>Обычно в языках ключевое слово, которое обозначает импорт какой-то сущности (модуля, класса, пространства имён, и т.п.) является глаголом.

_>То есть инструкцией, командой в повелительном наклонении.

Ну потому что в шарпе решили что это декларация, а не инструкция.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: C# почему оператор using так назван?
От: m2user  
Дата: 17.02.23 15:16
Оценка: 2 (1) +1
_>Кто-нибудь знает, почему авторы C# выбрали форму using (кстати, что это — герундий? причастие?)? Наверно, ответ будет "потому что так в С++", тогда вопрос переходит на С++.

Ключевые слова ЯП не обязаны следовать правилам грамматики человеческих языков.

Что касается именно using, то меня больше беспокоит "перегруженность" этой конструкции:

1) The using statement defines a scope at the end of which an object will be disposed.
2) The using directive creates an alias for a namespace or imports types defined in other namespaces.
2.1) A using_alias_directive introduces an alias for a namespace or type.
2.2) A using_namespace_directive imports the type members of a namespace.
2.3) A using_static_directive imports the nested types and static members of a type.
Re: C# почему оператор using так назван?
От: vaa  
Дата: 18.02.23 03:25
Оценка: 1 (1) +1
Здравствуйте, dmitry_npi, Вы писали:

java rulit

импрот указывает что и откуда импортируется, а юзинг нет. оно просто откуда-то берется и используется.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: C# почему оператор using так назван?
От: Baiker  
Дата: 18.02.23 12:26
Оценка: 10 (2) +1 -2 :)
Здравствуйте, dmitry_npi, Вы писали:

_>Задал вопрос на SO, но там на меня почему-то обиделись.


Сам по себе вопрос интересный, но SO не занимается диалектикой — он создан под сугубо практические, мелкие вопросы. А кто обижается, тот сам так называется

_> import — Java, JavaScript, Python


Импорт — самое лучшее и правильное слово, оно чётко отражает то, что делает строка.

_>Кто-нибудь знает, почему авторы C# ...


Начать с того, что это MS — известные тупицы в плане именований. Редактор "СЛОВО"? Операционка "ОКНА"?! Простите, но вы там, в M$, чота вообще нихрена не шарите в именовании.

_>выбрали форму using (кстати, что это — герундий? причастие?)?


Вероятно, была какая-то негласная цель "шоп совсем уж с Жабы не передирать на 100%". Сделали форму "используя System.IO".

Как это ни ржачно, но ИТ (при всей её техничности) весьма бестолковая область в плане терминов. Примеры:

Assembler. В переводе на русский "сборщик". Но он НИЧЕГО НЕ СОБИРАЕТ, эй!! Он транслирует человеческие команды в машинный код! (создавая объектник)
Linker. Связывальщик. Но связывать имена — это только ЧАСТЬ функций! Фактически, линкер "собирает" (дада, assemble!) множество объектных файлов в один экзешник. Причём если у тебя нет импортированных имён (чисто инструкции процессора), он даже СВЯЗЫВАНИЕ не делает вообще! Так почему линкер-то???
Floppy disk. Почему disk, если дискета — квадратная?? (и хард — тоже)
Monitor — ШТА?! Я вам чё, шпион, МОНИТОРЯЩИЙ обстановку? Я перед экраном не мониторю, я там читаю! Так что либо Display, либо никак.
Mouse. Ну, тут особо сильных претензий нет, хотя я не считаю, что ЖАРГОН(!) должен становиться техническим термином. Это как если бы медики называли каннабиноиды "дурью"! "Поместим 3 грамма дури в раствор шмурдяка" — так штоле?? Мышь — это жаргон. "Координатное устройство ввода" — вот что это! А уж как сократить — ну придумайте термин! Вы ж придумали слово "клавиатура".
Speaker. Чё сразу спикер-то? (говорильник) А если из динамиков слышна музыка, а не речь, тогда это что? Sounder?
Почему программа RUN?? Она никуда не бежит! Она execute, мать вашу! Исполняется.

Назвать исследователь Интернета "Исследователем интернета" — тот ещё идиот сделал! У него и собаку "dog" зовут! И жену "woman" В трэйдмарках есть правило — ты НЕ МОЖЕШЬ использовать слишком общие имена! Ты не можешь зарегать марку машины "car"! Это тупо и вводит всех в заблуждение. Но не наглецов из MS. Internet Explorer? Да шоп вы скисли! ВСЕ БРАУЗЕРЫ — это internet explorer'ы!

Ну вот, как-то так. Дебил на дебиле и дебилом погоняет.
Отредактировано 18.02.2023 12:44 Baiker . Предыдущая версия .
Re[2]: C# почему оператор using так назван?
От: Baiker  
Дата: 18.02.23 12:42
Оценка: -1
Здравствуйте, m2user, Вы писали:

M>Что касается именно using, то меня больше беспокоит "перегруженность" этой конструкции:


+1. Но это же M$! Один идиот делает, а потом 10 других оправдывают "так исторически сложилось". Не понимаю, они что, думают, что если переиспользовать каждое слово по 5 раз, то язык МЕНЬШЕ станет что ли?!!?!? Дебилы, б***!
Это Си — краткий. 20 ключевых слов, да и те половина не используются. C# — он БОЛЬШОЙ, поэтому дебильная "экономия на словах" оборачивается полным непониманием контекста.

Аналогично издеваются в D над словом enum:
enum A = 3;
enum B
{
    A = A // error, circular reference
}

Re[2]: C# почему оператор using так назван?
От: Baiker  
Дата: 18.02.23 12:49
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, dmitry_npi, Вы писали:


_>>Обычно в языках ключевое слово, которое обозначает импорт какой-то сущности (модуля, класса, пространства имён, и т.п.) является глаголом.

_>>То есть инструкцией, командой в повелительном наклонении.

НС>Ну потому что в шарпе решили что это декларация, а не инструкция.


И что там "декларируется"?? Это ИНСТРУКЦИЯ! "Импортируй имена из данного нэймспейса".
Re[3]: C# почему оператор using так назван?
От: Ночной Смотрящий Россия  
Дата: 18.02.23 18:39
Оценка: +1 -1
Здравствуйте, Baiker, Вы писали:

НС>>Ну потому что в шарпе решили что это декларация, а не инструкция.

B>И что там "декларируется"?? Это ИНСТРУКЦИЯ! "Импортируй имена из данного нэймспейса".

Кому инструкция? Вот упомянутый return — инструкция процессору.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: C# почему оператор using так назван?
От: Ночной Смотрящий Россия  
Дата: 18.02.23 18:39
Оценка:
Здравствуйте, m2user, Вы писали:

M>Что касается именно using, то меня больше беспокоит "перегруженность" этой конструкции:

M>1) The using statement defines a scope at the end of which an object will be disposed.

Стейтмент никак с директивой не пересекается, у них абсолютно разные скоупы.

M>2) The using directive creates an alias for a namespace or imports types defined in other namespaces.

M>2.1) A using_alias_directive introduces an alias for a namespace or type.
M>2.2) A using_namespace_directive imports the type members of a namespace.
M>2.3) A using_static_directive imports the nested types and static members of a type.

И что тут тебя смущает? Одно и то же в различных формах логично чтобы одинаково писалось.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: C# почему оператор using так назван?
От: 4058  
Дата: 19.02.23 07:37
Оценка:
Здравствуйте, Baiker, Вы писали:

B>Как это ни ржачно, но ИТ (при всей её техничности) весьма бестолковая область в плане терминов. Примеры:


Эта область во многом была сформирована энтузиастами, следовательно, жаргон переползал в устоявшиеся термины, в физике тоже подобного хватает.

B>Assembler.


Название хорошо отражается на 3-4-х буквенные сокращения (ASM), что тогда было крайне популярно.

B>В переводе на русский "сборщик".


Точного перевода нет.

B>Но он НИЧЕГО НЕ СОБИРАЕТ, эй!! Он транслирует человеческие команды в машинный код! (создавая объектник)


Он транслирует мнемокод (процессора) в машкод. Но допустим название не подходящее, какие будут предложения?

B>Linker. Связывальщик. Но связывать имена — это только ЧАСТЬ функций! Фактически, линкер "собирает" (дада, assemble!) множество объектных файлов в один экзешник. Причём если у тебя нет импортированных имён (чисто инструкции процессора), он даже СВЯЗЫВАНИЕ не делает вообще! Так почему линкер-то???


Потому что это Компоновщик. Но да, Assembler бы тоже подошёл, но уже был занят.

B>Floppy disk. Почему disk, если дискета — квадратная?? (и хард — тоже)


Поскольку Floppy (болтающийся) не смущает, непонятно почему смущает диск. В дискетах он мягкий, в жёстком соответственно набор жёстких.

B>Monitor — ШТА?! Я вам чё, шпион, МОНИТОРЯЩИЙ обстановку? Я перед экраном не мониторю, я там читаю! Так что либо Display, либо никак.


История:

Ранние электронные компьютеры были оснащены панелью лампочек, где состояние каждой определённой лампочки указывало на состояние включения / выключения определенного регистрационного бита внутри компьютера. Это позволило инженерам, управляющим компьютером, контролировать (to monitor — выполнять мониторинг, мониторить) внутреннее состояние машины, поэтому эта панель индикаторов стала известна как «монитор».


B>Мышь — это жаргон. "Координатное устройство ввода" — вот что это!


Световое перо тоже подходит под этот термин.

B>Speaker. Чё сразу спикер-то? (говорильник) А если из динамиков слышна музыка, а не речь, тогда это что? Sounder?


Вот тут согласен, но именно для PC Speaker, больше бы подошло Squeaker, во первых созвучно, во вторых — вполне точно отражает звук который будет производить.

B>Почему программа RUN?? Она никуда не бежит!


Еще как бежит, например i8080 (~2 Мгц) выпущенный в 74-м году в среднем выдавал 500.000 операций в секунду, поэтому Crawl точно не подходил, и вообще больше 4-х символов.
Re[3]: C# почему оператор using так назван?
От: Xander Zerge Россия www.zerge.com
Дата: 19.02.23 09:18
Оценка: +2 -1
Здравствуйте, Baiker, Вы писали:

B>И что там "декларируется"?? Это ИНСТРУКЦИЯ! "Импортируй имена из данного нэймспейса".

Ничего там не импортируется. Это всего лишь декларация того, какие пространства имён в данном куске кода используются неявно.
Ты можешь писать System.DateTime и без using System. Код будет одинаковый в обоих случаях, т.е. сама по себе using не генерирует код.
Серёжа Новиков,
программист
Re[2]: C# почему оператор using так назван?
От: Xander Zerge Россия www.zerge.com
Дата: 19.02.23 09:54
Оценка: -1
Здравствуйте, Baiker, Вы писали:

B>Assembler. В переводе на русский "сборщик". Но он НИЧЕГО НЕ СОБИРАЕТ, эй!! Он транслирует человеческие команды в машинный код! (создавая объектник)

Нет. Ассемблер по инструкциям на языке ассемблера собирает машинный код.
Человеческие команды с языка программирования на язык ассемблера переводит транслятор (переводчик) или интерпретатор (синхронный переводчик),
их принято называть компиляторами, т.к. инструкции на выскоуровневом языке представляются, как правило, целым набором команд на языке ассемблера, и происходит не просто перевод с одной команды на другую, а именно что компиляция программы на языке ассемблера из таких наборов.

B>Linker. Связывальщик. Но связывать имена — это только ЧАСТЬ функций! Фактически, линкер "собирает" (дада, assemble!) множество объектных файлов в один экзешник. Причём если у тебя нет импортированных имён (чисто инструкции процессора), он даже СВЯЗЫВАНИЕ не делает вообще! Так почему линкер-то???

Да, он именно что увязывает куски машинного кода, проставляя адреса вызовов из одного объектника в другой, и формирует файл, понятный как исполняемый операционной системе. Даже если в частном случае имеется единственный кусок кода.

B>Floppy disk. Почему disk, если дискета — квадратная?? (и хард — тоже)

Это конверт квадратный. И корпус харда. А дискета круглая. И блины харда круглые.

B>Monitor — ШТА?! Я вам чё, шпион, МОНИТОРЯЩИЙ обстановку? Я перед экраном не мониторю, я там читаю! Так что либо Display, либо никак.

Изначально так называли панель лампочек, позволяющую мониторить состояние электронного устройства. Потом лампочки заменили дисплеями — ЭЛТ, ЖК, плазменными, но суть монитора осталась.

B>Mouse. Ну, тут особо сильных претензий нет, хотя я не считаю, что ЖАРГОН(!) должен становиться техническим термином. Это как если бы медики называли каннабиноиды "дурью"! "Поместим 3 грамма дури в раствор шмурдяка" — так штоле??

Ну ты просто не в теме медицинских жаргонизмов. Вот, ознакомься: https://pikabu.ru/story/mediki_amp_vrachi_zhargonizmyi_dlya_neposvyashchennyikh_tozhe_poydet_1278920

B>Мышь — это жаргон. "Координатное устройство ввода" — вот что это! А уж как сократить — ну придумайте термин! Вы ж придумали слово "клавиатура".

То есть, keyboard у тебя не вызывает вопросов?
  Скрытый текст


B>Speaker. Чё сразу спикер-то? (говорильник) А если из динамиков слышна музыка, а не речь, тогда это что? Sounder?

Это не компьютерное, а на заре развития передачи звука по проводам качество позволяло разве что разговаривать, о музыке и речи не было.

B>Почему программа RUN?? Она никуда не бежит! Она execute, мать вашу! Исполняется.

Есть другое значение "прогон". А для "execute" тоже можно предъявить другое значение.

B>Назвать исследователь Интернета "Исследователем интернета" — тот ещё идиот сделал! У него и собаку "dog" зовут! И жену "woman" В трэйдмарках есть правило — ты НЕ МОЖЕШЬ использовать слишком общие имена! Ты не можешь зарегать марку машины "car"! Это тупо и вводит всех в заблуждение. Но не наглецов из MS. Internet Explorer? Да шоп вы скисли! ВСЕ БРАУЗЕРЫ — это internet explorer'ы!

Сначала был Navigator. Понятно, что МС тут своим названием Netscape подкололи по обоим пунктам. Навигатор — по картам (известных мест), исследователь — по неизвестным местам. Нетскейп — не весь интернет.

B>Ну вот, как-то так. Дебил на дебиле и дебилом погоняет.

Ну-ну.
Серёжа Новиков,
программист
Re[2]: C# почему оператор using так назван?
От: karbofos42 Россия  
Дата: 19.02.23 10:09
Оценка:
Здравствуйте, Baiker, Вы писали:

B>Floppy disk. Почему disk, если дискета — квадратная?? (и хард — тоже)


Попробуй разобрать и посмотреть не на корпус, а на сам носитель информации.
Или DVD у тебя тоже квадратный, т.к. лежит в квадратной коробке/конверте?
Re[2]: C# почему оператор using так назван?
От: Ночной Смотрящий Россия  
Дата: 19.02.23 10:20
Оценка: -1
Здравствуйте, Baiker, Вы писали:

B>Assembler. В переводе на русский "сборщик". Но он НИЧЕГО НЕ СОБИРАЕТ, эй!! Он транслирует человеческие команды в машинный код! (создавая объектник)


Сложно поинтересоваться происхождением термина?

The term "assembler" is generally attributed to Wilkes, Wheeler and Gill in their 1951 book The Preparation of Programs for an Electronic Digital Computer, who, however, used the term to mean "a program that assembles another program consisting of several sections into a single program". The conversion process is referred to as assembly, as in assembling the source code. The computational step when an assembler is processing a program is called assembly time.


B>Linker. Связывальщик. Но связывать имена — это только ЧАСТЬ функций! Фактически, линкер "собирает"


Или связывает объектники в один загружаемый файл.

B>Так почему линкер-то???


Потому что assembler бфл уже занят. Линкеры как отдельный тул, если ты не в курсе, появился позже ассемблеров.

B>Floppy disk. Почему disk, если дискета — квадратная?? (и хард — тоже)


Пробовал конверт дискеты открывать или крышку диска снимать? И ты опять забываешь что термин не год назад придумали. Ранние жесткие диски выглядели так:


Понятно почему диск?

B>Monitor — ШТА?! Я вам чё, шпион, МОНИТОРЯЩИЙ обстановку? Я перед экраном не мониторю, я там читаю! Так что либо Display, либо никак.


И опять ты забыл что термин появился не сейчас

Early electronic computer front panels were fitted with an array of light bulbs where the state of each particular bulb would indicate the on/off state of a particular register bit inside the computer. This allowed the engineers operating the computer to monitor the internal state of the machine, so this panel of lights came to be known as the 'monitor'.


B>Mouse. Ну, тут особо сильных претензий нет, хотя я не считаю, что ЖАРГОН(!) должен становиться техническим термином.


А как надо?

B> Это как если бы медики называли каннабиноиды "дурью"!


Ну зачени такие термины как древо жизни, венерина гора, палатка мозжечка, срамные артерии, жестокая мать, волнеующий нерв, жуварская бутоньерка, двойная плодовая косточка, луковичная олива, адамово яблоко, собачья мышца, аммонов рог, шпора Морана, морда линя, гусиная лапа, сорока-мать, заячья губа, рожа и т.п.

B>Speaker. Чё сразу спикер-то?


Сам динамик так назывался, еще до компьютеров.

B>Почему программа RUN?? Она никуда не бежит!


IP бежит по адресам.

B>Ну вот, как-то так. Дебил на дебиле и дебилом погоняет.


Вот тут ты в точку.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: C# почему оператор using так назван?
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 19.02.23 15:35
Оценка: 1 (1)
Скорее всего это герундий причастие, смысл используя А.Б.Ц имеем, а не используя не имеем. и это логично ложится на то что это делает, именно потому, что

var i = new Instance();

по большому счету именно и зависит от того, что мы используем в юзингах. Например, был казус в .NET Core 3 а может и сейчас, где то с EF при использовании не того юзинга (которыей еще и интеллисенсом предлгался первым) все компилилось но в райнтайме кидало исключение, кто работал большинство знает, думаю.

Именно поэтому же returning не имеет смысла в императивном коде, возможно в декларативном для описания типа возврата, но для этого есть более нативные способы.
Отредактировано 19.02.2023 15:41 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒ . Предыдущая версия .
Re: C# почему оператор using так назван?
От: Silver_S Ниоткуда  
Дата: 09.03.23 12:09
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Обычно в языках ключевое слово, которое обозначает импорт какой-то сущности (модуля, класса, пространства имён, и т.п.) является глаголом. То есть инструкцией, командой в повелительном наклонении.

_>Кто-нибудь знает, почему авторы C# выбрали форму using (кстати, что это — герундий? причастие?)?

Причастия нужны, чтобы побочное действие свести по статусу до прилагательного, чтобы не перепутать с главным действием.
Если смущает, что заставляют неграмотно писать. Можешь "using System;" так раскрыть:
This file is doing something using System as the default namespace.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.