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: что за ....!!! где C++ программисты?
От: dev1024  
Дата: 31.05.07 10:34
Оценка: +1
Здравствуйте, maximm__, Вы писали:

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


Видимо получают те самые 4.0K+.
Re[14]: А можно пример РЕАЛЬНОГО кода?
От: 0x8000FFFF Россия  
Дата: 31.05.07 10:37
Оценка:
std::auto_ptr_ref — да, он содержит сслыку на auto_ptr как член класса.
Re[11]: что за ....!!! где C++ программисты?
От: 0x8000FFFF Россия  
Дата: 31.05.07 10:43
Оценка: +1
Человек не знающий основных паттернов, смартпоинтеров и интрузивных контейнеров не может считаться опытным программистом, а значит у него недостаток опыта. Почему я так считаю — потому что — программист — человек ленивый, а использование таких вещей — очень облегчает жизнь, а значит — опыт есть =) Дальше встает вопрос — либо брать и учить (либо методом грабли, либо методом сенсей), постоянно отвлекаясь, либо искать опытных людей... Вопрос решается просто — что вы можите себе позволить =)
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[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: что за ....!!! где C++ программисты?
От: Kubyshev Andrey  
Дата: 31.05.07 11:36
Оценка: 1 (1) +6 -1 :))) :))) :))) :)
Читаю эту ветку находясь в отпуске на море... И знаете, такое чуство возникает, что возня какая то у вас там в Москве нездоровая
Не то что бы я там че то, просто я к тому что оторвите взгляд от компа, типа повертите в разные стороны и все такое...
А вы опять за свои копи-конструкторы, констатные методы и прочее ...
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[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[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[7]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 11:53
Оценка: +1 -1
Здравствуйте, 0x8000FFFF, Вы писали:


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


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

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


P.S. Вы знаете, у меня тоже не было компьютера и учился программировать я сначала по книгам, а затем уже (через несколько лет) мне его подарили...
так что и в наши дни компьтер — это романтика. Только вот что-то мне не хочется тратить свою жизнь на изучение того, что мне абсолютно не нужно и легко можно заменить другой вещью из этого же языка. По моему, как раз речь идёт о хламе.
Да и языков и библиотек столько, что непонятно, что учить и насколько глубоко
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.