Re[4]: что за ....!!! где C++ программисты?
От: DKM_MSFT  
Дата: 30.05.07 21:46
Оценка: 30 (13) +8 -6
Здравствуйте, Sergey, Вы писали:

S>Зато незнание языка много что значит У меня на собеседовании треть кандитатов уходила после того, как не могли ответить на один из первых вопросов — как проинициализировать ссылку-член класса.


Это означает лишь то, что благодаря вашим усилиям, компания, вполне вероятно, лишилась многих хороших программистов.

S>Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...


Наверное, этот случай должен был убедить вас в том, что вы спрашиваете какую-то ерунду, да?

Вообще ваш вопрос — один из самых глупых вопросов для собеседования, которые я когда-либо слышал.

Мало того, что вы спрашиваете об одной из наименее полезных особенностей конкретного языка, которую в 100% случаев можно заменить другой конструкцией без какого-либо ущерба для производительности и читаемости кода. Так, ко всему этому, исчерпывающую информацию об этой особенности можно получить из MSDN в течение одной минуты.

Давайте, я вас сейчас спрошу о том, как в функции SetSecurityDescriptorDacl указать, что передаваемый DACL был в явном виде указан пользователем. А может быть, вы даже не знаете, что такое DACL? Это ж, блин, каким любознательным человеком надо быть, чтоб за сколько там у вас лет опыта программирования под Windows, да...

Причем, обратите внимание, неспособность ответить как на мой вопрос, так и ваш, свидетельствует лишь о том, что человек не использовал некоторую конструкцию в силу того, что она ему была не нужна. Ответы на оба вопроса находятся в течение минуты в документации. Однако вы, в отличие от меня, спросили про вещь, использования которой можно избежать всегда. Так если вы считаете мой вопрос глупым, то как вы охарактеризуете ваш?
Re: что за ....!!! где C++ программисты?
От: Kubyshev Andrey  
Дата: 31.05.07 11:36
Оценка: 1 (1) +6 -1 :))) :))) :))) :)
Читаю эту ветку находясь в отпуске на море... И знаете, такое чуство возникает, что возня какая то у вас там в Москве нездоровая
Не то что бы я там че то, просто я к тому что оторвите взгляд от компа, типа повертите в разные стороны и все такое...
А вы опять за свои копи-конструкторы, констатные методы и прочее ...
Re[10]: что за ....!!! где C++ программисты?
От: Панда Россия  
Дата: 31.05.07 13:16
Оценка: :))) :))) :))) :)))
Здравствуйте, superman, Вы писали:

S>хм.. чисто ради любопытства, а что ты об ссылках думаеш?


Первое мое знакомство со ссылками состоялось в глубоком детстве, когда я в школе проходил рассказ про В.И.Ленина, который в ссылке прятал революционные книжки от жандармов. Но это высший пилотаж. Я до сих пор не понимаю, как можно спрятать в ссылке революционные книжки. И не смог бы ответить на такой вопрос на собеседовании.

А так, вообще, чего о них думать? Ссылки — они и есть ссылки. Одна из конструкций языка, временами удобная.
Re[11]: что за ....!!! где C++ программисты?
От: Панда Россия  
Дата: 31.05.07 17:55
Оценка: 19 (3) +8
FFF>Это миф, придуманный теми, кто просто в силу своего уровня не в состоянии понять... Это тоже самое, что сказать, что не возможно познать всю математику в университете (а там не меньше, а я бы сказал больше информации)...

Возьмите любого студента через 2-3 года после окончания университета. Много он той математики вспомнит, если его дальнейшая работа не была с ней связана? Хорошо, если из каждого раздела по нескольку основных определений и теорем будет помнить. Так же и программист: если ему не приходилось использовать какую-то грань языка С++ в работе, то он вполне может ее наизусть не помнить. Хотя иметь при этом солидный опыт и хорошо писать программы.

Хороший программист — это не тот, кто хорошо знает редкие и малоиспользуемые конструкции языка, а тот, кто хорошо умеет использовать простые и распространенные. А если ему понадобится использовать что-то, что он не знает, то потратит десять минут и изучит, делов то.
Re[6]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 16:30
Оценка: 3 (1) +2 -7 :)
Здравствуйте, alzt, Вы писали:

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


A>Скорее всего вот это:

A>
A>class Test
A>{
A>public:
A>    Test(int i):m_i(i){}
A>private:
A>    int& m_i;
A>};
A>


Я в шоке... кому и зачем такое может понадобиться?

Честно говоря, я бы за такой код кое-кого бы мочканул... и уж точно не пошёл бы работать к тому, кто это спрашивает первым вопросом
Некоторые люди вообще не советуют ссылки использовать, просто чтобы сразу было видно, что значение переменной может быть изменено, а вы про ссылки в классах спрашиваете

Здесь же явные грабли — программист думает, что изменяет приватный член класса, а на самом деле...

А ведь тут можно сделать и так:
// CppLinks.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <conio.h>
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

class C1
{
public:
    C1(int &ai): i(ai)
    {
    }


    int &i;
};

class C2
{
public:
    void PrintI()
    {
        cout << i << endl;
    }
    C1 * GetC1()
    {
        return c1;
    }
    C2(int ai)
    {
        i  = ai;
        c1 = new C1(i);
    }

    virtual ~C2()
    {
        delete c1;
        c1 = NULL;
    }

private:
    int i;
    C1 * c1;
};

int _tmain(int argc, _TCHAR* argv[])
{
    C2 c2(5);
    C1 * c1 = c2.GetC1();

    c2.PrintI();
    (*c1).i = 1;
    c2.PrintI();

    _getch();
    return 0;
}


В итоге какой-нибудь программист убъёт кучу времени, когда будет искать ошибку, потому что, возможно, забудет, что он общается со ссылкой, а не с переменной. А если бы там был указатель, то он сразу бы понял, что он куда-то указывает
Re[23]: ну и зря ...
От: hunter_707 Россия  
Дата: 04.06.07 06:28
Оценка: -6 :))) :)
ссылка — далеко не самое удачное изобретение микрософта ...
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[6]: что за ....!!! где C++ программисты?
От: kittown  
Дата: 31.05.07 16:24
Оценка: 4 (2) +3 :))
Hi

P>вопрос про ссылки ЭЛЕМЕНТАРНЫЙ — и если человек не знает, не может догадать или вывести гуся из опыта — это серьезный звонок. И можно воздержаться от бездоказательных утверждений типа — "по вашей вине столько хороших сотрудников" ...


P>Во первых — хороший сотрудник должен писать хороший код, а это невозможно без знания языка ...

P>Во вторых к ссылкам можно еще добавить const-модификаторы, некоторые "профессионалы" не понимают когда и зачем его использовать и не видят разницы между ...

P>А это уже реальный косяк! .. =)


Не слишком. Полгода поработав на другом языке, подобную мелочевку (а это именно мелочевка, непринципиальные фичи) можно и забыть.

P>и понимание основных механизмов языка (в мсдн-е не дают) это не тоже самое что и знание кактой то апишной функции которую действительно можно посмотреть в справочнике ....


Основные механизмы в C++ в точности те же, что и в обычном Си. От слова "основные". Все остальное — дополнительные и необязательные фичи. В некоторых компаниях они возводятся в фетиш и активно разбавляются не менее интересными внешними инструментами а-ля буст. В некоторых других компаниях значительная часть фич языка (вплоть до stl) просто запрещается к использованию, и никаких катастроф от этого не происходит. Это не самые существенные детали, и уж тем более не основы.

Я иногда принимаю экзамены по c++ для студентов, которые в силу бытия студентами знать его даже наполовину не могут в принципе. Из них многие легко ответят на ваши вопросы, а потом некоторые напишут вот это:

void MyString::addChar(char ch) {
    if (charsNum < buffSize) {
        buff[charsNum++] = ch;
        return;
    } 

    char* temp = new char[buffSize+1];
    buffSize = buffSize + 1;
    for(int i = 0; i < charsNum; i++) temp[i] = buff[i];
    temp[charsNum++] = ch;
    delete buff;
    buff = temp;
    delete temp;

    return;    
}


Михаил
Re[3]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 30.05.07 14:39
Оценка: -6 :)
Здравствуйте, 0x8000FFFF, Вы писали:

FFF>Тут я согласен =) Вообще это дурной тон так проводить собеседования... Просто человек не умеет собеседовать. Знание языка еще ничего не значит — это как знание алфавита и умение писать стихи... По настоящему цель ведь собеседования — это понять сможет ли человек работать, сможет ли разобраться в специфике, какой опыт человек может привнести в команду.


Зато незнание языка много что значит У меня на собеседовании треть кандитатов уходила после того, как не могли ответить на один из первых вопросов — как проинициализировать ссылку-член класса. Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[15]: А можно пример РЕАЛЬНОГО кода?
От: sc Россия  
Дата: 31.05.07 12:12
Оценка: :))) :))) :)
Здравствуйте, FDSC, Вы писали:

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


D>>>Причём ещё до начала работы с ним.

sc>>Это точно Спешил. Но надеюсь все поняли, что я имел ввиду

FDS>Вот, видите какой вред от ссылок?


FDS>А если представить себе ещё одно неправильное использование такой структуры блокировки: она незаметно для программиста (ну спешил человек или устал просто и не заметил) попадает во вложенные операторные скобки, а на самом деле должна блокировать всю функцию. Вот вам ещё одна ошибка, которую надо искать.... Правда тогда нужно делать функцию, а потом её обернуть ещё одной с синхронизацией чтобы точно никаких ошибок не было.... а это в C++ будет уже не удобно, скорее всего


В данном случае, если ссылку заменить на указатель, вред точно такой же
Почему же указатели хуже? Потому что Гугл на запрос "pointers are evil" выдает 554 ссылки а на "references are evil" всего 10
Re: что за ....!!! где C++ программисты?
От: Дмитрий В  
Дата: 30.05.07 09:00
Оценка: 10 (4) +2
Здравствуйте, maximm__, Вы писали:

убедительная просьба следить за объемом цитирования, следующий подобный экзерсис может повлечь за собой санкции согласно правил форума — модератор
__>постоянная занятость и сильный, профессиональный коллектив
Как-то волею судеб я попал в контору, HR-менеджер которой создавал топики типа "где все PHP-программисты? 90% приходящих на собеседования не соответствуют заявленному уровню" и пр.., при этом мне сунули исходник кода для того, чтобы я им рассказал что в нем просходит, он начинался с некоторого SQL запроса, потом проход в цикле по резалтсету (я вообще пришел на вакансию java разработчика), затем еще один SQL запрос (сам SQL писался здесь же в коде, они были довольно здоровые, я также должен был обьяснить чего они достают из базы), потом некоторая логика на java, и зетем (что меня вообще убило) был блок года типа:
%> <td>....</td>
<%

то есть это была JSP страница! я был в шоке — люди не то что про расслоение системы не слышали, они и про MVC ничего знать не хотели.

Мораль — прежде чем искать соринки в чужих глазах, вытащите бревна из своих

П.С. поймите, вы взаимодействуете не людьми, а с рынком, и не надо пытаться их разводить. Если рынок ваше предложение не принимает, в этом виноваты только вы. Чем больше вы ноете, тем больше пытаетесь для себя найти оправдание своей неправильной позиции. Лучше бы создали топик типа "Что сейчас хотят программисты"
Re[2]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 29.05.07 12:34
Оценка: +6
> Где ты алгоритмы видел в пользовательских интерфейсах???

Я видел Их там полно. Достаточно попытаться визуализировать граф хотя бы из пары сотен узлов, и вы поймете, где в пользовательских интерфейсах алгоритмы. Да что там графы, даже для того, чтобы нарисовать обычную "cake" гистограмму — но так, чтобы надписи друг на друга не налазили, и то придется немножко подумать.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: что за ....!!! где C++ программисты?
От: Дмитрий В  
Дата: 30.05.07 17:06
Оценка: 3 (1) +4
Здравствуйте, FDSC, Вы писали:

FDS>В итоге какой-нибудь программист убъёт кучу времени, когда будет искать ошибку, потому что, возможно, забудет, что он общается со ссылкой, а не с переменной. А если бы там был указатель, то он сразу бы понял, что он куда-то указывает

Вот я уже чуть выше привел пример, когда мне предлагали на собеседовании определить, что делает код, который при этом написан людьми, неслышавшими про рефакторинг, расслоение, MVC. То есть обсдача товарищей по полной.
Зачем вообще задавать такие дурацкие вопросы? Непонятно. По-моему цель — просто избавиться от соискателя вакансии. Непонравился человек, или хочет много. Поэтому у меня даже были мысли начинать искать работу с кадрового агенства — они хотя бы будут анализировать людей по более абстрактным вещам, типо выполняемая работа на предыдущей работе, личностные качества, позволяющие изучить новые моменты, с которыми не приходилось сталкиваться.
Собеседовать вообще сложно — большая ответственность. Вот видимо программеры и теряются в определении приоритетов к требованиям знаний соискателя.

А если человек заранее походил по собеседованиям, услышал все стандартные вопросы, и отвечает сходу на все? У меня было такое. На седьмом собеседовании (предыдущие 6 уложились дня в 3-4) я даже вопросов не дожидаясь сам все рассказывал (а когда только начинал ходить, были некоторые пробелы, которые собственно и закрыл благодаря собеседованиям) — всем рекомендую так делать

Мелочи вот эти все забываются быстро, в голове остаются только основные понятия. Смысл гонять человека по мелочам? По-моему просто ради выпендрежа — а то как же так, ответит он на все вопросы, будет думать что мы тут все лохи а он крутой. Хотя когда видят, что человек имеет хороший опыт, стараются не доставать вопросами (а то разумничается) — говорят больше о работе.
что за ....!!! где C++ программисты?
От: maximm__  
Дата: 18.05.07 14:36
Оценка: :))) :))
не могу найти программиста-профессионала C++: все приходят либо 4.0K+ и ничего делать не хотят ("давайте я будут обсуждать архитектуру, а в свободное от этого время — писать код"), либо 1.5K и в глазах вопрос — "а он про шаблоны спросит или нет?"

а посередине никого не осталось???

программисты на C++!!! те, кто реально пишут код, любят boost, но не боготворят, начинают проект с автосборки, где Вы?!

Мне бы сейчас пару парней со старших курсов ВМК или мехмата...

Максим
job@glowbyte.com

P.S. работа алгоритмичная, с упором на производительность, не-драйвера. ненавидящим создание пользовательских интерфейсов не беспокоиться.

постоянная занятость и сильный, профессиональный коллектив


30.05.07 00:34: Перенесено модератором из 'Работа — предложения работы от прямых работодателей' — Хитрик Денис
Re[2]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 03.06.07 11:01
Оценка: :))) :))
Здравствуйте, Kubyshev Andrey, Вы писали:

KA>Читаю эту ветку находясь в отпуске на море... И знаете, такое чуство возникает, что возня какая то у вас там в Москве нездоровая

Ты бросил пчел и огород без присмотра?!

KA>Не то что бы я там че то, просто я к тому что оторвите взгляд от компа, типа повертите в разные стороны и все такое...

KA>А вы опять за свои копи-конструкторы, констатные методы и прочее ...
Так в деревне тоже не все ладно. На море сидеть в инете....
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[7]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 31.05.07 12:20
Оценка: 12 (4)
Здравствуйте, FDSC, Вы писали:

S>>А умение понимать чужой код у нас теперь типа не котируется? Если в программе этих ссылок как грязи, а человек не понимает ни списков инициализации, ни ссылок — как он будет в ней разбираться?


FDS>А вы его ему кода не давали, вы просили его написать. Разница принципиальная, согласитесь


Мне надо, чтобы человек знал, что такое списки инициализации. Чтобы он знал, чем отличается

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

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


и знал, почему первый вариант предпочтительнее. Чтобы он не догадался о существовании списков инициализации и об этом отличии на собеседовании, а у него в подкорке уже было проштамповано, что по умолчанию надо выбирать первый вариант. Чтобы он не думал, что писать, i++ или ++i, а первый вариант выбирал бы только в том случае, если ему в данном куске кода действительно нужно знать, что было в i до инкремента. А не писал по привычке i++. Привычка должна быть другая — писать по умолчанию ++i. Чтобы человек не забывал писать explicit, определив в классе конструктор конверсии. Чтобы он не писал код вида:
C::C()
{
   x = new K;
   y = new L;
}

C::~C()
{
   delete x;
   delete y;
}

Чтобы написав в деструкторе delete, не забывал запретить (или определить) у класса конструктор копирования и оператор присваивания.
А вы говорите — "ах, про ссылки спросили! звери, не иначе!".
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[4]: что за ....!!! где C++ программисты?
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 31.05.07 00:23
Оценка: 7 (4)
Здравствуйте, LuciferMoscow, Вы писали:

LM>Я сломаю Ваши детские фантазии. "Вредные" програмисты ИМХО делятся на три категории

LM>1. Молокососы, которые
LM>- прочитали об уязвимости в вынь98 на одном сайте
LM>- скачали программу для атаки этой уязвимости на другом сайте
LM>- взломали соседа Васю
LM>- возомнили себя кул хакерами

LM>2. Бизнесмены.

LM>Для них это бизнес. Читсый бизнес. Трояны пишутся для создание сети зомби машин, которые рассылают спам.

Там не совсем на самом деле так — там есть очень большая прослойка людей, для которых серьезные дядьки написали кучу действительно хорошего и опасного софта, а они занимаются его "коммерческой эксплуатацией" — сайты делают из него него с которых можно скачать "супер кодек который порнуху жмет в 2 раза лучше чем все остальные" и т.п. Сотрудничество между ними разное — от прямого денежного, до "никогда не видел, просто трояны делают работу как для того кто ими всех заразил(отконфигурировал), так и для того кто их написал". Наверное этих людей можно назвать "кулхацкеры которые решили подзаработать"

P.S. Кстати мысли в тему — для предотвращения от "кулхацкеров" многие эксплойты принято распространять в неработоспособном виде. Помню, когда для циски вышел эксплойт который могу уронить почти любую циску которая роутила IPv4 — ребята цискари попросили меня его собрать. Собрал — не работает. Открываю а там в функции main цикл(с описанием — цикл шлет пакеты такого типа которые никогда не выкидываются из буфера, он засоряется — циске кирдык), и цикл аж от 1 до 4 — афигеть. Поправил на 1M — работает. Что уже позже подумалось — такой простой fix отсекает процентов 95 кулхацкеров которые научились делать "make; make install"
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[6]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 09:49
Оценка: 6 (2) :))
Здравствуйте, pavel_turbin, Вы писали:


_>

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

_>


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


мы тут на днях встретили в одной библиотеке такой перл:

class Foo;
class A {
public:
    A(Foo&);
    A();
    void do_something();
private:
    Foo& m_foo;
    bool m_is_foo_ok;
}

A::A(Foo& foo)
: m_foo(foo)
, m_is_foo_ok(true)
{}

A::A(Foo& foo)
: m_foo(*NULL)
, m_is_foo_ok(false)
{}


и тереь внимание в студии, самая главная часть перла:

void A::do_something()
{
    if (m_is_foo_ok){
        m_foo.do_something();
    } else {
        // TODO хм.. надо будет подумать как обрабатывать эту ситуёвину
    }
}


а средства языка ИМХО знать надо.
Re[8]: что за ....!!! где C++ программисты?
От: Eugeny__ Украина  
Дата: 31.05.07 12:47
Оценка: 1 (1) :)))
Здравствуйте, superman, Вы писали:


S>а потом возникают вопросы о проблемах с понимением молодых програмистов


Инетерсно, вы нечаянно написали 3-ю "н", или нечаянно заменили "а" на "е"?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re: что за ....!!! где C++ программисты?
От: machine3000  
Дата: 21.05.07 12:06
Оценка: -1 :)))
Здравствуйте, maximm__, Вы писали:

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


За 3.0K кроме меня вы никого не найдёте Образец
Re[2]: что за ....!!! где C++ программисты?
От: machine3000  
Дата: 30.05.07 10:49
Оценка: :))) :)
Здравствуйте, Дмитрий В, Вы писали:

Лучше бы создали топик типа "Что сейчас хотят программисты"

Да, общество недооценивает значимость этих людей. Несмотря на их нехватку и не взираю на то, что от спама, вирусов и DDOS атак уже не продохнуть. А кто, как не обиженные программисты устраивает это безобразие. Программистов надо холить и лелеять и не оставлять без присмотра. А иначе... Представляю картину лет через 20. Шныряют везде вредные вертолётики. Плюются чернилами и перцовым газом. Таскают мелкие предметы. Перекусывают провода. Стоит отлучиться, оставив открытым окно, втыкаются в USB, сажают трояна, крадут информацию.
Re[12]: что за ....!!! где C++ программисты?
От: flashinc  
Дата: 01.06.07 18:31
Оценка: +2 -2
FDS>>Если это будет итератор — я учту. Только скорее я буду там использовать ".Next" а не "++", а если я пишу for (int i = 0; i < L; i++), то какого чёрта мне писать ++i, это просто некрасиво
F>Думай на тему STL и общего дизайна кода по всему проекту:
F>for (int i = 0; i < L; i++)
F>for (iterator i = start; i != end; ++i)
F>суть циклов совершенно одинакова. Почему надо в одном случае пиасать ++i а в другом i++???
F>Почему не писать более "общий" ++i?
F>Какая тут вообще принципиальная разница с этетической точки зрения где плюсики? Надо просто взять какой-то вариант в привычку да и использовать. Привычным может быть как тот так и другой. Зачем так упираться в свою привычку-то?
F>Я раньше тоже всегда писал i++, казалось красивее. Почитав про копирование перешел на ++i без каких-то проблем — теперь так же кажется красивее это. Или у тебя есть строгое доказательство большей красивости постфикса над префиксом? :)

Это всего лишь "мода" Мейерса или Саттера. Кроме того что прочитать и следовать "новой моде" полезно знать, какой код будет в реальности. А в реальности в 99.9% temporary не создастся, только если специально не стараться. Если иметь по всему проекту привычку писать ++i, легко "намозолить глаза", и рано или поздно, влететь в ситуацию когда напишешь ++ptr = ... вместо ptr++ Представим, что мы пишем некий аддон для браузера, где этот указатель передается в функцию и по нему что-то записывается или читается.
Далее может быть такой сценарий: memory access, на x86 как известно, чекается по страницам 4kb. Пока количество объектов в списке (массиве) будет определенным, Access Violation происходить не будет. Но в один прекрасный день, допустим, html-документ вытянутый с сервера будет иметь размер как раз такой, что выполнив ++ptr указатель при доступе по нему будет заходить в область другой 4kb memory page. Всё. Access Violation. До свидания. Браузер упал, URL в кэш не записался.

А все почему? Да потому что следовали моде, повышали эффективность оператора i++. В реальности нужно не следовать моде,
а здравому смыслу и все перепроверять на деле. Кстати, это касается и языковых изысков самого Страуструпа...

p.s.
в дискуссии выше, про сылки, еще не промелькнуло использование везде где только можно вместо ссылок или указателей
auto_ptr или shared_ptr. В том числе, и в качестве полей класса. Есть и такие "модники"....
Re[9]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 04.06.07 19:49
Оценка: -2 :))
Здравствуйте, FDSC, Вы писали:

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

А системник выбираете по цвету корпуса. Розовый — это так гламурно...
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[14]: что за ....!!! где C++ программисты?
От: МихаилС Россия  
Дата: 08.06.07 13:45
Оценка: 5 (1) +2
Здравствуйте, FDSC, Вы писали:

FDS> Как только ушёл от этого языка — сразу забывать начинаешь.


Один китайский афоризм гласит (примерно):
"Вершу используют для ловли рыбы: когда рыба поймана,
вершу отбрасывают. Силок нужен — чтобы поймать
зайца: когда заяц пойман, про силок забывают.
Слова нужны — чтобы познать смысл: когда смысл
познан — слова забывают. Где мне найти человека,
забывшего слова, чтобы поговорить с ним!".

Ситуация когда "знал, но подзабыл делати" — не страшна.
Главное знание принципов и базы, понимание как все
это работает и создается. Остальное "вытаскивается
из кэша" при подготовке к выполнению конкретного
задания, с учетом требований и набора технологий,
которые планируется использовать в конкретно этом
проекте.

FDS> Мне безразлично на каком языке я программирую, но это не

FDS> значит, что я знаю все тонкости и даже просто все
FDS> основные концепции программирования на C++, хотя
FDS> писал на нём нормально работающие программы.

Язык (как язык общения, так и язык программирования)
представляет собой прикладное средство, предназначенное
для решения конкретных проблем. Средства языка не
являются равнозначными: какие-то вещи более важны
и их используют все — другие использует один процент
программерского населения. Существует некоторое
минимальное подмножество, которое реально необходимо
и достаточно для написания качественного и отвечающего
требованиям приложения кода — остальное для супер-пупер-
теоретиков — лингвистов — знатоков стандартов "с закрытыми
глазами", носителей "идеологии" языка — его развивателей
и (нас практиков) просветителей.

FDS> Для того, что бы знать C++ мне нужно программировать

FDS> на нём нечто относительно сложное и в коллективе,
FDS> что бы шёл обмен опытом.

Плюс к этому — практически в каждом коллективе это будет
свой собственный "диалект" С++. Свой набор (суб)технологий.
Свой набор библиотек, которые в свою очередь также
оказывают существенное влияние на С++-язык говорящих.
Re: что за ....!!! где C++ программисты?
От: _doctor Финляндия http://agilesoftwaredevelopment.com
Дата: 19.05.07 12:22
Оценка: 2 (2) +1
Здравствуйте, maximm__, Вы писали:

__>а посередине никого не осталось???


__>программисты на C++!!! те, кто реально пишут код, любят boost, но не боготворят, начинают проект с автосборки, где Вы?!


Ну так работают все, не вам одному нужны
Ради прибавки зарплаты в одну-две сотни долларов (и неизвестно как на самом деле изменится система бонусов) не каждый программист решит бросить привычное место. А на $500 больше рынка редкая фирма раскошелится. Вот все и работают там, где уже работают.

ИМХО, единственная возможность нанять хорошего специалиста за не очень большие деньги, это когда он переезжает по социальным обстоятельствам. Ну там, жена поступила в аспирантуру в другом городе или поближе к пожилым родителям, или развалилась фирма, или просто в Москву из другой области.

Попробуйте поактивнее поискать на форумах других областей и предложить помощь с переездом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Chief Software Engineer,
Scrum Master, Symbian
Re[5]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 31.05.07 07:45
Оценка: 2 (2) +1
Здравствуйте, DKM_MSFT, Вы писали:

DKM>Причем, обратите внимание, неспособность ответить как на мой вопрос, так и ваш, свидетельствует лишь о том, что человек не использовал некоторую конструкцию в силу того, что она ему была не нужна. Ответы на оба вопроса находятся в течение минуты в документации. Однако вы, в отличие от меня, спросили про вещь, использования которой можно избежать всегда. Так если вы считаете мой вопрос глупым, то как вы охарактеризуете ваш?


Не надо юродствовать это раз ...

Два, позволю себе с вами не согласится по нескольким пунктам.
Сколько вы в своей жизни провели собеседований?

вопрос про ссылки ЭЛЕМЕНТАРНЫЙ — и если человек не знает, не может догадать или вывести гуся из опыта — это серьезный звонок. И можно воздержаться от бездоказательных утверждений типа — "по вашей вине столько хороших сотрудников" ...

Во первых — хороший сотрудник должен писать хороший код, а это невозможно без знания языка ...
Во вторых к ссылкам можно еще добавить const-модификаторы, некоторые "профессионалы" не понимают когда и зачем его использовать и не видят разницы между ...

сonst int *
int * const

class A
{
void f();
void f() const;
};


А это уже реальный косяк! .. =)

и понимание основных механизмов языка (в мсдн-е не дают) это не тоже самое что и знание кактой то апишной функции которую действительно можно посмотреть в справочнике ....


А что важно в таком случае??
Re[15]: что за ....!!! где C++ программисты?
От: sc Россия  
Дата: 02.06.07 18:12
Оценка: 1 (1) +2
Здравствуйте, FDSC, Вы писали:
<skipped>
F>>>Это всего лишь "мода" Мейерса или Саттера. <skipped>
У Саттера/Александреску понравилась шутка в их 101 правиле (шутка не их). Правило 28.

An ancient joke about C++ was that the language is called C++ and not ++C because the language is improved (incremented), but many people still use it as C (the previous value). Fortunately, the joke is now obsolete, but it's a helpful illustration for understanding the difference between the two operator forms.

Правда они наивно полагают, что шутка устарела. Но нет, она еще все очень актуальна
<skipped>
FDS>А постоянно думать над тем, что эффективно, а что нет — это так можно просто загнуться и ничего не написать. Сколько уже раз говорили, оптимизируйте только то, что реально медленно работает, а таки проколы в оптимизациях компилятора (которые даже оптимизациями-то назвать нельзя) — это не забота программиста, если работает приемлемо быстро
<skipped>
По поводу оптимизации они там же продолжают:

This is not premature optimization; it is avoiding premature pessimization.

Все вышенаписанное посвящено пост/преинкрементам
Re[17]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 05.06.07 09:17
Оценка: 1 (1) +2
Здравствуйте, FDSC, Вы писали:

FDS>>>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.

LM>>А если i имеет тип отличный от инта?

FDS>Какая разница, если команда состоит только из одного "i++;"? "Куда" его тут использовать?


Сразу видно, человек ни разу итераторы не писал Постфиксный оператор ++ обычно реализуется следующим образом:

T T::operator++(int)
{
  T tmp(*this);
  ++*this;
  return tmp;
}
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[2]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 25.05.07 09:41
Оценка: +1 -1 :)
А ты подумай о нервах людей, которые собеседуют — иногда кандидата хочется прогнать после первой минуты общения — некоторые люди наивно полагают, что они программисты...
Re[6]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 16:51
Оценка: :)))
Здравствуйте, puremind, Вы писали:

P>class A

P>{
P>public:
P> A(const A&, int=0); является ли этот конструктор конструктором копирования??
P>};

P>хотя это я так ... просто что-то навеяло ...


После ответа на этот вопрос идёт следующий: "почему?" или "а если убрать = 0", затем "а в каком параграфе стандарта это описано?", затем ехидно произносится "вот уже и не пятёрка..." или "да вы, батенька, просто всё наизусть вызубрили, но ничего не понимаете!"
Re[9]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 09:30
Оценка: +2 :)
Здравствуйте, FDSC, Вы писали:

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


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



FDS>>>Я в шоке... кому и зачем такое может понадобиться?


S>>а потом возникают вопросы о проблемах с понимением молодых програмистов


FDS>Я, вообще-то, не C++-программист так что и проблемы возникают не из-за этого


Хм.. а к чему тогда вообще этот разговор? что за привычка учить других тому, в чем сам "не в зуб ногой".
Я С++ програмист. Я отвечу как проинициализировать член-ссылку класа даже если меня разбудить ночью, хоть и начну свой ответ с нецензурных выражений в адрес разбудившего . Так же расскажу что в этом плохого и хорошего. В прошлом я неоднократно использовал такое в своей работе, соглашусь что это было не самым элегантным, но удовлетворительным и единственным доступным мне тогда решением. Я просто недоумеваю по поводу ваших воплей на тему "потерянных ценных сотрудников". я предполагаю что и среди моих знакомых есть знакомые "С++ програмисты" не способные ответить на подобный вопрос но склонен списывать это на их недоученность а никак не на глупость вопроса.
Re[9]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 12:58
Оценка: :)))
Здравствуйте, Панда, Вы писали:


П>Ни разу в жизни не использовал ++i. Всегда i++. Жизнь кончена! Пойду в грузчики


хм.. чисто ради любопытства, а что ты об ссылках думаеш?
Re[13]: Move Constructors
От: Панда Россия  
Дата: 31.05.07 13:33
Оценка: :)))
Здравствуйте, elcste, Вы писали:
Да очень просто: int main() {} (со второго беглого взгляда видно, что никакого observable behavior тут и быть не могло).

Или хотя бы #define void int

По-моему, изящно получилось. Это вам не ссылки инициализировать. Так программы писать, чтобы они при этом не глючили — вот настоящее мастерство, и сразу видна старая школа!
Re[20]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:20
Оценка: -1 :))
Здравствуйте, deniok, Вы писали:

D>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...


Не понял о чём речь. Эти случаи были в Delphi, которая не делит как VisualStudio версии на релизные и отладочные. Когда я программирую на C++ ПРАКТИЧЕСКИ НИКОГДА не использую отладочный режим: он усложняет отладку
К тому же, я всегда тестирую то, что даю другим, именно тот exe-файл, который даю, потому что часто бывает, что случайно забыл положить что-то в архив в спешке, или случайно взял не ту версию файла, или ещё что-нибудь в этом духе обнаруживается
Re[12]: Move Constructors
От: elcste  
Дата: 31.05.07 12:34
Оценка: 9 (1) +1
Здравствуйте, Sergey, Вы писали:

S> Хуже вопрос только про ++i++ и скобки


А в чем, если не секрет, этот вопрос заключается?

S>А вообще мне у Яндекса очень вопрос нравится, про проблемы в этом кусочке кода:

S>class Foo
S>{
S>public:
S>    Foo(int j) { i=new int[j]; }
S>    ~Foo() { delete i; }
S>private:
S>    int* i;
S>};

S>class Bar: Foo
S>{
S>public:
S>    Bar(int j) { i=new char[j]; }
S>    ~Bar() { delete i; }
S>private:
S>    char* i;
S>};


S>void main()
S>{
S>    Foo* f=new Foo(100);
S>    Foo* b=new Bar(200);
S>    *f=*b;
S>    delete f;
S>    delete b;
S>}

По-моему, как раз очень неудачный вопрос. Проблема этого кода в том, что он ill-formed (с первого беглого взгляда бросается в глаза void main). Как все это сделать правильно? Да очень просто: int main() {} (со второго беглого взгляда видно, что никакого observable behavior тут и быть не могло).
Re[16]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 18:27
Оценка: 2 (2)
Здравствуйте, NikeByNike, Вы писали:

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


FDS>>И тут она будет поймана компилятором. Вставьте ВЕСЬ мой код в компилятор и попробуйте скомпилировать


NBN> virtual ~C2()

NBN> {
NBN> delete c1;
NBN> c1 = NULL; <- лишнее действие
NBN> }

На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные
Re[2]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 30.05.07 09:18
Оценка: 1 (1) +1
Тут я согласен =) Вообще это дурной тон так проводить собеседования... Просто человек не умеет собеседовать. Знание языка еще ничего не значит — это как знание алфавита и умение писать стихи... По настоящему цель ведь собеседования — это понять сможет ли человек работать, сможет ли разобраться в специфике, какой опыт человек может привнести в команду.
Re[5]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 30.05.07 18:46
Оценка: 1 (1) +1
Здравствуйте, CreatorCray, Вы писали:

CC>ну наверное в списке инициализации в конструкторе, или как оно правильно по русски называется

CC>
CC>class test
CC>{
CC>public:
CC>    test (char *a): m_ref(*a) {}

CC>    char &m_ref;
CC>};
CC>

CC>Угадал?
ИМХО, нет.

test (char& a) будет правильнее(код говорит программисту, что нулл сюда совать нельзя)
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[11]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 10:20
Оценка: 1 (1) +1
Здравствуйте, FDSC, Вы писали:


FDS>А где я сказал, что в я "не в зуб ногой"? Просто вы начали говорить, что я не "в зуб ногой" и оттуда все и проблемы, я вам ответил, что я на C++ никогда проекты, которые использовали больше 4-х человек не писал. Вряд ли я могу называться после этого C++ программистом, но участвовать в обсуждении у меня права никто не отнимал. В конце концов, курс по C++ я сдал на отл. автоматом


извините, погорячился.
я просто когда слышу фразу "это деталь, за 5 мнут надйду в МСДН" зверею и начинаю "мочить" всех без разбора.

FDS>Я не воплю по поводу потерянных ценных сотрудников, не приписывайте мне слова других.

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

Не может!
Студент, сдавший курс по С++ на отлично автоматом может нормально програмировать и быть ценным (а также безценным) сотрудником и без подобных знаний, НО ИМХО Человек с 6-ю годами на С++ на этот вопрос не ответить права не имеет.
Re[14]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 14:11
Оценка: 1 (1) +1
Здравствуйте, pavel_turbin, Вы писали:

FDS>>Чем это хуже?


_>только тем, что компилятор не проверяет наличие инициализации существующим объектом.


_>в вашем примере ни кто не мешает написать


_>
_>ScopedLocker<что-то> Locker(0); // будет компилиться
_>


Нет, не будет., Прочтите внимательно мой код. Посмотрите так же этот мой пример http://rsdn.ru/forum/message/2508595.1.aspx
Автор: FDSC
Дата: 31.05.07
. Тут аналогичный код без необходимости проверки указателя на NULL

_>если бы тут была ссылка, то ошибка была бы поймана компилятором.


И тут она будет поймана компилятором. Вставьте ВЕСЬ мой код в компилятор и попробуйте скомпилировать


_>никто не мешает также добавить дефолтный конструктор

_>
_>class ScopedLocker
_>{
_> Synch * const m_synch;
_>....
_>public:
_>ScopedLocker(){}
_>};

_>

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

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

Ну как?
Re[2]: что за ....!!! где C++ программисты?
От: machine3000  
Дата: 01.06.07 10:20
Оценка: 1 (1) +1
Здравствуйте, flashinc, Вы писали:

...

Вопрос можно ставить более широко. Работодатели всегда требуют, чтоб кандидат знал, то, что они считают нужным, умел делать то, что им нужно и делал это именно так, как они считают правильным. При этом работодатели либо не хотят, либо не могут выяснить, может ли кандидат обучиться тому, что им нужно, готов ли он следовать их стандартам программирования и т.д. И порой складывается парадоксальная ситуация, фирма не может найти себе специалиста, а толпа специалистов даже не знает, какие требования предъявляются в этой фирме и не может привести себя в соответствие с этими требованиями.
Re[10]: что за ....!!! где C++ программисты?
От: landerhigh Пират  
Дата: 11.06.07 23:41
Оценка: 1 (1) +1
Здравствуйте, puremind, Вы писали:

L>>Кстати, а какой правильный ответ на вопрос, поставленный как "Неявное преобразование типов"? Требуется написать реферат или что?

P>Реферат? боже упаси там 4 или 5 правил всего определяющих приоритет преобразований ... сейчас посмотрю точно ..
P>Страуструп. $7.4 стр 192 ... я это имел ввиду .. да и то заученного ответа тоже не оджидается ... хотябы понимание проблемы ...
Мне подобные вопросы всегда напоминают анекдот про сороконожку, у которой спросили, как они умудряется одновременно передвигать все свои сорок ног
www.blinnov.com
Re: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 21.05.07 04:32
Оценка: :))
Тута я =) Тока к Вам не пойду — нас и тут не плохо кормят — как раз посередине =)
А по сути — за такими охотятся, их берегут и лилеят в компаниях... По этому найти сложно... Такими людьми не раскидываются...


__>Мне бы сейчас пару парней со старших курсов ВМК или мехмата...


И мне бы... А то вот почитал — человек диплом пишит...: http://www.rsdn.ru/Forum/Message.aspx?mid=2494028&amp;only=1
Автор: Evgeny19
Дата: 20.05.07


и грусно стало...
Re[2]: что за ....!!! где C++ программисты?
От: Правдоруб  
Дата: 21.05.07 18:59
Оценка: +1 :)
Здравствуйте, 0x8000FFFF, Вы писали:

__>>Мне бы сейчас пару парней со старших курсов ВМК или мехмата...


FFF>И мне бы...


У вас все больше вакансии для опытных людей с 3+ годами опыта: здесь.

Да и с мехмата сейчас больше в финансовые аналитики идут — карьерные перспективы покруче будут.

FFF>А то вот почитал — человек диплом пишит...: http://www.rsdn.ru/Forum/Message.aspx?mid=2494028&amp;only=1
Автор: Evgeny19
Дата: 20.05.07


FFF>и грусно стало...


Да на ник посмотри, ему 19 лет похоже. А диплом видимо ПТУ или среднеспец. колледжа какого-нибудь . Как раз 2 года после школы.

Да и наоборот, радоваться надо. Меньше грамотных людей — больше их ценят .
Re[12]: А можно пример РЕАЛЬНОГО кода?
От: dev1024  
Дата: 31.05.07 09:57
Оценка: +1 -1
Здравствуйте, sc, Вы писали:

sc>
sc>int somefunc()
sc>{
sc>    struct ConnectGuard
sc>    {
sc>        Connection &c;
sc>        ConnectGuard(Connection &c): c(c){}
sc>        ~ConnectGuard(){ c.Close(); }
sc>    }

sc>    Connection c;
sc>    if(c.Open(...))
sc>    {
sc>        ConnectGuard(c);
sc>        ....
sc>        if(...)
sc>             return -1;
sc>        ....
sc>        if( ....)
sc>             return -1;
sc>        ....
sc>    }
sc>}


sc>В общем RAII. Не нужно закрывать соединение, оно само закроется.


Причём ещё до начала работы с ним.
Re[7]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 11:53
Оценка: +1 -1
Здравствуйте, 0x8000FFFF, Вы писали:


FFF>Мы те, кому 26-35 — подростковый период провели тогда, когда компьютер — был вещью из мечт, когда приходилось работать и выкручиваться из тех условий, что были когда-то, и паять свой первый Спектрум, изобретать при программировании и главное думать... Была Романтика и самостоятельное желание искать материал, которого было крайней мало — когда книжку передавали из рук в руки... А сейчас всякого хлама написано столько, что стоящие вещи в них теряются... А юниоры тонут в этом объеме хлама... и как следствие — знания хлама есть, знания основ и понимание их — нет...


Что-то мне это очень напоминает... из юмора

А что вы считаете пониманием?


P.S. Вы знаете, у меня тоже не было компьютера и учился программировать я сначала по книгам, а затем уже (через несколько лет) мне его подарили...
так что и в наши дни компьтер — это романтика. Только вот что-то мне не хочется тратить свою жизнь на изучение того, что мне абсолютно не нужно и легко можно заменить другой вещью из этого же языка. По моему, как раз речь идёт о хламе.
Да и языков и библиотек столько, что непонятно, что учить и насколько глубоко
Re[13]: А можно пример РЕАЛЬНОГО кода?
От: pavel_turbin  
Дата: 31.05.07 12:01
Оценка: +1 -1
Здравствуйте, FDSC, Вы писали:

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


FDS>>>Можно ссылочку (на открытый проект) на пример реального кода, где используются ссылки как поля объектов.


_>>Элементарно.


FDS>Чем не нравится так:

FDS>
FDS>template<class Synch>
FDS>class ScopedLocker
FDS>{
FDS>    Synch * const m_synch;
   
FDS>public:

<skip>

FDS>

FDS>?

FDS>Чем это хуже?


только тем, что компилятор не проверяет наличие инициализации существующим объектом.

в вашем примере ни кто не мешает написать

ScopedLocker<что-то> Locker(0); // будет компилиться


если бы тут была ссылка, то ошибка была бы поймана компилятором.

никто не мешает также добавить дефолтный конструктор
class ScopedLocker
{
 Synch * const m_synch;
....
public:
ScopedLocker(){}
};

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


ScopedLocker<что-то> Locker; // рухнет


ссылка тем и хороша, что она обязывает ее задавать всегда, (ну если memcopy не использовать). Язык С тем и страдет "все можно -- никаких проверок".
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 14:26
Оценка: -1 :)
Здравствуйте, Sergey, Вы писали:

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


S>>>А умение понимать чужой код у нас теперь типа не котируется? Если в программе этих ссылок как грязи, а человек не понимает ни списков инициализации, ни ссылок — как он будет в ней разбираться?


FDS>>А вы его ему кода не давали, вы просили его написать. Разница принципиальная, согласитесь


S>Мне надо, чтобы человек знал, что такое списки инициализации. Чтобы он знал, чем отличается


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>и знал, почему первый вариант предпочтительнее.


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

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


Обращайтесь на кафедру систем пластического деформирования

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


Так, а чем вам i++ не угодило то? Честно скажу, когда я вижу ++i всегда заменяю на i++, потому что ++i раздражает
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[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++ мне нужно программировать на нём нечто относительно сложное и в коллективе, что бы шёл обмен опытом. Грубо говоря, как сейчас, когда мне объясняют, что ссылки вполне можно использовать и в этом нет ничего страшного (что для меня новость), а сами не могут понять, что указатели тоже можно использовать, аналогично ссылкам, с обязательной инициализацией
Re: что за ....!!! где C++ программисты?
От: Resnick Россия  
Дата: 02.06.07 14:29
Оценка: +1 :)
Здравствуйте, maximm__, Вы писали:

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


Заканчивать надо с GUI на C++.
Re[24]: ну и зря ...
От: Sni4ok  
Дата: 04.06.07 18:12
Оценка: :))
Здравствуйте, hunter_707, Вы писали:


_>ссылка — далеко не самое удачное изобретение микрософта ...


вы настолько грамотны, что до сих пор верите, что стандарт с++ придумали майкрософт?
Re[26]: ну и зря ...
От: BulatZiganshin  
Дата: 05.06.07 11:37
Оценка: :))
_>>>ссылка — далеко не самое удачное изобретение микрософта ...

S>>вы настолько грамотны, что до сих пор верите, что стандарт с++ придумали майкрософт?


_>а вы действительно настолько наивны и до сих пор полагаете, что стандарты в данной области принимаются (или, что еще вернее, могут быть приняты) без него?


— проститет, а церковь тоже я разрушил?
— нет, это до вас ещё

Люди, я люблю вас! Будьте бдительны!!!
Re[13]: Блин, меня глюкнуло...
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 17:17
Оценка: :))
Здравствуйте, WolfHound, Вы писали:

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


FDS>>>>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует

WH>>>Как проверял?

FDS>>Скомпилировал и посмотрел, компилит он код с инициализацией через конструктор, которого я не объявлял или нет


WH>Код покажи.


Нефига он не генерирует, только ABC(const ABC &)... меня переглючило, я просто сейчас на трёх языках пишу и всё нужно срочно: невнимательно посмотрел, что сам написал и что имел ввиду

Извините. Вот код, который у меня компилировался — сам не понял, что хотел этим кодом сказать :


#include "stdafx.h"
#include <conio.h>
#include <iostream>

using std::cout;
using std::cin;
using std::endl;


struct CCC
{
    int &b;
    int  &c;
    CCC(int &a, int &d): b(a), c(d)
    {
    }
};

struct ABC
{
    public:
        int &a;
};

int _tmain(int argc, _TCHAR* argv[])
{
    int k = 2; int c = 0;
    CCC d(k, c);
    ABC * D = (ABC *) &d;
    ABC A(*D);

    cout << A.a << endl;
    k = 22;
    cout << A.a << endl;

    _getch();
    return 0;
}
Re[12]: А можно пример РЕАЛЬНОГО кода?
От: 0x8000FFFF Россия  
Дата: 31.05.07 10:18
Оценка: 8 (1)
std::auto_ptr — не использует ссылки как поля объектов — там указатели.
Re[9]: Move Constructors
От: SergeCpp Россия http://zoozahita.ru
Дата: 30.05.07 18:07
Оценка: 4 (1)
Здравствуйте, FDSC!

FDS>>>Я в шоке... кому и зачем такое может понадобиться?


КЛ>>про move semantic слышал?


FDS>Кстати, не слышал, не гуглится, не википедится


Move Constructors
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re: что за ....!!! где C++ программисты?
От: puremind  
Дата: 29.05.07 12:04
Оценка: 3 (1)
Здравствуйте, maximm__, Вы писали:

убедительная просьба следить за объемом цитирования, следующий подобный экзерсис может повлечь за собой санкции согласно правил форума — модератор

Максим,

Если тебе нужны студенты то ты и озвучивай свое желание изначально.

Я с тобой полтора часа общался и так и не понял чем же ты предлагаешь мне у тебя заниматься. Кроме абстрактной фразы "Писать код" ничего конкретного не услышал, да и чтото есть справедливого в первом коментарии ...


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

Да и вообще достаточно много противоречий .... вот к примеру ...
"__>P.S. работа алгоритмичная, с упором на производительность, не-драйвера. ненавидящим создание пользовательских интерфейсов не беспокоиться."


Где ты алгоритмы видел в пользовательских интерфейсах???

Да и ты слишком часто используешь оборот "профессиональный коллектив" настолько часто даже начинаешь думать а зачем это так часто повторять ... это студентам хорошо такими фразами мозги промывать ... а на взрослых людей это действует по другому..
Re[11]: А можно пример РЕАЛЬНОГО кода?
От: sc Россия  
Дата: 31.05.07 09:25
Оценка: 2 (1)
Здравствуйте, FDSC, Вы писали:
<skepped>
FDS>Можно ссылочку (на открытый проект) на пример реального кода, где используются ссылки как поля объектов. Или просто привести здесь код, когда вот без это ссылки жизнь становится нехорошей? Просто ну вот не приходит в голову кому и зачем может такое понадобится.<skippe>

опять не из реального проекта, но идея должна быть понятна:
int somefunc()
{
    struct ConnectGuard
    {
        Connection &c;
        ConnectGuard(Connection &c): c(c){}
        ~ConnectGuard(){ c.Close(); }
    }

    Connection c;
    if(c.Open(...))
    {
        ConnectGuard(c);
        ....
        if(...)
             return -1;
        ....
        if( ....)
             return -1;
        ....
    }
}


В общем RAII. Не нужно закрывать соединение, оно само закроется.
А также файлы, хэндлы и прочая может быть автомат. освобождены/деинициализированы и т.д.)
Re: что за ....!!! где C++ программисты?
От: AlexKr  
Дата: 19.05.07 12:00
Оценка: 1 (1)
Здравствуйте, maximm__, Вы писали:

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


Мое мнение о вас (glowbyte). Был я в вашей компании на так и давно, не жалею, что не сделали мне предложение о работе. Факты:
-компания маленькая.
-арендуют офис, в списке арендаторов не числятся. Ждал 15 снизу минут пока позвонят — мол где я там, телефон не отвечал.
-внешний вид офиса очень плохой, одна большая комната с кучей компов, расставленных в ряды как парты в классе. Плюс одна или две комнаты для начальников.
-мониторы — кубики, не ЖК, на новые не похожи.
-наверняка ни о каких дополнительных бонусах не может быть и речи (страховка и т.д.).

Лично мое мнение:
-руководство — общался только с обним человеком. Первое впечатление — безразличие ко мне. И показалось, что характер у человека сложный, с первого взгляда не хочется с ним работать.

Желаю удачи программистам 1.5K — 4.0К+. Люди этого уровня сейчас нарасхват даже с небольшим уровнем опыта.
Re[3]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 29.05.07 15:33
Оценка: 1 (1)
Здравствуйте, Sergey, Вы писали:


>> Где ты алгоритмы видел в пользовательских интерфейсах???


S>Я видел Их там полно. Достаточно попытаться визуализировать граф хотя бы из пары сотен узлов, и вы поймете, где в пользовательских интерфейсах алгоритмы. Да что там графы, даже для того, чтобы нарисовать обычную "cake" гистограмму — но так, чтобы надписи друг на друга не налазили, и то придется немножко подумать.


Спорить не буду. Но как мне кажется для этого уже есть написанные библиотеки. По крайней мере для последнего точно. Можно конечно и велосиепд поизобретать если очень нужно.

+ спеуифика проэкта — финансовая деятельность там посто таблицы =)
Re[3]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 29.05.07 21:20
Оценка: 1 (1)
Ага — вообще правильно строить GUI — тоже искуство =) Дело даже не в алгоритмах — а в самой структуре построения приложения =)
Re[5]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 30.05.07 16:28
Оценка: 1 (1)
Здравствуйте, CreatorCray, Вы писали:

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


CC>Угадал?


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

вот кстати вспомнлось ...

class A
{
public:
A(const A&, int=0); является ли этот конструктор конструктором копирования??
};

хотя это я так ... просто чтото навеяло ...
Re[11]: А можно пример РЕАЛЬНОГО кода?
От: Константин Л. Франция  
Дата: 31.05.07 09:55
Оценка: 1 (1)
Здравствуйте, FDSC, Вы писали:

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


P>>А можно еще структурные паттерны проектирования вспомнить ...


FDS>Ну... мне нечего вспоминать на этот счёт — не знаю я этого



FDS>Можно ссылочку (на открытый проект) на пример реального кода, где используются ссылки как поля объектов. Или просто привести здесь код, когда вот без это ссылки жизнь становится нехорошей? Просто ну вот не приходит в голову кому и зачем может такое понадобится. Я считаю, что это явный источник трудноуловимых ошибок... буду рад поменять своё мнение, но теперь я, кажется, понимаю, откуда у программистов по статистике 6 ошибок на сто строк... (впрочем, позавчера я тоже сделал 6 ошибок на 100 строк на Nemerle...)


std::auto_ptr
всевозможные scoped lock'и, guard'ы etc.
Re[10]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 31.05.07 16:31
Оценка: 1 (1)
Это миф, придуманный теми, кто просто в силу своего уровня не в состоянии понять... Это тоже самое, что сказать, что не возможно познать всю математику в университете (а там не меньше, а я бы сказал больше информации)... Я уверен в этом, потому что всё между собой тесно связанно и одно из другого вытекает... если заниматься делом не абы как, а с фундаментальным подходом — то все можно познать.
Re[7]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 04.06.07 07:27
Оценка: 1 (1)
> S>к сожалению те кто говорят о ссылка или указателях элементарно не могут сделать вывод на печать или организовать работу с БД. Я б на месте хозяев более критично к таким личностям относился. А то и сами ничего не могут кроме как про виртуальные деструкторы трындеть так ещё и другим не дают.
>
> Ты не находишь, что это элементарно совершенно разные задачи? Даже наверно разные профессии?
>
> Я раньше миддлеваре разрабатывал, вот там было очень много трындежа о хорошем стиле С++. Весь код писался по всем правилам от гуру и ещё более придирчиво. Это было правильно, потому что этим кодом пользуется уйма народу, в том числе в других странах.
> Сейчас пишу софт с большим количеством гуйни. Тут думать о вылизанности кода уже не приходится. Разрабатывают прогу 2-3 человека, нет необходимости в чрезмерной чистоте кода, всегда можно узнать, что имелось в виду.

Основная веселуха начинается, когда объем кода превышает возможности головного мозга написавших его авторов. Тут и про хороший стиль вспомнают, и про правила от гуру — однако поздно может оказаться и приходится все с нуля переписывать. И разумеется, основную роль в написании сложного и запутанного кода играют обычно молодые дарования, не знающие даже зачем нужны виртуальные деструкторы И нет никакой разницы, гуй это был или миддлеваре — гуй тоже грамотно писать надо.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[4]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 14:57
Оценка: -1
Здравствуйте, Sergey, Вы писали:

S>Зато незнание языка много что значит У меня на собеседовании треть кандитатов уходила после того, как не могли ответить на один из первых вопросов — как проинициализировать ссылку-член класса. Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...


Простите за глупый вопрос, имеется ввиду указатель, который является полем класса? Т.е., грубо говоря, от них требовалось вызвать конструктор некоторого объекта в конструкторе класса или я чего-то не понял?
Re[5]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 30.05.07 15:08
Оценка: :)
Здравствуйте, FDSC, Вы писали:

Скорее всего вот это:
class Test
{
public:
    Test(int i):m_i(i){}
private:
    int& m_i;
};
Re[7]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 30.05.07 16:23
Оценка: :)
Здравствуйте, alzt, Вы писали:

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


A>Забыл ссылку в списке аргументов поставить.



Это ты вовремя заметил а то я было ужо хотел тебя пожурить =)
Re[5]: что за ....!!! где C++ программисты?
От: Андрей Хропов Россия  
Дата: 30.05.07 16:54
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Ну у меня пятилетний опыт... Ссылками пользуюсь активно, но ни разу ссылку-член класса не приходилось использовать, да и не приходит в голову для чего может понадобиться именно ссылка член класса...


Да это опасная штука, так как то на что она указывает может умереть в процессе жизни данного объекта и получим dangling pointer, замаскированный под reference.
Хотя если указывает на часть объекта, хранимого или разделяемого данным объектом то можно.

Вообще голые указатели и ссылки как члены класса — потенциальный источник ошибок.

>>> как

CC>ну наверное в списке инициализации в конструкторе, или как оно правильно по русски называется
CC>
CC>class test
CC>{
CC>public:
CC>    test (char *a): m_ref(*a) {}

CC>    char &m_ref;
CC>};
CC>


CC>Угадал?


Ага. Вообще болшинство конструкций языка подчинаются общей логике и здравому смыслу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: что за ....!!! где C++ программисты?
От: Константин Л. Франция  
Дата: 30.05.07 17:01
Оценка: +1
Здравствуйте, FDSC, Вы писали:

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


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


A>>Скорее всего вот это:

A>>
A>>class Test
A>>{
A>>public:
A>>    Test(int i):m_i(i){}
A>>private:
A>>    int& m_i;
A>>};
A>>


FDS>Я в шоке... кому и зачем такое может понадобиться?


про move semantic слышал?

FDS>Честно говоря, я бы за такой код кое-кого бы мочканул... и уж точно не пошёл бы работать к тому, кто это спрашивает первым вопросом

FDS>Некоторые люди вообще не советуют ссылки использовать, просто чтобы сразу было видно, что значение переменной может быть изменено, а вы про ссылки в классах спрашиваете

Мало-ли кто там что советует...

[]
Re[5]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 06:39
Оценка: +1
Здравствуйте, DKM_MSFT, Вы писали:

S>>Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...

DKM>Наверное, этот случай должен был убедить вас в том, что вы спрашиваете какую-то ерунду, да?
Ну тут одно только "но": утверждалось что кандидат с "шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего"
Совсем ничего не знать про ссылки это конечно плохо. Не знать как проинитить ссылку член класса — это простительно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[15]: Move Constructors
От: Sergey Россия  
Дата: 31.05.07 08:59
Оценка: +1
> S>Человек с опытом найдет больше проблем. Штук 5-7, смотря как считать.
>
> Вроде бы где-то видел, что в этом куске кода находили больше 10 проблем. ( 12, если не ошибаюсь )

Ну это опять же смотря как считать. Например, отсутствие виртуального деструктора в базовом классе проблемой не является, поскольку наследование приватное. Но, с другой стороны, если вздумается разрешить операцию копирования, это можно сделать в том числе и отказавшись от приватного наследования — тогда в проблемы можно засчитать и виртуальный деструктор. В общем, повторюсь — для полноценной беседы вопрос замечательный.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[5]: что за ....!!! где C++ программисты?
От: pavel_turbin  
Дата: 31.05.07 08:59
Оценка: +1
Здравствуйте, DKM_MSFT, Вы писали:

DKM>Вообще ваш вопрос — один из самых глупых вопросов для собеседования, которые я когда-либо слышал.


про ссылку интересный вопрос, однако.

Известно, что ссылку нельзя переназначить и ссылка всегда должна быть инициализированная.


Эту концепцию, должен знать любой c++ программист. Как проверить что человек знает это правило? Во для этого такой вопрос даже ничего, необязательно знать ответ, можно посмотреть ход мысли.

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



struct ABC
{
     int &a;
};


может ли существовать такой тип ABC, вообще? Если программист "с лету" говорит "Да, проблем нет." Тогда что делать с правилом инициализации ссылки? Тут можно многое спросить еще, про дефолтный конструктор, как его генерируют и пр. Такие вопросы нужны что-бы отфильтровать шлак и посмотреть видел ли человек C++ вообще.
Re[10]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 09:12
Оценка: :)
Здравствуйте, puremind, Вы писали:

P>А можно еще структурные паттерны проектирования вспомнить ...


Ну... мне нечего вспоминать на этот счёт — не знаю я этого


Можно ссылочку (на открытый проект) на пример реального кода, где используются ссылки как поля объектов. Или просто привести здесь код, когда вот без это ссылки жизнь становится нехорошей? Просто ну вот не приходит в голову кому и зачем может такое понадобится. Я считаю, что это явный источник трудноуловимых ошибок... буду рад поменять своё мнение, но теперь я, кажется, понимаю, откуда у программистов по статистике 6 ошибок на сто строк... (впрочем, позавчера я тоже сделал 6 ошибок на 100 строк на Nemerle...)
Re[4]: что за ....!!! где C++ программисты?
От: machine3000  
Дата: 31.05.07 09:18
Оценка: :)
Здравствуйте, LuciferMoscow, Вы писали:

LM>Я сломаю Ваши детские фантазии.


Ох, какой Вы, батенька, садист.
Re[6]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 09:45
Оценка: +1
Здравствуйте, puremind, Вы писали:

P>вопрос про ссылки ЭЛЕМЕНТАРНЫЙ — и если человек не знает, не может догадать или вывести гуся из опыта — это серьезный звонок. И можно воздержаться от бездоказательных утверждений типа — "по вашей вине столько хороших сотрудников" ...


А я, например, очень неуверенно себя чувствую, если вынужден догадываться. Откуда вы знаете, может соискатель волнуется, а тут вы его ещё заставляете чувствовать себя ещё более неуверенно... естественно, он может и ошибиться

P>Во первых — хороший сотрудник должен писать хороший код, а это невозможно без знания языка ...

P>Во вторых к ссылкам можно еще добавить const-модификаторы, некоторые "профессионалы" не понимают когда и зачем его использовать и не видят разницы между ...

Я не профессионал в C++, но, думаю, отвечу правильно (только не смейтесь, если ошибусь ) и использую эти вещи:

// Неконстантный указатель на константный объект. Т.е. можно изменить указатель, но нельзя значение переменной, на которую он указывает
// Кстати, я всегда пишу int const *, насколько я знаю, это тоже самое...
P>сonst int *

// Константный указатель на неконстантный объект. Т.е. переменную можно изменить, но указатель всегда будет указывать именно на эту переменную
P>int * const

P>class A

P>{
P> void f();
// тут не уверен, если не ошибаюсь, константная функция не изменяет состояния объекта, т.е. все поля в методе константны
P> void f() const;
P>};


P>А это уже реальный косяк! .. =)


Ну дак вы же после ссылки уже отправите, до констант даже не дойдёт...
Re[13]: Специально для superman
От: dev1024  
Дата: 31.05.07 10:10
Оценка: :)
Внимательно посмотри на строчку

        ConnectGuard(c);
Re: что за ....!!! где C++ программисты?
От: dev1024  
Дата: 31.05.07 10:34
Оценка: +1
Здравствуйте, maximm__, Вы писали:

__>программисты на C++!!! те, кто реально пишут код, любят boost, но не боготворят, начинают проект с автосборки, где Вы?!


Видимо получают те самые 4.0K+.
Re[11]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 31.05.07 10:43
Оценка: +1
Человек не знающий основных паттернов, смартпоинтеров и интрузивных контейнеров не может считаться опытным программистом, а значит у него недостаток опыта. Почему я так считаю — потому что — программист — человек ленивый, а использование таких вещей — очень облегчает жизнь, а значит — опыт есть =) Дальше встает вопрос — либо брать и учить (либо методом грабли, либо методом сенсей), постоянно отвлекаясь, либо искать опытных людей... Вопрос решается просто — что вы можите себе позволить =)
Re[5]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 31.05.07 11:24
Оценка: +1
Здравствуйте, DKM_MSFT, Вы писали:

S>>Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...


DKM>Наверное, этот случай должен был убедить вас в том, что вы спрашиваете какую-то ерунду, да?


Нет, этот случай убедил меня в том, что резюме верить нельзя. Если бы мы искали С программиста, мы бы того человека взяли. Но нам был нужен человек со знанием С++, и никакого желания кого-то переучивать у меня не было. А в плюсах он вообще плавал — не только в ссылках.

DKM>Вообще ваш вопрос — один из самых глупых вопросов для собеседования, которые я когда-либо слышал.


Ок, просветите меня, о чем на собеседовании надо спрашивать? Про крышки от люков?

DKM>Мало того, что вы спрашиваете об одной из наименее полезных особенностей конкретного языка, которую в 100% случаев можно заменить другой конструкцией без какого-либо ущерба для производительности и читаемости кода.


А умение понимать чужой код у нас теперь типа не котируется? Если в программе этих ссылок как грязи, а человек не понимает ни списков инициализации, ни ссылок — как он будет в ней разбираться?

DKM>Так, ко всему этому, исчерпывающую информацию об этой особенности можно получить из MSDN в течение одной минуты.


Угу, а исчерпывающую информацию почти о всех английских словах можно получить в словаре в течение одной минуты. Только наличие под рукой словаря переводчиком вас не сделает.

DKM>Давайте, я вас сейчас спрошу о том, как в функции SetSecurityDescriptorDacl указать, что передаваемый DACL был в явном виде указан пользователем. А может быть, вы даже не знаете, что такое DACL? Это ж, блин, каким любознательным человеком надо быть, чтоб за сколько там у вас лет опыта программирования под Windows, да...


Как ни странно, что такое DACL я знаю.

DKM>Причем, обратите внимание, неспособность ответить как на мой вопрос, так и ваш, свидетельствует лишь о том, что человек не использовал некоторую конструкцию в силу того, что она ему была не нужна.


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

DKM>Ответы на оба вопроса находятся в течение минуты в документации.


Для этого хотя бы нужно знать, что именно искать.

DKM>Однако вы, в отличие от меня, спросили про вещь, использования которой можно избежать всегда. Так если вы считаете мой вопрос глупым, то как вы охарактеризуете ваш?


Разумеется, свой вопрос я считаю крайне простым, на такой вопрос должен легко ответить любой знающий С++ человек.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[12]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 11:40
Оценка: +1
Здравствуйте, pavel_turbin, Вы писали:

FDS>>Можно ссылочку (на открытый проект) на пример реального кода, где используются ссылки как поля объектов.


_>Элементарно.


Чем не нравится так:
template<class Synch>
class ScopedLocker
{
    Synch * const m_synch;
   
public:
     ScopedLocker(Synch  &synch): m_synch(&synch)
     {
        m_synch->lock();
     }

     ~ScopedLocker()
     {
        m_synch->unlock();
     }
};

?

Чем это хуже?
Re[2]: что за ....!!! где C++ программисты?
От: machine3000  
Дата: 31.05.07 11:56
Оценка: :)
Здравствуйте, Kubyshev Andrey, Вы писали:

KA>Читаю эту ветку находясь в отпуске на море... И знаете, такое чуство возникает, что возня какая то у вас там в Москве нездоровая

KA>Не то что бы я там че то, просто я к тому что оторвите взгляд от компа, типа повертите в разные стороны и все такое...
KA>А вы опять за свои копи-конструкторы, констатные методы и прочее ...


Не одной водой морской сыт человек...
Re[8]: что за ....!!! где C++ программисты?
От: __SPIRIT__ Россия  
Дата: 31.05.07 12:16
Оценка: +1
Здравствуйте, pavel_turbin, Вы писали:

_>

_>// примерная версия
_>int a1 = 0, b1=0;
_>int &a = a1, &b=b;

_>memcpy( &a, &b, sizeof(b) );

_>// прижелании можно использовать __asm
_>__asm lea, eax a

_>


_>и весь C++ идет курит бамбук.


Вот за это нужно бить ногами по рукам
Re[2]: что за ....!!! где C++ программисты?
От: Константин Л. Франция  
Дата: 31.05.07 12:19
Оценка: :)
Здравствуйте, Kubyshev Andrey, Вы писали:

KA>Читаю эту ветку находясь в отпуске на море... И знаете, такое чуство возникает, что возня какая то у вас там в Москве нездоровая

KA>Не то что бы я там че то, просто я к тому что оторвите взгляд от компа, типа повертите в разные стороны и все такое...
KA>А вы опять за свои копи-конструкторы, констатные методы и прочее ...

ты решил это везде запостить? Надеюсь программку то хоть написал?
Re[9]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 12:51
Оценка: +1
Здравствуйте, Eugeny__, Вы писали:

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



S>>а потом возникают вопросы о проблемах с понимением молодых програмистов


E__>Инетерсно, вы нечаянно написали 3-ю "н", или нечаянно заменили "а" на "е"?


патсталом

пониманием, нониманием, а не поимением
Re[15]: Move Constructors
От: CreatorCray  
Дата: 31.05.07 13:46
Оценка: -1
Здравствуйте, elcste, Вы писали:

E>>>Проблема этого кода в том, что он ill-formed (с первого беглого взгляда бросается в глаза void main).

CC>>Вот любопытно: чего бОльшая часть народу цепляется именно к несчастному void main () тогда как реально критичные ошибки опускаются "на потом"?
E>Так ведь это первое, что бросается в глаза. Зачем смотреть на остальное, если уже есть ответ?
Ответ неправильный кста. Код хреновый не потому что void main () — вполне может быть что код писан был под VC6
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[11]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 14:28
Оценка: -1
Здравствуйте, FDSC, Вы писали:



FDS>Нам это не важно, но это лишнее напоминание программисту, что это поле вовсе не внутренний объект, а именно указатель на ВНЕШНИЕ данные. Если программист это забудет, он может в итоге долго копаться в коде, не понимая, где же у него баг. А ссылка как раз способствует такому забыванию


ИМХО глупости. во первых не на ДАННЫЕ а на ОБЪЕКТ. внешний или внутрениий — без разницы. Вы пытаетесь решить несуществующую проблему.

S>>и ещё.. четвёртый недостаток. В самих методах класа, содержащего указатель, ты должен либо положиться на то что указатель обязательно проинициализирован конструктором или постоянно проверять, а проинициализирован ли он. ссылка бы обеспечила бы нам уверенность что она проинициализированна.. собственно в этом и вся разница, и все её приимущества.


FDS>Проверять не надо

FDS>Об этом писал здесь http://rsdn.ru/forum/message/2508595.1.aspx
Автор: FDSC
Дата: 31.05.07


Да глупости, надо проверять, надо!
ты показал как в Конструкторе сделать так что бы в конструкторе не надо было проверять. да согласен, выход. А в другом методе который пытается этот указатель использовать? а ей может кто-то гарантировать что завтра не будет изменён конструктор котороый вчера гарантировал инициализацию?
Re[9]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 14:47
Оценка: +1
Здравствуйте, FDSC, Вы писали:

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


эстет!
а должно раздражать i++ !

это менее эфективно т.к. требует сохранения старого состояния i. стоит оговориться, что для фундаментальных типов это ниразу не проблема — компилятор должен бы соптимизировать и поменять назад на ++i, а вот для нефундаментальных увы и ах.. компилятор не осилит.
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[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[19]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 09:43
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

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


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

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

Ну, лично я спорил о том, что ссылки вообще грабли, если эти ссылки — члены класса
Re[12]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 11:25
Оценка: +1
Здравствуйте, fmiracle, Вы писали:

F>Думай на тему STL и общего дизайна кода по всему проекту:


F>for (int i = 0; i < L; i++)

F>for (iterator i = start; i != end; ++i)

А я такие циклы через while делаю

F>Какая тут вообще принципиальная разница с этетической точки зрения где плюсики? Надо просто взять какой-то вариант в привычку да и использовать. Привычным может быть как тот так и другой. Зачем так упираться в свою привычку-то?


У меня высокохудожественный вкус: центр масс выражения "i++)" по середине, а "++i)" смещён вправо. К тому же, скобка рядом с переменной немного затрудняет чтение кода, а когда она отделена ++ это улучшает визуальную читабельность

F>Я раньше тоже всегда писал i++, казалось красивее. Почитав про копирование перешел на ++i без каких-то проблем — теперь так же кажется красивее это. Или у тебя есть строгое доказательство большей красивости постфикса над префиксом?


F>Использовать .Next это круто конечно же. Особенно если создаешь итератор для работы с stl например, который предполагает наличие ++ но не .Next().

F>Я уж не говорю про случай, когда ты пользуешься чужим итератором, где нет твоего метода .Next. Ну можно обматерить автора, правда.

Ну, что поделаешь...


iterator i = start;
while( i != end)
{
  // ....
  ++i;
}


На такое согласен, хотя всё равно, как-будто i с каким-то цепом в руках куда-то идёт
Я стремлюсь, что бы код выглядел визуально красиво. В частности, никогда не понимал Макконнелла, когда он говорил, что
знаки равно в коде
int i      = 0;
int kjfdsl = 0;

не нужно выравниваить и никто не будет заниматься их поддержкой
Re[14]: что за ....!!! где C++ программисты?
От: flashinc  
Дата: 03.06.07 05:34
Оценка: +1
АХ>Совершенно не обязательно, что не создасться. Все равно лучше писать чтобы выполнялись только необходимые действия.

Если продолжать обсуждать теоретического сферического коня в ваккууме,
чем, собственно, и занимаются авторы книг по С++ — то да, некоторая опасность существует. (То есть, находится на одном уровне абстракции — называемом языком C++ и не иметь желания спуститься вниз и принять во внимание РЕАЛЬНОСТЬ).

А вот если изучить основные компиляторы которыми приходится пользоваться, и выполнить инспекцию объектов подлежащих пост-инкременту и получаемого x86 кода — то страдать этой фигней не придется.

Я за практический здравый подход. А то извините, если транслировать на реальность подобные "опасения", то ни с одной девушкой спать без презерватива нельзя, ни-ни. Даже с собственной женой. Потому чт вероятность того что она заразит тебя спидом остается. Она хоть и исчезающе мала, тысячные доли процента — но все-таки существует. Так что? — надевать презерватив еще в детстве и не снимать его вовсе?..... :-)
Надеюсь аналогия понятна :-)))
Re[6]: что за ....!!! где C++ программисты?
От: NikeByNike Россия  
Дата: 04.06.07 00:42
Оценка: +1
Здравствуйте, sss1024, Вы писали:

S>к сожалению те кто говорят о ссылка или указателях элементарно не могут сделать вывод на печать или организовать работу с БД. Я б на месте хозяев более критично к таким личностям относился. А то и сами ничего не могут кроме как про виртуальные деструкторы трындеть так ещё и другим не дают.


Ты не находишь, что это элементарно совершенно разные задачи? Даже наверно разные профессии?

Я раньше миддлеваре разрабатывал, вот там было очень много трындежа о хорошем стиле С++. Весь код писался по всем правилам от гуру и ещё более придирчиво. Это было правильно, потому что этим кодом пользуется уйма народу, в том числе в других странах.
Сейчас пишу софт с большим количеством гуйни. Тут думать о вылизанности кода уже не приходится. Разрабатывают прогу 2-3 человека, нет необходимости в чрезмерной чистоте кода, всегда можно узнать, что имелось в виду.
Нужно разобрать угил.
Re[18]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 04.06.07 18:16
Оценка: -1
Здравствуйте, WolfHound, Вы писали:

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


FDS>>На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные

WH>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..

У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними
Re[9]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 04.06.07 19:49
Оценка: -1
Здравствуйте, Панда, Вы писали:

П>Ни разу в жизни не использовал ++i. Всегда i++. Жизнь кончена! Пойду в грузчики

Извини, но это не смешно. Это значит, что ни до Мейерса, ни до Саттера руки не дошли
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[20]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:27
Оценка: -1
Здравствуйте, deniok, Вы писали:

D>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...


P.S. Такие обнуления наоборот помогают раньше выявить ошибку. Но смысла вашей фразы я всё равно не понял: что вы имели ввиду, что в релизе работать не будет...
Re: что за ....!!! где C++ программисты?
От: Ka3a4oK  
Дата: 21.05.07 18:45
Оценка:
Еще актуально ?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re: что за ....!!! где C++ программисты?
От: frik  
Дата: 22.05.07 07:37
Оценка:
Здравствуйте, maximm__, Вы писали:

довели уже человек! чуть не плачет!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Если судить по рег. данным сайта
От: Ulter  
Дата: 25.05.07 09:24
Оценка:
то это то-же самое, что abbyy и bitsoft
Делайте выводы...
Re: что за ....!!! где C++ программисты?
От: trophim Россия  
Дата: 25.05.07 23:15
Оценка:
__>либо 1.5K и в глазах вопрос — "а он про шаблоны спросит или нет?"

Хочу 1,5 и больше. Про шаблоны говорить не буду. Переманите меня из Ростова.
[EOF]
Let it be! — Давайте есть пчелу!
Re[3]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 30.05.07 07:47
Оценка:
Здравствуйте, Sergey, Вы писали:

>> Где ты алгоритмы видел в пользовательских интерфейсах???


S>Я видел Их там полно. Достаточно попытаться визуализировать граф хотя бы из пары сотен узлов, и вы поймете, где в пользовательских интерфейсах алгоритмы. Да что там графы, даже для того, чтобы нарисовать обычную "cake" гистограмму — но так, чтобы надписи друг на друга не налазили, и то придется немножко подумать.


Но всё же сортировка, поиск и т.п. намного реже требуются при работе с интерфейсами. А думать всегда надо если задача не тривиальная.
Re[4]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 30.05.07 08:46
Оценка:
> S>Я видел Их там полно. Достаточно попытаться визуализировать граф хотя бы из пары сотен узлов, и вы поймете, где в пользовательских интерфейсах алгоритмы. Да что там графы, даже для того, чтобы нарисовать обычную "cake" гистограмму — но так, чтобы надписи друг на друга не налазили, и то придется немножко подумать.
>
> Но всё же сортировка, поиск и т.п. намного реже требуются при работе с интерфейсами. А думать всегда надо если задача не тривиальная.

Реже чем где?
А вообще, разработка GUI — область слишком многогранная, чтобы говорить о ней в целом.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[4]: что за ....!!! где C++ программисты?
От: machine3000  
Дата: 30.05.07 08:55
Оценка:
Здравствуйте, alzt, Вы писали:

A>Но всё же сортировка, поиск и т.п. намного реже требуются при работе с интерфейсами. А думать всегда надо если задача не тривиальная.


Это если ты готовые контролы используешь. А так только и ищешь, куда пользователь мышью то тычет.
Re[5]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 30.05.07 09:00
Оценка:
Это да, если используешь действительно стандартные или сторонние контролы, но задачи часто на этом не ограничиваются. Очень часто приходится делать свои контролы. Покажите мне бесплатный контрол, который позволял бы расставлять и редактировать сплайны на картинке или для 3D модели. Может и есть платный — тут вот и думай — самому реализовывать или покупать — что дешевле.
Re[4]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 30.05.07 15:00
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Зато незнание языка много что значит У меня на собеседовании треть кандитатов уходила после того, как не могли ответить на один из первых вопросов

Ну и вопросики у вас однако На проверку знаний первейшей необходимости...

S> Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...

>> проинициализировать ссылку-член класса
Ну у меня пятилетний опыт... Ссылками пользуюсь активно, но ни разу ссылку-член класса не приходилось использовать, да и не приходит в голову для чего может понадобиться именно ссылка член класса...

>> как

ну наверное в списке инициализации в конструкторе, или как оно правильно по русски называется
class test
{
public:
    test (char *a): m_ref(*a) {}

    char &m_ref;
};


Угадал?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: что за ....!!! где C++ программисты?
От: IWantToAsk Россия  
Дата: 30.05.07 15:04
Оценка:
M>Да, общество недооценивает значимость этих людей. Несмотря на их нехватку и не взираю на то, что от спама, вирусов и DDOS атак уже не продохнуть. А кто, как не обиженные программисты устраивает это безобразие. Программистов надо холить и лелеять и не оставлять без присмотра.

Согласен на 100%.

M>А иначе... Представляю картину лет через 20. Шныряют везде вредные вертолётики. Плюются чернилами и перцовым газом. Таскают мелкие предметы. Перекусывают провода. Стоит отлучиться, оставив открытым окно, втыкаются в USB, сажают трояна, крадут информацию.


Re[6]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 30.05.07 15:10
Оценка:
Здравствуйте, alzt, Вы писали:

Забыл ссылку в списке аргументов поставить.
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 17:13
Оценка:
Здравствуйте, Константин Л., Вы писали:

FDS>>Я в шоке... кому и зачем такое может понадобиться?


КЛ>про move semantic слышал?


Ну дак тогда надо не про ссылки спрашивать, а про этот "move semantic"

Кстати, не слышал, не гуглится, не википедится
Re[10]: Move Constructors
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 18:37
Оценка:
Здравствуйте, SergeCpp, Вы писали:

SC>Move Constructors


Спасибо.

Насколько я понял, это вещь служит для повышения производительности. Т.е. очень странно, если человек удивляется, что кто-то не знает о ней и о полях-ссылках, всё-таки далеко не в каждой конторе занимаются хоть какой-то оптимизацией программ
Re[7]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 30.05.07 18:46
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Я в шоке... кому и зачем такое может понадобиться?

FDS>Честно говоря, я бы за такой код кое-кого бы мочканул... и уж точно не пошёл бы работать к тому, кто это спрашивает первым вопросом
Лучше передавать указатель и проверять его на NULL?!
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[3]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 30.05.07 18:46
Оценка:
Здравствуйте, machine3000, Вы писали:
M>Да, общество недооценивает значимость этих людей. Несмотря на их нехватку и не взираю на то, что от спама, вирусов и DDOS атак уже не продохнуть. А кто, как не обиженные программисты устраивает это безобразие.
Я сломаю Ваши детские фантазии. "Вредные" програмисты ИМХО делятся на три категории
1. Молокососы, которые
— прочитали об уязвимости в вынь98 на одном сайте
— скачали программу для атаки этой уязвимости на другом сайте
— взломали соседа Васю
— возомнили себя кул хакерами

2. Бизнесмены.
Для них это бизнес. Читсый бизнес. Трояны пишутся для создание сети зомби машин, которые рассылают спам.

3. Художники.
Написание вирусов ради этого самого написания. Таких очень немного
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 19:32
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


FDS>>Я в шоке... кому и зачем такое может понадобиться?

FDS>>Честно говоря, я бы за такой код кое-кого бы мочканул... и уж точно не пошёл бы работать к тому, кто это спрашивает первым вопросом
LM>Лучше передавать указатель и проверять его на NULL?!

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

LM>>Лучше передавать указатель и проверять его на NULL?!

FDS>Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
А обязан я его проверять на нулл?
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[11]: Move Constructors
От: Sergey Россия  
Дата: 30.05.07 19:48
Оценка:
Здравствуйте, FDSC, Вы писали:

SC>>Move Constructors


FDS>Спасибо.


FDS>Насколько я понял, это вещь служит для повышения производительности. Т.е. очень странно, если человек удивляется, что кто-то не знает о ней и о полях-ссылках, всё-таки далеко не в каждой конторе занимаются хоть какой-то оптимизацией программ


А про Move Constructors я не спрашиваю Просто если человек не слышал о списках инициализации или тем более о ссылках, то с скорее всего язык он почти не знает и учить его придется очень многому. Если бы цель была, как тут предположили, просто избавиться от соискателя вакансии, я бы задавал совсем другие вопросы. Например такой:

Может ли (согласно стандарту, про реальные компиляторы пока не будем) скомпилироваться такой код:

void Foo::bar(int a = 4, int b)
{
}


И когда соискатель заявит, что не может (это вам в форуме понятно, что раз вопрос задан в качестве коварного, то ясен пень что оно скомпилироваться обязано, а на собеседовании все выглядит совсем по-другому), следом еще один вопрос — что надо написать в декларации класса, чтобы оно скомпилировалось. Вот это я понимаю, и коварно, и бессмысленно — потому что никто в здравом уме такого не напишет. Хуже вопрос только про ++i++ и скобки

А вообще мне у Яндекса очень вопрос нравится, про проблемы в этом кусочке кода:
class Foo
{
public:
    Foo(int j) { i=new int[j]; }
    ~Foo() { delete i; }
private:
    int* i;
};

class Bar: Foo
{
public:
    Bar(int j) { i=new char[j]; }
    ~Bar() { delete i; }
private:
    char* i;
};


void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);
    *f=*b;
    delete f;
    delete b;
}


Сразу видно, человек только книжки читал или еще и попрограммировать успел.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[12]: Move Constructors
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 20:16
Оценка:
Здравствуйте, Sergey, Вы писали:

S>А про Move Constructors я не спрашиваю Просто если человек не слышал о списках инициализации или тем более о ссылках, то с скорее всего язык он почти не знает и учить его придется очень многому. Если бы цель была, как тут предположили, просто избавиться от соискателя вакансии, я бы задавал совсем другие вопросы. Например такой:


Ну дак спрашивать надо про списки инициализации и ссылки как параметры функций. Зачем спрашивать ерунду какую-то... понятное дело, что передачу параметра по ссылке человек вполне может знать, а как там что иницилизируется в конструкторе, да ещё полем.... ну, не знаю...

S>Вот это я понимаю, и коварно, и бессмысленно — потому что никто в здравом уме такого не напишет. Хуже вопрос только про ++i++ и скобки


Однако... и что надо написать?
#define b c = 3



S>А вообще мне у Яндекса очень вопрос нравится, про проблемы в этом кусочке кода:


S>Сразу видно, человек только книжки читал или еще и попрограммировать успел.


А как вы это видите? Т.е. что скажет человек с опытом, и что — без опыта? Ну, не надо всё разбирать, естественно, просто показать различие
Скажем, что они должны сказать про строчки *f=*b и delete i?
Re[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 20:21
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


LM>>>Лучше передавать указатель и проверять его на NULL?!

FDS>>Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
LM>А обязан я его проверять на нулл?

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

LM>>>>Лучше передавать указатель и проверять его на NULL?!

FDS>>>Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
LM>>А обязан я его проверять на нулл?
FDS>Да можно и не надо
А по русски?
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[6]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 31.05.07 06:23
Оценка:
Здравствуйте, puremind, Вы писали:

P>class A

P>{
P>public:
P> A(const A&, int=0); является ли этот конструктор конструктором копирования??
P>};

Вот теперь буду знать ответ на этот вопрос.
Подобное на собеседовании некорректно.
Но мне не хотелось бы, чтобы я не получил какое-нибудь желаемое место только из-за того, что мне задали подобный вопрос.
Поэтому к совету для работодателей "не задавать кандидатам глупые вопросы" могу добавить совет кандидатам:
запомните все типичные вопросы вроде этого, используется-не используется какая разница, по крайней мере на собеседовании может пригодиться.
Re[6]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 06:39
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>test (char& a) будет правильнее(код говорит программисту, что нулл сюда совать нельзя)

Ну, про то, чтоб передать ссылку я потом подумал.
А так была мысль что туда передается что то не ссылкой чем потом ссылка в классе инициализируется
передавать и запоминать ссылку как то уж ну совсем бессмысленно...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[13]: Move Constructors
От: Sergey Россия  
Дата: 31.05.07 07:14
Оценка:
> Ну дак спрашивать надо про списки инициализации и ссылки как параметры функций. Зачем спрашивать ерунду какую-то... понятное дело, что передачу параметра по ссылке человек вполне может знать, а как там что иницилизируется в конструкторе, да ещё полем.... ну, не знаю...
>
> S>Вот это я понимаю, и коварно, и бессмысленно — потому что никто в здравом уме такого не напишет. Хуже вопрос только про ++i++ и скобки
>
> Однако... и что надо написать?
> #define b c = 3
>

Да всего лишь

class Foo
{
    void bar(int a, int b = 0);
};

как ни странно. Пример из 8.3.6.6. Долго ржал, когда впервые прочитал этот пункт стандарта.

>

>
> S>А вообще мне у Яндекса очень вопрос нравится, про проблемы в этом кусочке кода:
>
> S>Сразу видно, человек только книжки читал или еще и попрограммировать успел.
>
> А как вы это видите? Т.е. что скажет человек с опытом, и что — без опыта? Ну, не надо всё разбирать, естественно, просто показать различие

Человек с опытом найдет больше проблем. Штук 5-7, смотря как считать.

> Скажем, что они должны сказать про строчки *f=*b и delete i?


Ну для начала *f=*b не скомпилируется из-за приватного наследования. Потом неплохо бы сказать про то, что совершенно непонятно, что хотели сказать этой строчкой кода — дефолтная семантика копирования в данном случае явно ошибочна, а вот какая нужна — это вопрос. Дальше разговор плавно переходит на подсчет ссылок, передачу владения при копировании, "глубокое копирование" aka клонирование и т.д. Странно, что в Yandex этот вопрос письменно задают — для устного собеседования он на мой взгляд гораздо лучше подходит.
Насчет delete i все проще — это в данном случае UB.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[9]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 31.05.07 07:24
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, Константин Л., Вы писали:


FDS>>>Я в шоке... кому и зачем такое может понадобиться?


КЛ>>про move semantic слышал?


FDS>Ну дак тогда надо не про ссылки спрашивать, а про этот "move semantic"


FDS>Кстати, не слышал, не гуглится, не википедитсяа


А можно еще структурные паттерны проектирования вспомнить ...
Re[7]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 31.05.07 07:34
Оценка:
Здравствуйте, alzt, Вы писали:

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


P>>class A

P>>{
P>>public:
P>> A(const A&, int=0); является ли этот конструктор конструктором копирования??
P>>};

A>Вот теперь буду знать ответ на этот вопрос.

A>Подобное на собеседовании некорректно.
A>Но мне не хотелось бы, чтобы я не получил какое-нибудь желаемое место только из-за того, что мне задали подобный вопрос.
A>Поэтому к совету для работодателей "не задавать кандидатам глупые вопросы" могу добавить совет кандидатам:
A>запомните все типичные вопросы вроде этого, используется-не используется какая разница, по крайней мере на собеседовании может пригодиться.

Этот вопрос я никогда не спрашивал. Просто почти никто не знает ответа сразу, но если человек понимает как работает С++ он сразу поймет, если нет то значит у человека мало опыта и он плохо представляет процесс компиляции. Хотя еще раз повторюсь вопроса такого я не задавал.

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


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

готов спорить что без подготовки никто не ответит полно и правильно ... вопрос нужно не нужно оставляю открытым ...
Re[7]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 08:02
Оценка:
Здравствуйте, FDSC, Вы писали:


FDS>Я в шоке... кому и зачем такое может понадобиться?


а потом возникают вопросы о проблемах с понимением молодых програмистов
Re[14]: Move Constructors
От: nrwl  
Дата: 31.05.07 08:29
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Человек с опытом найдет больше проблем. Штук 5-7, смотря как считать.


Вроде бы где-то видел, что в этом куске кода находили больше 10 проблем. ( 12, если не ошибаюсь )
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 08:59
Оценка:
Здравствуйте, superman, Вы писали:

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



FDS>>Я в шоке... кому и зачем такое может понадобиться?


S>а потом возникают вопросы о проблемах с понимением молодых програмистов


Я, вообще-то, не C++-программист так что и проблемы возникают не из-за этого
Re[12]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 09:46
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


LM>>>>>Лучше передавать указатель и проверять его на NULL?!

FDS>>>>Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
LM>>>А обязан я его проверять на нулл?
FDS>>Да можно и не надо
LM>А по русски?


Так устроит? (см. пояснения в комментариях)
#include "stdafx.h"
#include <conio.h>
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

class C1
{
public:
    C1(int &ai): i(&ai), li(ai) // указатель берётся от существующей переменной, ничего проверять на NULL не надо
    {
    }

    int * const i;  // указатель константен - его нельзя изменить
    int &li;        // абсолютно аналогично со ссылкой, её ведь тоже нельзя изменить во время работы
};

class C2
{
public:
    void PrintI()
    {
        cout << i << endl;
    }
    C1 * GetC1()
    {
        return c1;
    }
    C2(int ai)
    {
        i  = ai;
        c1 = new C1(i);
    }

    virtual ~C2()
    {
        delete c1;
        c1 = NULL;
    }

private:
    int i;
    C1 * c1;
};

int _tmain(int argc, _TCHAR* argv[])
{
    C2 c2(5);
    C1 * c1 = c2.GetC1();

        // как и в случае со ссылкой c1->li = 1;
        // всё проходит нормально, только мы явно показываем, что изменяем не переменную-поле класса,
        // а значение переменной, расположенной по некоторому адресу
    c2.PrintI();
    *c1->i = 1;      

        // Попытаемся обнулить указатель - не получится. Код полностью аналогичен коду со ссылкой за исключением напоминания программисту
        // что он работает не с переменной, а с указателем на переменную
//    c1->i  = NULL;    // Error    1    error C2166: l-value specifies const object    f:\prg\tmp\070530cpplinks\cpplinks\cpplinks.cpp    87    

    c2.PrintI();

    _getch();
    return 0;
}
Re[12]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 09:53
Оценка:
Здравствуйте, sc, Вы писали:

sc>В общем RAII. Не нужно закрывать соединение, оно само закроется.

sc>А также файлы, хэндлы и прочая может быть автомат. освобождены/деинициализированы и т.д.)

Что мешает конструктор Connection вынести прямо в структуру?
Что мешает передать структуре указатель, а не ссылку?

Я не против того, что ссылка может потребоваться, но когда вместо неё нельзя использовать указатель, или можно, но очень неудобно? Я просто не понимаю, почему человек удивляется, что после 6 лет работы программист этого в глаза не видел. Всё может быть спокойно реализовано на указателях.

Я просто считаю, что ссылка-поле — это очень нехорошая вещь с точки зрения скрытия семантики работы с указателем, а не самой переменной
Ваш пример можно было бы реализовать вообще через класс, который бы сам создавал и открывал соединение
Re[13]: А можно пример РЕАЛЬНОГО кода?
От: superman  
Дата: 31.05.07 10:01
Оценка:
Здравствуйте, FDSC, Вы писали:


FDS>Я просто считаю, что ссылка-поле — это очень нехорошая вещь с точки зрения скрытия семантики работы с указателем, а не самой переменной


ИМХО, это не самый большой недостаток подобного подхода, если вообще недосток.
Re[5]: что за ....!!! где C++ программисты?
От: Константин Л. Франция  
Дата: 31.05.07 10:04
Оценка:
Здравствуйте, DKM_MSFT, Вы писали:

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


S>>Зато незнание языка много что значит У меня на собеседовании треть кандитатов уходила после того, как не могли ответить на один из первых вопросов — как проинициализировать ссылку-член класса.


DKM>Это означает лишь то, что благодаря вашим усилиям, компания, вполне вероятно, лишилась многих хороших программистов.


Если таких берут в MS, то понятно, кто пишет ATL

S>>Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...


DKM>Наверное, этот случай должен был убедить вас в том, что вы спрашиваете какую-то ерунду, да?


За 6 лет он обязан был знать это. Может он спец по C With Classes

[]
Re[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 10:04
Оценка:
Здравствуйте, superman, Вы писали:

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


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


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



FDS>>>>Я в шоке... кому и зачем такое может понадобиться?


S>>>а потом возникают вопросы о проблемах с понимением молодых програмистов


FDS>>Я, вообще-то, не C++-программист так что и проблемы возникают не из-за этого


S>Хм.. а к чему тогда вообще этот разговор? что за привычка учить других тому, в чем сам "не в зуб ногой".


А где я сказал, что в я "не в зуб ногой"? Просто вы начали говорить, что я не "в зуб ногой" и оттуда все и проблемы, я вам ответил, что я на C++ никогда проекты, которые использовали больше 4-х человек не писал. Вряд ли я могу называться после этого C++ программистом, но участвовать в обсуждении у меня права никто не отнимал. В конце концов, курс по C++ я сдал на отл. автоматом

S>Я С++ програмист. Я отвечу как проинициализировать член-ссылку класа даже если меня разбудить ночью, хоть и начну свой ответ с нецензурных выражений в адрес разбудившего . Так же расскажу что в этом плохого и хорошего. В прошлом я неоднократно использовал такое в своей работе, соглашусь что это было не самым элегантным, но удовлетворительным и единственным доступным мне тогда решением. Я просто недоумеваю по поводу ваших воплей на тему "потерянных ценных сотрудников". я предполагаю что и среди моих знакомых есть знакомые "С++ програмисты" не способные ответить на подобный вопрос но склонен списывать это на их недоученность а никак не на глупость вопроса.


Я не воплю по поводу потерянных ценных сотрудников, не приписывайте мне слова других.
Я говорю только то, что человек может вполне нормально программировать, но на собеседовании не ответить на этот вопрос, просто из-за излишнего волнения. Был бы у него под рукой компилятор, он бы это сделал за пол минуты, только вот он этого всё равно никогда бы не САМ стал делать. А то, что он САМ не станет делать, ему и не нужно отвечать.

Считаю, что вместо этого вопроса было бы уместно привести код с этой ссылкой и спросить, что делается. Хотя, в принципе, если ищется действительно хороший программист, то, конечно, на вопрос он должен ответить, даже если никогда этого не видел.


А вообще, в ваших словах есть доля правды — соображать-то действительно надо, даже если не использовал
Re[6]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 10:08
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

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


Ну дак это совсем другой вопрос. Тут код уже дан. Понимаете разницу?
Вот этот вопрос, пожалуй, очень хороший
Re[6]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 10:13
Оценка:
Здравствуйте, Константин Л., Вы писали:


DKM>>Наверное, этот случай должен был убедить вас в том, что вы спрашиваете какую-то ерунду, да?


КЛ>За 6 лет он обязан был знать это. Может он спец по C With Classes


Дык "каким образом" он обязан был это знать? Его что в военкомате этому обучали?
Программировал себе человек, горя не знал, а вы тут ему, "обязан"
Re[6]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 10:15
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>может ли существовать такой тип ABC, вообще? Если программист "с лету" говорит "Да, проблем нет."


А если он ответит, что это невозможно? Что вы будете делать?
Re[7]: что за ....!!! где C++ программисты?
От: pavel_turbin  
Дата: 31.05.07 10:21
Оценка:
Здравствуйте, superman, Вы писали:

S>мы тут на днях встретили в одной библиотеке такой перл:


нет предела безпределу.

Кстати, ссылки очень элементарно переназначаются чрезе memset и memcpy



// примерная версия
int a1 = 0, b1=0;
int &a = a1, &b=b;

memcpy( &a, &b, sizeof(b) );

// прижелании можно использовать __asm
__asm lea, eax a


и весь C++ идет курит бамбук.
Re[12]: auto_ptr
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 10:22
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>std::auto_ptr

КЛ>всевозможные scoped lock'и, guard'ы etc.

А как же быть с MSDN?

template <class Type>
class auto_ptr

Parameters
Type
The type of object for which storage is being allocated or deallocated.


The template class describes an object that stores a pointer to an allocated object myptr of type Type *.

Если я правильно понимаю, тут написано, что класс хранить УКАЗАТЕЛЬ (а не ссылку) на аллоцированный объект myprt типа Type *
Re[13]: А можно пример РЕАЛЬНОГО кода?
От: Константин Л. Франция  
Дата: 31.05.07 10:23
Оценка:
Здравствуйте, 0x8000FFFF, Вы писали:

FFF>std::auto_ptr — не использует ссылки как поля объектов — там указатели.


зато auto_ptr_ref использует, и оба они имеют move ctors
Re[7]: что за ....!!! где C++ программисты?
От: pavel_turbin  
Дата: 31.05.07 10:33
Оценка:
Здравствуйте, FDSC, Вы писали:

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


_>>может ли существовать такой тип ABC, вообще? Если программист "с лету" говорит "Да, проблем нет."


FDS>А если он ответит, что это невозможно? Что вы будете делать?



попрошу обосновать "почему", если он ответит "ссылка всегда должна быть инициализированная", можно спросить что нужно исправить в типе "struct ABC", чтобы сделать его возможным. Если не может ответить, спросить про роль конструктора. Далее, в свете только что изложенных сведений про конструкторы, можно вернуться к вопросу.

Можно еще спросить, где такая конструкция "struct ABC" может быть нужна, пример из жизни. (ответ объекты синхронизации)

PS.
Вообще, человек, который говорит, что ссылки не нужны, т.к. их можно заменить указателями -- это скорее "C", а не C++ программист, после этого можно решать "Мы ищем C++ или C программиста"
.
Re[14]: А можно пример РЕАЛЬНОГО кода?
От: 0x8000FFFF Россия  
Дата: 31.05.07 10:37
Оценка:
std::auto_ptr_ref — да, он содержит сслыку на auto_ptr как член класса.
Re[11]: А можно пример РЕАЛЬНОГО кода?
От: pavel_turbin  
Дата: 31.05.07 10:48
Оценка:
Здравствуйте, FDSC, Вы писали:

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


P>>А можно еще структурные паттерны проектирования вспомнить ...


FDS>Ну... мне нечего вспоминать на этот счёт — не знаю я этого



FDS>Можно ссылочку (на открытый проект) на пример реального кода, где используются ссылки как поля объектов.


Элементарно.




class Mutex
{

public:

   Mutex() { /* make mutex  here */ }
   ~Mutex() { /* destroy mutex  here */ }

   void lock();
   void unlock();
};


class CriticalSection
{

public:
   void lock();
   void unlock();
};

template<class Synch>
class ScopedLocker
{
    Synch  &m_synch;
   
public:
     ScopedLocker(Synch  &synch): m_synch(synch)
     {
        m_synch.lock();
     }

     ~ScopedLocker()
     {
        m_synch.unlock();
     }
};

typedef ScopedLocker<Mutex> MutextScopedLocker;
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 11:37
Оценка:
Здравствуйте, pavel_turbin, Вы писали:


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


Я бы просто сказал, что объявление рабочее и посмотрел, как будет выкручиваться. Но, в общем, правильно, согласен. Этот пример вполне допустим


_>PS.

_>Вообще, человек, который говорит, что ссылки не нужны, т.к. их можно заменить указателями -- это скорее "C", а не C++ программист, после этого можно решать "Мы ищем C++ или C программиста"

Лично моё мнение: собственно, а чем ссылки лучше константных указателей? Я тут где-то показывал эквивалентный код на указателях, заменяющий ссылку. Чем вам указатели не нравятся? Для тех же объектов синхронизации ведь совершенно без разницы, будете вы туда ссылку передавать или запоминать адрес в константный указатель.

Или я где-то чего-то не понимаю?
Re[13]: А можно пример РЕАЛЬНОГО кода?
От: sc Россия  
Дата: 31.05.07 11:38
Оценка:
Здравствуйте, dev1024, Вы писали:

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


sc>>
sc>>int somefunc()
sc>><skipped>
sc>>        ....
sc>>        ConnectGuard guard(c); //должно быть :)
sc>>        ....
sc>><skipped>
sc>>}


sc>>В общем RAII. Не нужно закрывать соединение, оно само закроется.


D>Причём ещё до начала работы с ним.

Это точно Спешил. Но надеюсь все поняли, что я имел ввиду
Re[6]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 11:43
Оценка:
Здравствуйте, Sergey, Вы писали:

S>А умение понимать чужой код у нас теперь типа не котируется? Если в программе этих ссылок как грязи, а человек не понимает ни списков инициализации, ни ссылок — как он будет в ней разбираться?


А вы его ему кода не давали, вы просили его написать. Разница принципиальная, согласитесь
Re[6]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 31.05.07 11:44
Оценка:
Сергей — я Вас поддерживаю, а знаете что происходит — дальше будет хуже.

Мы те, кому 26-35 — подростковый период провели тогда, когда компьютер — был вещью из мечт, когда приходилось работать и выкручиваться из тех условий, что были когда-то, и паять свой первый Спектрум, изобретать при программировании и главное думать... Была Романтика и самостоятельное желание искать материал, которого было крайней мало — когда книжку передавали из рук в руки... А сейчас всякого хлама написано столько, что стоящие вещи в них теряются... А юниоры тонут в этом объеме хлама... и как следствие — знания хлама есть, знания основ и понимание их — нет...

Сейчас компьютер для большенства — это обыденная вещь и по этому разбираться в нем ни у кого нет желания — все на уровне Домохозяйки — дяде Биллу с его лозунгом о домохозяйке сказать можно спасибо. Остались нормальные разве что Unix/Linux программисты, но их мало... Никогда не думал, что лучшим для Windows системным программистом станет UNIX/Linux программист =)
Re[14]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 11:47
Оценка:
Здравствуйте, sc, Вы писали:

D>>Причём ещё до начала работы с ним.

sc>Это точно Спешил. Но надеюсь все поняли, что я имел ввиду

Вот, видите какой вред от ссылок?

А если представить себе ещё одно неправильное использование такой структуры блокировки: она незаметно для программиста (ну спешил человек или устал просто и не заметил) попадает во вложенные операторные скобки, а на самом деле должна блокировать всю функцию. Вот вам ещё одна ошибка, которую надо искать.... Правда тогда нужно делать функцию, а потом её обернуть ещё одной с синхронизацией чтобы точно никаких ошибок не было.... а это в C++ будет уже не удобно, скорее всего
Re[10]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 11:47
Оценка:
Здравствуйте, superman, Вы писали:

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

А чем в том случае указатели не подходили?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 11:48
Оценка:
Здравствуйте, superman, Вы писали:

S>мы тут на днях встретили в одной библиотеке такой перл:

такое ощущение, что тот кто это писал не подозревал о существовании указателей.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 11:48
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>Вообще, человек, который говорит, что ссылки не нужны, т.к. их можно заменить указателями -- это скорее "C", а не C++ программист

ИМХО каждый инструмент к своему месту. Тут в большей части примеров ссылки притянуты за уши. Указатель там подошел бы больше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 11:55
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


S>>мы тут на днях встретили в одной библиотеке такой перл:

CC>такое ощущение, что тот кто это писал не подозревал о существовании указателей.

Такое впечатление, что он вообще не подозревал о том, как ссылки и указатели компилируются в реальный код и чем они друг от друга отличаются
Re[8]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 31.05.07 12:04
Оценка:
Понимаете — настоящему программисту все равно на каком языке писать...

Мне же вот ничего не мешает писать на C++ сервер, который получает звук с Flash компоненты на сайте (тут пишу на AS2), через Red5 — тут надо писать на Java и транслирует его на сервер, и обратно выдает синтетическое видео с анимацией.
Re[14]: Специально для superman
От: superman  
Дата: 31.05.07 12:13
Оценка:
Здравствуйте, dev1024, Вы писали:

D>Внимательно посмотри на строчку


D>
D>        ConnectGuard(c);
D>


снимаю шляпу
Re[9]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 12:18
Оценка:
Здравствуйте, FDSC, Вы писали:

CC>>такое ощущение, что тот кто это писал не подозревал о существовании указателей.


FDS>Такое впечатление, что он вообще не подозревал о том, как ссылки и указатели компилируются в реальный код и чем они друг от друга отличаются

FDS>

да нет. могу предположить что просто сначала был только один конструктор, который брал сцылку — то есть предполаголось что обьект Foo нужен — дальше некуда, а потом родилась идея что его и без сцылки на Foo как-то использовать можно, и порефакторили его кривовато от и всё. OpenSorce проект
Re[9]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 12:31
Оценка:
Здравствуйте, FDSC, Вы писали:

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


FDS>Лично моё мнение: собственно, а чем ссылки лучше константных указателей? Я тут где-то показывал эквивалентный код на указателях, заменяющий ссылку. Чем вам указатели не нравятся? Для тех же объектов синхронизации ведь совершенно без разницы, будете вы туда ссылку передавать или запоминать адрес в константный указатель.


FDS>Или я где-то чего-то не понимаю?


имхо, то, что ты предложил оригинально но малость безполезно.
в этом случае присутствуют те же самые недостатки что и при использовании ссылки:
1. объект, на который мы ссылаемся, может быть уже удалён, а мы и не заметим этого
2. объект нашего класса нельзя скопировать (использовать operator=)
3. лишние движения (передать по ссылке, сохранить взятый адрес) — просто лишний раз запутывают

ИМХО та проблема, которую ты пытаешся решить.. Повторюсь, она оригинальна, но собственно говоря малозначима, если вообще хоть сколько-нибудь значима. я не могу придумать такого варианта использзования, где нам было бы важно содержим мы этот объект или только ссылаемся не него.

и ещё.. четвёртый недостаток. В самих методах класа, содержащего указатель, ты должен либо положиться на то что указатель обязательно проинициализирован конструктором или постоянно проверять, а проинициализирован ли он. ссылка бы обеспечила бы нам уверенность что она проинициализированна.. собственно в этом и вся разница, и все её приимущества.
Re[8]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 12:40
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS> Только вот что-то мне не хочется тратить свою жизнь на изучение того, что мне абсолютно не нужно и легко можно заменить другой вещью из этого же языка. По моему, как раз речь идёт о хламе.


минус много

FDS>Да и языков и библиотек столько, что непонятно, что учить и насколько глубоко


Эт со временем пройдёт.
Re[13]: Move Constructors
От: Sergey Россия  
Дата: 31.05.07 12:50
Оценка:
Здравствуйте, elcste, Вы писали:

S>> Хуже вопрос только про ++i++ и скобки


E>А в чем, если не секрет, этот вопрос заключается?


Да как обычном — скомпилируется или нет, почему, как расставить скобки чтобы скомпилировалось. Пустая трата времени в общем.

E>По-моему, как раз очень неудачный вопрос. Проблема этого кода в том, что он ill-formed (с первого беглого взгляда бросается в глаза void main). Как все это сделать правильно? Да очень просто: int main() {} (со второго беглого взгляда видно, что никакого observable behavior тут и быть не могло).


В том контексте, в котором этот вопрос использется у Яндекса — действительно не очень удачный вопрос. Потому что слишком много букв придется соискателю набирать А вот для того, чтобы в ходе беседы определить, как хорошо кандидат замечает баги в чужом коде и вообще насколько критически мыслит — очень даже подходит.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[12]: что за ....!!! где C++ программисты?
От: dev1024  
Дата: 31.05.07 12:50
Оценка:
Здравствуйте, 0x8000FFFF, Вы писали:

FFF>Человек не знающий основных паттернов, смартпоинтеров и интрузивных контейнеров не может считаться опытным программистом, а значит у него недостаток опыта.


Не знает этих вещей, или не знает их названий?
Опытный программист вполне может не ответить на вопрос "назовите 15 основный паттернов", хотя на практике использовал их все.
Просто он узнал о них не из книжки банды.
Re[8]: что за ....!!! где C++ программисты?
От: Панда Россия  
Дата: 31.05.07 12:51
Оценка:
Здравствуйте, Sergey, Вы писали:

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


Ни разу в жизни не использовал ++i. Всегда i++. Жизнь кончена! Пойду в грузчики
Re[14]: Move Constructors
От: elcste  
Дата: 31.05.07 13:02
Оценка:
Здравствуйте, Sergey, Вы писали:

S>>> Хуже вопрос только про ++i++ и скобки

E>>А в чем, если не секрет, этот вопрос заключается?

S>Да как обычном — скомпилируется или нет, почему, как расставить скобки чтобы скомпилировалось. Пустая трата времени в общем.


А, т.е. про то, как сделать well-formed... Потому как undefined behavior все равно останется.

S>В том контексте, в котором этот вопрос использется у Яндекса — действительно не очень удачный вопрос. Потому что слишком много букв придется соискателю набирать А вот для того, чтобы в ходе беседы определить, как хорошо кандидат замечает баги в чужом коде и вообще насколько критически мыслит — очень даже подходит.


Да, тут согласен. Разработка простого класса с владением какими-то ресурсами — хорошая тема для устной беседы.
Re[13]: Move Constructors
От: CreatorCray  
Дата: 31.05.07 13:18
Оценка:
Здравствуйте, elcste, Вы писали:

E>Проблема этого кода в том, что он ill-formed (с первого беглого взгляда бросается в глаза void main).

Вот любопытно: чего бОльшая часть народу цепляется именно к несчастному void main () тогда как реально критичные ошибки опускаются "на потом"?

E> Как все это сделать правильно? Да очень просто: int main() {}

Занудство!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 13:18
Оценка:
Здравствуйте, Sergey, Вы писали:

S>а у него в подкорке уже было проштамповано, что по умолчанию надо выбирать первый вариант.

ААААА!!!! Все пропало!!! А я списки пользую только тогда когда без них никак не написать

S> Чтобы он не думал

Программист, который не думает должен быть утилизирован, ИМХО

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

У меня для POD типов при наличии нормального компилера привычка писать постфиксный вариант как более удобный.

S> Чтобы человек не забывал писать explicit, определив в классе конструктор конверсии. Чтобы он не писал код вда:

S>Чтобы написав в деструкторе delete, не забывал запретить (или определить) у класса конструктор копирования и оператор присваивания.
Ну, тут претензий никаких... Вопрос "чистоплотности" кода..

Скажите дохтур, я обречен?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[14]: Move Constructors
От: elcste  
Дата: 31.05.07 13:28
Оценка:
Здравствуйте, CreatorCray, Вы писали:

E>>Проблема этого кода в том, что он ill-formed (с первого беглого взгляда бросается в глаза void main).

CC>Вот любопытно: чего бОльшая часть народу цепляется именно к несчастному void main () тогда как реально критичные ошибки опускаются "на потом"?

Так ведь это первое, что бросается в глаза. Зачем смотреть на остальное, если уже есть ответ?

E>> Как все это сделать правильно? Да очень просто: int main() {}

CC>Занудство!

Занудство, да. А что Вы предлагаете? Считать ошибки? Так их насчитать можно бесконечно много — никто же не знает, что этот код должен был делать по замыслам его автора. Телепаты в отпуске, ага.
Re[14]: Move Constructors
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 13:50
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


E>>Проблема этого кода в том, что он ill-formed (с первого беглого взгляда бросается в глаза void main).

CC>Вот любопытно: чего бОльшая часть народу цепляется именно к несчастному void main () тогда как реально критичные ошибки опускаются "на потом"?

А я, когда увидел код, прицепился к delete i и невиртуальному деструктору... только потом сообразил, что в коде ещё и main есть
Re[7]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 31.05.07 13:50
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Ну дак вы же после ссылки уже отправите, до констант даже не дойдёт...


Там где я собеседовал, был некоторый минимум вопросов который задавался всегда, после него уже принималось решение о целесообразности продолжения.
так что после ссылки был бы еще один шанс.

ну а с константами вроде все правильно, сonst метод не может модифицировать объект за исключением грубой силы типа const_cast<A*>(this) или совершенно честных mutable полей ...
Re[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 14:22
Оценка:
Здравствуйте, superman, Вы писали:

S>ИМХО та проблема, которую ты пытаешся решить.. Повторюсь, она оригинальна, но собственно говоря малозначима, если вообще хоть сколько-нибудь значима. я не могу придумать такого варианта использзования, где нам было бы важно содержим мы этот объект или только ссылаемся не него.


Нам это не важно, но это лишнее напоминание программисту, что это поле вовсе не внутренний объект, а именно указатель на ВНЕШНИЕ данные. Если программист это забудет, он может в итоге долго копаться в коде, не понимая, где же у него баг. А ссылка как раз способствует такому забыванию

S>и ещё.. четвёртый недостаток. В самих методах класа, содержащего указатель, ты должен либо положиться на то что указатель обязательно проинициализирован конструктором или постоянно проверять, а проинициализирован ли он. ссылка бы обеспечила бы нам уверенность что она проинициализированна.. собственно в этом и вся разница, и все её приимущества.


Проверять не надо
Об этом писал здесь http://rsdn.ru/forum/message/2508595.1.aspx
Автор: FDSC
Дата: 31.05.07
Re[9]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 14:29
Оценка:
Здравствуйте, 0x8000FFFF, Вы писали:

FFF>Понимаете — настоящему программисту все равно на каком языке писать...


FFF>Мне же вот ничего не мешает писать на C++ сервер, который получает звук с Flash компоненты на сайте (тут пишу на AS2), через Red5 — тут надо писать на Java и транслирует его на сервер, и обратно выдает синтетическое видео с анимацией.


И? Что из этого следует? Мне то же приходилось использовать в одном приложении два языка. Но что из этого? Тем более, это означает, что программист просто не успеет изучить тонкости работы все языков
Re[12]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 14:37
Оценка:
Здравствуйте, superman, Вы писали:

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




FDS>>Нам это не важно, но это лишнее напоминание программисту, что это поле вовсе не внутренний объект, а именно указатель на ВНЕШНИЕ данные. Если программист это забудет, он может в итоге долго копаться в коде, не понимая, где же у него баг. А ссылка как раз способствует такому забыванию


S>ИМХО глупости. во первых не на ДАННЫЕ а на ОБЪЕКТ. внешний или внутрениий — без разницы. Вы пытаетесь решить несуществующую проблему.


Я считаю, что разница есть. Если объект внешний, программисту хотя бы бросится в глаза, если где-то будет несанкционированное изменение, что это именно указатель. А так, кто его знает, приватный объектик, может он только внутри класса и используется и создаётся. Это грабли


S>>>и ещё.. четвёртый недостаток. В самих методах класа, содержащего указатель, ты должен либо положиться на то что указатель обязательно проинициализирован конструктором или постоянно проверять, а проинициализирован ли он. ссылка бы обеспечила бы нам уверенность что она проинициализированна.. собственно в этом и вся разница, и все её приимущества.


FDS>>Проверять не надо

FDS>>Об этом писал здесь http://rsdn.ru/forum/message/2508595.1.aspx
Автор: FDSC
Дата: 31.05.07


S>Да глупости, надо проверять, надо!

S>ты показал как в Конструкторе сделать так что бы в конструкторе не надо было проверять. да согласен, выход. А в другом методе который пытается этот указатель использовать?

Зачем там его проверять? Если конструктор гарантирует, дальше будет всё нормально: указатель-то константный
Обрати внимание на слова const, я в main специально привёл попытку обнулить указатель

S> а ей может кто-то гарантировать что завтра не будет изменён конструктор котороый вчера гарантировал инициализацию?


Это ошибка, ну дак на то он и конструктор, что бы гарантировать
Re[13]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 14:39
Оценка:
Здравствуйте, FDSC, Вы писали:

S>> а ей может кто-то гарантировать что завтра не будет изменён конструктор котороый вчера гарантировал инициализацию?


FDS>Это ошибка, ну дак на то он и конструктор, что бы гарантировать


P.S. Кстати, инициализация-то всё равно будет гарантированно. Другой вопрос, что указатель может быть инициализирован нулём
Re[9]: что за ....!!! где C++ программисты?
От: sc Россия  
Дата: 31.05.07 14:43
Оценка:
Здравствуйте, FDSC, Вы писали:


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

потому что в общем случае постинкр. подразумевает копирование
Re[15]: Move Constructors
От: CreatorCray  
Дата: 31.05.07 14:48
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>А я, когда увидел код, прицепился к delete i и невиртуальному деструктору... только потом сообразил, что в коде ещё и main есть

Ну вот: один правильный человек уже есть
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[13]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 14:58
Оценка:
Здравствуйте, FDSC, Вы писали:

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


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



S>>>>и ещё.. четвёртый недостаток. В самих методах класа, содержащего указатель, ты должен либо положиться на то что указатель обязательно проинициализирован конструктором или постоянно проверять, а проинициализирован ли он. ссылка бы обеспечила бы нам уверенность что она проинициализированна.. собственно в этом и вся разница, и все её приимущества.


FDS>>>Проверять не надо

FDS>>>Об этом писал здесь http://rsdn.ru/forum/message/2508595.1.aspx
Автор: FDSC
Дата: 31.05.07


S>>Да глупости, надо проверять, надо!

S>>ты показал как в Конструкторе сделать так что бы в конструкторе не надо было проверять. да согласен, выход. А в другом методе который пытается этот указатель использовать?

FDS>Зачем там его проверять? Если конструктор гарантирует, дальше будет всё нормально: указатель-то константный

FDS>Обрати внимание на слова const, я в main специально привёл попытку обнулить указатель

млин, а если Вася пупкин завтра перепишет твой конструктор? или добавит ещё один который такой гаринтии давать не будет?

S>> а ей может кто-то гарантировать что завтра не будет изменён конструктор котороый вчера гарантировал инициализацию?


FDS>Это ошибка, ну дак на то он и конструктор, что бы гарантировать
Re[14]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 15:06
Оценка:
Здравствуйте, superman, Вы писали:

S>млин, а если Вася пупкин завтра перепишет твой конструктор? или добавит ещё один который такой гаринтии давать не будет?

А если вася пупкин перепишет твой конструктор так что все сломаеццо.
Это сродни вопросу "а что будет если программа будет работать неправильно?"
А если вася пупкин в ваш класс добавит конструктор по умолчанию и там ссылку проинитит адресом локальной переменной или вообще *NULL
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[15]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 15:10
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


S>>млин, а если Вася пупкин завтра перепишет твой конструктор? или добавит ещё один который такой гаринтии давать не будет?

CC>А если вася пупкин перепишет твой конструктор так что все сломаеццо.
CC>Это сродни вопросу "а что будет если программа будет работать неправильно?"
CC>А если вася пупкин в ваш класс добавит конструктор по умолчанию и там ссылку проинитит адресом локальной переменной или вообще *NULL

всё, я умываю руки.
Сцылки это зло и излишество, а пароль ко всем сервакам пентагона "QWWERTY" и "Mao Tcedun"
Re[16]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 15:24
Оценка:
Здравствуйте, superman, Вы писали:

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


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


S>>>млин, а если Вася пупкин завтра перепишет твой конструктор? или добавит ещё один который такой гаринтии давать не будет?

CC>>А если вася пупкин перепишет твой конструктор так что все сломаеццо.
CC>>Это сродни вопросу "а что будет если программа будет работать неправильно?"
CC>>А если вася пупкин в ваш класс добавит конструктор по умолчанию и там ссылку проинитит адресом локальной переменной или вообще *NULL

S>всё, я умываю руки.

S>Сцылки это зло и излишество, а пароль ко всем сервакам пентагона "QWWERTY" и "Mao Tcedun"

Гык. Ну согласитесь, что передать NULL в конструктор надо умудрится ещё, а тем более, там на нуль не проверить
Re[9]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 31.05.07 15:27
Оценка:
> S>а у него в подкорке уже было проштамповано, что по умолчанию надо выбирать первый вариант.
> ААААА!!!! Все пропало!!! А я списки пользую только тогда когда без них никак не написать

Ну если не смущает, что при этом зря отрабатывают дефолтные конструкторы — то можно продолжать писать в том же стиле.


> S> Чтобы он не думал

> Программист, который не думает должен быть утилизирован, ИМХО

А оппонент, вырывающий цитаты из контекста, должен быть утилизирован с особой жестокостью...

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

> У меня для POD типов при наличии нормального компилера привычка писать постфиксный вариант как более удобный.

Путать POD и встроенные типы — это тоже в порядке вещей. А чем постфиксный вариант удобней, если не секрет?

> Скажите дохтур, я обречен?


Дохтур прописывает дотнет и жабу
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: С++ программисты все ЗДЕСЬ!!! %)
От: Дм.Григорьев  
Дата: 31.05.07 15:32
Оценка:
Всем привет.

Ветку надо бы в КСВ.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re: что за ....!!! где C++ программисты?
От: Awaken Украина  
Дата: 31.05.07 15:43
Оценка:
__>программисты на C++!!! те, кто реально пишут код, любят boost, но не боготворят, начинают проект с автосборки, где Вы?!

они в Японии
Автор: laren.dorr
Дата: 21.05.07
Re[13]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 31.05.07 16:11
Оценка:
Здравствуйте, FDSC, Вы писали:


FDS>Так устроит? (см. пояснения в комментариях)

FDS>
FDS>};

FDS>class C2
FDS>{
FDS>public:
FDS>    void PrintI()
FDS>    {
FDS>        cout << i << endl;
                //    Можно ли тут писать std::cout<<*i<<std::endl;?
FDS>    }
FDS>};
FDS>
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[7]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 31.05.07 16:11
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>передавать и запоминать ссылку как то уж ну совсем бессмысленно...

Ответили ранее: всякие scoped_lock-и
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[16]: Move Constructors
От: Roman Odaisky Украина  
Дата: 31.05.07 16:49
Оценка:
Здравствуйте, CreatorCray, Вы писали:

E>>>>Проблема этого кода в том, что он ill-formed (с первого беглого взгляда бросается в глаза void main).

CC>>>Вот любопытно: чего бОльшая часть народу цепляется именно к несчастному void main () тогда как реально критичные ошибки опускаются "на потом"?
E>>Так ведь это первое, что бросается в глаза. Зачем смотреть на остальное, если уже есть ответ?

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


Каким образом существование Microsoft® Visual® C++ 6.0 влияет на ill-formedness указанного текста согласно ANSI ISO/IEC 14882:2003?
До последнего не верил в пирамиду Лебедева.
Re[16]: А можно пример РЕАЛЬНОГО кода?
От: Roman Odaisky Украина  
Дата: 31.05.07 16:54
Оценка:
Здравствуйте, sc, Вы писали:

FDS>>А если представить себе ещё одно неправильное использование такой структуры блокировки: она незаметно для программиста (ну спешил человек или устал просто и не заметил) попадает во вложенные операторные скобки, а на самом деле должна блокировать всю функцию. Вот вам ещё одна ошибка, которую надо искать.... Правда тогда нужно делать функцию, а потом её обернуть ещё одной с синхронизацией чтобы точно никаких ошибок не было.... а это в C++ будет уже не удобно, скорее всего


sc>В данном случае, если ссылку заменить на указатель, вред точно такой же :)

sc>Почему же указатели хуже? Потому что Гугл на запрос "pointers are evil" выдает 554 ссылки а на "references are evil" всего 10 :)

Это напоминает мне «Как заработать миллион» и тот, второй, запрос с BOR.

Ссылки можно рассматривать как недоуказатели: не умеют менять адрес того, на что указывают, не бывают NULL. В этом-то и прелесть. Чем меньше, тем лучше. Надо будет, использую указатель — boost::reference_wrapper хранит данные отнюдь не в ссылке! А если хватит ссылки, воспользуюсь ей и наступлю на меньшее количество грабель.
До последнего не верил в пирамиду Лебедева.
Re[8]: что за ....!!! где C++ программисты?
От: Roman Odaisky Украина  
Дата: 31.05.07 17:03
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>Кстати, ссылки очень элементарно переназначаются чрезе memset и memcpy


_>

_>// примерная версия
_>int a1 = 0, b1=0;
_>int &a = a1, &b=b;

_>memcpy( &a, &b, sizeof(b) );

_>// прижелании можно использовать __asm
_>__asm lea, eax a

_>


_>и весь C++ идет курит бамбук.


не-не.

Хинт: что вернет &a и то ли же это самое, что &a1?
До последнего не верил в пирамиду Лебедева.
Re[6]: что за ....!!! где C++ программисты?
От: flashinc  
Дата: 31.05.07 17:49
Оценка:
_>

_>Известно, что ссылку нельзя переназначить и ссылка всегда должна быть инициализированная.


_>

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


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


А что если так:

struct ABC
{
     int &a;
};

void main()
{
    extern ABC abc;
}
Re[17]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 18:23
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Ссылки можно рассматривать как недоуказатели: не умеют менять адрес того, на что указывают, не бывают NULL. В этом-то и прелесть. Чем меньше, тем лучше. Надо будет, использую указатель — boost::reference_wrapper хранит данные отнюдь не в ссылке! А если хватит ссылки, воспользуюсь ей и наступлю на меньшее количество грабель.


Спор начался с того, что ссылка сама — грабли, так как по её использованию не видно, ссылка это или реальный объект
Re[14]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 18:26
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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



FDS>>Так устроит? (см. пояснения в комментариях)

FDS>>
FDS>>};

FDS>>class C2
FDS>>{
FDS>>public:
FDS>>    void PrintI()
FDS>>    {
FDS>>        cout << i << endl;
LM>                //    Можно ли тут писать std::cout<<*i<<std::endl;?
FDS>>    }
FDS>>};
FDS>>


Не понял.
i здесь — приватная переменная
Re[9]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 18:33
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:


RO>Хинт: что вернет &a и то ли же это самое, что &a1?


Судя по моему примеру, где в конструктор передаётся как раз ссылка, а потом от неё берётся указатель, вернёт то же самое
Re[11]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 18:38
Оценка:
Здравствуйте, 0x8000FFFF, Вы писали:

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


Невозможно. Иначе бы не было восхищений, когда профессионалы встречают человека, очень хорошо разбирающегося в нескольких различных областях математики, физики и т.п. Большинство профессионалов хорошо изучают и понимают только свою область

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


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

Так что не думаю, что объём каких-либо курсов в ВУЗе — это аргумент
Re[15]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 31.05.07 19:18
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Не понял.

FDS>i здесь — приватная переменная
Так класс писал ты, потом его правило еще десяток человек, и он достался мне
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[16]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 19:26
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


FDS>>Не понял.

FDS>>i здесь — приватная переменная
LM>Так класс писал ты, потом его правило еще десяток человек, и он достался мне

И?

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

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

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

А мне крысу достаточно навести, чтобы узнать что это ссылка, а чтобы узнать может ли этот указатель быть нулевым придется по коду полазить
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
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[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[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 09:56
Оценка:
Здравствуйте, alzt, Вы писали:

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


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

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


Именно. Надо смотреть как человек справляется с данными ему заданиями. Хорошо еще давать код и просить найти баги, проблемы, неудачные решения. Обсудить возможности расширения, параллелизации и т.п.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: А можно пример РЕАЛЬНОГО кода?
От: fmiracle  
Дата: 01.06.07 10:43
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>А я что, говорю о чём-то другом?


Да, там было четко написано "Ваш код не скопилируется", ни слова "мой тоже не скомпилируется".

FDS>ПОЖАЛУЙСТА, ЧИТАЙТЕ МОИ СООБЩЕНИЯ ПЕРЕД ТЕМ, КАК ОТВЕЧАТЬ НА НИХ!!!


не горячись, выпей валокордину что ли.
И пойми — даже если ты знаешь Дао и можешь написать такой хитрый выкрутас, который позволит использовать указатели вместо ссылок — то обычные смертные программисты такого не знают все равно и не уверены, что твое заклинание все еще в силе. Потому не смогут в других методах класса предполагать по умолчанию, что твой указатель ведет себя как ссылка и обязательно требует инициализации. Ну просто не могут, если у них есть какой-то практический опыт рабоыт в нашем переменчивом мире.

Потому что можно, конечно, использовать в театре, настоящие боевые полностью исправные автоматы, написав в инструкции, что патронов в них нет, и никогда не будет. Но здавомыслящий человек все же будет проверять наличие патронов прежде чем снимать его с предохранителя.

Ибо преценденты "неожиданного" появления боевых патронов в ранее незаряженном оружии в человеческой истории были.

Ну а неожиданное изменение поведения инциализации членов класса это вообще обычное дело.

Предположение что "данный указатель в данной программе всегда будет инициализирован, потому что так сказал Я" оно гораздо слабее, чем "данная ссылка всегда будет инициализирована, потому что неинициализированной ссылка быть просто не может".
Re[11]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 01.06.07 10:47
Оценка:
Здравствуйте, FDSC, Вы писали:

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


FDS>Если это будет итератор — я учту. Только скорее я буду там использовать ".Next" а не "++", а если я пишу for (int i = 0; i < L; i++), то какого чёрта мне писать ++i, это просто некрасиво


Мне почему-то тоже привычнее писать i++, хотя рационально объяснить я это не могу.
Re[18]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 10:58
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>И пойми — даже если ты знаешь Дао и можешь написать такой хитрый выкрутас, который позволит использовать указатели вместо ссылок — то обычные смертные программисты такого не знают все равно и не уверены, что твое заклинание все еще в силе. Потому не смогут в других методах класса предполагать по умолчанию, что твой указатель ведет себя как ссылка и обязательно требует инициализации. Ну просто не могут, если у них есть какой-то практический опыт рабоыт в нашем переменчивом мире.


Это никакие не заклинания. Я привёл вполне реальную вещь, которая абсолютно так же, как и ссылка, блокирует изменение значения указателя простым объявлением константности. Инициализации они требует, потому что указатель объявлен как константа, абсолютно аналогично ссылке. Единственное, при инициализации нужно проверить, что указатель инициализируется не нулём или инициализировать его с помощью переданной в конструктор ссылки (как я и продемонстрировал). Т.е. проверить указатель нужно лишь один раз: при инициализации в конструкторах или вообще не проверять, если используется ссылка

В чём тут колдовство я не понимаю. А вот у вас колдовство потом получится может, программист будет думать, что он изменяет приватный объект, например, а на самом деле будет изменять ссылку....

F>Потому что можно, конечно, использовать в театре, настоящие боевые полностью исправные автоматы, написав в инструкции, что патронов в них нет, и никогда не будет. Но здавомыслящий человек все же будет проверять наличие патронов прежде чем снимать его с предохранителя.


В данном случае, указатель далеко не полностью боевой. Ещё раз прошу вас прочитать сообщение, на которое вы ответили, перед тем, как продолжать со мной спор

F>Ибо преценденты "неожиданного" появления боевых патронов в ранее незаряженном оружии в человеческой истории были.


Да, зато ни разу не было, что бы автомат со спиленным бойком стрелял

F>Ну а неожиданное изменение поведения инциализации членов класса это вообще обычное дело.


Это да. Хотя если программист не совсем дурак, передавать NULL в конструктор он всё равно не будет, но даже если передаст, вы это сразу заметите, а вот где изменяется ваш любимый и лелеемый объект вы не заметите, если он будет изменяться по ссылке. Вы будете читать код и видеть, что изменяется какой-то другой объект, а вовсе не ссылка на ваш.

F>Предположение что "данный указатель в данной программе всегда будет инициализирован, потому что так сказал Я" оно гораздо слабее, чем "данная ссылка всегда будет инициализирована, потому что неинициализированной ссылка быть просто не может".


Константный указатель тоже не может быть неинициализирован — это ошибка компиляции. Третий раз прошу прочитать мой пост, перед тем, как продолжать спор
Re[7]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 11:01
Оценка:
Здравствуйте, DKM_MSFT, Вы писали:

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


Хм, и давно объём кода стали мерять экранами?
Re[11]: что за ....!!! где C++ программисты?
От: fmiracle  
Дата: 01.06.07 11:13
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Если это будет итератор — я учту. Только скорее я буду там использовать ".Next" а не "++", а если я пишу for (int i = 0; i < L; i++), то какого чёрта мне писать ++i, это просто некрасиво


Думай на тему STL и общего дизайна кода по всему проекту:

for (int i = 0; i < L; i++)
for (iterator i = start; i != end; ++i)

суть циклов совершенно одинакова. Почему надо в одном случае пиасать ++i а в другом i++???
Почему не писать более "общий" ++i?
Какая тут вообще принципиальная разница с этетической точки зрения где плюсики? Надо просто взять какой-то вариант в привычку да и использовать. Привычным может быть как тот так и другой. Зачем так упираться в свою привычку-то?

Я раньше тоже всегда писал i++, казалось красивее. Почитав про копирование перешел на ++i без каких-то проблем — теперь так же кажется красивее это. Или у тебя есть строгое доказательство большей красивости постфикса над префиксом?

Использовать .Next это круто конечно же. Особенно если создаешь итератор для работы с stl например, который предполагает наличие ++ но не .Next().
Я уж не говорю про случай, когда ты пользуешься чужим итератором, где нет твоего метода .Next. Ну можно обматерить автора, правда.
Re[12]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 11:19
Оценка:
Здравствуйте, alzt, Вы писали:

A>Мне почему-то тоже привычнее писать i++, хотя рационально объяснить я это не могу.


По моему это что-то связанное с законами композиции, надо у художников спросить
Re[13]: что за ....!!! где C++ программисты?
От: fmiracle  
Дата: 01.06.07 11:37
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>У меня высокохудожественный вкус: центр масс выражения "i++)" по середине, а "++i)" смещён вправо. К тому же, скобка рядом с переменной немного затрудняет чтение кода, а когда она отделена ++ это улучшает визуальную читабельность


С отделением скобки для улчшения читабельности согласен, то лично я просто предпочитаю всегда отделять скобки и операторы пробелами:

....; ++i );

а так же:
if( a )
while( !b )
Foo.Bar( c + 1 );


На мой взгляд — вернее получается
Re[14]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 11:43
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>
F>....; ++i );

F>а так же:
F>if( a )
F>while( !b )
F>Foo.Bar( c + 1 );

F>


F>На мой взгляд — вернее получается


Вот видите, лишний пробел нужно ставить Всё-таки ++i как-то выглядит неуравновешенно


Я простые названия перемнных не отделяю... даже наоборот, когда VisualStudio старается, приходится назад пробелы удалять

У меня что-то такое
if(!condition)

if ( !condition && calcFailed )



А вообще, согласен. Чем больше пробелов, тем удобнее читать (в разумных количествах, конечно)
Re[2]: Если судить по рег. данным сайта
От: Erop Россия  
Дата: 01.06.07 13:28
Оценка:
Здравствуйте, Ulter, Вы писали:

U>то это то-же самое, что abbyy и bitsoft

U>Делайте выводы...
А какие выводы надо сделать?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[15]: что за ....!!! где C++ программисты?
От: fmiracle  
Дата: 01.06.07 13:37
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Вот видите, лишний пробел нужно ставить Всё-таки ++i как-то выглядит неуравновешенно


Нет-нет, ты не уловил, я всегда отделяю пробелом. Так что у меня было бы одинаково в обоих случаях:

...; ++i );
...; i++ );
Re[16]: что за ....!!! где C++ программисты?
От: sc Россия  
Дата: 01.06.07 14:28
Оценка:
>.... я всегда отделяю пробелом.

ну вот, начали уже не помню с чего, продолжили ссылками и указателями, теперь спор идет о количестве пробелов. причем совсем не конструктивный
Re[16]: Малоизвестное зло :)
От: Erop Россия  
Дата: 01.06.07 15:08
Оценка:
Здравствуйте, sc, Вы писали:

sc>В данном случае, если ссылку заменить на указатель, вред точно такой же

sc>Почему же указатели хуже? Потому что Гугл на запрос "pointers are evil" выдает 554 ссылки а на "references are evil" всего 10

Да просто ссылки ЗЛО малоизвестное
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[15]: А можно пример РЕАЛЬНОГО кода?
От: NikeByNike Россия  
Дата: 01.06.07 16:58
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>И тут она будет поймана компилятором. Вставьте ВЕСЬ мой код в компилятор и попробуйте скомпилировать


virtual ~C2()
{
delete c1;
c1 = NULL; <- лишнее действие
}
Нужно разобрать угил.
Re[17]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 01.06.07 18:28
Оценка:
Здравствуйте, sc, Вы писали:

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


Это не спор, это обмен опытом
Re[13]: что за ....!!! где C++ программисты?
От: Андрей Хропов Россия  
Дата: 01.06.07 19:27
Оценка:
Здравствуйте, flashinc, Вы писали:

F>p.s.

F> в дискуссии выше, про сылки, еще не промелькнуло использование везде где только можно вместо ссылок или указателей
F>auto_ptr или shared_ptr. В том числе, и в качестве полей класса.

Естественно! В качестве полей класса надо использовать в зависимости от ситуации boost::shared_ptr или boost::scoped_ptr. Сразу видно какая политика владения и в большинстве случаев можно обойтись без написания деструктора.

Не хватает только стандартного copy_ptr, который бы при копировании клонировал объект на который указывает.

F>Есть и такие "модники"....


Ну-ну...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: что за ....!!! где C++ программисты?
От: Андрей Хропов Россия  
Дата: 01.06.07 19:27
Оценка:
Здравствуйте, flashinc, Вы писали:

F>Это всего лишь "мода" Мейерса или Саттера. Кроме того что прочитать и следовать "новой моде" полезно знать, какой код будет в реальности. А в реальности в 99.9% temporary не создастся, только если специально не стараться.


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

F>Если иметь по всему проекту привычку писать ++i, легко "намозолить глаза", и рано или поздно, влететь в ситуацию когда напишешь ++ptr = ... вместо ptr++


++ptr = "режет глаз" как раз
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[19]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 01.06.07 20:42
Оценка:
Здравствуйте, FDSC, Вы писали:

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

FDS>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо
FDS>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся
У класса может быть более одного конструктора
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[19]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 01.06.07 20:43
Оценка:
Здравствуйте, FDSC, Вы писали:

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

FDS>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо
FDS>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся
+
то что указатель константен не говорит о том, что он не может быть не равен NULL
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re: что за ....!!! где C++ программисты?
От: RSDN400  
Дата: 02.06.07 10:24
Оценка:
Кончились.
Re: что за ....!!! где C++ программисты?
От: minorlogic Украина  
Дата: 02.06.07 14:53
Оценка:
Они все пересели на Java ....
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[20]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 02.06.07 15:28
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


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

FDS>>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо
FDS>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся
LM>У класса может быть более одного конструктора

Ну и не сотня
Re[20]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 02.06.07 15:28
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


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

FDS>>Если вы не понимаете код, то самое время по нему полазить. Указатель вовремя укажет на это, а со ссылкой вы будете радостно думать, что всё хорошо
FDS>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся
LM>+
LM>то что указатель константен не говорит о том, что он не может быть не равен NULL

Да, поэтому вам и придётся полазить в конструкторе
Re[14]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 02.06.07 15:35
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Здравствуйте, flashinc, Вы писали:


F>>Это всего лишь "мода" Мейерса или Саттера. Кроме того что прочитать и следовать "новой моде" полезно знать, какой код будет в реальности. А в реальности в 99.9% temporary не создастся, только если специально не стараться.


АХ>Совершенно не обязательно, что не создастся. Все равно лучше писать чтобы выполнялись только необходимые действия.


Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.

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

Думать нужно о том, что пишешь, а уже потом о его скорости (или наоборот, сначала, если выбираешь алгоритм или архитектуру), но никак не во время кодирования. Давайте тогда вообще выбросим .NET, потому что сборка мусора менее эффективна, чем ручное распределение памяти
Re[21]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 02.06.07 16:06
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся

LM>>У класса может быть более одного конструктора
FDS>Ну и не сотня
Но мне нужно лезть куда-то, чтобы понять, что эта фигня не может быть НУЛЛ
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[21]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 02.06.07 16:06
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся

LM>>+
LM>>то что указатель константен не говорит о том, что он не может быть не равен NULL
FDS>Да, поэтому вам и придётся полазить в конструкторе
А зачем мне лазить?!
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[15]: что за ....!!! где C++ программисты?
От: kittown  
Дата: 02.06.07 17:20
Оценка:
Здравствуйте, FDSC, Вы писали:

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


FDS>Думать нужно о том, что пишешь, а уже потом о его скорости (или наоборот, сначала, если выбираешь алгоритм или архитектуру), но никак не во время кодирования. Давайте тогда вообще выбросим .NET, потому что сборка мусора менее эффективна, чем ручное распределение памяти


Знаешь в чем фишка ? Думать приходится первые несколько раз. Потом все ясно автоматически без раздумий, и никаких потерь времени от микрооптимизации одинаковых кусков кода одинаковыми способами нет. Это как кодинг стайл — над ним не задумываешься когда рука уже набита.
Re[22]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 02.06.07 18:38
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


FDS>>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся

LM>>>У класса может быть более одного конструктора
FDS>>Ну и не сотня
LM>Но мне нужно лезть куда-то, чтобы понять, что эта фигня не может быть НУЛЛ

Да, зато если ты будешь читать код, никогда не перепутаешь ссылку с объектом — а такую путаницу уже просто так не обнаружишь.

Я уже говорил, что если не понимаешь, как работает программа, лучше слазить посмотреть и указатель тебе подскажет, что ты не понимаешь. А если ссылка будет, то ты так и не заметишь, что что-то не то
Re[16]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 02.06.07 18:43
Оценка:
Здравствуйте, kittown, Вы писали:

K>Знаешь в чем фишка ? Думать приходится первые несколько раз. Потом все ясно автоматически без раздумий, и никаких потерь времени от микрооптимизации одинаковых кусков кода одинаковыми способами нет. Это как кодинг стайл — над ним не задумываешься когда рука уже набита.


Зато некрасиво. С какой стати я буду делать то, что мне не нравится просто так, чтобы это в привычку вошло? Если где-то создание лишнего объекта (а это — вообще говоря — баг компилятора) мне будет тормозить выполнение программы (ох как я в этом сомневаюсь), то я найду это место и поставлю там ++i, но иначе я буду писать так, как мне это приятно
Re[3]: что за ....!!! где C++ программисты?
От: Awaken Украина  
Дата: 03.06.07 06:19
Оценка:
> и т.д. И порой складывается парадоксальная ситуация, фирма не может найти себе специалиста, а толпа специалистов даже >не знает, какие требования предъявляются в этой фирме и не может привести себя в соответствие с этими требованиями.

не поэтому ли "хорошие" вакансии порой лежат на джоб.ру открытыми месяцами.
Re[4]: что за ....!!! где C++ программисты?
От: IWantToAsk Россия  
Дата: 03.06.07 07:06
Оценка:
A>не поэтому ли "хорошие" вакансии порой лежат на джоб.ру открытыми месяцами.

Некоторые вакансии к тому же составляются молоденькими девочками, даже без консультаций с уже работающими и знающими специфику специалистами. Знаю не по наслышке, у нас одна такая работала некоторое время... Страшно смотреть было на приходящих кандидатов.
Re[5]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 03.06.07 09:14
Оценка:
Здравствуйте, IWantToAsk, Вы писали:

A>>не поэтому ли "хорошие" вакансии порой лежат на джоб.ру открытыми месяцами.


IWT>Некоторые вакансии к тому же составляются молоденькими девочками, даже без консультаций с уже работающими и знающими специфику специалистами. Знаю не по наслышке, у нас одна такая работала некоторое время... Страшно смотреть было на приходящих кандидатов.


Что, некрасивые девушки приходили?
Re[22]: Предлагаю ничью :))
От: FDSC Россия consp11.github.io блог
Дата: 03.06.07 09:17
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


FDS>>>>К тому же крыса сообщит вам, что указатель константен, так что лазить особо и не придётся

LM>>>+
LM>>>то что указатель константен не говорит о том, что он не может быть не равен NULL
FDS>>Да, поэтому вам и придётся полазить в конструкторе
LM>А зачем мне лазить?!


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

Недостаток указателей в этом случае более часто встречающийся, но влечёт за собой гораздо меньшие последствия, даже если его вдруг проинициализируют нулём
Недостаток ссылок более редкий, но зато если уж встретится, с ним придётся помучится: ошибка не будет бросаться в глаза из самого кода
Re[3]: что за ....!!! где C++ программисты?
От: Мезенцев Владимир Андреевич Россия  
Дата: 03.06.07 16:46
Оценка:
П>Да на ник посмотри, ему 19 лет похоже. А диплом видимо ПТУ или среднеспец. колледжа какого-нибудь . Как раз 2 года после школы.

Однозначно ПТУ, к колледжах такое ***** на дипломку не дают, на курсовик и тот не тянет.
Путь к мозгу программиста лежит через его геморрой
Re[5]: что за ....!!! где C++ программисты?
От: sss1024 http://microforms.mobile-mir.com/
Дата: 03.06.07 17:32
Оценка:
Здравствуйте, DKM_MSFT, Вы писали:

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


S>>Зато незнание языка много что значит У меня на собеседовании треть кандитатов уходила после того, как не могли ответить на один из первых вопросов — как проинициализировать ссылку-член класса.


DKM>Это означает лишь то, что благодаря вашим усилиям, компания, вполне вероятно, лишилась многих хороших программистов.



к сожалению те кто говорят о ссылка или указателях элементарно не могут сделать вывод на печать или организовать работу с БД. Я б на месте хозяев более критично к таким личностям относился. А то и сами ничего не могут кроме как про виртуальные деструкторы трындеть так ещё и другим не дают.
Re[4]: что за ....!!! где C++ программисты?
От: sraider http://dvinogradov.blogspot.com
Дата: 03.06.07 23:23
Оценка:
FFF>Ага — вообще правильно строить GUI — тоже искуство =) Дело даже не в алгоритмах — а в самой структуре построения приложения =)

А это к архитектору, а не к программисту
Re[6]: что за ....!!! где C++ программисты?
От: IWantToAsk Россия  
Дата: 04.06.07 06:06
Оценка:
IWT>>Некоторые вакансии к тому же составляются молоденькими девочками, даже без консультаций с уже работающими и знающими специфику специалистами. Знаю не по наслышке, у нас одна такая работала некоторое время... Страшно смотреть было на приходящих кандидатов.

FDS>Что, некрасивые девушки приходили?

FDS>

Не в тему ибо приходили кандидаты, а не девушки.
Re[17]: А можно пример РЕАЛЬНОГО кода?
От: WolfHound  
Дата: 04.06.07 07:18
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные

Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: что за ....!!! где C++ программисты?
От: WolfHound  
Дата: 04.06.07 07:18
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Вообще-то компилятор должен, вроде, сам сгенерировать дефолтный конструктор ABC(int &)

Чего простите?
Кому это он должен?
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: что за ....!!! где C++ программисты?
От: sss1024 http://microforms.mobile-mir.com/
Дата: 04.06.07 07:25
Оценка:
NBN>Я раньше миддлеваре разрабатывал, вот там было очень много трындежа о хорошем стиле С++. Весь код писался по всем правилам от гуру и ещё более придирчиво. Это было правильно, потому что этим кодом пользуется уйма народу, в том числе в других странах.



а оно хоть работало, мидлеваре-то это? Или как обычно, все i++ поменяли на ++i а сообщения между слоями паковали в XML и распаковывали с помощью DOM-парсера? Если ты понимаешь о чём я
Re[4]: что за ....!!! где C++ программисты?
От: machine3000  
Дата: 04.06.07 08:03
Оценка:
Здравствуйте, Awaken, Вы писали:

A>не поэтому ли "хорошие" вакансии порой лежат на джоб.ру открытыми месяцами.


Да, и бизнес этих компаний не расширяется. Но это не может продолжаться вечно. В условиях дефицита кадров компании, следующие принципу "лучше не нанять десять подходящих чем нанять одного неподходящего" вымрут, как динозавры. А выживут те, кто вместо "возможно, этот не подходит" научатся определять уровень кандидатов с учётом их возможностей к обучению.
Re[8]: что за ....!!! где C++ программисты?
От: NikeByNike Россия  
Дата: 04.06.07 08:16
Оценка:
Здравствуйте, sss1024, Вы писали:


NBN>>Я раньше миддлеваре разрабатывал, вот там было очень много трындежа о хорошем стиле С++. Весь код писался по всем правилам от гуру и ещё более придирчиво. Это было правильно, потому что этим кодом пользуется уйма народу, в том числе в других странах.


S>а оно хоть работало, мидлеваре-то это? Или как обычно, все i++ поменяли на ++i а сообщения между слоями паковали в XML и распаковывали с помощью DOM-парсера? Если ты понимаешь о чём я


Работает, уже несколько лет. С алгоритмической точки зрения оно вылизано до предела, как ракета Есть куча вспомогательных, тяжелых вещей, которые отваливаются в релизе.
Нужно разобрать угил.
Re[9]: что за ....!!! где C++ программисты?
От: sss1024 http://microforms.mobile-mir.com/
Дата: 04.06.07 09:00
Оценка:
NBN>Работает, уже несколько лет. С алгоритмической точки зрения оно вылизано до предела, как ракета Есть куча вспомогательных, тяжелых вещей, которые отваливаются в релизе.

релиз это и есть конечная цель разработки. Если вы не в состоянии сделать работающую систему (а не ту в которой что-то отваливается) то грош цена любым алгоритмам.
Re[10]: что за ....!!! где C++ программисты?
От: NikeByNike Россия  
Дата: 04.06.07 09:29
Оценка:
Здравствуйте, sss1024, Вы писали:

NBN>>Работает, уже несколько лет. С алгоритмической точки зрения оно вылизано до предела, как ракета Есть куча вспомогательных, тяжелых вещей, которые отваливаются в релизе.


S>релиз это и есть конечная цель разработки. Если вы не в состоянии сделать работающую систему (а не ту в которой что-то отваливается) то грош цена любым алгоритмам.


Ты чего то не понимаешь. Система хорошая. То что отваливается — запрограммировано на отваливание, чтобы в релизе небыло ничего лишнего. Т.е. к примеру, данные на этапе разработки хранятся в хмл, а в релизе — в бинарном файле, оптимизированном для данной конкретной платформы. Соответственно ХМЛ парсер и вся связанная с ним система сериализации в релизе не компилируется.
Нужно разобрать угил.
Re[5]: что за ....!!! где C++ программисты?
От: Awaken Украина  
Дата: 04.06.07 09:55
Оценка:
IWT>Некоторые вакансии к тому же составляются молоденькими >девочками, даже без консультаций с уже работающими и знающими

если это твое дело за которое ты отвечаешь — составляй сам. я описания сам придумывал и уже потом отдавал девочкам.
Re[10]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 04.06.07 10:00
Оценка:
Здравствуйте, sss1024, Вы писали:

S>релиз это и есть конечная цель разработки. Если вы не в состоянии сделать работающую систему (а не ту в которой что-то отваливается) то грош цена любым алгоритмам.


Многие вещи полезны при отладке. В релизе они на хрен не нужны. Вот их и надо отваливать.
Re[6]: что за ....!!! где C++ программисты?
От: ArtemGorikov Австралия жж
Дата: 04.06.07 11:53
Оценка:
Здравствуйте, 0x8000FFFF, Вы писали:

FFF>Это да, если используешь действительно стандартные или сторонние контролы, но задачи часто на этом не ограничиваются. Очень часто приходится делать свои контролы. Покажите мне бесплатный контрол, который позволял бы расставлять и редактировать сплайны на картинке или для 3D модели. Может и есть платный — тут вот и думай — самому реализовывать или покупать — что дешевле.


Дешево и сердито- купить готовый и бороться с багами. Дорого и качественно (расширяемость, конкурентное преимущество, быстрое устранение багов) — написать свой.
Re[6]: что за ....!!! где C++ программисты?
От: IWantToAsk Россия  
Дата: 04.06.07 12:18
Оценка:
IWT>>Некоторые вакансии к тому же составляются молоденькими >девочками, даже без консультаций с уже работающими и знающими
A>если это твое дело за которое ты отвечаешь — составляй сам. я описания сам придумывал и уже потом отдавал девочкам.

Эээ! Я, как программист, отвечаю только за свой код. А за подбор кадров отвечают кадровики.
Re[9]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 04.06.07 18:18
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


FDS>>Вообще-то компилятор должен, вроде, сам сгенерировать дефолтный конструктор ABC(int &)

WH>Чего простите?
WH>Кому это он должен?

Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует
Re[15]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 04.06.07 20:00
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.

А если i имеет тип отличный от инта?
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[19]: А можно пример РЕАЛЬНОГО кода?
От: deniok Россия  
Дата: 04.06.07 20:24
Оценка:
Здравствуйте, FDSC, Вы писали:

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


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


FDS>>>На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные

WH>>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..

FDS>У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними


Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...
Re[10]: что за ....!!! где C++ программисты?
От: WolfHound  
Дата: 04.06.07 21:09
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует

Как проверял?
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: minorlogic, а пояснить минус? (-)
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:21
Оценка:
Здравствуйте, FDSC, Вы писали:

WH>>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..


FDS>У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними


minorlogic, а пояснить минус?
Re[11]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:22
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


FDS>>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует

WH>Как проверял?

Скомпилировал и посмотрел, компилит он код с инициализацией через конструктор, которого я не объявлял или нет
Re[16]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:23
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


FDS>>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.

LM>А если i имеет тип отличный от инта?

Какая разница, если команда состоит только из одного "i++;"? "Куда" его тут использовать?
Re[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:25
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


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

LM>А системник выбираете по цвету корпуса. Розовый — это так гламурно...

Нет, у Юлии Савичевой образ антигламурности, а я как раз участник её ОФК
Re[12]: что за ....!!! где C++ программисты?
От: WolfHound  
Дата: 05.06.07 07:36
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>>>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует

WH>>Как проверял?

FDS>Скомпилировал и посмотрел, компилит он код с инициализацией через конструктор, которого я не объявлял или нет


Код покажи.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: А можно пример РЕАЛЬНОГО кода?
От: deniok Россия  
Дата: 05.06.07 07:45
Оценка:
Здравствуйте, FDSC, Вы писали:

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


D>>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...


FDS>P.S. Такие обнуления наоборот помогают раньше выявить ошибку. Но смысла вашей фразы я всё равно не понял: что вы имели ввиду, что в релизе работать не будет...


Возможно я просто тебя не понял. Ты писал "про обращение по этим областям" здесь
Автор: FDSC
Дата: 04.06.07
. Я имел ввиду, что обращение по областям, где был объект, время жизни которого ты не контролируешь — это потенциальные грабли.
Re[25]: ну и зря ...
От: hunter_707 Россия  
Дата: 05.06.07 09:40
Оценка:
Здравствуйте, Sni4ok, Вы писали:

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



_>>ссылка — далеко не самое удачное изобретение микрософта ...


S>вы настолько грамотны, что до сих пор верите, что стандарт с++ придумали майкрософт?


а вы действительно настолько наивны и до сих пор полагаете, что стандарты в данной области принимаются (или, что еще вернее, могут быть приняты) без него?
Re[14]: Move Constructors
От: nixxxin  
Дата: 05.06.07 10:40
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Ну для начала *f=*b не скомпилируется из-за приватного наследования.


Это почему это? тут все ок.
Не скомпилится Foo* b=new Bar(200);
Re[15]: Move Constructors
От: Sergey Россия  
Дата: 05.06.07 10:56
Оценка:
Здравствуйте, nixxxin, Вы писали:

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


S>>Ну для начала *f=*b не скомпилируется из-за приватного наследования.


N>Это почему это?


Потому что наследование приватное.

N>тут все ок.


VC8sp1
error C2243: 'type cast' : conversion from 'Bar *' to 'const Foo &' exists, but is inaccessible


N>Не скомпилится Foo* b=new Bar(200);


Это тоже.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[8]: что за ....!!! где C++ программисты?
От: Константин Л. Франция  
Дата: 05.06.07 11:27
Оценка:
Здравствуйте, FDSC, Вы писали:

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


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

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

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



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


FDS>Вообще-то компилятор должен, вроде, сам сгенерировать дефолтный конструктор ABC(int &)


Не должен.

Компилятор умеет генерировать:

1) default ctor
2) copy ctor
3) operator =
4) dtor

все.
Re[22]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 16:37
Оценка:
Здравствуйте, deniok, Вы писали:

FDS>>P.S. Такие обнуления наоборот помогают раньше выявить ошибку. Но смысла вашей фразы я всё равно не понял: что вы имели ввиду, что в релизе работать не будет...


D>Возможно я просто тебя не понял. Ты писал "про обращение по этим областям" здесь
Автор: FDSC
Дата: 04.06.07
. Я имел ввиду, что обращение по областям, где был объект, время жизни которого ты не контролируешь — это потенциальные грабли.


Видимо не понял: я имею ввиду, что в C++ всегда есть вероятность, что ты по ошибке удалишь объект раньше, чем будет последнее к нему обращение. Что бы вероятность быстро выявить такое ошибочное обращение я и обнуляю указатели
Re[19]: Всем, кто поставил минусы, просьба отписаться - поче
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 16:40
Оценка:
Re[18]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 16:50
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Сразу видно, человек ни разу итераторы не писал Постфиксный оператор ++ обычно реализуется следующим образом:


S>
S>T T::operator++(int)
S>{
S>  T tmp(*this);
S>  ++*this;
S>  return tmp;
S>}
S>


Ну ладно, сдаюсь. Итераторы я писал (один или два ), но вот не на C++ и никогда для этого "++" не использовал
Но всё равно с int вполне можно и i++ использовать
Re[19]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 05.06.07 20:33
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Но всё равно с int вполне можно и i++ использовать


Да, с int можно. С указателем можно. Только никто не обещает, что сегодняшний указатель завтра не превратится в какую-нибудь хитрозагнутою фигню. Как это случалось, например, с std::vector<>::iterator при переходе с VC 6 на VC 7. Ну и зачем искуственно создавать трудности? На оптимизатор особо надеятся тоже не следует — во-первых, выкинуть временный объект он сможет далеко не всегда. Во-вторых, желательно чтобы дебаг тоже работал не слишком медленно — потому что отлаживать обычно приходится именно его. Итого, имеем 2 варианта — 1) при наличии выбора использовать постфиксный инкремент для интегральных типов и префексный — во всех других местах. 2) при наличии выбора везде использовать префиксный инкремент. Разумеется, второй вариант практичнее. А ваше эстетическое чувство пострадает от обоих вариантов примерно одинаково Мое эстетическое чувство так вообще от первого варианта страдает больше. До кучи, в первом варианте еще и думать больше. То ли там с дуру так написали, то ли тип интегралный, то ли действительно результат оператора важен. Во втором — увидел постфикс, включается повышенное внимание — результат оператора сразу используется.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[3]: Если судить по рег. данным сайта
От: Ulter  
Дата: 06.06.07 15:51
Оценка:
Здравствуйте, Erop, Вы писали:
E>А какие выводы надо сделать?

Каждому свои

У меня от них отрицательные впечатления. 7 часов собеседование. Все мозги промыли своими алгоритмическими и логическими задачами. В конце сказали, что им требуется, всего навсего, разработчик графического интерфейса пользователя. За полгода не смогли дать ни какого ответа. Первые 3 месяца напоминал о себе, но получал шаблонный ответ, что решение не принято, ждите. Я сделал выводы о непривлекательности, для меня, такого не серьезного работодателя.
Re[9]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 08.06.07 12:45
Оценка:
Здравствуйте, landerhigh, Вы писали:

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


L>Кстати, а какой правильный ответ на вопрос, поставленный как "Неявное преобразование типов"? Требуется написать реферат или что?


Реферат? боже упаси там 4 или 5 правил всего определяющих приоритет преобразований ... сейчас посмотрю точно ..
Страуструп. $7.4 стр 192 ... я это имел ввиду .. да и то заученного ответа тоже не оджидается ... хотябы понимание проблемы ...
Re[7]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 08.06.07 12:56
Оценка:
Здравствуйте, kittown, Вы писали:

P>>А это уже реальный косяк! .. =)


K>Не слишком. Полгода поработав на другом языке, подобную мелочевку (а это именно мелочевка, непринципиальные фичи) можно и забыть.


Единого мнения здесь быть не может, у меня одно у вас другое. Лично мое мнение что это фича — реально способно увеличить качество кода и скорость его отладки. Если вы с этим не согласны, то как говорится увы ... мы с вари разошлись во взгядах.

P>>и понимание основных механизмов языка (в мсдн-е не дают) это не тоже самое что и знание кактой то апишной функции которую действительно можно посмотреть в справочнике ....


K>Основные механизмы в C++ в точности те же, что и в обычном Си. От слова "основные". Все остальное — дополнительные и необязательные фичи. В некоторых компаниях они возводятся в фетиш и активно разбавляются не менее интересными внешними инструментами а-ля буст. В некоторых других компаниях значительная часть фич языка (вплоть до stl) просто запрещается к использованию, и никаких катастроф от этого не происходит. Это не самые существенные детали, и уж тем более не основы.


Вопрос, не в катастрофе а в эффективности. Некторые исповедуют одну методологию — другие другую. Я отчасти понимаю людей которые считают что сем проще тем лучше — но не всегда я ними согласен.


K>Я иногда принимаю экзамены по c++ для студентов, которые в силу бытия студентами знать его даже наполовину не могут в принципе. Из них многие легко ответят на ваши вопросы, а потом некоторые напишут вот это:


K>
K>void MyString::addChar(char ch) {
K>    if (charsNum < buffSize) {
K>        buff[charsNum++] = ch;
K>        return;
K>    } 

K>    char* temp = new char[buffSize+1];
K>    buffSize = buffSize + 1;
K>    for(int i = 0; i < charsNum; i++) temp[i] = buff[i];
K>    temp[charsNum++] = ch;
K>    delete buff;
K>    buff = temp;
K>    delete temp;

K>    return;    
K>}
K>



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

Плюс есть испытательный срок.

Плюс Плюс — никто не застрахован от ошибок.

Кстати про код, он хорош по край ней мере в одном, с первого взгляда видно что он совершенно не эффективен — (ошибки не искал) ...

K>Михаил
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 08.06.07 14:04
Оценка:
Здравствуйте, puremind, Вы писали:

P>Единого мнения здесь быть не может, у меня одно у вас другое. Лично мое мнение что это фича — реально способно увеличить качество кода и скорость его отладки. Если вы с этим не согласны, то как говорится увы ... мы с вари разошлись во взгядах.


Ну, скажем, если я забыл какую-то возможность языка, но помню о её существовании, то я всё равно смогу её применить
Re[9]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 09.06.07 07:37
Оценка:
Здравствуйте, FDSC, Вы писали:

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


P>>Единого мнения здесь быть не может, у меня одно у вас другое. Лично мое мнение что это фича — реально способно увеличить качество кода и скорость его отладки. Если вы с этим не согласны, то как говорится увы ... мы с вари разошлись во взгядах.


FDS>Ну, скажем, если я забыл какую-то возможность языка, но помню о её существовании, то я всё равно смогу её применить


Можно чтото и забыть, но инициализация членов класс к таким фичам явно не относится.
Можно например забыть про частичную специализацию — где она есть а где ее нет =)
Re[2]: что за ....!!! где C++ программисты?
От: DangerRSDN Россия http://danger-world.livejournal.com/
Дата: 10.06.07 21:47
Оценка:
Здравствуйте, trophim, Вы писали:

T>Хочу 1,5 и больше. Про шаблоны говорить не буду. Переманите меня из Ростова.

Не разменивайся. С твоим опытом В С++ можно больше 2000 сразу поднять. Научись себя больше ценить.
Re[21]: А можно пример РЕАЛЬНОГО кода?
От: The Lex Украина  
Дата: 26.06.07 19:21
Оценка:
Здравствуйте, FDSC, Вы писали:

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


D>>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...


FDS>Не понял о чём речь. Эти случаи были в Delphi, которая не делит как VisualStudio версии на релизные и отладочные. Когда я программирую на C++ ПРАКТИЧЕСКИ НИКОГДА не использую отладочный режим: он усложняет отладку


А как же Вы "неотладочный код" отлаживаете?
О! Есть еще один специфический "геммор": включаемая в релизной сборке система защиты от отладки-взлома-нелицензионного ипользования Т.е. релизный код неотлаживаемый _в_принципе_ — непригоден для отдадки и все тут. Вот тут-то и приходится "изворачиваться и подпрыгивать"...

FDS>К тому же, я всегда тестирую то, что даю другим, именно тот exe-файл, который даю, потому что часто бывает, что случайно забыл положить что-то в архив в спешке, или случайно взял не ту версию файла, или ещё что-нибудь в этом духе обнаруживается


А при чем тут, собсвенно, тестирование? Тестируется релизная версия — это и коню понятно — зачем тестерам отладочную версию "тестировать"?
Голь на выдумку хитра, однако...
Re[22]: А можно пример РЕАЛЬНОГО кода?
От: Александр Каширин  
Дата: 26.06.07 19:47
Оценка:
Здравствуйте, The Lex, Вы писали:

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


FDS>>Не понял о чём речь. Эти случаи были в Delphi, которая не делит как VisualStudio версии на релизные и отладочные. Когда я программирую на C++ ПРАКТИЧЕСКИ НИКОГДА не использую отладочный режим: он усложняет отладку


TL>А как же Вы "неотладочный код" отлаживаете?


Я бы предположил, что по логам.
Re[23]: А можно пример РЕАЛЬНОГО кода?
От: The Lex Украина  
Дата: 26.06.07 20:09
Оценка:
Здравствуйте, Александр Каширин, Вы писали:

АК>Здравствуйте, The Lex, Вы писали:


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


FDS>>>Не понял о чём речь. Эти случаи были в Delphi, которая не делит как VisualStudio версии на релизные и отладочные. Когда я программирую на C++ ПРАКТИЧЕСКИ НИКОГДА не использую отладочный режим: он усложняет отладку


TL>>А как же Вы "неотладочный код" отлаживаете?


АК>Я бы предположил, что по логам.


Я тоже, но тогда стоит н-ное количество вопросов, начиная с вопроса производительности и заканчивая вопросом ограничения логгирования у конечного клиента...
Голь на выдумку хитра, однако...
Re[22]: А можно пример РЕАЛЬНОГО кода?
От: superman  
Дата: 27.06.07 07:05
Оценка:
Здравствуйте, The Lex, Вы писали:


TL>А при чем тут, собсвенно, тестирование? Тестируется релизная версия — это и коню понятно — зачем тестерам отладочную версию "тестировать"?


ассерты? у меня к примеру в бета-продакшене бегает отладочная версия.
Re[4]: Если судить по рег. данным сайта
От: Keen the Green Россия  
Дата: 03.09.07 15:20
Оценка:
Здравствуйте, Ulter, Вы писали:

U>У меня от них отрицательные впечатления.

А у меня — положительные

U>7 часов собеседование. Все мозги промыли своими алгоритмическими и логическими задачами.

Есть такое.

U>В конце сказали, что им требуется, всего навсего, разработчик графического интерфейса пользователя.

Точно? Или может сказали, что нужен разработчик в _группу_ пользовательского интерфейса? Это не совсем то же самое

U>За полгода не смогли дать ни какого ответа. Первые 3 месяца напоминал о себе, но получал шаблонный ответ, что решение не принято, ждите.

Странно.. А давно ли это было? Есть подозрение, что впечатления сильно устарели..
K.T.G.
Re: что за ....!!! где C++ программисты?
От: sluge  
Дата: 04.09.07 07:53
Оценка:
рынок-такая штука-раз не можешь найти специалиста-значит или слишком мало денег предлагаешь или требования слишком закручиваешь
Re[5]: Если судить по рег. данным сайта
От: Quintanar Россия  
Дата: 04.09.07 08:59
Оценка:
Здравствуйте, Keen the Green, Вы писали:

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


U>>У меня от них отрицательные впечатления.

KTG>А у меня — положительные

U>>7 часов собеседование. Все мозги промыли своими алгоритмическими и логическими задачами.

KTG>Есть такое.

U>>В конце сказали, что им требуется, всего навсего, разработчик графического интерфейса пользователя.

KTG>Точно? Или может сказали, что нужен разработчик в _группу_ пользовательского интерфейса? Это не совсем то же самое

U>>За полгода не смогли дать ни какого ответа. Первые 3 месяца напоминал о себе, но получал шаблонный ответ, что решение не принято, ждите.

KTG>Странно.. А давно ли это было? Есть подозрение, что впечатления сильно устарели..


Это об АББИ? Я туда заходил чисто по приколу, поскольку заранее знал, что по их правилам попадаю на мелкую зарплату. Странные они люди, задачи я им быстро решил, а потом один из менеджеров мне долго доказывал, что я не имею понятия об ООП и остановился в развитии на уровне структурного программирования, поскольку последнее время я работал с С, хотя на С можно прекрасно писать в ООП стиле.
Другой потом зачем-то принижал свой отдел — типа они только и делают, что меняют параметры в функциях и смотрят, не стал ли лучше процесс распознавания.
Re[5]: Если судить по рег. данным сайта
От: Ulter  
Дата: 04.09.07 09:49
Оценка:
Здравствуйте, Keen the Green, Вы писали:

U>>В конце сказали, что им требуется, всего навсего, разработчик графического интерфейса пользователя.

KTG>Точно? Или может сказали, что нужен разработчик в _группу_ пользовательского интерфейса? Это не совсем то же самое
За давностью не буду настаивать на своем варианте...

U>>За полгода не смогли дать ни какого ответа. Первые 3 месяца напоминал о себе, но получал шаблонный ответ, что решение не принято, ждите.

KTG>Странно.. А давно ли это было? Есть подозрение, что впечатления сильно устарели..
А было это в январе 2007 года, ответа пока нет...
Re[12]: Move Constructors
От: Ubivetz Украина  
Дата: 07.09.07 13:58
Оценка:
Здравствуйте, Sergey, Вы писали:

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



S>Может ли (согласно стандарту, про реальные компиляторы пока не будем) скомпилироваться такой код:


S>
S>void Foo::bar(int a = 4, int b)
S>{
S>}
S>


S>И когда соискатель заявит, что не может (это вам в форуме понятно, что раз вопрос задан в качестве коварного, то ясен пень что оно скомпилироваться обязано, а на собеседовании все выглядит совсем по-другому), следом еще один вопрос — что надо написать в декларации класса, чтобы оно скомпилировалось. Вот это я понимаю, и коварно, и бессмысленно — потому что никто в здравом уме такого не напишет. Хуже вопрос только про ++i++ и скобки


error: default argument missing for parameter 2 of `int
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[4]: что за ....!!! где C++ программисты?
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 10.09.07 08:59
Оценка:
Здравствуйте, Мезенцев Владимир Андреевич, Вы писали:

МВА>Однозначно ПТУ, к колледжах такое ***** на дипломку не дают, на курсовик и тот не тянет.


Наивные
У нас в политехе (правда вечерний) девушка защитила диплом такого типа: имеется HTML-форма, где выбирается тип лампочек и объём помещения, а далее фигулька на PHP (это и есть ядро системы ^^) зная мощность лампочек вычисляет, во скока обойдётся освещение выбраной комнаты. у и добавлю, что она ни строчки не написала сама — она не знает даже, что такое PHP. Да, и никого она не подкупала — так прокатило. А вы говорите... Походу деградация полная наступила, писец короче.
Itsumo sobani, itsumo hitori.
Re: что за ....!!! где C++ программисты?
От: Ort США  
Дата: 10.09.07 15:03
Оценка:
>не могу найти программиста-профессионала C++

http://dev2dev.bea.com/pub/a/2007/08/cost-of-ownership.html
"По мне, уж лучше пей, да дело разумей"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.