| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > Delphi >> C++ |
| Автор: mr666 24.8.2006, 23:16 |
| Вот подумывал занятся C++, т.к смотрю дельфи мрачное будущее. Стоит ли вобще переходить на C++? Интересно кто зделал такой же выбор пожелел или нет? Или вобще Лучше изучать два языка....? |
| Автор: Fedia 24.8.2006, 23:38 |
| А переходи. Delphi никого не держит насильно. ЗЫ: подобных веток в инете куча. Однозначного ответа не получишь, т.к. провидцев несколько штук на миллиарды человек и здесь они скорее всего не водятся |
| Автор: Palladin 24.8.2006, 23:51 |
| Знать нужно и то и то, главное чтоб ты эти языки действительно ЗНАЛ |
| Автор: Alexeis 25.8.2006, 00:28 |
| Можно почитать книжку про KOL . Сам автор этий библиотеки брослил програмировать на С++ и начал на делфи. Причем описывает много достоинст делфи по сравнению с С++ Главный недостаток делфи в том, что на нем ни кто не занимается системным програмированием и соответственно для него нет документации. Это оч. заметно на некоторых компонентах. Просто берут С++ аналоги компилируют объектные файлы на билдере, делают делфийскую обертку. Не лучше а обязательно знать хоть основы с++. А еще лучше знать 3 язык, например JAVA. Он никогда не помешает. |
| Автор: Snowy 25.8.2006, 09:36 |
| mr666, если тебя интересует коммерческая привлекательность языка программирования, тогда сразу на C#. Насчёт дельфи ты загнул. В ближайшем будущем позиции дельфей вряд ли изменятся в худшую сторону. А вот в лучшую - очень могет быть. |
| Автор: Bulat 25.8.2006, 11:38 |
Не знаю, то что в худшую не изменится - точно, а вот в лучшую, пока в ближайшее будущее не видно, или я только чего-то не знаю Сам перебежал delphi -> C++ -> java |
| Автор: LSD 25.8.2006, 11:58 |
А основания для этого какие? |
| Автор: Snowy 25.8.2006, 12:29 |
| А это уже тема для другого разговора. Вкратце: - Дельфи перестал быть второстепенным продуктом - Новая политика по представлению эконом версий - Выход на платформу PPC Вобщем Delphi просто существовал несколько лет почти без развития. А сейчас за него основательно решили взяться. |
| Автор: LSD 25.8.2006, 12:33 |
Для кого перестал? |
| Автор: Snowy 25.8.2006, 12:39 |
| Для Борланда, иссесно. |
| Автор: mr666 25.8.2006, 21:27 |
| Слышал что Борлан пытается продать delphi/ alexeis1, Есть сцылка? |
| Автор: bagira 25.8.2006, 23:18 |
| Пожалуй, перенесу в "Религиозные войны" |
| Автор: SergeCpp 26.8.2006, 01:27 |
| http://www.bitwisemag.com/copy/archives/news/news2006.html Борланд собирается продать часть бизнеса связанную с ИДЕ, включая Borland Developer Studio (Delphi®, C++Builder®, C#Builder®) и JBuilder®. http://rsdn.ru/Forum/?mid=1669259 |
| Автор: Snowy 26.8.2006, 10:36 |
| Это очень старая "новость", которой уже полинета задолбали. Ничего они не продают. Просто выделяют разработку IDE и компиляторов в отдельную фирму. Делается именно для того, чтобы эта фирма занималась разработкой, т.к. дельфи потому и худел некоторое время, потому что разработчиков перекидывали на "более важные" проекты. Теперь же делят борланд на 2 фирмы именно из-за того, чтобы компиляторы не страдали в пользу систем управления. Это уже два разных направления. Поэтому вполне логично разделиться. Но интеграция продуктов будет, естественно, сохранена. Именно про это я и говорю, сказав, что дельфи станет основным продуктом компании. Правда название этой компании пока не известно... Что касается собственности, скореее всего произойдет переоценка акций борланда, акционеры получат акции новой фирмы в пропорции владения акций борланда. Какую-то часть пакета получит сам Борланд. Вобщем о продаже реци не идёт. Возможны сторонние инвестиции, но это тоже не продажа. |
| Автор: mr666 26.8.2006, 19:20 |
| Snowy, Сегодня купил себе делфи 2006, так вот всё бы хорошо а вот любимого ctrl+space (combo_box с функциями и всякой елудой) непоявляется. Я знаю что она там есть, но в опциях уже надоело копатся... скажеш как её врубить? Ещё приобрёл MS VISUAL Studio 2003 хочу попробывать. Думаю C++ стоит учить так для подстраховки. Я вот что боюсь - по окончании инста если возьмут на работу программером, то в большенстве фирм стоят сишки. |
| Автор: Exception 27.8.2006, 10:34 |
| Ну, извините, некорректно сравнивать эти языки. Delphi - не очень в последнее время развивающийся язык, который очень даже годится для построения Windows-приложений (Kylix вроде не прижился). Обычно программки Delphi напрямую взаимодействуют с системой. С++ - куда более мощный язык для решения задач ОЧЕНЬ разного уровня, но эффективное написание на нём требует куда более высокой квалификации. |
| Автор: MAKCim 27.8.2006, 17:01 | ||
это как? |
| Автор: Exception 27.8.2006, 18:18 |
| Ну я имею в виду -- там обычно не абстракция рулит, а прямые вызовы WinAPI, что несколько раздражает Добавлено @ 18:21 Понимаешь, из кирпичей ты быстро построишь дом, но не построишь памятник или самолёт. А из металла ты можешь построить всё, вопрос в стоимости. Только вот кирпичами строить проще. Думаю, не стоит пояснять, что я считаю металлом, а что кирпичами в моей неуклюжей аналогии. |
| Автор: Quadr0 27.8.2006, 18:35 |
| ... |
| Автор: Quadr0 27.8.2006, 18:55 |
| ... |
| Автор: MAKCim 27.8.2006, 20:23 | ||||
в основе любой абстракции лежат более низкоуровневые вещи на то она и абстракция, чтобы их скрывать
дело не в доках, а в средствах, которые предоставляет язык и эффективности их применения |
| Автор: Snowy 27.8.2006, 21:51 |
| Exception, gповсем пунктам - нет! Твои высказывания начинают несколько раздражать. Утверждать то, чего не знаешь - ниже уровня профессионала. Даже комментировать этот бред не хочу. |
| Автор: LSD 27.8.2006, 22:00 |
| На C++ ориентированны многие прикладные API. Например попробуйте написать JNI функцию на Delphi. |
| Автор: Exception 27.8.2006, 22:20 |
| Snowy, а можно чуть более развёрнуто? Это лично моё мнение, я нигде ничего не утверждал и вообще мне было бы весьма интересно узнать, в чём именно я ошибаюсь. Буду премного благодарен, если разложишь мои ошибки по полочкам, тебе это должно быть максимум 5 минут Когда читаешь мои высказывания, обращай внимание на слова в основном, обычно и похожие. |
| Автор: Snowy 27.8.2006, 22:42 | ||||||
| Зависит от целей. Абстракция - инструмент. Его можно либо применять, либо нет. В Delphi абстракция и вся ООП модель на очень высоком уровне. А RTTI вещь вообще гениальная.
VCL - одна из таких мощных обёрток. В основе неё лежит всё тот же WinAPI. Никто никого не заставляет пользоваться WinAPI напрямую. Можно или взять готовую библиотеку или написать самому. Прямой вызов API функций - возможность, а не обязанность. Отчегож. Некорректно сравнивать библиотеки. А языки очень даже можно сравнивать. Сам код свободно конвертируется туда и обратно. А, если ещё и библиотеки одинаковые, как в случае с C++ Builder... Отчегож? В последнее время как раз довольно таки развивающийся. Обычно это зависит от целей. Delphi предоставляет самый широкий набор возможностей. От самого низкого уровня, до самого высокого. Что будет использовать программист - это уже его выбор.
Назови хоть что-нибудь, что нельзя реализовать на Delphi, а можно на C++.
Delphi - очень мощный язык, позволяющий делать любые вещи. Имеет самый разнообразный набор возможностей. Многие вещи просто гениальны. А вот КАК писать - выбор программиста. Просто не система говорит программисту как реализовывать, а программист системе. Это его личтое дело. А система лишь предоставляет возможности любого уровня. Добавлено @ 22:53 Я всё это к тому, что не нужно засирать язык, о возможностях которого мало знаешь. У меня тоже есть, что сказать на тему C#, но я этого не делаю, зная, что 1 - могу оказаться неправ, 2 - язык, имеющий популярность явно имеет массу достоинств, 3 - просто неприлично плевать в чужой огород. |
| Автор: Exception 27.8.2006, 23:01 |
| А я плюю Итак, мы понимаем разные вещи под Delphi. Я говорю не о синтаксисе (хотя вроде как шаблонов в дельфи ещё нет?), а о конкретной реализации Borland Delphi для Win32, как о наиболее используемой под термином "Delphi". Мне показалось или за последние годы в Delphi обновлялась только поддержка .NET? |
| Автор: Void 27.8.2006, 23:18 |
| Snowy, в целом согласен, но не могу удержаться с ехидцей Она быть может гениальная по сравнению с тем убожеством, что есть в С++, но механизмам рефлексии в Java/.NET ничего существенного противопоставить не может. Да, да, предвидя замечания: одним из главных архитекторов .NET был некто Хайльсберг, это мы знаем Что касается самой идеи интроспективных программ, то она была реализована в 1982 Брайаном Смитом (диалект 3-LISP) и в дальнейшем вылилась в CLOS и MOP. Где в то время был Delphi… Первая промышленная (дурацкий и расплывчатый термин, но какой есть) реализация — может быть, доказательствами или опровержениями не располагаю. Но вот эпитета «гениальная» в моих глазах не заслуживает. |
| Автор: Snowy 27.8.2006, 23:25 | ||||||||
| А как можно понимать по разному? Delphi это большая единая система. Можно конечно обсуждать отдельные части, но зачем вдаваться в детали?
Синтаксис - это по сути pascal. Да, в дельфи он давно уже продвинулся намного дальше, относительно стандарта. Но тот же FreePascal совместим по синтаксису.
Я, правда всё ещё сижу на версии 7.0 от 2002 года - нет пока времени осваивать всё то новое, что появилось в версии 2006.
Вообще версия 2006 показывает, что работа в направлении дельфи сильно активизировалась. Это образно. Можно сказать "катишь бочку", крошишь батон и т.п. Добавлено @ 23:31
Может возможности не такие мощные, как в Java/.NET, но, думаю, вполне достаточные. |
| Автор: Quadr0 27.8.2006, 23:45 |
| ... |
| Автор: Romikgy 28.8.2006, 08:52 | ||
Quadr0, это все есть и в плюсах (по крайней мере) Имхо вроде никто против этого не выступает, т.е. имхо это можно реализовать (это я так понимаю или DirectX или OpenGL, дік вроде его реализуют на дельфях) также пишут без проблем вот тут , уровень немного другой, имхо дельфи это всетаки визуальная среда разработки заточеная под Вынь, но если взять его предшествиника Паскаль , то имхо можно будить замутить свою ОС PS Аж страшно влазить такие монстры спорят о языках уфффф Добавлено @ 09:04 И еще из вкусностей У С++ : есть шаблоны, есть перегрузка операторов есть множественное наследование не только интерфейсов У Дельфи: есть прекрасная (имхо) работа со строками TStringList (просто класс есть множества да и еще можно добавить к двум языкам много чего |
| Автор: LSD 28.8.2006, 10:06 |
Он самый. Более корректно называть подобные функции native, но поскольку они все пишутся с использованием JNI, то можно их и так обозвать, большой ошибки не будет. |
| Автор: MAKCim 28.8.2006, 10:06 | ||||||||||||
интерфейсов в С++ нет
а чем std::string, std::set хуже?
примеры?
Дело не в этом, сам язык гораздо сложнее, а ошибку сделать можно везде и на чем угодно.
Некоректно сравнивать их, потому как Java/.NET(C#) работают по другому принципу
Отчасти, шаблоны - возможность писать меньше кода, использовать обобщенные алгоритмы для работы с разными типами данных, выделение многих ошибок на этапе компиляции и т. д. Тут кстати никто и не говорил, что Delphi д..... просто наличие шаблонов - преимущество С++ |
| Автор: Quadr0 28.8.2006, 11:26 |
| ... |
| Автор: Romikgy 28.8.2006, 11:26 |
имхо хуже |
| Автор: SergeCpp 28.8.2006, 11:49 | ||||||||
|
| Автор: MAKCim 28.8.2006, 11:54 | ||
имхо, как минимум не хуже вообще, то что лучше знаешь - то и лучше |
| Автор: Romikgy 28.8.2006, 12:00 | ||
Уже привели пример
напишешь и здесь разница не в том что это невозможно сделать в дельфи , а в том что вся документация написана на С++ , а разницы в вызовах нет , имхо, буть то русование точки , или сложный рендеринг |
| Автор: Quadr0 28.8.2006, 12:04 |
| ... |
| Автор: DeadLine 28.8.2006, 18:20 |
| А возможно ли кроссплатформенное програмирование на Дельфи? |
| Автор: Romikgy 28.8.2006, 18:35 | ||
имхо можно юзая
|
| Автор: Mayk 30.8.2006, 15:49 | ||
остаётся открытым вопрос не является ли использование CLX чем-то кроме увлекательного упражнения для вашего мозга. проектов написанных на паскале для ЛНХ мне не известны. Правда если сделают нормальный дот нет под др. оси, то можно будет сказать ПРЕВЕД кросс платформенности и под дельфи. |
| Автор: Romikgy 30.8.2006, 15:55 |
| А Kylix не в линухе? |
| Автор: Snowy 30.8.2006, 15:59 |
| А возможно кроссплатформенное программирование на VC++? Для кроссплатформа есть FreePascal. Дельфя для виндов. |
| Автор: MAKCim 30.8.2006, 16:01 | ||
как то он особо тут не прижился а вообще оно надо - Delphi в Linux? |
| Автор: Mayk 30.8.2006, 16:07 |
Засекаем время. Сейчас кто-нибудь прибежит и спросит а нужно ли дельфи вообще, если есть такое чудо как http://en.wikipedia.org/wiki/HQ9+ |
| Автор: bel_nikita 18.11.2006, 17:46 |
| Прочитал тут, что в Сях нет интерфейса... хм... А абстрактные классы для чего? З.Ы.: Интересно, очень часто натыкаюсь на вопросы типа: Стоит ли переходить с Дельфи на С++. Но еще ниразу не встретил вопроса: Стоит ли переходить с С++ на Дельфи. |
| Автор: Alexeis 18.11.2006, 19:12 | ||
И не удивительно, те кто привык садомазахизму уже не в силах оценить всю красоту и изящество делфи. Их представление о работе программиста уже извращено настолько, что они не мыслят жизни без нудной и однообразной работы, от которой их избавляет делфи. А простой и прозрачный код просто бесит, они ищут сложных извращенных конструкций, которые можно понять лишь попыхтев пол часа как над хитрым ребусом. И думать, ну я и наворотил тут. Слабо кому-нибудь повторить такую же хрень? Только не спрашивайте как это все работает, работает ну и не трогайте! И то слава богу! Что вы думаете народ так дико кинулся на С#, а все потому что он является неким подобием концепции Делфи. Бедные измученные программисты увидели, что можно писать программы спокойно не мучая себя поиском трудноуловимых синтаксических и логических ошибок. |
| Автор: Daevaorn 19.11.2006, 22:50 |
| alexeis1, односторонний и абсолютно любительский взгляд. не капельки не профессионально. |
| Автор: nerezus 20.11.2006, 00:30 |
| alexeis1, ну например на делфи нельзя написать ОС ;) или модуль к PHP(естественно, для серверныхх ОС). |
| Автор: skyboy 20.11.2006, 00:49 |
| nerezus, уже обсуждалось. Путаешь конкретный компилятор, заточенный под Win32(или .NET) с языком программирования. Можно на языке Delphi писать ОС, можно. Просто компилятор нужен соотвествующий. Благодаря механизму ассемблерных вставок, и загрузчки можно написать в пределах программы на языке Delphi. |
| Автор: Romikgy 20.11.2006, 10:13 |
| Daevaorn, имхо это с вашей стороны он односторонен. (так для инфы, ты дельфи знаешь?) А ты на С++ напишешь? для вин 32 легко имхо |
| Автор: bel_nikita 20.11.2006, 10:42 |
| Я думаю, что многие Сишники, знают, по крайней мере знакомы, что такое Делфи и паскаль. Многие начинают с паскаля/VB, потом делфи, потом С++ или java |
| Автор: Daevaorn 20.11.2006, 10:45 | ||||||
Её почти нет у Delphi.
Всё как раз наоборот. Если не скатываться до банальных споров, то можно хотя бы вспомнить автоматические деструкторы для объектов. Которые упрощают жизнь. Аналог их есть в Delphi, но от него мало проку. И ещё можно много найти таких же деталей. У Delphi программистов основной принцип это copy/paste из-за отсутствия парадигмы обобщенного программиования. И это ты называешь избавление от однообразной работы?
Для тех кто не знает язык
Типичные мысли программистов Delphi из-за отсутствия профессионализма у большенства из них. Я бы сюда не совался, если бы не знал. |
| Автор: Romikgy 20.11.2006, 11:22 |
имхо страные высказывания после эт хорошо , что знаешь |
| Автор: Alexeis 20.11.2006, 13:23 | ||||||
Можите обзываться как хотите, меня это ничуть не обижает, но факт остается фактом, что для того чтобы писать нормальный код нужно быть профессионалом, люди которые не обладают высокой квалификацией пытаются на С++ создать, что-то серьезное, а в результате получается полная [censored 6] фигня, типа того что я описал. Начинают мучать язык дабы замазать неумение правильно стоить программы. Конечно, язык богат на выражения, но этим и опасен. Как мартышка с гранатой! Делфи позволяет писать небольшие программы практически полным чайникам, не понимающим как это все работает. Позволяет развиваться начинающим, позволяя писать объектный код не напрягая их деталями. И программистам средней квалификации позволяет учится писать программы с правильной структурой не позволяя им "развратных" вольностей и заставляя писать так как правильно. И только профессионал может оценить всю мощь предоставляемую языком и после этого ему уже совершенно пофиг на чем писать дальше, потому что он УМЕЕТ писать программы, а не просто знает синтаксис. Дальше если он хочет пишет в делфи, если нет пишет в С++. Он теперь может писать в С++ красиво, ограничивая себя от "разврата" или на любом другом языке. Я раз сказал и дальше буду говорить. С++ развращает. Не всех, конечно, но детям до 16 лет низя Вот так вот. Кого ни знаю все только и думают как бы мне написать свою ОС. Как же я буду дальше жить не написав ОС. Наверное прожил жизнь зря
В том то и дело что только знакомы! Позарившись на функционал как на голых баб быстро туда переходят. Но из них реально только единицы становятся настоящими профи. Все остальные заставляют создавать все более мощное и мощное железо, чтоб их чудеса хоть как-то могли работать.
Ну тут прямо все собрались сплошные профи дальше некуда. Профи бы не опустились бы до такого спора. У них уже свое мнение и такие вопросы их совсем не волнуют. А раз нас всех тут волнует, значит нефиг нос задирать. Все мы учимся понемногу. Кстати еще один камень по поводу функционала. Делфи активно развивается перенимая развитые средства отовсюду. Это уже далеко не тот паскаль который был раньше. С каждой новой версией язык развивается! Те кто хорошо знают язык никогда не жалуются на отсутствие чего либо |
| Автор: nerezus 20.11.2006, 19:52 | ||||||
С таким же успехом можно сказать, что и на джаваскрипте ОС можно написать. Однако эти слова будут не большим, чем просто сотрясание воздуха.
|
| Автор: skyboy 20.11.2006, 20:11 | ||
можно и Delphi, как мне кажется. Разве что загрузчик ЕХЕ - на ассеблере
А что? сомневаешься, что можно? |
| Автор: DemoCode 20.11.2006, 20:19 |
PHP4Delphi 5.0 это первая визуальная оболочка для разработки и работы с PHP объектами, используя Delphi. PHP4Delphi к тому же позволяет исполнять PHP скрипты внутри Delphi-программ непосредственно из файла или памяти. Имеется возможность читать и изменять PHP переменные и результирующие значения. PHP4Delphi позволяет внедрять PHP интерпретатор в Ваши Delphi приложения. Новое в версии 5.0: * PHP API и ZEND API преобразование с языка C в Delphi; * psvPHP компонент, работающий непосредственно в Delphi без дополнительных DLL; * phpLibrary компонент, который позволяет добавлять новые PHP функции в psvPHP компонент; * новая визуальная оболочка с расширенными возможностями. Это оно? Добавлено @ 20:22 Хотя можно поступить проще. PHP ведь умеет работать с COM. |
| Автор: MAKCim 20.11.2006, 20:49 | ||||||||
Я вот что скажу, это опасно пусть лучше получится сначала "полная [censored 6] фигня", зато будет видно, что это [censored 6] фигня и это заставит человека задуматься о своих знаниях (точнее об их нехватке). В случае Delphi можно возомнить себя супер-программистом и на этом остановиться в развитии, так и не узнав, "как это все работает"
Первый раз такую чушь слышу, уж извините
действительно, уже надоело
хороший намек (если я правильно понял) |
| Автор: nerezus 20.11.2006, 20:51 | ||||
Или серваки на винде держать теперь стали? Я то еще понимаю: ASP.NET, ибо от M$, поэтому винда для нее предпочтительнее.
|
| Автор: DemoCode 20.11.2006, 20:53 |
Так ведь речь идёт о Win32. Добавлено @ 20:55 Если будет тема Delphi vs C++ для *nix, я не сомневаюсь, что 100% отдадут свой голос за C++. Но в Win32 Delphi может успешно конкурировать с тем же C++. |
| Автор: Romikgy 20.11.2006, 22:23 |
| nerezus, у мя сложилось впечатление, что ты хоть и но ты не понимаешь как там все работает! Сужу по ибо модули под ПХП это dll файлы а они пишутся на чем угодно (почти, дельфи и си 100%) держат , держат, но только мало кто даст свои модули в ПХП сувать , буть то винда , или юникс |
| Автор: nerezus 20.11.2006, 22:35 | ||
|
| Автор: nerezus 20.11.2006, 22:57 | ||
Romikgy, как на делфи будет выглядеть следующий код в сырцах библиотеки:
? |
| Автор: Romikgy 21.11.2006, 00:37 |
а что сложного? Добавлено @ 00:39 приведи этот код полностью и посмотрим, точно не будет *.h, будет *.pas |
| Автор: nerezus 21.11.2006, 06:54 | ||||
|
| Автор: Romikgy 21.11.2006, 09:40 | ||
все это можно перевести на паскаль/дельфи, имхо вот и ну, просто ты не знаешь как там работает , а говоришь что это нельзя сделать на том или другом языке. |
| Автор: nerezus 21.11.2006, 10:11 | ||
Теоретически можно абсолютно все ;) |
| Автор: vlgr 21.11.2006, 11:15 | ||||
Уже давно сделано. http://members.chello.be/ws36637/php4delphi.html
Скачай http://members.chello.be/ws36637/download/php4Delphi.zip там куча примеров |
| Автор: Romikgy 21.11.2006, 11:28 |
| nerezus, видишь даже без меня те ответ дали |
| Автор: DemoCode 21.11.2006, 13:36 |
Ему этот ответ я ещё вчера вечером дал |
| Автор: Daevaorn 21.11.2006, 19:21 | ||
Вот ты сам и очертил область применения Delphi. Но должно же быть ещё и развитие. Вот поэтому обсуждаемый переход и является правильным. Другой вопрос, что это нужно делать вовремя. |
| Автор: Alexeis 21.11.2006, 20:24 | ||
Читать надо внимательнее.... |
| Автор: Romikgy 21.11.2006, 20:53 | ||
имхо он позволяет, но не ограничивает!!! |
| Автор: Snowy 21.11.2006, 21:42 |
| Ну что опять за наезды на дельфи? Если кто-то что-то имеет против дельфи, то сразу отвечаю - ты не прав И вообще, вопрос звучит так: "Стоит ли вобще переходить на C++?" Ответ: А зачем? Вторая часть: "т.к смотрю дельфи мрачное будущее." Как раз наоборот. Позиции усиляются, язык и среда прогрессируют. Какие ещё вопросы против банального "Delphi vs С++"? |
| Автор: Daevaorn 21.11.2006, 22:46 |
Ограничивает. Как пример отсутствие парадигмы обобщенного программирования очень серьезное ограничение. Не везде она нужна, но достаточно часто. Поэтому при разработке сложных систем где главное не GUI, а надежность и внутренняя логика Delphi не предпочтительный инструмент. |
| Автор: skyboy 21.11.2006, 23:04 |
"обобщенное программирование" - это шаблоны? да, из-за отсутствия статических полей в классах невозможен в чистом виде паттерн "одиночка". А что ещё не нравится? поясни, плиз, собственное заявление для тех, кто впервые слышит о "парадигме обобщенного программирования" |
| Автор: Snowy 21.11.2006, 23:10 | ||||
О каких ограничениях речь???
Дельфи - это далеко не только VCL! Хотя, если идти от обратного - VCL - несомненный плюс перед плюсами (каламбур |
| Автор: Void 21.11.2006, 23:20 |
Snowy, байта ради, не прибегай к подобным аргументам. Сейчас кто-нибудь ещё скажет, что всё в конце концов превращается в машинные коды… Дайте теме спокойно умереть |
| Автор: Snowy 21.11.2006, 23:26 |
| Так она ещё в августе умерла. Её реанимировали Добавлено @ 23:28 Любители плюсами померяться очень уж любят подобного рода хоуливары |
| Автор: Romikgy 21.11.2006, 23:37 | ||||
пример можно?
А что нет? |
| Автор: Void 21.11.2006, 23:39 |
| Romikgy, из этого не следует делать вывод, что всё остальное не имеет преимуществ перед машинными кодами. |
| Автор: Romikgy 22.11.2006, 00:09 |
| а хто этот вывод делает? или не правда что все приходит к нему? |
| Автор: nerezus 22.11.2006, 09:24 |
| Не правда конечно: многое просто интерпретируется ) |
| Автор: MAKCim 22.11.2006, 10:08 | ||||||
а интерпретируется на чем по-твоему или процессор хлебушек вместо команд кушает? прямым или косвенным образом все превращается в команды процессора на том предлагаю закончить кстати
не любой думаю аналога
в Delphi нет, поправьте если не так |
| Автор: nerezus 22.11.2006, 10:11 | ||||
|
| Автор: Alexeis 22.11.2006, 10:16 |
И это делает, конечно не машинный код |
| Автор: MAKCim 22.11.2006, 10:34 | ||
обычная да не совсем |
| Автор: Alexeis 22.11.2006, 10:34 |
Да есть пару конструкций, которые простой заменой не сделаешь, например оператор swicth в С++ позволяет реализовать более сложную конструкцию чем case, так что в общем случае в делфи его можно заменить только серией If then, но и в делфи есть конструкции, которые С++ не возьмет, например procedure proc1; procedure proc2; procedure proc3; Begin end; Begin end; Begin end; У каждой из которых своя область видимости и свои локальные переменные и возможность рекурсивного вызова любой из них, а так же досрочный выход из любой процедуры на более нижний уровень, и конечно, скрытие внутренних процедур от внешних вызовов. Попробуйте простыми средствами переделать такую хитрую конструкцию на С++ И еще можете ли вы размещать в библиотеках динамической компоновки код классов, который может быть успешно использован несколькими исполняемыми модулями одновременно? |
| Автор: MAKCim 22.11.2006, 10:43 | ||||||
?? как это? Метаинформация как в С# например? Или что? Или вы имеете в виду экземпляры классов, т. е объекты?
нет синтаксической конструкции, но это легко эмулировать а вот
скорее всего не получится (найти аналог или ухищрение какое-нибудь на Delphi) |
| Автор: skyboy 22.11.2006, 10:47 | ||||
MAKCim, просвети, чем
отличается от
|
| Автор: MAKCim 22.11.2006, 11:13 | ||||
если в
можно передать произвольное (ну не произвольное, а ограниченное стеком) число параметров, то ничем. Если Delphi реально есть такая конструкция (я не знал), то беру свои слова назад |
| Автор: SergeCpp 22.11.2006, 11:26 | ||||
|
| Автор: Romikgy 22.11.2006, 12:01 | ||
аналог ф_ции с переменым числом параметров |
| Автор: SergeCpp 22.11.2006, 12:03 | ||||
Compile-time calculations...
|
| Автор: Romikgy 22.11.2006, 12:12 |
| SergeCpp, уже говорилось что в дельфи/паскале нет шаблонов! А реализовать вычисление факториала, я думаю сам понимаешь, на дельфи можно |
| Автор: SergeCpp 22.11.2006, 12:13 |
http://info.borland.com/techpubs/delphi/delphi5/oplg/procfunc.html is equivalent to array of TVarRec. TVarRec, declared in the System unit, represents a record with a variant part that can hold values of integer, Boolean, character, real, string, pointer, class, class reference, interface, and variant types. TVarRec's VType field indicates the type of each element in the array. Приблизительный аналог... Overheads в лице TVarRec's VType field, однако... |
| Автор: Romikgy 22.11.2006, 12:13 |
| или ты делал упор на это? (я это сразу не заметил) Добавлено @ 12:15 не спорю, но можно создать процедуру у которой будет переменое число параметров |
| Автор: SergeCpp 22.11.2006, 12:20 | ||
At compile time?.. |
| Автор: Romikgy 22.11.2006, 12:45 |
| SergeCpp, 1. когда это может понадобится? 2. надо подумать никогда такое не надо было делать, лично мне |
| Автор: SergeCpp 22.11.2006, 12:54 | ||
|
| Автор: Alexeis 22.11.2006, 12:59 |
| SergeCpp, конструкция, конечно интересная, но может ли она реализовать весь тот функционал, который я описал? |
| Автор: Alexeis 22.11.2006, 13:17 | ||
Объект сам по себе небольшой, обычно в нем только данные, а его методы хранятся отдельно и являются общими для всех объектов. На самом деле в программе существует некая структура которая отражает именно класс, а не сам объект. Стандартные библиотеки Dll не допускают передачу обычных объектов как из dll так и в нее. В делфи реализованы расширенные библиотеки позволяющие при загрузке определять связи между экземпляром объекта и его классом, тем самым отпадает необходимость в дублировании кода класса (фактически его методов). Кроме того это позволяет передавать объекты в такую библиотеку, что дает гибкость управления памятью |
| Автор: SergeCpp 22.11.2006, 14:04 | ||
См. 9.8 Local class declarations в стандарте... |
| Автор: SergeCpp 22.11.2006, 14:31 | ||||
| ? — критерии и единицы оценки размера не указаны ? — vtable ведь тоже данные ? — во время компиляции, вероятно (в asm-коде уже только данные)
тогда уж, сравнивать следовало бы с некими "расширенными" библиотеками C++
использующему (as dynamic library, not static) type (где дублирование?) |
| Автор: Romikgy 22.11.2006, 14:52 |
зачем городить такую кострукцию , если можно поставить число? |
| Автор: SergeCpp 22.11.2006, 15:52 | ||
| http://en.wikipedia.org/wiki/Template_metaprogramming http://www.oonumerics.org/blitz/
etc. |
| Автор: Romikgy 22.11.2006, 16:13 | ||||
не вижу хороших преймуществ, имхо все конструкции типа
можно заменить константами или дефайнами А о пункте * Readability: они сами сказали, что фиг прочитаешь, зачем тогда путать людей? все равно эти Template metaprogramming кроме как сложновычисляемые постояные не заменяют, имхо , тогда проще вычислить все постояные и вставить в один массив, даже время компиляции сократится! |
| Автор: SergeCpp 22.11.2006, 16:25 | ||||||
Readability: With respect to C++, the syntax and idioms of template metaprogramming are esoteric compared to conventional C++ programming, and advanced, or even most non-trivial, template metaprogramming can be very difficult to understand. Metaprograms can thus be difficult to maintain by programmers inexperienced in template metaprogramming (though this may vary with the language's implementation of template metaprogramming syntax).
vs http://www.boost.org/libs/mpl/doc/
http://www.boost.org/doc/html/lambda.html
|
| Автор: Alexeis 22.11.2006, 16:35 | ||
Если объект не хранилище данных, то обычно размер (в байтах) его полей данных намного меньше чем область памяти занимаемая его методами. Таблица виртуальных методов тоже данные, но что из этого следует я не понял... я же не говорил, что класс содержит только методы... класс содержит все что является статичным т.е. не меняется от объекта к объекту. А методы как раз и не меняются от экземпляра класса к экземпляру (если объект действительно экземпляр своего класса, а не класса наследника). Под структурой я понимаю некую область памяти где размещены данные объединенные логически (т.е. класс, речь не идет о структурах языка С++) |
| Автор: SergeCpp 22.11.2006, 16:48 | ||||||||
Так где же дублирование-то?.. |
| Автор: Romikgy 22.11.2006, 16:57 |
| SergeCpp, что ты этим всем хочешь сказать , имхо , я те уже говорил смысл описания этих в контексте темы? PS сколько я программил на С/С++, никогда еще не возникало надобности в использовании |
| Автор: Alexeis 22.11.2006, 17:07 | ||
Ну чтоб так утверждать я должен очень хорошо представлять как выглядит объект в памяти Ну да, просто в делфи все объекты фактически указатели на объект, потому объект и указатель на объект там синонимы Если чесно, то я просто не понял. Неужели статические библиотеки *.lib можно загружать динамически во время исполнения и использовать классы реализованные в ней? Они же называются статическими |
| Автор: SergeCpp 22.11.2006, 17:14 | ||||||
это данные... используемые нетривиальным образом.
Так я же говорил...
Ключевые слова — as dynamic library, not static (method.lib в таком случае — библиотека импорта [из DLL]). |
| Автор: Alexeis 22.11.2006, 17:47 |
Из такого краткого пояснения мало что можно понять. То ли *.lib файл помогает динамически связывать классы определенные в Dll, то ли она сама заменяет dll, то ли ее помещают в секцию импорта экзешника, и потом все происходит волшебным образом |
| Автор: SergeCpp 22.11.2006, 17:52 |
| http://www.codeproject.com/dll/SimpleDll2.asp?df=100&forumid=108881&exp=0&select=980936 |
| Автор: Artemios 23.11.2006, 04:05 | ||||||||||||
Я был вместе с Delphi со 2-й по 4-ю версию, потом перешел на C++ и не жалею. Можно посоветовать примерно следующее:
только здесь число 3 заменить на N
А вот благодаря Билдеру я совершил переход в плюсы на год позже, чем мог бы. Элементарно, установив Билдер и увидев, что Борланд сделал с родной Дельфи -- я на некоторое время посчитал этО недостатком языка, а не Борланда. Испугался, одним словом, и снес Билдер
Я аж прослезился. До сих пор рыдаю. Такие вот мы, садомазохисты и извращенцы
Угу. И в теме кроссплатформенности Дельфи не лидер. Про математику вообще молчу. Правда, сам я уже пару-тройку лет не чистый плюсатник, но это, наверно, уже не в тему Добавлено @ 04:10
Я это обязательно распечатаю в 15 экземплярах -- повешу дома, на работе, раздам коллегам... Такие перлы нельзя забывать |
| Автор: Romikgy 23.11.2006, 10:00 |
А ты не молчи , мы тя слушаем! 1. ее здесь никто не обсуждает 2. при большом желании ее тоже в дельфи можно найти |
| Автор: Daevaorn 23.11.2006, 10:06 | ||||||
Да. Именно они. Мне не всегда нужен полиморфизм времени выполнения. Имея инструмент в виде шаблонов, я могу использовать полиморфизм времени компиляции. Что даст мне прирост производительности и уменьшение вероятности сделать ошибку. Правда за такое удобство приходится платить, но плата несущественна.
Я бы сказал иначе - любой алгоритм.
Да, плюс, но увы единственный ради которого ещё можно объяснить использование Delphi (хотя я лишний раз подумаю о С# или о python). Если убрать RAD средства, то в чем смысл использования? Что Delphi в таком виде может предложить по сравнению с другими языками? Примеры тебе предоставляет рынок ПО. |
| Автор: Romikgy 23.11.2006, 10:46 | ||||
не корректно это без предоставления конкретных примеров, ибо я пользуюсь многими продуктами написаными на дельфи и мне нравится, работает и без глюков! Так что приведи пример!
имхо любой код представляет собой реализацию какого либо алгоритма
А что дельфи не может предложить? (кроме шаблонов) |
| Автор: Alexeis 23.11.2006, 10:55 | ||
Ну вот пожалуйста, я же говорил, что с хорошим опытом делфиста, когда уже понимаешь как нужно писать программы уже не составляет труда перейти на другой язык. Каждый ищет своего. У делфи есть своя область работы откуда ее не вытолкнешь, но когда выходишь из этой области, то пишешь на том, что больше подходит. Я сам сейчас пишу под WinCE, на Visual C++ Embedded, и буду дальше утверждать, что на то, что у меня в делфи уходили минуты, тут приходится делать часами, ну это по большей части проблемы среды и дополнительных библиотек, но суть от этого не меняется, я считаю что делфи это шаг в будущее программирования, когда от программиста будет требоваться только базовая логика, а программы будет компьютер писать сам для себя, привлекая его только для того, что еще не было придумано за него. Делфи это не только визуальное проектирование, позволяющее максимально быстро и наглядно создавать интерфейс, это более высокий уровень абстракции, позволяющий не думать об особенностях языка и сосредоточится на логике работы программы. Все сделано, так, что оно будет работать, потому можно освободить голову от лишних забот и думать над той задачей, которую нужно решить. Мне же сейчас приходится непрерывно вести войну за работоспособность программы и уделять 95% внимания на код, а не на саму задачу, когда на делфи у меня выходило примерно 30% на код и 70% на саму задачу. Т.е. там я себя чувствую белым человеком, а не чернорабочим. Возможно, там еще многое не доведено до совершенства, но это уже шаг вперед, по сравнению с классическим программированием, а потому так просто переходить на С++ из-за одного лишь языка просто бессмыслено. В идеале должно получится примерно 1% к 99%, именно таким я себе представляю светлое будущее программирования. |
| Автор: Daevaorn 23.11.2006, 11:04 | ||
При использовании двух разных языков, я реализую один и тот же алгоритм, но возможно разными средствами. Поэтому результат будет одинаков, но пути достижения разные. Ни оптимизации, ни переносимости как пример. |
| Автор: Romikgy 23.11.2006, 11:12 |
согласен , и еще раз повторюсь, каждый язык имеет свою нишу в общей области программирования! не понял к чему бы это? оптимизация чего? переносимость чего? |
| Автор: skyboy 23.11.2006, 13:15 |
ты про язык или про конкретный компилятор? про конкретный компилятор? ок. Тогда сравниваем Borland C++ 3.01 и Borland Delphi 2005. У кого - какая оптимизация и у кого большая переносимость? |
| Автор: Artemios 23.11.2006, 13:21 | ||||||||
Ну чтож, покажи мне реализацию на Дельфи алгоритмов построения базисов Грёбнера. При чем не только для идеалов полиномиального кольца с фиксированным числовым полем и фиксированным числом свободных переменных. Скажем число свободных переменных произвольно; коэффициенты полиномов имеют произвольную природу, будь то хоть дроби неограниченной точности, хоть дробно-рациональные функции, хоть опять же полиномы. И пусть я хочу производить эти расчеты не только под Win*, но и под *nix. Если я увижу такую реализацию на Дельфи, и она будет только в 2 раза больше по объему кода и только в 2 раза медленней по выполнению, чем моя собственная, совсем неоптимальная реализация на С++, обещаю съесть свои носки
Пока на с++ был знаком только с MFC, я тоже думал, что круче VCL для ГУёв ничего нет. Только, потом с Qt познакомился -- и все встало на свои места
А что, я где-то говорил, что до Дельфи не был знаком с Basic, Pascal, ASM и Lisp-ом? |
| Автор: Alexeis 23.11.2006, 13:21 | ||||
| Вообще skyboy прав, тут все зависит от версии компилятора, а вообще ИМХО некорректно сравнивать Среду разработки и язык, не указывая версии ни того ни другого. Тем более говорить о переходе. Ведь не ясно с чего на что имеет смысл переходить или не переходить. Добавлено @ 13:25
Да нет тут просто рядом была тема где утверждали, что нужно учить сразу только С++... типа так будет лучше. Добавлено @ 13:27
А кто сказал что я юзаю MFC? Я его совсем не юзаю и он мне совсем не нравится... о нем даже речь не идет. |
| Автор: Romikgy 23.11.2006, 13:32 |
я эту фигню первый раз слышу, и не знаю ее мат алгоритмов, но думаю ничего сложного (для математики) там нет, так что она может быть реализована, и на дельфи! здесь вопрос спорный если юзать дельфи , то она чисто виндовая , но есть еще куликс(имхо, при использовании CLX , эта вещь понимается и виндой и юниксом) и фрипаскаль Artemios, и вообще не надо ограничивать свой кругозор только тем что ты знаешь, имхо есть еще куча применений этого языка, помимо базисов и т.п. и не надо давать таких обещаний , кто то может ради принципа взять да написать эту весч на дельфи (есть же спец бальшого уровня, принципиальные(если не захарит )) , более оптимально , и прийдется ведь есть |
| Автор: SergeCpp 23.11.2006, 14:18 | ||
http://mathworld.wolfram.com/GroebnerBasis.html
http://www.google.com/search?hl=en&lr=&q=Groebner+basis+template+C%2B%2B http://en.wikipedia.org/wiki/Gr%C3%B6bner_basis P.S.
|
| Автор: Artemios 23.11.2006, 14:21 | ||||||
Ну-ну. Я от своих слов отказываться не буду
Да никто и не спорит. Только заявлялось, и продолжает заявляться, что дельфи -- универсальный инструмент, на котором при достаточном желании можно хорошо (читай быстро, кратко, оптимально) решить практически любую задачу. Ну как тебе сказать? Эта область компьютерной алгебры до сих пор переживает период бурного развития и со стороны алгебры, и со стороны алгоритмики. |
| Автор: Romikgy 23.11.2006, 14:37 | ||
да кто ж тя заставляет отказыватся? имхо нет вещь , очень много чего позволяющая, и свобода слова в первую очередь
да , это все правильно , с одной оговоркой, для новичка! Для профи , имхо все равно на чем программить! скажи как есть |
| Автор: bel_nikita 23.11.2006, 16:13 | ||
заблуждение это |
| Автор: Romikgy 23.11.2006, 16:17 |
| bel_nikita, имхо нет ! опровергни! PS http://forum.vingrad.ru/act-ST/f-193/t-123285/unread-1.html |
| Автор: SergeCpp 23.11.2006, 17:02 |
Друзья! Давайте жить дружно! ![]() ![]() |
| Автор: Romikgy 23.11.2006, 17:11 |
я за , с кем дружить будем ? |
| Автор: bel_nikita 23.11.2006, 17:31 | ||
Возможно, идиотский пример, но все же... К примеру, музыкант. У всех есть слух, все знают ноты, все сдают сольфеджио и т.д. и т.п. Все они профи (как тут выражаются). Но, почему-то, скрипач не может так виртуозно сыграть на гитаре, как он делает это на скрипке. Казалось бы какая разница на чем играть? Ноты одинаковые; струны есть как на скрипке так и на гитаре. В чем дело? Неужили он не профессионал? Но тогда почему, на его сольные выступления в консерватории, приходит полный зал... |
| Автор: Romikgy 23.11.2006, 17:43 | ||||
точно , и не корректный не у все! (и это главное)
потому , что это не профи, а играет по нотам на том , на чем его учили!
возможно и нет, те кто собирает полный зал , это , имхо, музыкант от бога, как любят говорить, а выпускников муз школ целая куча, а на концерты ходят к единицам! И реальный профи умеет играть (просто без виртуоза )не только на скрипке но и на гитаре, и на пианине, и на баяне |
| Автор: skyboy 23.11.2006, 17:56 | ||
как мы можем называть Пушкина "классиком", коль он на японском стихотворения не писал, да? Вот скорость обучения новому повышается приприобретении опыта, но говорить, что "профессионалу все равно - хоть на J писать, хоть на баяне играть" я бы не стал. Давайте. А где Вирт среди фоток? |
| Автор: Alexeis 23.11.2006, 17:57 |
Да уж на этом инструменте мы все умеем играть |
| Автор: Romikgy 23.11.2006, 18:10 | ||
skyboy,
не надо путаль мух с котолетами! я не говорил , что музыкант , должен умет сделать балалайку! А вот тот кто делает балалайки , имхо должен уметь на них играть! вернемся к теме! имхо чел который ся считает профи, должен не только уметь пользоватся будь то С++ или дельфи, но и знать что есть такое пхп , перл , и асм и васик и т.п. писать виртуозно на них не надо , но и кричать , что С++ это рулез , а остальное все ф топку, также не надо , если есть свое мненние , имхо обосновать надо , корректно ! имхо область применения что си что паскаля уже давно определилась и его юзают там где он лучше, те кто знает, где оно будет лучше, и большая масса народу, юзают то что знает , везде где надо и где не сильно, ибо зачем учить что то новое? когда я крут в том что знаю , хмммм ..... |
| Автор: MAKCim 23.11.2006, 20:56 | ||
C++ крут, т. к его область применения велика и в каждой этой области при правильном его (языка) применении получается быстрый и эффективный код (хотя компиляторы в общем случае бывают разные); он крут потому как обладает гибкостью - возможностью написания кода синтаксически разными способами, т. е всегда (или почти всегда) есть несколько способов решения проблемы и в зависимости от ситуации есть возможность выбора: какое из этих решений использовать; он крут, т. к в меру ограничивает возможности программиста, давая ему возможность "жульничать" (в отличие от многих других языков) там, где оно (жульничество) оправдано; еще по многим показателям он крут, но это уже будет имхо |
| Автор: Daevaorn 23.11.2006, 21:05 |
Лучше сравним современные компилятор Delphi и компилятор С++ от Intel, а? А про сам язык я уже говорил. По сути Delphi почти подмножество С++, по языковым возможностям, конечно. |
| Автор: skyboy 23.11.2006, 21:14 | ||||||
а котлеты - подмножество мух?
давай уж лучше Borland Delphi и Visual C++. Интересно, умеет ли творение Microsoft компилировать программы под FreeBSD.... Добавлено @ 21:15
если ты про type-casting в том или ином виде(void-указатели и прочее подобное), то он есть даже в ассемблере(word ptr/byte ptr; в крайней мере, в некоторых реализациях) |
| Автор: Romikgy 23.11.2006, 23:20 | ||||||||||||
| MAKCim, имхо обоснования расплывчатые, имхо почти все тоже относится к дельфи
также как и дельфи
с одной стороны эта гибкость хороша, с другой уж слишком много проблем с ней при освоении ее
аналогично и дельфи
дык ограничивает или дает возможность? в какой то мере, имхо , по минимуму одинаковый класс, или уровень ага из мух тоже котлеты можно сделать
А че вы прицепились к кроссплатформености, давайте ограничемся платформой win32 т.к. никс системы написаны на си и там не было конкурентов в качестве борланда , при начале его освоения , а когда борланд обратил внимание на никсы былоо поздно! так что в никсах си крут вопросов нет!
Вот видишь еще одно доказательство PS имхо все обоснования пространственные и относятся к большенству языков высокого уровня, более конкретные есть именно относящиеся к С++ плз |
| Автор: likehood 23.11.2006, 23:38 |
| Кстати, давно хотел спросить, есть ли в Delphi аналог контейнерных классов С++ (списки, словари, векторы) и если есть, то насколько удобно с ними работать? |
| Автор: Artemios 24.11.2006, 02:27 | ||||||
Угу. И перегрузка операторов. Хм... А я думал, профи просто более свободен в выборе наиболее адекватного метода решения поставленной задачи. Как то не копать могилы ложкой и не ездить в магазин на танке. Да там же и сказал:
Ну и еще раз повторю: в математике на дельфи далеко не уедешь. По краткости и простоте кода здесь языкам функционального программирования нет равных (напр. система Reduce написана на лиспе), однако когда встает вопрос не только о сложных алгебраических структурах, но и о ресурсоемких вычислениях с ними -- С++ нет равных. Имхо, патриотизм и фанатизм - разные вещи. Многие задачи мне гораздо проще (короче и быстрее) решить в рамках Python-а (последнее время примерно 90% кода пишу в Питоне). Много сложных логических продукций -- цепляем *.so (ну или *.dll) Пролога, и т.д. Но, естественно, когда машинных ресурсов не хватает -- то конечно ручками и на С++ only.
Интересно, а какое дело человеку под FreeBSD до творений Microsoft?
То есть так вот взять и отсечь все, что не Вынь+ПиСи? |
| Автор: nerezus 24.11.2006, 08:51 |
| Короче сменил свое мнение о делфи, убедился, что делфи может большинство из того, что может С++. Хотя все-таки имеет недостатки(Отсутствие кроссплатформенности, к примеру). |
| Автор: Romikgy 24.11.2006, 10:03 | ||||||||
Что делает перегрузка операторов? только лишь красивое отображение, ибо (допустим оператор равно) можно написать а=с; а можно написать и а.operstor=( с); так не аналог ли это обычной ф-ции класса? имхо тоже , так что перегрузки операторов имхо хорошо , удобно , но не смертельно
Совершенно с тобой согласен, и если ты перечитаешь мои посты, то поймешь что к именно этому я и вел разговор, что по задаче выбирается средство ее реализации, если профи!, иначе , пишется на том , на чем знаешь можншь обосновать чем слаба математика в дельфи? только плз аргументировано!
не совсем понял какого языка ?
имхо вообще все математику проще считать в MatLab или анаогичному ему, как раз там вся оптимизация на математику направлена нет, я этого не говорил, имхо это чисто ваши домыслы!
Насчет изменения мнения , я лично не страрался его изменить никому! Просто хотел сказать что не нужно зацикливатся на чем то одном , надо развиваться, а когда знаешь многое проще решать чем лучше и быстрее пользоватся в той или иной ситуации. Насчет недостатка, да дельфи не кроссплатформена но дельфи это потомок объектного паскаля! А объектный паскаль - это есть и Куликс и фрипаскаль, а это никсовые вещи! PS кса ту подумал недавно , прогресс ведь всегда основывался на здоровой конкуренции, ведь так? какая конкуренция С++ в никс подобных системах? имхо никакой один он там такой мощный, а на вин32 платформе , у него (т.е. С++) есть мощный конкурент Дельфи, и терь можно задуматся, какая платформа дала больше новшеств в языках, никсовая или виндова? |
| Автор: mr.DUDA 24.11.2006, 10:18 | ||||
Имелась ввиду математика наподобие такой:
Исходник XviD. |
| Автор: Romikgy 24.11.2006, 10:25 |
незнаю что это такое , но имхо в этой ф_ции нет ничего сложного для реализации на дельфи сдвиги , сумма/умножение , логика это все есть в дельфи PS переписывать всю ф_цию на дельфи не хочется слишком большая она |
| Автор: skyboy 24.11.2006, 10:57 |
На примере: LISP - язык функционального программирования. Просто он не один такой. mr.DUDA, я надеюсь, ты не пытался продемонстрировать на этом примере бессилие Delphi при решении математических задач? А то я как-то сходу ничего кроме арифметических и битовых операций, имеющихся в делфи, ничего выдающегося не увидел(исключая объем и алгоритм |
| Автор: Artemios 24.11.2006, 11:21 | ||||||||
Никто конечно не спорит, не смертельно, я не говорил о перегрузке, как об основном достоинстве. Однако как-то не очень приятно писать что-то вида inv(a.div(b.add( с )).mul(d).sub(c.div(d))), тем более, когда типы переменных в выражении -- параметры шаблона.
Я говорил о слабости дельфи в математике, а не наоборот. В качестве аргумента я привел достаточно простую задачу -- базисы Грёбнера, да и вообще просто полиномиальная алгебра. В реальных задачах, хочу заметить, алгебраические структуры гораздо сложнее простых полиномов. http://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
Ну во-первых, Матлаб -- это в основном численные расчеты матричной алгебры, а я имел в виду (максимально упрощу) символьную аримфетику. Численный счет предполагает счет с некоторой точностью (ошибки округления и т.д.). Численный счет на матрицах в Матлабе организован библиотечкой LAPACK с древними, проверенными временем алгоритмами, написанными на FORTRAN. Я, кстати, повторюсь, численный счет вообще не упоминаю, я говорил о неограниченной точности и нечисловых алгебраических структурах. Во-вторых, некоторые элементы символьной арифметики в Матлабе реализуются библиотекой от Maple V. Ну а в Мэйпле последних версий, кстати, вычисление инволютивных базисов Грёбнера реализовано моим коллегой и бывшим научруком Другим коллегой организованы те же самые алгоритмы инволютивных базисов для системы Singular. То есть, говоря о том, где проще считать, подумай: кто и как организовал этот счет
То есть как это не говорил? Кто предлагал ограничиться в дискуссии платформой win32? А если мое базовое направление -- *.nix, так мне и в дискуссию не вступать? |
| Автор: Romikgy 24.11.2006, 11:42 | ||||||||||
| Artemios, ты мои посты нормально читаешь? или через строку? об этом и я упоминал
при чем здесь шаблоны( их вообще нет в дельфи) аргументы , тогда ваших слов о слабости дельфи в математике?
уже простая еще раз повторюсь этим базисом ни дельфи ни си не ограничивается, и не надо притягивать весь смысл языков только к решаемой вами проблеме!
имхо матлаб на много расчитан( хотя я в нем и не спец) символьная арифметика это что?
поздравляю вас с таким научруком
Вы название темы видели? и какое отношение дельфи имеет к юниксу? |
| Автор: Alexeis 24.11.2006, 11:58 | ||
Тогда некорректно говорить о приемуществах. Нужно сравнивать одинаковые вещи. Т.е. либо языки программирования либо конкретные среды разработки. Если сравнивается Делфи, то ее нужно сравнивать со конкретной средой разработки. Поскольку Делфи компилит под винду, то логично сравнивать с компилятором С++ под винду, иначе вопрос перейдет из категории компиляторов в сравнение ОС. Так что замечание по существу. |
| Автор: Void 24.11.2006, 16:59 | ||
Romikgy, я поражаюсь, вот умные вещи часто говоришь, а про существование гугла забываешь. http://en.wikipedia.org/wiki/Symbolic_mathematics
И кто же это делает? Я не пойму, вроде сошлись на том, что на танке в магазин ездить не стоит, но ты продолжаешь доказывать, что Дельфи просто обязан рулить во всех областях. А аргументы продолжают водить хоровод вокруг тезиса «всё можно написать на всём» — тезиса в принципе справедливого, но на практике никого не волнующего. |
| Автор: Romikgy 24.11.2006, 17:44 | ||||||||||
Void,
каюсь
не стоит, хотя идея оригинальная, надо будет знакомым воякам подкинуть
где я говорил что дельфи обязан рулить ? чет не помню ( и я немного другое пытался объяснить, видать не поняли
вот видишь сам все и сказал, на практике, большинство пишут на том что ближе им, а не на том что лучше для задачи! а написать можно на всем( почти) Добавлено @ 17:55
http://www.svoboda.org/programs/sc/2002/sc.012902.asp причем было упоминание о символьной математике , я вообще терь понять не могу? к какому боку? |
| Автор: MAKCim 24.11.2006, 18:09 | ||||||
области применения С/С++ - системное программирование, программирование микроконтроллеров - разработка прикладных программ разной направленности 1. CAD-ы (AutoCad, ...) 2. Программы для работы с графикой (всякие GIMP-ы, Photoshop-ы) 3. Обработка звука, работа с графикой, видео - Игры - ... Хоть что-то попадающее в эти пункты на Delphi написано?
Надоели заявляения о том, что если кто-то чего-то не может понять/написать/сделать - то это плохо
Я же сказал, абсолютно все (в рамках синтаксиса конечно) дозволено в С, С++ более строг, но это не мешает при желании что-нибудь этакое замутить
пространства имен inline-функции модификаторы volatile, register, restrict (c99) friend-функции, методы объединения sizeof, typeid, typeof (gcc) ... |
| Автор: Alexeis 24.11.2006, 18:26 |
Все кроме |
| Автор: MAKCim 24.11.2006, 18:27 |
| alexeis1, пример, если не трудно |
| Автор: Artemios 24.11.2006, 18:52 | ||||||||||||||||||
Хм... Придется вернуть вопрос его же автору, ведь:
из контекста понятно, что я говорил не о дельфи. Ну и опять же повторю цитату:
Напомни, когда я говорил, что задача сложная? Хотя да, решить ее в рамках дельфи -- сложновато будет, тем более с ограничениями по объему кода и скорости выполнения
Я разве говорил, что ограничивается? Ты просил доказательств неприспособленности дельфи для программирования математики -- в качестве доказательств я тебе привел пример задачи, на что получаю ответ, что не все, мол, крутится только вокруг моих базисов, а я все языки к ним, мол, притягиваю. Подмены не находишь? Я говорил о написании систем вроде Матлаба. Для тебя, как я понял, это пустые слова - все равно Матлаб круче
А теперь оверквотинг:
Уж не знаю теперь, что и сказать таким огрызающимся Давай попробуем заменить в моих постах слово дельфи на Kylix (кстати, Kylix использовал Qt, если не ошибаюсь) и забудем вопрос о кроссплатформенности -- много изменится? Ну или в крайнем случае, на сочетание Обжект Паскаль, раз мы не хотим компиляторы обсуждать (хотя без обсуждения компилятора не будет и разговора о скорости выполнения). Итак: Object Pascal не приспособлен к математике в той мере, в какой C++ (со всеми вытекающими следствиями). Так подойдет? |
| Автор: nerezus 24.11.2006, 19:30 | ||||
Добавлено @ 19:32
|
| Автор: MAKCim 24.11.2006, 20:27 | ||||||
нафиг оно там надо? (в смысле ObjectPascal и -> Kylix) оттого Kylix и не развивается "родное" для *NIX - C-подобное окружение ввиду исторических причин С и UNIX - неразделимые вещи Добавлено @ 20:42 кстати в список
забыл включить крайне полезную фичу C99 - массивы переменной длины
такого в Delphi точно нет, а вещь полезная (странно, почему этого раньше не сделали, реализовать то легко, быть может в новом стандарте С++ появится) |
| Автор: SergeCpp 24.11.2006, 20:57 | ||||
http://www.itworld.com/AppDev/710/lw-02-stroustrup/
|
| Автор: skyboy 24.11.2006, 21:19 | ||
уж не такое ли ты имел в виду? |
| Автор: Romikgy 24.11.2006, 21:19 | ||||||||||||
это уже намного лучше чем раньше и согласен с alexeis1 только еще имхо что подразумевать под системным программированием, если драйвера это системные , то на дельфи их можно написать и про контроллеры, мобилки это контроллеры?
к чему это?
если к этому , то смысл имхо я другой немного вкладывал! В дельфи этого нет есть еще с турбо паскаля 7, только немного в другом ракурсе юзается этого нет, да и имхо область применения их слегка спецефична нет есть сайз оф есть , а на счет типов имхо тоже есть , конкретнее посмотреть нужно поищу причем здесь питон к дельфи и си?
имхо я об этом уже писал выше
массивы переменой длины есть , только используются по другому |
| Автор: MAKCim 24.11.2006, 21:23 |
| SergeCpp, спасибо и где ты только находишь это все, причем в тему |
| Автор: Daevaorn 24.11.2006, 21:25 |
На стеке?! |
| Автор: Romikgy 24.11.2006, 21:39 | ||||||||||
| Artemios, терь отвечу Вам , ибо у Вас также ответ большой это я понял , просто я говорил раньше , что шаблонов нет в дельфи , и тогда как можно сравнивать то что есть и того чего нет? Имхо это недостаток дельфи , но он не сметрелен!
Я уже отвечал , что переписывать все на дельфи очень много , и мне не интересно, это делать ради переубеждения, приведи кусок кода базисов, который на твой взгляд невозможно перевести на дельфи, имхо так проще будет разговаривать
нет не нахожу, просто помимо написания программ для матиматиков есть еще много чего где используются языки программирования, а все ваши утверждения крутятся вокруг базисов , которые кроме вас здесь мало кто знает!
хорошо солидная работа! (см. мое высказывание выше а терь успокаиваемся , и давай не будем употреблят таких слов, имхо я с вами вежливо разговариваю!
давай не будем заменять , я говорил о дельфи! и давно признано что дельфи очень слаб в никсах, и я уже об этом говорил!
неа Добавлено @ 21:40 нет динамика |
| Автор: Alexeis 24.11.2006, 21:50 |
Жутко лень искать, но попробую. Вот первое что пришло в голову всеми любимый QIP Добавлено @ 21:52 что касается игр зайдите лучше на Геймдев, там вам лучше расскажут что написали на делфи Добавлено @ 21:55 Более того я с уверенностью могу сказать что на делфи пишут даже вирусы, причем маленького размера, порядка 10-20кб. Др. Веб. часто ругается на определенные модули (удобные для вирусов.) |
| Автор: Daevaorn 24.11.2006, 21:55 | ||
Там кроме двух-трех более или менее известных игр не знают. |
| Автор: Alexeis 24.11.2006, 21:56 | ||
|
| Автор: MAKCim 24.11.2006, 22:00 | ||||||||
кажись это динамические массивы приведи asm код, сразу станет видно
вот к этому
как раз эти специфичные вещи, особенно volatile особенно часто используются в написании кода, приближенного к ассемблеру (как раз драйвера и прочие подобные вещи) как пример в ядре Linux есть такая важная (очень важная) переменная как jiffies, так вот объявлена она
при генерации кода это запрещает оптимизацию по типу "помещение значения из памяти в регистр для ускорения доступа" т. к jiffies изменяется в обработчике прерывания таймера, то использование этой переменной в цикле при отсутствии volatile даст неправильные результаты ... к чему это я |
| Автор: Alexeis 24.11.2006, 22:02 |
| Хотели графические программы, пожалуйста ArtIcons Pro ищем дальше... |
| Автор: Romikgy 24.11.2006, 22:03 |
| http://www.securitylab.ru/virus/271728.php |
| Автор: Alexeis 24.11.2006, 22:08 |
| Вот смотрим дальше всемирно известный ASPack |
| Автор: Romikgy 24.11.2006, 22:09 | ||||||
пастараюсь
ты сам занешь для чего этот параметр нужен? ответ на это после ответа на предыдущий вопрос
имхо можно правда надо будет хорошо выкручиватся, или через асм |
| Автор: Alexeis 24.11.2006, 22:12 |
| Еще системные Badcopy Pro... да много их блин, всех не перечислить. |
| Автор: MAKCim 24.11.2006, 22:16 | ||||
этот модификатор "говорит" компилятору о том, что переменная может изменяться извне, посему при операциях над ней - значение берется из памяти, а не возможное закэшированное значение из регистра Добавлено @ 22:21
Romikgy, уж извини, ты все говоришь "имхо", т. е все мои наезды я конечно понимаю, имхо, вещь хорошая, но как бы это не доказательство причем я сказал, что асм не считается, потому как это не Delphi |
| Автор: Romikgy 24.11.2006, 22:42 | ||
Я в чем то ошибся когда говорил имхо? какие именно те доказательства предоставить ? говори а я попробую тебе их предоставить без моих имхо! Согласен без асм будет трудно , но вообще то дельфи никогда и не был системным языком! он просто приобрел свойства и возможности его со временем, он задумывался как обучающий! а си и был задуман как системный! и в него это сразу заложено было , но как говорил Алекс для написания проги на С++ надо затратить больше времени чем на дельфи , хотя код будет и более оптимальный и компактный и т.п. Так что , говори на что предоставить опровержение? PS а имхо я добавляю ибо как любой человек я могу ошибатся и не скрываю это , в отличие от всех увереных |
| Автор: SergeCpp 24.11.2006, 22:59 |
![]() The original source code for the current http://en.wikipedia.org/wiki/TeX software is written in WEB, a mixture of documentation written in TeX and a quite restricted Pascal subset in order to ensure portability. For example, TeX does all of its dynamic allocation itself from fixed-size arrays and uses only fixed-point arithmetic for its internal calculations. As a result, TeX has been ported to almost all operating systems, usually by using the web2c program to convert the source code into C instead of directly compiling the Pascal code. |
| Автор: MAKCim 24.11.2006, 22:59 | ||||||
я не говорил, что ты ошибся, просто "имхо" в принципе не обязывает нести ответственность за свои слова я говорю, что без volatile или чего либо подобного, вышеприведенный код на "чистом" Delphi не напишешь ты говоришь
как? Иначе вопрос закрыт и мой тезис верен
Выше |
| Автор: nerezus 24.11.2006, 23:21 | ||
|
| Автор: Artemios 25.11.2006, 01:24 | ||||||||||
То есть ты реально считаешь, что будучи незнакомым со спецификой, и даже не понимая основных положений численных и символьных вычислений, не говоря уж о многоуровневых алгебраических структурах, можно просто в лоб переписать с одного языка на другой??? А я ведь предлагал не самому реализовать, а лишь показать мне реализацию, безразлично где найденную. Подскажу, какая здесь была ловушка. Обрати внимание на выставленное мной условие:
А теперь вспомни:
Я прекрасно понимаю, что можно для той же задачи извернуться и без шаблонов, но тогда срабатывает другая ловушка: объем кода и производительность программы. А теперь обобщу: именно благодаря наличию шаблонов C++ позволяет производить эффективное моделирование абстрактных алгебраических структур. И это не мое имхо, это положение уже много раз оговаривалось в диссертациях, защищаемых по теме компьютерной алгебры. Если хочешь, могу пару-тройку на-вскидку назвать.
Приехали. Грубостью обозвали констатацию имхо чужой грубости:
Надеюсь, дальше переходить на личности не будем? |
| Автор: Artemios 25.11.2006, 01:42 |
| [offtop] nerezus, может открыть холивар Python vs. Delphi? [/offtop] |
| Автор: Artemios 25.11.2006, 03:11 |
| P.S. Romikgy, кстати, третья ловушка касалась как раз кроссплатформенности: серьезные рассчеты делают не на PC. |
| Автор: Romikgy 25.11.2006, 12:59 | ||||||||||||||||
нет , как раз имхо и говорит о том что Я в этом уверен, и это не мнение обществености, а мое мнение и ответственость несу за свои слова Я а не кто то другой!
не каждая задача системная требует вмешательство системы в ее логику( по крайней мере по отношению к драйверам!) точнее ссылку плз!
Моя фраза была относительно языка С/С++, и незачем перетягивать одеяло на другие языки, ибо о питоне я мало чего знаю , пока.
да я так считаю, я не сильно знаком со спецификой твоей проги, но в свое время я писал прогу , грубо говоря переписывал с одного языка на другой, при этом не понимая что она делает, просто перевел код, это было очень давно , но сам смысл остался, и я считаю, что можно извратившись перевести любой код с одного языка на другой, вопрос будет только в целесообразности этого! но это сделать можно!
Вот тем более рытся по сети ради кокого то доказательства, мне совсем не улыбает! Я попросил привести участок кода, найболее тяжелого на ваш взгляд при переводе на дельфи? где он?
не всегда объем кода( увеличеный) ведет за собой снижение производительности! (впомни VCL в дельфи и прогу написаную на чистом винапи)
Вот видишь у тя все завернуто на твоих вычислениях, скажи много ли людей занимаются подобными задачами, даже на этом форуме? А терь ссылку плз Где Я Вам Грубо Ответил На Ваши Замечания????? Никогда не любил этого
Я так и не могу понять , уже то что я сказал , что дельфи не имеет кроссплатформености(серьозной) в расчет уже не идет? Просто интересно и на чем ведут серьозные расчеты? раз не на РС ? Или началось уже просто полялякать в теме? Если здесь уже никто спокойно и трезво не может обсуждать проблему, то дальнейшее обсуждение по моему не конструктивно |
| Автор: MAKCim 25.11.2006, 13:11 | ||||||||||
мэйнфреймы какие-нибудь, суперкомпьютеры другое дело, что процессоры в последних часто intel-овские, как на большинстве PC
не каждая, но признай, хотя бы на этом примере видно, что не все, что можно написать на С, можно написать на Pascal-е, и поэтому тезис
в общем случае не верен
как можно? или вопрос закрыт |
| Автор: nerezus 25.11.2006, 13:16 | ||
|
| Автор: Romikgy 25.11.2006, 13:23 | ||||||||||
дык
признаю (если только на паскале, тогда да)
нет , как раз в общем случая верен, а вот в частностях не верен
с использованием рук и головы, и много времени
А если не знаешь дельфи , тогда нечего выступать при обсуждении дельфи, Ты меня где видел в ветках по питону? Ибо чего не знаю , о том не говорю! Если ты действуешь по другому принципу, то нам с тобой не о чем говорить! |
| Автор: MAKCim 25.11.2006, 13:25 | ||||||||
проблемы нет хорошо, допустим Delphi по возможностям сопоставим с С++ (в конце концов любой шаблон можно представить в виде обычной функции/класса ...) значит каждый элемент множества возможностей С++ поставлен во взаимно-однозначное соответствие элементу из множества возможностей Delphi элемент из С/С++ volatile не имеет (ждем опровержения) соответствия в Pascal/Delphi, значит верна гипотеза
Добавлено @ 13:31
да, согласен, но сути это не меняет это как аналогия с программой - ее нельзя считать правильной если в общем случае она работает, но иногда непонятно почему валится
ну вот, классный алгоритм действий а все таки |
| Автор: Romikgy 25.11.2006, 13:43 |
подумаем над этим имхо кординально меняет! интересный рецепт |
| Автор: Artemios 26.11.2006, 05:06 | ||||||||||||||
Ловушка No 2, касательно языка. А также пока неопровергнутое доказательство MAKCim о языковых возможностях.
Вспоминаем, что говорил я не о некоторых участках кода, а об общих принципах. Кусок кода бессмысленен без рассмотрения всего комплекса кода/алгоритмов/специфики. В противном случае я бы мог потребовать произвести перевод например такого куска:
Конечно не всегда. На АСМ-е вообще все летать будет. После того, как кончится кодинг и дебаг. Опять же, ловушка No 2 -- объем кода пропорционален времени работы программиста.
Все та же подмена, изначально твой вопрос звучал примерно так: чем дельфи не подходит для математики? -- в этом ключе я и пытаюсь вести разговор, а ты переводишь тему на вопрос: а кому это нужно? -- отвечая на последний могу лишь сказать: из тех, кто программирует на дельфи, наверно никому.
А здесь уже не вопрос о приспособленности дельфи, как языка, к абстрактной математике, а вопрос о приспособленности дельфи, как компилятора, к прикладной математике. В общем, ловушка No 3. Чтобы завершить разговор о дельфи vs математика, у меня к тебе встречное предложение: http://www.angularem.narod.ru/stat/MesyanzhinAV.pdf лежит моя статейка, там записана пара алгоритмов в псевдокоде, буквально в несколько строчек. Не подумай, я не предлагаю тебе их реализовывать, просто ответь на вопросы: 1. дельфи способна на их реализацию в условиях, когда n и K принимают значения из достаточно широкого спектра чисел для n и структур для K, а также различных видов упорядочений на M? (обход ловушки 1) 2. в случае положительного ответа на предыдущий вопрос, что выиграет на ловушке 2 -- дельфи или C++?
А ведь мне тоже ссылок потребовать хочется |
| Автор: Romikgy 26.11.2006, 13:19 | ||||||||||||||
| Artemios, у мя сложилось впечатление , что у вы жить не можете без странно это ....
думаю над этим Я согласен , так вот я и просил кусок код реализации, наиболее трудный для переноса на дельфи
Согласен , но к чему это? особено после этих слов
в чем смысл вашей фразы о времени работы?
по моему подмены я не делаю, я пытаюсь выяснить , что невозможно реализовать на паскале, что реализовано на си! ибо это
только верхушка, и смысла большого не несет, особено о внутреней структуре! и насколько видно (хотя здесь мало показано) здесь только инициализация и вывод переменых.... А далее вы как то страно бегаете по темам
причем кроссплатформеность к реализации математики на дельфи?
посмотрю и отпишусь! мне не сильно понравилось быть тем что вы написали, и эта ссылка уже один раз приводилась. так что все таки читаете вы все не сильно внимательно! нет! |
| Автор: Artemios 26.11.2006, 18:06 | ||||
| Чесно говоря, лично я уже устал переливать из пустого в порожнее и по сорок раз цитировать себя и собеседника и по теме, и вне темы, и по переходам на личности. Поэтому остановлюсь на конструктивных моментах:
Все, ждем. |
| Автор: MAKCim 26.11.2006, 18:10 | ||
неопровергнутые доказательства реализации массивов с неконстантной верхней границей на стеке тоже нет |
| Автор: skyboy 26.11.2006, 22:43 | ||
подскажи, когда такое надобно. а то я уже и голову сломал P.S. А объект тоже можно в стек положить? |
| Автор: Void 26.11.2006, 22:53 |
В C++ — да. Хорошо это или плохо — другой вопрос. Как всегда, дополнительная гибкость порождает дополнительные возможности и одновременно проблемы. |
| Автор: MAKCim 26.11.2006, 22:58 | ||||
а то
да много где вот надо например в функции временный буфер для хранения промежуточных значений тут два решения: 1. Использовать обычный массив с константной верхней границей. Это не здорово, потому как приходится перестраховываться и делать массив чрезмерно большим, предусматривая максимальную границу 2. Динамическое выделение памяти. Тоже плохо, потому как тут другая проблема - скорость |
| Автор: Daevaorn 26.11.2006, 22:59 |
Там где размер массива зависит от входного параметра и где критичная скорость, т.к. на стеке память выделяется в разы быстрее. |
| Автор: MAKCim 26.11.2006, 23:02 | ||
Не согласен. Проблем не будет. В этом вся соль: при наличии 2-ух способов размещения всегда можно принять решение о том, каким способом воспользоваться. Так что берем их обоих вариантов только лучшее в конкретной ситуации |
| Автор: Void 26.11.2006, 23:17 |
| MAKCim, у идеального программиста проблем вообще никогда не бывает, на чём бы он ни писал Так, навскидку, проблема, порождённая исключительно возможностью размещения объектов в стеке: «срезка». Очевидная для бывалого C++ника, но лучше бы всё-таки без неё, не так ли? |
| Автор: MAKCim 27.11.2006, 13:02 | ||
главное об этой проблеме иметь представление а поначалу, я думаю, в любом языке будешь на грабли наступать. Другое дело, что где-то граблей больше, а где-то меньше (где меньше, там обычно сами языки плоские как грабли |
| Автор: Alexeis 27.11.2006, 14:37 | ||
А разве она там выделяется вообще? Просто пишем в стек и все, че ее там еще выделять? Да можно, конечно, но есть ли в этом необходимость. Реализация будет просто посложнее с использованием ассемблерных вставок, а так имея на вооружении мощный встроенный ассемблер, практически любые задачи становятся по плечу |
| Автор: SergeCpp 27.11.2006, 14:42 |
| Выделение памяти в стеке производится командой SUB SP, <desired_size> |
| Автор: Alexeis 27.11.2006, 15:30 |
| SergeCpp, |
| Автор: SergeCpp 27.11.2006, 15:31 |
![]() |
| Автор: MAKCim 27.11.2006, 16:15 | ||
любые |
| Автор: Alexeis 27.11.2006, 17:08 |
Я вообще про встроенный делфийский ассемблер, а в нем доступны не все команды ассемблера для любого процессора. Например, захочу я использовать арифметические регистры Athlon 64 (64 разрядные), ан нет ассемблер скажет хрен вам, не знаю я такого. Т.е. так в данной версии еще нет такой поддержки. Вот только теперь начинаешь ощущать прелесть машинных кодов |
| Автор: MAKCim 27.11.2006, 17:25 | ||
сомневаюсь, что можно найти компилятор, который сможет генерировать код для любого процессора GCC - это, конечно, мощь и сила |
| Автор: Alexeis 27.11.2006, 18:13 |
| Значит таки я был прав когда сказал практически любые вместо любые |
| Автор: MAKCim 27.11.2006, 18:31 | ||
неа зачем тебе, если ты, например, пишешь под IA-32 использовать команды UltraSPARC? если у тебя 32 битная версия Delphi, то, как ни крути, использовать специфичные инструкции, скажем для Athlon64, ты не сможешь, но IA-32 он будет реализовывать полностью Так что, если есть компилятор под данную платформу и в нем поддерживается встраиваемый ассемблерный код, то любая задача для этой платформы тебе по плечу |
| Автор: MAKCim 29.11.2006, 09:56 |
| Я так полагаю, делфисты поняли, что с С++ им рано тягаться и тема постепенно умерла |
| Автор: Romikgy 29.11.2006, 10:07 | ||||
я не юзаю пока линукс! но в винде вот этот код
и в любом месте с расскоментированым volatile дает одинаковый код даже на асме!!! я понимаю , что это не совсем корректно, но разработкой драйверов под винду я занимался очень слабо, и еще не разу не видел где volatile был необходим, может еще не все посмотрел! Так что имхо это не совсем правильно , но это ответ , изменения асм кода, от присутствия и отсутствия volatile нет! |
| Автор: Alexeis 29.11.2006, 10:15 | ||||
Да нет, просто мой пост уже кто-то снес или инет заглючил
Это же было только пример, это не единственное чего не поддерживает встроенный ассемблер. |
| Автор: SergeCpp 29.11.2006, 10:26 |
![]() http://ddj.com/dept/cpp/184403766 Andrei Alexandrescu |
| Автор: MAKCim 29.11.2006, 10:27 | ||
все корректно просто volatile гарантирует получение значение из памяти в его отсутствии такой гарантии нет Добавлено @ 10:28 SergeCpp, как всегда в тему |
| Автор: Romikgy 29.11.2006, 10:32 | ||||||||
асма там много , а вот пас код пазям
ReallocMem и GetMem работа с дин памятью Добавлено @ 10:35
а почему тогда гарантии нет? SergeCpp, полистаю спб |
| Автор: SergeCpp 29.11.2006, 10:37 |
![]() http://erdani.org/book/main.html by Andrei Alexandrescu |
| Автор: MAKCim 29.11.2006, 10:39 | ||||||||
вот например такой код
компилятор мог бы оптимизировать так
в случае
будет так
|
| Автор: Romikgy 29.11.2006, 10:40 |
| SergeCpp, это к чему? |
| Автор: MAKCim 29.11.2006, 10:40 | ||
если компилятор шибко умный возможно кэширование в регистре, что не всегда желательно |
| Автор: Romikgy 29.11.2006, 11:04 | ||
пример можно? Добавлено @ 11:18 MAKCim, давай раз уж мы говорим о дельфи и С++ (то подразумеваем , что все на платформе вин32) то будем асм приводить не так как это делается в юниксе , мне мало чего понятно из твобою приведеного кода! и плюс
проверял на с++ билдере! |
| Автор: Romikgy 29.11.2006, 11:27 | ||
вот код аналогичный твоему вот что дал асм билдера как видишь разницы нет |
| Автор: MAKCim 29.11.2006, 11:40 | ||||||||||
какой пример тебе нужен? все зависит от компилятора, НО voaltile гарантирует поведение аналогичное 2-му ассемблерному листингу этого поста
а где-то будет разница, неужели это не понятно? |
| Автор: SergeCpp 29.11.2006, 11:49 | ||||
А это не отладочная ли была компиляция?.. ![]() А вот VC++ 6 — Release (оптимизация включена)
|
| Автор: Romikgy 29.11.2006, 12:25 |
да , ну и что оптимизация была включена! MAKCim, спасибо за перевод, но всеравно смысл этого volatilе не велик , в некоторых случаях без него никуда, но этих случаев очень мало, дабы считать их кардинальными интересно было почитать, но имхо использование мутексов и иже с ними более безопасный способ использования чем volatile( чисто мое мнение , когда много потоков на одном проце такая вещь еще и может пройти , но если будет много процессорный комплекс , тогда не спасет и прямое обращение к памяти, и надо будет юзать именно мутексы, так что я считаю что в многопотоковых приложениях это как разминка ума , как можно сделать без синхронизации, но на реальных проектах, можно будет наступить на большие грабли, и я говорю что лучше юзать мутексы ,чем volatile , IMHO) Добавлено @ 12:28 преймущество С++ перед Дельфи А где то нет (это к возврату к теме обсуждения) |
| Автор: Romikgy 29.11.2006, 12:44 | ||||
прочитал , эту белеберду, осилил, но понял меньше четверти а что либо писать с нуля , я просто не в состоянии понять что имено надо написать, я эту хрень и на С++ тоже не напишу, и в матлабе даже так что ваши фразы с ловушками и без них мне ничего не говорят. Так что ув. Artemios предоставьте код на си и я посмотрю, реально ли его переписать на дельфи, ибо здесь уже приводился код который говорили что нельзя написать на дельфи Жду ваш код, и не только его объявления Добавлено @ 12:47 дык сделай что то типа такого
или вывод на консоль добавь , вкл фантазию |
| Автор: MAKCim 29.11.2006, 21:04 | ||||
согласен, что случаев его применения меньше, чем всего остального, но именно его применение обычно реализует правильную логику работы всей программы (в качестве примера все та же jiffies)
в принципе согласен, это все таки не то применение, для чего эта возможность создавалась (хотя применение volatile в таком контексте - показатель все мощи этой штуки |
| Автор: Romikgy 29.11.2006, 21:12 |
этого нет в виндовсе пример из винды есть? PS так что в конце выяснили, что преимущества С++ перед Дельфи есть , но они не существены, правильно? |
| Автор: MAKCim 29.11.2006, 21:25 | ||||
неа это только один пример был им дело не ограничивается где пространства имен? где static-данные внутри функций/методов? (шаблоны не упоминаю), где explicit-конструкторы? где mutable-данные классов/структур? где явная спецификация исключений метода/функции? где placement new? где константные методы? где макросы и условная компиляция? (это, конечно, прямо к языку не относится, но все же)? где private, protected наследование? где множественное наследование? (только не надо говорить "на фига оно нужно", это уже другой вопрос) Добавлено @ 21:26
открой исходники думаю, 100% найдешь |
| Автор: Romikgy 29.11.2006, 22:13 | ||
это уже обсуждалось выше, и ответ был дан, что то есть , чего то нет, но это все не смертельно , и то что реализовано на С++ имхо можно положить на дельфи! правда где то что то удобно делать на С++ , а что то на Дельфи (кса тоже повторяюсь) особено если смотреть по времени затраченому програмистом у мя его нету дай а? |
| Автор: MAKCim 29.11.2006, 22:37 | ||||||||
вообще то это была шутка или ты тоже шутишь?
ладно, пространств имен нет, а остальное? где обсуждалось? насколько я знаю, ничего из вышеперечисленного в Delphi нет, но могу ошибаться
так же как volatile?
мы Delphi рассматриваем неразрывно с IDE? Тогда и С++ надо рассматривать в том же контексте если брать чисто языки - С++ и Delphi (aka ObjectPascal) и, например какие-нибудь их компиляторы (для красоты - без GUI),то, думаю, на С++ все будет удобнее, имхо |
| Автор: Romikgy 29.11.2006, 22:50 | ||
а надо расшифровывать? дык если надо завтра подробнее напишу, что есть чего нет
оки скажи аналог иде для С++, в котором также удобно работать как и в Дельфи(кроме билдера) |
| Автор: MAKCim 29.11.2006, 23:29 | ||||||
ну судя по смайлу ...
давай
почему не билдер? |
| Автор: Romikgy 30.11.2006, 00:04 |
ибо это тот же дельфи только на С++ завтра и что по нему судя? |
| Автор: Artemios 30.11.2006, 05:07 | ||||
И кто тут так настойчиво требовал уважения к собственной персоне?
Ну и опять же, ты не понял, что я пытался сказать об общих принципах. Алгоритмы общие для широкого класса алгебраических структур -- по этим структурам произведена параметризация и пишутся шаблоны. Допустим, есть шаблон класса с тремя параметрами и допустим, для каждого параметра у нас заготовлено по пять реализаций. Теперь представь, что в отсутствии шаблонов для каждой комбинации фактических значений параметра мы пишем отдельный класс. Сколько будет таких классов? Правильно, 5^3=125. Другой вариант, когда пользователь будущей библиотеки захочет применить стандартный алгоритм для собственных структур. Элементарно, он пользуется библиотекой шаблонов и компилирует свою программу под свои собственные расчеты. Хорошо, допустим, разработчик, неимеющий шаблонов, вспомнил про основы ООП и описал для каждой пятерки базовый класс. Кажется все замечательно, но только что будет с производительностью при полиморфизме времени выполнения? Учитываем, что параметрами шаблона были описаны низкоуровневые алгебраические структуры, и в ходе работы алгоритма на этих структурах производится не одна тысяча операций. Вывод: без шаблонов конечно написать можно (я и не говорил, что нельзя принципиально), но только будет это неоптимально по объему написанного кода и/или неэффективно по времени выполнения. Это что касалось шаблонов. Теперь о самих низкоуровневых алгебраических структурах. Например, я хочу использовать рациональные числа неограниченной точности. Для C/C++ есть билбиотека gmp (http://www.swox.com/gmp/). Реализован ли на object pascal какой-нибудь аналог для целых чисел произвольной длины и дробях на них, сопоставимый по производительности? Лично я видел только порт на дельфи все той же gmp, и врятли порт будет эффективней. Ну хорошо, gmp написана в перемешку с ассемблером, переформулирую вопрос: есть ли сопоставимый по производительности аналог, реализованный на object pascal + asm ? Нет. Ну и, так требуемый тобой http://www.angularem.narod.ru/stat/example/monom_dp.h чуть побольше предыдущего. Это частичная реализация другой низкоуровневой структуры -- мономы (те самые, которые описывались в первых строчках моей статьи). Для конкретного упорядочения мономов deg_rev_lex. Из этого кода не видно, менеджер памяти для мономов, да и вообще для большинства структур в моей библиотеке, реализован на http://gee.cs.oswego.edu/dl/html/malloc.html. Ну и тут же вопрос о сопоставимых по эффективности распределениях памяти. Знаешь, я не сомневаюсь, что ты сие можешь переписать на дельфи P.S. А вообще, я не знаю ни одной системы компьютерной алгебры, написанной на object pascal. В основном как-то C, C++, Fortran, Lisp-подобные, и их комбинации c ASM ... P.P.S. Да, и обращайся ко мне на "ты", а то как-то коробит. Все-таки ровесники |
| Автор: Romikgy 30.11.2006, 10:45 | ||||||||||
А терь точнее , или я своими высказываниями лично вас чем то оскорбил?
ибо часто юзал было бы лучше, потому как подразумевается, что вы говорите одно , а подразумеваете другое, ибо это ловушка и ее надо найти! терь я понял довод и согласен с ним, имхо можно было тоже сказать в первых постах, и я бы понял, а так базисами пролялакали столько постов и смысл получили только теперь! опасно такое делать имхо! ибо юзер может применить стандартные алгоритмы не правильно (примени сортировку целых чисел , на строке чтополучится?)
Еще раз повторюсь не всегда меньший объем кода это меньший размер программы, в твоем контексте(задаче) скорость разработки и написания кода будут выше, но есть и другие задачи где это может и не выполнятся!
понятия не имею!!! ибо вы работаете с этими дробями вам это близко и вы искали это, а для меня это это чушь , которой я пользоватся никогда не буду, и я его не искал! Есть еще примеры проблем перевода С++ на дельфи, кроме ваших дробей? (я еще не смотрел тот заголовочный файл предоставленый вами)
Посмотрим, и имхо даже ровестики должны уважать собеседника, и разговаривать без наездов, имхо. |
| Автор: Romikgy 30.11.2006, 11:04 | ||||||
этого нет (лично я и смысла большого в нем не вижу) вроде не видел нет нет (имхо из за того что нет перегрузки операторов , в частности присвоения) нет (тоже не понятно для какой цели придумали) это не совсем понимаю, поясни это плз можно , но не так как в С++ может и не то
макросов имхо нет, а условная компиляция есть (исходник Indy это хорошо подтверждает) нет имхо частичтно можно реализовать на интерфейсах Добавлено @ 11:09
и что в этом исходнике сложного для переписания на дельфи? единственое мне не известное это static Allocator *allocator; что есть слово с большой буквы? А все остальное ничего сложного, кроме тех деталей которые не реализуемы на дельфи (типа перегрузки операторов) И кса в исходном коде нет шаблонов!? |
| Автор: MAKCim 30.11.2006, 16:54 | ||||||||||||
бывает ...
явное указание того, какие исключения может бросить функция/метод
частично не считается интерфейсы можно реализовать с помощью множественного наследования, обратное, имхо, не верно
однако сама функция осталась то неконстантной
при чем тут перегрузка? |
| Автор: Romikgy 30.11.2006, 17:54 | ||
сиба да, а что нельзя обойтись без константных ф_ций? да точно чет не туда занесло |
| Автор: MAKCim 30.11.2006, 18:08 | ||||
просто есть перегрузка по константности - очень хорошая вещь
Добавлено @ 18:09 вообще, респект тебе, Romikgy один тут остался и мужественно отбиваешься от злостных С/С++-ов по теме признай, далеко не все можно реализовать на Delphi, что можно сделать в С++ - причем не второстепенные вещи, а те, которые реально применяются при программировании |
| Автор: skyboy 30.11.2006, 18:14 | ||
В Delphi не допускается множественное наследование классов, окромя интерфейсов - класс вполне может наследовать несколько интерфейсов. А как это "интерфейсы можно реализовать с помощью множетсвенного наследования"? Не знаю, как "у вас в С++", а "у нас в Delphi" интерфейсом называется полностью абстрактный класс(ну, когда только объявления методов + объявление свойства). А как можно "реализовать абстрактный класс при помощи множетсвенного наследования" я не представляю Добавлено @ 18:24 хорошая вещь, когда сама перегрузка есть, правильно? |
| Автор: MAKCim 30.11.2006, 18:29 | ||||||||||||
а я не понял причем тут абстрактный класс ко множеств. насл. пардон, понял вместо
читать
А у нас интерфейс - класс, оторый содержит только чисто-виртуальные методы Формально - это класс, но фактически его можно считать интерфейсом за не имением отдельной концепции интерфейсов в С++
Добавлено @ 18:30
нет это просто был хороший пример использования |
| Автор: Alexeis 30.11.2006, 18:42 | ||
Ну интерфес в делфи это скорее не объект, а его описание. Что-то вроде заголовков для функций. А по поводу его отсутствия у меня большие сомнения, недавно в инете встречал код интерфеса на С++ (правда возможно это было для билдера, но точно не помню) Я бы сказал скорее так у делфи и С++ немного различаются общие концепции ООП, потому и соотвествено отличается реализация. Сишник не находит нужных ему вещей на делфи, а делфист наоборот (либо они реализованы "весьма странно"). Но реально просто несколько отличается подход к программированию. Потому делфистам не нужны все те "лишние" возможноти С++ и наоборот. Я вот, например, сейчас пишу формально на С++, но реально на делфи |
| Автор: skyboy 30.11.2006, 18:42 | ||
почему неверно? почему нельзя наследовать несколько абстрактных классов(интерфейсов - мне так привычнее называть), делегировать реализацию - и получать практически то же, что и при "прямом" множественном наследовании, затрачивая усилия на несколько дополнительных строк кода, но обходя подводные камни вроде.. а, забыл, как называется ситуация, когда Б и В - наследники А, а Г - наследник Б и В и получается конфликт наследования методов/свойств |
| Автор: Alexeis 30.11.2006, 18:46 |
| Спор о возможнастях в таком контексте считаю бесполезным, потому и не участвую |
| Автор: skyboy 30.11.2006, 18:48 |
я и не называл интерфейс объектом. я назвал интерфейс полностью абстрактным классом |
| Автор: nickless 30.11.2006, 18:51 | ||
На Delphi можно решить любую реальную проблему, которую можно решить на C++ (ограничения компиляторов не считаются), но т.к. набор фич разный, то и решение будет очень разное, и не всегда эффективное. Причем это относится к обоим языкам, в Delphi тоже хватает вещей, которых нет в C++. ЗЫ И не надоело вам еще спорить |
| Автор: skyboy 30.11.2006, 18:54 | ||
это точно. "соратники" и "противники" так умело смешивают в кучу недостатки(НЕ-гибкость, НЕ-расширяемость) языка как стандарта, реализации языка, IDE и библиотек, что хочется убить себя об стену |
| Автор: MAKCim 30.11.2006, 19:05 | ||||||
знаю только одну
нет и это было показано
слегка надоело но еще могу |
| Автор: nickless 30.11.2006, 19:21 | ||||||
Какую? Сейчас на вскидку на на ум приходят: указатели на методы класса (я имею ввиду независимые от типа класса), метаклассы, initialization + finalization секторы в юнитах (ИМХО), еще че вспомню, напишу.
Решить так как в C++ != решить вообще. Delphi не разчитана на написание драйверов итд., так что volatile там не сильно нужен, но реализовать все таки можно, inline asm еще никто не отменял
Тогда я тоже немного поспорю |
| Автор: Romikgy 30.11.2006, 19:40 | ||||||
не совсем понял что хорошего в этом коде?
аналогично MAKCim
неа не признаю есть вещи которые трудно реализовать на дельфи и легко на си , так да согласен и? сцылку или пример радует есть еще порох в пороховницах, и ягоды в .... |
| Автор: MAKCim 30.11.2006, 21:24 | ||||||||||||||
я даже толком и не вспомню для чего они нужны
не, все по-новому начнется хотя ладно Как же тогда реализовать паттерн Singleton?
фишка в том, что если объект array константный, то через operator[] мы получим лишь копию объекта с заданным индексом, т. е
иначе operator[] возвращает ссылку на реальный объект, а не на копию, что позволяет писать как было показано выше мелочь, а приятно |
| Автор: Romikgy 30.11.2006, 23:07 | ||
снова все через одно место но понятно |
| Автор: Romikgy 1.12.2006, 00:18 | ||
Да интересная вещь эти синглтоны, только смысл в них, хм... даже не знаю, имхо их придумали дабы даже логику какой либо программы обезопасить в коде, только зачем? имхо если правильно продуманая логика, то синглтоны не нужны! (да и заменить можно их, правда не самим языком а возможностями системы очень просто) Добавлено @ 00:19 Имхо можно еще глобальный указатель к томуже прикрутить |
| Автор: Romikgy 1.12.2006, 00:49 |
| гы нашел кое что http://forum.vingrad.ru/index.php?showtopic=123026&view=findpost&p=932745 http://lib.profi.net.ua/doc/info_sites/visprog/books/DelphiKindom/singleton.htm |
| Автор: bel_nikita 1.12.2006, 00:57 | ||
Синглтон - это вариант глобальной переменной, но создать второй объект такого же типа нельзя. В этом собственно и вся разница. И с точки зрения клиента объект класса синглтон владеет сам собой. А применять сингл можно много где: keboard, screen, printer и т.д. Создавать вторые экземпляры таких классов неразумно, а порой и abnormal operation. |
| Автор: nickless 1.12.2006, 01:16 | ||||||
Ну правильно, а дельфисты без шаблонов спокойно обходятся :-)
http://delphi.about.com/od/oopindelphi/a/aa010201a.htm Опишу, как в Delphi (VCL) реализована работа с разными графическими форматами, там используется все фичи, о которых я писал Так вот, в graphics.pas декларированы классы TBitmap, TGraphic, TPicture и еще несколько. TGraphic это абстрактный класс с общим для картинок интерфейсом, типа читать/писать из файла/стрима, рисовать себя на канве итд. TBitmap наследован от TGraphic и читает *.bmp. TPicture имеет почти тот же интерфейс, как и TGraphic, но работает с любым известным форматом, так как выбирает нужного потомка TGraphics из известных. Работает это примерно так: в секции initialization потомка TGraphics вызывается функция из graphics.pas, которая регистрирует новый формат. Когда TPicture надо открыть файл, она перебирает все форматы, вызывая статический метод, который возвращает nil если формат не поддерживается, или метакласс TGraphicClass (= class of TGraphics). С помощю этого метакласса TPicture создаёт нужный класс, примерно так (код не из graphics.pas):
Это можно реализовать на C++ с помощю Factory pattern, но не так элегантно и коротко А вот что ИМХО нельзя реализовать, так это удобное использование, если например хочется поддержки png, gif, tiff итд, надо скачать что-то типа TPNGGraphic, TTIFFGraphic, TGIFGraphic и просто добавить их в uses, и все компоненты VCL (и собственные), использующие TPicture начнут поддерживать png, tiff, итд без переделок в коде. Ну а указатели на методы классов (events) используются для того, чтобы все прогрессбары итд, спокойно, без изменений в коде могли показывать прогресс при открытии/записи в файл этих новых форматов. ЗЫ: Вспомнил еще одну фичу: properties ЗЗЫ: Кстати, в delphi с помощью properties реализуется различный доступ на элементы списков при чтении/записи, как в C++ operator[]-ом. |
| Автор: Artemios 1.12.2006, 03:43 | ||||||||||||||||
[offtop]
Вообще-то да. Но, надеюсь, не более я чем я вас
А что, кто-то наезжал? Или мое обращение на "ты" ты воспринимаешь как неуважительное отношение с моей стороны? [/offtop]
Так с первых постов я именно об этом и пытался объяснить, вспомни: я говорил об одном алгоритме для множества различных типов.
Также и я еще раз повторюсь, я с этим совершенно не спорил. А вот про другие задачи именно в рамках математики (мы же о математике дискуссию вели), где дельфи использовать эффективней чем с++, пожалуста по-подробней. И я говорил, что не сомневаюсь в твоих способностях переписать на дельфи. Даже объем написанного кода будет такой же Здесь другое. Посмотри, пара static методов, а вся арифметика на inline. Как я уже говорил, классы для низкоуровневых алгебраических структур самые времязатратные, на их методы приходится примерно 85-90% работы алгоритмов библиотеки. По поводу перевода кода самих методов точно утверждать не буду, только догадка. Например:
и паскалев аналог:
почему-то мне кажется, что при компиляции последний вариант даст больше машинных команд. Кста, в приведенном сишном цикле ровно в sizeof(int)/sizeof(char) раза меньше итераций, чем в переведенном варианте. (хотя, конечно, мой перевод неэффективен, возможно ты сделал бы лучше). Ну и в любом случае, ради десятка машинных команд -- делать на них call по [хз] раз в милисекунду -- непозволительная растрата.
Так я ж кажется говорил про менеджер памяти. Немножко оптимизирован для работы с большим набором мелких однотипных объектов. Ну вот он: http://www.angularem.narod.ru/stat/example/allocator.h, http://www.angularem.narod.ru/stat/example/allocator.cxx. Естественно, это низкоуровневая (в моем понимании) алгебраическая структура.
Конечно. А все, что мы на каких бы то ни было языках ни писали, в принципе реализуемо на машине Тьюринга |
| Автор: Romikgy 1.12.2006, 10:26 | ||||||||
На сегодняшний день , это уже не могут быть синглтонами, может быть более 1 клавы , экрана, и тем более принтера, имхо применение их (в данном примере) нелогично! плз сцылку, на мое оскорбление вам? (дабы не обижать остальных участников форума, буду учится на своих ошибках) ваши высказывания подводят мя к такому выводу (не последние!)
нет, обращатся можете как вам будет угодно!
с первых постов, вы слишком много употребляли слово ловушка только в последних постах, воды поуменьшилось, благодаря чему , я и понял ваши мысли Хоть чтото тема топика (кса можете прочитать сверху) не дискуссия о матиматике, а о целесообразности перехода от Дельфи на С++ (ВООБЩЕ!!!!!) и что, нет методов статик в дельфи, да и инлайн другой, имхо можно обойтись и без них! с этой точки зрения да , возможно скорость для вас и критична, но инлайн ф_ции всегда страдали одним недостатком! конечный размер довольно быстро растет!
имхо код преобразованый вами немного не корректен , и то что вам кажется только кажущимся и останитця (по минимуму в вашем коде) |
| Автор: Artemios 1.12.2006, 12:40 | ||||
Тебе же карты в руки.
Кса прочитал. По теме (ВООБЩЕ) высказался в своем первом здесь посте. А далее кто-то Я свою позицию в этом (ЧАСТНОМ) вопросе обосновал, поэтому имею право повторить свой вопрос: примеры задач математики, где использование дельфи эффективней, нежели c++ -- где? Нет -- считаем вопрос дельфи vs математика закрытым. |
| Автор: Romikgy 1.12.2006, 12:59 | ||||
хммм .... к чему бы это .... Молодец
имхо мателатика везде одинаковая, и я никуда не увиливал, имхо сложение и вычитание , везде одинаковое , вы же давите что математика в С++ круче из за присутствия шаблонов, по отношению к вашей задаче , еще раз повторюсь , математика везде одинаковая, а вот та отрасль математике о которой вы говорите, может и легче реализуется на си из за шаблонов и т.п. но это малая часть где математика дельфей страдает если так можно выразится ибо всеравно все сводится к +,-,*,/ во всех случаях!
еще раз математика (процессорная) везде одинаковая что в си что в паскале но искать что то , дабы что то даказать уж увольте! Считайте.... ваше право! |
| Автор: Artemios 1.12.2006, 13:39 | ||
необоснованно. Угу, к байтам, битам, а далее к машине Тьюринга К сожалению, мой собеседник не имеет представления о современной алгебре. Вынужден констатировать бессмысленность всего предыдущего диалога между нами. Вопрос: кой смысл было поднимать спор при отсутствии осведомленности и при нежелании обосновывать свои заявления? |
| Автор: Romikgy 1.12.2006, 13:47 | ||||
Возможно....
спор был об разности С++ и дельфи, а не о !!!!! PS очень странный ваш последний пост после по поводу темы???? |
| Автор: MAKCim 1.12.2006, 17:20 | ||||||||||
громкие заявления
GoF
Коряво, имхо nickless Сложно мне понять до конца, как там синглетон реализован (слава богу с Делфи давно не работал как то там все сложно вот вполне безопасный для однопоточного использования синглетон из 9 строчек
не придирайся к конкретным примерам по теме: любой менеджер чего-либо резонно сделать синглетоном |
| Автор: Romikgy 1.12.2006, 17:31 | ||
даже менеджер дельфи у каждого свое мнение
что мешает мне сделать singleton с1, c2 ; ? |
| Автор: MAKCim 1.12.2006, 17:35 | ||||
сделай то, что предложил nickless, прямо скажем несколько больше чем 9 Добавлено @ 17:36
private конструктор сей код не будет компилироваться |
| Автор: Romikgy 1.12.2006, 19:29 | ||
100% согласен , но можно он даже так не хочет только так
|
| Автор: MAKCim 1.12.2006, 20:44 | ||||
упс в код добавить надо
|
| Автор: nickless 1.12.2006, 21:25 | ||
В принципе там просто считаются ссылки, и объект создаётся только один раз. Кода 33 строчки, ровно в 3 раза больше чем в твоём последнем варианте |
| Автор: skyboy 2.12.2006, 09:31 |
речь шла о том, что мол, без static - полей нельзя реализовать столько полезный механизм, как singleton. Оказалось, что можно. Теперь начинаем цепляться к объему? |
| Автор: MAKCim 2.12.2006, 11:11 | ||||||||
следи за логикой
[разве я тут начал цепляться к объему? пример привел просто для сравнения]
|
| Автор: MAKCim 2.12.2006, 11:59 | ||||||
| чтобы не было непоняток, я признаю, что singleton на delphi реализовать можно, но не слишком приятно это делать Этот вопрос закрыт Пойдем дальше Насколько я знаю, union-ов в Delphi тоже нет (или я не прав), register данных тоже Прйдем по компиляторам (делфисты тоже могут использовать разные компиляторы, если поможет Покажите мне реализацию на Pascal/ObjectPascal - атрибутов (типа, переменной, функции) - offsetof-а (офигенная вещь для реализации списков) - typeof-а - именованную инициализацию полей структур с обнулением неопределенных полей (есть в C99)
- диапозоны значений в статически определенных массивах и индексированные значения
- TLS механизм (данные, специфичные для потока) (есть в С99 под видом __thread) - неконстантные инициализаторы в статически определенных массивах
- встроенный тип комплексных чисел (complex) |
| Автор: skyboy 2.12.2006, 12:10 | ||
с жесткой типизацией - и union'ы? [offtopic] мы обсуждаем недостатки, как отсутствие необходимых нам механизмов или некое неудобство в реализации и использовании их? [/offtopic]
Плиз, описывай функциональность: название мало что скажет, если нет полного аналога, а описать функциональный аналог помешает непонимание того, что же требуется(как в случае со "статическими полями класса" - полного аналога нет, но реализовать синглтон возможно). Кстати, странно для языка, в котором предусмотрена перегрузка операторов. Экземпляры комплексного типа - это ведь структура на "обычных" типах, да? В Делфи такого нет. Реализовать несложно, правда, для оперирования надо будет пользовать функциями/процедурами - перегрузки операторов ведь нет. Добавлено @ 12:13 ну, раз нет шаблонов и есть строгая типизация - на кой ляд определять тип? |
| Автор: MAKCim 2.12.2006, 12:54 | ||||||||||||||||||
это язык С, стандарт С99 (это не структура, а тип, такой же как int, long, ... , что, естественно влияет (в лучшую сторону) на скорость выполнения)
да, а что? очень удобно могу привести пример, где оно удобно в IA32 Protection Mode есть такая вещь, как дескриптор Причем дескрипторы бывают разных типов и оттого меняется назначение отдельных байтов (всего их 8) и групп байтов
теперь можно получать доступ как к словам, так и к отдельным байтам слов
и то, и то
OK offsetof
атрибуты к примеру
|
| Автор: nickless 2.12.2006, 15:45 | ||||||||||||||||||||||||||||
Union-ы вещь довольно фундаментальная, конечно есть
Опиши подробнее что они делают
__transparent_union__ - не знаю, вроде нет (дельфисты, поправте) Всякие stdcall тоже есть, а еще можно включать/выключать оптимизацию, всякие варнинги и проверки, exceptions для IO операций итд. для отдельных функций/участков кода
Вроде нет
Для классов есть RTTI
Нет, но в delphi все переменные в стеке и так обнуляются компилятором.
Нет
TLS механизм есть и всегда включен, есть threadvar для декларирования поточных переменных
Инициализаторов локальных переменных в delphi нет в принципе.
В VCL есть complex.pas, а еще в delphi есть такой тип как Variant, он может принимать любой тип, как встроенный, так и собственный. А как в C++ насчет встроенного set типа?
Или оператора with?
Насчет новых стандартов, в новых версиях delphi, 2005 и 2006 есть inline, перегрузка операторов для record-ов, for ... in и еще несколько полезных фич. |
| Автор: MAKCim 2.12.2006, 16:06 | ||||||
по возможности располагаются в регистрах, а не в памяти
встроенного нет но хочу возразить имхо, это неправильно, помещать такие вещи в язык должны существовать библиотеки, реализующие вектора, множества и пр. в С++ есть std :: set, std :: multiset
нет nickless, я смотрю, Delphi еще не совсем потерян Хорошо в Delphi по определению нет областей видимости для данных в функциях, т. к все они размещаются в начале в стековом фрейме функции. Это раз. По сути нет автоматических объектов (имею в виду объектов классов), т. к все объекты классов размещаются в heap => нет автоматического вызова деструктора объекта (или есть?) |
| Автор: nickless 2.12.2006, 16:23 | ||||||||||||
Такого нет
Если моножество состоит из сложных типов то да, а если это (Jan, Feb...) или несколько целых чисел, то встроенный тип намного эффективнее, т.к. легко оптимизируется до нескольких машинных комманд.
А то
В C++ они тоже все там находятся, это фича компилятора, но не вижу в этом ничего плохого.
Да, в delphi переменная типа класс по сути всегда указатель, но автоматизм можно реализовать например подсчетом ссылок (см. COM interfaces). Вот еще одна фича: вложенные функции/продцедуры
ЗЫ Полезная тема, а то я уже потихоньку delphi забывать стал... |
| Автор: MAKCim 2.12.2006, 16:58 | ||||||
как расширение компилятора в GCC nested functions тоже есть
плохо, что необходимо все переменные объявлять заранее потому и говорю, что
|
| Автор: nickless 2.12.2006, 17:33 | ||
Это немного неудобно, но не принципиально |
| Автор: Daevaorn 2.12.2006, 17:46 |
| А как насчет оверхеда при принудительном обнулении переменных и членов классов? |
| Автор: Romikgy 2.12.2006, 18:23 | ||||
не совсем аналог , но можно юзать enum
А точнее ? PS не один я защищаю дельфи ... PSS так че респект С++ шникам |
| Автор: nickless 2.12.2006, 18:38 | ||||
Оверхед не такой уж и большой, а объекты с кучи (вроде) не обнуляются. ИМХО инициализировать нужно вообще всегда, лучше оверхед чем мусор в переменных.
Не совсем - это очень мягко сказано |
| Автор: MAKCim 2.12.2006, 18:39 | ||||||||||
?
enum несколько другое
зачем принудительное обнуление? если переменная в стеке, т. е где то в функции, то скорее всего она используется и инициализируется (изменяется) явно. В противном случае (если не используется) обнуление - лишнее, поскольку она (переменная) не используется Итого имеем одну "лишнюю" машинную команду. В любом случае, если переменную надо инициализировать, но каким то образом это забыли сделать, то 0 - это тоже ошибка
|
| Автор: Romikgy 3.12.2006, 00:46 |
а я что сказал , что полный ? нет , но кое что и на них можно сделать в чистых сях , также все переменые надо сначало определить а потом юзать |
| Автор: MAKCim 3.12.2006, 10:52 | ||
чистые С тоже есть разные c89 (c90, ansi), modifed c90, c99 это справедливо для ansi C причем gcc выдает Warning только при включении опции -pedantic |
| Автор: Mayk 4.12.2006, 11:48 |
| Они все несовершенны. Насчет чистых си и дельфи. В дельфи есть действительно удобная вещь типа "procedure foo(a,b,c,d,e:integer)". В си ещё можно делать типа "int foo(a,b,c,d,e) int a,b,c,d,e; {hoora();}) но это а) не так удобно, так как надо писать имена переменных дважды. б) в с++ отсутствует напрочь Прадва это не спасает дельфи с его размашистыми "procedure"'ами, "begin"'ами. "end"'ами, "then"ами которые долго вводить и удалять. Хотя даже procedure не так велико, как stuct Functor{Functor(Arg arg_) : arg(arg_){}; bool operator()(A a, B b)const{return arg(a,b)} (брр). Кстати, в яве, например, с функторами несколько легче, так как можно сырцы прогнать через M4 и писать что-нибудь типа "JButton button = M4_BUTTON("OK", okClicked() )" который преобразуется в неудобночитаемое, но синтаксически верное JButton button = new JButtonDerived("OK", new ActionListener(){ public void actionPerformed(ActionEvent event){ okClicked();};}) Эдакое мелкое подобие человеческой лямбды. Бустовская λ кстати "for_each(v.begin(),v.end(), _1 = rand()) на нормальную лямбду не тянет (угадайдте, сколько разных значений будет в v, при условии что он не пуст и суть контейнер int'ов). Вообщем всё это мрачно. ps. вроде не сильно повторяю предыдущие реплики |
| Автор: MAKCim 4.12.2006, 12:38 | ||||
я думаю вопросы удобства здесь не рассматриваются (рассматривается функционал) кому то удобно одно, кому то другое
то же самое, мне и тебе не удобно Romikgy-ю, skyboy-ю - удобно |
| Автор: Romikgy 4.12.2006, 13:50 |
вкусах не спрят (с) имхo для для этого есть автозаполнение PS кса а автозаполнения в сишных средах разработки, кроме визуала и билдера, вроде нет , да и в тем что кроме , не считая билдера, ибо в нем слизано с дельфей, оно карявое имхо |
| Автор: MAKCim 4.12.2006, 17:11 | ||
О, вспомнил, в Delphi нет такой полезной для системного программирования вещи как битовая структура
|
| Автор: Romikgy 4.12.2006, 17:33 | ||
нет |
| Автор: skyboy 4.12.2006, 17:42 | ||
| MAKCim, так мы говорим про удобство или не говорим? Есть же битовые операции: сдвиг и OR/AND, при помощи которых можно осуществлять доступ к любому биту. Уверен, что при байте, как минимальной цели для адресации, работа с теми же битовыми структурами приводится к битовым операциям. Только неявно. Так тогда мы говорим только об удовтсве пользования. Даже если бы биты можно было бы передавать параметрами в функцию, чего нет, все равно работа шла бы с байтом.
|
| Автор: MAKCim 4.12.2006, 17:49 | ||
| skyboy, понимаешь в чем дело битовая структура - это часть языка, аналога которой в Delphi нет. Т. е рассматривается именно функционал а не всякие begin, end и пр., аналог которым в С - {} Добавлено @ 17:50
правильно уверен |
| Автор: VectorMan 4.12.2006, 17:56 |
| Вложу свою маленькую лепту. Дельфийский компилятор работает на порядок быстрее большинства популярных C++ компиляторов, хотя это отчасти сглаживается, если используются прекомпилированные заголовки |
| Автор: MAKCim 4.12.2006, 18:02 | ||
тесты проводили? |
| Автор: Alexeis 4.12.2006, 18:02 | ||||
Ну это не совсем так. Непосредственно к битам нет, но к байтам можно.
Все что внутри case - расположено в одом блоке памяти и может интерпретироваться как любой из перечисленых типов. Т.е. записать как строку а прочитать как славо типа DWORD или WORD. На сенгдняшний момент работа с битами является слишком медленной, а потому все оптимизируется под двойные слова. Но доступ к битам легко можно осуществить и в делфи используя битовые логические операции сдвига умножения сложения и т.д. Если вы думете что процессор способен работать с битами, то глубоко ошибаетесь, в С++ это просто более удобная запись битовых операций и не более. Ничего принципиального оно не вносит. |
| Автор: VectorMan 4.12.2006, 18:07 | ||||
Не знаю, может и проводили, просто в Delphi нет препроцессора, угадай сколько мегабайт препроцессор подсовывает компилятору при обработке строчки
|
| Автор: skyboy 4.12.2006, 18:08 | ||
неужели (не)использование структур с битовыми полями(так же, как и переопределяемых операторов) как-либо изменяет функциональность программы? |
| Автор: Alexeis 4.12.2006, 18:10 |
Гыыыы. даже спорить не хочу, быстрее и намного. Язык просто строже и ему не приходится много думать и искать по закоулкам все объявления функций и проч. Быстрее однозначно это призаный факт, с которым не поспоришь. Добавлено @ 18:25 Но мы опять откланились. Скорость компиляции это не принципиально, важно другое, то что програмированние на делфи отличается от С++ и я бы сказал, что при этом писать на нем довольно удобно. Синтаксис языка более дружественный, но подразумевает немного другую логику. Короче лучше всего не переходить с Делфи на С++, а писать только на делфи |
| Автор: skyboy 4.12.2006, 18:27 | ||
одно огорчает - скорость работы готовой программы ценится несоизмеримо выше скорости компиляции. Не знаю, насколько часто должен изменяться проект, чтоб стало наоборот |