Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 |

 

  Вопрос: Компиляция приложений .NET Добавлено: 25.04.04 11:50  

Автор вопроса:  Ганчиков

До сих пор стеснялся переходить на платформу .NET по одной причине - не знаю, как скомпилировать на нем приложение, чтобы потом запустить его на системе, в принципе ничего о .NET не знающей (например, голом WIN 98). Наверняка должны быть упаковщики, типа Wise Installer (вещь!!) пакующие все библиотеки и контролы приложения написанного на .NET. Я пробовал сделать это WiSe Installer'ом для VB6 - убил систему... В общем, кто меня понял, дайте вразумительный ответ, плиз, потому как писать что-то для себя одного любимого у меня уже нет такого желания, а при переносе на другие винды проблемка безусловно возникает...

Ответить

  Ответы Всего ответов: 40  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 25.04.04 13:31

Вот они проблеммы!!! Ничего не получится, т.е. на незнающую ось придется ставить FW, иначе никак!!! Куски кода из ихней машины конечно же никто выдирать не собирается, так что продолжаем, на пару (и не только), стесняться переходить на NET платформу!

Предыдущий раз запостил неверно... оЧеПятался...

Ответить

Номер ответа: 2
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #2
Добавлено: 26.04.04 04:32

Ты же не пугай меня так :)

От детишек и умственно отсталых ещё можно было ожидать. А что бы профи програмил на интерпретаторе - nonsense in BASIC.

Ответить

Номер ответа: 3
Автор ответа:
 Maxik



Вопросов: 58
Ответов: 201
 Профиль | | #3 Добавлено: 26.04.04 09:53
Меня сейчас вырвет...
@CyRax PTR, ты чего народ оскорбляешь?
Тысячу раз обсуждалось - компилятор это или интерпретатор.
Промежуточную компиляцию не нужно путать с интерпретацией!
По-твоему, программа имеет право на существование, только если она
написана на 100% компиляторе?
Это не профессионализм, а инфантилизм!
"У меня компилятор, значит, круче!" - это мысль крутится в твоей
голове?

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 26.04.04 22:42

> Промежуточную компиляцию не нужно путать с интерпретацией!

Никто ничего не путает. Программа распространяется не в виде PE-файла? Требует исполнительную среду, помимо ОС? Интерпретатор.

> "У меня компилятор, значит, круче!" - это мысль крутится в твоей голове?

Разумеется.

Ответить

Номер ответа: 5
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #5
Добавлено: 27.04.04 06:06

Это всего лишь другая форма интерпретации.

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

Ничего плохого в интерпретации не вижу. Она блестяще справляется со своей целью - обучение.

Компилятором в данном случае является транслятор, преобразующий тексты на БЕЙСИКе в тексты понятные интепретатору.

В случае так называемых "чистых" компиляторов тексты программы преобразуются в тексты понятные ОС и процессору.

Можно назвать компилятором и транслятор, переводящий тексты на БЕЙСИКе в тексты, понятные виртуальной машине. Но конечный продукт будет интерпретироваться на так называемом "внутреннем языке" этой машины.

Отличие продукта такого транслятора от "чистого" интерпретатора только в невозможности постоянного диалога с этим интерпретатором. Его можно назвать интерпретатором-автоматом (или автономным интерпретатором). Но принцип интерпретатора здесь соблюдается. В Экзешнике обычными (или зашифрованными) текстами зашиты команды внутреннего языка виртуальной машины.

В итоге получается самозапускающийся, непонятный для БЕЙСИК-программиста, но всё тот же BAS-файл.

Ну и напоследок краткие коментарии.

>Меня сейчас вырвет...

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

>По-твоему, программа имеет право на существование, только если она

написана на 100% компиляторе?

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

>"У меня компилятор, значит, круче!" - это мысль крутится в твоей

голове?

- Как ни странно а Sharp оказался прав. Действительно круче. Но ведь это дано мне не от рождения - как царский престол или папины миллионы.

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

PS: Если тебе не нравится что обижают твой любимый VB.NET, просто пиши под подобными сообщениями краткие фразы типа "VB.NET - компилятор" без всяких пояснений. Те кто любят VB.NET тебя поймут. А профессионалов переспорить у тебя просто знаний не хватит. Так как VB.NET скрывает их от тебя.

Ответить

Номер ответа: 6
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #6
Добавлено: 27.04.04 08:58

Тут и я хочу вставить свое слово:

А что будет дальше, когда .NET захлыстнет весь мир??? :)

Ответить

Номер ответа: 7
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 27.04.04 09:55

А кто сказал что весь !?

Ответить

Номер ответа: 8
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #8
Добавлено: 27.04.04 10:01

мне кажись, что рано или поздно это произойдет...

А по части всех ваших постов, горяченькая тема, так что я скрываюсь, что бы не получить по кепке, от ПРОФИ и прочих противников .NET

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

Ответить

Номер ответа: 9
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #9
Добавлено: 27.04.04 11:34
РАзумеется, весь мир .Net никогда не захватит, равно как не все
используют Windows, как бы Microsoft ни старалась :)

По теме... Очень уж мне не понравиласть "упорная" точка зрения
Sharp'а.. Поэтому пошёл искать факты... Вот то, что нашёл..

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconjitcompilation.asp
Compiling MSIL to Native Code

Цитата:
---
Before you can run Microsoft intermediate language (MSIL), it must be converted by a .NET Framework just-in-time (JIT) compiler to native code, which is CPU-specific code that runs on the same computer architecture as the JIT compiler. Because the common language runtime supplies a JIT compiler for each supported CPU architecture, developers can write a set of MSIL that can be JIT-compiled and run on computers with different architectures. However, your managed code will run only on a specific operating system if it calls platform-specific native APIs, or a platform-specific class library.
JIT compilation takes into account the fact that some code might never get called during execution. Rather than using time and memory to convert all the MSIL in a portable executable (PE) file to native code, it converts the MSIL as needed during execution and stores the resulting native code so that it is accessible for subsequent calls. The loader creates and attaches a stub to each of a type's methods when the type is loaded. On the initial call to the method, the stub passes control to the JIT compiler, which converts the MSIL for that method into native code and modifies the stub to direct execution to the location of the native code. Subsequent calls of the JIT-compiled method proceed directly to the native code that was previously generated, reducing the time it takes to JIT-compile and run the code.
---

Насколько я понял из данного текста, JIT-compiler компилирует
промежуточный IL-код в машинный код, на чём я настаивал и ранее. Так
какой же это интерпретатор?

Ну ещё вот здесь небольшая "картинка", показывающая процесс компиляции
и исполнения кода .Net.

http://www.dnjonline.com/articles/essentials/iss24_essentials_4.html


Тогда ты спросишь: в чём же роль CLR, если не в интерпретации? Я тебе
отвечу:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconjitcompilation.asp

---
During execution, managed code receives services such as garbage collection, security, interoperability with unmanaged code, cross-language debugging support, and enhanced deployment and versioning support.
---

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

Ответить

Номер ответа: 10
Автор ответа:
 Maxik



Вопросов: 58
Ответов: 201
 Профиль | | #10 Добавлено: 27.04.04 11:38
>> "У меня компилятор, значит, круче!" - это мысль крутится в твоей
голове?

>Разумеется.

Я думал, что это зависит от типа задачи, которую нужно решить...


Уже три темы с одним и тем же бессмысленным спором... Лично я завязываю!

Ответить

Номер ответа: 11
Автор ответа:
 Maxik



Вопросов: 58
Ответов: 201
 Профиль | | #11 Добавлено: 27.04.04 11:38
>- Твой мозг отказывается принять очевидное и это выражается
безусловными >рефлексами, посылаемыми им внутренним органам.

Это не так. Меня тошнит от этого бестолкового спора.

>Похоже что в категорию "детишек" ты не попадаешь.
Намекаешь? Конечно, уже не детенок, но и совершеннолетия еще не
праздновал.
К группе умственно отсталых себя отнести не могу.

Ответить

Номер ответа: 12
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #12
Добавлено: 27.04.04 14:06

> Ничего плохого в интерпретации не вижу. Она блестяще справляется со своей целью - обучение.

Да фиг с ней, с интерпретацией. .NET скрывает от разработчика архитектуру компьютера, заменяя ее интерфейсами разработанных МС объектов, что делает ее и для обучения совершенно непригодной. Что говорить, если даже такое глобальное понятие, как указатель (адрес по сути!), уступающее по глобальности разве что понятиям "переменная" или "оператор" не реализовано!

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

Ты не прав. Именно для ученых, чей предмет не связан с кибернетикой, крайне важна поризводительность и качество программного обеспечения. Это для пользователя допустимо, когда Винда глючит раз в неделю, для любого института фатально, если их программный комплекс, скажем, для расчета конструкций мостов, дает небольшую стойкую ошибку в 5 знаке. Поэтому большинство ученых, чья работа хоть как-то требует программировать, знает его великолепно. В моей лабе минимум 10 человек программируют на порядок лучше меня (а лаба-то небольшая).

> Так как VB.NET скрывает их от тебя.

Абсолютно верно. Специалист по платформе .NET, который помнит весь namespace FW и прекрасно разбирается в тонкостях созданиях WS, скорее всего, никогда не столкнется с такими базовыми понятиями, как стек, регистр, машинный код и т.п. А ведь это основы.

> А что будет дальше, когда .NET захлыстнет весь мир??? :)

Я уже писал, кажется, что платформа Windows только кажется большой, на самом деле это только ОС для домохозяек, и она не используется ни в одной серьезной области.

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

Зато качество программного обеспечения будет зависеть только от качества .NET FW, а оно, разумеется никогда не будет высоким, что известно хотя бы по количеству патчей на Винду :P

Почему мне нравится ассемблер? Потому, что я знаю, что будет исполнять процессор и где может быть ошибка, как она будет проявляться и как ее ликвидировать. Я могу ПОЛНОСТЬЮ контролировать свой код, его выполнение, тонкости его работы и потребление им ресурсов. В случае .NET мне остается только НАДЕЯТЬСЯ, что мелкомягкие закодили его нормально. Я мог бы в этом удостовериться, если бы они открыли его исходники, но они этого никогда не сделали. Подробнее мою позицию можно рассмотреть на примере - в код на VB6 вносятся ошибки метрового msvbvm60.dll, например то, что его функции не поддерживают многопоточной модели (а точнее поддерживают настолько непредсказуемо, что использовать ее все равно, что выпустить на волю голодного тигра). В программы на .NET вносятся ошибки 20 метрового FW, содержащего не только функции типа __vbaStrLen, но и код, который будет УПРАВЛЯТЬ твоим собственным кодом, подтирать за ним мусор, контролировать его действия. Достаточно незначительной ошибки, как ТВОЙ код будет невозможно контролировать, причем локализовать ее будет невозможно в принципе (исходники .NET-то засекречены). Эта ситуация напоминает случай из анекдота: "На вашем компьютере обнаружена ошибка, называется Windows". Всем известны ошибки, которые латаются чаще раза в неделю, ведущие к переполнению буфера, соответственно к возможности исполнения произвольного кода. Представьте, что творилось бы в мире, если бы для каждой открытой дыры в Сеть тут же бы выкладывался эксплоит по получению шелла на открытую уязвимость с удобным интерфейсом (типа RPC DCOM GUI Exploit :), кстати, кто-нибудь знает оффсет для русской XP с SP0? :D)? В компьютерном мире царил бы хаос. Если допущено столько ошибок на уровне школьника, сколько же допущено концептуальных ошибок, которые выследить а уж тем более исправить сложнее на порядок??? Что-то в этом роде было опубликовано, когда писалось о том, что приложение неможет определить источник сообщения - Windows или вредоносная программа, в результате чего можно передать в необрабатываемое событие указатель на занесенные предварительно в адресное пространство приложения данные (например, в текстовое окно), после чего DefWindowProc исполнит этот код. Тогда все натолкнулось на то, что слишком сложно найти оффсет внесенных данных и необрабатываемые события так, чтобы код выполнился. Однако это был только пример. Я бы с радостью исключил ОС из списка того, что нужно для исполнения моей программы, но сделать я этого не могу. Более того, под Windows я не могу даже удостовериться, что что-то сделано именно так, как мне нужно. Будущее за Open-source системами, тенденция просматривается четкая. Скоро поставить Линукс станет не сложнее, чем Windows, софта под них и так вполне достаточно (это я вас агитирую, изучайте программинг под Линукс :), Бейсик, кстати, есть, например, Lemick Basic) - MS будет лет десять еще бороться, но сдастся. И сейчас, .NET-разработчики, изучая программирование под эту кривую платформу, столкнутся с тем, что то, что они изучали несколько лет, на что потратили много денег и с чего рассчитывали получить намного больше, никому не будет нужно, потому что слишком оторвано от истоков - принципа фон Неймана :) Программирование на .NET, как вызов методов и свойств неизвестно как написанных объектов (даже Borland в своем Delphi, чтобы сгинуло оно побыстрее :) не скрывает исходников VCL!) слишком далеко от программирования реального, область изучения которого лежит между алгоритмами и аппаратным обеспечением.

> Насколько я понял из данного текста, JIT-compiler компилирует промежуточный IL-код в машинный код, на чём я настаивал и ранее. Так какой же это интерпретатор?

Я уже написал о том, что думаю о принципах, лежащих в основе управления машинным кодом.

> Ну ещё вот здесь небольшая "картинка", показывающая процесс компиляции и исполнения кода .Net.

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

> CLR не исполняет код построчно, как это делал бы интерпретатор

Интерпретатор тоже не обязан выполнять код построчно.

Вообще же я предпочту отложить более детальный спор до лета, когда я смогу взять СофтАйс, .NET и посмотреть, что же такое управляемый код, MSIL, JIT-компиляция, что за PE получается в результате и сколько дополнительного (и какого) кода туда пихает МС, не на их красивых рекламных проспектах, а как это есть на самом деле.

> Я думал, что это зависит от типа задачи, которую нужно решить...

VS.NET позиционируется, как средство для создания прикладного программного обеспечения для платформы Windows, поэтому не надо ля-ля. Может, ASP.NET и занимается несколько другими вещами, но это уже, скорее, попытки показать: "А нашим трактором еще можно бордюры красить".

> Уже три темы с одним и тем же бессмысленным спором... Лично я завяз

Ответить

Номер ответа: 13
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #13
Добавлено: 27.04.04 14:18

> Уже три темы с одним и тем же бессмысленным спором... Лично я завязываю!

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

> К группе умственно отсталых себя отнести не могу.

Думаю вызвать бурную реакцию, но все-таки: сколько у вас IQ и сколько вы считаете необходимо для разработки качественного программного обеспечения помимо профессиональным знаний?

Ответить

Номер ответа: 14
Автор ответа:
 Maxik



Вопросов: 58
Ответов: 201
 Профиль | | #14 Добавлено: 27.04.04 14:35
>>VS.NET позиционируется, как средство для создания прикладного
программного обеспечения для платформы Windows, поэтому не надо ля-ля.
Так это же к тебе относится!

Ответить

Номер ответа: 15
Автор ответа:
 Maxik



Вопросов: 58
Ответов: 201
 Профиль | | #15 Добавлено: 27.04.04 14:49
Каких только метафор не было... Автомобили, мороженое, молоточки...

На провокационный вопрос отвечать не буду. Во-первых, не проверял.
Во-вторых, ты переходишь на личности.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам