Локальная архивная копия страницы. Оригинал страницы находится по адресу:
https://forum.vingrad.ru/forum/topic-32836/0.html

> Пожалуйста, сэр, могу ли я получить компоновщик? 
:(
    Опции темы
Medved
Дата 27.10.2004, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 3
Всего: 154



Пожалуйста, сэр, могу ли я получить компоновщик?

Автор: Джоэл Сполски
Переводчик: Анар Мустафаев


По неизвестной причине, превосходная и супер современная среда разработки .NET компании Microsoft пропустила один их ключевых инструментов… инструмент который был обычным делом в средах разработки программного обеспечения с, ну, примерно 1950 года, и настолько очевидным, что кажется невероятно странным, что никто не обратил внимание на тот факт, что в .NET, на самом деле, его нет.

О каком инструменте идет речь? О компоновщике (linker). Вот что он делает: собирает откомпилированную версию вашей программы с откомпилированными версиями библиотечных функций, которые ваша программа использует. Затем, он удаляет те библиотечные функции, которые ваша программа не использует. И в конце концов, компоновщик создает один бинарный выполняемый файл, который люди могут запустить на своих компьютерах.

Вместо этого, в .NET реализована идея «среды времени выполнения» (runtime)… большая, 22 мегабайтная, парообразная куча кода, которая динамически компонуется и которую каждый обязан записать на свой компьютер перед тем как использовать .NET приложения.

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

Фактически .NET включает в себя обширную технологическую систему называемую «явности» (manifests), которые явно сложны и задуманы для того чтобы каким-то образом только правильная среда выполнения могла быть использована с данным приложением, но я не знаю никого, кто может разгадать как их использовать.

Все это требует рассказать одну историю. На вечеринке в Fog Creek, в канун Нового Года, мы хотели чтобы в главной комнате несколько компьютеров показывали обратный отсчет времени до полуночи. Майкл написал приложение на C# с WinForms за 60 секунд. Это отличная среда разработки.

Моя работа заключалось в том что бы записать программу countdown.exe на три компьютера и запустить ее. Это звучит просто.

Как бы ни так. Двойной щелчок на EXE и я получаю смешное недружелюбное сообщение об ошибке где-то в mscoree.dll или что-то такое, с неуместным дампом моего пути. Естественно, нет сомнения в том что среда выполнения .NET просто не была проинсталированна. К счастью я программист и сразу определил в чем проблема.

Как я инсталлирую среду выполнения? “Простейший” путь через Windows Update. Но Windows Update сначала заставляет меня проинсталлировать все критические обновления, а только потом среду выполнения. Это, разумно, да? Два из “критических” обновлений – это Windows service pack и новая версия Internet Explorer, и оба требуют перезагрузить компьютер.

Как я уже говорил, для запуска этого маленького .NET приложения мне нужно загрузить 70 или 80 мегабайт (хорошо, что у нас скоростной доступ в Интернет) и перезагрузиться три или четыре раза. И это в софтверной компании! Я знаю как долго это длится, потому что когда загрузка началась в первый раз, я включил «Office Space» на большом экране, и к тому времени когда фильм закончился, инсталляция почти завершилась. Каждые десять минут во время просмотра фильма я должен был вскакивать, бежать к компьютеру, чтобы нажать ОК в каком-нибудь дурацком диалоговом окне.

Этого достаточно чтобы вызвать разочарование от использования доморощенных программ. Но подумайте о нашем продукте CityDesk. Практически все наши пользователи загружают бесплатную пробную версию перед тем как купить этот продукт. Им надо загрузить около 9 Мб и не предъявляется никаких дополнительных требований. И, практически, пока никто их этих пользователей не имеет среды выполнения .NET.

А если мы попросим пользователей из небольших организаций и домашних пользователей, сначала пройти через весь ад инсталляции среды выполнения длительностью с целый фильм, то, я думаю, мы потерям 95% из них. Они пока не клиенты, они потенциальные клиенты, и я не могу позволить себе отказаться от 95% моих потенциальных клиентов только ради использования более удобной среды разработки.

“Но, Джоэл”, могут мне сказать, “это же ясно, что скоро у достаточного количества пользователей будет эта среда выполнения и тогда проблема исчезнет.”

Я тоже так думал, а потом обнаружил что Microsoft поставляет новую версию среды выполнения каждые шесть или двенадцать месяцев. Понемногу увеличивающееся количество людей имеющих ее опять падает до нуля. И будь я проклят, если я буду тестировать мое приложение на трех различных версиях среды выполнения только для того чтобы получить прирост клиентов на 1,2% на одну из трех версий.

Я просто хочу все скомпоновать в один статический EXE файл, который для запуска не предъявляет никаких особых требований. Мне не важно, что он несколько больше. Все что мне было бы необходимо - это функции которые я действительно использую, интерпретатор байт кода и немного от среды выполнения. Мне не нужен целый компилятор C# который является частью среды выполнения. Я уверяю что код CityDesk не нуждается в компиляции какого-то ни было программного кода на C#. Мне не нужны целых 22 МБайт. Самое большее что мне нужно это 5 или 6 МБайт.

Я знаю компании, которые обладают технологией сделать это, но им нужно разрешение от Microsoft чтобы распространять части среды выполнения, такие как интерпретатор байт-кода. Эй, Microsoft, проснись, дай нам замечательный кусочек технологий 1950-х годов, и позволь мне сделать один EXE файл, который запускается на любом компьютере с ОС Win 98 или более поздней без всяких дополнительных требований. Но нет, .NET фатально не дружелюбна к пользователю, который скачивает софт.


В английском оригинале статья называется
Please Sir May I Have a Linker?




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vaulter
Дата 28.10.2004, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



как всегда, делали по уму, но лажа всетаки вышла


--------------------
PM MAIL WWW ICQ   Вверх
Kurt
Дата 28.10.2004, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Эх..
Вот именно после таких публикаций у меня отпадает охота брать в руки .NET этак на неделю..


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Дрон
Дата 28.10.2004, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 92



Да уж... Не весело.
Я вот, например, даже не знаю, какая сейчас последняя версия .Net :(

Но, с другой стороны, разве для java не нужно скачивать runtime environment?



--------------------
Да. Именно так.
PM   Вверх
AndyY
Дата 28.10.2004, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: нет
Всего: 4



Непонятно, кто мешает включить в installer проверку и прямую ссылку на закачку framework.
Также непонятно почему у пользователя на компе последние патчи не установлены - зачастую они весьма полезны.
впрочем, из неверных предпосылок сделан правильный вывод - для модели распространения продукта через inet .net к сожалению мало пригоден. Потому что тащить и 20 мегов с сети я бы заленился. А вот для систем распространяемых на Cd - вполне.


--------------------
PM MAIL WWW   Вверх
mr.DUDA
Дата 28.10.2004, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Не согласен. В корне неверный подход !!! Для .NET-приложений, "скомпилированных" в IL-код, не требуется никаких сервис паков !!! Даже если поставить .NET Framework второй версии, то EXE-сборка сгенерированная под .NET старой 1.1-версии, ЗАПУСТИТСЯ и не будет требовать обновления через Windows Update !!!!

У меня два варианта, почему не запустилась прога (кстати, автор ни слова не сказал о том, что на компе НЕ БЫЛ установлен .NET Framework ! Это то же самое, что пытаться запустить клёвое и безглючное Java-приложение на машине без установленной Java-"виртаульной машины" --- тут уж ТОЧНО никакой Windows Update не спасёт)... Единственное возможное предположение:

программа-счётчик обратного отсчёта была скомпилирована (пардон, выражаясь нормальным языком: "сборка была собрана") на машине с установленным .НЕТ фреймуорком, а запускалась на машине БЕЗ установленного фреймуорка - это то же самое что запускать виндошные программы под досом


второй вариант:

автор понятия не имеет о том, о чём идёт речь... Просто рассуждает на уровне юзера: раз майкрософт, значит мастдай... Это похоже на крестовый поход ДОС-а против Виндовса.


--------------------
user posted image
PM MAIL WWW   Вверх
AntonSaburov
Дата 29.10.2004, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



Ну вообщем IMHO автор действительно пургу сморозил. Windows XP например идет сразу с .NET Framework.
И вообщем-то эта проблема звучит на уровне - почему у меня на Windows не запускается Oracle под Linux. Или почему Word 7-ой не идет под Windows 3.1.

PM MAIL WWW ICQ   Вверх
stab
Дата 29.10.2004, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Кроме того, есть уже утилиты, которые могут умешьшить размер дистрибутива до желанных 5Мб. Например http://www.remotesoft.com/linker/samples/index.html . Думаю со временем их все больше будет и цены упадут, может и сама MS заинтересуется и сделает что-нить, хотя это маловероятно.

Смысл правда в таких утилитах нулевой, это все равно, что с собой таскать урезанный дистрибутив Win95 (около 3Мб, если мне память не изменяет -- есть такие умельцы), только для того что бы запускался, например FAR :)
Добавлено @ 17:28
кароче, чувство у меня такое, что таких писателей нанимают фирмы, которые поляну себе под бизнес вытаптывают :)
Добавлено @ 17:28
off: или это паранойя?! :D


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Kurt
Дата 29.10.2004, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Может и паранойа, но, блин, все-таки подобные "статьи" наводят на разные грустные мысли о бренности бытия и .NET-технологии в частности..
Эх, поднатужилась бы M$, написала бы нормальный .NET-Framework под другие платформы - я б им памятник поставил. Из чистого золота. :D


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
mr.DUDA
Дата 29.10.2004, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Kurt, мелкомягкие и так бешеные бабки вкладывают в развитие новых технологий. У них уже очень многое получается настолько хорошо, что под них подстраиваются другие опен-саурс проекты и конторы (!!!), например я видел примочку для Апача для поддержки Web-сервисов, а ещё есть Borland Deplhi 8 без поддержки WinAPI, но с поддержкой дот нет !

Заслугой майкрософт я могу назвать то, что EXE-прога занимает 3-4 килобайта.

Могу назвать и то, что любую прогу или длл-ку можно отладить в любой сбойной ситуации.

А также то, что вижуал студия стала настолько удобной, что расставаться с ней в пользу каких-то там линуксовых псевдовиндошных IDE совсем не хочется...

А ещё хочется припомнить то, что одни и те же проги с одинаковым успехом компилятся как под WinXP, так и под Windows Mobile 2003, которая установлена на любимых всеми PocketPC-совместимых PDA.


--------------------
user posted image
PM MAIL WWW   Вверх
Kurt
Дата 29.10.2004, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Цитата
например я видел примочку для Апача для поддержки Web-сервисов

Если не ошибаюсь, идеология веб-сервисов была придумана НЕ M$ - случайно, не в Java ли это впервые появилось? (это вопрос - я действительно не знаю :))

Цитата
а ещё есть Borland Deplhi 8 без поддержки WinAPI, но с поддержкой дот нет !

После того, ка M$ выступила основным спонсором..

Цитата
А также то, что вижуал студия стала настолько удобной, что расставаться с ней в пользу каких-то там линуксовых псевдовиндошных IDE совсем не хочется...

Согласен, лучше прежних.
Однако она стала занимать просто чудовищное кол-во места на HDD..
Да и тормозит неслабо. На моем ноутбуке с 256RAM - компилит значительное время.

P.S.
Не, народ, я не против .NET-технологий. Просто время от времени возникают сомнения относительно правильности выбора.
Например, мне не очень нравится, что от меня скрывают реализацию всего этого дела, что программисты деградируют (ИМХО!!!), используя все эти системы типа "плюх-энд-плюй". Мы все больше и больше зависим от производителя (в данном случае - от M$)


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
stab
Дата 29.10.2004, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Ну, не знаю... мне кажется ничего от нас не скрывают, наоборот можно весь фреймворк продекомпилить. В том же C++ было нереально узнать что там в runtime библиотеках, а тут пожалста. А про деградацию... что тут сказать, все движется в сторону облегчения труда программиста, чем меньше труда, тем меньше опыта :) С другой стороны, будет больше цениться программирование, скажем, на чистом API и т.д. , но это не надолго :) Еще больше будут цениться грамотные архитекторы больших проектов, т.к. мелкий софт свое отживает, а в большом проекте главное не отдельно взятый программист, а грамотное распределение труда, что невозможно без грамотного проектирования.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Kurt
Дата 30.10.2004, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



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

Т.е. человек перестает быть значимым. Он становится лишь винтиком в софтварной машине. Мне кажется нет ничего хуже, чем потеря ценности личности.
Да, будут цениться проектировщики, а простые кодеры? Чернорабочие?
..
Да и знаю, как это будет выглядеть - поставят "проектировщиком" чьего-нибудь сынка, который полный ноль в этом деле. Он будет тебя постоянно напрягать, но везде главным, все награды и почести будут ЕМУ как основному разработчику и проектировщику. (у меня уже такое не раз было..) Ну, а тебя, как простой винтик, выкинут, когда работа будет почти закончена.. имхо, такова реальность.
Поэтому я против крупных организаций и за мелкий софт.
...
Все вышесказанное - мое ЛИЧНОЕ мнение. Я ни в коем случае не хочу задеть или оскорбить кого-либо.


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
stab
Дата 30.10.2004, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ...


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



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


--------------------
6, 6, 6 - the number of the beast.
arilou
Дата 1.11.2004, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ...

Великий МунаБудвин


Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(Kurt @ 30.10.2004, 14:49)

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

А что такое "простой кодер"? :sample ИМХО, простой кодер = простой оператор асфальтоукладочной машины. Ему сказали, укладывай тут вот так и так, и он укладывает. Кодер - это начинающий программер, у которого опыта маловато для принятия собственных решений.
Так что цениться будут не только проектировщики, а и разработчики.

У тебя есть опыт руководства хотя бы небольшой группой программеров, где знания у народа разные? Знаешь, как трудно доносить до простых кодеров такие понятия, как фабрика классов, стратегия, посредник?

Цитата(Kurt @ 30.10.2004, 14:49)

Да и знаю, как это будет выглядеть - поставят "проектировщиком" чьего-нибудь сынка, который полный ноль в этом деле. Он будет тебя постоянно напрягать, но везде главным, все награды и почести будут ЕМУ как основному разработчику и проектировщику. (у меня уже такое не раз было..)

Честно говоря, я такого не слышал. Чтобы кого-то поставить проектировщиком, надо чтоб у него опыта было много. Какой смысл ставить проектировщиком чайника?

Это сообщение отредактировал(а) arilou - 1.11.2004, 16:31


--------------------
user posted imageuser posted image
PM WWW ICQ