Недавно аналогичный вопрос был размещен на сайте Programmers.SE
В поисках окончательного ответа из первичного или вторичного источника, почему (в частности) Java и C # решили использовать статический метод в качестве своей точки входа, а не представлять экземпляр приложения экземпляром класса
Application
с записью точка является подходящим конструктором?
TL; DR часть принятого ответа:
В Java Причина
public static void main(String[] args)
заключается в том, что
- Гослинг хотел
- код, написанный кем-то, имеющим опыт работы в C (не на Java)
- для исполняться кем-то, кто привык запускать PostScript в NeWS
& nbsp;
Для C # аргументация транзитивно аналогична , так сказать. Разработчики языка сохранили синтаксис точки входа в программу , знакомый программистам, пришедшим с Java. Как говорит архитектор C # Андерс Хейлсберг ,... наш подход с C # просто предлагал альтернативу ... программистам на Java ...
...
Это противоречит концепции минимального раскрытия информации. Прямо сейчас, если проверяющая сторона OpenID хочет получить ваш адрес электронной почты, она запрашивает его, и провайдер идентификации предупреждает вас об этом и просит подтвердить его. Использование адреса электронной почты означает, что все идет, нравится вам это или нет, если вы не используете OpenID 2.0, который может генерировать уникальные значения для каждой проверяющей стороны.
Это также было бы большим изменением для всех библиотек OpenID - URL-адреса их можно обнаружить, вы знаете, куда идти с ними, а адреса электронной почты - нет, поэтому было возмущение в отношении того, что Google в одностороннем порядке сделал это и эффективно разветвил стандарт OpenID под себя.
Другая проблема заключается в фишинге. OpenID очень уязвим для этого, поскольку пользователи доверяют доверяющей стороне перенаправить их к своему провайдеру после обнаружения его через предоставленный OpenID, поэтому «озорная» полагающаяся сторона может перенаправить на фишинговый сайт, который сохраняет OpenID и пароль. В Google OpenID и пароль - это ваша учетная запись Gmail и пароль, поэтому вы не только потеряли контроль над своим OpenID, но и своей учетной записью электронной почты. Конечно, это может быть защищено провайдером - у вас могут быть отдельные пароли электронной почты и пароли OpenID, у вас может быть секретное сообщение для каждого пользователя, которое вы показываете на странице входа OpenID, но, как мы хорошо знаем, пользователи тупой . Они не проверяют URL-адреса в браузере, они слепо нажимают ОК в диалоговых окнах, они просто не думают, что веб-страница может быть подделкой. Используя адрес электронной почты и один и тот же пароль, Google подвергает большинство своих пользователей неприемлемому риску.
Одна из опасностей использования адреса электронной почты заключается в том, что его можно угадать. Или, скорее, об этом узнает тот, кто хочет взломать вашу учетную запись.
Сравните это с текущей ситуацией, когда ваше имя пользователя и ваш провайдер OpenID могут быть чем угодно. Может быть, это предположительно, а может, и нет. В противном случае будет немного сложнее взломать вашу учетную запись.
У некоторых людей, похоже, есть проблемы с этим. Посмотрите, это довольно просто. Я не сказал, что неочевидное имя пользователя само по себе является достаточной защитой. Отнюдь не. Безопасность через неясность - это вовсе не безопасность.
Однако это чистый здравый смысл, что из:
что (1) в худшем случае одинаково безопасен для (2), а в лучшем случае более безопасен.
Более того, если ваш адрес электронной почты является вашим паролем, то, если вы скомпрометируете чей-то адрес электронной почты, вы потенциально скомпрометируете каждую систему, которая использует его в качестве имени пользователя, легче будет скомпрометировано как на основании «Забыли пароль?» ссылки и тот факт, что пароль, использованный в одном месте, с большей вероятностью будет использоваться в другом.
Извините, но это просто здравый смысл.