неспособность понять азы легко заменяется хамством, ничего новогоAlexandr wrote:дойдет то, что у вас язык развит сильнее мозга?
вы это уже не раз продемонстировали
Как пройти собеседование?
-
- Уже с Приветом
- Posts: 15276
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Как пройти собеседование?
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
Вы:
на что вы ответили,
дальше больше
так объясните мне глупому, азы, гуру, а также приведите цитаты из которых следуют ваши хамоватые обвинения, если конечно кроме как молотить языком вы на что-то способны
на что я вам указал, что то, что вы написали не является по стандарту корректной С++ программой (даже цитату из стандарта привел)АццкоМото wrote:Кстати, подумалось. Стандарт языка вообще не говорит про то, как и когда код может или должен упастьFlash-04 wrote:просто замечу что формально Medium-rare прав: стандарт языка ничего не говорит про то как
вот это:по стандарту языка вовсе не обязано падать. но мы же не будем впадать в демагогиюCode: Select all
for (int *i=0;;i++) *i=0;
на что вы ответили,
вам не кажется, что это грубовато-хамавато?Купите себе словарик и переведите undefined behavior. Возможно, когда-нибудь дойдет
дальше больше
бревно в собственном глазу не давит? не?неспособность понять азы легко заменяется хамством, ничего нового
так объясните мне глупому, азы, гуру, а также приведите цитаты из которых следуют ваши хамоватые обвинения, если конечно кроме как молотить языком вы на что-то способны
Last edited by Alexandr on 25 Mar 2012 13:14, edited 1 time in total.
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
кстати, прежде, чем я услышу очередное "му-у-у-у-у-у" ввиду "объяснения азов" от вас, потрудитесь разобраться в разнице между "undefined behavior" и "implementation defined behavior"
-
- Уже с Приветом
- Posts: 15929
- Joined: 01 Mar 2008 15:14
- Been thanked: 8 times
Re: Как пройти собеседование?
Спасибо, вроде уже подобные вопросы практически все изучил. Сейчас проблемы со всяческими ребусами, задачки на быструю соображалку уже не тяну как 10 лет назадAlexandr wrote:кста, вот неплохой мануал по каверзным моментам
http://www.parashift.com/c++-faq-lite/

Есть что-то вспомнить-потренироваться?
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
я думаю можно взять какую-нть книжку с олимпиадными задачками + полазить по software interview questions сайтам, там помимо вопросов по языку еще и обычные задачки встречаютсяOtherSide wrote:Спасибо, вроде уже подобные вопросы практически все изучил. Сейчас проблемы со всяческими ребусами, задачки на быструю соображалку уже не тяну как 10 лет назадAlexandr wrote:кста, вот неплохой мануал по каверзным моментам
http://www.parashift.com/c++-faq-lite/
Есть что-то вспомнить-потренироваться?
-
- Уже с Приветом
- Posts: 15276
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Как пройти собеседование?
значеццо так, я последний раз пишу вежливо.Alexandr wrote: на что я вам указал, что то, что вы написали не является по стандарту корректной С++ программой (даже цитату из стандарта привел)
на что вы ответили,
во-первых, все эти потуги подтянуть громко звучащие слова - смешны. "корректная", "well-formed". if you can't really define those terms, just do not use them.
для начала, это не программа, а statement. вполне корректный с точки зрения С/С++, причем поведение его не определено, о чем и повествует ваша "сцылка на стандарт". именно в этом и был смысл приведения этого примера - всем очевидно, что грохнется, но нет никаких формальных причин считать именно так. более того, это может быть вполне корректным кодом в некоторых оооочень специфичных случаях, а если поставить условие по верхней границе i, так и вовсе не очень экзотичным.
далее. было бы неплохо изучить, что такое объекты в С++, а что такое атомарные типы. *i, где i - типа int*, не есть объект.
и, наконец, implementation-defined behavior - это то, как решили разруливать конкретную ситуацию в данной реализации _компилятора_
undefined behavior - это когда решили вообще положить с прибором. как получится, так и будет, нам пофиг и мы предупреждали
так вот в обычной реализации разыменования никот не проверяет указатель на ноль, потому что стандарт не заставляет, а идеология С/С++ не велит делать лишние телодвижения без спроса. и (*(int *)0)=0) может прекрасно сработать, согласно стандарту. по нулевому адресу вполне может быть что-то, что может быть интерпретировано, как int
именно поэтому в данном конкретном контексте мой пример иллюстрирует именно то, что он должен иллюстрировать: даже самые очевидные источники крэшей не являются таковыми по стандарту, а лишь по эмпирическому знанию о том, "как обычно происходит"
еще раз: это - последний вежливый раз. после этого недообразованные будут посланы грубо, не тут, так в личке
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15929
- Joined: 01 Mar 2008 15:14
- Been thanked: 8 times
Re: Как пройти собеседование?
Указатель обычно проверяют на валидность, сравнивая с нулем. Так что сомневаюсь, что может существовать имплементация, в которой по нулю что-то есть. Может и не упать, конечно, но это сильно на удачу.
-
- Уже с Приветом
- Posts: 9195
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: Как пройти собеседование?
С другой стороны, системная имплементация никак не обязана зависеть от какого-то языка. Вот эту фразу ни с чем не ассоциируешь?OtherSide wrote:Так что сомневаюсь, что может существовать имплементация, в которой по нулю что-то есть.
The interrupt vector table starts at memory location 0000:0000h and ends at 0000:03FCh.
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 15929
- Joined: 01 Mar 2008 15:14
- Been thanked: 8 times
Re: Как пройти собеседование?
Мне не очень понятно, к чему вообще эти обсуждения? Я помню, очень любил их лет в 16-17, для того, что бы показать свою хацкерскую крутизну одноклассникам.Medium-rare wrote:С другой стороны, системная имплементация никак не обязана зависеть от какого-то языка. Вот эту фразу ни с чем не ассоциируешь?OtherSide wrote:Так что сомневаюсь, что может существовать имплементация, в которой по нулю что-то есть.The interrupt vector table starts at memory location 0000:0000h and ends at 0000:03FCh.
Но для людей с 10-20 годами программирования зачем это нужно? Если я увижу подобный код, я сразу распознаю его как ошибку и занесу в базу дефектов, даже если он не падает,
и так и задумано, ибо нефиг. И уж точно не буду задумываться - а вдруг будут портировать на экзотическую архитектуру и захотят написать обработчик прерывания деления на ноль, что тогда?
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
вы начали с хамства. так что если вы им и продолжите я не удивлюсь, раз уж вы любите сухую формальность и это совпадает с моим желанием найти таки истину в споре, то достаточно глянуть в стандарт:АццкоМото wrote: значеццо так, я последний раз пишу вежливо.
да, таки well-formed включает undefined behaviorдля начала, это не программа, а statement. вполне корректный с точки зрения С/С++
1.3.25 [defns.unspecified]
unspecified behavior
behavior, for a well-formed program construct and correct data, that depends on the implementation
[ Note: The implementation is not required to document which behavior occurs. The range of possible
behaviors is usually delineated by this International Standard. —end note ]
оно очевидно, только для всем привычной windows\linux на x86\64, для которых оно грохается потому что в page table directory процесса нет валидной pte (page table entry) для 0 страницы виртуальной памятивсем очевидно, что грохнется, но нет никаких формальных причин считать именно так
если процессор находится в реальном режиме, то читать мы оттуда можем, ибо оно в первом мегабайте, который доступен даже без hma)
но все это никак не относится к языку, ибо по стандарту - это undefined behavior = (нет документации как должно быть у компилятора)
только, если мы выходим за рамки языка и подключаем другие знания, в границах языка - это все также undefined bevaiorболее того, это может быть вполне корректным кодом в некоторых оооочень специфичных случаях
в контексте цитаты, которую я приводил, под объектами понимается так же любой встроенный тип (коим int и int* тоже является)далее. было бы неплохо изучить, что такое объекты в С++, а что такое атомарные типы. *i, где i - типа int*, не есть объект.
можете глянуть в официальном стандарте C++11 (цитата оттуда)
дальше у вас каша:
а что такое атомарный? тот, который можно атомарно прочитать? так им является только std::sig_atomic_t и скорее всего char
все остальное зависит то платформы (в частности, разрядности шины)
Code: Select all
undefined behavior - это когда решили вообще положить с прибором. как получится, так и будет, нам пофиг и мы предупреждали
см выше(*(int *)0)=0) может прекрасно сработать, согласно стандарту
реально грозно звучитеще раз: это - последний вежливый раз. после этого недообразованные будут посланы грубо, не тут, так в личке



просто стесняюсь спросить, вы себя будете посылать на форуме или в личке сам себя тролить?
Last edited by Alexandr on 26 Mar 2012 09:08, edited 1 time in total.
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
в реальном режиме процессора не упадет по умолчанию, либо в защищенном, после трансляции (если page unit включен) ссылается на валидный сегмент и права читать естьOtherSide wrote:Указатель обычно проверяют на валидность, сравнивая с нулем. Так что сомневаюсь, что может существовать имплементация, в которой по нулю что-то есть. Может и не упать, конечно, но это сильно на удачу.
но опять же, от уже очень далеко от языка
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
фигня, даже в реальном режиме таблица векторов прерываний находится там куда ссылается idtr - просто раньше этим мало кто заморачивался, а после reset он указывает на 0, поэтому и принято считать что в 0 начинаетсяThe interrupt vector table starts at memory location 0000:0000h and ends at 0000:03FCh.
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
зависит от специлизации, в жестком сервер-сайде это нужно знать не потому, что придется собственный драйвер писать, а чтобы уметь считать сколько стоит то или иное телодвижениеМне не очень понятно, к чему вообще эти обсуждения? Я помню, очень любил их лет в 16-17, для того, что бы показать свою хацкерскую крутизну одноклассникам.
Но для людей с 10-20 годами программирования зачем это нужно? Если я увижу подобный код, я сразу распознаю его как ошибку и занесу в базу дефектов, даже если он не падает,
и так и задумано, ибо нефиг. И уж точно не буду задумываться - а вдруг будут портировать на экзотическую архитектуру и захотят написать обработчик прерывания деления на ноль, что тогда?
простой пример, если знать как работает paging unit в процессоре (в частности зачем TLB нужен), то сразу есть понимание, что обращаться к странице памяти, к которой до этого не обращался - стоит не так дешево (а еще tlb - это кеш, и соответственно обращаться с ним нужно как с кешем)
это совершенно не значит, что это должен знать каждый и тем более, это не есть какой-либо показатель крутизны
на мой взгляд - показатель крутизны - это широта знаний помноженная на глубину, а уже сфера деятельности - дело десятое
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Как пройти собеседование?
опять же, возвращаясь к тому с чего начали (чтобы я сделал на вашем месте):
я бы выбрал специализацию, и уже ковырял бы в ней, пока не достиг серьезной глубины, а там уже и расшириться можно, если необходимость будет
ввиду того, что вы много с чем уже поработали, выбирать вам явно есть из чего
я бы выбрал специализацию, и уже ковырял бы в ней, пока не достиг серьезной глубины, а там уже и расшириться можно, если необходимость будет
ввиду того, что вы много с чем уже поработали, выбирать вам явно есть из чего
-
- Уже с Приветом
- Posts: 15929
- Joined: 01 Mar 2008 15:14
- Been thanked: 8 times
Re: Как пройти собеседование?
Я много занимался компьютерной графикой - а это та сфера, когда всегда не хватает процессора и памяти. На этапе проектирования очень сложно угадать, сколько потребует та или иная операция, нужно смотреть просто по факту. Конечно, многие вещи понятны и из общих соображений - например сдвиг дешевле умножения или деления, а ИЛИ дешевле суммы, но замеры показывают, что на современных компьютерах это не всегда заметно.Alexandr wrote:зависит от специлизации, в жестком сервер-сайде это нужно знать не потому, что придется собственный драйвер писать, а чтобы уметь считать сколько стоит то или иное телодвижениеМне не очень понятно, к чему вообще эти обсуждения? Я помню, очень любил их лет в 16-17, для того, что бы показать свою хацкерскую крутизну одноклассникам.
Но для людей с 10-20 годами программирования зачем это нужно? Если я увижу подобный код, я сразу распознаю его как ошибку и занесу в базу дефектов, даже если он не падает,
и так и задумано, ибо нефиг. И уж точно не буду задумываться - а вдруг будут портировать на экзотическую архитектуру и захотят написать обработчик прерывания деления на ноль, что тогда?
простой пример, если знать как работает paging unit в процессоре (в частности зачем TLB нужен), то сразу есть понимание, что обращаться к странице памяти, к которой до этого не обращался - стоит не так дешево (а еще tlb - это кеш, и соответственно обращаться с ним нужно как с кешем)
это совершенно не значит, что это должен знать каждый и тем более, это не есть какой-либо показатель крутизны
на мой взгляд - показатель крутизны - это широта знаний помноженная на глубину, а уже сфера деятельности - дело десятое
Глубину можно развить, конечно, но стратегически это тоже не всегда оправдано. Например, я эксперт в графических форматах. И кому это нужно? Я уже поработал в лидере рынка этой области. Эти знания уже можно выкинуть. Точно так же, вам видимо очень много пришлось работать с задачами по оптимизации памяти. Думаю, что много работали с собственными аллокаторами, локерами, оптимизировали разименования и сокращали обращение. Но если потеряете работу - кому это нужно? В 99% проектов на такие вещи можно забить или обойтись малой кровью.