Мне в последнее время приходится собеседовать студентов старших курсов, которые хотят идти к нам на стажировку. В процессе собеседования я пишу такой код: [code]Animal cat = new Animal();[/code] И спрашиваю: сколько здесь объектов и как они называются? Мне отвечают "один объект, называется cat". Тогда я пишу такой код: [code]Animal cat; cat = new Animal(); cat = new Animal();[/code] И задаю тот же вопрос. На этом месте все начинают нести ахинею разной степени тяжести, и на мои глаза наворачиваются слезы. Из примерно сорока человек только три ответили правильно на первый вопрос или просекли фишку после второго и скорректировали ответ. Это нормально? Может, студентам не стоит задавать такие вопросы? Может я как-то неправильно его формулирую? Диванные синьоры, скажите, вам очевиден ответ на этот вопрос? Я прямо в печали.
>>470285 >сколько здесь объектов и как они называются Уточни, что считать «объектом», переменную с указателем или занятое место в хипе (раз у тебя там оператор «new», то будем считать, что данные располагаются в хипе). А лучше выпий йаду.
>>470285 Может ты просто долбоеб и просто мучаешь студентиков, что бы злой дяда тебя не согнал с места? На самом деле во втором случае две переменные которым присваивают объект анимал два раза. Что там сложного - хуй знает. Ты явно пиздишь и не даешь проходу молодым, старикан.
>>470301 >>470307 Половину этих студентов я все равно беру. Просто с теми, кто на этот вопрос не ответил, иногда случается такая история: Animal cat = new Animal() Animal current = cat; delete cat; cat->printName(); ОЙ, А ПОЧЕМУ У МЕНЯ ОШИБКА, Я ЖЕ ТОЛЬКО КАРРЕНТ УДАЛИЛ, А КЭТ У МЕНЯ ОСТАЛСЯ!
>>470314 блядь, ну и дебил. Ты в РПЦ не пробовал апплаиться? >Formally, "instance" is synonymous with "object" as they are each a particular value (realization), and these may be called an instance object; "instance" emphasizes the distinct identity of the object.
>>470307 Объект и инстанс это одно и тоже. ОП такой хитрый еблан, который пытается понять, осознает ли студент разницу между объектом и указателем на объект. В частности, что у объекта не может быть названия, и что на один объект может указывать несколько указателей, а один и тот же указатель может в разное время указывать на разные объекты. Практика показывает, что для многих это становится откровением.
>>470315 >>470301 >>470307 Буду лучше писать со своими поносными звездочками, чтобы у всех работало, даже у таких днищ как я.
Половину этих студентов я все равно беру. Просто с теми, кто на этот вопрос не ответил, иногда случается такая история: Animal✱ cat = new Animal() Animal✱ current = cat; delete cat; cat->printName(); ОЙ, А ПОЧЕМУ У МЕНЯ ОШИБКА, Я ЖЕ ТОЛЬКО КАРРЕНТ УДАЛИЛ, А КЭТ У МЕНЯ ОСТАЛСЯ!
>>470324 да иди ты нахуй. Ты бы еще пример привел с [код блядь] new Animal(); new Animal(); new Animal() [код нахуй] НА ВОПРОС ОТВЕЧАЕТ ОП-ДЕБИЛ!!! СКОЛЬКО ОБЪЕКТОВ?
>>470320 >После каких вузов такие студенты появляются? После любых, включая самый распальцованный. Я не знаю, может студенты волнуются, может они не понимают смысл вопроса, может они ищут больше подвоха, чем там есть. Но скорее всего они просто еблотрясы.
>>470330 Потому что иногда требуется использовать заранее неизвестное количество объектов, и размещать их в динамической памяти. Естественно пример утрированный. Нет, блять, мы пишем продакшен-код про экземпляры котиков.А я бы хотел
>>470344 >Потому что иногда требуется использовать заранее неизвестное количество объектов, и размещать их в динамической памяти Давай теперь пример, где нельзя обойтись без прямого управления памятью.
>>470349 На ВМК нужно срочно идти работать максимум на третьем курсе. Причем желательно в норм контору, где будут хорошие практики и рыночный подход. Иначе деградация и распад. На факультете программированию хотя бы немного учат от силы человек 10.
>>470342 Я бы сказал "один объект, и на него указывает указатель, который называется cat". Потому что сам объект находится в динамической памяти и не называется никак. Я следующей строкой напишу cat = NULL, и что, у меня объект удалится? Наверное да, ведь у меня объект называется cat и я пишу cat = NULL, хуле.
>>470342 Проблема не в первом ответе, а во втором. Придираться к первому ответу - это буквоедство, терминология и хуже червя пидора. Но когда тебе на второй вопрос отвечают не "а, ну да, объекты же никак не называются, кэт это указатель, он сначала на один указывает, потом на другой," а начинают крутить губу и говорить "нууу эээ они оба называются кэт, наверное, только я не совсем понимаю, наверное тут все-таки один объект," хочется просто уебать через стол.
ОП, не переживай, я однажды вел факультатив по программированию у шестиклассников, и они очень долго думали, что если написать int a = 5; a = 10;, то а будет равно одновременно и пяти, и десяти. Причем я не сразу допер, что они так считают, и сам долго не мог понять, откуда у них проблемы.
>>470353 > Я бы сказал "один объект, и на него указывает указатель, который называется cat". Потому что сам объект находится в динамической памяти и не называется никак Это особенность плюсов, же. В некоторых других языках есть только указатели на объекты, получается в них у объектов (инстансов) вообще имен нет и быть не может? Алсо уже есть такое понятие как "анонимный объект (инстанс)" и твое толкование с ним раходится.
>>470367 В плюсах есть термин "объект", который придумал не я, и есть термин "указатель", который тоже придумал не я. И я думаю, что с моей стороны требовать уметь различать эти две сущности - не слишком много для будущего программиста, если он не собирается делать карьеру пхп-макаки.
>>470372 > требовать уметь различать эти две сущности Ну так постарайся придумать задание которое будет проверять именно этот момент, например что-то с контейнерами в которых можно хранить указатели, а можно объекты. Нормальному программисту, когда он услышит слова "объект без имени" или "анонимный объект" прийдут в голову конструкции вроде foo.bar(new baz()); (new foo()).bar(); а твое заявление что в строке Foo *foo = new Foo(); ты создаешь объект без имени вызовет только недоумение.
>>470285 Хуево вопрос строишь: спрашивай где сколько объектов. Хули тут не ясно: один объект на указателе, второй объект проебан. Но как понять проебанность объекта? Как его наличие или как его отсутствие? Воспользоваться-то ты уже им вряд ли сможешь без специальных изъебов.
>>470285 ОП, у меня от тебя бобмит. Правильный ответ: научись сначала формулировать вопросы, кретин. >здесь Пиздесь. >называются define "называются" >объектов define "объект" "А лучше пройдите нахуй, если в вашей компании все такие мудаки, то мне тут делать не хуй, до свиданья." Почему нельзя просто у человека спросить как работает присваивание в случае ссылок, т.е. будут ли только ссылки копироваться или и значения тоже?
>>470331 Внезапно двачую. Второй год провожу собеседования и предпочитаю брать домашних самоучек без вышки, чем дегенератов, которые купили диплом, но не могут ответить на элементарный вопрос.
>>470285 >вам очевиден ответ на этот вопрос? Да. Ты некорректно формулируешь вопрос. На некорректный вопрос ты получаешь некорректные ответы, что логично, тащемто. Далее, исходя из каких-то дополнительных соображений, ты считаешь какие-то из этих ответов более коррекными. И из того, что твой манямирок дополнительных соображений совпадает с меньшем количеством додумок соискателей следует только то, что ты аутист, т.к. большинство людей интерпретируют твои неявные соображения иначе.
>>470285 Понятия не имею, что ты подразумеваешь под словом «объект», поэтому я бы растерялся и промямлил себе что-то под нос. То, что ты назвал объектом, чаще называют экземпляром класса, а еще чаще “instance”. По крайней мере, мне так кажется. В русскоязычную терминологию я почти не умею, документацию и книги на русском не читаю. У меня вот есть парочка знакомых преподавателей, которые всё называют либо КОМАНДОЙ, либо ОПЕРАТОРОМ. В чем-то они могут быть и правы, но в целом это глупость.
Надо сказать, после второго образца кода я бы уже понял, что ты имеешь в виду.
>>470285 Очевидно, что во втором случае остаётся только один объект, потому что первый после инициализации второго уничтожен властью Garbage Collector. Ебтвоюмать, возьми меня на работу!
>>470285 >сколько здесь объектов и как они называются? Не ясно, что ты здесь хочешь. Называется что, блядь? Переменная? Название класса? Адрес объекта в памяти?
>>470456 На некорректно сформулированный вопрос я ожидаю ответа "ваш вопрос некорректно сформулирован". Если человек на некорректно сформулированный вопрос пытается дать ответ, то он еблан.
>>470472 С недавних пор спрашиваю, что такое синус и как работает матрица поворота. А то взяли петушка вроде выглядел норм, а через неделю выяснилось, что он не знает, как полярные координаты в декартовы перевести.
>>470517 >А то взяли >через неделю выяснилось, что он не знает Так-так-так. Что это тут у нас? Долбоёб проебал деньги фирмы, т.к. не смог явно обозначить требования к соискателю?
>>470518 В-нулевых, ты хуй. Во-первых, внимательный читатель помнит, что речь идет о стажировке. Во-вторых, проеб денег будет как раз если собеседование проводить не час на знание общих вещей и пригодность к стажировке, а ебашить четыре часа с вопросами по арифметике, географии, английскому, физике и всему прочему.
>>470519 Наверное не врубились, что программа исполняется последовательно строчка за строчкой. сейчас набигут дегенераты с прологом и скажут, что ничего не выполняется последовательно и я хуй
>>470517 >спрашиваю, что такое синус и как работает матрица поворота Я бы сначала подохуел, а потом поржал с таких вопросов. Походу даже я с непрофильным образованием смог бы заползти в вашу контору.
>>470353 Проблема твоя и опа (хоть мне и кажется, что ты и есть оп), в додумывании за людей того, что они не говорили и не имели в виду. Попробуй книжки писать, у тебя должно получиться, с такой-то фантазией. >>470519 Наверное, слишком привыкли к программированию на квантовых компьютерах.
>>470515 Я же не долбоеб какой-нибудь, ты преувеличиваешь. Я упомянул тот же «экземпляр класса», который является наикорректнейшим обозначением того, что имел в виду ОП.
>>470285 А вопрос-то с подвохом! В крестах нет объектов, как и самого ООП. Есть только куски памяти и указатели на них. Бедных студентов вводят в заблуждение, а тебе приходится разгребать.
>>470514 >На некорректно сформулированный вопрос я ожидаю ответа "ваш вопрос некорректно сформулирован". Ты ожидаешь наименее вероятный ответ. Скажем так, студент никогда ничего не сдавал, кроме экзаменов, для него собеседование - тот же экзамен, а на экзамене вопросы всегда сформулированы корректно. Поэтому он пытается на него ответить, и естественно несёт хуйню. Какой-нибудь опытный аналитик попытался бы выяснить, что именно ты имеешь ввиду. А "ваш вопрос некорректно сформулирован" может ответить только какой-нибудь робот из советского мультфильма. Я тебе уже говорил, что ты аутист?
>>470519 Потому что их еще не выебли в рот и в жопу императивной парашей и еще они наивно полагают, что учитель не долбоёб. Хотя на самом деле учитель - долбоёб и пишет не имеющую смысла хуйню: https://ideone.com/59tv8L
>>470285 Если рассматривать с точки зрения обычного ооп, то в первом случае - объект один и ссылка одна, во втором - одна ссылка на второй объект, а первый либо грустит в куче, либо уже был выпилен сборщикомесли оный имеется за ненадобностью. Скорее всего второе, однако ситуация все равно не определенная. А в крестах, небось, без явного вызова деструктора первый объект кукует в куче один одиношенек и таким образом их два. Или нет?
>>470329 В памяти - три, доступных в программе на языке третьего поколения - ноль. А вообще, количество объектов лежит в зависимости от настроек сборщика мусора. В джаве сборщик мусора можно надрессировать так, чтоб он часто сканировал память и подсчитывал ссылки на объект, тогда после выполнения кода и в памяти будет ноль объектов. В плюсах же будет висеть три объекта. А вообще, есть ли в С++ сборщик мусора? В книге по Qt читал что есть, а вот в книге Праты читал, что нету __Прислал оператор автоматических линий и механизмов__
>>470330 >>470330 А что такого? Да, а сколько объектов будет в джаве? Джава при обычном присваивании создает копии или тупо присваивает ссылку, как в С++?
>>470667 Объект выпиливается GC тогда, когда его время жизни заканчивается, т.е. когда область видимости , в которой объект функционировал, канула из стека нахуй. Я так понимаю процесс очищения памяти на Java. Для С++ вопрос ОП весма грамотен, для Java бессмыслен. Там, конечно, два объекта, во втором случае, но они, указывают на одно и то же место, а первый становится, как бы, мёртвым грузом, отправляющимся в объятия GC.
>>470718 Я, кстати, изначально про сборщик на шарпе говорил. Там мною был проведен эксперимент по созданию дохуища бесполезных объектов и замерам памяти. В общем, что с ручным вызовом сборщика, что нет памяти в итоге оказывалось одинаково, из чего я сделал вывод, что сборщик кота за яйца не тянет и убивает все при первой возможности. Но истину я, конечно, не знаю, это просто наблюдение.
>>470721 > Но истину я, конечно, не знаю, это просто наблюдение. Ну вот так и не пизди мне тут про сборщик шарпа. Собирается только в крайнем случае. Почитай вообще про сборщики мусора, какие там есть проблемы за 50 лет их исследований, как их решают - это полезно.
Где бы таких опов найти, мне вот на собеседовании если бы задавали вопросы по базовым структурам данных и алгоритмам с вот такими вот тонкостями языка - я бы уже давно работал бы. Меня вечно спрашивают А ЕСТЬ ЛИ У ВАС ОПЫТ ИСПОЛЬЗОВАНИЯ ФРЕЙМВОРКНЕЙМ?, КАКИЕ СОБСТВЕННЫЕ ПРОЕКТЫ У ВАС ЕСТЬ?
Иногда такое ощущение что меня собеседуют на мидла вместо джуниора.
кресто/жава ваннаби девелопер с небольшим корпоративным опытом на крестах
>>470285 БЛЯТЬ, ебучий пидор, ТЫ НЕ УКАЗАЛ ЯЗЫК МУДИЛА. Это во-первых. Во-вторых: если это с++ Ты не определил Animal. Что если там typedef Animal *animal выше? Где animal - класс. В принципе тогда твой код имеет смысл, в противном случае это ты дебил - присваиваешь объекту указатель. 3 ошибки на 4х строках, ахуенно. если C#/другой мета-язык с garbage collector-ом Код имеет смысл, 1 строчка - 1 объект в куче, 1 объект доступен (он же). 2-4 строчки - 2 объекта в куче, последний из которых доступен, первый - нет, его съест сборщик мусора. Итого 1 объект.
>>470822 И да, если там typedef ты будешь иметь 1 объект и во 2м случае 2а объекта, но указатель на один из них ты проебёшь и он останется навечно выделен до самого конца исполнения проги.
Тред еще не читал но уже выяснили единственно верный правильный ответ? Ух пичет. Надо будет собвеседоваться скороко, и тут какой-нибудь сказочный долбоеб будет спрашивать такие то охуительные истории. Хотя это конечно получше чем кем вы себя видете и т.п.
>>470915 Так какой правильный ответ 0 2 3 4 ? Понял что ОП наследственный дибил не могущий в разметку, терминологию, вообще ни во что кроме как доебывать нормальных людей, но надеюсь это не на долго.
>>470921 да дочитай ты до того, как оп скажет, что правильного ответа нет. что правильный ответ - начать уточнять терминологию. пиздец вырожденцы пошли, читать разучились зато небось в разговоре лицом к лицу каждые пять минут в телефон пялишься
>>470922 >читать разучились пичет же. Тяжело читать >правильного ответа нет охуительно. просто охуительно >зато небось в разговоре лицом к лицу каждые пять минут в телефон пялишься что ты блядь несешь, ебанутый
>>470930 > Тяжело читать Это пост #14, мудило Как ты будешь анну каренину читать? Вот ее блядь тяжело читать, сука, и то я 150 страниц прочитал пока не бросил.
>>470879 Я сюда зашёл 2-3 раз, я не прикручивал никаких мокрописек, чтобы чинить разметку, лучше бы макаке сказали по дефолту так сделать, а то хуйня убогая ваш раздел.
>>470336 >1 курс 2 семестр На такие вопросы и школьник ответит. А почему приходят такие? ну это ебаная просто история. Пытался 4-х человек обучать программированию, но проблема в том, что из этих 4х понимал хоть что-то только один. Как-то просил проссумировать массив и полилась хуйня, мол есть формула, а далее полное нежелание что-либо писать. Ну вот и что мне? Ну есть формула - и что? Я попросил написал конкретный алгоритм, а получал сливы. Не удивительно, что >>470323 и такое бывает В общем, в этом всем виновата русская необучаемость, а как известно, для того, чтобы обучаться в вузе, обучаемость не нужна.
>>470313 >Вот таких ответов я и жду. Лол, т.е. ты ждешь, что на тебя сразу рыпнутся студентики с целью пошатать твой пока что непоколебимый авторитет. Ну и лох, как на говно..
>>470566 ООП ломает мозги и ты начинаешь бояться всего. Везде сейчас есть суперклассы. Object в Java, Object в C#, BasicObject и Object в Ruby, Qt QObject в Qt — после всей этой хуйни лоб потеет, когда слышишь слово «объект». Хотя, может, не у всех так.
>>470984 В психологическоим плане некорректный вопрос и ожидание его уточнения - это два стула. Собеседуемый ожидает вопросы с подвохом но корректные(имеющие четкий ответ). Любые учтонения он воспринимает как: пики - свой слив(попытка заболтать, съехать), хуи - заувалирование оскорбление спрашивающего(дебил сам не понял что спросил и требуется уточнять)
Количестов "правильно" ответивших у ОП ~= 5-10%, что соответствует вероятности собеседовать полного мезантрапа, который не засыт показаться долбоебом или оскорбить человека ради высшего дела (императив "дело > чел. связей"). Но по человечески с такими людьми иногда оче НЕПРИЧЯТНО, они могут идти по костям.
ОП спрашивает неведомую хуиту типа > как пройти к озеру единорогов в моем мирке маняфантазий? или просто > что у меня в кармане? Даже консилиум выдающихся умов человечества ничем не сможет тут помочь. Кроме как посоветовать сделать ОПу эвтаназию.
И как же мне такая пидорва остопизденела во время учебы, когда еблан загадывает загадку и нужно подобрать слово-ключик чтобы он отъебался. Все сдачи/зачеты/экзамены должны быть письменными чтобы такого говна больше никогда не было. Всех загадочников выжигать напалмом нахуй.
Жопы = порваны. Алсо вопрос стоит формулировать так: "расскажите, что здесь происходит настолько подробно, насколько сможете", и если что задавать наводящие вопросы - там и выплывут все знания и незнания.
>>470285 Во втором случае создаются два объекта, первый называется cat, второй называется... Так падажи ебана... Да там синтаксическая ошибка, хули ты мозги нам ебешь.
>>470785 Собственные проекты — это хуита. Разве что ты на лида или пма идешь. А вот без знания экосистемы языка ты хуй простой, даже на джуна не тянешь.
>>470517 >и как работает матрица поворота >матрица >работает Хранит в себе числовые значения. Ты такой даун, что даже вопрос сформулировать грамотно не можешь. Хотя бы слово "оператор" вместо "матрица" использовал.
>>470523 Все с технических специальностей это проходили на первом курсе. Я даже не помню как выгдядит матрица поворота, хотя 2 года назад припенял её в своей программе.
>>470517 >С недавних пор спрашиваю, что такое синус и как работает матрица поворота. Даже люди с опытом бывает слабо представляют себе, как устроена матрица трансформации. Видел даже как люди, чтобы найти оси объекта, брали базис векторов и умножали на матрицу трансформации. Или использовали универсальный тормозной inverse для поиска обратной матрицы трансформации.
>>471496 > брали базис векторов и умножали на матрицу трансформации Ну там надо от нее трансляцию отрезать сначала, если я правильно помню. Она какая-нибудь 4x3 небось.
>>471596 Наоборот, набрать джавамакак не проблема. Они пишут тонны тормозного унылого бойлерплейта, и легко взаимозаменяются. Нужны умные. Сомневаюсь что типичная корпоративная джаваобезьяна способна, например, видеокодек написать.
>>471598 Само собой не напишет. Системное и прикладное программирование — разные вещи. Вопрос специализации. Аналогично можно сказать, что крестопидоров набрать не проблема. Они пишут тонные неподдерживаемого говна, которое постоянно протекает и падает с ошибками сегментации, и легко взаимозаменяемы. Сомневаюсь, что типичная крестомразь способна, например, написать корпоративную ис.
>>471606 >Аналогично можно сказать, что крестопидоров набрать не проблема. Они пишут тонные неподдерживаемого говна, которое постоянно протекает и падает с ошибками сегментации, и легко взаимозаменяемы. Сомневаюсь, что типичная крестомразь способна, например, написать корпоративную ис.
С хуя ли ты так считаешь, быдло? В своей жизни пишу только кроссплатформенный код, протечек памяти вроде не бывало.
>>471608 Это такие джявалегенды. В джвавамирке корпоративные обезьяны их очень любят друг-другу рассказывать в промежутках между пением гимна фирмы, тимбилдингом и прочей дрессировкой.
>>471611 Надо заметить, что протекание памяти можно устроить на любом языке, но вот для ошибок сегментации и тысяч уязвимостей, связанных с управлением памятью, лучше всего подходят именно С и С++.
>>471616 >и тысяч уязвимостей, связанных с управлением памятью Потому что ей там можно управлять, в отличие от. В язычках с GC модель управления памятью только та, что хозяин гвоздями приколотил.
>>470359>>470519 Потому что императивный поход не очевиден. Прежде чем давать задачки, стоит объяснить, что переменные тут отличаются от тех, что в уравнениях математики, объяснить, что они мутабельны, понимаешь? Это же блять ебучий шестиклассник.
Я бы на твоём месте шел бы на заочку или учился бы сам. Сидеть за одной партой с детьми не очень приятно, да и за 1-й год у нас не сильно много было практики, в основном математические дисциплины, а знание диффуров не сильно поможет программировать.
>>470285 В первом коде просто ссылка на экземпляр класса. Во втором коде переопределение ссылки, в следствии чего теряется доступ к первому экземпляру класса и он остается в памяти мусором. Все правильно понял? Мимо шарповец, двжа года не трогал плюсы.
>>470285 Я затрудняюсь ответить сколько там объектов в интерналах реализации. Не помню уже что там в жабе означает запись Animal cat без присваивания. В душе не ебу как называют задроты-аутисты ооп инстанцирование и можно ли теперь называть нечто объектом.
Мой ответ: а) 1 б) 2 Потому что в коде (что значит "здесь" блядь?) создаётся (new) 1 и 2 объекта соответственно. Когда они там умирают знает только gc. Алсо в некоторых языках сам класс тоже объект, в жабе по-моему не.
Подозреваю что все студенты ответили тебе правильно, но тебя в детстве папа переодевал в шмот для девочек и насиловал когда был пьян.
>>472013 Ок. Даже если плюсы. В первом случае объект, ясен хуй, один. Во втором случае их создаётся два, но в крестах, если мне не изменяет память, при создании второго автоматически уничтожится первый. Вся эта вакханалия будет жить до конца скоупа и если больше нигде оно не используется (compile time refcount) - автоматически уничтожится. Вообще говоря особо хитрожопый компилятор может закосить эти строки и не создавать объекты совсем. Выходить в понедельник или вы мне перезвоните?
>>472017 >но в крестах, если мне не изменяет память, при создании второго автоматически уничтожится первый Разве? По-моему выделенная память просто в куче проебывается до завершения программы, отсюда и утечки.
>>472041 Говна поел, болезный? >>471954 Если в целом, то да. Если придираться, то в плюсах ссылка это кое-что другое (в ОП посте именно указатели), плюс в С++ объект == выделенная память на хранение переменной любого типа (int i - объект типа int, int✡ i - объект типа int✡), то есть поинтер тоже является объектом.
>>470285 ОП, у тебя два пирожка, один пирожок ты засунул в рот, другой в жопу, сколько теперь у тебя пирожков? такое ощущение что ты кроме крестов больше ничего не знаешь
>>472047 >два объекта - pointer типа Animal и экземпляр класса Animal У меня от тебя АЛЕКСАНДРЕСКУ. Pointer же всю жизнь скаляром был, какой ещё нафиг объект? >>472104 Удаляется. Я перепутал. Если взять объект на стеке, деструктор вызовется автоматически когда надо. Animal cat = Animal(); // без new
>>472317 Объект - это понятие из ООП. Держится на трёх столпах: полиморфизм, инкапсуляция, наследование. То есть обязательно речь идёт о классе. Скаляры остаются скалярами, иначе называемые примитивными типами. Примитивные типе в идеальном ООП - тоже классы. Но в крестах они никак не классы ради скорости.
Класс это такая таблица функций, которые принимают в качестве первого аргумента объект класса. При наследовании эта таблица копируется и расширяется. Виртуальные методы позволяют прямо в рантайме определить объект класса и найти нужную таблицу. То есть всегда имеется хотя бы минимальная интроспекция.
Пойнтер это просто пойнтер. Это конструкт языка, позволяющий кроссплатформенную косвенную адресацию. Никакой это не регион оф сторидж. Откуда тебе знать как компилятор этот пойнтер обработает? Может он решит его разместить в регистре, а то и совсем сократит преобразованием выражений.
Теперь представьте что мудак-ОП меня бы не принял потому что я не так ответил СКОЛЬКА ТУТ ОБЪЕКТАВ.
>>472319 >Откуда тебе знать как компилятор этот пойнтер обработает? Кого это ебёт? Это же язык высокого уровня. На машинном уровне вообще нет понятия объект.
>>470721 В джаве такие эксперименты удобнее проводить. Там ты можешь задать используемые алгоритмы для сборки, кажется даже размеры поколений. И самое удобное - ты можешь следить за логом. Кажется когда я искал - не нашёл удобного лога для дотнетовского сборщика. Это будет очень забавно если ты замерял через размер кучи занимаемой процессом (был где-то такой долбоёб, может на лоре или на хабре, тоже с дотнетом). Как минимум в твоём эксперименте объекты ложились в молодое поколение - оно мелкое и сразу происходила сборка молодого поколения. Так как ты объекты присваивал простым стековым переменным - они сразу освобождались. Как можно улучшить твой эксперимент: сохраняй ссылку в каком-нибудь списке. Сделай список потолще - так чтобы он успел пройти в старое поколение, но не произошла полная сборка. Обнули все переменные и наслаждайся тем как твои мертвые объекты занимают память.
Что может пойти не так? Конечно бывают хитровыебаные сборщики. Например в питоне (CPython от гвидо) вместе со сборщиком ещё есть счетчик ссылок (на самом деле это решение напрашивается само собой, но широкого применения оно не нашло так что кажется идея оказалась провальной). Алсо бывает конкуренси сборщик (зачастую работает параллельно с каким-нибудь традиционным), например в андроиде в логе можно увидеть что проходит конкурентная сборка (в хотспоте тоже можно поставить, но там флаг нужен - своевольничать он не станет).
Кажется есть возможность закопаться в эту тему не погрязая при этом в байтоебле. JikesRVM - виртуальная машина джавы написанная на джаве. Специально сделана чтобы обкатывать всякие алгоритмы, разумеется только для исследовательских целей.
>>472430 > Типа, в cat копируется объект, который создается в куче? Пиздец, а я столько раз так делал. Получается, каждый раз создавал два объекта, один из которых терялся. Вот это я быдло.
>>472355 >ещё есть счетчик ссылок (на самом деле это решение напрашивается само собой, но широкого применения оно не нашло так что кажется идея оказалась провальной
Блеать, везде есть счётчик ссылок если ты не знал. Только в пердоне вызываются стандартные free/malloc сразу же как refcount=0, а в жабах хитровыебанно-отложенные выделяторы/очистители. Ебля с поколениями нужна только для того чтобы по многу раз не проверять одни и те же циклические ссылки.
>>472435 > Только в пердоне вызываются стандартные free/malloc сразу же как refcount=0 Так. > а в жабах хитровыебанно-отложенные выделяторы/очистители Хмм... Да вроде бы сборщик достаточно тупой инструмент. Допустим очистители - это ты про финализаторы так называемые. Они считай во всех мейнстримных языках есть. Типо рубей питонов. Если в джаве есть финализатор срабатывающий по счетчику ссылок, значит от джавы можно ожидать детерминированного освобождения ресурсов? Ну или зачем они ещё могут быть нужны.
> Ебля с поколениями нужна только для того чтобы по многу раз не проверять одни и те же циклические ссылки. В общем то такому тупому инструменту как сборщик (не в смысле что он мне не нравится а тупому как например брутфорс) похую циклические ссылки или нет - время обхода не изменится. Но мысль верная - действительно лишнего обхода станет меньше.
>>472130 Массив указателей на функции, возвращающие int. >>472430 >Типа, в cat копируется объект, который создается в куче? А разве он не просто скопирует первые байты (сколько влезет в cat)? new же указатель вернёт?
>>472561 > А разве он не просто скопирует первые байты (сколько влезет в cat)? new же указатель вернёт? Он разименовывается и данные копируются из кучи в стек. > просто скопирует первые байты Такого вообще быть не может, кресты строготипизированный язык. При попытке засунуть хуй не в ту дырку присвоить что-то не то тебя конпилятор в хуй пошлет.
>>472319 Если бы я собеседовал людей, которые в принципе способны так ответить, я был бы счастлив и задавал бы совсем другие вопросы. Про таблицу виртуальных методов спрашиваю каждый раз. Два человека объяснили. Более половины признались, что даже не слышали такого термина (естественно, предлагаю несколько синонимов, на случай если чувак знает только слово vtable, но не знает расшифровки) Но готовые специалисты с такими знаниями в нашей мухосрани добываются только хедхантингом, а наш хаэр не мог в хедхантинг.
>>472343 создаются два объекта в куче и один на стеке? и на стеке у нас сначала объект, сконструированный конструктором по умолчанию, потом копия первого объекта из кучи, потом копия второго? я прав:3
>>472705 но то, как будет выглядет стек, определяется по сути же еще на этапе компиляции. то есть, если у тебя объявлена одна переменная, то она и будет одна. то есть объект, по сути, будет один, но его содержимое будет переписываться каждый раз.
>>470755 Бывают люди, которые не читали про работу сборщиков? Самая туманная и при этом самая интересная часть сборщика именно то, какой он имеет механизм вызова. Если верить тебе, то мои результаты кто-то фальсифицировал, потому что крайним случаем там и не пахло, памяти было еще жопой жуй, но тонны мертвых объектов он убил без жалости и промедления. Такие дела.
>>472781 Тебе рассказали уже, это было нулевое поколение, оно умирает быстро. Переведи объекты в долгоживущие - он будет их чистить только когда действительно припрёт, иначе пострадает производительность.
Солдатики на работе. Я бы с радостью, а не через сотню, я даже во мне сегодня отказал в удовлетворении заявления о том что я даже во время экзамена, я не знаю что тебе на телефон потом, а я даже не могу найти, я тут сижу в метро и вообще плевать через неделю не хотела чтобы
>>470285 >сколько здесь объектов и как они называются? >Может я как-то неправильно его формулирую? >сколько здесь Да, неправильно. Как шизофреник. Где здесь? На бумажечке? На бумажечке нисколько объектов нет, только чернила.
Сколько объектов в памяти компутера на таком то этапе выполнения программы?
Сколько объектов доступно для использование в парадигме конкретного языка программирования в таком то участке кода?
В общем. Прежде чем собеседовать кого-то, научись по русски говорить. И таки, чтобы ты понимал, адекватных кандидатов всегда один на 10-20 человек. (если речь о студентах и стажировке).
тред особо не читал, то если я скажу 1) 1 обьект называется энимал а кет это сылка на него 2) 2 обьекта энимал у одного сылка кэт у второго нету сылки будет правильно?
>>470946 Слишком толсто, братишка. Просуммировать массив это настолько типичная задачка, что даже школьники в деревне дураков пишут такой код на паскале.
>>470285 Разговор с копипастой, ну да похуй. Вопрос из серии «сколько крыльев у жирафа». Понятно, что цель была проверить понимание понятия ссылки, но "метод" еë не достигает.
[code]Animal cat = new Animal();[/code]
И спрашиваю: сколько здесь объектов и как они называются? Мне отвечают "один объект, называется cat". Тогда я пишу такой код:
[code]Animal cat;
cat = new Animal();
cat = new Animal();[/code]
И задаю тот же вопрос. На этом месте все начинают нести ахинею разной степени тяжести, и на мои глаза наворачиваются слезы. Из примерно сорока человек только три ответили правильно на первый вопрос или просекли фишку после второго и скорректировали ответ. Это нормально? Может, студентам не стоит задавать такие вопросы? Может я как-то неправильно его формулирую? Диванные синьоры, скажите, вам очевиден ответ на этот вопрос? Я прямо в печали.