Цитата:
Язык C++ разработал датчанин. Дания — монархия с развитым институтом частной собственности.
Поэтому в C++ по умолчанию все поля и методы объекта имеют частный доступ, а публичный доступ надо оговаривать отдельно. Поскольку всё, что не разрешено, — запрещено.
Разработчики сами не раз напрямую говорят о том, что вам нужно найти обоснование, чтобы сделать что-то внутри объекта публичным — а то мало ли.
Несмотря на всё это, при неосторожности тот, кто написал код объекта, может порушить всю внешнюю среду, даже не взаимодействуя с какими-то другими объектами. К счастью, всем остальным про это будет довольно тяжело узнать, — это частный бизнес объекта и его разработчика всё-таки.
Язык Scala разработал швейцарец. Швейцария — конфедеративная республика с сильно развитой на всех уровнях прямой демократией. При этом права низовых групп людей весьма обширны и даже частный бизнес очень на многое вынужден напрямую спрашивать разрешение у местных жителей.
Поэтому в Scala по умолчанию поля и методы объекта имеют публичный доступ, а частный надо оговаривать отдельно. Поскольку всё, что не запрещено, — разрешено.
Разработчики сами не раз напрямую говорят, что вам нужно найти обоснование, чтобы сделать что-то внутри объекта частным, поскольку если его правда можно сломать, предоставив наружу что-то из его содержимого, то вы скорее всего что-то делаете не так, и это, вообще говоря, опасно.
И действительно, если все вокруг понимают основную идею подхода и ей добровольно следуют, то, оказывается, что-то незаметно или заметно сломать довольно проблематично. Однако в это время во все стороны торчит куча зацепок для того, чтобы при нарушении идеи и непонимании подхода разломалось всё вообще. Несмотря на это, оно отлично работает и привлекает к себе всё больше внимания со стороны программистов на других языках.
Язык Java разработали американцы. Поэтому способ доступа к полям и методам объекта по умолчанию прописан в мануалах и вы, как гражданин, имеете полное право их прочитать, однако без специалистов всё равно мало кто поймёт, как эта штука вообще устроена. Видимо, исторически оно имело какой-то смысл, но этот частный случай давно не повторялся, а потому канул в Лету. Но раз тогда случилось, значит, и сейчас так надо — ничего что никто не понимает, кому это запрещено, а кому разрешено, зачем оно так, и где это предполагается применять. В результате, хотя оно записано в мануалах, его почти никто не использует, что, впрочем, не мешает при случае апеллировать к самому принципу и к мануалам, его описывающим. Поэтому на всякий случай все всегда самостоятельно напрямую указывают права доступа — мало ли что.
Незаметно что-то сломать у кого-то другого при этом ощутимо тяжелее, чем в С++, однако всё ещё довольно легко — у твоего официального партнёра по взаимодействию, ведь если объект куда-то случайно передать даже с самыми добрыми намерениями, то довольно быстро обнаружится, что получивший этот объект может сделать с ним чего захочет — вплоть до того, что объявить его своим и соответствующим образом им распоряжаться. А потому желательно, чтобы все следовали инструкции. Впрочем, понимать её не обязательно — главное выполнять.
Вдобавок, к инструкциям раз в несколько лет выходят апдейты, следить за которыми ни у кого не хватит времени. Благо, с самого начала предполагалось, что консультации по их поводу будут давать платные специалисты. Нет, вы, конечно, имеете право разобраться сами забесплатно — что ж, попробуйте этот бесплатный сыр: у некоторых ведь даже получается. Но мы вас предупредили.
Многие при этом говорят, что эта ваша хвалёная Scala работает только потому, что в мире есть Java, а без неё бы ничего не получилось. Они при этом тактически умалчивают, что сама Java была результатом исправления некоторых монархических пережитков C++, другую часть коих она успешно сохранила, про что все знают, хотя и предпочитают молчать. Однако тем, кто пишет на Scala, всё равно обидно, в результате чего они, с одной стороны, заявляют, что основная масса их идей взята из других источников, а с этим конкретным просто всё так совпало, и, с другой стороны, каждый год порываются что-то такое сделать, чтобы и без Java оно тоже работало, причём даже ещё лучше. Что интересно, им это даже временами удаётся, но остальных это всё равно не убеждает.
https://lex-kravetski.livejournal.com/6 ... s#comments