Современное ПО
От: kov_serg Россия  
Дата: 09.07.21 16:10
Оценка: 1 (1) +6 -1 :))) :))) :))) :))) :)))
Простое объяснение почему всё так как есть

https://youtu.be/geY5cbImVwc?t=1300
Re: Современное ПО
От: 4058  
Дата: 09.07.21 20:05
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Простое объяснение почему всё так как есть


_>https://youtu.be/geY5cbImVwc?t=1300


Приблизительно всё так и есть.
Re: Современное ПО
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.07.21 11:41
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Простое объяснение почему всё так как есть


Там же сказано — "пользуемся интеллектом не по назначению".
Re: Современное ПО
От: imh0  
Дата: 10.07.21 12:29
Оценка:
Здравствуйте, kov_serg, Вы писали:

Хотел отдельно тему завести, но ваша отлично подходит для обсуждения этой дичи...

https://tv.rbc.ru/archive/ekskluziv/60e2f2ce2ae59602f173f18d

Надо смотреть с 18:24, до этого просто фигня.

То есть я к тому, что надо раделять программистов и "эфективных пьющих менеджеров" — Последние аж даже воинстующее, хотят "других" программистов, которые не хоят так делать )
Re: Современное ПО
От: vsb Казахстан  
Дата: 10.07.21 12:38
Оценка: 1 (1) -1
Несерьёзно. Турбопаскаль занимал несколько мегабайтов и был консольной программкой с примитивным GUI. Intellij Idea занимает несколько сотен мегабайтов и содержит в себе невообразимо больше функционала с невообразимо более сложным интерфейсом.

Я не спорю, что можно упаковать hello-world.html в Electron, который засунуть в докер-образ и это всё засунуть в виртуалку. Накидал бессмысленных слоёв и получил из 20 байтов 20 гигабайтов. И в какой-то мере это происходит, но в целом это скорей исключение. Про тот же электрон все понимают, что это неоптимальное решение и в какой-то момент его заменят на расшаренный движок браузера, что вернёт крохотный размер Electron-приложениям.

Ну и ещё одна большая проблема, если говорить про Java, которую я по крайней мере знаю, чтобы говорить о ней — отсутствие чего-то вроде LTO. Мне нужен один метод на 20 байтов байткода, я подключаю Guava на 3 мегабайта и одна с моим приложением уже бегает. Или я подключаю другую библиотеку, которой нужен тот самый метод на 20 байтов байткода и она подтягивает ту самую Guava. Причём в рамках Java это даже теоретически не факт, что возможно решить. Во-первых reflection позволяет использовать любой класс, поэтому ничего выкидывать уже нельзя. Если reflection ограничить, то if-ы позволяют в теории использовать блоки кода, которые на практике использоваться не будут, например написано у меня Charset.forName("UTF-8"). Мне кроме UTF-8 ничего не надо, но на всякий случай в программе лежат все кодировки с кучей таблиц, которые занимают уйму места. Также в Charset.forName прописана какая-то обработка случая, когда кодировка не найдена, и эти несколько десятков байткода лежат мёртвым грузом, т.к. UTF-8 всегда будет найдена.

Т.е. если взять типичное enterprise-приложение, проследить все возможные пути выполнения и посмотреть, сколько реально байткода задействовано, то скорей всего это будут вообще крохи от общего объёма поставляемого байткода в стандартной библиотеке и подключаемых библиотеках. А если ещё вспомнить про моду микро-сервисов, то там ситуация ещё хуже.

Но при всём при этом это не является, на самом деле, такой уж большой проблемой. Оно занимает место на диске, да и только. Если класс никто не трогал, то он даже с диска читаться не будет. Если метод никто не вызывает, то JIT на него вызываться не будет. Т.е. есть проблемы и они частично уже решены. Если не вглядываться, то да, беда, 10 метров жаваскрипта грузят текста 300 байт. А если вглядеться, может быть и не такая уж беда.

Но соглашусь, что было бы неплохо, если бы языки проектировали из расчёта возможности максимальной оптимизации и выбрасывания неиспользуемого кода. Не только на уровне классов и методов, но и на уровне отдельных блоков кода, про которые можно доказать, что они никогда не вызываются в текущей программе.
Отредактировано 10.07.2021 12:41 vsb . Предыдущая версия .
Re[2]: Современное ПО
От: imh0  
Дата: 10.07.21 12:51
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Но соглашусь, что было бы неплохо, если бы языки проектировали из расчёта возможности максимальной оптимизации и выбрасывания неиспользуемого кода. Не только на уровне классов и методов, но и на уровне отдельных блоков кода, про которые можно доказать, что они никогда не вызываются в текущей программе.


Это как раз есть в С++. Мне кажется что проблема не из-за технических особенностей, а из-за того что сознательно требуют делать тяп-ляп. То есть оптимизационный карьерный отбор именно так и идет. Не надо чтобы хорошо и быстро работало, надо чтобы срочно и сейчас.
Re[3]: Современное ПО
От: vsb Казахстан  
Дата: 10.07.21 13:19
Оценка:
Здравствуйте, imh0, Вы писали:

I>Это как раз есть в С++.


Не думаю. Сколько весит статически скомпилированный hello world в С++? Когда я последний раз проверял, там была цифра в мегабайтах. При том, что реально это несколько байтов кода — вызвать write(1, "Hello world", 11). Всё остальное — ненужная шелуха.

> Мне кажется что проблема не из-за технических особенностей, а из-за того что сознательно требуют делать тяп-ляп. То есть оптимизационный карьерный отбор именно так и идет. Не надо чтобы хорошо и быстро работало, надо чтобы срочно и сейчас.


А зачем тут противопоставлять? Нужно, чтобы хорошо, быстро работало, срочно и сейчас.
Re[2]: Современное ПО
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.07.21 13:45
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Турбопаскаль занимал несколько мегабайтов


Каких еще "мегабайтов"? Там было всего несколько сотен килобайт. У Turbo C (без плюсов) 2.x файл tc.exe (оболочка со встроенными компилятором, линкером и отладчиком) была размером в 300 кб. И код там был далек от идеально оптимизированного, 10-15% за счет оптимизации вполне можно было выиграть.

vsb>Intellij Idea занимает несколько сотен мегабайтов и содержит в себе невообразимо больше функционала с невообразимо более сложным интерфейсом.


Я не пробовал Idea, но MS VS избыточна минимум на порядок.

vsb>Я не спорю, что можно упаковать hello-world.html в Electron, который засунуть в докер-образ и это всё засунуть в виртуалку. Накидал бессмысленных слоёв и получил из 20 байтов 20 гигабайтов. И в какой-то мере это происходит, но в целом это скорей исключение.


Исключение? Да Вы оптимист. Это, можно сказать, уже мейнстрим, в различных вариациях.

vsb>Про тот же электрон все понимают, что это неоптимальное решение


Сильно подозреваю, что это понимает лишь абсолютное меньшинство. Остальные видят, что работает, запредельных (по бюджету) ресурсов не просит, и довольны.

vsb>в какой-то момент его заменят на расшаренный движок браузера


Пока подвижек в эту сторону не видно никаких, равно как и к вынесению JS-машины из браузеров.

vsb>подключаю другую библиотеку, которой нужен тот самый метод на 20 байтов байткода и она подтягивает ту самую Guava.


Такое, в первую очередь, происходит от построения библиотек с избыточными зависимостями. Разработчики библиотек уже давно перестали рассматривать их, как набор компонент, каждая из которых должна тянуть только реально необходимые. Они тупо делают "библиотеку, как сущность", и работает она только целиком, а по частям — увы.

vsb>если взять типичное enterprise-приложение, проследить все возможные пути выполнения и посмотреть, сколько реально байткода задействовано, то скорей всего это будут вообще крохи от общего объёма поставляемого байткода в стандартной библиотеке и подключаемых библиотеках.


Не только. Изрядную долю объема добавляет и дублирующийся код. Его дублируют и на одном уровне, и на разных, и в разных библиотеках. Чем больше становится средств для повторного использования кода, тем больше дублированного кода порождают разработчики. Потому что так проще. И все чаще встречаются рекомендации "не стремитесь изолировать общий код, это сложно и опасно".

vsb>Если класс никто не трогал, то он даже с диска читаться не будет.


А что, в том же андроиде из APK извлекаются только реально используемые классы/методы? Подозреваю, что тупо загружается весь контейнер.
Re[3]: Современное ПО
От: vsb Казахстан  
Дата: 10.07.21 13:51
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>Если класс никто не трогал, то он даже с диска читаться не будет.


ЕМ>А что, в том же андроиде из APK извлекаются только реально используемые классы/методы? Подозреваю, что тупо загружается весь контейнер.


Про андроид на низком уровне я почти ничего не знаю. Там это ещё и меняется от версии к версии. Вроде сейчас идёт AOT-компиляция, т.е. байткод Dalvik при установке приложения превращается в машинный код. Там, вероятно, да, загружается весь контейнер. Но даже в этом случае загрузка это mmap файла в память, реально память используется только при первом обращении, т.е. если есть код, который не используется, то он так же в память не будет загружен. Думаю, что в Android примерно так же.
Re[4]: Современное ПО
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.07.21 14:13
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb>Сколько весит статически скомпилированный hello world в С++?


Если под виндой, через MessageBox — два килобайта, бОльшая часть из которых — выравнивание по границам 512 байт. Если через printf — несколько десятков килобайт.

vsb>Когда я последний раз проверял, там была цифра в мегабайтах.


То был плохой, негодный C++.

vsb>реально это несколько байтов кода — вызвать write(1, "Hello world", 11).


Традиционный HW делается через printf, а это сразу же подтягивает форматные преобразования, работу с плавучкой с локалями и т.п. Но их крайне сложно будет вычистить чисто сторонним анализом, это слишком затратно.
Re[5]: Современное ПО
От: vsb Казахстан  
Дата: 10.07.21 14:46
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Традиционный HW делается через printf, а это сразу же подтягивает форматные преобразования, работу с плавучкой с локалями и т.п. Но их крайне сложно будет вычистить чисто сторонним анализом, это слишком затратно.


Если мы про C++ говорим, то там std::cout. Там вроде должно быть возможно всё вычистить.
Re[4]: Современное ПО
От: imh0  
Дата: 10.07.21 15:06
Оценка:
Здравствуйте, vsb, Вы писали:

I>>Это как раз есть в С++.


vsb>Не думаю. Сколько весит статически скомпилированный hello world в С++? Когда я последний раз проверял, там была цифра в мегабайтах. При том, что реально это несколько байтов кода — вызвать write(1, "Hello world", 11). Всё остальное — ненужная шелуха.


echo "
#include <stdio.h>
void main ( )
{
   printf(\"hello world\");
}">main.c && make main && ./main || ls -l


вывод :
cc     main.c   -o main
hello world
total 24
-rwxr-xr-x 1 user user 16608 Jul 10 18:04 main
-rw-r--r-- 1 user user    65 Jul 10 18:04 main.c


16Кб
Отредактировано 10.07.2021 15:07 imh0 . Предыдущая версия .
Re[4]: Современное ПО
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 10.07.21 15:31
Оценка:
Здравствуйте, vsb, Вы писали:

I>>Это как раз есть в С++.


vsb>Не думаю. Сколько весит статически скомпилированный hello world в С++? Когда я последний раз проверял, там была цифра в мегабайтах. При том, что реально это несколько байтов кода — вызвать write(1, "Hello world", 11). Всё остальное — ненужная шелуха.


Не знаю, что ты там проверял, но в сотню другую килобайт легко можно уложить виндовое оконное приложение без внешних зависимостей
Маньяк Робокряк колесит по городу
Re[6]: Современное ПО
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.07.21 15:32
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Если мы про C++ говорим, то там std::cout.


Использование C++ само по себе не предполагает использования потоков — это просто рекомендация.

vsb>Там вроде должно быть возможно всё вычистить.


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

Еще, кстати, бывают неочевидные реализации, требующие runtime-кода. Я не знаю, как реализованы потоки в унихах, а в винде для полноценной поддержки консольного вывода и перенаправления в файл процесс должен слегка менять поведение в зависимости от того, куда фактически привязан стандартный поток.
Re[3]: Современное ПО
От: sergey2b ЮАР  
Дата: 10.07.21 15:32
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, vsb, Вы писали:


vsb>>Турбопаскаль занимал несколько мегабайтов


ЕМ>Каких еще "мегабайтов"? Там было всего несколько сотен килобайт. У Turbo C (без плюсов) 2.x файл tc.exe (оболочка со встроенными компилятором, линкером и отладчиком) была размером в 300 кб. И код там был далек от идеально оптимизированного, 10-15% за счет оптимизации вполне можно было выиграть.


я с вами полностью согласен
но как постоянный пользователь tc 1.5 с 89 по 92, хотел бы уточнить
tc с ide отладчиком, библиотеками и графическими драйверами занимал 720 k

я это знаю тк у меня на работе был amstrad 1640 без hdd но двумя флоповодами на 360
а дома tandy 1000 с одним дисководом на 720

оптимизатора как такового у компилятора не было


на XT с hdd можно было откомпилировать программу для win 3.0 используя Borland 3.0
Re[5]: Современное ПО
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 10.07.21 15:33
Оценка:
Здравствуйте, imh0, Вы писали:


I>16Кб


Не корректный эксперимент. libstdc/libstdc++ скорее всего отдельно лежат, я не увидел ключиков, чтобы они статически линковались. Но в линуксах — да, они считай что часть системы
Маньяк Робокряк колесит по городу
Re[2]: Современное ПО
От: sergey2b ЮАР  
Дата: 10.07.21 15:36
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Несерьёзно. Турбопаскаль занимал несколько мегабайтов и был консольной программкой с примитивным GUI. Intellij Idea занимает несколько сотен мегабайтов и содержит в себе невообразимо больше функционала с невообразимо более сложным интерфейсом.


turbo pascal 5.5 (с нормальным OOO) с IDE и внешними утилитами
+ библиотеки
+ графические драйвера

занимал 360K и компиляция 20 тыс строк на xt 8mhz занимала меньше полминуты

те для большенства реальных задачь этого компилятора хватало
мы например с другом писали на нем эмулятор робота который мог двигаться по цеху и не сносить все вокруг
Re[6]: Современное ПО
От: vsb Казахстан  
Дата: 10.07.21 15:38
Оценка:
Здравствуйте, Marty, Вы писали:

I>>16Кб


M>в линуксах — да, они считай что часть системы


Они и в винде часть системы. Но это некорректное сравнение, у меня в федоре и Java идёт в базовой установке, что теперь, Java стала образцом минимализма?
Re[3]: Современное ПО
От: vsb Казахстан  
Дата: 10.07.21 15:40
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>turbo pascal 5.5 (с нормальным OOO) с IDE и внешними утилитами

S>+ библиотеки
S>+ графические драйвера

S>занимал 360K и компиляция 20 тыс строк на xt 8mhz занимала меньше полминуты


https://winworldpc.com/product/borland-pascal/7x

14.48MB в архиве. Под турбо паскалем я имел в виду эту версию.
Re[4]: Современное ПО
От: sergey2b ЮАР  
Дата: 10.07.21 15:47
Оценка:
Здравствуйте, vsb, Вы писали:


vsb>https://winworldpc.com/product/borland-pascal/7x

vsb>14.48MB в архиве. Под турбо паскалем я имел в виду эту версию.

на скриншоте TPW 1.5 — turbo pascal for windows
это точно не досовская версия

для DOS 7.0 можно было поместить на дискету 1.44 но на XT и 286 он уже реально компилировал не быстро
я сейчас на 486 66 запускаю софт написанный на Turbo Pascal с Turbo Vision прямо видно как программа окна отрисовывает
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.