Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/134: Рейтинг темы: голосов - 134, средняя оценка - 4.62
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4

Общие вопросы и приёмы эффективного программирования на BASIC

27.03.2021, 15:34. Показов 33612. Ответов 391
Метки нет (Все метки)

Вот как создать кнопку:
PureBasic
1
2
3
4
5
6
7
8
9
10
Dim hwndButton As HWND = CreateWindow( _
    WC_BUTTON,
    "Текст кнопки", _
    WS_CHILD Or BS_BITMAP Or BS_PUSHBUTTON Or WS_CLIPSIBLINGS, _
    10, 10, 100, 50, _
    hwndMainForm, _
    Cast(HMENU, 1000), _
    hInst, _
    NULL _
)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2021, 15:34
Ответы с готовыми решениями:

Общие вопросы по языку 1с Visual Basic
Всем привет, много информации нашел, но путевого очень мало, подскажите, пожалуйста, где можно побольше прочитать о достоинстве этого...

Приемы взаимодействия Visual Basic и SQL
При создании приложений, оперирующих базами данных, нередко возникают проблемы, связанные с организацией взаимодействия языка...

Основные понятия и приемы программирования
Помогите ответить на вопросы по С#. 1)Создание объектов.Понятия ссылки. 2)Массивы:одномерные,многомерные,непрерывные,массивы объектов. ...

391
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
30.03.2021, 16:30  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Эта задача давно решена. Есть различные кроссплатформенные форматы для представления и хранения данных. Например сериализированный json. Это юникс-вэй. Программы общаются через файлы, - все просто. Тут не имеет разницы порядок передачи параметров или выравнивание в структурах. Загрузка и десериализация обьектов на современных машинах происходит очень быстро.
Нам не надо передавать данные, нам надо передавать объекты, у которых есть методы и функции. Простой пример: необходимо написанный на VB6 объект отправить в Дельфи и вызывать его функции, возвращающие объект, затем передать второй объект другому, написанному на Си, как бы вы решили такую задачу?
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А не проще ли компилировть исходник применительно к каждой платформе, как и происходит ныне? Чего еще не хватает?
Бинарные стандарты от разных компиляторов одного и того же языка не совместимы, поэтому вы не сможете передавать объекты скомпилированные GCC в компилятор Шланг. Мало того, даже объекты от разный версий GCC могут быть не совместимы между собой.
COM — это стандарт построения объектов. COM‐объекты можно безболезненно передавать не только между программами от разных версий компилятора, но и от разных языков программирования.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
30.03.2021, 17:06
Цитата Сообщение от Замабувараев Посмотреть сообщение
Нам не надо передавать данные, нам надо передавать объекты, у которых есть методы и функции. Простой пример: необходимо написанный на VB6 объект отправить в Дельфи и вызывать его функции, возвращающие объект, затем передать второй объект другому, написанному на Си, как бы вы решили такую задачу?
То есть только ради этого придумали такую потрясающую технологию? Как бы я решил эту задачу? Я вообще бы не стал связываться с такими извращениями. Если с точки зрения хост-системы это как-то оправданно, так как ей самой становится жутко просто контролировать поведения своих подопечных процессов, то самим процессам это нахр не нужно. Для общения процессов между собой есть стандартные средства.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
30.03.2021, 17:28  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Для общения процессов между собой есть стандартные средства.
Просто вы мыслите в категориях «обмен данными между процессами» и не понимаете концепцию «вызов функций одного процесса из другого», причём процессы будут написаны на разных языках программирования.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
30.03.2021, 19:03
Цитата Сообщение от CoderHuligan Посмотреть сообщение
COM умерло еще не успев родиться..
Какая ересь. COM умер в только в головах не осиливших его. Пол винды работает на основе COM.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Зачем было создавать еще одну обертку над апи, причем еще более уродливую чем сами апи?
Какую обертку, ты о чем вообще?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Эта задача давно решена. Есть различные кроссплатформенные форматы для представления и хранения данных. Например сериализированный json. Это юникс-вэй. Программы общаются через файлы, - все просто. Тут не имеет разницы порядок передачи параметров или выравнивание в структурах. Загрузка и десериализация обьектов на современных машинах происходит очень быстро.
Вот так и рождается говнокод. Прямо представил аналог D3D где данные гоняются через json Про эффективность я вообще промолчу.

Цитата Сообщение от Замабувараев Посмотреть сообщение
COM‐объекты можно безболезненно передавать не только между программами от разных версий компилятора, но и от разных языков программирования.
Более того методы COM объектов можно вызывать между разными машинами (DCOM). Теоретически ничего не мешает вызывать методы COM объекта между разными ОС (та самая кроссплатформенность).

Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть только ради этого придумали такую потрясающую технологию? Как бы я решил эту задачу? Я вообще бы не стал связываться с такими извращениями.
Ну ничего удивительного - стандартная отмазка.
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
30.03.2021, 20:28
Цитата Сообщение от Замабувараев Посмотреть сообщение
А что вы имеете против COM?
Ничего. Не использую эту технологию глобально, ковыряю эти вещи скорее по необходимости.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
COM кто использует?
Опять на те же грабли. Да дофига где оно. Анатолий тебе расскажет, хотя он уже задолбался.
Как минимум каждый звуковой плагин к DAW - это COM. Там куча вещей в винде, которые на этом крутятся.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
А кто сейчас пишет под дайрект икс?
Например разработчики Unity. Под DX 9 написана большая часть прог игровой индустрии и юзерских приложений.
Впоследствии начали писать под DX 11. Сейчас пишут под DX 12, туда запилили т.н. "лучи".

Добавлено через 3 минуты
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Завтра вы просто не сможете скомпилировать ваше exe просто потому, что майкры так захотели в новой ОС.
Каким боком майкры запретят мне генерить бинарный код? ))) Ну ты дал хулиган)))
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
31.03.2021, 07:57  [ТС]
Давайте представим задачу, когда вы пишете игру и вам необходимо расширять Искусственный Интеллект с помощью игровых скриптов. Или у вас есть программа‐чат, и вам необходимо по получении определённого сообщения выполнить код сценария, который будет делать полезную работу и отправлять ответные сообщения. Как бы вы решали такую задачу?

У вас есть несколько вариантов.
1. Придумать свой язык сценариев, написать свой интерпретатор и прикрутить его к двигателю игры. Слишком долго и хлопотно.
2. Взять готовый скриптовый движок, например Lua, и прикрепить его к двигателю игры.
3. Опубликовать интерфейс автоматизации двигателя игры. Здесь выбор скриптового языка ограничивается только правилами взаимодействия с интерфейсом двигателя игры, и для расширения игры можно использовать не только языки сценариев вроде VBScript, а какие‐нибудь Си, Ява, Дотнет или Rust.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
31.03.2021, 13:25
Цитата Сообщение от The trick Посмотреть сообщение
Ну ничего удивительного - стандартная отмазка.
Да, признаю, что мои знания по COM - поверхностны, ибо все познать невозможно. Это поправимо. Просто я в идел код, этот ужасный код, который просто видеть невозможно. Мои претензии скорее к синтаксису. Эти уродливые гуиды и пр. Привязка к реестру и пр.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Как минимум каждый звуковой плагин к DAW - это COM. Там куча вещей в винде, которые на этом крутятся.
Так это понятно, что крутятся. Зачем мне это использовать? Что мне это даст? Разработчики постоянно этим пользуются? 0,01%.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Каким боком майкры запретят мне генерить бинарный код? )
Нет, не запретят, но ваш бинарник должен будет соответствовать технологии COM.
Цитата Сообщение от Замабувараев Посмотреть сообщение
2. Взять готовый скриптовый движок, например Lua, и прикрепить его к двигателю игры.
3. Опубликовать интерфейс автоматизации двигателя игры. Здесь выбор скриптового языка ограничивается только правилами взаимодействия с интерфейсом двигателя игры, и для расширения игры можно использовать не только языки сценариев вроде VBScript, а какие‐нибудь Си, Ява, Дотнет или Rust.
Но к примеру си это не скрипт. А вся соль в скриптах в возможности ими обмениваться и тестировании "на лету", что не дают компилируемые языки. Поэтому лучшее решение №2
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
31.03.2021, 14:58  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Но к примеру си это не скрипт.
Аргументы «А вот бинарники нельзя передавать по сети!» и «Запрещаю взаимодействовать со своей программой всему, что компилируется» не выдерживают критики.
Когда вы превращаете вашу программу в Сервер Автоматизации, вам должно быть всё равно кто к ней обращается — скрипт или не скрипт, или вообще что‐то другое.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Привязка к реестру и пр.
Нормальные разработчики не избегают реестра как огня, а используют его с умом. Не пользоваться реестром — такая же глупость, как и хранить настройки в папке с программой.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Просто я в идел код, этот ужасный код, который просто видеть невозможно. Мои претензии скорее к синтаксису. Эти уродливые гуиды и пр.
Приведите примеры этого ужасного кода, уродливых гуид, COM‐синтаксиса и пр. Вы же не просто так надёргали баззвордов из интернета. Мы тоже хотим испугаться.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
31.03.2021, 15:39
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Просто я в идел код, этот ужасный код, который просто видеть невозможно. Мои претензии скорее к синтаксису. Эти уродливые гуиды и пр. Привязка к реестру и пр.
Во-первых, при чем тут какой-то код который ты там где-то видел? У тебя спросили как бы ты выполнил задачу, ты "включил" стандартную "отмазку". Покажи свой идеальный код в таком случае. Ну и судить технологию по какому-то коду (который даже не показал тут, кто знает мб там такой-же "знаток" как и ты его писал) - это верх невежества.
Ничего плохого в GUID'ах нет - это какая-то надуманная проблема. Ну и последний вопрос, где ты видел привязку к реестру при работе к примеру с Direct3D? Знаешь, это показатель твоего уровня.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Так это понятно, что крутятся. Зачем мне это использовать? Что мне это даст? Разработчики постоянно этим пользуются? 0,01%.
Ну не используй, зачем писать откровенную ересь про смерть COM, какие-то проценты из головы и т.п. чепуху? Ты не используешь - другие используют; далеко не будем ходить - возьми тех же VBAшников которые его постоянно юзают. Я уже молчу про других.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Но к примеру си это не скрипт. А вся соль в скриптах в возможности ими обмениваться и тестировании "на лету", что не дают компилируемые языки.
Какая разница? Скрипты могут также компилироваться, возьми тот же VBScript/JScript который компилируется в байткод.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
31.03.2021, 16:19
Цитата Сообщение от Замабувараев Посмотреть сообщение
Не пользоваться реестром — такая же глупость, как и хранить настройки в папке с программой.
Полно тебе дядька. Хранить настройки в папке с прогой удобно.
Портейбл софт вообще штука удобная. Например, себе браузер и кучу разного софта так поставил, запаковал
и бед не знаю, что-то слетело, распаковал, у тебя чистая настроенная прога.
Можно носить с собой на флешке. Я не против реестра если что.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
31.03.2021, 16:27  [ТС]
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Хранить настройки в папке с прогой удобно.
Такие программы требуют запуска от администратора, потому что запись в %ProgramFiles% простым пользователям запрещена.

Добавлено через 5 минут
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Портейбл софт вообще штука удобная
Ну это вы у себя в комнате можете делать что угодно, а когда программу нужно распространять, то такое поведение программы неприемлемо.

Потому что безопасность требует:
1. Место, откуда запускается программа, должно быть защищено от записи.
2. Если в какое‐то место запись разрешена, то из этого места запрещён запуск программ.

Эти простые правила позволяют отказаться от антивируса.
2
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
31.03.2021, 16:36
Цитата Сообщение от The trick Посмотреть сообщение
Знаешь, это показатель твоего уровня.
У каждого свой уровень и специализация.
Цитата Сообщение от The trick Посмотреть сообщение
Ты не используешь - другие используют; далеко не будем ходить - возьми тех же VBAшников которые его постоянно юзают. Я уже молчу про других.
То сеть все вбашники этим занимаются? Отлично.
Цитата Сообщение от The trick Посмотреть сообщение
У тебя спросили как бы ты выполнил задачу, ты "включил" стандартную "отмазку".
DLL - не? Не конкретно по задаче, но в целом.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
31.03.2021, 16:42
Цитата Сообщение от Замабувараев Посмотреть сообщение
Такие программы требуют запуска от администратора, потому что запись в %ProgramFiles% простым пользователям запрещена.
Ну да, права админа у меня всегда, у себя дома работаю из под админа, а где надо - мне их дают.
У частников обычно вообще всё просто компы даже без сети или с рабочей группой, никаких
политик ничё там нету, потому что люди не ищут геморрой. На предприятиях да - там всё строже,
свои службы безопасности допуски\пропуска, куча всего заблочено.
А если прав нет - прогу ты просто установить даже не сможешь, затребует пароль администратора.
Это всё не о политиках безопасности, ограничения для пользователей это вообще отдельная тема.
Я больше писал про саму специфику, т.е. портативные и способные быть таковыми.
У меня они вообще на диске D:\ ну это реально удобно, я не понимаю какие с этим могут быть проблемы.
Если прога умеет в относительные пути - так это вообще конфетка.

Добавлено через 3 минуты
Цитата Сообщение от Замабувараев Посмотреть сообщение
1. Место, откуда запускается программа, должно быть защищено от записи.
Да и любая запись в реестр будет с тебя просить пароль.
Я это всё повырубал у себя. Потому что задирает, людям у кого плохо с компами - наверное надо включать,
чтобы чего не попортили и вирусню не схлопотали. Мне же это зачем? Я сомнительные экзешники не качаю
и не запускаю.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
31.03.2021, 16:53  [ТС]
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Да и любой запуск в реестр будет с тебя просить пароль.
Нет.
Запись в ветку HKEY_CURRENT_USER разрешена текущему пользователю, а вот в HKEY_LOCAL_MACHINE разрешена только администраторам.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А если прав нет - прогу ты просто установить даже не сможешь, затребует пароль администратора.
Для безопасности это нормально, иначе начнётся разрастание микрофлоры и микрофауны. Если программа нужна, приходит администратор и устанавливает её.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
я не понимаю какие с этим могут быть проблемы.
Вы можете случайно запустить вредоносную программу, а так как она запущена с полными правами, то может удалять файлы из каталога ШINDOWS или скрыто устанавливаться как драйвер‐руткит.

Добавлено через 2 минуты
Цитата Сообщение от Quiet Snow Посмотреть сообщение
У меня они вообще на диске D:\ ну это реально удобно
То есть, считаете, что если система слетит, то все программы останутся и переустановки не потребуют? Распространённый миф. Многие программы требуют повторной установки.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
31.03.2021, 17:06
Цитата Сообщение от CoderHuligan Посмотреть сообщение
У каждого свой уровень и специализация.
Конечно, но ты со своим почти нулевым уровнем знаний по этой теме несешь какую-то глупость. Не кажется странным?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
DLL - не? Не конкретно по задаче, но в целом.
Ну DLL и что? COM сервер также может быть в DLL. Конкретно требуется передавать объект между разными частями приложения/процессами/машинами как это должно быть реализовано?
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
31.03.2021, 17:40
Цитата Сообщение от The trick Посмотреть сообщение
Ну DLL и что?
А то, что его поддерживает большинство языков в виде так называемого FFI - Foreign function interface. А вот как дело обстоит с COM мне неведомо. Или все программисты только на vba и c# строчат?

Цитата Сообщение от The trick Посмотреть сообщение
Конкретно требуется передавать объект между разными частями приложения/процессами/машинами как это должно быть реализовано?
OLE выросла в COM потому, что требовалось не только таскать туда сюда обьекты в виде текстов и картинок, но и обьекты со своими полями свойств и методов. COM потребовалась как надстройка над OLE для более удобного взаимодействия с ООП языками. Процедурным языкам хватало обычных dllлек.. Я прав, или что-то упускаю?
Как передавать указатели на функции понятно, а как передать обьект? Да, необходим интерфейс в виде сервера. Другой вопрос: это технология универсальна? То есть все должны ей следовать, даже те, кто пишет hуllo worldы с тетрисами?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
31.03.2021, 18:53
Цитата Сообщение от Замабувараев Посмотреть сообщение
Многие программы требуют повторной установки.
Нет, только ваши, которые залезли при установки в реестр и системную папку.
Нормальные, которые ВСЕ свои файлы записали в СВОЮ папку будут работать на новой системе как и прежде.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
31.03.2021, 19:36
Цитата Сообщение от Замабувараев Посмотреть сообщение
Запись в ветку HKEY_CURRENT_USER разрешена текущему пользователю
Не знаю начсёт HKEY_CURRENT_USER, но на другом компе с сёмёркой требует всегда, когда ставлю любую прогу,
там спецом завёл отдельно админа и юзера. Из под юзера работать - сущий геморрой. Ибо даже диспетчер задач
чтобы вызвать - просит пароль. Наверное почти все разрабы не знают об этой магической ветке реестра.
Просвещай людей. Autodesk, adobe и прочих.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Если программа нужна, приходит администратор и устанавливает её.
Ну тоже самое с реестром, если нужен доступ к реестру - приходит админ и даёт его.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Для безопасности это нормально
Безопасность в голове пользователя в первую очередь, никакие блоки и заслоны не помогут от вирусни
если юзер не шарит.

Цитата Сообщение от Замабувараев Посмотреть сообщение
То есть, считаете, что если система слетит, то все программы останутся и переустановки не потребуют? Распространённый миф. Многие программы требуют повторной установки.
Ну у меня реально пачка прог, которые не требуют установки, они тупо лежат в D:\ в отдельной папке.
Ставлю когда винду, просто ярлыки выдёргиваю из папки. И всё.
Да что-то приходится ставить, хоть это мне и не нравится, имхо нормальные разработчики должны
предусматривать автономный вариант, это упрощает жизнь. А кому нужна экстра безопасность - ну
стандартное "вгрызание" в систему.

Добавлено через 7 минут
Вообще если есть боязнь что что-то куда-то пролезет, нужно либо написать свою прогу чекер хешсумм,
либо установить антивирус. Я поступаю проще, у меня все портативки заархивированы с шифрацией.
Установил систему, распаковал - и всё чистенько, настроено.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
31.03.2021, 19:38  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
его поддерживает большинство языков
А COM в лице Автоматизации поддерживает ещё больше языков.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
а как передать обьект?
Передаётся указатель на массив с указателями на функции. В COM такой массив называют таблицей виртуальных функций, а указатель на этот массив — интерфейсом.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть все должны ей следовать, даже те, кто пишет hуllo worldы с тетрисами?
Предположим, вы пишете простую игру типа крестики‐нолики. Всё в одном файле, спагетти‐код, без всяких функций и процедур, лишь одни нумерации строк и условные переходы на метки, все переменные — это A, B, C, D, Nomer, Kolichestvo, Chislo. А потом происходит одна из двух вещей:
1) крестики‐нолики требуется расширить до «пять в ряд»;
2) проходит месяц и вы забываете как работает код.
И код придётся выбрасывать, потому что этот невозможно поддерживать, модифицировать и приспособить под новую задачу.

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

В конце концов, программируя процедурно, ваша программа упрётся в ограничения. Вам к структурам нужно будет прикрутить поведение, причём это поведение должно быть полиморфным: одна и та же функция должна принимать разные типы данных. Вам придётся в конце‐концов перекатиться на ООП: наследование, инкапсуляцию, полиморфизм, абстракцию, сокрытие. ООП — это методология разработки, в объектном стиле можно программировать даже на ассемблере, а COM — это ограниченное подмножество ООП.

Поэтому мой ответ на вопрос «Нужно ли программы уровня laba3.cpp и хелловорлд начинать с COM»: да, нужно, чтобы потом не написать с нуля другие свои программы.

Добавлено через 1 минуту
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Нет, только ваши
Ворды и ексели опровергают ваше утверждение о только моих программах.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
31.03.2021, 19:44
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А то, что его поддерживает большинство языков в виде так называемого FFI - Foreign function interface. А вот как дело обстоит с COM мне неведомо.
Ну так и COM-сервер может жить в DLL. Такую DLL можно использовать даже из скриптовых ЯП. Я конкретно задал вопрос:
Конкретно требуется передавать объект между разными частями приложения/процессами/машинами как это должно быть реализовано? (без COM) DLL это не ответ на данный вопрос.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Или все программисты только на vba и c# строчат?
А при чем тут эти 2 ЯП? С COM, я так думаю, можно работать вообще из любого ЯП который позволяет компилить под винду.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
OLE выросла в COM потому, что требовалось не только таскать туда сюда обьекты в виде текстов и картинок, но и обьекты со своими полями свойств и методов. COM потребовалась как надстройка над OLE для более удобного взаимодействия с ООП языками. Процедурным языкам хватало обычных dllлек.. Я прав, или что-то упускаю?
COM это развитие OLE и это уже отдельная технология которая не ограничивается функционалом OLE. Процедурным языкам мб и хватало DLL, но сама винда объектно-ориентированная. К примеру ты открыл файл, система вернула тебе хендл объекта, и ты далее работаешь с объектом. Передавая хендл в функции (типа записи/чтения/и т.п.) ты осуществляешь тот же механизм который компиляторы в которых есть поддержка ООП делают автоматически и скрывают от программиста. Как они это делают - детали реализации и каждый компилятор делает это по своему (к примеру в C++ указатель на объект передается в ECX (thiscall)). COM - это прямо описывает, каким образом должно все это осуществляться. Это все очень грубо если описывать.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Как передавать указатели на функции понятно, а как передать обьект? Да, необходим интерфейс в виде сервера.
Как ты к примеру собираешься передать указатели на функции в другом процессе и их вызывать? COM позволяет объектам находится вообще на разных машинах (с разной разрядностью и т.п.) Всю работу по маршалингу берет на себя система, для этого используется язык IDL входящий в стандарт DCE/RPC.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Другой вопрос: это технология универсальна? То есть все должны ей следовать, даже те, кто пишет hуllo worldы с тетрисами?
Хм.. Что за странное высказывание? Ты критикуешь зачем-то COM и говоришь что те кто пишут hello worldы не обязаны ее использовать. Ну их никто не заставляет использовать технологию где ей не место. С таким же успехом можно ругать к примеру сетевые технологии или мультимедийные, т.к. они также не нужны для написания hello world'ов. Не находишь это абсурдным?

Добавлено через 5 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Нормальные, которые ВСЕ свои файлы записали в СВОЮ папку будут работать на новой системе как и прежде.
Если программа будет писать данные в свою папку (папку где установлена) то все пользователи на компьютере будут иметь общие настройки. Можно писать в специфичные для юзера папки (так делают многие приложения). Можно писать в реестр, там система автоматом разграничит.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2021, 19:44

Стоит ли изучать как устроена ЭВМ для эффективного программирования
Всем дробового времени суток (пятница!!!) Стоит ли изучать как устроен ЭВМ для эффективного программирования на плюсах ?

Подскажите ссылки на приемы программирования для Embedded
Народ! Подскажите пожалуйста ссылки, на приемы и упражнения по программированию, с разьяснениями по встраеваемому ПО. Заранее благодарю!

Нужны сайты про C#, приемы, рецепты, трюки программирования
Не советуйте msdn или книгу. Справочник должен быть похож на другие стандартные справочники как у delphi, которых полно в инете, а к C#...

Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике
интересны приемы программирования на C# те о которых не пишут в книгах, которые узнаются на практике. какие OpenSource проекты можете...

Общие вопросы.
Доброго времени суток! После изучения Паскаля, решил перейти на изучение С/С++, прочитал много мануалов для новичков, но накопились...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru