Здравствуйте, kittown, Вы писали:
K>Нам не нужен зазубривший версию c++, расходящуюся со стандартом.
Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со стандартом?
Например, такой популярный компилятор как msvc++:
1. В некоторых аспектах нарушает стандарт (это надо знать, что бы не делать ошибок)
2. В некоторых аспектах расширяет стандарт (это надо энать, что бы более эффективно его использовать)
3. В некоторых аспектах имеет особенности (это надо энать, что бы более эффективно его использовать)
Человек зазубривший Стандарт... напоминает комическую ситуацию с Александреску, который пишет код, который не может скомпилировать ни один из существующих компиляторов
Какого человека Вы бы выбрали себе в водители, который ездит уже год и не видел ПДД, или который зазубрил ПДД?
Я знаю людей, которые вполне приемлемо разрабатывают корпоративные приложения, но при этом НЕ слышали про стандарт языка, на котором они пишут. Ну по крайней мере не больше, что он просто существует.
Лично про себя могу сказать (не назову себя новичком), что я просто не навижу задания для компилятора на подобие приведённого и не уверен, что смогу на такое ответить.
Здравствуйте, remark, Вы писали:
R>Какого человека Вы бы выбрали себе в водители, который ездит уже год и не видел ПДД, или который зазубрил ПДД?
Как сказал один мой друг: "от практиков польза зачастую практическая, а от теоретиков обычно только теоретическая".
выберу практика...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: издевательства над switch-ем на собеседовани
От:
Аноним
Дата:
06.12.05 23:17
Оценка:
Здравствуйте, pavel_turbin, Вы писали:
_>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.
И это полемика людей, которые говорят, что читали стандарт? std::sort() — и ни одного выделения памяти
Re[3]: издевательства над switch-ем на собеседовани
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, pavel_turbin, Вы писали:
_>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.
А>И это полемика людей, которые говорят, что читали стандарт? std::sort() — и ни одного выделения памяти
Ну вот именно. И даже на стеке ничего не будет. Т.к. я даже не знаю, что такое стек.
remark wrote: > > K>Нам не нужен зазубривший версию c++, расходящуюся со стандартом. > > Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со стандартом?
Нет, хотя первой стал бы проверять Comeau.
> Например, такой популярный компилятор как msvc++:
Знаем. Кстати, конкретно на моих занятиях мы его не используем. На
других — кто как.
> Человек зазубривший Стандарт... напоминает комическую ситуацию с > Александреску, который пишет код, который не может скомпилировать ни > один из существующих компиляторов
Акцент был не на зазубривании — (человек с такой памятью не встречался,
но пригодился бы), а на том, что зазубрена старая версия стандарта.
Чем человек руководствовался, когда выбирал что зубрить ?
Недавно была на собеседовании студентка у другого собеседователя
при мне, основательно просела на Си, но просела по обьему знаний,
а не по обьему чуши. Это разные вещи. Потом пришла в мыло и спросила,
стоит ли ей учить c++ по Страуструпу той редакции, что старее 1997
года. Все, у этой дамы с таким подходом проблем точно не будет,
дело времени. Не удивлюсь, если потом придет и пройдет все
существенные тесты, чтобы сразу идти на стажировку. А то и
просто на работу устроится.
> Какого человека Вы бы выбрали себе в водители, который ездит уже год и > не видел ПДД, или который зазубрил ПДД?
> Я знаю людей, которые вполне приемлемо разрабатывают корпоративные > приложения, но при этом НЕ слышали про стандарт языка, на котором они > пишут. Ну по крайней мере не больше, что он просто существует.
Сработает при четком coding style. Иначе вылезают необъяснимые
ошибки на смене компиляторов.
> Лично про себя могу сказать (не назову себя новичком), что я просто не > навижу задания для компилятора на подобие приведённого и не уверен, что > смогу на такое ответить.
Я тоже, когда на них требуют обязательно верного ответа, и/или не
подбрасывают никаких подсказок. Я и сам подсказываю, и неответу
значения не придаю. Последний пункт принципиален.
Здравствуйте, kittown, Вы писали:
K>Вчера сам собой придумался пример кода для запугивания K>претендентов на собеседовании:
K>#include <iostream> K>int main() K>{ K> switch(0) default: std::cout << "Hello World!" << std::endl; K>};
K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,
Предлагаю встречный вопрос
int main()
{
switch ( 0 )
switch ( 1 )
while ( 0 )
{
case 0: printf("hedgehog here!\n");
case 1: printf("hello world!\n");
default: printf("nope\n");
}
return 0;
}
Кодт wrote: > > K>Добавлю: удивил стереотипностью и поспешностью ответов. > > Ещё раз повторю: всё зависит от изначального позиционирования.
Согласен. Он было почти не сформулировано. Зато получил
кучу другой полезной информации.
> Когда человек спрашивает (предъявляет проблему) — находится масса > желающих помочь. Причём помощь, возможно, более качественная и полная, > чем ожидалось.
Факт.
>> > Но по отношению к участникам... >> > Наверное, ты ошибся форумом. Поясню: > > K>Отчасти это был эксперимент, проверка реакции аудитории. Ожидал > большего — как минимум меньшей поспешности. > > Хм. Провокация?
Ненамеренная.
> Нет, ты сам об этом написал. А пока не написал, речь об этом вообще не шла. > Телепаты в отпуске, извиняйте.
Напрасно.
> В 99% случаях, если программа не компилируется или компилируется > неправильно — виноват не компилятор, а программист. > Согласен?
Да.
> По аналогии: если общество реагирует на твоё сообщение не так, как ты > ожидаешь
То это говорит и о сообщении, и о сообществе. Необязательно по
шкале "хорошо-плохо".
Mikhail
Posted via RSDN NNTP Server 2.0
Re[7]: издевательства над switch-ем на собеседовани
Здравствуйте, kittown, Вы писали:
K>remark wrote: >> >> K>Нам не нужен зазубривший версию c++, расходящуюся со стандартом. >> >> Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со стандартом?
K>Нет, хотя первой стал бы проверять Comeau.
Я не верю, что он полностью соответствует стандарту. Я не верю, что в нём нет расширений, которые Хорошо использовать. Я не верю, что в нём нет особенностей, которуе надо знать, что бы Хорошо кодировать.
>> Я знаю людей, которые вполне приемлемо разрабатывают корпоративные >> приложения, но при этом НЕ слышали про стандарт языка, на котором они >> пишут. Ну по крайней мере не больше, что он просто существует.
K>Сработает при четком coding style. Иначе вылезают необъяснимые K>ошибки на смене компиляторов.
Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.
remark wrote:
>> > Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со > стандартом? > > K>Нет, хотя первой стал бы проверять Comeau. > > Я не верю, что он полностью соответствует стандарту. Я не верю, что в > нём нет расширений, которые Хорошо использовать. Я не верю, что в нём > нет особенностей, которуе надо знать, что бы Хорошо кодировать.
Обычно использование таких особенностей весьма не рекомендуется. Хотя
это зависит от того, насколько важна оптимизация бинарника (у нас все
равно главный боттлнек — общение между хостами).
И даже если используются, все ровно загоняются в общую библиотеку,
которая соберется и на других компиляторах, просто с чуть другой
реализацией.
Но за всех не скажу.
> Я достаточно сомнительно отношусь к тому, что бы большой корпоративный > проект, который использует ряд технологий > (сетевые/компонентные/графические и т.д.), в котором [в силу > необходимости] проводилась оптимизация кода по быстродействию, в котором > в силу понятных причин работали не только профессионалы мирового уровня, > переводился на другой компилятор. И уж без необъяснимых ошибок тут никак > не обойтись.
Смены версий компилятора может оказаться достаточно. Вместе с очередным
обновлением ОС и железа под ней. Речь даже не о gcc, а о компиляторах на
solaris/aix.
Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
Our C++ front end was started in 1991; it was first released in 1992. It supports the C++ language of the ISO/IEC 14882:2003 standard (the complete language; see our description of language features).
Как я понимаю, в некоторых местах даже у разработчиков компиляторов возникают разночтения стандарта, но это не значит, что компилятор не на 100% соответствует стандарту, это значит, есть проблемы в стандарте. Их исправляют и это очень быстро проявляется в компиляторах, например, с доступом вложенных классов к членам охватывающего — есть defect report, есть текст стандарта (который еще не исправлен, несмотря на дефект репорт) и есть компиляторы (например, comeau), которые этот дефект репорт учитывают.
Расширения в комо есть (например, в документации есть такой пункт Language Dialects), но это не делает его нестандартным.
Of course, the code must be complete enough to compile and link.
Re[8]: издевательства над switch-ем на собеседовани
Здравствуйте, remark, Вы писали:
R>Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.
VC6 -> gcc2.72 (VxWorks 5.0) -> eVC4 (WinCE4.2) -> gcc2.96 (VxWorks 5.5), слава богу, что всё для x86.
Ничего, большая часть проблем была прибита во время кровавых перекомпиляций.
Перекуём баги на фичи!
Re[5]: издевательства над switch-ем на собеседовани
Здравствуйте, kittown, Вы писали:
K>igna wrote: >> >> Здравствуйте, kittown, Вы писали: >> >>> > K>Если скомпилируется, то почему? >> >>> > Каков был бы ваш ответ на этот вопрос? >> >> K>Некоторое время назад — "не знаю". >> >> А сейчас? Меня интересует ваш теперешний ответ на вопрос "Почему >> скомпилируется?"
K>Потому что после swith(smth) идет оператор, частным случаем K>которого является блок {operators}. А default, case N — это K>только метки, которые допускается использовать до того, K>как оператор/блок после switch закончился. Более того, K>хотя бы одна из них должна быть использована перед K>оператором или в начале блока, иначе получится unreachable K>code и компилятор начнет сопротивляться.
Как оказалось от компилятора зависит — будет сопротивляться или нет
gcc одинаково откомпилировал что —
а)
switch (11)
{
default : cout << "234" ;
}
что
б)
switch (11)
{
cout << "234" ;
}
Re[9]: издевательства над switch-ем на собеседовани
Здравствуйте, kittown, Вы писали:
K>Смены версий компилятора может оказаться достаточно. Вместе с очередным K>обновлением ОС и железа под ней. Речь даже не о gcc, а о компиляторах на K>solaris/aix.
Есть UB, а есть конкретная документированная реализация языка программирования. Не путайте эти вещи.
В msvc есть много т.н. microsoft specific, и при его использовании мне не грозит ни смена версии компилятора, ни смена железа.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, remark, Вы писали:
R>>Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.
К>VC6 -> gcc2.72 (VxWorks 5.0) -> eVC4 (WinCE4.2) -> gcc2.96 (VxWorks 5.5), слава богу, что всё для x86. К>Ничего, большая часть проблем была прибита во время кровавых перекомпиляций.
Я не говорю, что такое не возможно. Но:
1. Ключевое слово кровавых
2. Сколько программ в жизни переживают такое? Я думаю в процентном соотношении мало.
3. Обычно с начала проекта либо, утверждается, что проект будет переноситься, либо утверждается(подразумевается), что проект не будет переноситься, либо люди его просто делают с подсознательным расчётом на перенос.
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Расширения в комо есть (например, в документации есть такой пункт Language Dialects), но это не делает его нестандартным.
На ВСЕЛЕНСКОМ СТАНДАРТЕ С++ писать программы нельзя, только если на бумажке.
Я могу писать только (к примеру) на Comeau C++. Comeau C++ не равен тождественно стандарту С++, хотя зачастую меня совершенно не интересует отношение Comeau C++ и стандарта.
Я стандарте есть такие вещи как implementation defined. Т.е. фактически он не является полным.
К примеру, из стандарта я не знаю вычислительные сложности всех функций, которые в нём есть, но я могу знать эти сложности для той реализации языка, на которой я пишу, и это может заставить меня реализовать какую-то функцию вручную.
Re[5]: издевательства над switch-ем на собеседовани
От:
Аноним
Дата:
07.12.05 11:36
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:
ГА>Здравствуйте, pavel_turbin, Вы писали:
_>>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки. ГА>ИМХО, маразм.
ГА>Если временную переменную при перестановке элементов считать дополнительной памятью, то что делать со счетчиками циклов? Хотелось бы на код успешного кандидата взглянуть.
ИМХО — имелось ввиду следущее решение:
static void Main()
{
int a = 144;
int b = 256;
Console.WriteLine(a);
Console.WriteLine(b);
a += b;
b = a - b;
a = a - b;
Console.WriteLine(a);
Console.WriteLine(b);
}
Глупый финт ушами один словом.
Re[3]: издевательства над switch-ем на собеседовани
От:
Аноним
Дата:
07.12.05 11:37
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:
>> Вот если Duff's device подсунуть на собеседовании, то это издевательство.
RO>Одновременно написали А вот еще:
RO>
RO>int x, y;
RO>. . .
RO>x ^= y ^= x ^= y;
RO>
RO>Что делает? 30 сек на размышления!
RO>С уважением, Роман.
Нормальный человек вот так напишет
static void Main()
{
int a = 144;
int b = 256;
Console.WriteLine(a);
Console.WriteLine(b);
a += b;
b = a - b;
a = a - b;
Console.WriteLine(a);
Console.WriteLine(b);
}
Извините, что на С# — не люблю я С++
Re[6]: издевательства над switch-ем на собеседовани
Здравствуйте, <Аноним>, Вы писали:
А>Глупый финт ушами один словом.
С финтом ушами вместо swap все понятно, а вот с сортировкой...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: издевательства над switch-ем на собеседовани
От:
Аноним
Дата:
07.12.05 11:39
Оценка:
Здравствуйте, Шура Ренийский, Вы писали:
ШР>Здравствуйте, Аноним, Вы писали:
А>>Итого задача свелась к обмену 2 значений без промежуточной переменной. ШР>можно типа такого ШР>
ШР> a += b;
ШР> b = a - b;
ШР> a = a - b;
ШР>
Вах. Код до наименований переменных совпал...Телепатия ?