Перейти к содержимому

Фотография

VisualBasic или Delphi


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 26

#21
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений
Устал - отдохни. :lol:

Согласишься ты со мной или нет, это не так уж важно. Скоро вообще все эти споры о языках будут иметь мало смысла, поскольку Microsoft .NET всех построит. Там основной принцип такой: если вы можете сделать нечто на каком-либо языке, поддерживающем .NET, то также сможете сделать это и на любом другом языке, поддерживающем .NET. Вот как выглядит "Hello, World" на трех языках из Microsoft .NET:

1. На Managed C++
#using <mscorlib.dll>
using namespace System;
void main( )
{
   Console::WriteLine(L"C++ Hello, World!");
}
2. На C#
using System;
class MainApp
{
public static void Main( )
   {
	  Console.WriteLine("C# Hello, World!");
   }
}
3. На VB.NET
Imports System
Public Module modmain
   Sub Main( )
	  Console.WriteLine ("VB Hello, World!")
   End Sub
End Module

  • 0

#22
ceasar

ceasar
  • Частый гость
  • 65 сообщений

Повеселил со своим "простым ответом", спасибо! :smoke: Хотя конечно, ассемблер - это язык (в смысле - прадедушка всех языков). Но это низкоуровневый аппаратно-зависимый язык процессорных инструкций, которые иногда можно укрупнять в небольшие макросы и процедуры. Где ты у него разглядел инкапсуляцию, наследование и полиморфизм? Где интерфейсы? Где возможность создавать двоичные объекты COM? Где маршалинг? Этого даже у С толком не было, сначала только у С++, а затем у VB, Delphi и Java (при условии, что это Java в версии Microsoft J++).

Ну неприлично кажется вмешиваться в чужой диалог, но вмешаюсь.
Наверное чел спрашивал учить просто язык. А assembler это и есть язык программирования, просто может в нем ООП отсутствует. Принципы ООП отдельно от языков вообще то рассматривается. И кстати тот же Visual Basic он не обладает полным ООП, если Вы на это упор хотите сделать.
Посмотрите внимательно как он реализует те же полиморфизм, наследование и инкапсуляцию.
И еще такой простой вопрос. если как Выговорите что basic такой мощный язык программирования, то почему на нем не пишут серьезные коробочные продукты?Лично я никогда не встречал серьезных коробочных продуктов созданных на этом языке.
Или если asm так уродлив то почему иногда в Дельфях прибегают к нему?
Также может я не в курсе почему тип Variant так хорош? Я всегда думал что серьезный язык программирования должен быть строго типизированным чтобы избежать утечки памяти и много чего другого.

И почему вы решили что COM это единственное место в программировании?

И можно ли в этих самых UNIX'ах автоматически загрузить и получить объект от бинарного сервера? Например, Word.Document? Нет? Очень жаль. ;) Причина известна - там же нет COM! Что-то пытались сделать из CORBA, и что-то вроде бы даже сделали... Чего же они достигли? Может, просветишь меня на этот счет? :smoke:

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


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

#23
ceasar

ceasar
  • Частый гость
  • 65 сообщений

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


Полностью согласен с Вашим высказыванием насчет того что построит .NET точно всех построит.
  • 0

#24
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений

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

Да никаких проблем - это не вмешательство, когда идет общий разговор. На самом деле чел спрашивал, какой из двух языков ему лучше выбрать, чтобы учить - Delphi или Visual Basic.

А assembler это и есть язык программирования, просто может в нем ООП отсутствует.

Я разве не о том же? Вообще-то, про asm автор темы и не спрашивал.

И кстати тот же Visual Basic он не обладает полным ООП, если Вы на это упор хотите сделать.
Посмотрите внимательно как он реализует те же полиморфизм, наследование и инкапсуляцию.

С этим соглашусь. Тем более, я и не утверждал, что он полностью реализует полиморфизм и наследование. Более подробно (если интересно): он реализует так называемый ad hoc полиморфизм - специально разработанный для него вид полиморфизма на основе интерфейсов. Говоря проще: он реализует полиморфизм без абстрактных классов. Еще проще: прямоугольник, круг и треугольник в Visual Basic'e будут иметь каждый свой метод Draw() для отрисовки себя, но общего чисто виртуального метода virtual Draw()=0 у них не будет. И несмотря на это, для каждой конкретной фигуры вызываться будет все же правильный, нужный именно для нее, метод. Для прикладного программирования (для которого VB был создан) - вполне достаточно.

И еще такой простой вопрос. если как Вы говорите что basic такой мощный язык программирования, то почему на нем не пишут серьезные коробочные продукты?Лично я никогда не встречал серьезных коробочных продуктов созданных на этом языке.

Тогда встречный простой вопрос: а на Delphi есть серьезные коробочные продукты? Я, в свою очередь, что-то тоже не встречал.

Или если asm так уродлив то почему иногда в Дельфях прибегают к нему?

Где я говорил, что asm "уродлив"?

Также может я не в курсе почему тип Variant так хорош? Я всегда думал что серьезный язык программирования должен быть строго типизированным чтобы избежать утечки памяти и много чего другого.

Раньше я думал точно так же. Но именно тип Variant, впервые введенный в VB, позволил Microsoft обеспечить заявленную ей языковую независимость модели COM, а впоследствии - платформы .NET. Если интересно, как именно, то могу об этом подробнее.

И почему вы решили что COM это единственное место в программировании?

Ну, такое "решение" Вы зря мне приписываете (что "единственное место в программировании"). Конечно, не единственное. Но автор задал вопрос о перспективности изучения Visual Basic vs. Delphi, вот я и подошел к ответу с точки зрения интеграции языков на основе COM, устройства наиболее популярной ОС Windows (которая вся состоит из объектов COM), а также с точки зрения .NET. Разумеется, на абсолютную бесспорность своего мнения я не претендую.
  • 0

#25
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений

Полностью согласен с Вашим высказыванием насчет того что построит .NET точно всех построит.

Три варианта простейшей программы "Hello, World!" (на Managed C++, на C# и на VB. NET), приведенные выше, лучше всяких слов показывают, насколько небольшими становятся различия между этими языками. И в самом деле - если знаешь, как что-то сделать на одном языке, то теперь намного легче будет сделать это и на другом. Это еще один аргумент в пользу Visual Basic по сравнению с Delphi: изучив один VB, ведь хорошо, если можно затем с меньшими усилиями получить еще три? ;)
  • 0

#26
ceasar

ceasar
  • Частый гость
  • 65 сообщений

Тогда встречный простой вопрос: а на Delphi есть серьезные коробочные продукты? Я, в свою очередь, что-то тоже не встречал.

Кажется встречался только 1 продукт Merak для достоверности вот линк
http://www.jabber.or...are/Merak.shtml

Но именно тип Variant, впервые введенный в VB, позволил Microsoft обеспечить заявленную ей языковую независимость модели COM, а впоследствии - платформы .NET. Если интересно, как именно, то могу об этом подробнее.


Вот об этом пож-та если можно поподробнее или скиньте пож-та сылку где можно было бы почитать . а то мне инет в день всего на 20 минут открывают, успеваю единственное почту прочитать.
  • 0

#27
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений
Итак, подробнее о СОМ и языковой независимости. Как известно, СОМ - это не язык программирования. Компоненты СОМ могут быть написаны на любом языке, поддерживающем СОМ. Но компоненты СОМ должны не только позволять создавать себя на любом языке, они должны быть доступны из любого СОМ-совместимого языка. Например, разработчики Web-приложений могут применять язык VBScript для доступа к СОМ-объектам, написанным на Delphi. Но как быть с проблемой различных базовых типов? Ведь базовые типы одного языка (например, char, int, float) не всегда совместимы с базовыми типами другого или даже не имеют аналога в другом языке. Например, тип String - строка в Visual Basic - не имеет аналога в С/С++, и вообще, в классическом С/С++ (без использования шаблонов) нет такого типа "строка". Строки представляются как массив символов, завершающийся '\0'. Типы С++, на котором изначально была разработана модель СОМ, не переносятся явно в другие языки.

Чтобы разрешить эту проблему, Microsoft разработала набор универсальных типов данных IDL, понятных любому языку. (IDL - Interface Definition Language). Этот набор универсальных типов данных IDL построен по принципу базового типа VB - типа Variant, играющего в СОМ (а не только в VB) ключевую роль. Все, что можно описать с помощью Variant в VB, можно также представить и соответствующими типами IDL, которые называются Variant-совместимыми типами. Этот набор типов может представлять не только типы, присутствующие в большинстве языков (boolean, short и т.д.), но и новые типы, изначально не поддерживаемые С/С++, например, тип BSTR (Basic String). Тип BSTR - это строка Unicode фиксированной длины с NULL на конце, и этот тип Visual Basic поддерживает явно, а не через вызовы функций API (как это пришлось сделать в С++, чтобы он мог работать с Unicode).

Таким образом, если вы программируете на любом языке, который поддерживает COM, и хотите, чтобы ваши двоичные объекты можно было использовать из других языков, то вы должны задавать параметрам в разработанных вами методах классов Variant-совместимые типы. Используя Variant-совместимые типы, вы не только предоставляете языковую независимость клиентским программам, но и получаете еще одно преимущество: автоматическую поддержку маршалинга (то есть СОМ-клиент сможет обращаться к СОМ-серверу, расположенному на том же самом или даже на удаленном компьютере в сети). Если же Variant-совместимый тип не будет использован, то доступ к созданному двоичному объекту в памяти из другого процесса не будет возможен. Максимум, что можно получить в таком случае - это подгружаемую в процесс клиента библиотеку dll (к которой еще надо уметь обратиться с помощью громоздких функций-оберток, специфических для каждого языка, если ваша программа написана на другом языке, чем dll-библиотека).

Конечно, за все надо платить - и расплатой за универсальность типа Variant является повышенный расход памяти (данные размером даже один байт все равно будут использовать все 32 бита). Но Microsoft еще в 1993 г. предвидела, что память будет дешеветь при одновременном значительном росте ее объема даже на low-end машинах. И опять же, при создании Visual Basic'a программистам был сделан настоящий подарок: предоставлена возможность использовать строгий контроль типов в программах по собственному желанию разработчика. Достаточно всего одной таблэтки... ;) то есть, я хочу сказать, всего лишь одной строки директивы Option Explicit в начале кода программы - и в IDE Visual Basic будет включен строгий контроль всех используемых типов, и можно легко отказаться от использования типа Variant. И пожалуйста, можете экономить память, если она для вас так критична.

P.S. А в языке VBScript - этом "младшем брате" Visual Basic'a, предназначенном для программирования web-страниц, решили пойти еще дальше! Там используется всего лишь один тип Variant, других типов там вообще нет! :laugh: Вот почему там можно обращаться к объектам COM, написанным на Delphi (или на других СОМ-совместимых языках), о чем я говорил в начале.

Сообщение отредактировал Visual1: 07.09.2006, 23:05:40

  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.