Re[17]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 31.05.07 19:51
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Как раз для этого я и говорю, что указатели лучше. Потому что про ссылку можно забыть, что она ссылка, а указатель — он сразу видно, что указатель

А мне крысу достаточно навести, чтобы узнать что это ссылка, а чтобы узнать может ли этот указатель быть нулевым придется по коду полазить
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[12]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 31.05.07 20:05
Оценка: +1
FFF>>Я уверен в этом, потому что всё между собой тесно связанно и одно из другого вытекает... если заниматься делом не абы как, а с фундаментальным подходом — то все можно познать.

FDS>Ну, я вот сейчас сопроматом занимаюсь. Стандартный курс сопромата сдал на 5. Вы думаете, что я понимал то, за что получил 5? Да не фига! Мне потребовалось 1,5 года занятий по нелинейной теории чтобы наконец-то понять, что же там было.


Ну вот видите — как все между собой связано — в программирование все тоже самое...
Re[6]: что за ....!!! где C++ программисты?
От: DKM_MSFT  
Дата: 31.05.07 20:38
Оценка: +1
Здравствуйте, Sergey, Вы писали:

<skip>

В общем, топик скоро начнет соответствовать всем критериям помещения в священные войны, поэтому развивать спор я тут не буду.

Просто к слову. Сейчас в кабинете напротив сидит человек, который 3 недели назад не знал ни C, ни C++ вообще.

В силу специфики нашей коданды мы постоянно работаем с огромным количеством чужого кода и вписываем свою функциональность туда. Этот код написан в разном стиле и использует несколько языков (главным образом C++), а также внутренний API, который не документирован нигде.

За три недели человек проделал объем работы, который удивил всю команду. Вчера я делал code-review его кода. Код идеально соответсвует духу соответсвующих приложений, я нашел 6 стилистических проблем в коде, который занимал несколько десятков экранов.

Вот это я называю — Хороший Программист.

А тут вы, со своей инициализацией ссылок...
Re[7]: что за ....!!! где C++ программисты?
От: IID Россия  
Дата: 31.05.07 21:04
Оценка:
Здравствуйте, DKM_MSFT, Вы писали:

DKM>Просто к слову. Сейчас в кабинете напротив сидит человек, который 3 недели назад не знал ни C, ни C++ вообще.


DKM>В силу специфики нашей коданды мы постоянно работаем с огромным количеством чужого кода и вписываем свою функциональность туда. Этот код написан в разном стиле и использует несколько языков (главным образом C++), а также внутренний API, который не документирован нигде.


DKM>За три недели человек проделал объем работы, который удивил всю команду. Вчера я делал code-review его кода. Код идеально соответсвует духу соответсвующих приложений, я нашел 6 стилистических проблем в коде, который занимал несколько десятков экранов.


DKM>Вот это я называю — Хороший Программист.


Вот это я называю — пенисометрия

З.Ы.: , на счет ссылок солидарен
kalsarikännit
Re[2]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 01.06.07 02:32
Оценка:
Меня терзают смутные сомнения, если заказчик "дебил" то приходится опускаться до его уровня...
Re[6]: что за ....!!! где C++ программисты?
От: WolfHound  
Дата: 01.06.07 05:01
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>Далее, это правило наталкивает на обсуждения, можно по размышлять что тогда делать с такой конструкцией


_>
_>struct ABC
_>{
_>     int &a;
_>};
_>


_>может ли существовать такой тип ABC, вообще? Если программист "с лету" говорит "Да, проблем нет." Тогда что делать с правилом инициализации ссылки? Тут можно многое спросить еще, про дефолтный конструктор, как его генерируют и пр. Такие вопросы нужны что-бы отфильтровать шлак и посмотреть видел ли человек C++ вообще.


Я честно говоря не помню что сказано в писании и мне лень там копаться но как насчет такого кода:
struct ABC
{
    int& a;
};

int a = 123;
ABC abc = { a };

int main()
{
    std::cout << abc.a << std::endl;
}


По мнению Comeau C/C++ это предупреждение:
"ComeauTest.c", line 1: warning: class "ABC" defines no constructor to initialize
          the following:
            reference member "ABC::a"
  struct ABC
         ^


VC++8 даже и предупреждения не выдал. А просто скомпилил и отработал как ожидалось.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: что за ....!!! где C++ программисты?
От: WolfHound  
Дата: 01.06.07 05:14
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Видел я код, который такие люди пишут. Говнище типа MFC или ATL'я из VC6. if (error) goto cleanup, ага.

Для С++ согласен. Тут лучше обертки с деструкторами.
Но для С это единственный читабельный вариант.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: Move Constructors
От: CreatorCray  
Дата: 01.06.07 06:30
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

CC>>Ответ неправильный кста. Код хреновый не потому что void main () — вполне может быть что код писан был под VC6

RO>Каким образом существование Microsoft® Visual® C++ 6.0 влияет на ill-formedness указанного текста согласно ANSI ISO/IEC 14882:2003?
Ты не понял. Впрочем и я не сильно внятно выразился.
Я не про то, что void main() есть гут и допустимо. Я про то, что это самое меньшее из бед, с которым можно столкнуться. А народ почему то вместо того чтоб обращать внимание на реально серьезные ошибки разводит кучу писанины про void main().
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[18]: А можно пример РЕАЛЬНОГО кода?
От: CreatorCray  
Дата: 01.06.07 06:30
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Спор начался с того, что ссылка сама — грабли, так как по её использованию не видно, ссылка это или реальный объект

IMHO не совсем так: речь шла про то, что ссылка в данном конкретном примере — грабли.
А так ссылки есть гут.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: что за ....!!! где C++ программисты?
От: landerhigh Пират  
Дата: 01.06.07 06:41
Оценка:
Здравствуйте, puremind, Вы писали:


P>Но вот человек которые не может сказать сколько у class A {}; конструкторов желаемого места явно не получил бы ...



P>Опять же есть вопросы такого рода:

P>1. Неявное преобразование типов
P>2. Поиск наилучшего матча для шаблонных функций...

P>готов спорить что без подготовки никто не ответит полно и правильно ... вопрос нужно не нужно оставляю открытым ...


Только "хорошесть" программиста все эти вопросы определить никак не помогут.
Как отсеивать будете тех, у кого это уже дцатое собеседование и все вопросы заучены?

Кстати, а какой правильный ответ на вопрос, поставленный как "Неявное преобразование типов"? Требуется написать реферат или что?
www.blinnov.com
Re[9]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 01.06.07 06:47
Оценка:
Здравствуйте, FDSC, Вы писали:

S>>
S>>C::C(const B *s) : x_(b)
S>>{}
S>>

S>>от
S>>
S>>C::C(const B *s)
S>>{
S>>  x_.assign(s);
S>>}
S>>


S>>и знал, почему первый вариант предпочтительнее.


FDS>b — это у нас что такое? s что ли? И почему первый вариант предпочтительнее?


В первом варианте не вызывается дефолтный конструктор. Для маленьких классов выигрыш незначительный, для больших может быть существенным. Но в любом случае не следует использовать второй вариант по той причине что вы так привыкли писать в Си, Паскале, Бейсики или ещё где. Для С++ первый вариант — нормальный и читается достаточно легко.
В коде выше — опечатка:b-s.

S>> Чтобы он не думал, что писать, i++ или ++i, а первый вариант выбирал бы только в том случае, если ему в данном куске кода действительно нужно знать, что было в i до инкремента. А не писал по привычке i++. Привычка должна быть другая — писать по умолчанию ++i


FDS>Так, а чем вам i++ не угодило то? Честно скажу, когда я вижу ++i всегда заменяю на i++, потому что ++i раздражает


i — не обязательно встроенный тип, это может быть какой-нибудь навороченный итератор делающий достаточно сложные преобразования.Как правило посфиксный оператор реализуют через префиксный с копированием, отсюда и разница.
Re[15]: А можно пример РЕАЛЬНОГО кода?
От: fmiracle  
Дата: 01.06.07 07:54
Оценка: -1
Здравствуйте, FDSC, Вы писали:

_>>тут вообще труба

FDS>Да, тут труба, ваш код с дефолтным конструктором не компилируется
FDS>Error 1 error C2758: 'ScopedLocker::m_synch' : must be initialized in constructor base/member initializer list f:\prg\tmp\070530cpplinks\cpplinks\cpplinks.cpp 29

FDS> Ну как?


Вот он тебе про то и говорит — что дефолтный конструктор опасен, но в случае ссылки даже скомплировать такой код не получится, т.е. компилятор следит за возможностью ошибки. И это очень хорошо. У компилятора голова не болит, она у него железная. В отличие от программиста.
Чем больше проблем отлавлиает компилятор — тем проще программисту.
Re: что за ....!!! где C++ программисты?
От: flashinc  
Дата: 01.06.07 09:27
Оценка: 8 (4) +4
Возьму риск сделать feedback по наблюдению темы.
(вопрос был немного в другом, но сишники занялись как всегда любимым делом — отслеживанием инициализации ссылок, итд...)


В оригинальном письме содержалось:

не могу найти программиста-профессионала C++: все приходят либо 4.0K+ и ничего делать не хотят ("давайте я будут обсуждать архитектуру, а в свободное от этого время — писать код"), либо 1.5K и в глазах вопрос...
а посередине никого не осталось???

Так вот дело в том, все верно, что не можете найти С++.
Ибо C++ программист, это дело такое — он должен быть либо высочайшим профессионалом, либо он не должен быть C++ программистом. Посередине не должно быть. По определению C++ программиста. А вы хотите посредине. Вот отсюда и этот life concept misunderstanding. Или платите деньги и нанимайте профессионалов (найти будет очень сложно, они уже все расхватаны). Или студентов, но миритесь. Везде должен быть компромисс.


Потом второе. Последив за дискуссией, стал понятен ваш метод отсева программистов (я называю их программистами — хотя ваш подход прослеживающийся в дискуссии — это "кодописатель-который-идеально-знает-язык-си-плас-плас"). Некоторые довольно мудрые люди уже заметили, что студент легко справляется с вопросами касаемо синтаксиса языка. А как же быть, если программа не линкуется? Нужно подключить third-party библиотеку? Найти memory leak в этой библиотеке?

Сделайте упор все-таки на практическую сторону. А именно — дайте вначале простейший тест с вопросами (без лимита по времени), затем посадите человека за конкретный инструмент, написать что-то конкретное, по вашей специфике. В некоторых случаях можно получить удивительные результаты. И может случиться так, что они вас удовлетворят.

Вот пример — мне знаком человек, который не ответит на вопросы по ссылкам, виртуальным деструкторам, и уж тем более — темплейтам. То есть он, не "высочайший C++ профессионал". (Соответсвенно, не просит $2-3K, зарплата <1K)
Но зато он очень и очень быстро само-обучаем, способен читать любой ассемблер (и мгновенно разобрать структуру программы) и написать очень функциональный, очень робастный код, снабженный отличными комментариями. Причем, программы/алгоритмы которые он пишет сам, не задавая нигде вопросов, весьма сложны — это, например, эмуляторы микропроцессоров с динамической рекомпиляцией и анализом микропроцессорного кода, и эмуляторы hardware (заметьте, я говорю — сложны программы, а не "C++ текст", как раз C++ текст у него прост). Он понимает общие концепции ООП и использует их с умом. А не лепит везде классы, гуарды, темплейты и ссылки. Ему достаточно указателей. И главное — все работает исключительно хорошо.

Так вот, может быть стоит:
a) Изменить подход к отсеву кандидатов (после ответа на вопрос, кто нужен — "идеальный C++ кодописатель" или "талантливый C++ программист")
б) Выбрать другую платформу? Java? .NET ?
Re[19]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 09:43
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, FDSC, Вы писали:


FDS>>Спор начался с того, что ссылка сама — грабли, так как по её использованию не видно, ссылка это или реальный объект

CC>IMHO не совсем так: речь шла про то, что ссылка в данном конкретном примере — грабли.
CC>А так ссылки есть гут.

Ну, лично я спорил о том, что ссылки вообще грабли, если эти ссылки — члены класса
Re[2]: что за ....!!! где C++ программисты?
От: Awaken Украина  
Дата: 01.06.07 09:43
Оценка:
>микропроцессорного кода, и эмуляторы hardware (заметьте, я говорю — сложны программы, а не "C++ текст", как раз C++ текст у него >прост). Он понимает общие концепции ООП и использует их с умом. А не лепит везде классы, гуарды, темплейты и ссылки. Ему достаточно >указателей. И главное — все работает исключительно хорошо.

отметил ваш пост как полезный!
это к вопросу, нужен ли вам человек чтобы "гнуть пальцы", или выполнять конкретные задачи в заявленный срок.
мне предпочтительнее второе
Re[16]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 09:49
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>Вот он тебе про то и говорит — что дефолтный конструктор опасен, но в случае ссылки даже скомплировать такой код не получится, т.е. компилятор следит за возможностью ошибки. И это очень хорошо. У компилятора голова не болит, она у него железная. В отличие от программиста.

F>Чем больше проблем отлавлиает компилятор — тем проще программисту.

А я что, говорю о чём-то другом? ПОЖАЛУЙСТА, ЧИТАЙТЕ МОИ СООБЩЕНИЯ ПЕРЕД ТЕМ, КАК ОТВЕЧАТЬ НА НИХ!!!

Выше я привёл пример, когда компилятор не даёт скопилировать код не в случае ссылки, а в случае константного указателя. Т.е. я привёл код, где указатель точно так же надо ОБЯЗАТЕЛЬНО инициализировать в конструкторе как и ссылку во избежании ошибки компиляции
Re[18]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 09:52
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>Здравствуйте, FDSC, Вы писали:


FDS>>Как раз для этого я и говорю, что указатели лучше. Потому что про ссылку можно забыть, что она ссылка, а указатель — он сразу видно, что указатель

LM>А мне крысу достаточно навести, чтобы узнать что это ссылка, а чтобы узнать может ли этот указатель быть нулевым придется по коду полазить

Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо
К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся
Re[7]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 09:54
Оценка: -1 :)
Здравствуйте, WolfHound, Вы писали:

WH>Я честно говоря не помню что сказано в писании и мне лень там копаться но как насчет такого кода:

WH>
WH>struct ABC
WH>{
WH>    int& a;
WH>};

WH>int a = 123;
WH>ABC abc = { a };
WH>



WH>VC++8 даже и предупреждения не выдал. А просто скомпилил и отработал как ожидалось.


Вообще-то компилятор должен, вроде, сам сгенерировать дефолтный конструктор ABC(int &)
Re[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 09:56
Оценка:
Здравствуйте, alzt, Вы писали:

A>i — не обязательно встроенный тип, это может быть какой-нибудь навороченный итератор делающий достаточно сложные преобразования.Как правило посфиксный оператор реализуют через префиксный с копированием, отсюда и разница.


Если это будет итератор — я учту. Только скорее я буду там использовать ".Next" а не "++", а если я пишу for (int i = 0; i < L; i++), то какого чёрта мне писать ++i, это просто некрасиво
Re[13]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 10:03
Оценка: +1 -1
Здравствуйте, 0x8000FFFF, Вы писали:

FFF>>>Я уверен в этом, потому что всё между собой тесно связанно и одно из другого вытекает... если заниматься делом не абы как, а с фундаментальным подходом — то все можно познать.


FDS>>Ну, я вот сейчас сопроматом занимаюсь. Стандартный курс сопромата сдал на 5. Вы думаете, что я понимал то, за что получил 5? Да не фига! Мне потребовалось 1,5 года занятий по нелинейной теории чтобы наконец-то понять, что же там было.


FFF>Ну вот видите — как все между собой связано — в программирование все тоже самое...


Ну и? Но как мне это помогло выучить теор. мех напирмер? Да никак

Связано то связано, только всё равно, тонкости языка можно почувствовать, только когда реально много на нём программируешь и взаимодействуешь с другими программистами
Как только ушёл от этого языка — сразу забывать начинаешь. Я после .NET частенько даже забываю о том, что память нужно очищать, а уж чем protected в Delphi отличается от protected в C#, наверняка, правильно не скажу. Мне это просто не нужно, а если бы было нужно — сказал бы слёту
Человек имеет свойство забывать то, с чем давно не имел дела. Хотя забывается всё по разному, но забывается, а для того, чтобы сначала что-то изучить нужно потратить много времени (чтобы потом забыть)

Мне безразлично на каком языке я программирую, но это не значит, что я знаю все тонкости и даже просто все основные концепции программирования на C++, хотя писал на нём нормально работающие программы. Для того, что бы знать C++ мне нужно программировать на нём нечто относительно сложное и в коллективе, что бы шёл обмен опытом. Грубо говоря, как сейчас, когда мне объясняют, что ссылки вполне можно использовать и в этом нет ничего страшного (что для меня новость), а сами не могут понять, что указатели тоже можно использовать, аналогично ссылкам, с обязательной инициализацией
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.