6 декабря 2010 г.

Раздутое ПО - моя версия

Этот пост написан как ответ любому программисту, говорящему слова вроде: "а теперь посмотрите, сколько всякого бреда несет с собой VCL\MFC приложение".

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

Вы поймите сначала, откуда это идёт. А идёт это из той ровно той оперы, "раньше солнце светило ярче, а трава зеленее". Только и всего. Старики вспоминают свою радостную молодость:

- Эх, как мы классно тогда посидели, сумели втиснуть код в 64 Кб, помнишь?
- Точно, клёво было. Не то, что щас, все проги да с установщиком, а молодёжь в этом ничё не понимает - школота!

(у кого что, конечно)

Времена меняются, и то, что было актуальным вчера, сегодня уже не актуально. Face it. Смиритесь. Живите дальше. Скулежом по поводу безвозвратно ушедших дней вы ничего не измените.

Окей, вот наглядный пример - быть может, такое даже происходило.

Вы пришли к пользователю вашей программы и сказали:
- Я выпустил новую версию! Она офигенна! Я туда так вложился, столько всего сделал, сидел целых два месяца день и ночь на кофе. Меня даже девушка бросила. Прям горжусь собой!
- Оу, чувак, это офигенно клёва! Наверное, там теперь можно закачивать фотки в Контакт?
- Нет!
- А куда-нибудь закачивать?
- Да нет же!!!
- O_o А чего ж ты тогда сделал-то?
- Я уменьшил размер программы с 8-ми мегабайт до... затаи дыхание... до 800 килобайт!! В 10 раз! На порядок! Ты прикинь?!
- O_O Ты чё, дебил?

(упреждающее предупреждение: это я ни про кого лично, это не наезд и не оскорбление)

Я вот наблюдаю за такими людьми. Вы знаете, что я думаю? Это болезнь. Да-да, это болезнь, которая поражает компьютерных технарей. Им просто неудобно от того, что их программа не оптимальна (иногда чуть ли не физически!). Не существует никакой иной причины объяснить их стремление заниматься этим. Они не могут это объяснить. Любой аргумент, который они приводят, просто неприменим к тому, для кого они пишут программу: пользователю. Например:

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

(вот мне интересно: не заботит ли их, сколько в мире тратится одноразовых стаканчиков? Это ж кошмар! Ведь их можно помыть и ещё раз использовать! Вот раньше правильно жили - там посуда на вес золота была, не то, что сейчас)

Если вам будет от этого легче, то я скажу вам, что человеческая ДНК тоже содержит мусорные участки (я втайне надеюсь, что все больные этой болезнью люди взорвутся от такого противоречия - это была слабая попытка имитировать Реймонда Чена).

Это не обязательно должен быть программист, напротив - программисты болеют этой болезнью в раннем возрасте, после чего идут дальше. Но вот продвинутые пользователи, не являющиеся программистами, часто не способны продвинуться дальше (полно ведь народу, который вздыхает по временам, ну скажем Win98). В одной из командировок я видел на предприятии вполне взрослого дядьку (ближе к 40, наверное), который (на полном серьёзе!) ругался, что наш комплекс занимает (о, ужас!) целых 300 Мб! (я не помню, сколько он весит, но пусть будет 300) Ругался он, сидя на такой машине, что я и сейчас облизываюсь. Два моника непомерных размеров, 8 Гб RAM, четырёхядерник (хз частота, но соответствующая), RAID массив из 4-х винтов и видюха того же плана (одна). Да, 300 мегабайт, ай как плохо... У меня язык чесался ответить: "т.е. ты бы предпочёл купить нашу программу через 15 лет (а эти десять лет ты будешь простаивать) за вдесятеро большую сумму, так что-ли?", но... заказчик-с.

Программы занимают мизерную часть содержимого компьютера. Обычному пользователю по барабану, занимает ли она 1 или 80 Мегабайт. Ему это не интересно. Ему интересно смотреть фильмы, слушать музыку, играть в игры, общаться с друзьями, и т.д. Если вы сделали офигенный плагин для WinAmp-а, который весит 100 Мегабайт - вы думаете кто-то будет смотреть на (примечание для зануд, не умеющих вычленять контекст: НЕ офигенный) плагин на 100 Кб?

Кому интересно, что Fallout занимает 15 Гб (или сколько там? Я не знаю, хотя он у меня стоит), если он позволяет тебе погрузиться в атмосферу мохавских пустошей на FullHD? Школьникам и безработным? Ну-ну. Ориентируйтесь и дальше на эту аудиторию - это верный путь в светлое будущее.

Напоследок хотелось бы сказать ещё про чисто технический момент. Конечно, новичок видит, что программа A < программы B, и потому программа A лучше - это же очевидно! Но при этом он совершенно упускает из виду, что уменьшение размера не даётся за бесплатно. Закроем глаза на уже упомянутые факторы, посмотрим с такой стороны: чем достигается уменьшение размера? Ну, например, отказом от большой толстой библиотеки и реализацией функционала самому. Почему это приводит к уменьшению размера? Потому что вы пишете только тот код, что непосредственно используется в вашей программе. Что ещё? Ну, например, вы заменяете неэффективные конструкции более эффективными. Что не так с этим подходом? Давайте загибать пальцы:
  • С высокой долей вероятности новичок напишет говно-код, вместо использования качественного библиотечного кода.
  • Почти наверняка ваш код не будет обрабатывать редкие или граничные случаи - ведь они почти никогда не случаются! Зачем тратить место? Тем более, что "у меня всё работает".
  • Совершенно очевидно теряется качество программы: вы заменили надёжный и протестированный код свеженаписанным (а значит - не протестированным и содержащим кучу багов).
  • С вероятностью 90% ваш новый код будет не в курсе про какую-то особенность, которую учитывает библиотечный код. Ведь вы даже не знаете про это! Это будет баг. (ну, например, классический пример: самопальные иконки в трее не пересоздают себя при перезапуске Проводника).
  • Ради уменьшения размера вы жертвуете другими качествами программы. Например, надёжностью. Вы не станете расставлять фреймворк проверок и обработки ошибок, как это делает библиотека - ведь это ест место и время!
  • Выбрасывая универсальный код и делая код конкретный вы снижаете гибкость и возможность к модификации. Используя универсальную библиотеку, вы можете изменить поведение, изменив всего пару строк. Используя же конкретный код - вам нужно его выбросить и написать заново.
  • Сюда же относятся различные модификации на оптимизацию, переписывание на ассемблере и т.п. Зачастую это делает исходный код настолько жёстким, что его нельзя тронуть в одном месте, чтобы не поплыло в другом (хотя бы в плане оптимизации). "Но кому это важно, ведь программу я написал и вот же она: маленькая?" Парень, IT - это самая быстроразвивающаяся отрасль. Программа, которая не нацелена на модификацию - мертва ещё до выхода первой беты.
  • Часто довольно быстро у вас отваливается читабельность кода. Код, написанный с применением библиотеки поддержки легко читать, изменять и сопровождать. Код, написанный на коленке, реализующий заново только в минимально необходимом объёме функционал библиотеки, щедро посыпанный ассемблерными "оптимизациями" (каждая из которых нейтрализуется случайной задержкой головок диска) становится просто не читаем для стороннего человека - а иногда и для самого автора полгода спустя. Я напомню очередную прописную истину: код пишется НЕ для машины. Код пишется для человека.

Примечание: как побочный эффект, а может и как компаньон этой болезни - сюда же относится изобретение и переизобретение велосипедов. "А я сделаю свой XYZ, но с блекджеком и шлюхами!" Изучать уже готовый инструмент - ведь это так скучно! "Сейчас я напишу свой, но только я буду писать на ассемблере и тогда все поймут, какой я крутой!"

Проблема в том, что новичок просто не способен увидеть эти факторы. Ухудшение читабельности? Чего? Но я же читаю код? Гибкость? Это что вообще такое? Вот же я изменил программу, видишь?

Поэтому они увлекаются этой идеей - ведь они не способны увидеть минусы.

Обычно этой болезнью заболевают новички-программисты. Конечно же, они слышат: "ай как плохо, программы-то все большие!". И, конечно же, они заболевают этой идеей. Ведь "A < B" выглядит так просто и это так легко осознать. А вот идея про эффективность и практичность - это уже сложнее. "Это всё скучно и не интересно! А вот я лучше тут щас на ассемблере перепишу..."

Кроме того, они видят, что (похоже) все вокруг не прониклись этой идеей. И им кажется, что вот она, эта ИХ идея. Которая принесёт им... ну что-то принесёт, да. "Я напишу такую же программу, только она будет весить всего 1 мегабайт вместо этих двадцати! И, конечно же, она будет гораздо удобнее - все будут использовать мою программу, ведь пользователь увидит, что она лучше той, потому что она компактна и эффективна".

Знаете, что я вам скажу? Размер - это последнее, на что посмотрит пользователь. А когда вы закончите программу через три года, она будет никому не нужна.

Успех программы не связан с её размером. Никак.

В истории полно таких примеров. Нет ни одного случая (примечание для зануд: "ничего" = "< 1%"), когда пользователь отказывается от программы, потому что она большая. Он может отказываться от неё потому что она неудобна, или потому что в ней мало функций, или потому что работать с ней сложно. Но не потому, что её .exe файл весит 15 Мб, а не 5 Мб!

Вот вам реальный пример: в конце 1980-х в Lotus ломали голову над тем, что же делать дальше с их флагманом электронных таблиц и графики Lotus 1-2-3. Было два очевидных пути. Во-первых, можно было добавить функции, например встроить текстовый редактор. Получившийся продукт был назван Symphony. Другим очевидным путем было сделать таблицу трехмерной. Так появился 1-2-3 версии 3-0. В обоих случаях сразу возникала серьезная проблема старого DOS-ограничения на размер занимаемой памяти - 640 Кбайт. IBM начинала поставки компьютеров с чипами 80286, способными адресовать больше памяти, но в Lotus решили, что у программы, для которой нужен компьютер за 10'000 долларов, количество покупателей будет невелико. Поэтому они всё ужимали и ужимали программу. Потратив 18 месяцев на то, чтобы втиснуть 1-2-3 для DOS в 640 Кбайт, они потеряли уйму времени и в конце концов отказались от трехмерности, чтобы таки запихнуть всё в память. В случае же Symphony они просто крошили все функции налево и направо. Ни один из путей не оказался верным. К моменту выпуска 1-2-3 версии 3.0 у всех уже были 80386-е машины с двумя или четырьмя мегабайтами оперативной памяти. К тому же, в Symphony были несовершенные таблицы, несовершенный текстовый редактор, да и вообще много несовершенного.

Примерно в то же время некоторые компании, включая Microsoft и Apple, обратили внимание (чуть раньше всех остальных), что закон Мура позволяет не очень сильно переживать из-за производительности и использования памяти. Делай что-нибудь крутое и жди, пока подоспеет железо! Microsoft выпустила первую версию Excel для Windows в то время, когда 80386-й был еще слишком дорог, но они были терпеливы. Через пару лет появился 80386SX, и каждый, кому по карману был клон за 1'500 долларов, мог работать в Excel. Благодаря резкому падению цен на память и ежегодному удвоению скорости процессоров у программиста появился выбор. Можно потратить полгода, переписывая внутренние циклы на Ассемблере, а можно те же полгода играть на ударных в рок-группе - в обоих случаях ваша программа будет работать быстрее. У программистов на Ассемблере нет толпы поклонниц.

Ну. Где теперь Lotus и где теперь Excel? А ведь тогда Lotus был лидером в своей области и представить, что у него может быть конкурент, тогда было просто смешно.

Теперь вы можете подумать: хорошо, с чрезмерной оптимизацией - понятно, но что насчёт всех этих чрезмерно раздутых Office-ов? Только посмотрите, сколько там всякого хлама! Зачем это всё? Вот сейчас "я напишу такую же программу, только она будет весить всего 1 мегабайт вместо этих энцати! И, конечно же, она будет гораздо удобнее - все будут использовать мою программу, ведь пользователь увидит, что она лучше той, потому что она компактна и эффективна". Но когда вы начинаете продавать свой "облегчённый" продукт и говорите "Эй, она весит всего мегабайт", людям это начинает нравиться, потом они спрашивают, есть ли в ней их наиважнейшая возможность, и разумеется, ее там нет, так что ваш продукт они не покупают.

Jamie Zawinski сформулировал это лучше всех при обсуждении первой версии Netscape, которая изменила мир: "хотя это и было бы удобно, но Mozilla [Netscape 1.0] была такой большой не потому, что в неё напихано много всякого ненужного хлама. Mozilla большая потому, что ваши требования велики. Ваши требования велики потому, что интернет большой. Есть куча маленьких, стройных браузеров, которые, по случайному совпадению, не делают почти ничего полезного. Но совершенство бриллианта не было нашей целью при работе над Mozilla".

Многие разработчики программного обеспечения попадаются на старое, как мир, правило "80/20". Кажется совершенно очевидным, что 80% людей используют лишь 20% возможностей программ. И вы убеждаете себя, что вам надо внедрить только 20% возможностей, и вы все равно сможете при этом продать 80% копий. К сожалению, это не всегда одни и те же 20%. Каждый использует разные вещи. Есть много компаний, которые, решив не учиться на чужих ошибках, пытаются выпускать, скажем, "облегчённые" текстовые редакторы, в которых реализовано только 20% функций. Эта такая же старая история, как сам PC. В большинстве случаев дальше происходит следующее: фирма-производитель посылает копию своего нового текстового редактора журналисту для того, чтобы он написал о нем статью. Журналист пишет эту статью, используя этот новый текстовый редактор, и, закончив её, пытается найти функцию "Подсчет количества слов", которая им необходима, поскольку у большинство журналистов есть вполне четкие требования к объему статей. И, конечно, такой возможности нет, потому что она как раз попала в те "80%, которые никто не использует", и журналист в итоге пишет, что облегчённые программы - это хорошо, раздутые программы - это плохо, но вот с этой чертовой штукой я работать не могу, потому что она не будет считать мои слова.

(оба примера взяты у Джоэля Спольски)

Когда программист со временем набирается опыта он понимает, что это всё баловство, детские шалости. Ну и отлично. Ничего в этом страшного и постыдного нет. Мы все переболевали этой болезнью (и многими другими!). И не бойтесь спрашивать как уменьшить размер программ, как писать без VCL, экспериментируйте, учитесь - всё это правильно, это набор опыта. Но только если при этом вы попробуете открыть рот на тему: "Бла-бла-бла, эта программа такая раздутая, это просто ужасно, ABC намного лучше нежели XYZ, потому что она очень мало весит" и т.п. - вам тут же дадут по лбу.

А для тех, кто вроде и вырос, но от болезни не избавился - могу сказать так: ребят, вокруг столько всего интересного, мы живём в удивительное время. Как там сказал Фредерик Брукс:
Область связанных с компьютерами знаний претерпела взрыв, как и соответствующая технология. Будучи аспирантом в середине 50-х, я мог прочесть все журналы и труды конференций. Я мог оставаться на современном уровне во всей научной дисциплине. Сегодня же мне в моей интеллектуальной жизни приходится с сожалением расставаться с интересами то в одной, то в другой подобласти, поскольку количество документов превысило всякую возможность справиться с ними. Масса интересов, масса замечательных возможностей для учебы, исследований, размышлений. Чудесное затруднение! Не только конца не видно, но и шаг не замедляется. В будущем нас ожидают многие радости.
У меня вечно не хватает времени. То надо прочитать, это сделать, сё написать. Столько всего вокруг! Учиться, работать - сколько хочешь.

Чем занимаетесь вы? Уменьшили размер программы. Аплодисменты.

Ребят, я не знаю, вам действительно нечем больше себя занять? Мне, право, вас жаль...

Читать далее: Мир совершенных технологий и занимательная математика.

P.S. Справедливости ради, надо заметить, что "гонения за минимальным размером программы" вполне имеет право на существование как минимум в одном случае (примечание для зануд, не умеющих вычленять контекст: мы находимся в мире Delphi и Windows; не надо тут начинать про часы с 4 Кб памяти): искусство. Да, некоторые занимаются этим для собственного удовольствия и как некий вид искусства (примечание: толпа народу, стенающая на форумах: "ну подскажите же, как тут уменьшить", к этой категории не относится). Ничего не имею против - я только за. Но если только такой программист попробует полезть ко мне со своим "вот как надо писать, если бы молодёжь думала об оптимизации, бла-бла-бла", то получит своё законное ПНХ. К счастью, человек, занимающийся такими вещами, обычно адекватен и понимает, что к чему.

P.P.S. Ах, да, прежде чем писать мне гневный ответ в стиле "но для меня размер важен!", я напоминаю вам, что я говорю об обычных пользователях. Тех, которых 90%. Тех, которых интересуют фильмы, игры, друзья и музыка. Вы - не типичный пользователь. Вы технарь. Примите это во внимание, прежде чем писать ответ (я полагаю, что вы достаточно умны, чтобы это сделать).

P.P.P.S. Ну и, конечно же, ссылка в тему от Джоэля Спольски. Джоэль Спольски - человек с весьма богатым жизненным опытом и пройденным путём. Почитать его высказывания лишним не будет.

Читать далее: Основы оптимизации прикладных программ на Delphi.

53 комментария :

  1. Я думаю, что не правильно подобным (примитивным) образом связывать размер готовой программы с использованием сторонних библиотек при конструирования проекта (написании исходного кода).
    А, для начинающих (основная масса пользователей готовых библиотек) этот blog post - вредный, т.к. выдает неверные ориентиры развития.
    P.P.P.P...S :)
    Одни эмоции. Похоже на истерику по поводу незаслуженной обиды.

    ОтветитьУдалить
  2. >>> Я думаю, что не правильно подобным (примитивным) образом связывать размер готовой программы с использованием сторонних библиотек при конструирования проекта (написании исходного кода).

    Просто это вырезка из форумной ветки. Там речь шла в контексте, "но подключение Forms даёт вам +400 Кб!"

    >>> Одни эмоции. Похоже на истерику по поводу незаслуженной обиды.

    Да не, вам показалось.

    ОтветитьУдалить
  3. Вы видимо не встречались с ПО от Hewlett Packard, написанным индусами. Диалог для сканирования занимает 100 Мб, требует для работы .NET.
    При нажатии кнопки "Сканировать" запускается примерно 3 минуты, при том, что само сканирование занимает 2 минуты.

    ОтветитьУдалить
  4. Ога. Особенно умиляют высказывания типа - Поставил ваш XE и офигел!
    Там пустая форма ~ 1Mb.
    В моем любимом Delphi 3 пустое приложение n-цать Кбайт!

    ОтветитьУдалить
  5. Вы видимо не встречались с ПО от Hewlett Packard, написанным индусами. Диалог для сканирования занимает 100 Мб, требует для работы .NET.

    о да производитель драйверов для сканеров посредственно разбирается в GUI. ну и что? было бы легче, если б BMP в JPG пожали б? что изменится-то?

    При нажатии кнопки "Сканировать" запускается примерно 3 минуты, при том, что само сканирование занимает 2 минуты.

    ничё что сканеру надо время на прогрев?

    ОтветитьУдалить
  6. Это как статья про XYZ, все по теме, но те, кто не понимает не поймет... В этом контексте, меня всегда удивлял проект KOL, т.к. даже в "начальном периоде формирования" мой неокрепший ум отрицал эту идею, хотя и не мог толком объяснить почему...

    Пост поддерживаю. По проблеме можно добавить, что те, кто ноют, просто не пытаются учить новые технологии (со всеми вытекающими). Я такие мотивы расцениваю как непрофессиональные.

    ОтветитьУдалить
  7. Аффтар выпей... нет не яду, а валерьяноффки... Бред и ничего более. Всё перемешал в кучу.

    ОтветитьУдалить
  8. >> При нажатии кнопки "Сканировать" запускается
    >> примерно 3 минуты, при том, что само
    >> сканирование занимает 2 минуты.

    > ничё что сканеру надо время на прогрев?

    Диалог сканирования запускается 3 минуты. После нажатия на кнопку "Сканировать" начинается прогрев сканера, сканирование, и передача данных, которые и занимают 2 минуты.

    Я писал про то, что у всего есть разумные пределы. В том числе и у размера программы, и в использовании библиотек.
    Если ваша программа занимает два мегабайта вместо одного, но при этом нормально работает - нет никаких проблем.
    Но если программа занимает 100 Мб вместо 1 Мб и тормозит так, что заставляет нервничать - стоит задуматься.

    ОтветитьУдалить
  9. Задумываться, наверное, стоит если вы делаете коммерческий проект, а его не покупают... Возьмите к примеру 1С: убогость на концептуальном уровне (слабый язык, закрытая платформа, базы больших размеров), но при этом среди учетных систем - самое распространенное явление в нашей стране, большое количество рабочих мест.При этом многие нервничают по поводу этой системы, а это ни на что ровным счетом не влияет...
    Индусы из НР врятли "тупили", потому что они индусы. Те, кто не занимался разработкой коробочных продуктов этого не поймут. Тут куча всяких регламентов от программистов, юристов, технологов, маркетологов, директоров и др. персонажей, процесс разработки сопряжен с различными согласованиями, собраниями, внутренними аттестациями и др. В общем, не надо плохо думать про индусов из НР, у них наверное была причина поступить так как они поступили...

    Если же продукт не коммерческий, но рассчитанный на широкую аудиторию, то тут тоже не стоит бухтеть, т.к. люди работающие "за так" ничего никому не должны.

    Ну и у каждого есть возможность написать свою самую лучшую в мире программу и подарить ее человечеству, чтобы оно стало счастливее...

    ОтветитьУдалить
  10. Хороший мотиватор забить на объёмы. Раньше тоже пережимал документацию в формате doc через Word 97, перекомпилировал проект из D6 в D4. Потом забил - время можно потратить на более интересные вещи. Кому надо, и так скачает.

    Хотя вот KillOK писал на KOL&MCK - подобные программы имеет смысл уменьшать в размерах. Да и вообще было интересно поэкспериментировать. Думаю, если бы сейчас переписать её на обычном VCL, для конечного пользователя не будет никакой разницы.

    Но вот опять же - на новые версии Delphi не перехожу в том числе и из-за объёма получающихся экзешников.

    ОтветитьУдалить
  11. Для меня одним из важнейших стимулов использовать готовые решения является время. Ведь так его становится больше и его можно потратить на улучшение программы. Т.е. в то время когда я уже имею на руках готовый проект я думаю что бы еще добавить, типичный изобретатель еще отлаживает(ну или только начал отлаживать :))

    ОтветитьУдалить
  12. Разве это плохо писать менее требовательные к ресурсам программы?

    Просто, если можешь писать компактные и эффективные программы - пишешь, если не можешь - посылаешь тех кто может на ПНХ (по автору) и пишешь такие статьи.
    :)

    ОтветитьУдалить
  13. Забавно наблюдать, что даже когда я явно указал контекст (и, более того, явно сказал: "вот, смотрите, это - контекст"), некоторые люди (я специально выделил это слово во избежание дальнейших недоразумений) умудряются прочитать не то, что я написал, а то, что им хотелось бы, чтобы я написал. Примечание: некоторые комментарии были отправлены в личку.

    lol :D

    Ребят, у вас явно какие-то проблемы.

    Я не говорю, что на оптимизацию надо забить вообще. Я говорю, что внимание надо обращать на практические цели. Будет важен размер - будем уменьшать. Будет скорость отклика неприемлема - будем оптимизировать. В подавляющем же количестве случаев у вас есть другие более важные задачи.

    А речь-то про то, что есть люди (я их назвал "больными болезнью"), которые занимаются не практическими задачами, а уменьшением размера программы... ради него самого! ("ах, какой ужас, Forms даёт 400 Кб! Ужасно раздутая прога, никто не понимает в маленьких программах, сейчас я это всё перепишу с нуля") Не потому, что это реальная потребность, а потому что им неудобно.

    ОтветитьУдалить
  14. Просто, если можешь писать компактные и эффективные программы - пишешь, если не можешь - посылаешь тех кто может на ПНХ (по автору) и пишешь такие статьи
    Если для компактности время выдачи продукта увеличивается в н-цать раз, абсолютно правильно сделать исполнителю ПНХ. То же самое, если при этом еще и увеличивается количество потенциальных багов.
    А для заказчика основные критерии всегда: удобство и скорость разработки. Несколько дальше стоит быстродействие, а размер полученного екзешника - да и хрен бы с ним. Тем более, что у нас не 64 КБ памяти и даже 40 ГБ диск на офисных машинах заполняется едва на 50%.
    Здесь началось то же, что и в холиваре Win vs Nix, когда фактически единственными аргументами юниксоидов стоят нетребовательность к ресурсам и стабильность работы. Однако рынок абсолютно четко говорит, что плеват мы хотели на эти критерии, если удобство использования и скорость нахождения нужного решения просто несопоставимы.
    Размерами можно хвалиться только в узкой среде программистов, но если программа пишется для заказчика, а не для удовлетворения своих амбиций, то надо забывать псевдопрофессиональные понты и делать так, как скажет заказчик.

    ЗЫ: сплошь и рядом неудобствва, возникающие при использовании программ (здесь я имею в виду не массовые, а узкоспециализированные решения) возникают из-за банального нежелания программистов испольнять то, что желает заказчик, причем чаще всего из-за громоздкости реализации требуемого.

    ОтветитьУдалить
  15. Согласен, что использование сторонних библиотек существенно экономит время. Но за все надо платить! А платить придется не только размером программы, но и глюками в этих самых библиотеках, нестандартным поведением компонент и контролов, и т.п.

    ОтветитьУдалить
  16. ...есть мнение, что библиотеки надо выбирать нормальные.

    Можно подумать, если вы выкинете оттестированный код этих библиотек, то тут же напишите свой безбажный код. Как раз таки наоборот.

    ОтветитьУдалить
  17. Автор "не прохавал фишку". Проблема не в том, что современные программы стали большими и неповоротливыми. Проблема в том, что современные программы стали некачественными. Если раньше большинство программистов были специалистами (а неспециалисты на рынке труда просто долго не задерживались), то теперь высокий спрос на программистов снизил "планку" требований. Соответственно, мощные инструменты также стали проще в использовании. Что привело к наводнению рынка той самой школотой.
    Так что есть справедливый резон с тоской вспоминать старые времена. Только аналогия должна быть другая: "Вот раньше делали все дорого и качественно, в Японии и Германии. А теперь все дешево, но большинство - китайское говно".

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

    :)

    ОтветитьУдалить
  19. Ну, в наш век гигабайт и гигагерцев делать самоцель из уменьшения размеров бинарника и правда нерентабельно. Но это не означает, что программу вовсе не следует оптимизирвать. Есть перлы, которые даже на мощном компе сжирают все ресурсы и ничего не делают.

    ОтветитьУдалить
  20. Насколько я понимаю, автор не утверждал что не нужно оптимизировать, он заострил внимание на, то, что некоторые товарищи, скажем так, "любят много говорить и заниматься оптимизацией в тех случаях, когда в этом нет никакой необходимости". Нужно сказать, что также считает не только автор, но, например, и Питер Гудлиф в труде "Ремесло программиста. Практика написания хорошего кода" (есть и другие, просто под рукой сейчас имеется только эта книга). Все разговоры против обозначенного тезиса говорят о том, что некоторые товарищи не желают изучать фундаментальные основы отрасли и, как я уже писал выше, новые технологии.
    Согласен, что это холиварная тема, т.к. понять почему "не нужно заниматься оптимизацией, когда в этом нет необходимости" могут только те у кого есть большой опыт работы, остальные будут считать, что то что написано - троллинг, а автор - троль/школота...

    ОтветитьУдалить
  21. Ну, в наш век гигабайт и гигагерцев делать самоцель из уменьшения размеров бинарника и правда нерентабельно

    Даже в наш век гигабайт и гигагерцев проще простого пустить коту под хвост все эти гигагерцы и гигабайты, используя бездарно написанные программы. И за примерами далеко ходить не надо - полно таких программ вокруг.

    ОтветитьУдалить
  22. Даже в наш век гигабайт и гигагерцев проще простого пустить коту под хвост все эти гигагерцы и гигабайты, используя бездарно написанные программы. И за примерами далеко ходить не надо - полно таких программ вокруг.

    Ерунду пишете товарищ. Не надо путать программиста предпочитающего повторное использование кода и говно-программиста. Говно-программист из всего сделает говно. Можно подумать если он будет писать на С+WinAPI то его поделия сразу перестанут тормозить? А по-моему, станет только хуже. Чушь, чушь.

    ОтветитьУдалить
  23. повышением образованности и качества программ
    Вы знаете, один из мотивов писать программы хорошо - это сложность их отладки. Если Вы упрощаете отладку, то какой побочный эффект будет от этого?
    Хотя для специалистов Ваш блог - как глоток свежего воздуха :-)

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

    ОтветитьУдалить
  24. >>> Вы знаете, один из мотивов писать программы хорошо - это сложность их отладки. Если Вы упрощаете отладку, то какой побочный эффект будет от этого?

    Такая точка зрения по отношению к моей работе мне пока в голову не приходила :D

    ОтветитьУдалить
  25. >>>Вы знаете, один из мотивов писать программы хорошо - это сложность их отладки. Если Вы упрощаете отладку, то какой побочный эффект будет от этого?
    Упрощение отладки, видимо, должно влиять на процесс отладки, но никак не на процесс кодирования?
    Если не так, то поясните подробнее свою мысль, уж очень интересно что там на самом деле.

    ОтветитьУдалить
  26. но никак не на процесс кодирования?
    А как быть с революцией в программировании - с ООП?
    Согласитесь, отладить объект, превратив его в компонент, проще чем... чем... постоянно отлаживать порядок вызова процедур.
    Или, раз мы заговорили об ООП, все Ваши объекты являются компонентами?

    ОтветитьУдалить
  27. Согласитесь, что порядок вызова процедур не зависит от выбранной парадигмы программирования, а зависит от выбранной архитектуры. Кроме этого со времен расцвета процедурного подхода ПО довольно-таки сильно усложнилось, средства разработки и отладки также сильно изменились...
    А какой побочный эффект от упрощения отладки вы так и не сказали.
    Кстати революция произошла лет 30 назад, для нашей отрасли это очень большой срок...

    ОтветитьУдалить
  28. Оптимизировать надо всегда, оптимизировать надо программы и данные, в программах надо оптимизировать алгоритмы, в данных - структуру и размер.Как только вы столкнетесь с большими числами, сразу измениться точка зрения. Ну и тема не корректна. Редко кто напишет программу в 80 МБ это уже не программа, скорее всего это комплекс программ. А вот если есть файлик в миллион записей, скажем dbf и в нем 200 полей по 250 символов, где и 20 хватит за глаза, думаю никто вам спасибо не скажет за такой пустой довесок, ну а потом умножайте файлы в 100 раз (не игра какая-нить)потом умножайте на несколько версий. Считайте...

    ОтветитьУдалить
  29. побочный эффект от упрощения
    Отсутствие мотива писать программы хорошо.
    Вопрос, грубо говоря, в количестве символов используемых для переменной.

    порядок вызова процедур не зависит от выбранной парадигмы
    Тут важно уточнить про что речь. Порядок вызовов процедур - это и есть алгоритм, то, что является предметом кодирования. Конечно, любой программист стремится сохранить алгоритм при любой парадигме. Но дело в том, что для конкретных задач подходит не любая парадигма. А в пределах парадигмы еще существуют приёмы программирования.
    По сути, хорошее современное программирование, есть выбор приёмов программирования, наиболее соответствующих задаче.
    Ну и нафига эти приёмы, если по F7-F8 можно допилить почти любой код? А ведь мэтры программирования не зря пишут: уровень квалификации программиста обратно пропорционален количеству прогонов программы (естественно, под отладчиком).

    революция произошла лет 30 назад, для нашей отрасли это очень большой срок...
    Настолько большой, что про неё уже можно забыть. Что, по моему скромному мнению, и наблюдается…

    З.Ы.
    Безотносительно всему вышесказанному, хочу обратить внимание вот на что. Вы сказали порядок вызова процедур не зависит от выбранной парадигмы программирования
    А как быть с событийно-ориентированным программированием? Или СОП - не парадигма, или сама возможность независимости порядка вызовов в этой парадигме прямо указывает на зависимость способа кодирования от парадигмы. Или, третий вариант, Вы связываете словосочетание "порядок вызовов" не с кодированием, а с чем-то иным.

    З.З.Ы
    Надеюсь, мы не будем вдаваться в тонкости зависимости количества прогонов программы от удобства отладки? И как это влияет на кажущуюся квалификации программиста?

    ОтветитьУдалить
  30. Да, Вы правы, место сейчас никто не экономит, но иногда за ним всё-таки стоит следить. На днях выпускал консольную утилитку весом в 12 Мб, как Вы думаете, что я там нашёл? Правильно: forms.dcu, почти весь jvcl, VirtualStringTree... В итоге её размер сократился до 0,7 Мб. А ведь таких утилит в инсталляторе дюжина и передать клиенту можно только по интернету (в Ханты-Мансийск). Мораль: Иногда размер - предупреждение, что в коде что-то не так.

    ОтветитьУдалить
  31. >>>Отсутствие мотива писать программы хорошо.
    Интересная позиция. Честно говоря, не понимаю в чем тут связь, т.к. четко разделяю процессы кодирования, тестирования и отладки, которые идут друг за другом и не пересекаются.
    Исходя из того, что вы написали, очевидно предположение, что сейчас всем нравиться писать дерьмовые программы, т.к. очень легко искать и исправлять ошибки... Другими словами, можно сказать, что все проблемы в IDE. Ну и кто мешает писать код в Блокноте и собирать приложения при помощи консольных утилит?
    У меня был однажды опыт кодирования на Ruby в NotePad++, не вдавался как там осуществляется отладка (отладчиком никаким не пользовался), это сильно отразилось на стиле кодирования, не могу сказать, что получил от этого какое-то удовольствие..

    >>>А как быть с событийно-ориентированным программированием
    А какая разница? Ну есть у вас какое-то событие, кто запретит при его выполнении вызвать сильно запутанный код? Я поэтому и писал, что все зависит от архитектуры: архитектуры, на которой выполняется код и архитектуры самого кода...

    ОтветитьУдалить
  32. сейчас всем нравиться писать дерьмовые программы
    Не совсем так. Не все мотивированы использовать всю мощь языка для достижения цели. И это может иметь последствия, как то обычная работоспособность программы. А на самом деле, просто работоспособные программы сейчас и школьник может писать. Но вот стоит добавить требования надежности, алгоритмической устойчивости... или банально спросить как будет выполняться одно из требований ГОСТ'а: "Неправильные действия персонала не должны приводить к аварийной ситуации" то сразу становится ясно, что простых приёмов кодирования недостаточно. Проблема в том, что оценить такие тонкости продукта может только специалист. А ведь не все начальники(заказчики) являются специалистами.
    Так что дело не в блокноте...

    >>>А как быть с событийно-ориентированным программированием
    Всегда считал что форма, содержание и способ выражение достаточно связанные вещи. Так что и архитектура, и парадигма и способ кодирования достаточно взаимосвязаны.

    А какая разница?
    Таки СОП - парадигма или нет? Мне даже самому стало интересно.

    вызвать сильно запутанный код?
    В том то и дело, что писать надо так, чтоб не было вообще как бы то ни было запутанного кода...

    архитектуры, на которой выполняется код
    Речь шла, вроде, только о написании программ. А если учесть специфику этого блога - то только о написании программ в дельфи.

    З.Ы.
    Размышлял по поводу формулы:
    уровень квалификации программиста обратно пропорционален количеству прогонов программы
    (0)

    Обозначим уровень квалификации программиста как УКП, а количество прогонов программы как КПП.

    Запишем формулу как УКП ~ 1 / КПП.
    Добавим в формулу учет отладчика, в виде коэффициента усиления отладчика кажущегося уровня квалификации программиста - КУО.
    Обозначив кажущийся уровень квалификации программиста через КУКП, а далее, для простоты, как КУКИШ, запишем:

    КУКИШ = КУО * УКП
    так как, по сути, (0) можно переписать как:

    КУКИШ ~ 1 / КПП

    то

    (1) КУО*УКП ~ 1 / КПП

    Что может дать нам эта формула? Вроде все переменные не измеряемые...
    Но! Попробуем применить эту формулу для сравнения версии отладчиков.
    Сравнивать отладчики будем через коэффициент соответствия:

    КС = КУО_1 / КУО_2.

    Где КУО_1 и КУО_2 - это КУО разных версий отладчика.
    Запишем формулу (1) для разных версий отладчика:

    Версия 1:
    КУО_1*УКП ~ 1/КПП_1

    Версия 2:
    КУО_2*УКП ~ 1/КПП_2

    Предположим, что все остальные, не показанные в формуле, члены уравнений постоянны,
    и не зависят от количества прогонов программы. Тогда можно записать:

    КС = КУО_1/КУО_2 = КПП_2/КПП_1.

    Сформулируем полученный результат:
    КС - это отношение количества прогонов программы, необходимых для отладки, одним программистом при разных версиях отладчика.

    Чем выше КС для новых версии отладчиков, тем выше профессиональный уровень инструмента.
    Для сравнения разных версий инструментов отладки, введем точку отсчета: базовый отладчик дельфи.
    Т.о. для каждого стороннего инструмента отладки справедлива формула:

    КС = КУО_Delphi / КУО_Tool = КПП_Tool / КПП_Delphi.
    Так как КУО_Delphi - величина постоянная, и необходимая, примем её за единицу. Тогда

    КУО_Tool = КПП_Delphi / КПП_Tool.

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

    Жду вариации на граничные значения КУКИШ'а, КУО и КПП, а также новые обозначения.

    ОтветитьУдалить
  33. >>Жду вариации на граничные значения КУКИШ'а, КУО и КПП, а также новые обозначения.
    Разговор ни о чем. Кто придумал эту формулу? Кто в отрасли ее принял? Где можно об этом почитать?
    >>КУКИШ = КУО * УКП
    откуда такая уверенность? Почему на кажущуюся квалификацию не влияет, например, цвет трусов? Почему стоит именно знак равенства? Почему стоит знак умножить, а, например, не плюс? Где вас учили перемножать апельсины на яблоки?
    >>уровень квалификации программиста обратно пропорционален количеству прогонов программы
    Кто автор идеи? Что-нибудь про экстремальное программирование слышали?

    ОтветитьУдалить
  34. >>уровень квалификации программиста обратно пропорционален количеству прогонов программы
    Что-нибудь про экстремальное программирование известно?

    КУКИШ = КУО * УКП
    Не обижайтесь, но какая-то туфта: где вас учили, что можно проводить вычисления над разнородными элементами. Эта формула аналогична: ананас = апельсин * яблоко

    А вообще тянет на холивар, я уже в таком участвовал, поэтому тихо мирно иду заниматься своими делами... Желаю успехов...

    ОтветитьУдалить
  35. Где можно об этом почитать?
    В книжках, аналогичных "мифического человекомесяца". Точно не помню.

    Почему стоит именно знак... равенства?...умножить?
    Потому что так введено понятие коэффициента усиления отладчика. Разговор не про трусы.


    где вас учили, что можно проводить вычисления над разнородными элементами
    КУКИШ и УКП - это кажущийся уровень квалификации программиста, и собственно сам уровень квалификации программиста. Хотите сказать они имеют разную размерность? Очень интересно. Расскажите поподробнее, пожалуйста. А то, может, в формулу что добавить придется...
    А коэффициент усиления отладчика он и в Африке коэффициент...


    Вы написали кодировал на Ruby в NotePad++, не вдавался как там осуществляется отладка
    Таким образом, КУО = 0. Следовательно, Ваш личный КУКИШ в этой ситуации тоже = 0.
    При этом уровень Вашей квалификации не изменился.
    Таким образом:
    "это сильно отразилось на стиле кодирования, не могу сказать, что получил от этого какое-то удовольствие" - эффект нулевого КУКИШ'а!

    ОтветитьУдалить
  36. Всё это конечно до определенной степени верно, НО сейчас всё большей популярностью пользуются КПК, которые по мощности сравнимы с персоналками десятилетней давности. Понятное дело для дэльфи это сейчас не актуально, но вроде бы движение в сторону кроссплатформенности есть, так что на размер стоит иногда поглядывать...

    ОтветитьУдалить
  37. Всё зависит от назначения проги и размера выгоды, которая будет получена при подключении больших библиотек. Писать заново полнофункциональный FTP класс на чистых сокетах - идиотизм. Но если нужно состряпать утилитку с незначительным GUI, состоящим из одного окна настроек - то тут лучше заюзать винАПИ и не раздувать проект подключением Forms.

    ОтветитьУдалить
  38. Все участники истории неправы.
    Одни в том, что хотели бы оптимизировать там, где не нужно. Другие, что забыли об оптимизации вообще. Стоит перейти к разработке под популярные мобильные устройства или под встроенные системы вообще, да и просто любой критически важный компонент системы, как всё "вдруг" изменится.

    ОтветитьУдалить
  39. Странно, но между программой A < B, обычно выбираю B, ибо считаю, что B имеет либо больший функционал, либо приятный интерфейс. Другой подход а случае администраторских приложений.

    ОтветитьУдалить
  40. Искусством иногда тоже забавно заниматься :)
    Написать программку размеров в немножко байт, что-то делающую.

    ОтветитьУдалить
  41. Согласен с автором. Оптимизация ради оптимизации вредна. Выбирая между глубоко-оптимизированным кодом и менее-оптимизированным, но более легким для сопровождения - выберу второе. Кто считает иначе, видимо, никогда не работал в крупной коммерческой софтварной компании.
    PS: Кстати тем, кто писал о строгом порядке "разработка, отладка", "прогоны" и т.д. следует учить современную матчасть: TDD, экстремальное программирование, рефакторинг
    С уважением, DevExpress

    ОтветитьУдалить
  42. Эх... Я ещё не программист, а уже тоже поражён болезнью... Это не то что физически неудобно, а как бы стыдно чтоль, что сделал не идеально...

    300 Мб?? Апупеть у вас комплекс... Я б тоже ругался... :3

    Хотя "Давайте загибать пальцы" заставило задуматься... Ненадолго...)

    А вообще так и есть - мне просто нечем больше себя занять... Я человек у которого напрочь отсутствует фантазия... Я тупо не могу придумать что писать... Вот и вылизываю старые проекты до блеска...

    Кстати про ДНК... Группой учёных было доказано, что так называемые "мусорные гены" (вроде они вообще не в самой ДНК, а рядом с ней "плавают") имеют не меньшее значение чем сама ДНК и без них ничего не было бы... Это всё равно что программу на Делфи компилировать без менеджера памяти... %)

    ОтветитьУдалить
  43. >>> Это всё равно что программу на Делфи компилировать без менеджера памяти... %)

    Тогда уж скорее без некоторого кода VCL. Вроде и не используется, но вроде так и должно быть.

    ОтветитьУдалить
  44. >>> Я тупо не могу придумать что писать...
    >>> Вот и вылизываю старые проекты до блеска...
    Эх, а я вот наоборот не могу довести большинство прожектов до состояния которое не стыдно показать. После того, как что-то заработало вдохновение уходит... :)))

    ОтветитьУдалить
  45. Тут заметил такую особенность. Мой компьютер превратился в помойку.

    Ну что такого плохого в размере? Да как бы ничего.

    Но проблема от в чём. С детства нас учат поиграл в игрушки убери. Сделал уроки убери учебники и тетради.

    Прилежанием я не отличался. И как видите оно дает о себе знать.

    Первое что попалось. Это проблема с жестким диском. Вечно не хватает.
    Затем я заметил что у меня почти исчерпалась вся оперативная память.
    Да и из гибернации грузится долго (тут прямая связь с памятью). Да и вообще процесс загрузки тормазит.

    Так буквально на днях задумался, а почему так? Да всё по тому что я забыл о прилежании вернее никогда и не знал.

    Основной потребитель памяти это опера. Дело в том что у меня было открыто не счётное число ссылок. Ищешь одну тему то другую. А затем не закрываешь думаешь еще понадобится.

    А надо так делать. Поработал, то что задень на открывал закрой. А если что-то понадобится сейчас просто сохраняю ссылки.

    Расход памяти упал в 2 раза! с 2ГБ до 1Гб.

    А еще на днях подсчитал примерное число программ. Так вот получилось что у меня одну функцию выполняют 3 программы! (к примеру компиляторы Visual C++, GCC, Embidatel C++; Delphi, FreePascal, Borland Pascal или графические редакторы paint, Photoshop, Gimp) Ну с этим приходится смериться.

    Да и мало того в процессах у меня запущенно очень много всего. 125 процессов при реально необходимых мне 20, максиму 30! А всё потому что ставишь что не попадя, а за чистотой не следишь. Буду чистить.

    Но, вот по поводу размера программ. ДА что-то они много едят. Да, собственно я не против этого. Но дело не в этом, а в том что мы перестали делать качественно программы. Да не хватает времени да и до идеала далеко. Но дело не в этом, а в том что мы перестали следить за чистотой программ. Кладем в них всё что не попадя. В результате каждая программа есть мини помойка есть всё что нужно и куча не нужного. Скайп занимает в памяти под 30мб при этом майл.ру агент выполняет такой же функционал, а занимает 8.5 мегабайт. И это еще не придел.

    Explorer(проводник) ест 10-15 мегабайт. При этом если взять тотал командер, то тот ест 600-1500килобайт. И это не потому что они оптимизировали, а потому что не пихали всяких помоек внутрь. Ради интереса пробовал написать свой Explorer эффект такой же.

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

    ОтветитьУдалить
  46. http://www.delphimaster.ru/cgi-bin/nuts.pl?showpage=2 :

    Я думаю, на форуме общаются не только новички.
    Но среднего и высшего уровня программисты.
    У меня есть к вам предложение:
    "Давайте создадим программу - файловый менеджер".
    Сложно конечно на чистом API, но нас много.
    "Если долго мучатся что-нибудь получиться".

    Представьте Ваши Имена, будут красоваться в окне:
    "Программу создали:..." - согласитесь приятно.
    Если все согласятся, то можно эту программу пустить в свет.
    А создадим мы её на данный момент для личного использования.
    "Хватит по одиночке делать программы – мы не волки".
    "Пора создавать группу!!!". Эффект будет на много значительней.

    Моя цель создать программу для русскоязычного населения,
    русскими руками и с минимальным размером.

    ОтветитьУдалить
  47. ...странно, мне казалось, что именно этим (повышением образованности и качества программ) я и занимаюсь у себя в блогах
    За что автору огромный презент

    Упрощение отладки, видимо, должно влиять на процесс отладки, но никак не на процесс кодирования?
    А для чего же тогда вообще нужна отладка? Не понял...

    Иногда размер - предупреждение, что в коде что-то не так
    Но только иногда. В целях оптимизации и ускорения работы мне пришлось раздуть exe-шник с 5 до 16 mb, затем половину кода вынести в dll, уменьшив общий вес проекта до 12mb, затем все пересобрать с runtime-пакетами, получив 9mb. Я увеличил размер проекта на 80% ради увеличения производительности в 20раз!
    Учитывая, что в отдаленных регионах у заказчика в подавляющем большинстве железо 7-10 летней давности при отсутствии финансовой возможности upgrad'а, подобное увеличение размера как нельзя более актуально, а уж насколько бОльшее увеличение - Ваш профессионализм в ваших руках!

    Давайте создадим программу - файловый менеджер
    Еще один клон TotalCommander'а? А зачем? Ради объединения в команду? - бессмыслица... Ради красования имен в about? - гордыня еще никого до добра не доводила.

    ОтветитьУдалить
  48. Писал как-то систему, ориентированную на "общение" с блоками управления газовых котлов и общекотельными. Мало кому надо, используется только с блоками завода, на котором работал. Заказчики проекта - дубовые мужики из районного ЖКХ. Все уместилось в 20-30 мегабайт вместе со справкой. Знаете, какое было первое требование моего шефа? Увеличить размер минимум в 10 (ДЕСЯТЬ!!!) раз. Зачем, спрашиваю? "А за мелочь требовать большое бабло как будешь?" Пришлось накручивать чуть ли не мультики диспетчеру про то, как у него замечтательно горячая вода по трубам бежит. А вы говорите, оптимизация...

    ОтветитьУдалить
  49. Анонимный8 июня 2011 г., 7:46

    На дельфях практически невозможно собрать компактный исполняемый модуль. Отсюда и отрицание оптимизации размера в среде субтропических кодеров. Внезапно, 10Мб секции .code = 10Мб физической памяти куда ее загрузчик залочит. Типа того.

    ОтветитьУдалить
  50. 640К - ДОС режим, иногда очень помогает. Винда -это мультирежим и управление апараткой в ней невозможно правильно выполнить. Поэтому при таком режиме каждый блок ОЗУ дорог. А главное в том, что материнки 286-386 жрали очень экономичные и не требуют дополнительного охлаждения. На этом можна заработать по моему скромному мнению.

    ОтветитьУдалить
  51. Этот комментарий был удален автором.

    ОтветитьУдалить
  52. Хотелось бы все же высказаться.

    У такого взгляда "юзеру все равно, сколько кода вы затратили - абы работало!" есть две стороны медали.
    1) Да, ему действительно все равно. Со стопицотным размером оперативки, мегамильонной герцовостью проца, и винтом на тыcячу-тысяч гигов - да, уже как бы и все равно. Знаю сам, что бабкам-секретаршам, юзерам-ламерам-геймерам/чайникам всегда было все равно на размер - абы прога "заливала в контакт фотки на 1 гигабайт".;
    2) Но, уважаемый Александр, вы совсем забыли о том, что не все так просто...
    - Зачем пишутся библиотеки типа KOL? Наверное оттого, что Кладов "болен болезнью (неизлечимой/маразмом)"? Или потому, что он узрел: "Хм, может в VCL не все так гладко..."? Вы не подумали, что в структуре VCL действительно не все хорошо?
    Конечно, юзеру это неинтересно, опять же! Но чем плохо написать какую-то программу меньшего размера, чем у кого-то, если усилия будут затрачены такие же, а то и меньшие. На данный момент KOL позволяет писать маленькие приложения без особых затрат/затраха мозга.
    - Зачем пишутся пакеры типа UPX и других? Возможно да, они еще со времен Сталина, когда они нужны были. А щас типа просто допиливание старого кода. Но может и нет, и оно действительно приносит пользу. Сказать не могу точно...

    Вспомним про кейгены. Почему они такие маленькие? Ведь можно слепить кейген в 1 МБ и круто будет) И музон в MP3 влепить, или сразу во флаке, чтобы поц с крутой акустикой запустил и радовался... Но пишут же их на азме (чаще всего), используя упаковщик. И пользуются ими не только "больные програмеры"...

    Идем дальше: трояны/логгеры/вирусы и прочая малварь. Предложи на хак-форуме троян на 10 МБ (дельфа, вцл)... Да засмеют, и пойдут искать другого кодера, менее больного. Данная категория софта даже в современное время раздутых винтов и кучи оперативной памяти требует малого размера. А почему? Ответ напрашивается сам собой...

    Распространение
    Из этой же темы вытекают и другие следствия, но обо всем по порядку.
    Кто-то сделал Photoshop на 1,5 Гб. А кто-то изловчился, и сделал Paint.NET на пару десятков МБ. Разве дело только во фриварности? Вовсе нет.

    Нельзя забывать, что VCL и компилятор Delphi - это не только сам код, писанный юзером. Это еще и кучи картинок, которые ничуть не используются в приложении. Строковые ресурсы, которые так же нужны. Релоки. Унаследованные классы объектов, которые не имеют к коду никого отношения. Или это все нужно? Авось когда-нибудь и пригодится...

    ОтветитьУдалить
  53. Paint .NET он легкий и бесплатный, но порой не хватает некоторого функционала фотошопа. Именно поэтому всегда в папке с дистрибутивами припрятан фотошоп. Опять же те же кряки если рассматривать, там есть смысл для уменьшения размера как показатель "насколько я крут-шикарен, что мало того сломал защиту в 100к$ да и еще хак уместил в 64кб". Это обычное писькомерство.

    Автор то и писал о том, что оптимизация должна быть к месту. Всегда выигрывает скорость разработки.

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и (опционально) ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.