На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (50) [1] 2 3 ...  49 50  ( Перейти к последнему сообщению )  
> Холивар вокруг C/C++ кода
    Посмотрел исходники Flex Parser, просто ужаснулся. И не странно, что многие заметили осутствие оптимизации и зависимость от лишних dll. ИМХО, это один из наглядных примеров того, где использование кучи темплейтов, классов и т.п. "страшных" языковых возможностей разве что крайне сильно затрудняет читабельность кода и создает кучу проблем. Такое ощущение, что написано просто что бы показать на примере абсолютно все возможности си плюс плюс. И сколько бы тут "template" и "class" слов не встречалось - разбор строки идет абсолютно такой же, как и если бы сделано все было по-естественному - как в другом парсере (который на делфи). Я сам ненавижу делфи, и очень грустно, что такой простой парсер был сделан способами для мега-крупного проэкта. Какой ужас, размер бинарника... Какой ужас, какие-то ДЛЛ нужны... А отлаживать это... Такой дизасм-листинг даже в страшном сне не присниться.
    Думаю, для парсера это слишком.
    Дело тут даже не в делфи-или-спп. Просто делфовский парсер как-то более естественно сделан и проще, без хитрости, там только код - который нужен парсеру. Так можно было и в другом сделать, но автор видимо решил проверить своё знание си плюс плюс :)
    И ещё, помоему проще (но не быстрее, возможно) будет хоть весь парсер на делфи переписать, что бы туда добавить что-то, чем копаться в сверх-умных словах на С++, которые по сути и не делают ничего - все вокруг да около.
    Извиняюсь перед действительно умным дядькой, который взрослее меня в несколько раз (да ещё и администратор по совместительству - flex ferrum) за такие высказывания, но просто жуть ведь - 180 кб (!!!) бинарник и требование лишних длл - это уж слишком для калькулятора.
    Вообщем основная мысль - это не то, что делфи удобнее. Основная мысль - не стоит демонстрировать ТАКОЕ в калькуляторе. Исходники его похожи на исходники firefox :) Врядли кто-то кроме archimed сможет понять что там написано :)

    PS Кстати, посмотрел что получается, если сделать пару окошек с использованием Qt - килобайт 100 бинарник и нужны ещё DLL (qtcore4.dll и т.п.) метров на 50 наверное. Компилируется все это секунд 10, а работает как 3d-max, запущеный на P1-166... У меня просто деятельность требует, чтоб в бинарнике был только целевой, нужный код, а не 100килобайт "чего-то там", поэтому такие приложения просто вызывают панику... :o

    Эта тема была разделена из темы "Сравнение Delphi & C++"
    Сообщение отредактировано: FFF1 -
      Цитата FFF1 @
      А отлаживать это... Такой дизасм-листинг даже в страшном сне не присниться.

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


      Цитата FFF1 @
      Какой ужас, какие-то ДЛЛ нужны...

      Иии? Критерии: "простота и расширяемость", а не "у кого код меньше и с меньшим числом зависимостей получиться".


      Цитата FFF1 @
      И ещё, помоему проще (но не быстрее, возможно) будет хоть весь парсер на делфи переписать, что бы туда добавить что-то, чем копаться в сверх-умных словах на С++, которые по сути и не делают ничего - все вокруг да около.

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

      Я молчу про возможность во Флексовом парсере изменить одну строку и получить работу с бибилотекой длинных чисел GMPXX и прочие "вокруг, да около".

      Цитата FFF1 @
      Основная мысль - не стоит демонстрировать ТАКОЕ в калькуляторе. Исходники его похожи на исходники firefox :)

      А что, нужно было за пару дней аналог firefox'а написать? А на чём тогда демонстрировать? И потом, это не демонстрация "высоких познаний Флекса о С++", а демонстрация часто используемых возможностей этого языка, которые, помимо всего прочего, ещё и являются преимуществом над Дельфи(по крайней мере такова задумка :)).

      Цитата FFF1 @
      Врядли кто-то кроме archimed сможет понять что там написано :)

      Мне кажется, что есть ещё много народу на этом форуме, кто с лёгкостью(ну максимум "со словарём") смогут читать эти исходники. Основная мысль: не суди по себе ;).

      Добавлено
      Цитата FFF1 @
      PS Кстати, посмотрел что получается, если сделать пару окошек с использованием Qt - килобайт 100 бинарник и нужны ещё DLL (qtcore4.dll и т.п.) метров на 50 наверное.

      Static linking has you :).


      Цитата FFF1 @
      Компилируется все это секунд 10

      Precompiled headers has you :).


      Цитата FFF1 @
      а работает как 3d-max, запущеный на P1-166...

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

        > Ыыы, вообще необоснованная претензия. Напрямую зависит от прямоты рук разработчика.

        Неправда, работает медленно, потому что за показом hello world скрываются сотни вызовов. Да и если так, прикинуть, что быстрее будет работать, бинарник на 768 байт, или 50-метровое хело-ворлдище?

        > Static linking

        можно, но сколько тогда будет весить EXE ?) страшно даже представить....
        (кстати, напиши пожалуйста как его делать в mingw gcc/g++)

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

        Я, конечно, не разбирался, куда что можно добавить и в какой парсер быстрее получится. В каком меньше менять, и т.п. Но если из него придется сделать центр запуска ядерных ракет - будет проще парсеру на С++, это ладно :)
        Я просто считаю, что шаблоны, эксцепшоны все только портят в данном случае, применительно к данной программе.
        Ладно, пускай технологию можно будет оставить туже, что и сделано у Flex Ferrum, но ведь гораздо проще будет её безболезненно применить без этих страшных наворотов С++.
        Я, можте быть конечно, по себе сужу, но помоему это просто изврат :)
        Во всяком случае никак не пойму, что за удобство оформлять решение таким образом (пример):
        std::map<char,int>, а потом писать выражения, с тысячами "<>"
        Ну и будет генерироваться на каждый разнотипный map разный код, который по сути делает за частую СОВЕРШЕННО одно и тоже в готовом виде. Нельзя ли, скажем,
        одну структуру, в которой будет и ключ, и данные. Все равно они числами будут являться-указатель туда положить или ещё что-то. Сделать дефайны, чтоб не приходилось каждый раз типы приводить. Или.. Сделать все это классом... Да милион способов. По моему все они намного логичнее и законченее будет, чем темплейтовый вариант.

        > А Смайк уже месяц вдохновения ждёт...

        Я его вообще не знаю, и то, что он ждет - ещё не говорит о том, что не может что-то изменить и уже месяц сидит пытается. Мб погулять пошел или ещё чего :)
        Сообщение отредактировано: FFF1 -
          Цитата FFF1 @
          Да милион способов. По моему все они намного логичнее и законченее будет, чем темплейтовый вариант.

          Ну покажи нам хоть один "логично-лаконичный" способ :). А то так как-то голословно получается ;).
            Цитата я

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


            дефайны имелось ввиду такие...
            блин это надо конкретный код.
            допустим у меня был случай - надо было сделать систему хендлов поверх виндовских кое-каких. список делал (хендлы могли наследоваться, типа HINTERNET-хендл для wininet-ф-ия, может быть hSession->hConnect->hRequest) . список у меня был-это обычный список (ну всымсле ф-ии работы с ним), класс, который имел в себе всего 2 юзерских "хранилища", и мог возвращать одно-другое, искать элементы и т.п.
            эти две переменных были просто воид*. и все. в одну переменную шел хендл от wininet, в другую - указатель на нужную структуру с описанием. вот и все. а что бы не приходилось писать каждый раз:
            ((HANDLE_DESCRIPTOR*)item1->getDataPrimary())->handleType,
            просто были макросы:

            #define HD(x) ((HANDLE_DESCRIPTOR*)x->getDataPrimary()) // Handle Desc
            // ...
            if (HD(item1)->handleType==WINET_TYPE_SESSION) {...}
            И все остальное, чем полезны темплейты можно сделать проще ИМХО.

            Я наверное, создаю впечатление эдакого-олдскул-кодера, который ненавидит любые техники написания кода, появившихся после 90-ых только за то, что они "никрутые" и попсовые. И считает что вот низкоуровнего - это круто, а остальное - попсово. Совсем наоборот :). Мне посл. время интересна даже .net и я стремлюсь оформлять код как могу правильнее и эффективнее. Просто есть вещи (чаще всего они живут в С,С++ : )), которые я никогда не понимал, как ни пытался. Среди них - COM.
              Цитата archimed7592 @
              Ну покажи нам хоть один "логично-лаконичный" способ :).

              Макросы :) (но не сишные)

              Добавлено
              Цитата FFF1 @
              Просто есть вещи (чаще всего они живут в С,С++ : )), которые я никогда не понимал, как ни пытался. Среди них - COM.

              COM не живет в C++ :)
                > чаще всего они живут в С,С++
                  Цитата FFF1 @
                  > чаще всего они живут в С,С++

                  Чаще всего COM живет в программах на vb, 1c, .net и прочих подобных.
                    Цитата FFF1 @
                    создаю впечатление эдакого-олдскул-кодера
                    нет. Ты создаешь впечатление кодера, живущего в каком-то параллельном от остальных мире.
                      Эволюция программиста
                      Легко определить, кто где :tong:
                      В этой теме (говорилось о Парсерах арифметических выражений) показывается не только гибкость и удобство, но еще и средства, которыми это достигается.
                      Вот и посмотрим, что получится ;)
                      Сообщение отредактировано: Romkin -
                        Цитата FFF1 @
                        но просто жуть ведь - 180 кб (!!!) бинарник и требование лишних длл - это уж слишком для калькулятора.

                        Я сейчас заплачу! 180кб!! Кошмар! Флекс как ты мог!! У меня под кроватью N лет лежит 486-й.. там помоему 4 или 8 мб HDD!! Ужаснах!

                        Цитата FFF1 @
                        Неправда, работает медленно, потому что за показом hello world скрываются сотни вызовов. Да и если так, прикинуть, что быстрее будет работать, бинарник на 768 байт, или 50-метровое хело-ворлдище?

                        лол.
                        Цитата FFF1 @
                        Я просто считаю, что шаблоны, эксцепшоны все только портят в данном случае

                        Они ни в каком случае ничего портить не могут. Какоето извращение говоррить что в случае парсера шаблоны эксепшоны чтото там портят.
                        Цитата FFF1 @
                        std::map<char,int>, а потом писать выражения, с тысячами "<>"
                        Ну и будет генерироваться на каждый разнотипный map разный код, который по сути делает за частую СОВЕРШЕННО одно и тоже в готовом виде. Нельзя ли, скажем,
                        одну структуру, в которой будет и ключ, и данные. Все равно они числами будут являться-указатель туда положить или ещё что-то.

                        Мухаха. Вот оно в чем дело.
                        Цитата FFF1 @
                        Сделать дефайны, чтоб не приходилось каждый раз типы приводить.

                        Убей себя.
                        FFF1
                        После твоих высказываний даже хочется посмотреть какой парсер будет у тебя на С++.
                        Макросы со структурами это супер будт.. я уже чуствую. Расширяемо.. быстро.. и главное не как у Флекса всю память сжирать будут, аж 180!!!! килобайт... это же 1/5000 моей флешки!! кошмар!!
                        Цитата mo3r @
                        COM не живет в C++ :)

                        Да ну!!? Это какже..? а WTL/ATL библиотеки большие и толстые зачем?
                          "Лол, убей себя" - это замечательные аргументы)
                          в след. раз распинаться и писать ничего не буду - просто напишу
                          аффтар низачет, все отстой, превед медвед!
                          Проффесионально и рассудительно.

                          Бесят высказывания "сейчас крутые компы, можно делать 100-метровые бинарники". Можно делать многое - даже неэстетичное.
                          И вправду, нафига че-то оптимизировать... да нафига вообще че-то писать? и знать как там это работает? Но почему-то, когда вопрос касается дефайнов - ответ "убей себя". ггг)

                          Цитата

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


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

                          Насчет COM - если кто-то все-таки не понял. Он в фразе был как то, цель чего я не понимаю, а не как что-то, напрямую относящееся к С++.

                          Цитата

                          Макросы со структурами это супер будт.. я уже чуствую.


                          Ну... чувствуй! ; ) Ты пока только и делаешь, что чувствуешь, посколько все ответы на мои цитаты были "убей себя" и "лол", ничего конкретного сказано не было( Примеры, примеры! Конкретизируй!

                          Добавлено
                          > http://sources.ru/news/20010609.shtml

                          Очень неправильная эволюция. Но она как раз и отражает все то, о чем вы говорите.
                          Особенно, New professional - Seasoned professional, как раз являются скорее стёбом, чем гордостью.
                          Сообщение отредактировано: FFF1 -
                            Цитата FFF1 @
                            в след. раз распинаться и писать ничего не буду - просто напишу
                            аффтар низачет, все отстой, превед медвед!

                            а ты так и написал. Только растянул это на страницу без аргументов.
                            Цитата FFF1 @
                            Бесят высказывания "сейчас крутые компы, можно делать 100-метровые бинарники". Можно делать многое - даже неэстетичное.
                            И вправду, нафига че-то оптимизировать...

                            Ты соптимизируеш лучше компилятора? нуну. 180кб это не размер. Ни для кого в течении последних 10 лет. И это чуш савсылатся на такой размер. Причем полнейшая чуш.
                              Цитата FFF1 @
                              Ну... чувствуй! ; ) Ты пока только и делаешь, что чувствуешь, посколько все ответы на мои цитаты были "убей себя" и "лол", ничего конкретного сказано не было( Примеры, примеры! Конкретизируй!

                              Ты, в принципе, тоже... Примеры, примеры, конкретизируй! :rolleyes:
                                Цитата FFF1 @
                                Ну... чувствуй! ; ) Ты пока только и делаешь, что чувствуешь, посколько все ответы на мои цитаты были "убей себя" и "лол", ничего конкретного сказано не было( Примеры, примеры! Конкретизируй!

                                Примеры? Я не буду писать стремный код ссостоящий из одних макросов. Делай такие примеры себе сам. Я с этим уже намучился.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (50) [1] 2 3 ...  49 50


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1253 ]   [ 15 queries used ]   [ Generated: 27.04.24, 00:46 GMT ]