Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.87.156] |
|
Страницы: (50) [1] 2 3 ... 49 50 ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Посмотрел исходники Flex Parser, просто ужаснулся. И не странно, что многие заметили осутствие оптимизации и зависимость от лишних dll. ИМХО, это один из наглядных примеров того, где использование кучи темплейтов, классов и т.п. "страшных" языковых возможностей разве что крайне сильно затрудняет читабельность кода и создает кучу проблем. Такое ощущение, что написано просто что бы показать на примере абсолютно все возможности си плюс плюс. И сколько бы тут "template" и "class" слов не встречалось - разбор строки идет абсолютно такой же, как и если бы сделано все было по-естественному - как в другом парсере (который на делфи). Я сам ненавижу делфи, и очень грустно, что такой простой парсер был сделан способами для мега-крупного проэкта. Какой ужас, размер бинарника... Какой ужас, какие-то ДЛЛ нужны... А отлаживать это... Такой дизасм-листинг даже в страшном сне не присниться.
Думаю, для парсера это слишком. Дело тут даже не в делфи-или-спп. Просто делфовский парсер как-то более естественно сделан и проще, без хитрости, там только код - который нужен парсеру. Так можно было и в другом сделать, но автор видимо решил проверить своё знание си плюс плюс И ещё, помоему проще (но не быстрее, возможно) будет хоть весь парсер на делфи переписать, что бы туда добавить что-то, чем копаться в сверх-умных словах на С++, которые по сути и не делают ничего - все вокруг да около. Извиняюсь перед действительно умным дядькой, который взрослее меня в несколько раз (да ещё и администратор по совместительству - flex ferrum) за такие высказывания, но просто жуть ведь - 180 кб (!!!) бинарник и требование лишних длл - это уж слишком для калькулятора. Вообщем основная мысль - это не то, что делфи удобнее. Основная мысль - не стоит демонстрировать ТАКОЕ в калькуляторе. Исходники его похожи на исходники firefox Врядли кто-то кроме archimed сможет понять что там написано PS Кстати, посмотрел что получается, если сделать пару окошек с использованием Qt - килобайт 100 бинарник и нужны ещё DLL (qtcore4.dll и т.п.) метров на 50 наверное. Компилируется все это секунд 10, а работает как 3d-max, запущеный на P1-166... У меня просто деятельность требует, чтоб в бинарнике был только целевой, нужный код, а не 100килобайт "чего-то там", поэтому такие приложения просто вызывают панику... Эта тема была разделена из темы "Сравнение Delphi & C++" |
Сообщ.
#2
,
|
|
|
Цитата 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... Ыыы, вообще необоснованная претензия. Напрямую зависит от прямоты рук разработчика. |
Сообщ.
#3
,
|
|
|
> Сколько отлаживаю программы, ни разу дизасм смотреть не приходилось...
мне отлаживать приходится почти всегда. но это потому что у нас совсем разные области разработки, так сказать. ладно, фиг с ней, отладкой > Ыыы, вообще необоснованная претензия. Напрямую зависит от прямоты рук разработчика. Неправда, работает медленно, потому что за показом hello world скрываются сотни вызовов. Да и если так, прикинуть, что быстрее будет работать, бинарник на 768 байт, или 50-метровое хело-ворлдище? > Static linking можно, но сколько тогда будет весить EXE ?) страшно даже представить.... (кстати, напиши пожалуйста как его делать в mingw gcc/g++) Вообще эти исходники я тоже могу читать. Только это не очень приятно, какой файл не откроешь - везде код не относящийся напрямую к делу - т.е. к парсингу. Я, конечно, не разбирался, куда что можно добавить и в какой парсер быстрее получится. В каком меньше менять, и т.п. Но если из него придется сделать центр запуска ядерных ракет - будет проще парсеру на С++, это ладно Я просто считаю, что шаблоны, эксцепшоны все только портят в данном случае, применительно к данной программе. Ладно, пускай технологию можно будет оставить туже, что и сделано у Flex Ferrum, но ведь гораздо проще будет её безболезненно применить без этих страшных наворотов С++. Я, можте быть конечно, по себе сужу, но помоему это просто изврат Во всяком случае никак не пойму, что за удобство оформлять решение таким образом (пример): std::map<char,int>, а потом писать выражения, с тысячами "<>" Ну и будет генерироваться на каждый разнотипный map разный код, который по сути делает за частую СОВЕРШЕННО одно и тоже в готовом виде. Нельзя ли, скажем, одну структуру, в которой будет и ключ, и данные. Все равно они числами будут являться-указатель туда положить или ещё что-то. Сделать дефайны, чтоб не приходилось каждый раз типы приводить. Или.. Сделать все это классом... Да милион способов. По моему все они намного логичнее и законченее будет, чем темплейтовый вариант. > А Смайк уже месяц вдохновения ждёт... Я его вообще не знаю, и то, что он ждет - ещё не говорит о том, что не может что-то изменить и уже месяц сидит пытается. Мб погулять пошел или ещё чего |
Сообщ.
#4
,
|
|
|
Цитата FFF1 @ Да милион способов. По моему все они намного логичнее и законченее будет, чем темплейтовый вариант. Ну покажи нам хоть один "логично-лаконичный" способ . А то так как-то голословно получается . |
Сообщ.
#5
,
|
|
|
Цитата я Нельзя ли, скажем, одну структуру, в которой будет и ключ, и данные. Все равно они числами будут являться-указатель туда положить или ещё что-то. Сделать дефайны, чтоб не приходилось каждый раз типы приводить. дефайны имелось ввиду такие... блин это надо конкретный код. допустим у меня был случай - надо было сделать систему хендлов поверх виндовских кое-каких. список делал (хендлы могли наследоваться, типа 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. |
Сообщ.
#6
,
|
|
|
Цитата archimed7592 @ Ну покажи нам хоть один "логично-лаконичный" способ . Макросы (но не сишные) Добавлено Цитата FFF1 @ Просто есть вещи (чаще всего они живут в С,С++ : )), которые я никогда не понимал, как ни пытался. Среди них - COM. COM не живет в C++ |
Сообщ.
#7
,
|
|
|
> чаще всего они живут в С,С++
|
Сообщ.
#8
,
|
|
|
Цитата FFF1 @ > чаще всего они живут в С,С++ Чаще всего COM живет в программах на vb, 1c, .net и прочих подобных. |
Сообщ.
#9
,
|
|
|
Цитата FFF1 @ нет. Ты создаешь впечатление кодера, живущего в каком-то параллельном от остальных мире. создаю впечатление эдакого-олдскул-кодера |
Сообщ.
#10
,
|
|
|
Эволюция программиста
Легко определить, кто где В этой теме (говорилось о Парсерах арифметических выражений) показывается не только гибкость и удобство, но еще и средства, которыми это достигается. Вот и посмотрим, что получится |
Сообщ.
#11
,
|
|
|
Цитата 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 библиотеки большие и толстые зачем? |
Сообщ.
#12
,
|
|
|
"Лол, убей себя" - это замечательные аргументы)
в след. раз распинаться и писать ничего не буду - просто напишу аффтар низачет, все отстой, превед медвед! Проффесионально и рассудительно. Бесят высказывания "сейчас крутые компы, можно делать 100-метровые бинарники". Можно делать многое - даже неэстетичное. И вправду, нафига че-то оптимизировать... да нафига вообще че-то писать? и знать как там это работает? Но почему-то, когда вопрос касается дефайнов - ответ "убей себя". ггг) Цитата нет. Ты создаешь впечатление кодера, живущего в каком-то параллельном от остальных мире. Угу, я вот тоже стал в это верить после утверждений вышеотписавшегося, что размер бинарника и кол-во длл простого калькулятора не играет роли. Все-таки я живу в другом мире и он мне очень нравится ) Насчет COM - если кто-то все-таки не понял. Он в фразе был как то, цель чего я не понимаю, а не как что-то, напрямую относящееся к С++. Цитата Макросы со структурами это супер будт.. я уже чуствую. Ну... чувствуй! ; ) Ты пока только и делаешь, что чувствуешь, посколько все ответы на мои цитаты были "убей себя" и "лол", ничего конкретного сказано не было( Примеры, примеры! Конкретизируй! Добавлено > http://sources.ru/news/20010609.shtml Очень неправильная эволюция. Но она как раз и отражает все то, о чем вы говорите. Особенно, New professional - Seasoned professional, как раз являются скорее стёбом, чем гордостью. |
Сообщ.
#13
,
|
|
|
Цитата FFF1 @ в след. раз распинаться и писать ничего не буду - просто напишу аффтар низачет, все отстой, превед медвед! а ты так и написал. Только растянул это на страницу без аргументов. Цитата FFF1 @ Бесят высказывания "сейчас крутые компы, можно делать 100-метровые бинарники". Можно делать многое - даже неэстетичное. И вправду, нафига че-то оптимизировать... Ты соптимизируеш лучше компилятора? нуну. 180кб это не размер. Ни для кого в течении последних 10 лет. И это чуш савсылатся на такой размер. Причем полнейшая чуш. |
Сообщ.
#14
,
|
|
|
Цитата FFF1 @ Ну... чувствуй! ; ) Ты пока только и делаешь, что чувствуешь, посколько все ответы на мои цитаты были "убей себя" и "лол", ничего конкретного сказано не было( Примеры, примеры! Конкретизируй! Ты, в принципе, тоже... Примеры, примеры, конкретизируй! |
Сообщ.
#15
,
|
|
|
Цитата FFF1 @ Ну... чувствуй! ; ) Ты пока только и делаешь, что чувствуешь, посколько все ответы на мои цитаты были "убей себя" и "лол", ничего конкретного сказано не было( Примеры, примеры! Конкретизируй! Примеры? Я не буду писать стремный код ссостоящий из одних макросов. Делай такие примеры себе сам. Я с этим уже намучился. |