Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 24 25 [26] 27 28 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#376
,
|
|
|
|
Цитата D_KEY @ А причем тут паскаль? Что было-то? Файл проекта или это ты так странно ответил на мои вопросы про раздельную компиляцию? эм... и то, и то. единственное, что добавилось в делфи -- возможность указать путь к сорцу модуля в выражении uses файла проекта. т.е.: ![]() ![]() uses Unit1 in "units/Unit1.pas"; и то может в паскале так тоже можно а компилятор паскаля да, "сам отследит изменения и перекомпилит нужные модули" и зависимости разрулит. |
|
Сообщ.
#377
,
|
|
|
|
Цитата D_KEY @ То есть все связи доступны по исходникам и без IDE(имея только компилятор языка Delphi), можно спокойно работать? И он сам отследит изменения и перекомпилит нужные модули? А зачем тут IDE? Конечно все связи в исходниках указаныЦитата D_KEY @ Кстати, а раздельная компиляция модулей как работает? Если один модуль зависит от другого, они могут компилироваться в произвольном порядке или модуль, от которого зависят, должен компилироваться раньше? Если какой-то из модулей изменился, то он перекомпилируется. Если изменилась не только часть реализации (implementation), но и интерфейсная часть (interface) модуля, то перекомпилируются и модули, которые непосредственно от этой интерфейсной части зависят. Остальные модули перекомпилироваться не будут. Как-то так... |
|
Сообщ.
#378
,
|
|
|
|
Цитата --Ins-- @ Если какой-то из модулей изменился, то он перекомпилируется. Если изменилась не только часть реализации (implementation), но и интерфейсная часть (interface) модуля, то перекомпилируются и модули, которые непосредственно от этой интерфейсной части зависят. Остальные модули перекомпилироваться не будут. Как-то так... Может ли модуль быть скомпилирован до того, как будут скомпилированы те модули, от которых он зависит? И реализуем ли opaque pointer (pimpl) и как? |
|
Сообщ.
#379
,
|
|
|
|
Цитата D_KEY @ Может ли модуль быть скомпилирован до того, как будут скомпилированы те модули, от которых он зависит? Не знаю, по-моему нет |
|
Сообщ.
#380
,
|
|
|
|
Цитата D_KEY @ Может ли модуль быть скомпилирован до того, как будут скомпилированы те модули, от которых он зависит? Нет. К слову, а в C++ есть подобие секций инициализации/финализации модулей? Цитата D_KEY @ И реализуем ли opaque pointer (pimpl) и как? По человечески, через интерфейсы (если правильно понял) |
|
Сообщ.
#381
,
|
|
|
|
Цитата DesweR @ Начнём стого, что в С++ нет модулей. К слову, а в C++ есть подобие секций инициализации/финализации модулей? |
|
Сообщ.
#382
,
|
|
|
|
блин
|
|
Сообщ.
#383
,
|
|
|
|
Ага. Очередное полезнейшее нововведения форума.
|
|
Сообщ.
#384
,
|
|
|
|
Цитата DesweR @ Цитата D_KEY @ Может ли модуль быть скомпилирован до того, как будут скомпилированы те модули, от которых он зависит? Нет. Плохо...Цитата К слову, а в C++ есть подобие секций инициализации/финализации модулей? В ООП класс полностью заменят понятие модуля. На эту тему можно почитать что-нибудь из теории ООП, например, Бертрана Мейера. Далее нужно только определиться с физическим размещением(файлы) и группированием(пакеты, неймспейсы). Цитата Цитата D_KEY @ И реализуем ли opaque pointer (pimpl) и как? По человечески, через интерфейсы (если правильно понял)Ну не совсем. pimpl относится к реализации уже конкретного функционала. То есть он и не мешает интерфейсам и не заменяет их. |
|
Сообщ.
#385
,
|
|
|
|
Цитата D_KEY @ Очень давно назад я говорил примерно то же. Модули в С/С++ не нужны по причине изначально наличествовавшей раздельной компиляции. В Turbo Pascal они были добавлены по причине очень большой полезности раздельной компиляции, и идея была слизана у Модулы, авторства того же Вирта. При переходе к Object Pascal изначальная концепция модулей стала избыточной, но пересмотрена не была. Получился винегрет из модулей и ООП. В ООП класс полностью заменят понятие модуля. На эту тему можно почитать что-нибудь из теории ООП, например, Бертрана Мейера. |
|
Сообщ.
#386
,
|
|
|
|
Цитата D_KEY @ В ООП класс полностью заменят понятие модуля. На эту тему можно почитать что-нибудь из теории ООП, например, Бертрана Мейера. Далее нужно только определиться с физическим размещением(файлы) и группированием(пакеты, неймспейсы). нет, ибо 1) модуль ортогонален _всем_ остальным особенностям языка, даже без ООП, 2) модуль загружается только один раз (хотя тут соответчтвие понятию синглтона) 3) имеет зависимости, которые _должен_ разрулить компилятор. (тут классы джавы еще что-то могут, но никак не С++) Добавлено Цитата Qraizer @ Очень давно назад я говорил примерно то же. Модули в С/С++ не нужны по причине изначально наличествовавшей раздельной компиляции. В Turbo Pascal они были добавлены по причине очень большой полезности раздельной компиляции, и идея была слизана у Модулы, авторства того же Вирта. При переходе к Object Pascal изначальная концепция модулей стала избыточной, но пересмотрена не была. Получился винегрет из модулей и ООП. очевидно, что Вы не понимаете модульность в принципе |
|
Сообщ.
#387
,
|
|
|
|
|
Сообщ.
#388
,
|
|
|
|
Цитата D_KEY @ Плохо... А как ты себе иначе это представляешь? Это равносильно тому, если бы модуль с ошибками можно было частично скомпилировать (т.е. с теми местами, где ошибок нет). Цитата D_KEY @ pimpl относится к реализации уже конкретного функционала. То есть он и не мешает интерфейсам и не заменяет их. По мне, так это хак чистой воды. Цитата Qraizer @ korvin, очень даже понимаю. Ну ну. Процитирую TAPL: Цитата Еще одно важное достоинство использования систем типов при разработке программ — это поддержание дисциплины программирования. В частности, в контексте построения крупномасштабных программных систем, системы типов являются стержнем языков описания модулей (module languages), при помощи которых компоненты больших систем упаковываются и связываются воедино. Типы появляются в интерфейсах модулей (или близких по смыслу структур, таких, как классы); в сущности, сам интерфейс можно рассматривать как <<тип модуля>>, содержащий информацию о возможностях, которые модуль предоставляет — как своего рода частичное соглашение между разработчиками и пользователями. Разбиение больших систем на модули с ясно определенными интерфейсами приводит к более абстрактному стилю проектирования, в котором интерфейсы разрабатываются и обсуждаются отдельно от вопросов их реализации. Более абстрактный стиль мышления повышает качество проектов. |
|
Сообщ.
#389
,
|
|
|
|
Цитата D_KEY @ В ООП класс полностью заменят понятие модуля. На эту тему можно почитать что-нибудь из теории ООП, например, Бертрана Мейера. ага, в теории и чистых ОО-языках может быть, но на практике придумывают всякие модули (Ruby), неймспейсы(C++) и пакеты (Java). Цитата D_KEY @ группированием(пакеты, неймспейсы). ага, вот оно. че ж не используют классы для группирования? Добавлено Цитата D_KEY @ Цитата DesweR @ Цитата D_KEY @ Может ли модуль быть скомпилирован до того, как будут скомпилированы те модули, от которых он зависит? Нет. Плохо...как это "плохо"? а как вообще можно использовать сущности, которых нет? как можно скомпилировать со статической проверкой модуль, в котором используются например типы, экспортированные из другого модуля? даже динамически типизированный Racket проверяет связность имен при компиляции |
|
Сообщ.
#390
,
|
|
|
|
Цитата DesweR @ Упс. Но коммент. Оказывается, вся COM, без которой Delphi жить не может, один сплошной хак.По мне, так это хак чистой воды. Цитата DesweR @ А я в ответ снова (коль с первого раза не доходит): Ну ну. Процитирую TAPL:... Цитата korvin @ Пока пространства имён не придумали, только их и использовали. Не всегда это было удобно, но всегда возможно. С пространствами имён зачастую удобнее, но опять же иногда удобнее классы.че ж не используют классы для группирования? Цитата korvin @ Знаешь, а ведь DLL существуют. Правда-правда, это не сказка. Это я про PImpl, pointer to implementation. Для проверки связности имён достаточно интерфейса, реализация потребуется линкеру, а то и ОСи. Ты просто не понял, о чём D_KEY, похоже. как это "плохо"? а как вообще можно использовать сущности, которых нет? как можно скомпилировать со статической проверкой модуль, в котором используются например типы, экспортированные из другого модуля? Добавлено И в этом смысле D_KEY прав. Т.к. компилятор Дельфи хавает интерфейс из .DCU, то он должен быть откомпилен. Плюсы с Сями хавают интерфейсы из .h, так что порядок компиляции |