Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Грабли, на которые мы наступаем 
:(
    Опции темы
newbee
Дата 7.2.2012, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Цитата(borisbn @  7.2.2012,  14:03 Найти цитируемый пост)
поведение будет отличаться от вызова той же функции не из конструктора.
Это нормально, когда одно и то же действие над одним и тем же объектом без воздействия видимых внешних факторов имеет несколько разных поведений? Это нормально, когда для нормальной инициализации (в широком смысле) объекта приходится вручную городить методы инициализации и не забывать вызывать их в конструкторах наследников?

Цитата(borisbn @  7.2.2012,  14:03 Найти цитируемый пост)
на момент работы конструктора базового класса виртуальной таблицы наследника не существует, как и самого наследника.
Вот я и написала: конструктор вызывается где-то посреди процесса создания объекта.


--------------------
You're face to face
With man who sold the world
PM   Вверх
mes
Дата 7.2.2012, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



newbee, с каким из императивных языков ведешь сравнение С++ ? 
сразу отмечу, что сравнение с Шарпом не честное, так как конечный код выполняется в разных средах... также как и с любимым некоторыми Обероном... 
если с Делфи, то лично я сбежал с него на С++ в силу ограниченности первого.. 
если просто как критика С++, то соглашусь со многим, но тут надо учесть, что С++ язык естесственного развития, плюс нацеленный на высокую производительность, что, к сожалению, выливается в кривизне многих решений.. И все  упирается в вопрос , а где ж (императивная) альтернатива ?!

Это сообщение отредактировал(а) mes - 7.2.2012, 15:43


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 7.2.2012, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



mes, не думаю, что у Вас есть грабли, но может поищете в загажниках ? Ну признайтесь, приходилось же наступать хоть дважды ? Может не в своём коде, а в том, который приходилось инспектировать ? 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Artemon
Дата 7.2.2012, 15:51 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Код

for(int k = 0; k < 100; k++)
   {
    for(int j = 0; j < 100; k++)
        {
        }
   }


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


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
newbee
Дата 7.2.2012, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Цитата(mes @  7.2.2012,  16:42 Найти цитируемый пост)
newbee, с каким из императивных языков ведешь сравнение С++ ? 
Ни с каким конкретным языком я не сравнивала, а старалась выделить объективные недостатки. Естественно мое мнение по определению субъективно, но оглядываясь на отзывы других трезвых плюсистов и тем, что даже тут вроде как все согласны с моими тезисами, склоняюсь считать это мнение более или менее объективным.

Цитата(mes @  7.2.2012,  16:42 Найти цитируемый пост)
если с Делфи, то лично я сбежал с него на С++ в силу ограниченности первого..
Громкое заявление. Делфи немодный и умирающий, но ограниченный... Обычно программисты в С++ стараются сделать некоторые вещи "как в Делфи", но не наоборот.

Цитата(mes @  7.2.2012,  16:42 Найти цитируемый пост)
надо учесть, что С++ язык естесственного развития, плюс нацеленный на высокую производительность
С каких пор развитие отменяет необходимость переработки? Нынешняя политика развития, основанная не внесение нового, привела к тому, что образовался снежный ком из кучи разнообразных лексем, конструкций, их комбинаций и тяжело вдупляемоей семантики.

Цитата(mes @  7.2.2012,  16:42 Найти цитируемый пост)
И все  упирается в вопрос , а где ж (императивная) альтернатива ?!
В этот вопрос вообще ничего не упирается на самом деле. Кривизна С++ не зависит от наличия альтернатив. Тот же C#, с которым ты почему-то запретил сравнивать, намного лучше и логичней... Мы ведь рассматриваем языки, а не платформы. А для меня альтернативой стал CL ;).


--------------------
You're face to face
With man who sold the world
PM   Вверх
mes
Дата 7.2.2012, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(newbee @  7.2.2012,  16:01 Найти цитируемый пост)
 Тот же C#, с которым ты почему-то запретил сравнивать, намного лучше и логичней...

потому что С# является языком развитой ОО-среды, и был заточен под нее.. С++ ж ложится на плоскую Ось, добавляя для нее ООП примитивы, но при этом не сильно отходя, чтоб оставаться системным языком.. 

Цитата(newbee @  7.2.2012,  16:01 Найти цитируемый пост)
Мы ведь рассматриваем языки, а не платформы

Увы,  некотрые недостатки С++ тянут корни именно от платформы.. в следствии его "системопредназначености" и не учитывать этого нельзя... 

Цитата(newbee @  7.2.2012,  16:01 Найти цитируемый пост)
Обычно программисты в С++ стараются сделать некоторые вещи "как в Делфи", но не наоборот.

При программировании, я думаю концепции, а потом отражаю ее в коде.. Увы дельфи ставил мне постоянно палки в колеса.. (я про Дельфи состояния 2007 года, сейчас он вроде обновился, и о последних изменениях я не в курсе)

Цитата(newbee @  7.2.2012,  16:01 Найти цитируемый пост)
 Нынешняя политика развития, основанная не внесение нового

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

Цитата(newbee @  7.2.2012,  16:01 Найти цитируемый пост)
что образовался снежный ком из кучи разнообразных лексем, конструкций, их комбинаций и тяжело вдупляемоей семантики.

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

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




--------------------
PM MAIL WWW   Вверх
mes
Дата 7.2.2012, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(borisbn @  7.2.2012,  14:45 Найти цитируемый пост)
не думаю, что у Вас есть грабли, но может поищете в загажниках ? Ну признайтесь, приходилось же наступать хоть дважды ? 

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

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

Случай два произошел из за того, что (упростим картину) в деструкторе одного статического объекта,   было обращение к другому статическому.. 
В зависимости от "порядка компиляции"  появлалась ошибка сегментации при закрытии проги.. 
http://forum.vingrad.ru/forum/topic-216957...y1552332/0.html

Больше "серьезных" (для полугодовалого знакомства с языком не было) ошибок, которые бы заставляли попотеть не было..
Хотя для обнаружения этих от дебагера понадобился лишь стек вызовов - смущало скорее всего лишь неправдоподобие ситуации.. 
 smile 



--------------------
PM MAIL WWW   Вверх
newbee
Дата 7.2.2012, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Ну... Все эти аргументы об "особенности" с++... и ось плоская, и системный... не выдерживают никакой критики. Страуструпу никто не мешал сделать нормальное ОО-расширение си,.. примеров хороших реализаций ООП уже было... но он сделал то, что сделал. Да и дело то вовсе не в ООП ведь, а в целом в хаотической сущности языка, нет стройности. И еще порцию идиотизма приносят обсаженные авторы всеми здесь любимого буста, половина библиотек которого формально следуют синтаксису с++, но де-факто расширяют его, причем самым дебильным способом - переопределением операторов. Две стоящие друг за другом строки a % b % c могут делать совершенно разные вещи, выдавать абсолютно невдупляемые ошибки компиляции, но зато блядь круто-то как!

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

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

Цитата(mes @  7.2.2012,  20:17 Найти цитируемый пост)
увы, но с выходом нового стандарта появление новых инструментов перекрыло множество логических прошлых дыр, и для того чтоб программить, не нужно знать устаревший ком, оставленный для совместимости
Ты можешь назвать хоть одну родовую травму С++, которую перекрыл новый стандарт?

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


--------------------
You're face to face
With man who sold the world
PM   Вверх
mes
Дата 8.2.2012, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(newbee @  7.2.2012,  20:20 Найти цитируемый пост)
 Страуструпу никто не мешал сделать нормальное ОО-расширение си

так есть же объективС, что ж все на него не перейдут, раз Страуструп ерунду придумал ?
 
Цитата(newbee @  7.2.2012,  20:20 Найти цитируемый пост)
примеров хороших реализаций ООП уже было... но он сделал то, что сделал

эх не люблю я чистое  ООП... 

Цитата(newbee @  7.2.2012,  20:20 Найти цитируемый пост)
Но то, что сделано криво, могло быть сделано прямо.

могло бы.. абсолютно согласен.. продуманности мало.. хотелосьбы конечно поменьше ляпов.. 
(маленькое оправдание, что остальным языкам было легче, видя проблемы С++ )

Цитата(newbee @  7.2.2012,  20:20 Найти цитируемый пост)
Ты можешь назвать хоть одну родовую травму С++, которую перекрыл новый стандарт?

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

Добавлено через 2 минуты и 48 секунд
Цитата(newbee @  7.2.2012,  20:20 Найти цитируемый пост)
. И еще порцию идиотизма приносят обсаженные авторы всеми здесь любимого буста, половина библиотек которого формально следуют синтаксису с++, но де-факто расширяют его, 

в этом и есть одна и затей буста.. опробывать в какую сторону менять язык )

Цитата(newbee @  7.2.2012,  20:20 Найти цитируемый пост)
Две стоящие друг за другом строки a % b % c могут делать совершенно разные вещи,

а я наоборот люблю это, правда когда с умом продуманы операторы smile





--------------------
PM MAIL WWW   Вверх
volatile
Дата 8.2.2012, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(newbee @  7.2.2012,  11:00 Найти цитируемый пост)
Вот тут на форуме один чувак... volatile или как-то так... просто прется, что С++ остается все таким же "простым" и делает именно то, что требует от него программист. 

Я понимаю конечно,  что лисп (или как-то так...), делает совершенно не то что требует от негго программист.
Но это вовсе не основание, чтобы такую затею переносить на С++
Пишите на лиспе. Что вам от С++ то нужно?


PM MAIL   Вверх
newbee
Дата 8.2.2012, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



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


--------------------
You're face to face
With man who sold the world
PM   Вверх
boostcoder
Дата 8.2.2012, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  8.2.2012,  00:04 Найти цитируемый пост)
почему до сих пор этот препроцессор не развили

такой, какой он сейчас - его вовсе запретить нужно!
тот же bash - как скриптовый микро-ЯП, в разы лучше(массивы/словари/карты/функции). и синтаксис не самый сложный(как у перл). почему бы что-то подобное не делает препроцессор?


ну а newbee могу лишь сказать то, что говорю обычно: чем виноват тебе инструмент, если ты им пользоваться не умеешь?

Это сообщение отредактировал(а) boostcoder - 8.2.2012, 00:43
PM WWW   Вверх
borisbn
Дата 8.2.2012, 08:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



История mes о google desktop напомнила...

Как-то 29 марта (это существенно) подходит ко мне молодой коллега Дима и говорит, что наша программа не пишет в БД. Я, ессно, спрашиваю "что менял" - отвечает "ничего". Ставим старую версию программы - не пишет. Ставим старую версию базы - не пишет. И так продолжалось 3 дня. 1-го апреля подходит Дима и говорит, что программа стала писать в БД. Я думал первоапрельский розыгрыш. Пошёл проверил. Старая версия программы в старую версию БД пишет. Новая - тоже...
В итоге что выяснилось: эту программу писали давным-давно ещё под DOS. Дима же переделывал её под Windows. В DOS в структуре, в которой хранится дата, месяц считается от 0, а в windows'овской структуре - от единицы. При записи в базу старый формат даты преобразовывался в новый без учёта этой особенности. Таким образом получалось, что мы пытались записать в БД 29 февраля, затем 30-е, затем 31-е... СУБД отказывалась воспринимать эти даты, а вот первое марта - пожалуйста.
Как никто не заметил, что дата в БД отличается на месяц - не знаю smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Earnest
Дата 8.2.2012, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



fish9370, веди себя прилично!
borisbn, ты тоже. Когда один хамит, а другой отвечает тем же - виноваты оба!
Последние два сообщения, пожалуй, удалю, чтобы не портить впечатления от темы.
...
Так, уже не два, бусткодер и ньюби подключились к срачу. Вам что, господа, делать нечего совсем?
Рабочий день на дворе! smile  smile  smile 


--------------------
...
PM   Вверх
borisbn
Дата 8.2.2012, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Earnest, сорри, что сорвался, но достал он уже хамить. Кста, и я тоже
Цитата(boostcoder @  8.2.2012,  10:07 Найти цитируемый пост)
ожидал модерации...

smile

Цитата(Earnest @  8.2.2012,  10:04 Найти цитируемый пост)
Рабочий день на дворе!

всё, всё, всё... действительно, работать надо.
/me пошёл делать очередные грабли ))


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1641 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.