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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП, стандарт и прочие крики души, выделено из "Как не надо писать код" 
:(
    Опции темы
HellStranger
Дата 29.7.2010, 12:41 (ссылка)    | (голосов:8) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(chipset @ 18.3.2006,  07:09)
С чем я встречался:
9. Переопределение оператора new/delete -- руки отрывать.
10. switch на 10 вариантов.
11. Функции принимающие 10 (да-да, 10) параметров.
Цитата(Ignat @  17.3.2006,  20:52 Найти цитируемый пост)
Блин, по скромной оценке кода больше тысячи строк... Как дальше с этим работать просто загадка тысячелетия. Но если назвался груздем...

Если там всего 1000 строк лучше переписать к чертям собачьим, такое и рефакторить низзя.

Ну естественно, ведь в Microsoft одни дибилы-дегенераты работают... Они ведь написали CreateProcess, принимающий больше 10 параметров...  А, если залезть в реализацию ntdll.dll так это просто умо не постижимо!!!!! Такой ###код, просто блевать хочется... Какой ООП к чертям, читсый C... Везде полно calloc/malloc, правда их кол-во совпадает с количеством free, но настоящему джигиту сипипишнику эт не важно, всё-равно new нужен, и чихать, что он через malloc на подавляющем числе компиляторов реализован... Да ладно, винда ведь сакс, эт мы давно слышали... правда так и не видели доказательств... Хрен с ним. Возьмём кроссовый Open Source FFMPEG. ПИЛЯЯААААТЬ!!!!!!!!! Там классов нету!!!!!!!! Там STL нет!!!!!!! Чистейшей воды C! Говно проект!!!!!!!!!! Выкинуть в топку!!!!!! И не важно, что это единственный проект, который реально можно юзать в приложениях обработки видео, и работать будет ещё куда шустрее, чем различные проприетарные чудеса...
Парень! С++ ###! Единственное, что в нём хорошего, это подмножество, называемое... я думаю, знаешь как... smile Просто надо уметь писать и знать особенности платформы, под которой пишешь! Озренительные проекты пишутся на C без единого упоминания убогого слова class и ещё более убогого std. 
PM MAIL   Вверх
djamshud
Дата 29.7.2010, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



Сколько эмоций, ржунимагу.

>Парень! С++ ###! Единственное, что в нём хорошего, это подмножество, называемое... я думаю, знаешь как...

C, что ли? Так это не подмножество С++.

>Озренительные проекты пишутся на C без единого упоминания убогого слова class и ещё более убогого std.

В большинстве "охренительных" проектов реализуется костыльная, меденная и до чертиков неудобная реализация ОО модели.

Школьник? Я угадал? Или уже абитуриент?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
boostcoder
Дата 29.7.2010, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(djamshud @  29.7.2010,  12:56 Найти цитируемый пост)
Школьник? Я угадал? Или уже абитуриент? 

промолчу ка я...
PM WWW   Вверх
HellStranger
Дата 29.7.2010, 13:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(djamshud @ 29.7.2010,  12:56)
Сколько эмоций, ржунимагу.

>Парень! С++ ###! Единственное, что в нём хорошего, это подмножество, называемое... я думаю, знаешь как...

C, что ли? Так это не подмножество С++.

>Озренительные проекты пишутся на C без единого упоминания убогого слова class и ещё более убогого std.

В большинстве "охренительных" проектов реализуется костыльная, меденная и до чертиков неудобная реализация ОО модели.

Школьник? Я угадал? Или уже абитуриент?

Покажи в FFMPEG убогую концепцию ООП. Покажи её в SDL... Страуструпа почитай, потом утверждай, что C- не подмножество C++. Хотя, что для такого мегамозга слова создателя языка, он же лучше знает. smile)))))))) Судя по всему, мальчик, ты ещё и в школе толком не учился... Саттера с Александреску начитался, а свою думалку не применяешь... Ты почитай внимательно про выделители памяти у Саттера... Человек явно не понимает, что он делает, а умницы-студенты его читают, учатся у него... )))))))
PM MAIL   Вверх
bsa
Дата 29.7.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



HellStranger, если ты не осилил С++, то так и скажи. Нечего тут кричать и изливать желчь.
Си используется в системном программировании, поэтому нет ничего удивительного в том, что ntdll.dll написан на нем.

Ты посмотри стандартную библиотеку Си. Ты в ней не найдешь функций с 10-ю параметрами. 4 - еще может быть. Как ты думаешь, люди придумавшие стандартную библиотеку сильно глупей "ребят" (индусов?) из Microsoft?

В *nix есть две функции: fork() и семейство exec(). первая создает копию текущего процесса, вторая производит запуск указанной программы путем замещения текущего процесса. Таким образом, если тебе нужно запустить программу без закрытия текущей, то нужно сделать fork() и из копии тут же exec. Если нужно замещение - то достаточно только exec. Зачем городить огород с 10-ю параметрам? Какое отношение имеет CreateProcess к потокам?

Удачные проекты, далеко не всегда могут являться примером по написанию кода. Типичный пример - WinAPI. Никто не будет спорить, что Windows очень успешная ОС. Но в то же время, многие признают, что WinAPI спроектирован очень плохо. Другой пример Qt (это уже C++), он тоже популярен, но спроектирован так, что пользоваться им просто и удобно. Чтобы в этом убедиться, достаточно посмотреть количество и сложность вопросов в соответствующих разделах форума. Вопросы по Qt значительно сложней, так как до простого и самому догадаться несложно.

Короче, большое количество параметров у функций от небольшого количества ума (опыта). Заруби себе на носу.
PM   Вверх
djamshud
Дата 29.7.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



>Покажи в FFMPEG убогую концепцию ООП. Покажи её в SDL...

Я не сказал, что оно есть везде. Оно есть во всем gtk-софте (это просто п-ц), оно есть в ядре линупса (впрочем там, то что я видел, было вполне адекватным) и еще в нескольких опенсорсных поделках, что мне приходилось расковыривать.

>утверждай, что C- не подмножество C++

Вот пример сишного, но не плюсового кода:
Код

int *ptr=malloc(4096);

Ботай теорию множеств и попробуй после этого доказать, что c - подмножество с++. В реальности С++ просто совместим с Си (апи, бинарно и синтаксически).

>Саттера с Александреску начитался, а свою думалку не применяешь... Ты почитай внимательно про выделители памяти у Саттера... Человек явно не понимает, что он делает, а умницы-студенты его читают, учатся у него... )))))))

Кто все эти люди? /*сарказм*/ (я использую плюсы весьма своеобразно, так что на этих авторов лично мне плевать).

Добавлено через 1 минуту и 31 секунду
>в Microsoft одни дибилы-дегенераты работают... Они ведь написали CreateProcess, принимающий больше 10 параметров...

Дык, что есть, то есть.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
HellStranger
Дата 29.7.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(UnrealMan @ 30.3.2006,  14:26)
Цитата(Ignat @ 18.3.2006, 06:52)
2. Догадайтесь как обстоят дела с выделением памяти? Именно, незабвенный malloc.

А чем собс-но плох malloc? В случае, когда используются нетривиальные объекты (с конструктором, деструктором), и требуется перевыделение памяти с сохранением данных (realloc), использование new и delete – явно не самое удачное решение.

Ну как же, malloc/calloc/realloc не C++ style... Не для настоящих джигитов, которые обычный буфер для хранения видеокадра не могут в класс не запихнуть... )))))))))
PM MAIL   Вверх
bsa
Дата 29.7.2010, 13:21 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



Цитата(HellStranger @  29.7.2010,  14:05 Найти цитируемый пост)
Покажи её в SDL...

Ты видимо даже не знаешь, что такое ООП и чем оно от классов отличается. SDL это типичный пример реализации ООП на Си. Ты создаешь объект SDL_Surface и получаешь на него указатель (почти нет отличий от ptr = new SDL_Surface(...)), дальше ты применяешь к нему методы, вот только запись отличается, вместо ptr->method(...) писать надо SDL_method(ptr,...), что не сильно отличается от С++, так как генерируемый в обоих случаях код выглядит идентично.
Запомни, написать более или менее сложный проект без использования ООП в той или иной степени практически нереально. Тот же Windows использует этот подход, обрати внимание на CreateFile, функции работы с графическим контекстом и пр. Все тоже самое: создаешь (получаешь) объект, работаешь с ним, используя подходящие методы, освобождаешь объект.
PM   Вверх
Abyx
Дата 29.7.2010, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 10



Цитата(HellStranger @  29.7.2010,  14:05 Найти цитируемый пост)
Покажи в FFMPEG убогую концепцию ООП. 

открываем первый попавшийся файл
http://git.ffmpeg.org/?p=ffmpeg;a=blob;f=l...e638c66;hb=HEAD
и видим:
Код

//фабрика
AVFilter *avfilter_get_by_name(const char *name);

//какой-то метод
int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque);

//деструктор
void avfilter_destroy(AVFilterContext *filter);



алсо да, в Си дзена нет. А вот в С++ дзен есть, и его там немало.

Это сообщение отредактировал(а) Abyx - 29.7.2010, 13:26
PM MAIL   Вверх
djamshud
Дата 29.7.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



>Ну как же, malloc/calloc/realloc не C++ style... Не для настоящих джигитов, которые обычный буфер для хранения видеокадра не могут в класс не запихнуть... )))))))))

Ох, красавчег, ты видел что-нибудь сложнее буфера видеокадра? Разветвленые структуры данных например? Если видел, то расскажи, как ты без крупных затрахов будешь с ними работать средствами одного си. Или настоящие джиги^Wиндусы отностят структуры данных к прихотям современных идиотов плюсофилов и сами пользуются обычными переменными и тучей функций с десятью параметрами?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
HellStranger
Дата 29.7.2010, 13:27 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(djamshud @ 29.7.2010,  13:14)
>Покажи в FFMPEG убогую концепцию ООП. Покажи её в SDL...

Я не сказал, что оно есть везде. Оно есть во всем gtk-софте (это просто п-ц), оно есть в ядре линупса (впрочем там, то что я видел, было вполне адекватным) и еще в нескольких опенсорсных поделках, что мне приходилось расковыривать.

>утверждай, что C- не подмножество C++

Вот пример сишного, но не плюсового кода:
Код

int *ptr=malloc(4096);

Ботай теорию множеств и попробуй после этого доказать, что c - подмножество с++. В реальности С++ просто совместим с Си (апи, бинарно и синтаксически).

>Саттера с Александреску начитался, а свою думалку не применяешь... Ты почитай внимательно про выделители памяти у Саттера... Человек явно не понимает, что он делает, а умницы-студенты его читают, учатся у него... )))))))

Кто все эти люди? /*сарказм*/ (я использую плюсы весьма своеобразно, так что на этих авторов лично мне плевать).

Добавлено @ 13:16
>в Microsoft одни дибилы-дегенераты работают... Они ведь написали CreateProcess, принимающий больше 10 параметров...

Дык, что есть, то есть.

> Вот пример сишного, но не плюсового кода:
Код

int *ptr=malloc(4096);

Ботай теорию множеств и попробуй после этого доказать, что c - подмножество с++. В реальности С++ просто совместим с Си (апи, бинарно и синтаксически).

Понятно, когда кончаются аргументы, переходим на философские темы... smile))))))))))) Мне казалось я ясно выразился по поводу подмножества... Если ты полез в определение множеств, то давай цитатами из Кантора начнём друг в друга кидаться... 

>(я использую плюсы весьма своеобразно, так что на этих авторов лично мне плевать).
Через попу в смысле?.. Ну-ну, нестандартный подход- это тру. smile)))))))

>Дык, что есть, то есть.

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

Ох и смешной товарищ... )
PM MAIL   Вверх
Abyx
Дата 29.7.2010, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 10



djamshud, люди на масме32 код дизассеблируют и граф строят, потом этот граф обрабатывают и пишут обратно,
а вы говорите на Си со сложными структурами данных работать сложно. Нормально там с ними работать. Только в 95% случаях этого не надо. И С++ обычно не надо.

Добавлено через 1 минуту и 1 секунду
а вообще тролль какой-то глупый и толстый попался %) неинтересно =\
PM MAIL   Вверх
HellStranger
Дата 29.7.2010, 13:33 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(djamshud @ 29.7.2010,  13:25)
Ох, красавчег, ты видел что-нибудь сложнее буфера видеокадра? Разветвленые структуры данных например? Если видел, то расскажи, как ты без крупных затрахов будешь с ними работать средствами одного си. Или настоящие джиги^Wиндусы отностят структуры данных к прихотям современных идиотов плюсофилов и сами пользуются обычными переменными и тучей функций с десятью параметрами?

Отправляю в дебри FFMPEG. Посмотри на структуры данных AVCodecContext, например, AVStream и т.д. А потом выёпывайся... К твоему сведению, B- и try- деревья в C c лёгкостью стоятся и обрабатываются, ну а про то, что работает вся эта красота намного быстрее ++, я и говорить не буду. smile)))

Добавлено через 2 минуты и 26 секунд
Цитата(Abyx @ 29.7.2010,  13:29)
djamshud, люди на масме32 код дизассеблируют и граф строят, потом этот граф обрабатывают и пишут обратно,
а вы говорите на Си со сложными структурами данных работать сложно. Нормально там с ними работать. Только в 95% случаях этого не надо. И С++ обычно не надо.

Добавлено @ 13:30
а вообще тролль какой-то глупый и толстый попался %) неинтересно =\

А мы уже пришли к выводу, что эти люди дебилы... Так что вы не в тему с графами на Microsoft asm... smile))))))))))
Дайте вы линуксоиду покуражиться, отдохнуть от консоли... smile))))))))
PM MAIL   Вверх
djamshud
Дата 29.7.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



Abyx, кто сказал, что нельзя? Просто не так удобно, особенно если не прибегать к ооп.

HellStranger, 

>Понятно, когда кончаются аргументы, переходим на философские темы...

Математика - это не философия. Ты ляпнул глупость, сел в лужу, а теперь газифицируешь ее.

>Через попу в смысле?.. Ну-ну, нестандартный подход- это тру.

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

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

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

Добавлено через 2 минуты и 9 секунд
>Отправляю в дебри FFMPEG.

Не хочу лезть. Я знаю, что можно, и я знаю, что работать с ними намного удобнее в объектно-ориентированном виде. И тебя, детка, уже кажется ткнули носом, что и сам ffmpeg использует ОО-подход.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
HellStranger
Дата 29.7.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(bsa @ 29.7.2010,  13:21)
Цитата(HellStranger @  29.7.2010,  14:05 Найти цитируемый пост)
Покажи её в SDL...

Ты видимо даже не знаешь, что такое ООП и чем оно от классов отличается. SDL это типичный пример реализации ООП на Си. Ты создаешь объект SDL_Surface и получаешь на него указатель (почти нет отличий от ptr = new SDL_Surface(...)), дальше ты применяешь к нему методы, вот только запись отличается, вместо ptr->method(...) писать надо SDL_method(ptr,...), что не сильно отличается от С++, так как генерируемый в обоих случаях код выглядит идентично.
Запомни, написать более или менее сложный проект без использования ООП в той или иной степени практически нереально. Тот же Windows использует этот подход, обрати внимание на CreateFile, функции работы с графическим контекстом и пр. Все тоже самое: создаешь (получаешь) объект, работаешь с ним, используя подходящие методы, освобождаешь объект.

Да по ходу дела, ты не знаешь... Основополагающая концепция ООП инкапсуляция здесь не выполнена к твоему сведению. Данные существуют отдельно, методы их обработки отдельно! Отличие от ptr = new SDL_Surface(...)) принципиальное, выделилась память под структуру, инициализировались поля по умолчанию, всё! С таками подходом char *cString = (char *)calloc(10, 1) можно назвать ООП в действии. Есть указатель на объект cString, вызвали его конструктор calloc, а потом будем методы вызывать strcpy, strcmp и так далее... Процедурное программирование, выходит, в прямом смысле является ООП. Есть данные, есть функции для их обработки... Достаточно! На хрен инкапсуляци, нахрен наследование, туда же полиморфизм...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




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


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

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