+ Ответить в теме
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 20 из 26

Тема: Многофайловые проекты на С++

  1. #1
    Новичок Alander кто это?
    Регистрация
    17.02.2009
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    Question Многофайловые проекты на С++


    Сижу, ообложил себя страупами, делаю свой первый проект(тетрис на OGL).
    Но вот тут наткнулася на что-то, что никак не могу понять.
    Попорядку...
    1.Вместо пустого бланка взял 7 урок от NeHe(благо 1 кубик там уже есть:-))
    2.Решил сразу разделить проект на несколько файлов и новые модули
    оформлять ввиде классов.
    Но для начала:
    //Winmain.cpp
    void DrawScene(void);
    ...
    DrawScene();

    ...

    //DrawScene.cpp
    #include "DrawCube.h"
    void DrawScene(void){
    ...
    cube cube1;
    cube1.DrawCube;
    ...
    };


    //DrawCube.cpp
    #include "DrawCube.h"
    void cube:DrawCube(void){....};

    //DrawCube.h
    class cube{
    public:
    void DrawCube(void);
    };


    При линковке на CodeBlock8.2+GCC
    получается, что DrawCube не определена!
    obj\Release\DrawScene.o:DrawScene.cpp:(.text+0xa9) ||undefined reference to `class_CubeOne::DrawCube()'|
    ||=== Build finished: 1 errors, 0 warnings ===|

    (На VC++2005 тоже самое)

    У Лафоре читал о разнице объявлний от определения. Очевидно,
    нужно определить функцию DrawCube() в файле DrawCube.cpp.
    Как?
    Смотрел стороние исходники. Там вроде всё работает и без определений ...
    В чём ошибка???

    PS: В тексте : + D = :D
    Последний раз редактировалось Alander; 17.02.2009 в 20:50.

  2. #2
    Гений wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь Аватар для wertyman
    Регистрация
    03.05.2006
    Возраст
    34
    Сообщений
    2,077
    Поблагодарил(а)
    566
    Получено благодарностей: 875 (сообщений: 424).

    По умолчанию

    Для каждого нового класса создавай новый файл header, с объявлением класса и внутри объявляй члены и везде, где собираешь использовать этот класс, подключай хэдер через include.
    Покажи что пишет VC.
    Вроде у тебя ошибка при линковке, объявления везде нормальные, просто объект не линкуется, значит файл, где реализован класс не включен в проект, не компилируется...

    Знать, как писать, не означает уметь писать....

  3. #3
    Новичок Alander кто это?
    Регистрация
    17.02.2009
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию

    Вот, что пишет VC++2005:
    1>------ Rebuild All started: Project: Tetris3D, Configuration: Release Win32 ------
    1>Deleting intermediate and output files for project 'Tetris3D', configuration 'Release|Win32'
    1>Compiling...
    1>Start.cpp
    1>.\Sourses\Start.cpp(65) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1> D:\Program Files\Microsoft Visual Studio 8\VC\include\stdio.h(234) : see declaration of 'fopen'
    1>Figures.cpp
    1>DrawScene.cpp
    1>Generating Code...
    1>Linking...
    1>DrawScene.obj : error LNK2028: unresolved token (0A000035) "public: void __thiscall class_CubeOne::D(void)" (?D@class_CubeOne@@$$FQAEXXZ) referenced in function "int __cdecl DrawScene(void)" (?DrawScene@@$$FYAHXZ)
    1>DrawScene.obj : error LNK2019: unresolved external symbol "public: void __thiscall class_CubeOne::D(void)" (?D@class_CubeOne@@$$FQAEXXZ) referenced in function "int __cdecl DrawScene(void)" (?DrawScene@@$$FYAHXZ)
    1>Release\Tetris3D.exe : fatal error LNK1120: 2 unresolved externals
    1>Build log was saved at "file://k:\Projects\(work)--TetrisOGL--2009\Table_Start\VS_build\Release\BuildLog.htm"
    1>Tetris3D - 3 error(s), 1 warning(s)
    ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========


    Есди реализацию члена DrawCube() из DrawCube.cpp запихнуть в DrawCube.h,
    то всё линкуется пучком и ехешник работает на ура.
    Но я хочу разделить реализацию от объявления и при попытке слинковать получаю ошибку.
    Хотелось бы подозревать что дело в настройках компилятора, но в разных компилях одно и тоже.
    Что значит вряд ли.
    Файлы в проект добавляю, как положено, то бишь через мастер IDE.
    ???

  4. #4
    Гений wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь Аватар для wertyman
    Регистрация
    03.05.2006
    Возраст
    34
    Сообщений
    2,077
    Поблагодарил(а)
    566
    Получено благодарностей: 875 (сообщений: 424).

    По умолчанию

    DrawCube.cpp
    нету в проекте тогда. Добавь просто во вкладке файлы.

    Знать, как писать, не означает уметь писать....

  5. #5
    Новичок Alander кто это?
    Регистрация
    17.02.2009
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию

    Но DrawCube.cpp компилируется, доказательством служит появления объектного файла DrawCube.o (GCC) и DrawCube.obj(VC++2005)
    Правда открыл я
    DrawCube.o гексом, а там нихр-а нет: 288 байт, из которых тричетверти нулей. А процедура то явно не в этом объёме.
    (
    DrawCube.obj в 100 раз увесестей, но без толку)
    ...
    Короче, пока рыдаю...

  6. #6
    Гений wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь Аватар для wertyman
    Регистрация
    03.05.2006
    Возраст
    34
    Сообщений
    2,077
    Поблагодарил(а)
    566
    Получено благодарностей: 875 (сообщений: 424).

    По умолчанию

    1>Compiling...
    1>Start.cpp
    1>.\Sourses\Start.cpp(65) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1> D:\Program Files\Microsoft Visual Studio 8\VC\include\stdio.h(234) : see declaration of 'fopen'
    1>Figures.cpp
    1>DrawScene.cpp
    1>Generating Code...
    1>Linking...
    Где тут компилируется DrawCube? Удали все объектные и темповые файлы и сделай ребул алл.

    Знать, как писать, не означает уметь писать....

  7. #7
    Новичок Alander кто это?
    Регистрация
    17.02.2009
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию

    wertyman, громадная благодарность за участие!
    Кнопки Clean и Rebuild у меня отполированны до блеска и я никогда не ленился лично заглянуть в заветную директорию. Но дело тут вот в чём. DrawCube.cpp и Figures.cpp одно и тоже. Извини, просто за эти сутки я переписывал код около десятка раз и был уже на пороге великого форматирования от блинов до мозгов :-)...

    В данный момент всё работает. Для этого мне пришлось убрать inline для функций в файле реализации. Сечас я не представляю какие нужно создать условия, чтобы он работал отдельно от хедера.(Т.е. это когда реализацию члена прописать в заголовочном файле: не иначе) Что ж оптимизацией займусь позднее - на финише...
    Вчера подключил звук(audiere), растровые и векторные шрифты(NeHe).
    Далее буду настраивать встроенный монитор параметров в реалтайм. Для этого понадобится что-то типа примитивного GUI.

    Вообще разделить проект на модули(файлы) для меня было архиважно. Это позволит мне внести в программирование, собственно, слой проектирования, что, я уверен положительно скажется на итоговый результат(и оправдано можно будет называть текущий результат проектом). Я уже на личном опыте сталкивался с тем, когда непланово-хаотичное добавление "фич" в программу постепенно превращает её в клубок запутанной лески, в котором уже перестаёшь сам что-либо понимать.

    Конечно же вопросов всегда хватает... Но искать ответы самому тоже интересно.

    Ещё раз спасибо!

    Последний раз редактировалось Alander; 20.02.2009 в 09:41.

  8. #8
    Гений wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь Аватар для wertyman
    Регистрация
    03.05.2006
    Возраст
    34
    Сообщений
    2,077
    Поблагодарил(а)
    566
    Получено благодарностей: 875 (сообщений: 424).

    По умолчанию

    Да все просто, не понимаю в чем у тебя могут возникнуть там сложности. Купи книжку для начинающих в ООП на C++.
    Класс объявляешь и описываешь все методы и члены в заголовочном файле ( хэдере ), реализуешь все методы в отдельном cpp файле. Там где хочешь использовать свой класс, создать объект. Подключаешь заголовочный файл через Include и все....

    Знать, как писать, не означает уметь писать....

  9. #9
    Новичок Alander кто это?
    Регистрация
    17.02.2009
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию -==Дополнение==-

    Уже купил(скачал). Моя библиотека насчитывает 96 книг только по C и С++. (отдельно 33 книги по С# и т.д.) И я пролистал их все.
    Да кроме книжек я ещё смотрю исходники из разных example. А они просто завалены приставками inline. Eго испльзование в случае многофайловых программ я не встречал в книгах. Почему-то я не подумал, что оператор препроцессора inline может повесить ликовщик.
    Хорошо, чуть позже я изготовлю очищенный исходник с этой проблемой и все кто пожелают попробуют его завести. Я не исключаю, что решение лежит где-то на поверхности. Мне было бы очень интересно.

    И так моя проблема на пальцах. Рассмотрим две программы:
    __________________________________________________ _____________
    //Программ №1,которая линкуется
    //Реальный код минимального консольного приложения под VC++2005
    //File1.cpp

    #include "stdafx.h"
    #include "2.h"
    _myClass myO;
    int _tmain(int argc, _TCHAR* argv[])
    {
    myO.func();
    return 0;
    }


    //File2.h
    #include "stdafx.h"
    class _myClass{
    public:
    bool func(void);
    };
    inline bool _myClass::func(){
    return 0;
    }

    __________________________________________________ _____________

    //Программ №2.Это НЕ линкуется!
    //File1.cpp

    #include "stdafx.h"
    #include "2.h"
    _myClass myO;
    int _tmain(int argc, _TCHAR* argv[])
    {
    myO.func();
    return 0;
    }


    //File2.cpp
    #include "File2.h"
    #include "stdafx.h"
    inline bool _myClass::func(){
    return 0;
    }


    //File2.h
    class _myClass{
    public:
    bool func(void);
    };


    __________________________________________________ _____________
    Как видно отличия между первой и второй прогой минимальны. Я всего лишь отделил по разным файлам во втором случае объявления от реализации.

    Так вот, как же сделать, чтобы код функции func() встраивался без её вызова во втором случае? Или хотябы подскажите, где об этом можно почитать?
    Последний раз редактировалось Alander; 20.02.2009 в 20:35.

  10. 1 пользователь сказал cпасибо Alander за это полезное сообщение:

    rr3 (20.02.2009)

  11. #10
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от Alander Посмотреть сообщение
    Уже купил(скачал). Моя библиотека насчитывает 96 книг только по C и С++. (отдельно 33 книги по С# и т.д.) И я пролистал их все.
    Да кроме книжек я ещё смотрю исходники из разных example. А они просто завалены приставками inline. Eго испльзование в случае многофайловых программ я не встречал в книгах. Почему-то я не подумал, что оператор препроцессора inline может повесить ликовщик.
    Хорошо, чуть позже я изготовлю очищенный исходник с этой проблемой и все кто пожелают попробуют его завести. Я не исключаю, что решение лежит где-то на поверхности. Мне было бы очень интересно.
    inline - не оператор препроцессора. inline - директива компилятора. И работает только если определение (не объявление) функции находится в области видимости - так что если хочешь чтобы работало - придется запихивать эти функции в инклюды.
    Просто дело в том, что inline функции не генерируют обьектный код как таковой. Они по стандарту должны быть определены во всех еденицах трансляции где используются.
    Btw, кстати, учти что разнесение проекта по разным файлам несколько его тормозит. Вон, sqlite-овцы запихнули все сырцы в один файл и получили довольно заметный прирост. Ну, для такого можно использовать скрипт - плюс заворачивать все в namespace-ы, чтобы не было коллизий.

    Добавлено через 6 минут
    Цитата Сообщение от wertyman Посмотреть сообщение
    Да все просто, не понимаю в чем у тебя могут возникнуть там сложности. Купи книжку для начинающих в ООП на C++.
    Класс объявляешь и описываешь все методы и члены в заголовочном файле ( хэдере ), реализуешь все методы в отдельном cpp файле. Там где хочешь использовать свой класс, создать объект. Подключаешь заголовочный файл через Include и все....
    ф топку. Чел курит страуструпа а ты советуешь ему всякий мусор.
    99% книг по c++ - откровенное дерьмо. Даже на туалетную бумагу непригодно.
    alander, простой (и универсальный) совет по поводу выбора правильных книг по любой тематике:
    ищешь места где эту тему активно обсуждают - форумы, эхи, irc, etc.
    Чем меньше ты понимаешь что говорят - тем лучше. Чем больше постов - тем лучше. Чем злобнее отношения - тем лучше. Ну, через какое-то время выработается нюх - профи будешь чуять легко.
    В большинстве мест уже есть списки чего стоит читать. Берешь все эти списки и читаешь только те книги которые есть в почти всех из них.

    Добавлено через 8 минут
    Btw, alander, ты уверен что тебе нужен именно c++? Что ты собираешься с ним делать?
    C++ сейчас, в общем-то, умирающий язык. Если нужна скорость - то приходится ограничиваться почти подмножеством Си, если нужно удобство - то оно достигается ценой таких извращений что...
    Ну, конечно, новый стандарт на подходе, но все равно. Может тебе лучше бы подошло что-нить другое?

    Добавлено через 15 минут
    Да, кстати, страуструпа лучше прочитать ВНИМАТЕЛЬНО. И, может даже перед тем как что-то писать, хотя это утопия ;) Но если этого не сделаешь - часто будешь напарываться на всякие непонятки. C++ очень тяжелый язык.

    Добавлено через 43 минуты
    pps: кстати, к ооп твой код не имеет практически никакого отношения. Разве у nehe было так? Блин, забыл уже, давно это было...
    Последний раз редактировалось aSj; 20.02.2009 в 15:27. Причина: Добавлено сообщение

  12. #11
    Новичок Alander кто это?
    Регистрация
    17.02.2009
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию

    aSj,
    спасибо я получил исчерпывающий ответ. Проблемы со спецификатором inline уже нет. Теперь буду спать спокойно, а в промежутках ждать "сверхумных компиляторов":-).

    И всё же: почему же тогда можно взять любой исходник, произвольно вырезать кусок кода в отдельный файл, а на то место вставить директиву инклуд на вырезанный файл и всё будет находиться в одной области видимости...Это сработало бы и здесь но мы то компилим кучу объектн.модулей... Жертва, которую нужно принести это "всего лишь" отказаться от объектных модулей, т.с., сначала сшить весь синтаксис, а затем скомпилить всё в один большой объектник... В общем до меня дошло...То,что ниже должно работать!
    И чё нам там какие-то sqlite-овцы.:-)
    __________________________________________________ _____________

    //Программ №2.Это не НЕ уже линкуется!
    //File1.cpp

    #include "stdafx.h"
    #include "2.h"
    _myClass myO;
    int _tmain(int argc, _TCHAR* argv[])
    {
    myO.func();
    return 0;
    }


    //File2.cpp не забыть исключить из VS проекта, тем самым предотвращаем генерацию объектника
    #include "stdafx.h"
    inline bool _myClass::func(){
    return 0;
    }


    //File2.h
    class _myClass{
    public:
    bool func(void);
    };

    #include "File2.cpp"

    __________________________________________________ _____________


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

    Вся эта затея с TetrisOGL есть учебный эксперимент.И важно дойти до конца: получить конечный работоспособный продукт. Если здесь есть те, кто заинтересован в приобретении подобного опыта, то можно объединить усилия. Вместе веселее!

    Спасибо за помощь!
    Последний раз редактировалось Alander; 20.02.2009 в 20:57.

  13. #12
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от Alander Посмотреть сообщение
    И всё же: почему же тогда можно взять любой исходник, произвольно вырезать кусок кода в отдельный файл, а на то место вставить директиву инклуд на вырезанный файл и всё будет находиться в одной области видимости...Это сработало бы и здесь но мы то компилим кучу объектн.модулей... Жертва, которую нужно принести это "всего лишь" отказаться от объектных модулей, т.с., сначала сшить весь синтаксис, а затем скомпилить всё в один большой объектник... В общем до меня дошло...То,что ниже должно работать!
    И чё нам там какие-то sqlite-овцы.:-)
    Ну, на чужом опыте надо учится.
    Видишь ли, это легко для мелких программ, а вот для больших... Знаешь сколько компилится этот огромный sqlite-овый сырец? А ведь у тебя этот сырец будет целиком пересобираться на каждое маленькое-маленькое изменение. И даже многопоточность в этом случае не очень помогает - ее умеет насколько я помню только msvc да и тот не очень. Короче, отлаживать прогу будет жутким мучением. Именно поэтому так делают sqlite-овцы. Кроме того, если меня не глючит, у sqlite-овцев были из-за размера сырца какие-то проблемы с некоторыми компиляторами.
    Цитата Сообщение от Alander Посмотреть сообщение
    С++ можно(но не нужно) адаптировать до уровня бейсика. С++ гибок, но никто не заставляет меня его накручивать. С другой стороны, если ограничения есть у С++, то они есть у всех языков...
    С гибкостью у C++ как раз не очень. Да, разные извращенцы понакрутили всякого ужаса конечно, но... Это ужасно. Когда для того чтобы добавить в язык замыкания делают что-то вроде:
    Код:
        //  Print all odd contents of an stl container c
        for_each(c.begin(), c.end(),
            if_(arg1 % 2 == 1)
            [
                cout << arg1 << ' '
            ]
        );
    Догадаешься как это работает? А как это реализовали?
    Проблема в том, что подобные черезжопные решения сливают. Необходимо помнить очень много мусора о деталях их реализации - и все равно все постоянно глючит да и выгядит кошмарно неконсистентно. А уж тормоза - что при компиляции, что при работе... Boost полон таких решений. Да и STL, в общем, тоже - когда гуру C++ говорит - никогда не используйте обратные итераторы - с ними одни проблемы (и это - абсолютная правда) - это звучит как-то печально.
    Вон, даже C++ потоки ввода-вывода раза в полтора медленне printf.
    А уж если тебе самому захочется написать что-то подобное... Не, это даже забавно - мозги напрячь придется круто. Но это какое-то вникуда напряжение - проще взять более нормальный язык. Короче, как удобный язык - C++ абсолютное дерьмо.
    Все те вещи над которыми приплюсники извращаются в нормальных языках - особенно в языках с метапрограммированием делаются на раз - без особых усилий и без дыр в абстракции. Не скажу что у этих языков нет своих ограничений - но там они настолько малы что...

    Добавлено через 3 минуты
    Цитата Сообщение от Alander Посмотреть сообщение
    Вся эта затея с TetrisOGL есть учебный эксперимент.И важно дойти до конца: получить конечный работоспособный продукт. Если здесь есть те, кто заинтересован в приобретении подобного опыта, то можно объединить усилия. Вместе веселее!
    Все-таки, ты точно-правда уверен что C++ - то что тебе нужно? Чему ты хочешь научится от этого эксперимента?

    Добавлено через 24 минуты
    Цитата Сообщение от Alander Посмотреть сообщение
    aSj,
    спасибо я получил исчерпывающий ответ. Проблемы со спецификатором inline уже нет. Теперь буду спать спокойно, а в промежутках ждать "сверхумных компиляторов":-).
    Тьфу, блин, спецификаторов а не директив - что-то меня вчера глючило.
    Последний раз редактировалось aSj; 21.02.2009 в 10:25. Причина: Добавлено сообщение

  14. #13
    Гений wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь Аватар для wertyman
    Регистрация
    03.05.2006
    Возраст
    34
    Сообщений
    2,077
    Поблагодарил(а)
    566
    Получено благодарностей: 875 (сообщений: 424).

    По умолчанию

    И чего пристал к человеку. Он даже не заикался о выборе языка, чего ты ему лечишь и умника из себя строишь, он 80% определений не понимает, а ты типа и не знаешь! Сделал свой выбор, поздравляю, зачем его еще кому то навязывать или оправдываешься перед собой ? Плохая идея. Человек сам попробует, сам для себя решит.. Когда только начинаешь разбираться в программирование, пробуешь все и сразу, а там уже выбираешь, что тебе понравилось. Удачи.

    Знать, как писать, не означает уметь писать....

  15. #14
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от wertyman Посмотреть сообщение
    И чего пристал к человеку. Он даже не заикался о выборе языка, чего ты ему лечишь и умника из себя строишь,
    Слушай, а зачем тогда вообще пишут языки программирования? Попишет человек в машкодах - не понравится - напишет свой язык программирования и все. И вообще, зачем кого-то чему-то учить, книжки какие-то писать, понадобится человеку что-то посчитать - он сначала переоткроет всю науку, добудет нужные полезные ископаемые, etc...
    Очень просто. Во первых, он об этом не спрашивал, это верно.
    Но проблема в том, что для того чтобы задать вопрос нужно знать половину ответа. Как минимум. Если бы мне кто-то n лет назад подсказал не тратить свое время на пасквиль и дал бы, например, для обучения программированию тот же SICP, разжевал бы хотя бы основы - так, как я понимаю их сейчас - я был бы очень рад. Я бы сэкономил чертову прорву времени потраченого на быдлокниги, быдлоязыки и быдлодействия. И мой уровень понимания сейчас был бы выше на порядок.
    Теперь понятно?

    Цитата Сообщение от wertyman Посмотреть сообщение
    он 80% определений не понимает, а ты типа и не знаешь!
    Вообще-то, из тех новичков которых я здесь видел - он, пожалуй, один из самых адекватных.

    Цитата Сообщение от wertyman Посмотреть сообщение
    Сделал свой выбор, поздравляю, зачем его еще кому то навязывать или оправдываешься перед собой ? Плохая идея. Человек сам попробует, сам для себя решит..
    Ты шел по дороге. Запнулся о камень и долбанулся. Ты берешь и оттаскиваешь этот камень чтобы на нем не нае... другие. Тебя тут же обвиняют - как ты мог, ведь это навязывание выбора! Это ужасно!
    А если люди сами хотели мордой в грязь? Как же они теперь туда упадут?
    Аааа! Без этого камня все пропало!

    Цитата Сообщение от wertyman Посмотреть сообщение
    Когда только начинаешь разбираться в программирование, пробуешь все и сразу, а там уже выбираешь, что тебе понравилось. Удачи.
    'понравлось' и 'непонравилось' - это уровень вкусовщины.
    А ДО него идет уровень объективных законов. Те-то и те-то вещи на c++ делать неудобно. Я объяснил почему. 'Что тебе понравилось' - не имеет к этому ВООБЩЕ никакого отношения.

  16. #15
    Гений wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь Аватар для wertyman
    Регистрация
    03.05.2006
    Возраст
    34
    Сообщений
    2,077
    Поблагодарил(а)
    566
    Получено благодарностей: 875 (сообщений: 424).

    По умолчанию

    Ты можешь рассказывать о плюсах и минусах, но воздержись от подобных высказываний: - Короче, как удобный язык - C++ абсолютное дерьмо.
    Иначе, это больно похоже на навязывание своего выбора.
    Как ты понял, он тебя не просил.. Так же на счет твоего примера с камнем, он тебя не просил, иногда нужно хорошенько долбануться, чтобы понять что то.. Он человек, как сам сказал более адекватный, разберется и если что всегда сможет спросить совета или почитать в интернете, сделать свой выбор.. А мне не понравилось, как ты поносишь грязью язык, который тебе не пригодился может, или не пришелся по вкусу, только из личных предпочтений, тем более навязывая свое мнение новичку. Он ничего не понимает о том, что ты говоришь, но у него складывается отрицательное впечатление, от того, что как бы гуру тут говорит вещи.. Вещи - потому что, я не знаю, о чем он говорит, а если я не знаю, значит он прав! ... Во как.

    Знать, как писать, не означает уметь писать....

  17. #16
    Юзер v_b кто это?
    Регистрация
    15.02.2007
    Сообщений
    185
    Поблагодарил(а)
    134
    Получено благодарностей: 51 (сообщений: 37).

    По умолчанию


    Оффтопик

  18. #17
    aSj
    Guest

    По умолчанию

    Цитата Сообщение от wertyman Посмотреть сообщение
    Ты можешь рассказывать о плюсах и минусах, но воздержись от подобных высказываний: - Короче, как удобный язык - C++ абсолютное дерьмо.
    А это правда. С которой, к сожалению, ничего не поделаешь. Не, в новом стандарте чего-то там пытаются, конечно, но я что-то не слишком верю в чудеса. Кое-какие аргументы почему это так - я тут уже приводил.
    Покури boost. Посмотри как им, беднягам, приходилось извращаться чтобы сделать, простейшие, в общем, вещи. То, насколько это криво, неудобно и как торчат со всех сторон провода.

    Цитата Сообщение от wertyman Посмотреть сообщение
    Иначе, это больно похоже на навязывание своего выбора.
    Я привожу аргументы. И из них делаю вывод.
    Цитата Сообщение от wertyman Посмотреть сообщение
    Как ты понял, он тебя не просил.. Так же на счет твоего примера с камнем, он тебя не просил, иногда нужно хорошенько долбануться, чтобы понять что то..
    Да, иногда нужно. Но иногда - достаточно совета. Или ты предлагаешь требовать от учеников в школе переоткрывать ВООБЩЕ ВСЕ законы?
    Если он мой совет выслушает и задумается - значит, без мордой-в-грязь можно обойтись. Если нет - возможно, оно где-то в памяти отложится и он поймет чуть пораньше. Тоже неплохо. Нет - ну так нет.
    Цитата Сообщение от wertyman Посмотреть сообщение
    Он человек, как сам сказал более адекватный, разберется и если что всегда сможет спросить совета или почитать в интернете, сделать свой выбор..
    Верно. Но, во-первых, вопрос во времени. Сколько времени он потратит зря?
    Станет ли он вообще выбирать инструмент?
    Видишь ли, проблема в том, что перейти от худшего инструмента к лучшему сложно. Требует много усилий - что это за лишние пимпочки? Нафига они нужны? Где их можно использовать? Ух ты, а оказывается то что я всегда делал так - можно делать намного проще!
    А вот если ты изначально изучал более мощный инструмент - сразу понимаешь - аха, а вот это, это и вон то здесь будет сделать сложно - придется извращаться.
    Твои инструменты определяют схему твоего мышления, то как ты подходишь к решению задачи. И оценить преимущества более мощной схемы требует много усилий - нужно разрушать привычные схемы мышления.
    Цитата Сообщение от wertyman Посмотреть сообщение
    А мне не понравилось, как ты поносишь грязью язык, который тебе не пригодился может, или не пришелся по вкусу, только из личных предпочтений, тем более навязывая свое мнение новичку.
    У меня там вообще-то вполне конкретные претензии. Никакмими 'личными предпочтениями' тут и не пахнет, еще раз говорю.

    Цитата Сообщение от wertyman Посмотреть сообщение
    Он ничего не понимает о том, что ты говоришь, но у него складывается отрицательное впечатление, от того, что как бы гуру тут говорит вещи.. Вещи - потому что, я не знаю, о чем он говорит, а если я не знаю, значит он прав! ... Во как.
    Бггг. А кто ему мешает проверить? Взять и посмотреть тот же boost - и попытаться разобратся что и как там делают? Да, он поймет, может, не все - но общий уровень того насколько я говорю правду оценить вполне можно.
    Я, вообще-то призываю именно к этому.

    Добавлено через 4 минуты
    Цитата Сообщение от v_b Посмотреть сообщение
    Оффтопик
    Смотря для чего. Более менее приличный попсовый - C#.
    Непопсовые сильно зависят от задач.
    Для общего развития неплохи lisp или почти попсовый nemerle.
    Последний раз редактировалось aSj; 21.02.2009 в 18:06. Причина: Добавлено сообщение

  19. #18
    Гений wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь wertyman Включаюсь Аватар для wertyman
    Регистрация
    03.05.2006
    Возраст
    34
    Сообщений
    2,077
    Поблагодарил(а)
    566
    Получено благодарностей: 875 (сообщений: 424).

    По умолчанию

    Цитата Сообщение от aSj Посмотреть сообщение
    А это правда. С которой, к сожалению, ничего не поделаешь. Не, в новом стандарте чего-то там пытаются, конечно, но я что-то не слишком верю в чудеса. Кое-какие аргументы почему это так - я тут уже приводил.
    Покури boost. Посмотри как им, беднягам, приходилось извращаться чтобы сделать, простейшие, в общем, вещи. То, насколько это криво, неудобно и как торчат со всех сторон провода.
    А это твое личное мнение!
    А я скажу, а это не правда, и что ты будешь делать ? Ты сразу поменяешь свою точку зрения !? Каждому по возможности, каждому по желанию. Смотря для каких целей ты выбираешь язык, конечно, если тебе лень реализовывать красивый и многофункциональный гуи, то С++ канешно дерьмо... Зато на шарпе ты запаришься реализовывать более менее сырой клиент для vpn протокола например, или любой другой сетевой протокол. Для разных задач, можно использовать различные инструменты. Я в своей работе всегда использую С++, потому что другой инструмент мне не может дать более простого и удобного способа работы с памятью, структурами данных, и гарантировать работу на всех типах ОС.
    Посмотрел библиотеку буст, и что дальше ? Ее насильно заставляют тебя использовать ? Для многих целей моих, достаточно хорошего знания С, а ООП использовать не всегда оправдано, тем более всякие примочки типа STL. Если требуется, то пожалуйста в руки шарп, если нет, то зачем заморачиватся и нагружать себя и пользователей лишним гемороем ? Самое лучшее решение, комбинирование инструментов и когда в команде есть отвечающие за свою область разработчики. ГУИ на шарпе, основные задачи и низкоуровневые операции на Си.

    Так что, ты не прав! Если какие то вещи ты не можешь сделать на С++, это не означает, что другие не могут, и что это им в лом или неудобно или дерьмово.. Может у них руки подругому работают Другим С++, и стандарт С, вполне пригоден и там есть весь максимум того, что может пригодится. Так что говорив за всех и делая такие выводы, ты как минимум не хорошо выглядишь, а как максимум тебя нужно послать на три буквы ;) Это не хорошо.. Наверно взрослый человек, а такое себе позволяешь...

    з.ы. и если хотелось устроить холи вар, создал бы отдельную тему и там бы дисскутировал... Модератор еще называется

    Знать, как писать, не означает уметь писать....

  20. 1 пользователь сказал cпасибо wertyman за это полезное сообщение:

    maddbuzz (25.02.2009)

  21. #19
    Новичок Alander кто это?
    Регистрация
    17.02.2009
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).

    По умолчанию

    В процессе.



    Возникла вот такая проблема:
    этот код работал под МSVС 6.0 SP5:
    std::list<std::string>::iterator myPos=NULL;
    А как его заставить работать под MSVC 8.0 SP1 с теми хедерами, которые идут со студией?
    Вот тебе и стандартная шаблонная библиотека! :(

    aSj
    , ты меня заинтиговал. Буду(уже) сравнивать CS,Scheme,Python.

    Ну с МASM'ом всё уже ясно. Мощь(размер, скорость) и концептуальная простота языка. Но нужно постоянно заботиться о мелких деталях, т.е. много утомительной рутины...




    Последний раз редактировалось Alander; 27.02.2009 в 13:41.

  22. #20
    Умник elektr кто это? Аватар для elektr
    Регистрация
    30.06.2008
    Сообщений
    645
    Поблагодарил(а)
    46
    Получено благодарностей: 103 (сообщений: 90).

    По умолчанию

    Цитата Сообщение от Alander Посмотреть сообщение
    В проце Ну с МASM'ом всё уже ясно. Мощь(размер, скорость) и концептуальная простота языка. Но нужно постоянно заботиться о мелких деталях, т.е. много утомительной рутины...




    </div>
    МASM ---а в чем там концептуальная простота ?

+ Ответить в теме
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Похожие темы

  1. Новые постройки
    от ShuTe.rr3 в разделе Всё о Братске
    Ответов: 88
    Последнее сообщение: 31.08.2008, 11:04
  2. Ответов: 23
    Последнее сообщение: 04.04.2008, 23:26
  3. Напишу дипломные проекты
    от Воланд в разделе Работа, найм, образование
    Ответов: 0
    Последнее сообщение: 30.01.2008, 01:32
  4. Within Temptation
    от Shved в разделе Rock
    Ответов: 6
    Последнее сообщение: 21.01.2008, 13:40
  5. Проекты Google
    от ДиМаС в разделе Software
    Ответов: 0
    Последнее сообщение: 30.01.2007, 15:26

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.