Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/56: Рейтинг темы: голосов - 56, средняя оценка - 4.54
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443

Быстрый старт в изучении C++ для относительно опытных программистов Basic

18.04.2020, 16:11. Показов 13227. Ответов 253

Студворк — интернет-сервис помощи студентам
В этой ветке предлагаю обсуждать сходства и различия между C++ и Visual Basic.
Ну хотя бы для упрощения процесса изучения параллельного (дополнительного) языка для тех, кто уже относительно неплохо знаком с Visual Basic.
Ну просто как-то "не вкусно" начинать изучение совсем уж с нуля, когда, в принципе, уже и без того много знаешь (циклы, ветвления, указатели, видимость переменных ... ).

На самом деле, начал сейчас просмортр на ютубе курса по C++. Дядька очень толково и понятно всё объясняет, явно есть у него талант хорошего преподавателя.

Самые первые отличия, которые бросились в глаза, это:
- комменты обозначают двумя косыми чертами вместо апострофа,
- в конце каждой строки точка с запятой,
- все процедуры, функции, "тела" циклов ... в фигурных скобках,
- вложенные циклы можно описывать одной строкой,
- если переменная объявлена, но ей не присвоено значение, то она содержит случайный "мусор" из памяти, а не как у нас в бейсике, где сразу получает значение ноль или пустую строку,
- массивы с квадратными скобками вместо круглых,
- область видимости переменных ограничена фигурными скобками и причём неважно функция это, цикл или "тело" функции IF, а не как у нас область видимости переменных ограничена только функциями и процедурами.

Ветка открытая, пишите кто хочет.
Особенно приветствуются советы опытных специалистов, уже овладевших несколькими языками.
Ну уж им-то гораздо виднее, в чём сходство и различие разных языков.

Сказать по правде, лично мне сейчас C++ и его младший брат нужны, главным образом, для удобства изучения материалов MSDN.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2020, 16:11
Ответы с готовыми решениями:

предложение для опытных программистов
добрый день уважаемые госпда программисты - необходима помощь по выполнению лабораторных по предмету Операционные Системы. Ищу человека...

Быстрый старт и софт для Modicon TM251MESE (Schneider Electric)
Так сложилась ситуация, что в скором времени предстоит познакомиться с ПЛК TM251MESE от Sneider Electric. Начал интересоваться как...

Книги или справочники для опытных(или проффесиональных) программистов!
Пожалуйста, Подскажите книги или справочники для опытных и проффесиональных программистов! Особенно хотелось бы найти: 1) полный...

253
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
20.04.2020, 17:27  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от The trick Посмотреть сообщение
В COM на самом деле нет ничего страшного, если конечно не создавать такие компоненты и не углубляться в детали создания таких компонентов.
Да нет, об этом даже речи не идёт. Тут чужие-то научиться бы худо-бедно использовать

Цитата Сообщение от The trick Посмотреть сообщение
По WINAPI тоже все достаточно просто и интуитивно понятно, есть конечно неочевидные моменты, но они один на миллион.
Ну вот лично у меня всё упирается в передачу параметров, ну и ещё в "запутанные клубки", когда в функциях используются структуры, внутри которых используются другие структуры ну и так дальше как в матрёшке.
Относительно передачи параметров сейчас собираю материал, чтобы аргументированно открыть ветку на эту тему в общих бейсиках.

Цитата Сообщение от The trick Посмотреть сообщение
Не знаю. Если изучаете с нуля, то лучше с самой последней начинать, чтобы потом не спотыкаться о deprecated. А вообще это зависит от того для чего изучать. Задачи нужно решать по мере поступления я считаю, к примеру мне возможностей C++98 хватает, я не работаю в команде и не пишу кроссплатформенный софт, поэтому я использую 2010 студию, которая может компилировать 64 битные приложения. Если мне понадобятся новые фичи, я обязательно перейду на соответствующую платформу.
Выходит, что всё-таки есть смысл даже с VS 2019 начать? Но там же ведь всё, скорее всего, через Net Framework? А мне бы с этим чудом-юдом связываться не хотелось бы. А вот кстати, какая версия C++ была самой последней до внедрения технологии Net? Может быть как раз с неё-то и имеет смысл начать?

Цитата Сообщение от Power_Basic
Сегодня утром посмотрел два урока по перегрузке функций и по шаблонам функций. Как я понял в VB все эти проблемы решаются с помощью типа данных Variant
Цитата Сообщение от The trick Посмотреть сообщение
Нет, в VB6 таких возможностей вообще нет зато есть другие которых нет в C++.
Не, ну я имел в виду, что вместо объявления нескольких функций, принимающих параметры с разными типами данных, в VB можно объявить одну функцию с параметрами типа Variant, ну вот и получается что-то похожее на шаблон функции в C++.

И кстати говоря, вы сейчас затронули очень интересный момент. Неужели и правда, в VB есть что-то, чего нет в C++, хотя первый остановился в развитии 22 года назад, а второй развивается до сих пор?
Не, ну первое, что приходит мне в голову это упомянутый тип данных Variant, который имеет репутацию очень медленного.
Ну а что же ещё-то? И почему не используют? Считают нецелесообразным?

Цитата Сообщение от Power_Basic
Ну вот сейчас, да, нужна. Поскольку взялся за аудиокниги.
Цитата Сообщение от The trick Посмотреть сообщение
Не понимаю для чего тут скорость, тем более если работа идет через SAPI. Там нужно то всего лишь передать данные движку, и получить от него результат - записать данные в файл. Все критичные к исполнению вещи реализуются движком, так что тут скорость ЯП почти не имеет значения.
Нет, ну я же там говорил про воображаемую ситуацию, которорая возникла бы при использовании для всех целей только одного-единственного VBA Excel
А там ведь, наверняка, нет возможности создать несколько потоков!
А у меня же в этом вся соль замысла. Делим весь текст на несколько частей и обрабатываем каждую из них (одновременно!) в отдельном потоке. Скорость же сразу в разы выше.
Хотя, я подозреваю, что с внедрением ваших инноваций, потоки и VBA Excel тоже можно будет каким-то образом использовать

Цитата Сообщение от locm
Развития не получила - мало кому нужны небольшие исполняемые файлы.
Цитата Сообщение от The trick Посмотреть сообщение
Такая задача бывает нужна, но только в очень небольшом сегменте. К примеру демосцены. Кстати неплохо было бы такие демки увидеть на PB, мб поклонников бы прибавило ему, раз он может такие маленькие файлы создавать. На плюсах у меня около 700 байт оконное приложение удавалось написать, не помню точно.
Ну locm же совсем недавно выкладывал файл размеров в 1 Кб. Ну вот, наверно, это и был минимально возможный размер в Pure Basic'е.

А что касается Power Basic'а, то я вчера был сильно обескуражен, когда обнаружил (а до этого меня, признаться, вообще не интересовал размер моих собственных файлов), что файл, который всего лишь создаёт простое окно и больше ничего не делает, весит в Power Basic'е около 60 Кб, а файл без графики вообще с одним только Msgbox "Hello, world!" весит 17 Кб. Но с другой стороны, исходник, который я на днях здесь выкладывал, содержащий 700 строк кода (с потоками, с полосами прогресса, с обращениями к PDH счётчику загруженности процессора, с "торможением" потоков в зависимости от показаний этого счётчика и подробнейшим отчётом о работе в контрольном файле) весит после компиляции всего 119 Кб.

Добавлено через 22 минуты
Цитата Сообщение от Power_Basic Посмотреть сообщение
В этой ветке предлагаю обсуждать сходства и различия между C++ и Visual Basic.
Цитата Сообщение от Catstail Посмотреть сообщение
Языки VB и C++ совершенно разные по духу (указатели, управление памятью, объектная подсистема).
Указатели и управление памятью, да, согласен. Пожалуй, в VB кроме PEEK и POKE... опаньки... сейчас с удивлением обнаружил, что даже PEEK и POKE нету
А вот по поводу ООП в C++ это как раз из серии вопросов, ответы на которые я "всегда хотел знать, но стеснялся спросить"
В VB ООП присутствует по полной программе, неужели в плюсы такие возможности не заложены?!

Добавлено через 10 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Весь смысл в их разнице. Были бы они одинаковы, тогда что обсуждать?
Тут именно понять, как использовать примеры на C++ и C, в частности из MSDN, применительно к VB6.
В идеале бы вообще не плохо составить табличку соответствия по основным ключевым словам и типам переменных.
Ну да, именно так! А то получается, что всех отсылают к Эпплману, который давно уже морально устарел и может служить только демотиватором, чтобы уже окончательно отбить всякую охоту "совать нос в WINAPI"
0
Эксперт по электронике
6516 / 3145 / 332
Регистрация: 28.10.2011
Сообщений: 12,362
Записей в блоге: 7
20.04.2020, 17:28
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну locm же совсем недавно выкладывал файл размеров в 1 Кб. Ну вот, наверно, это и был минимально возможный размер в Pure Basic'е.
Минимум 816 бйт без вмешательства в асм код Минимальный размер EXE файла PE формата.
Если отредактировать его и после откомпилировать, получится около 500 байт.

Не по теме:

Цитата Сообщение от Power_Basic Посмотреть сообщение
простое окно и больше ничего не делает, весит в Power Basic'е около 60 Кб
Как-то непохоже на
Цитата Сообщение от Power_Basic Посмотреть сообщение
"Спасибо, что присоединились к нам в войне с раздутым ПО!" (Роберт "Боб" Зейл)
Просто для сравнения. PureBasic 4.51 выпущенный примерно в тоже время что и PowerBasic 10, создает приложение размером 15 КБ из этого кода (код кроссплатформенный).
PureBasic
1
2
3
4
OpenWindow(0, 0, 0, 200, 200, "Демо", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
Repeat
   Event = WaitWindowEvent() 
Until Event = #PB_Event_CloseWindow
И приложение размером 3 КБ если код написан на WinAPI.

Вложения
Тип файла: zip PB Win.zip (10.5 Кб, 3 просмотров)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
20.04.2020, 17:35
Цитата Сообщение от Power_Basic Посмотреть сообщение
В VB ООП присутствует по полной программе, неужели в плюсы такие возможности не заложены?!
- ох... В VB ООП присутствует "далеко не по полной программе". Это в C++ - по полной. Есть хорошая книга "VB Крепкий орешек" авт. Брюс МакКинни (1998) рекомендую
1
20.04.2020, 17:41

Не по теме:

Цитата Сообщение от Power_Basic Посмотреть сообщение
Но с другой стороны, исходник, который я на днях здесь выкладывал, содержащий 700 строк кода (с потоками, с полосами прогресса, с обращениями к PDH счётчику загруженности процессора, с "торможением" потоков в зависимости от показаний этого счётчика и подробнейшим отчётом о работе в контрольном файле) весит после компиляции всего 119 Кб.
Для сравнения, одно из приложений которое недавно закончил, весит 370 КБ. В нем больше 12 тысяч строк. GUI полностью графическое (в том смысле что все элементы управления не системные, а на основе канваса с использованием GDI и GDI+) так же присутствует работа с USB, звуком (воспроизведение, запись в MP3) и т. д. Количество строк кода больше на порядок а размер в три раза больше. Вот и считайте.

0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
20.04.2020, 18:06  [ТС]
Цитата Сообщение от IDK Посмотреть сообщение
1. ТС тоже, как и хороший преподаватель объясняет различия и сходства между языками и их ищет)
Именно так. Всё познаётся в сравнении

Цитата Сообщение от IDK Посмотреть сообщение
2. По вызову СИ функций из VB согласен с теми, кто ответил выше. Нужно этот вопрос знать, есть соответствующие книги.
Ну тогда порекомендуйте, пожалуйста, какую-нибудь современную книгу по вызову СИ функций из VB. Или тоже Эпплмана порекомендуете? С его постоянными упоминаниями Win16 и прочими полезными ископаемыми

Цитата Сообщение от IDK Посмотреть сообщение
3. Для перевода объявлений с СИ на VB особо знания СИ, на мой взгляд - не требуется.
Ну да, согласен, для простого "перевода" имеется утилита API Text Viewer, но там же ещё тонкостей всяких куча большая-пребольшая

Цитата Сообщение от IDK Посмотреть сообщение
Но есть книги, в которых приведены примеры на СИ ну и примеры в MSDN, чтобы их понять, хорошо бы СИ знать.
Ну вот и получается замкнутый круг

Добавлено через 21 минуту

Не по теме:

Цитата Сообщение от locm Посмотреть сообщение
Как-то непохоже на
Цитата Сообщение от Power_Basic
"Спасибо, что присоединились к нам в войне с раздутым ПО!" (Роберт "Боб" Зейл)
Да я и сам удивился, когда вчера начал в этот вопрос вникать :)
И ведь Power Basic пользуется репутацией языка, создающего быстрые компактные программы.
Но справедливости ради, наверно всё-таки, подразумевается, что хотя "стартовый" размер программы достаточно большой, но зато вся её "содержательная часть" очень хорошо оптимизируется. Наверно так, не знаю.

Цитата Сообщение от locm Посмотреть сообщение
Для сравнения, одно из приложений которое недавно закончил, весит 370 КБ. В нем больше 12 тысяч строк. GUI полностью графическое (в том смысле что все элементы управления не системные, а на основе канваса с использованием GDI и GDI+) так же присутствует работа с USB, звуком (воспроизведение, запись в MP3) и т. д. Количество строк кода больше на порядок а размер в три раза больше. Вот и считайте.
Ну это вообще чудеса какие-то. В книгу рекордов можно смело включать :)

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
20.04.2020, 18:10
Цитата Сообщение от Power_Basic Посмотреть сообщение
к Эпплману, который давно уже морально устарел
- библия Эпплмана не может "устреть" (пока жив WinAPI)
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
20.04.2020, 18:30  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- ох... В VB ООП присутствует "далеко не по полной программе". Это в C++ - по полной.
А куда уж дальше-то, я не понимаю? В VB же всё именно на объектах построено. Спплошные объекты кругом, коллекции объектов, события объектов, классы, наследования, полиморфизм...

Цитата Сообщение от Catstail Посмотреть сообщение
Есть хорошая книга "VB Крепкий орешек" авт. Брюс МакКинни (1998) рекомендую
Спасибо за рекомендацию, обязательно найду в интернете.

Добавлено через 9 минут
Цитата Сообщение от Catstail Посмотреть сообщение
- библия Эпплмана не может "устреть" (пока жив WinAPI)
Ну не знаю, я на протяжении последних, пожалуй, лет пяти добросовестно принимался её читать, но всякий раз буксовал на первой же главе. Потом возникало желание читать с пропусками. Но с другой стороны, было сомнение, что пропущу что-то важное, и из-за этого дальше уже что-то не пойму. Ну так вот и уходил весь мой первоначальный энтузиазм в песок
Месяц назад предпринял очередную попытку, дочитал до главы по DLL и SLL и сдулся
0
20.04.2020, 19:23

Не по теме:

Цитата Сообщение от Power_Basic Посмотреть сообщение
И ведь Power Basic пользуется репутацией языка, создающего быстрые компактные программы.
Это всего лишь реклама для тех кто не разбираются чтобы выставить ЯП в лучшем свете. Просто бизнес - нужно сказать людям то что они хотят услышать. Это увеличивает продажи.

Много лет назад проводили сравнение разных бейсиков http://www.vbnet.ru/articles/S... spx?id=220
С того времени многое могло изменится и в текущих версиях цифры будут другие. Но том не менее, PowerBasic не на вершине списка.

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
20.04.2020, 19:58
Цитата Сообщение от Power_Basic Посмотреть сообщение
А куда уж дальше-то, я не понимаю?
- Почитайте C++ - поймете. В VB/VBA объектная подистема "лайт".

Цитата Сообщение от Power_Basic Посмотреть сообщение
наследования,
- наследования (наследования реализации) в VB нет.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну не знаю, я на протяжении последних, пожалуй, лет пяти добросовестно принимался её читать,
- это же справочное руководство...
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
20.04.2020, 21:06
Цитата Сообщение от Power_Basic Посмотреть сообщение
Да нет, об этом даже речи не идёт. Тут чужие-то научиться бы худо-бедно использовать
Тогда никаких проблем. Даже в ассемблере с этим никаких проблем нет, не говоря уже о ЯВУ.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Выходит, что всё-таки есть смысл даже с VS 2019 начать? Но там же ведь всё, скорее всего, через Net Framework? А мне бы с этим чудом-юдом связываться не хотелось бы. А вот кстати, какая версия C++ была самой последней до внедрения технологии Net? Может быть как раз с неё-то и имеет смысл начать?
А причем NET? Не хотите - не используйте. Под дотнет мне кажется лучше шапр использовать.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Не, ну я имел в виду, что вместо объявления нескольких функций, принимающих параметры с разными типами данных, в VB можно объявить одну функцию с параметрами типа Variant, ну вот и получается что-то похожее на шаблон функции в C++.
Нет. Это вообще разное. К примеру шаблон можно переопределить.

Цитата Сообщение от Power_Basic Посмотреть сообщение
И кстати говоря, вы сейчас затронули очень интересный момент. Неужели и правда, в VB есть что-то, чего нет в C++, хотя первый остановился в развитии 22 года назад, а второй развивается до сих пор?
Не, ну первое, что приходит мне в голову это упомянутый тип данных Variant, который имеет репутацию очень медленного.
Ну а что же ещё-то? И почему не используют? Считают нецелесообразным?
Я имею в виду синтаксические возможности. На вбстритс были примеры, ссылки давать нельзя, если нужно отвечу в личку.

Цитата Сообщение от Power_Basic Посмотреть сообщение
А у меня же в этом вся соль замысла. Делим весь текст на несколько частей и обрабатываем каждую из них (одновременно!) в отдельном потоке. Скорость же сразу в разы выше.
Все равно не вижу связи со скоростью работы интерпретатора и данной задачей.

Цитата Сообщение от Power_Basic Посмотреть сообщение
В VB ООП присутствует по полной программе, неужели в плюсы такие возможности не заложены?!
В VB6 COM, и то не полный. В плюсах тоже к примеру нет интерфейсов (они реализуются через абстрактные классы).

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну да, именно так! А то получается, что всех отсылают к Эпплману, который давно уже морально устарел и может служить только демотиватором, чтобы уже окончательно отбить всякую охоту "совать нос в WINAPI"
В сети, мне кажется, уже можно найти любой код и любую API в связке с VB6. Кстати если уж так трудно с параметрами разбираться то можно использовать готовую библиотеку типов.

Цитата Сообщение от Catstail Посмотреть сообщение
Есть хорошая книга "VB Крепкий орешек" авт. Брюс МакКинни (1998) рекомендую
Я бы также посоветовал Advanced Visual Basic 6:Power Techniques for Everyday Programs by Matthew Curland, лучшей книги для углубленного изучения и понимания VB6, его внутренностей, работы с API, COM, потоками и еще кучей всего мне кажется нет. Жаль что она не была издана на русском языке в свое время.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну тогда порекомендуйте, пожалуйста, какую-нибудь современную книгу по вызову СИ функций из VB.
Ну было бы глупо издавать специально для этого целую книгу.

Цитата Сообщение от Power_Basic Посмотреть сообщение
А куда уж дальше-то, я не понимаю? В VB же всё именно на объектах построено. Спплошные объекты кругом, коллекции объектов, события объектов, классы, наследования, полиморфизм...
Нет там наследования. За наследованием к Matthew Curland'у. Ну а вообще задачи можно решить и без наследования. Есть вещи еще гибче чем наследование реализации. Также это очень спорный момент что есть ООП. Тут неоднократно были споры по этому поводу, можете почитать.
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
21.04.2020, 01:12  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- Почитайте C++ - поймете. В VB/VBA объектная подистема "лайт".
Я не ставлю перед собой задачу глубокого изучения C/C++. Я любитель, не профессионал. Программы пишу исключительно для самого себя, поэтому мне вполне достаточно двух диалектов бейсика. А C и C++ мне сейчас нужны исключительно для того, чтобы понимать примеры, написанные на этих языках в MSDN. Ну вы же сами знаете, что там существует своего рода дискриминация бейсик-программистов.

Цитата Сообщение от Catstail Посмотреть сообщение
- наследования (наследования реализации) в VB нет.
На самом деле, я не самый глубокий знаток всех этих "прибамбасов", просто перечислил "мудрёные" слова, которые когда-то очень давно встретил в Онлайн-библиотеке Visual Basic. Про полиморфизм там точно было написано. Про "наследование", не уверен
Но вам верю!

Цитата Сообщение от Power_Basic
Ну не знаю, я на протяжении последних, пожалуй, лет пяти добросовестно принимался её читать,
Цитата Сообщение от Catstail Посмотреть сообщение
- это же справочное руководство...
Согласен, справочное, там так и написано, дескать, можете читать выборочно, начиная с любого места в книге, но прежде всего первые 4 главы прочитайте обязательно и очень внимательно, а иначе потом ничего не поймёте. Ну вот я и читаю эти 4 главы уже лет пять, не меньше
Вот для вас это "библия", потому что вы, наверняка, первый раз прочитали эту книгу, когда процентов 90 изложенной в ней информации ещё было актуально, а теперь возможно заглядываете лишь изредка. Ну а мне-то каково сейчас окунаться в царство Windos 95, приправленное постоянными упоминаниями Win16? Ну "не вкусно" это читать в 21-ом году 21-го века из системы Win_10_64
А там же ведь ещё постоянные отсылки к его же книжке по Win16. Ну вот и думаешь, может быть я сейчас ничего здесь не пойму, потому что ту его книжку сначала не прочитал. И первые 4 главы тоже хрен пропустишь, потому что написано же: обязательно прочитай, а то дальше ничего не поймёшь!

А вот кстати, он там постоянно рекомендует использовать свой самодельный API32.TXT вместо "штатного" Win32API.TXT. Имеет смысл?

Добавлено через 52 минуты

Не по теме:

Цитата Сообщение от Power_Basic
И ведь Power Basic пользуется репутацией языка, создающего быстрые компактные программы.
Цитата Сообщение от locm Посмотреть сообщение
Это всего лишь реклама для тех кто не разбираются чтобы выставить ЯП в лучшем свете. Просто бизнес - нужно сказать людям то что они хотят услышать. Это увеличивает продажи.
Пожалуй, да. И я "клюнул" в момент выбора :)

Цитата Сообщение от locm Посмотреть сообщение
Много лет назад проводили сравнение разных бейсиков
С того времени многое могло изменится и в текущих версиях цифры будут другие. Но том не менее, PowerBasic не на вершине списка.
Спасибо, с интересом посмотрел и почитал. Реально очень полезно мне для видения общей картины.
Выходит, на тот момент времени (2006 год) Pure Basic самый компактный, а Free Basic самый быстрый.
И да, про PureBasic очень лестно отзываются. Скорость сопоставима с ассемблерами, визуальный редактор.



Добавлено через 2 часа 8 минут
Цитата Сообщение от The trick Посмотреть сообщение
Тогда никаких проблем. Даже в ассемблере с этим никаких проблем нет, не говоря уже о ЯВУ.
С ассемблерами вообще морока, - в стек параметры вставлять, потом ещё надо не запутаться, слева-направо или справо-налево и кто (вызывающий или вызываемый) очищает стек в самом конце. Это я припоминаю теорию, которую когда-то давным-давно пытался отрывочно изучать

Цитата Сообщение от Power_Basic
Выходит, что всё-таки есть смысл даже с VS 2019 начать? Но там же ведь всё, скорее всего, через Net Framework? А мне бы с этим чудом-юдом связываться не хотелось бы. А вот кстати, какая версия C++ была самой последней до внедрения технологии Net? Может быть как раз с неё-то и имеет смысл начать?
Цитата Сообщение от The trick Посмотреть сообщение
А причем NET? Не хотите - не используйте. Под дотнет мне кажется лучше шапр использовать.
Правильно я понял, что та версия C++, которая входит в состав VS 2019, умеет создавать EXE-файлы, для работы которых совсем не требуется поддержка среды Net Framework при прогоне? Ну вот например, я могу на Power Basic'е (ну или даже на Визуальном бейсике) скомпилировать программу на десктопе, а потом без проблем прогонять её на своём слабеньком нетбуке, куда современный Net Framework просто физически невозможно установить (процессор 900 МГц, 2 Гб ОЗУ, SSD диск на 4 Гб, карта памяти 32 Гб, на которую установлена, разумеется с большими сложностями и с которой запускается Windows 7).
Ну если это действительно так, тогда, пожалуй и правда, имеет смысл использовать самую последнюю версию C++, хоть и много места займёт на диске десктопа.

Цитата Сообщение от Power_Basic
Не, ну я имел в виду, что вместо объявления нескольких функций, принимающих параметры с разными типами данных, в VB можно объявить одну функцию с параметрами типа Variant, ну вот и получается что-то похожее на шаблон функции в C++.
Цитата Сообщение от The trick Посмотреть сообщение
Нет. Это вообще разное. К примеру шаблон можно переопределить.
Не, ну понятно, конечно же, что C++ гораздо гибче чем VB, но я всё-таки пытаюсь искать какие-то анологии, для изучения так проще

Цитата Сообщение от Power_Basic
И кстати говоря, вы сейчас затронули очень интересный момент. Неужели и правда, в VB есть что-то, чего нет в C++, хотя первый остановился в развитии 22 года назад, а второй развивается до сих пор?
Цитата Сообщение от The trick Посмотреть сообщение
Я имею в виду синтаксические возможности. На вбстритс были примеры, ссылки давать нельзя, если нужно отвечу в личку.
Да, пожалуйста, скиньте ссылку, мне это действительно очень интересно.

Цитата Сообщение от Power_Basic
А у меня же в этом вся соль замысла. Делим весь текст на несколько частей и обрабатываем каждую из них (одновременно!) в отдельном потоке. Скорость же сразу в разы выше.
Цитата Сообщение от The trick Посмотреть сообщение
Все равно не вижу связи со скоростью работы интерпретатора и данной задачей.
Ну всё же началось именно со скорости. У меня есть любимая программа по созданию аудиокниг MP3Book2005, но автор давно уже её забросил и не развивает. Ну вот я и решил потягаться с ним в скорости. Изначально было две "центральные" идеи - перенести всю обработку текста в ОЗУ и только в самом конце сбрасывать полученный результат на диск, и использовать много потоков вместо одного как у него. Разумеется я не знаю, сколько потоков он использует на самом деле, но, исходя из относительной древности программы, предполагаю что один.
На интерпретаторе VBA Excel несколько потоков запустить не получится без использования опять же WINAPI или каких-нибудь ещё "премудростей".

Цитата Сообщение от The trick Посмотреть сообщение
В VB6 COM, и то не полный. В плюсах тоже к примеру нет интерфейсов (они реализуются через абстрактные классы).
А вот тогда в Power Basic'е классы есть или нет? Ну мне хотя бы чтоб понять, о чём вообще речь идёт. Например, там можно объявить класс вот так:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
CLASS MyClass
 INSTANCE Counter AS LONG
 
 INTERFACE MyInterface
   INHERIT IUNKNOWN            ' inherit the base class
   METHOD BumpIt(Inc AS LONG) AS LONG
     Temp& = Counter + Inc
     INCR Counter
     METHOD = Temp&
   END METHOD
 END INTERFACE
 ' more interfaces could be implemented here
END CLASS
А потом создавать объекты этого класса вот так:

PureBasic
1
2
3
4
5
6
FUNCTION PBMAIN()
 DIM Stuff AS MyInterface
 
 LET Stuff = CLASS "MyClass"
 x& = Stuff.BumpIt(77)
END FUNCTION
Неужели в С++ такое невозможно?!
Вот те раз, а я уже привык, мне понравилось

Цитата Сообщение от The trick Посмотреть сообщение
В сети, мне кажется, уже можно найти любой код и любую API в связке с VB6.
Ну вот, например, со счётчиками производительности PDH я совсем недавно почти две недели промучался, прежде чем удалось во всём разобраться. А пример на VB удалось найти только древний-предревний (для VB4), хотя даже в самой MSDN имеются PDH-функции специально предназначенные для Визуального бейсика, ну и даже с примерами кое-где. Но они у меня не работали, а я не понимал, толи я неправильно эти функции использую, толи параметры неправильно передаю.

Цитата Сообщение от The trick Посмотреть сообщение
Кстати если уж так трудно с параметрами разбираться то можно использовать готовую библиотеку типов.
В дистрибутиве Power Basic'а имеется большая библиотека. Вот случайный отрывок из первого попавшегося файла:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DECLARE FUNCTION InternetSetOptionW LIB "WinINet.dll" _
   ALIAS "InternetSetOptionW" _
   ( _
    BYVAL hInternet AS DWORD, _        ' in
    BYVAL dwOption AS DWORD, _         ' in
    BYVAL lpBuffer AS BYTE PTR, _      ' in
    BYVAL dwBufferLength AS DWORD _    ' in
   ) _
   AS LONG
 
#IF %DEF(%UNICODE)
DECLARE FUNCTION InternetSetOption LIB "WinINet.dll" _
   ALIAS "InternetSetOptionW" _
   ( _
    BYVAL hInternet AS DWORD, _        ' in
    BYVAL dwOption AS DWORD, _         ' in
    BYVAL lpBuffer AS BYTE PTR, _      ' in
    BYVAL dwBufferLength AS DWORD _    ' in
   ) _
   AS LONG
#ELSE
Но всё равно проблемы с передачей параметров постоянно у меня возникают. Особенно в COM.

Цитата Сообщение от The trick Посмотреть сообщение
Я бы также посоветовал Advanced Visual Basic 6:Power Techniques for Everyday Programs by Matthew Curland, лучшей книги для углубленного изучения и понимания VB6, его внутренностей, работы с API, COM, потоками и еще кучей всего мне кажется нет. Жаль что она не была издана на русском языке в свое время.
Спасибо, обязательно найду и почитаю.

Цитата Сообщение от Power_Basic
Ну тогда порекомендуйте, пожалуйста, какую-нибудь современную книгу по вызову СИ функций из VB.
Цитата Сообщение от The trick Посмотреть сообщение
Ну было бы глупо издавать специально для этого целую книгу.
Но они же всё-таки есть
Цитата Сообщение от IDK Посмотреть сообщение
2. По вызову СИ функций из VB согласен с теми, кто ответил выше. Нужно этот вопрос знать, есть соответствующие книги.

Цитата Сообщение от The trick Посмотреть сообщение
Нет там наследования. За наследованием к Matthew Curland'у. Ну а вообще задачи можно решить и без наследования. Есть вещи еще гибче чем наследование реализации. Также это очень спорный момент что есть ООП. Тут неоднократно были споры по этому поводу, можете почитать.
Да нет, на самом деле такие глубины мне сейчас не особенно нужны. Я же просто перечислил все "мудрёные" слова по ООП, которые когда-то давным-давно встречал при чтении Online Books Визуального бейсика

Добавлено через 11 минут
Цитата Сообщение от The trick Посмотреть сообщение
В сети, мне кажется, уже можно найти любой код и любую API в связке с VB6.
И ещё я забыл сказать, что, к сожалению, в сети сначала подсовывают примеры на VB.Net и только потом на VB
0
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
21.04.2020, 08:58
Говоря про книги, имел ввиду в основном Эплмана. Для IDE, которому 22 года, и нет аудитории, которой можно было бы адресовать книгу/ги смысла осовременивать что-то нет. В API вьюире нет всех объявлений для интерфейсов винды, на мой взгляд, нужно уметь их переводить на VB. Эплман рассчитан на подготовленного читателя, другой может не понять не разобраться, а так, опять же на мой взгляд, все там есть. Если что-то непонятно, то можно спросить на форуме. Либо изучать вдумчиво, любознательно, основательно. Знания, обычно, приобретаются тяжелым трудом, сами собой не приходят.

Условно, опять же, можно сказать, что VB мертв, но, если рассмотреть VB.net, можно и не согласиться с данным утверждением. Под VB.net, скажем, есть все что нужно и в современном виде. Можно его изучать. Но, если ставить вопрос изучения нового языка, возможно, что VB.net не самая лучшая кандидатура.
0
Эксперт по электронике
6516 / 3145 / 332
Регистрация: 28.10.2011
Сообщений: 12,362
Записей в блоге: 7
21.04.2020, 11:01
Цитата Сообщение от Power_Basic Посмотреть сообщение
Правильно я понял, что та версия C++, которая входит в состав VS 2019, умеет создавать EXE-файлы, для работы которых совсем не требуется поддержка среды Net Framework при прогоне?
Зато требуется рантайм-библиотека, которой может не оказаться в винде.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну если это действительно так, тогда, пожалуй и правда, имеет смысл использовать самую последнюю версию C++
Нужны нововведения текущего стандарта?

Цитата Сообщение от Power_Basic Посмотреть сообщение
Разумеется я не знаю, сколько потоков он использует на самом деле
Программа ProcessHacker или подобная позволит это выяснить.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
21.04.2020, 11:12
Цитата Сообщение от Power_Basic Посмотреть сообщение
Спасибо, с интересом посмотрел и почитал. Реально очень полезно мне для видения общей картины.
Выходит, на тот момент времени (2006 год) Pure Basic самый компактный, а Free Basic самый быстрый.
И да, про PureBasic очень лестно отзываются. Скорость сопоставима с ассемблерами, визуальный редактор.
Не стоит доверять той статье. В среднем Pure/Free/VB6 одинаковы по скорости. (вот и вот к примеру)

Цитата Сообщение от Power_Basic Посмотреть сообщение
С ассемблерами вообще морока, - в стек параметры вставлять, потом ещё надо не запутаться, слева-направо или справо-налево и кто (вызывающий или вызываемый) очищает стек в самом конце. Это я припоминаю теорию, которую когда-то давным-давно пытался отрывочно изучать
В COM и WINAPI используется соглашение STDCALL (для x86), только пару случаев исключения.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Правильно я понял, что та версия C++, которая входит в состав VS 2019, умеет создавать EXE-файлы, для работы которых совсем не требуется поддержка среды Net Framework при прогоне? Ну вот например, я могу на Power Basic'е (ну или даже на Визуальном бейсике) скомпилировать программу на десктопе, а потом без проблем прогонять её на своём слабеньком нетбуке, куда современный Net Framework просто физически невозможно установить (процессор 900 МГц, 2 Гб ОЗУ, SSD диск на 4 Гб, карта памяти 32 Гб, на которую установлена, разумеется с большими сложностями и с которой запускается Windows 7).
Ну если это действительно так, тогда, пожалуй и правда, имеет смысл использовать самую последнюю версию C++, хоть и много места займёт на диске десктопа.
Это вообще разные вещи. Хотите использовать - используйте. Не хотите - не используйте. Насчет версий фреймворка - ее можно выбирать если требуется.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Не, ну понятно, конечно же, что C++ гораздо гибче чем VB, но я всё-таки пытаюсь искать какие-то анологии, для изучения так проще
Нет. Если проводить аналогию то в C++ можно также Variant использовать. А если использовать какой-нибудь _variant_t или CComVariant, то работать можно почти также легко как в VB.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну всё же началось именно со скорости. У меня есть любимая программа по созданию аудиокниг MP3Book2005, но автор давно уже её забросил и не развивает. Ну вот я и решил потягаться с ним в скорости. Изначально было две "центральные" идеи - перенести всю обработку текста в ОЗУ и только в самом конце сбрасывать полученный результат на диск, и использовать много потоков вместо одного как у него. Разумеется я не знаю, сколько потоков он использует на самом деле, но, исходя из относительной древности программы, предполагаю что один.
На интерпретаторе VBA Excel несколько потоков запустить не получится без использования опять же WINAPI или каких-нибудь ещё "премудростей".
В данном случае скорость работы интерпретатора или скомпилированного кода неважна, поскольку общее время его работы ничтожно мало по сравнению с тем же кодом SAPI к примеру. Если уж очень нужно параллельности то даже в офисе можно просто несколько экземпляров приложения запустить и выполнить в них макросы.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Неужели в С++ такое невозможно?!
Вот те раз, а я уже привык, мне понравилось
Конечно можно. Объекты создавать можно во многих языках, но есть группа людей которые считают что ООП - это как в плюсах, а такое ООП как в VB6 к примеру не ООП, другие наоборот.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну вот, например, со счётчиками производительности PDH я совсем недавно почти две недели промучался, прежде чем удалось во всём разобраться. А пример на VB удалось найти только древний-предревний (для VB4), хотя даже в самой MSDN имеются PDH-функции специально предназначенные для Визуального бейсика, ну и даже с примерами кое-где. Но они у меня не работали, а я не понимал, толи я неправильно эти функции использую, толи параметры неправильно передаю.
Не знаю, я в гугл забил и мне сразу куча вариантов вылезла.

Цитата Сообщение от Power_Basic Посмотреть сообщение
В дистрибутиве Power Basic'а имеется большая библиотека. Вот случайный отрывок из первого попавшегося файла:
VB6 поддерживает библиотеки типов (tlb). Вот есть такие типа win32.tlb и т.д. которые можно подключить в проект и функцие объявленные там будут доступны для использования. В аттаче пример. Там не все функции, но библиотеки можно дополнять и т.п. Кстати с такими библиотеками приложение будет работать быстрее.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Но всё равно проблемы с передачей параметров постоянно у меня возникают. Особенно в COM.
Это какой-то беспредметный разговор. Если есть проблемы, то стоит конкретно ее назвать, а так лично для меня непонятно в чем там могут быть проблемы.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Но они же всё-таки есть
Где?

Добавлено через 1 минуту
Цитата Сообщение от locm Посмотреть сообщение
Зато требуется рантайм-библиотека, которой может не оказаться в винде.
Необязательно. Можно сделать так чтобы из зависимостей была только msvcrt.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
21.04.2020, 17:30  [ТС]
Цитата Сообщение от IDK Посмотреть сообщение
Говоря про книги, имел ввиду в основном Эплмана... Эплман рассчитан на подготовленного читателя, другой может не понять не разобраться, а так, опять же на мой взгляд, все там есть
Для своего времени книга безусловно замечательная, кто бы спорил. Но сейчас, чтобы изучать её "с нуля", хорошо бы иметь поблизости опытного наставника, который постоянно заглядывает через плечо и подсказывает: "Вот это можешь смело пропустить... вот это прочитай просто для общего представления... а вот это должен знать обязательно". У меня такого наставника, увы, нет
Поэтому для меня это выглядит как книга по радиолампам в эпоху полупроводников, например. Ну там же тоже, наверняка, много чего полезного можно почерпнуть. Законы Кирхгофа, расчёт цепей, да и много ещё чего другого, наверняка. Читая Эплмана, сразу, например, понятно, что Win16 уже точно не используется, и такие отрывки книги можно смело пропускать, но вот всё остальное посвящено Windows 95. Что там устарело уже окончательно, а что нет, совершенно не понятно. Вот именно это и демотивирует.

Цитата Сообщение от IDK Посмотреть сообщение
Для IDE, которому 22 года, и нет аудитории, которой можно было бы адресовать книгу/ги смысла осовременивать что-то нет.
Ну да, это понятно. Нет спроса, нет и предложения. Никому не хочется затрачивать серьёзных усилий и терять время на то, что может оказаться невостребованным. Но с другой стороны, как я слышал, VB6 до сих пор входит в учебные программы в некоторых ВУЗах. Если это так (проверить не могу), тогда какая-то аудитория (и немалая) всё-таки есть.

Цитата Сообщение от IDK Посмотреть сообщение
В API вьюире нет всех объявлений для интерфейсов винды, на мой взгляд, нужно уметь их переводить на VB.
Да там, наверняка, нет и деклараций для всех API-функций, "родившихся" уже после 1998-го года.

Цитата Сообщение от IDK Посмотреть сообщение
Условно, опять же, можно сказать, что VB мертв, но, если рассмотреть VB.net, можно и не согласиться с данным утверждением. Под VB.net, скажем, есть все что нужно и в современном виде. Можно его изучать. Но, если ставить вопрос изучения нового языка, возможно, что VB.net не самая лучшая кандидатура.
Но там же фреймворк с его дутым софтом и дурной репутацией. И тогда уже точно мои программы, написанные на десктопе, не получиться запускать на моём слабеньком нетбуке

Добавлено через 27 минут
Цитата Сообщение от Power_Basic
Правильно я понял, что та версия C++, которая входит в состав VS 2019, умеет создавать EXE-файлы, для работы которых совсем не требуется поддержка среды Net Framework при прогоне?
Цитата Сообщение от locm Посмотреть сообщение
Зато требуется рантайм-библиотека, которой может не оказаться в винде.
Тогда получается, что наши с вами диалекты бейсиков в этом аспекте даже круче чем сам C++?! Ну дела

А если серьёзно, то сишная рантайм-библиотека всё-таки присутствует (и всегда будет присутствовать) во всех версиях Windows и не занимает так много места как фреймворк.

Цитата Сообщение от Power_Basic
Ну если это действительно так, тогда, пожалуй и правда, имеет смысл использовать самую последнюю версию C++
Цитата Сообщение от locm Посмотреть сообщение
Нужны нововведения текущего стандарта?
Да нет, я даже не знаю, о каких нововведениях идёт речь
Просто хочется найти какой-нибудь оптимальный вариант, чтобы одновременно и места на диске не слишком много занимало, и хорошие перспективы были открытыми на тот случай, если мне всё-таки когда-нибудь захочется написать что-то и на С++ тоже.

Цитата Сообщение от Power_Basic
Разумеется я не знаю, сколько потоков он использует на самом деле
Цитата Сообщение от locm Посмотреть сообщение
Программа ProcessHacker или подобная позволит это выяснить.
Спасибо за подсказку, надо будет глянуть. Может быть даже выяснится, что там у того дядьки тоже несколько потоков используется, и тогда, получается, что моё с ним"заочное соревнование" вообще не имело никакого смысла с самого начала.
0
Эксперт по электронике
6516 / 3145 / 332
Регистрация: 28.10.2011
Сообщений: 12,362
Записей в блоге: 7
21.04.2020, 17:41
Цитата Сообщение от Power_Basic Посмотреть сообщение
Тогда получается, что наши с вами диалекты бейсиков в этом аспекте даже круче чем сам C++?!
Не нужно путать ЯП и компиляторы. Для Си много компиляторов и у каждого свои особенности.

Цитата Сообщение от Power_Basic Посмотреть сообщение
А если серьёзно, то сишная рантайм-библиотека всё-таки присутствует (и всегда будет присутствовать) во всех версиях Windows
Например далеко не во всех виндах по умолчанию будет MSVCP14.dll или более свежий рантайм. В каждой студии своя рантайм библиотека.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
21.04.2020, 18:32
Цитата Сообщение от Power_Basic Посмотреть сообщение
Тогда получается, что наши с вами диалекты бейсиков в этом аспекте даже круче чем сам C++?! Ну дела
А если серьёзно, то сишная рантайм-библиотека всё-таки присутствует (и всегда будет присутствовать) во всех версиях Windows и не занимает так много места как фреймворк.
Visual C++ позволяет компилировать так чтобы в зависимостях были только системные либы.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
21.04.2020, 19:41  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Не стоит доверять той статье. В среднем Pure/Free/VB6 одинаковы по скорости. (вот и вот к примеру)
По ссылкам посмотрел и сделал вывод, что идеальный универсальный бенчмарк придумать вообще невозможно.

Цитата Сообщение от The trick Посмотреть сообщение
В COM и WINAPI используется соглашение STDCALL (для x86), только пару случаев исключения.
Ну это приятно слышать, а то ведь получается 4 возможных комбинаций. Поди там разберись, когда какую применять, если не знать заранее

Цитата Сообщение от The trick Посмотреть сообщение
Это вообще разные вещи. Хотите использовать - используйте. Не хотите - не используйте. Насчет версий фреймворка - ее можно выбирать если требуется.
Во как! Оказывается, там даже можно выбирать, под какую систему компилировать, - под Net или под "нормальный" Windows. Очень познавательная ссылочка.

Цитата Сообщение от The trick Посмотреть сообщение
Нет. Если проводить аналогию то в C++ можно также Variant использовать. А если использовать какой-нибудь _variant_t или CComVariant, то работать можно почти также легко как в VB.
Да нет, я не такой уж большой поклонник Variant'ов, поскольку ещё 15 лет назад прочитал в VB OnlineBooks, что они очень медленные, что их надо, по возможности, избегать и следует всегда явно объявлять переменные, а иначе по умолчанию они будут Variant'ами.

Кстати, на днях смотрел несколько очередных уроков на ютубе. На этот раз про стек и про рекурсию. Ну и про переполнение стека заодно, как резульат неправильного использования рекурсии.
Ну вот как раз пример того, что изучать новый язык совсем уж "с нуля" или уже имея определённый опыт в других языках, это всё-таки большая разница.
Стек же он и в Африке стек Хоть в С++, хоть в VB. И про рекурсию и переполнение стека можно сказать то же самое. Так что это смело можно отнести к сходству двух этих языков. Хотя, конечно, в С++ содержимое стека, наверняка, можно "потрогать ручками", а в VB такое вряд ли возможно. Ну это можно записать в различия. Преподаватель тот про это не рассказывал пока, но я и сам уже догадался.
Следующий урок про применение рекурсии функций для вычисления факториалов
Смутно припоминаю, что давным-давно еще в институте на уроках программирования нам предлагали похожую задачу. Ну ни разу в жизни даже близко не понадобилось ничего подобного.
Да и вообще я когда-то где-то прочитал, что надо стремиться к максимальной простоте кода, чтобы потом через несколько лет сам же смог в нём легко разобраться. Ну вот и придерживаюсь с тех пор этого правила.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
21.04.2020, 22:08
Цитата Сообщение от Power_Basic Посмотреть сообщение
Может быть даже выяснится, что там у того дядьки тоже несколько потоков используется, и тогда, получается, что моё с ним"заочное соревнование" вообще не имело никакого смысла с самого начала.
Проштудировал по этой теме 4PDA форумы, есть там люди, которых активно интересуют подобные программы. MP3book2005 хвалят в основном, хотя и ругают автора за жадность и нетерпимую борьбу с пиратами. Ну да не в этом суть.
Читал, что умеет она в несколько потоков, кто то писал, что даже 8.
Лично я не смог её заставить так делать. Ну, знакомство было шапошное, чисто посмотреть. Накидал на коленке свой код, потому, что не дает покоя эта многозадачность. Вызвать процедуру записи в wav в несколько потоков без ошибок мне так и не удалось. Я понял, что с одним экземпляром движка это не сделать в принципе. Надо каждый раз инициализировать новый экземпляр SAPI5, после отработки его удалять, и всё это надо в потоке, которому передать параметры и следить за его работой! Сложности не соизмеримые с результатом.
Гораздо проще написать отдельный exe-шник (к стати, всего 15 Кб вышел), который управляется с параметрами ком. строки, и уже из основной программы управлять его запусками. В принципе то же самое делает MP3book2005, когда кодирует lame.exe в mp3, значит ни чего зазорного в этом нет.
Когда концепция выстроилась, дальше уже дело техники.
Заложил я 10 потоков, загрузил нашего Льва Толстого "Война и мир" оба 2 тома. Разбил по 100 строк - 127 штук вышло.
Это такие характеристики текста :
12 573 строки, 1 483 566 символов, ~ 25 часов чтения голосом.
Голос Николай отработал за 6.38 минут
Мой 4-х ядерный i5 грузился от 8% до 50%. Т.е смело могу ещё + 8 потоков накинуть, и за 3 минуты закодировать!.
Голос Алёна 22k, более современный, грузил комп на 98-100%, при 10 потоках работал 6.91 минуту, считай на пределе.

Теперь MP3book2005, работал 32 минуты, грузил комп на 25%. Т.е. по всему видно в 1 поток, и если бы на 1 ядро, то 100% загрузка.

В общем это я к тому, что задачу можно распараллелить, но проще это сделать способом как я. Смысл соревнования есть, MP3book2005 не шибко быстрая.
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
21.04.2020, 23:23  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
В данном случае скорость работы интерпретатора или скомпилированного кода неважна, поскольку общее время его работы ничтожно мало по сравнению с тем же кодом SAPI к примеру. Если уж очень нужно параллельности то даже в офисе можно просто несколько экземпляров приложения запустить и выполнить в них макросы.
Эдак вы меня окончательно убедите в том, что моя давнишняя "сумашедшая" идея программировать всё только из VBA Excel была не лишена здравого смысла
Взаимодействие с WINAPI всегда под рукой, а если что, то можно же ещё и DLL-айки подключать, написанные хотя бы на том же PowerBasic'е.

Цитата Сообщение от The trick Посмотреть сообщение
Конечно можно. Объекты создавать можно во многих языках, но есть группа людей которые считают что ООП - это как в плюсах, а такое ООП как в VB6 к примеру не ООП, другие наоборот.
Ну в такие тонкости вникать, мне конечно, не имеет смысла. Главное, что имеется возможность создавать объекты привычным мне образом.

Цитата Сообщение от The trick Посмотреть сообщение
Не знаю, я в гугл забил и мне сразу куча вариантов вылезла.
Ну может мне не везло просто. Ну правда, первыми всегда предлагались ссылки именно по VB.net, и только если спуститься ниже по странице, то там уже было что-нибудь по VB6.

Цитата Сообщение от The trick Посмотреть сообщение
VB6 поддерживает библиотеки типов (tlb). Вот есть такие типа win32.tlb и т.д. которые можно подключить в проект и функцие объявленные там будут доступны для использования. В аттаче пример. Там не все функции, но библиотеки можно дополнять и т.п. Кстати с такими библиотеками приложение будет работать быстрее.
А, понял, это же описания COM-библиотек, которые подключаются к проекту на VB6 через меню Project > References, а в PowerBasic'е с помощью COM-браузера, где можно просто щёлкнуть по имени соответствующей DLL и будут автоматически написаны все заголовки для работы с этой библиотекой.

Цитата Сообщение от Power_Basic
Но всё равно проблемы с передачей параметров постоянно у меня возникают. Особенно в COM.
Цитата Сообщение от The trick Посмотреть сообщение
Это какой-то беспредметный разговор. Если есть проблемы, то стоит конкретно ее назвать, а так лично для меня непонятно в чем там могут быть проблемы.
Согласен, получается нелепо
Но сейчас просто ситуация такая, что я ничего нового не программирую, а только старый проект "до ума довожу", а там всё взаимодействие с COM и с WINAPI уже худо-бедно организовано. Так что, примеров, как выяснилось, вот прямо сейчас привести не смогу. Даже пытался специально найти те места, где у меня были сложности, и не нашёл. Сомнительные места кода удалены вместе со "следами преступлений"
Так что пока тему проблемы передачи параметров в COM и WINAPI временно открывать не буду. Открою, когда возникнет первая же подобная трудность.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2020, 23:23
Помогаю со студенческими работами здесь

набор опытных C++ программистов
Большой иностранный банк проводит набор опытных C++ программистов для IT-департамента своего московского офиса. Необходимы кандидаты с...

Приглашаю На работу Опытных Программистов
Всем привет . Я ищю Хороших программистов для работы над Онлайн игрой ( в типе neverlands) От вас Требую одно хорошую ...

Нужен совет опытных программистов на C#
Всем добрый день! Я здесь абсолютно новенький! Так что прошу сразу не кидать камнями если задаю вопросы не там где нужно! :) Совсем...

Нужен совет опытных программистов
Задача: Написать систему логирования LS кода, подсчета производительности (как долго исполняется LS код) и учета ошибок. Цель: получить...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru