Уважаемые
Жека и
PashaВы что измеряли-то?
Вы в курсе, что помимо вашего кода, который вы написали на Делфи, и который откомпилился в какой-то исполняемый код, в вашем ехе-шном модуле присутствует еще "посторонний" код?
Под посторонним кодом я подразумеваю, код прилинкованный из разных библиотек и пакетов. Причем, надо заметить, что он раз в 10 будет больше по объему, чем Ваш откомпиленный код. В экзешнике так же присутствует код загрузки, код релокации, и другие объекты. Я не особый спец по Делфям, поэтому прошу специалистов поправить, где я ошибаюсь.
И что самое забавное, этот код, Делфя-прога таскает с собой постоянно. Прямо как тот чудак, который таскает по всем коммандировкам тяжеленный чемоданище с постельным бельем, тапочками, сопогами, графином, стаканом, настольной лампой, телевизором, гантелями, ... короче со всем своим барахлом.
Я не знаю точно как, но Делфя позволяет сгенерить код ехе-шника без этого хлама. Хламовник подключается динамически из соответствующих dll или паков. Специалисты -- подскажите!
Вторая забавность состоит в том, что если вы передаете свою супер-пупер прогу кому-то, допустим мне, а у меня Делфями уже лет 10 как не пахнет, то вы должны обязательно передать мне вместе с ехе-шником все необходимые пакеты и длл-ки. Неисключено, что некоторые из них потребуют регистрации в реестре. Иначе я не смогу запустить вашу прогу.
Другой вариант. Вы пишите прогу в Visual C++ 6.0 под MFC. Вы будете наверно удивлены, тем, что объем вашего кода ехе-шника будет исчисляться несколькими десятками килобайт. Недостающие компоненты будут так же подгружаться динамически из библиотек. Но фокус состоит в том, что передавая кому-то ехе-шник вам скорее всего не потребуется озаботиться длл-ками, т.к. необходимые длл-ки M$ поумолчанию включает в дистибутив Винды.
Конечно, если вы хотите прилинковать библиотеки статически, то можете это сделать. Тогда ваш код буде автономен (на подобие Делфи-ехе-шника), а его объем будет сотавлять 150-200 кило.
Если, вы пишите консольное приложение на плюсах, и не используете MFC, то свой "шахматный" ехешник сможете уменьшить до 20-30 кило.
Что касается Шарпа. Тут объемы ехе-шников тоже будут маленькие, т.к. M$ опять таки подсуетилась и впарила всем желающим Framework, объем дистрибутива которого занимает несколько десятков мегабайт. Установив фреймворк один раз, вы получаете среду исполнения для многих программ от разных производителей. Это чем-то напоминает Делфи-подход с использованием пакетов, но отличается тем, что масштабы больше в разы.
Лет 15 назад, я отличным "железячником" и типа начинающим программистом. Я плохо знал Паскаль и так же плохо знал Си. В те времена бал правила Борланд. Я понимал, что мир программирования развивается очень динамично. Знать два языка -- это все равно что сидеть на двух расползающихся стульях. Поскольку времени всегда не хватает, то либо ты будешь знать два языка так себе, либо один, но очень хорошо. Поэтому возникла задача выбрать какой-то один. Я начал тестировать Turbo-C 2.0 и Turbo Pascal 5.5. Сначала я написал оболочку (типа борландовской IDE) с ниспадающими цветными менюшками и горячими клавишами. Простую (пустую) оболочку, не наполенную каким-либо функциональным кодом. Си-шный ехе-шник занимал что-то около 8-10 килобайт, в то время как Паскалевский раза в три-пять меньше. Я тогда подумал -- вот она истина! И стал писать на Паскале. Вскоре я понял, что Паскаль навязывает мне какие-то догмы... А когда попробовал вернуться на Си, то к своему удивлению увидел, что писать на Си оказалось легче, что для больших программ объем кода для Си и Паскаль ехе-шников становится с точностью до наоборот. Си-шный ехе-шник изначально имеет большой объем стартового кода, т.к. он делает больше работы, в отличие от Паскалевстого ехе-шника, у которого стартовый модуль очень маленький. И не смотря на то, что линковка Паскалевских библиотек происходила более изящно, и код должен был бы получаться более компактным я столкнулся с проблемами оверлейев! Это меня и доканало. В то время как на Си можно было задать модель памяти Huge и работать со всеми 640 килограммами оперативы, Паскаль предлагал оверлеиться по 64 кила. Такие шаманские танцы меня никак не устраивали.
Последний раз я брался за Паскаль, точнее за Делфи, где-то в конце 90-х. Поигрался и оставил в покое. Монструозные ехе-шники просто пугали меня не столько своим объемами, сколько тем, что меня напрягало то, что я непонимал чего там и для чего столько понапихано. Ну, конечно, были и другие веселые моменты... Короче, пройдя через все эти тернии я понял, что если я хочу программировать не только для компов, и при этом слыть хорошим специалистом, я должен чем-то пожертвовать, т.е. от чего-то отказаться. И я сознательно отказался от Паскаля/Делфи. А через какое-то время месяцев я почувствовал легкость в движении, как буд-то открылось втрое дыхание. Мне не нужно было скакасть с одного синтаксиса на другой. Мне пропала необходимость читать как минимум половину периодики и мне не нужно стало отслеживать пследние события в паскаль-сфере. У меня появилось свободное время! Но я его заполнил около си-шными делами и мой профессиональный уровень резче пошел в рост.
Разумеется, сначала я очень переживал эту потерю (паскаль-делфи), но вскоре я словил кайф от содеянного. Это чувство можно сравнить с тем, что вы наконец-то вынесли на помойку старую мебель, которую так долго не могли растаться.
Несколько лет назад я попробовал освоить Шарп с целью отказаться от Си и полностью перейти на него. Поддался M$ рекламе. Поигрался, поигрался и понял, что лучше Си/Си++ для меня нет.
Как я уже говорил, из-за ограниченности ресурсов (в частности -- вашего личного времени на доскональное изучение, копания и пр. работы), вы не можете хорошо знать несколько языков программирования. Широких специалистов не бывает. Бывают только узкие специалисты и широкие делитанты. Идеальный случай -- глубокое знание только одного языка. Вопрос, какого? Паскаль/Делфи привяжет вас к Винде и компам, ожидаются сложности под Линкусом и с микроконтроллерами. Шарп -- аналогично. Жаба, Васик, ПХП -- это языки совершено другого уровня. (Наверно Шарп тоже нужно сюда отнести.) И только Си/Си++ даст вам свободу пересещения с Винды на Никсы, с микроконтроллеров на компы. Вы поймете меня, если вам доводилось писать распеделенные приложения, когда часть функцианальности выполняется на компе, часть в МК. Когда наступает час-икс, и приходится не важно по какой причине часть функционала переносить из компа в МК или наоборот, то вам будет это сделать намного легче, если и там, и там проги созданы на одном языке.
Вобщем, вот. Я понимаю, что я здесь много чего понаписал, что читать этот пост очень и очень мучительно. Но, я ж ведь вас не заставляю это делать. Я написал его не для вас, а для тех, кому это интересно.
Это мой путь. Я его прошел, как смог. И я ни о чем не жалею. Вы можете меня критиковать, высмеивать, искать в тексте нестыковочки, говорить, что все это не по делу или все это лабуда.
Не важно, как вы ко мне относитесь. Важно только одно -- я не боюсь быть открытым для ваших ударов, потому как уверен, что здесь много молодых и талантливых людей, кто еще только начинает свой профессиональный путь и хотел бы послушать как оно бывает у других людей.
// Текст не редактирую, т.к. за день очень устал и хочу спать.