Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.15;
Скачать: CL | DM;

Вниз

Runtime packages   Найти похожие ветки 

 
Германн ©   (2016-03-03 23:58) [0]

Зачем они нужны?
Теоретически понятно зачем. Практически...?
Позвольте уважаемые форумчане устроить миниопрос.
1. Кто-нибудь из вас использует в своих программах рантайм пакеты?
2. Кто-нибудь видел сторонние программы использующие Дельфийские рантайм пакеты?


 
Rouse_ ©   (2016-03-04 00:03) [1]

1 нет
2 да
Нужны для уменьшения обьема приложения


 
Inovet ©   (2016-03-04 00:16) [2]

По идее должны экономить ОЗУ при запуске нескольких разных приложений их использующих.


 
Kerk ©   (2016-03-04 00:23) [3]

Да
Да


 
Германн ©   (2016-03-04 00:24) [4]


> Rouse_ ©   (04.03.16 00:03) [1]
> 2 да

И какие?
Уменьшение объёма приложения весьма неоднозначная проблема. И ЮЗ в той теме, как грамотный специалист, об этом предупредил. Вместе с исполняемым файлом приходится тащить/распространять ещё и библиотеки. Причём суммарный объём дистрибутива в этом случае оказывается большим, чем дистрибутив программы не использующей рантайм пакеты.


 
Германн ©   (2016-03-04 00:30) [5]


> Inovet ©   (04.03.16 00:16) [2]


> Kerk ©   (04.03.16 00:23) [3]

По идее, они действительно экономят, если я (к примеру) напишу и установлю две свои программы на один компьютер. Если же эти две программы написаны разными авторами, то в виду разных версий Дельфи у этих авторов никакой экономии весьма вероятно и не будет!


 
Германн ©   (2016-03-04 00:39) [6]

2 Kerk ©   (04.03.16 00:23) [3]
Не сразу заметил, что ты и на второй вопрос ответил "Да". Тогда если не "влом" назови эту (эти) стороннюю программу.


 
Eraser ©   (2016-03-04 01:41) [7]


> Германн ©   (03.03.16 23:58) 


> Теоретически понятно зачем. Практически...?

во времена первых версий Делфи во всю еще были в ходу дискеты, так что уменьшение размера еще носило практический смысл.


 
Германн ©   (2016-03-04 01:48) [8]

Это всё дела минувших дней. Сейчас- то зачем это вспоминать?


 
Eraser ©   (2016-03-04 02:19) [9]


> Германн ©   (04.03.16 01:48) [8]

обратная совместимость. наверняка многие не поймут, если в Делфи возьмут и вот так просто отменят концепцию runtime packages, тем более, что это не влияет на традиционную сборку приложения, а является, скорее, фитчей. уверен найдется достаточно мазохистов, которые ту же локализацию через эти пакеты реализуют, да мало ли чего там.


 
Kerk ©   (2016-03-04 02:36) [10]

Да причем тут размер. DLL ведь не для уменьшения размеров придумали. А BPL - это те же DLL, но удобнее.


 
Юрий Зотов ©   (2016-03-04 06:10) [11]

Дело не только (и не столько) в размере. Плагинная архитектура - вот что просто и естественно реализуется через run-time пакеты. А это и мультиязычность, и гибкость, и наращиваемый функционал и т.д.


 
эндсоувот ©   (2016-03-04 08:45) [12]

плюс миллион других причин напрямую не связанных с экономиями памяти и вообще архитектурой.

например банальное разделение кода в античности когда про сабвершоны гиты и прочие тортойзы знали только древние гики


 
Dimka Maslov ©   (2016-03-04 10:02) [13]

1. Никогда.
2. Нет.


 
megavoid ©   (2016-03-04 10:07) [14]

Миллионы программ студии используют рантаймы, майкрософту приходится распространять библиотеки. Да даже интерпретатор PHP под windows не запускается без этого редиста, никто не мучается. К каждой версии студии свои дллки, разумеется есть версии 32, 64, встречаются и обновления в виде sp1 sp2 sp3. Можно мне возразить - дллки libc не то же самое, что и bpl - да, не то же самое, но суть одна - кому-то так удобней, кто-то пользуется.


 
megavoid ©   (2016-03-04 10:08) [15]

1 никогда
2 да


 
Pavia ©   (2016-03-04 10:13) [16]

Нет
В реальных нет. В качестве примера в статье Да.


 
Rouse_ ©   (2016-03-04 21:04) [17]


> Германн ©   (04.03.16 00:24) [4]
> И какие?

Ну тут очень просто - если ты разрабатываешь хороший такой пакет приложений, то при использовании рантайма - ты сэкономишь достаточно солидный размер из-за того, что повторяющийся код будет вынесен.
Естественно это не 1-2 экзешника и пара библиотек, а начиная от десятка оных (грубо - комплекс).
Есть ли в этом смысл сейчас - не знаю, никогда этим не занимался и заниматься не буду.
Но видел такие продукты


 
Rouse_ ©   (2016-03-04 21:07) [18]


> Юрий Зотов ©   (04.03.16 06:10) [11]
> Дело не только (и не столько) в размере. Плагинная архитектура
> - вот что просто и естественно реализуется через run-time
> пакеты.

Позволю себе возразить - BPL это самый простой способ убить хорошую идею с плагинами :)


 
Германн ©   (2016-03-05 00:55) [19]


> Kerk ©   (04.03.16 02:36) [10]
>
> Да причем тут размер. DLL ведь не для уменьшения размеров
> придумали. А BPL - это те же DLL, но удобнее.

BPL - это те же DLL, но с одним существенным недостатком. Они зависят от версии Дельфи, на которой они созданы. И следовательно могут быть использованы только в ПО созданном на той же версии Дельфи.
Собственно я знаю только одну среду разработки, в которой активно использовались RT-библиотеки. Это Visual Basic. Лет надцать назад, когда моя дочка была ещё маленькой, а компьютер дома был только один, а игрушек написанных на Visual Basic в интернете предлагалось море, я видел на компе туеву хучу библиотек от разных версий Бэйсика.


 
Eraser ©   (2016-03-05 01:00) [20]


> megavoid ©   (04.03.16 10:07) [14]


>  никто не мучается.

спорное утверждение.


> К каждой версии студии свои дллки, разумеется есть версии
> 32, 64, встречаются и обновления в виде sp1 sp2 sp3.

это называется словом мрак. практически все более менее серьезные программы и игрушки тянут за собой эти RT библиотеки, это не нормально.


 
Германн ©   (2016-03-05 01:07) [21]


> Rouse_ ©   (04.03.16 21:04) [17]
>
>
> > Германн ©   (04.03.16 00:24) [4]
> > И какие?
>
> Ну тут очень просто - если ты разрабатываешь хороший такой
> пакет приложений

Такой пакет приложений я разрабатывал для карбюраторных заводов России.
Только экономии особой я как-то и не заметил. Экономия в оперативке будет если одновременно буду работать много приложений из этого пакета. Чего у меня не было.  Экономия на HD конечно будет всегда, но когда мы из раза в раз отвечаем на вопросы новичков о "!слишком большом" размере программы на Дельфи, как-то неестественно самому при этом экономить несколько десятков мегабайт.


 
Германн ©   (2016-03-05 01:13) [22]

Единственно в чём я не уверен - это отладка пакетов. Может быть разделение пакета на RT и DT пакеты помогает при отладке. Но вроде не помню, чтобы ЮЗ советовал мне такое разделение сто лет назад, когда я испытывал проблемы с отладкой своих первых пакетов.


 
Юрий Зотов ©   (2016-03-05 11:46) [23]

> Rouse_ ©   (04.03.16 21:07) [18]
> BPL это самый простой способ убить хорошую идею с плагинами


Интересная мысль. Пояснения будут?

> Германн ©   (05.03.16 01:13) [22]
> разделение пакета на RT и DT пакеты помогает при отладке


Разделение пакетов позволяет:

1. При компиляции без пакетов - не включать в EXE ресурсы, которые нужны только в DT (например, иконок компонентов).

2. При компиляции с пакетами - не таскать вместе с EXE пакетов, которые нужны только в DT.


 
Rouse_ ©   (2016-03-05 12:56) [24]


> Юрий Зотов ©   (05.03.16 11:46) [23]
> > Rouse_ ©   (04.03.16 21:07) [18]
> > BPL это самый простой способ убить хорошую идею с плагинами
>
> Интересная мысль. Пояснения будут?

Конечно.
Плагин это то, что может добавить любой сторонний программист к нашему приложению (как правило посредством Plugin SDK), но раз уж рассматриваем BPL то:
1. Замечу - сторонний.
2. Замечу - не обязательно пишуший код на Delphi.

Теперь ситуация - допустим у нас есть приложение и к нему сторонними программерами написано 100 плагинов (мы их уговорили писать только на нашей версии Дельфи).
И вот мы переходим на новую версию и... и все эти плагины моментально отваливаются.

Наши действия? Обзванивать всех разработчиков плагинов и просить их тоже купить новую версию дельфи?

Действия пользователей?


 
Rouse_ ©   (2016-03-05 14:04) [25]

ЗЫ: вот к примеру один из вариантов наших плагинов, для подгрузки данных из сторонних форматов: http://ftp.grandsmeta.ru/grandsmeta/utils/gspluginsdk.rar

Достаточно просто и элегантно сделано, и заметь - никаких BPL :)


 
DVM ©   (2016-03-05 14:31) [26]


> Rouse_ ©   (05.03.16 14:04) [25]
> ЗЫ: вот к примеру один из вариантов наших плагинов, для
> подгрузки данных из сторонних форматов:

А кто-нибудь, писал плагины на С++ или С по вашему SDK.
Мне кажется проблемы с выравниванием будут.

Например,
TPluginInfo объявлена как упакованная в PAS файле, в тоже время в H файле про упаковку или выравнивание ничего не сказано.


 
Rouse_ ©   (2016-03-05 14:57) [27]

Попробуй ее выровнять по другому :) 4 байта + 4 байта + 4 байта :)


 
Rouse_ ©   (2016-03-05 15:00) [28]

ЗЫ: и да, конечно писали и пишут - как правило ребята из IT отделов госструктур типа РусГидро, НорНикель и т.п.


 
ВладОшин ©   (2016-03-05 15:19) [29]

0
1

ps
ранее сами делали dll с пакетами, когда в отделениях по РФ были модемы на 14400 - хоть какой-то был шанс у них стянуть обновление.
Сначала туда отсылался комп полностью настроенный. потом они докачивали изменения. Потом так было, потому что так было всегда, что-то менять дорого становилось. Сейчас не используется, у всех интернет стал толстый, и таки и сделали как-то однажды монофайлно.


 
Юрий Зотов ©   (2016-03-05 15:57) [30]

> Плагин это то, что может добавить любой сторонний
> программист к нашему приложению


Слишком узко. Плагин - это то, что изменяет функционал приложения без его перекомпиляции. И пофиг, кто этот этот плагин написал.


 
Rouse_ ©   (2016-03-05 16:08) [31]

Полностью согласен, Юр, я именно об этом и написал :)


 
DVM ©   (2016-03-05 16:17) [32]


> Rouse_ ©   (05.03.16 14:57) [27]
> Попробуй ее выровнять по другому :) 4 байта + 4 байта +
> 4 байта :)

В данном случае это просто везение. Я не конкретно об этой структуре.
Вы объявляете структуры packed в PAS файле, но не пишете #pragma pack в C. Это приведет к ошибкам рано или поздно, мое мнение.


 
DVM ©   (2016-03-05 16:24) [33]


>  Rouse_ ©

Плюс в сишном варианте используется int как эквивалент паскалевского integer.
Если за паскалевский вариант еще более-менее я могу ручаться, то ручаться за то, что int будет равен 4 байт нет. int32_t был бы значительно лучше в этом качестве.


 
Rouse_ ©   (2016-03-05 16:28) [34]

Приложение 32 бита, сложно собрать и подгрузить 64 битную библиотеку в 32 битное приложение.
Все работает и не первый год :)


 
DVM ©   (2016-03-05 16:38) [35]


> Rouse_ ©   (05.03.16 16:28) [34]


> Приложение 32 бита, сложно собрать и подгрузить 64 битную
> библиотеку в 32 битное приложение.

Да я верю :)
Но разрядность тут не при чем. Компилятор при чем. Стандарт C89 требует лишь, что бы
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Про размер int (32 или 64 не говорится).


 
Kilkennycat ©   (2016-03-05 16:43) [36]


>  int32_t был бы значительно лучше в этом качестве.

ну дык когда размер имеет значение, так и пишут. Хотя мне влом, слишком многа буков.


 
DVM ©   (2016-03-05 16:48) [37]


> Kilkennycat ©   (05.03.16 16:43) [36]


> ну дык когда размер имеет значение

В данном случае это API. А в API все имеет значение.


 
Rouse_ ©   (2016-03-05 17:32) [38]

Дим, ты не выпендривайся, ты пальцем покажи на пример кода, где с нашими заголовками прозойдет рассинхрон по выравниванию :)
А муколатуру я и сам читал, и в курсе о чем ты говоришь :)


 
Юрий Зотов ©   (2016-03-05 19:01) [39]

> Rouse_ ©   (05.03.16 16:08) [31]

Саш, проблема не в BPL, а в несовместимости версий Delphi на уровне откомпилированного кода.


 
Rouse_ ©   (2016-03-05 19:32) [40]

Юр, именно это я и сказал изначально :)

ЗЫ: вообще я думал что ты оветишь в плане: спили мушку :)



Страницы: 1 2 вся ветка

Текущий архив: 2017.01.15;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.024 c
15-1451239135
Юрий Зотов
2015-12-27 20:58
2017.01.15
XML editor


15-1456747091
MsGuns
2016-02-29 14:58
2017.01.15
Кто мы есть ?


15-1456958945
Kerk
2016-03-03 01:49
2017.01.15
Мотивация людей


15-1452503308
Копир
2016-01-11 12:08
2017.01.15
Убить программиста.


15-1449692823
Сергей Суровцев
2015-12-09 23:27
2017.01.15
История и современность