Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

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

 

  Вопрос: .NET рулит или DLL Hell Добавлено: 01.02.04 06:15  

Автор вопроса:  Павел | Web-сайт: www.vbnet.ru | ICQ: 326066673 
Сегодня я убедился, что .NET действительно рулит...
В бета-тестирование кто-то прислал долбаную игрушку... Что там в
инсталляхе лежал msvbvm60, это ещё ничего... Скачал. Установил.
Потом запускаю прогу, юзающую mscomctl.ocx и ничерта понять не могу:
не загружается, выдаёт ошибку "Out of memory". Открываю VB, он тоже
сразу кучу ошибок вываливает...
Потом оказалось, что эта долбаная игрушка зарегистрировала
mscomctl.ocx, который таскала с собой (в папке, куда установилась), и,
видмо версия кривая попалась, что всё посыпалось...

В .NET бы такого никогда не произошло!

Ответить

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

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 01.02.04 06:29

Непонятно только зачем ему эта ActiveX в игрухе понадобилась?

Такую "Игруху" можно на любом языке написать.

Но ты ж всё исправил?

Ответить

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



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

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 01.02.04 08:01
Я, конечно, исправил. Но неприятен сам факт.
Если бы её установил неопытный юзер, а потом бы стал критиковать, что
"видна опять глючит", потому что другие проги, юзающие mscomctl.ocx не
запускаются...

А про язык я вот по какому поводу: ActiveX требует обязательной
регистрации, причём в системе одновременно может быть зарегистрирована
только одна версия ActiveX'а. Это приводит к "кошмару DLL".
А в .NET этого нет, потому что .NET библиотеки не требуют регистрации,
однвоременно может в одной системе храниться несколько версий
библиотек, и каждая программа работает с той вресией, какая ей нужна.
И вообще там всё сделано так, чтобы таких глюков не было.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 01.02.04 08:14

Из нашей с Алексом переписки. К сожалению он не смог ответить на все мои вопросы. Может ты сможешь?

===

- А что значит что в .NET нет API? Нельзя ли более подробно?

---

- .NET FW презставляет собой набор классов, которые заменяют API

---

- Не понял, можно подробнее?

- Ну например что тип передачи праметров в стёк уже не STDCALL?

- Отличие в чём? Ведь класс это тот же тип. Чем он теперь отличается. Выравниванием? Или чем?

---

- фиг его знает.. Я в .NET еще мало знаю.. Ты лучше Пашу спроси

===

Ответить

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



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

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 01.02.04 08:17
К сожалению, действием CLR на таком низком уровне я не интересовался.
Да и собственно инфы по этому поводу нет, и все механизмы меняются в
разных версиях для обеспечения большего быстродействия.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 01.02.04 08:35

> для обеспечения большего быстродействия

Для обеспечения ЕЩЁ большего быстродействия :)

А вообще называя ActiveX DDL'кой ты оскорбляешь последнюю.

===

Да, ещё, а как там насчёт посланных мной примеров. Можно их выложить на сайт, что-бы я не нервничал?

Ответить

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



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

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 01.02.04 08:44
Я вообще не в курсе примеров, ими User Unknown занимается целиком и
полностью.

Я сейчас тебе ответ пишу по мотивам логов разговора с Alex'ом... ИМХО,
вы просто друг друга не поняли :) Один об одном, другой о другом.

Ответить

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



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

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #7
Добавлено: 01.02.04 08:50
Заодно здесь же на другие твой вопросы постараюсь ответить...

> Alex: VB .NET - это не VB! Это можно сказать, что впринципе C# .NET, но с синтаксисом VB
> CyRax (04:24 AM) : Это как?
> CyRax (04:24 AM) : Неужели С# тоже требует 20 метров библу? Тогда это уже не Си
Все языки .NET равны между собой. Отличны они только синтаксисом, ну и
так, по мелочам, некоторыми возможностями.
Существует множество программ, "перегоняющих" код из одного языка в
другой, например, тулза от MS позволяет в точности переводить код из
C# в VB и наоборот.
Код .NET компилируется в единый для всех язык IL (Intermediate
Language), который хранится в exe. А уже при первом запуске программы
этот код компилируется в машинный код.
Собственно, то, что программы компилируются в IL, позволяет
декомпилировать этот код также в любой .NET язык. Сам пользуюсь
отличным декомпилером Spices .NET, которым вот, буквально вчера,
смотрел внутренности библиотек .NET Framework в коде VB .NET!

И все .NET-приложения (за исключением Unmanaged VC++, если он не
использует Managed extensions, только тут такой вопрос - нахрена
вообще такой язык нужен? ) требуют для запуска .NET Framework, без
разницы, на каком языке они написаны.


> CyRax (04:56 AM) : Насколько я понял существует специальная библиотека, которая переводит или интерпритирует Managed в машинный? Или он существует только в процессе разработки .NET программы.
> Alex (04:57 AM) : Да, такая библиотека есть, и насколько я понимаю - это и есть CLR.
Нет, это называется JIT Compiler (Just-In-Time Compiler).

> CyRax (05:02 AM) : Ну, а ОС то всё равно на машинном коде работает. Значит в любой Win32/64 компилятор может сделать экзешник.
> Да, но потребуется другая CLR. Экзешник под винду (PE) тоже по идее переносим на другие платформы. Эта идея не нова у Микрософта. Только она не имеет практического применения.
Собственно, об этом вряд ли стоит говорить. Мультисистемность (или как
там это называется) - не главное, чего хочет MS от .NET.
Ещё нет нормальных реализаций .NET Framework для других платформ, хотя
попытки имеются (см. Mono и dotGNU).

> CyRax (05:14 AM) : Теперь понятно. Это прототип новой модели, одной из функций которых является переносимость на другие платформы. Но это актуально только для Visual программистов. Понял наконец что я хочу сказать. Эти все фичи актуальны только для Visual Studio. Это они улучшают так свои IDE. Микрософт всегда славился хорошим IDE.
Тут я не понял, к чему ты клонишь... Причём здесь вообще VS? Могу тебе
привести ссылки на другие IDE для .NET, не от Microsoft (даже
бесплатные). Да и создавать приложения .NET можно вообще без IDE,
многие так и делают.

> CyRax: Любой компилятор сможет сделать экзешник под .NET платформу.
У exe'шников .NET так сказать, немного другой формат...
Конечно, он совместим с PE, но расширен, так сказать.
Там идёт сразу передача управления CLR (это, ИМХО, библиотека
mscoree.dll), а CLR уже разбирает всё, что ей надо - ресурсы, IL и всё
прочее, что хранится в манифесте.

> CyRax (05:19 AM) : Ну давай я тебе задам вопрос почему у типа LONG диапазон -+ 2 млрд. Хотя ты может и ответишь, но другие могут и не ответить.
А ты не прав :) У Long (если он со знаком, других я не видел) диапозон
от -9223372036854775807 до 9223372036854775808.
Это потому, что Long теперь - 64 бита, а не 32.

> CyRax (05:21 AM) : А ты залазил в C#. Неужели там исчесзли указатели и встроенный АСМ?
Да. Указатели остались только с Unmanaged VC++. В остальных языках за
ненадобностью их прибили, да и в VC++ оставили, ИМХО, только для
совместимости.

> CyRax (05:24 AM) : Так VB.NET - это и есть VB
Вы немного не о том спорите... VB .NET, как и VB - просто язык, набор
ключевых слов, конструкций, операторов...
А вобщем, CyRax, ты бы хоть одним глазком на VB .NET глянул: это не
VB6, совсем не VB6!

> Alex: но эта технология совсем не относится к VB. Они скорее была сделана для прогеров на C, а добавили синтакси VB, что бы быстрее внедрить .NET в массы
Вот здесь Alex прав, как никто другой! Сейчас в .NET-сообществе
большинство программирует на C#, а не на VB. Хотя в принципе, между
ними почти нет различий.


О API vs .NET ничего не сказал, потому что в этом, мягко говоря, не
совсем разбираюсь.


За сим, потратив полчаса :), откланиваюсь!

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 02.02.04 00:02

 После коментариев Павла и беглого просмотра CLR-расширений PE-файла картина начала немного проясняться.
 Налицо явные признаки помешательства большого Била.
 Программирование под "Visual Office.NET" осуществляется под лозунгом "Ещё Больше Интерпритации" (аббревиатуру сложите сами).
 Если для программистского мира не является новостью, что экзешник для VB6 не соответствует установленным правилам конструирования PE EXE файла (по правилам использована только секция кода, основной функцией которой является управление виртуальной машиной), то в .NET-приложении теперь даже и этот код является виртуальным. Ну прямо сказка какая-то.
 Получился действительно монстр - в 15 раз раздутая виртуальная машина под управлением интерпритируемого кода.
Старая песня в новой оранжировке. И скорее всего больше для неё подходит название GatesWilliam-Basic.NET (GW-BASIC.NET)
GW-BASIC вышел на новую ступень спирали (есть такая тема в философии).
И кто теперь скажет что VB.NET не интерпритатор? Я первый брошу в него камень :)
 Если не понятна суть моего высказывания, то немного из истории.
GW-BASIC - личная заслуга Б.Гейтса. Имеется оболочка под ДОС и все BAS-программы работают только внутри этой оболочки и не могут существовать в виде самостоятельной программы в кодах Intel-процессоров.
 Конечно реализация изменилась, но принцип остался - управление виртуальной машины виртуальными командами. Но дядя Били был тогда немного скромнее и вызовы системных и BIOS-функций всё таки позволял через прерывания. Да и к памяти милостиво разрешал обращаться в ограниченном виде (1 байт) через POKE и PEEK. Теперь даже и этого нельзя сделать. Это выглядит немного пугающим. Потому как кроме GW-BASIC'а ещё существовали компиляторы Бейсика(кто вам сказал что он ОБЯЗАТЕЛЬНО должен быть интерпритатором), АСМ, Си, Фортан и Паскаль. А теперь все языки являются GW-BASIC.NET.

 Не знаю заслуга это или преступление Била Гейтса, но он вывел новую породу программистов - виртуальные программисты.
 Отсюда вытекает два угрожающих программистам следствия - они могут перестать быть программистами и они все будут программировать под GW-BASIC.

 Вам остаётся только выбрать к какой генерации вы себя относите. Или к Новой Геперации или к Старой.
---
 Достоинства старой генерации описывать здесь не будем. Отметим только её узкую специализированность, необходимость продолжительного обучения и низкую скорость создания программ за счёт незначительного прироста в скорости.
---
 "Новая генерация несомненно круче, по тому как она новая и не может быть хуже старой!". Вот основной девиз генерации. Продолжим описание достоинств Новой Генерации. Ещё плюс для всупления в  Новую генерацию то, что её поддерживает величайший программист мира - Вильям Гейтс. А так же в 100-ни и 1000-и раз возрастает скорость написания программы.
 "Удобства и комфорт". Откиньтесь на спинку кресла и подождите пока загрузится виртуальная машина, которая будет направлять все ваши дальнейшие действия.
 "Доступно каждому" и "Специальные Возможности". Теперь каждый ребёнок, умственно отсталый или инвалид может уверенно разрабатывать новые программы. Улучшеный интерфейc позволяет без труда составлять программы людям с ослабленным зрением и слухом.
 "Игры теперь работают лучше и быстрее". Да, по сравнению с другими версиями GW-BASIC. Там они вообще никак не работали. Теперь они не работают лучше и быстрее.
 "Регистрация". Скорее вступайте в Новую Генерацию программистов. При наличии отсутствия мозгов вы можете вступить в неё прямо сейчас.

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 02.02.04 01:16

Заеметьте, что все языки программирования (от MS) стали NET, но мелкософты не стали трогать C, я не имею ввиду с#, у него имеется и нормальный компилятор...

Видимо они решили поэкспериментировать... а на ком же ставить злостные эксперименты, как не на VB'шниках :)... Может пройдет нек. кол-во времени, и будет нормальный компиллер под это все дело ? Иль даже и ждать я думаю не стоит :( Если так пойдет VB программеры вымрут :( и останутся только VB.NET программеры... вероятно с таким же лозунгом : VB - Net :(

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #10
Добавлено: 02.02.04 01:57

Нормального компилятора быть не может. Потому что CLR - это и есть API. Только API второго уровня на современных платформах. Возможно в будущем оно может стать и первого.

Но пока идёт так

Документ.NET->CLR->API->МашинныеКоды.

Скорее всего в будущих ОС прославленной компании API отомрёт, а его место займёт CLR.

Возможно так

Программа->CLR->МашинныеКоды.

Обычный PE экзешник скорее всего будет поддерживаться как сейчас поддерживаются NE, Win16 API и эмуляция DOS/BIOS.

Т.е. произойдёт просто подмена API. Ну и соответственно прийдётся переделывать компиляторы ЯВУ, под новый формат экзешника. Свой Визуал Офис Микрософт наверное сам переделает, ну и остальные тоже. :)

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #11 Добавлено: 02.02.04 03:21

To Павел: Когда в форуме по .NET в топике VB.Net - ОТКАЗАТЬСЯ или СМИРИТЬСЯ?  я пытался сказать то, что здесь сказал CyRax, только немного другим языком, получилось, что народ не понял, о чём это я. Вплоть до того, что были фразы такого типа: "Да вы посмотрите на него! Ни разу не запустив .NET, он ещё смеет высказывать своё мнение!".  Думаю, что теперь будет немного понятнее. А что касается кривого OCX, который попался с игрушкой, то вероятность того, что к тебе попадёт кривой CLR, выше ровно в 20 раз (соотношение размеров CLR и mscomctl). Это законы статистики.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #12
Добавлено: 02.02.04 05:59

Есть конечно люди типа Воронкова, которые сразу подумают:
- Что за бред написал этот тупой CyRax?

На это я могу ответить. Хм, я отнюдь не тупой, а тупой как раз вы.
Почему? Сейчас расскажу.

Может кто помнит (или знает) был у Микрософт одно время отличный продукт. Назывался Microsoft Macro Assembler.
Но он исчез. Чем он стал неугоден Билу остаётся загадкой. Я думаю что если бы у него была бы IDE как у VB, то он был бы популярен не меньше VC. Кто то говорил о заботливости парней из Микрософт?

Вот тут то и проявляется главный лозунг Microsoft - всё для домохозяек. И это вошло в политику компании. Visual Office .NET - это может быть и отличный с точки зрения качества продукт (в чём я сильно сомневаюсь), но он ориентирован совсем не на программистов. Он расчитан на обычного, среднестатистического обывателя. Микрософт может и сделала правильно с точки зрения защиты своих продуктов. Она отобрала у обывателя оружие, способное навредить своему детищу (тем самым оболванив человечество в целом). Может это плохо, а может и нет. Не мне судить - история сама рассудит. Но факт остаётся фактом. Тот кто желает программировать исключительно на VB и есть тот среднестатистический обыватель. Зачем ему собственно указатели и регистры. Ему достаточно лишь открыть API-Viewer и скопировать готовый код с исходника. А как, зачем, почему вдруг не сработало? На это же есть служба поддержки Microsoft.

Как говорится Кесареву кесарево. А конкретнее программистам - языки программирования, ну а обывателю Microsoft Office .NET.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #13
Добавлено: 02.02.04 08:39

Кстати кому интересно описание расширений PE для CLR

http://www.wasm.ru/docs/2/pe_docs.zip

правда на английском.

Ответить

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



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

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #14
Добавлено: 02.02.04 09:21
Что за разговоры?

CyRax, а почему ты не прогарммируешь на ассемблере, раз уж тебе так
хочется низкоуровневого программирования?

И причём здесь интерпретируемость? Интерпретатор - это когда команды
исполняются виртуальной машиной. Но .NET код КОМПИЛИРУЕТСЯ! Он не
интерпретируется, как, например, Javascript.

А зачем тебе доступ к памяти? К прерываниям?

> всё для домохозяек
CyRax, ИМХО, ты говоришь, сам не понимая предмета разговора.
Домохозяйки явно не смогут программировать под .NET.
По крайней мере, этой домохозяке придётся накодить немало и перечитать
кучу книжек, чтобы написать более-менее стоящую программу.
Я сужу по себе: VB6 я изучил без книг, методом тыка. А .NET - только с
кучей книжек, бесчисленными расспросами специалистов, и то ещё нужно
постичь многое...



Насчёт ассемблера: на чём ты быстрее напишешь нормальную прогу под
заказ (допустим, проект для управлением контентом веб-сайта), на
ассемблере, или на ЯВУ?

Ответить

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



Вопросов: 17
Ответов: 47
 Профиль | | #15 Добавлено: 02.02.04 11:08

Три кита ООП - инкапсуляция, наследование, полиморфизм. Сказать, что VB6 - в полной

мере обладал этими возможностями нельзя. Поэтому я и стал изучать NET.А то как CLR

c видовскими API "разговаривает", мне лично до фени.Когда CLR будет ядром Винды тогда

еще проще будет.

Ответить

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

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



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