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

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

18.04.2020, 16:11. Показов 13231. Ответов 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
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
18.04.2020, 18:24
Цитата Сообщение от Power_Basic Посмотреть сообщение
Самые первые отличия, которые бросились в глаза
это - готовая форма и элементы управления, которые изменяются движением мыши в VB. И не виден весь код, как в С++, а только необходимый.
Для создания оконного приложения в С++ слишком много стартового кода, который не всегда нужен.
0
Эксперт по электронике
6518 / 3147 / 332
Регистрация: 28.10.2011
Сообщений: 12,363
Записей в блоге: 7
18.04.2020, 18:32
Цитата Сообщение от Power_Basic Посмотреть сообщение
для удобства изучения материалов MSDN.
То есть изучение C++ только ради лучше понимания описания WinAPI?
Это все равно что изучать высшую математику для понимания таблицы умножения.
Вам в первую очередь нужно знать типы переменных Си.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
18.04.2020, 20:16  [ТС]
Цитата Сообщение от Argus19 Посмотреть сообщение
это - готовая форма и элементы управления, которые изменяются движением мыши в VB. И не виден весь код, как в С++, а только необходимый.
Для создания оконного приложения в С++ слишком много стартового кода, который не всегда нужен.
На самом деле, это как раз вопрос из серии "я всегда хотел знать, но стеснялся спросить"
Неужели там у них за столько лет не придумали какого-нибудь редактора форм, который писал бы код для форм и контролек автоматически?
Ну по крайней мере, в VB и PowerBasic'е такие фишки присутствуют, а годков-то им обоим уже ого-го сколько. Первый "забросили" 22 года назад, а второй прекратил развиваться 9 лет назад в связи со смертью своего главного идейного вдохновителя и разработчика Роберта Зейла.

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

Говорят, что C++ хорош, например, для написания драверов. Но я (любитель) не могу представить себе такую ситуацию, чтобы мне самому понадобилось писать драйвер. А для моих "бытовых" задач вполне хватает VB и PowerBasic'а. Да я ещё и не все их возможности использую (ну просто по незнанию), хотя и стремлюсь к этому.

Цитата Сообщение от locm Посмотреть сообщение
Вам в первую очередь нужно знать типы переменных Си.
Ну всё-таки с типами переменных мне попроще чем для тех, кто знаком только с VB. В PowerBasic'е с этим делом всё-таки побогаче и я уже как бы слегка подкован в этом плане
На скриншотах видно, что для подавляющего большинства типов данных C/C++ имеется почти однозначное соответстствие с каким-нибудь типом данных в PowerBasic'е. Подозреваю, что точно также дело обстоит и в Pure Basic'е.
Кстати, перед открытием этой ветки я колебался здесь (на подфоруме VB) открыть или там. И всё-таки решил здесь.
В конце концов, VB это "интернациональный" язык программирования, через который прошли почти все
Миниатюры
Быстрый старт в изучении C++ для относительно опытных программистов Basic   Быстрый старт в изучении C++ для относительно опытных программистов Basic  
0
Эксперт по электронике
6518 / 3147 / 332
Регистрация: 28.10.2011
Сообщений: 12,363
Записей в блоге: 7
18.04.2020, 20:51
Цитата Сообщение от Power_Basic Посмотреть сообщение
WinAPI "разговаривает с нами" именно этим языком
Декларация функций это не весь язык.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Говорят, что C++ хорош, например, для написания драйверов.
Они и на бейсике пишутся. https://www.cyberforum.ru/blog... g3078.html
https://www.cyberforum.ru/blog... g2930.html
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
18.04.2020, 20:56
Цитата Сообщение от Power_Basic Посмотреть сообщение
Неужели там у них за столько лет не придумали какого-нибудь редактора форм, который писал бы код для форм и контролек автоматически?
Есть, но там вываливается весь код, а в VB работаем только со свойствами. Создать проект -> CLR -> Windows Form. Размешаем на форме кнопку и меняем заголовок формы и надпись на кнопке. Вот такой получается заголовочный файл "Form1.h":
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#pragma once
 
namespace CLR {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    /// <summary>
    /// Сводка для Form1
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    protected: 
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(134, 164);
            this->button1->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(159, 69);
            this->button1->TabIndex = 0;
            this->button1->Text = L"Старт";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(12, 23);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(423, 367);
            this->Controls->Add(this->button1);
            this->Font = (gcnew System::Drawing::Font(L"Times New Roman", 12, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
                static_cast<System::Byte>(204)));
            this->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
            this->Name = L"Form1";
            this->Text = L"Тест";
            this->ResumeLayout(false);
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             }
    };
}
и ещё несколько файлов. Release файл 53760 байт, которые ничего не делают.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
18.04.2020, 22:23
Цитата Сообщение от Power_Basic Посмотреть сообщение
Подозреваю, что точно также дело обстоит и в Pure Basic'е.
unsigned int 4 байта (0 - 4 294 967 295)
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
18.04.2020, 23:18
А при чем плюсы и WINAPI? Там под C почти все декларации, большая часть винды на си написана. Разница между плюсами и си значительна тем более если говорить о последнем стандарте.

Добавлено через 15 минут
Argus19, в студии также можно накидать шаблон диалогового окна. Вызвать можно хоть из ассемблера.

Добавлено через 10 минут
Power_Basic, во многих средах такоё есть. Для плюсов есть c++ bulder, qtcreator где также можно накидать на форму элементов. Даже для ассемблера есть такие. Не следует путать язык и среду разработки. C и C++ универсальные языки в которых помимо графических приложений можно писать под разные платформы к примеру микроконтроллеры где никаких форм нет. Даже в VB6 нельзя просто создать форму - это обеспечивается средой.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
18.04.2020, 23:48
Цитата Сообщение от The trick Посмотреть сообщение
в студии также можно накидать шаблон диалогового окна. Вызвать можно хоть из ассемблера
Вариантов много. Тут, скорее дело в религии.
Мне нравится VB для написания несложных калькуляторов. Быстро, просто и сразу получаем оконное приложение. Очень жаль, что он больше не развивается.
У всех ЯП свои особенности. И кому, что нравится.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
19.04.2020, 01:02  [ТС]
Цитата Сообщение от Power_Basic
WinAPI "разговаривает с нами" именно этим языком
Цитата Сообщение от locm Посмотреть сообщение
Декларация функций это не весь язык.
Но там же ещё и почти все примеры тоже на C/C++, да и в COM то же самое

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


Цитата Сообщение от Argus19 Посмотреть сообщение
Есть, но там вываливается весь код, а в VB работаем только со свойствами. Создать проект -> CLR -> Windows Form. Размешаем на форме кнопку и меняем заголовок формы и надпись на кнопке. Вот такой получается заголовочный файл "Form1.h":
Не, ну это нормально. По крайней мере, лично для меня такое давно уже привычно.
В PowerBasic'е редактор форм тоже автоматически создаёт вот такой код для формы с кнопкой:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#PBFORMS CREATED V2.00
'----------------------------------------------------------------------------------------------------------------------
' The first line in this file is a PB/Forms metastatement.
' It should ALWAYS be the first line of the file. Other
' PB/Forms metastatements are placed at the beginning and
' end of "Named Blocks" of code that should be edited
' with PBForms only. Do not manually edit or delete these
' metastatements or PB/Forms will not be able to reread
' the file correctly.  See the PB/Forms documentation for
' more information.
' Named blocks begin like this:    #PBFORMS BEGIN ...
' Named blocks end like this:      #PBFORMS END ...
' Other PB/Forms metastatements such as:
'     #PBFORMS DECLARATIONS
' are used by PB/Forms to insert additional code.
' Feel free to make changes anywhere else in the file.
'----------------------------------------------------------------------------------------------------------------------
 
#COMPILE EXE
#DIM ALL
 
'----------------------------------------------------------------------------------------------------------------------
'   ** Includes **
'----------------------------------------------------------------------------------------------------------------------
#PBFORMS BEGIN INCLUDES
#RESOURCE "New_File_1.pbr"
#INCLUDE ONCE "WIN32API.INC"
#INCLUDE ONCE "COMMCTRL.INC"
#INCLUDE ONCE "PBForms.INC"
#PBFORMS END INCLUDES
'----------------------------------------------------------------------------------------------------------------------
 
'----------------------------------------------------------------------------------------------------------------------
'   ** Constants **
'----------------------------------------------------------------------------------------------------------------------
#PBFORMS BEGIN CONSTANTS
%IDD_DIALOG1 =  101
%IDC_BUTTON1 = 1001
#PBFORMS END CONSTANTS
'----------------------------------------------------------------------------------------------------------------------
 
'----------------------------------------------------------------------------------------------------------------------
'   ** Declarations **
'----------------------------------------------------------------------------------------------------------------------
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
#PBFORMS DECLARATIONS
'----------------------------------------------------------------------------------------------------------------------
 
'----------------------------------------------------------------------------------------------------------------------
'   ** Main Application Entry Point **
'----------------------------------------------------------------------------------------------------------------------
FUNCTION PBMAIN()
    PBFormsInitComCtls (%ICC_WIN95_CLASSES OR %ICC_DATE_CLASSES OR %ICC_INTERNET_CLASSES)
 
    ShowDIALOG1 %HWND_DESKTOP
END FUNCTION
'----------------------------------------------------------------------------------------------------------------------
 
'----------------------------------------------------------------------------------------------------------------------
'   ** CallBacks **
'----------------------------------------------------------------------------------------------------------------------
CALLBACK FUNCTION ShowDIALOG1Proc()
 
    SELECT CASE AS LONG CB.MSG
        CASE %WM_INITDIALOG
            ' Initialization handler
 
        CASE %WM_NCACTIVATE
            STATIC hWndSaveFocus AS DWORD
            IF ISFALSE CB.WPARAM THEN
                ' Save control focus
                hWndSaveFocus = GetFocus()
            ELSEIF hWndSaveFocus THEN
                ' Restore control focus
                SetFocus(hWndSaveFocus)
                hWndSaveFocus = 0
            END IF
 
        CASE %WM_COMMAND
            ' Process control notifications
            SELECT CASE AS LONG CB.CTL
                CASE %IDC_BUTTON1
                    IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN
                        MSGBOX "%IDC_BUTTON1=" + FORMAT$(%IDC_BUTTON1), %MB_TASKMODAL
                    END IF
 
            END SELECT
    END SELECT
END FUNCTION
'----------------------------------------------------------------------------------------------------------------------
 
'----------------------------------------------------------------------------------------------------------------------
'   ** Dialogs **
'----------------------------------------------------------------------------------------------------------------------
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG
 
#PBFORMS BEGIN DIALOG %IDD_DIALOG1->->
    LOCAL hDlg  AS DWORD
 
    DIALOG NEW hParent, "Dialog1", 70, 70, 201, 121, TO hDlg
    CONTROL ADD BUTTON, hDlg, %IDC_BUTTON1, "Button1", 55, 65, 70, 30
#PBFORMS END DIALOG
 
    DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
 
#PBFORMS BEGIN CLEANUP %IDD_DIALOG1
#PBFORMS END CLEANUP
 
    FUNCTION = lRslt
END FUNCTION
Потом там можно что-то удалить, что-то оставить.

Цитата Сообщение от Argus19 Посмотреть сообщение
и ещё несколько файлов. Release файл 53760 байт, которые ничего не делают.
В PowerBasic'е "вспомогательные" файлы тоже присутствуют, но покойный Боб Зейл никогда не уставал напоминать, что компилятор возмёт из них только самое необходимое и поэтому эксешник будет максимально компактным.
Ну а по сравнению с VB, да, это существенное отличие, я согласен.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
unsigned int 4 байта (0 - 4 294 967 295)
А как должно быть?
Честно говоря, я всё-таки не самый глубокий знаток типов переменных
Обычно в моих "внутренних" программах мне хватает Long, Dword, String, Wstring, String * n, Wstring * n, ну и ещё указатели на каждый из них иногда (Long PTR, String PTR ... ).

А вот при взаимодействии с WINAPI и COM, ну там, да, приходится передовать то, что они оттуда просят
К счастью, эдесь в дистрибутиве PowerBasic'а имеется библиотека внушительных размеров, где описаны все необходимые (по состоянию на 2011 год) декларации для вызова функций WINAPI. Достаточно просто написать в самом начале кода

Visual Basic
1
#INCLUDE ONCE "WIN32API.INC"
и дальше уже будут всплывать подсказки при вводе имени функции. С указанием типов переменных, адаптированных под PowerBasic. Ну если в C/C++ приблизительно так же всё организовано, ну тогда это для меня вполне уже првычно.
Но, конечно, сам процесс передачи параметров у меня вызывает мало приятных эмоций
Всегда путаюсь, то ли по ссылке передавать, то ли по значению. Обычно методом тыка пробую разные варианты и компилирую. В какой-то момент срабатывает, ну значит вроде правильно, поехали дальше

Цитата Сообщение от The trick Посмотреть сообщение
А при чем плюсы и WINAPI? Там под C почти все декларации, большая часть винды на си написана. Разница между плюсами и си значительна тем более если говорить о последнем стандарте.
Ну не знаю. Для меня это приблизительно как японский и китайский
Вроде бы называются немного по-разному, но выглядят ну очень одинаково

Ну а если серьёзно, то неужели даже для такого начального уровня они такие разные? Вроде бы и там, и там приблизительно такие же FOR, IF, SWITCH (почти полный аналог бейсиковского SELECT CASE).
Не, ну правда, вот смотрю я уроки того дядьки, про которые написал выше, и пока почти всё абсолютно знакомо. Ну прям как бейсик, честное слово. За исключением тех отличий, которые я перечислил в топике. Кстати, как раз добрался до темы передачи параметров в функции. Завтра утром буду смотреть. По утрам смотрю, на свежую голову

Цитата Сообщение от The trick Посмотреть сообщение
Разница между плюсами и си значительна тем более если говорить о последнем стандарте.
Не, ну я же не собираюсь начинать сразу с VS 2019, например. Начну с какой-нибудь "промежуточной" версии

Добавлено через 15 минут
Цитата Сообщение от The trick Посмотреть сообщение
Power_Basic, во многих средах такоё есть. Для плюсов есть c++ bulder, qtcreator где также можно накидать на форму элементов. Даже для ассемблера есть такие.
Это радует. И хотя пряимо вот сейчас передо мной не стоит задачи научиться писать графические приложения под C++, но в будущем всякое может быть.

Добавлено через 8 минут
Цитата Сообщение от Argus19 Посмотреть сообщение
Мне нравится VB для написания несложных калькуляторов. Быстро, просто и сразу получаем оконное приложение. Очень жаль, что он больше не развивается.
Да это подавляющему большинству жалко, я уверен. Спасибо ребятам из майкрософта, они начудили.

А вот кстати, слегка отвлекаясь от темы. VBA в Офисе у них развивается хотя бы немного или так и застыл на этапе Office 2003? Если не развивается, то почему? А если всё-таки развивается, тогда почему бы и для Визуального Бейсика не возобновить поддержку? Хотелось бы хотя бы в общих чертах понять их логику
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.04.2020, 06:52
Цитата Сообщение от Power_Basic Посмотреть сообщение
unsigned int 4 байта (0 - 4 294 967 295)
А как должно быть?
Я в том смысле, что он должен быть, а в PureBasic нет такого типа.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
19.04.2020, 11:35
Ну хотя бы для упрощения процесса изучения параллельного (дополнительного) языка

Не по теме:

Ну тогда предлагаю заодно и обсуждать и все остальные языки программирования начиная с ассемблера и до популярных: Kotlin, HCL, Go, Javascript, Typescript, Python, Java, PHP....
А что мелочится-то! Вдруг кто-то захочет...
Я думаю, что тот кто хочет изучить другой язык не будет здесь обсуждать разницу и сходство, а просто займется изучением и посетит сайты по конкретному языку. И для С++ таких форумов хватает



Добавлено через 4 минуты
Имхо: это тема подходит, больше подходит для курилки чем для ветки VB
1
Эксперт по электронике
6518 / 3147 / 332
Регистрация: 28.10.2011
Сообщений: 12,363
Записей в блоге: 7
19.04.2020, 12:27
Цитата Сообщение от Power_Basic Посмотреть сообщение
компилятор возмёт из них только самое необходимое и поэтому эксешник будет максимально компактным.
Сейчас это мало кому нужно.
Я как-то поднимал эту тему на форуме. Минимальный размер EXE файла PE формата.
Развития не получила - мало кому нужны небольшие исполняемые файлы.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
19.04.2020, 14:41
Цитата Сообщение от Power_Basic Посмотреть сообщение
В PowerBasic'е редактор форм тоже автоматически создаёт вот такой код для формы с кнопкой:
VB6 тоже создает. Все эти файлы frm, ctl - это тоже самое.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Всегда путаюсь, то ли по ссылке передавать, то ли по значению. Обычно методом тыка пробую разные варианты и компилирую. В какой-то момент срабатывает, ну значит вроде правильно, поехали дальше
Так не следует делать. В документации описываются способы передачи.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну а если серьёзно, то неужели даже для такого начального уровня они такие разные? Вроде бы и там, и там приблизительно такие же FOR, IF, SWITCH (почти полный аналог бейсиковского SELECT CASE).
Это если сравнивать самые базовые особенности, но это логично ведь плюсы вышли из C. На C++ можно писать код C, но не наоборот (не скажу по последним стандартам C, не изучал).

Цитата Сообщение от Power_Basic Посмотреть сообщение
Не, ну я же не собираюсь начинать сразу с VS 2019, например. Начну с какой-нибудь "промежуточной" версии
Это неважно. Даже если начинать C++98 (который в 6-й студии).

Цитата Сообщение от Power_Basic Посмотреть сообщение
А вот кстати, слегка отвлекаясь от темы. VBA в Офисе у них развивается хотя бы немного или так и застыл на этапе Office 2003? Если не развивается, то почему? А если всё-таки развивается, тогда почему бы и для Визуального Бейсика не возобновить поддержку? Хотелось бы хотя бы в общих чертах понять их логику
Ну как минимум VBA7
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
19.04.2020, 17:55  [ТС]
Цитата Сообщение от Pro_grammer
unsigned int 4 байта (0 - 4 294 967 295)
Цитата Сообщение от Power_Basic
А как должно быть?
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я в том смысле, что он должен быть, а в PureBasic нет такого типа.
Ну да, Power Basic это очень серьёзный язык
Боб Зейл вложил в него, в буквальном смысле, всю душу и всё здоровье. В 2011-ом вышла последняя 10-ая версия, а в 2012-ом он умер
И, наверняка, у него было постоянное заочное соревнование с Билом Гейтсом.

Что касается типов данных, VB действительно бедноват
Уже несколько раз принимался за чтение знаменитой книги Дана Эпплмана по "состыковке" VB с WINAPI, но каждый раз буксую в самом начале, когда он начинает описывать пляски с бубном для передачи в качестве параметров целых чисел, превышающих 2 147 483 647. Там это такая "пытка", что всякое желание читать дальше пропадает
Ведь через Long приходится передавать, а там же тогда уже отрицательные числа получаются. Приходится выходить из положения с помощью битной арифметики. Ну а мне, имея в PowerBasic'е полный набор любых типов данных, вникать во все эти "танцы" ну как-то совсе неаппетитно


Цитата Сообщение от locm Посмотреть сообщение
Сейчас это мало кому нужно.
Я как-то поднимал эту тему на форуме. Минимальный размер EXE файла PE формата.
Развития не получила - мало кому нужны небольшие исполняемые файлы.
Да и мне это, по правде сказать, тоже совсем не нужно
Я сейчас говорю про свои собственные программы. Ну какая мне разница, будет моя программа занимать на диске 50 Кб или 500? Да пусть хоть 10 Мб занимает, разницы большой не будет. Ну разве что грузиться с диска в ОЗУ будет на пару миллисекунд дольше.
Но вот когда дело касается чужих "фирменных" программ, ну тогда разговор совсем другой. Когда я читаю, что для установки даже не всех, а только выборочных компонентов VS 2019 потребуется 40 Гб на диске, ну тогда это уже реальная катастрофа.
У меня сейчас вся система со всеми прибамбасами занимает 42 Гб. Получается, будет в 2 раза больше. А я же ведь регулярно всё это дело архивирую. Значит и архивы тоже существенно увеличатся. Печаль
Вот потому-то я даже и не помышляю её устанавливать, хотя она там, как я слышал, вроде бы даже бесплатно сейчас выложена (просто за регистрацию в системе).

Цитата Сообщение от The trick Посмотреть сообщение
VB6 тоже создает. Все эти файлы frm, ctl - это тоже самое.
Ну это да. Но в VB это как бы "за кулисами", а здесь сразу открывают перед программистом "все карты" и подсказывают, что и где можно редактировать.

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

Цитата Сообщение от The trick Посмотреть сообщение
Это если сравнивать самые базовые особенности, но это логично ведь плюсы вышли из C. На C++ можно писать код C, но не наоборот (не скажу по последним стандартам C, не изучал).
Ну а мне сейчас как раз и нужны именно базовые особенности. Задача - научиться понимать примеры по WINAPI и COM в MSDN. Сейчас они меня всегда как бы "пугают" и я их абсолютно всегда автоматически пропускаю.

Цитата Сообщение от Power_Basic
Не, ну я же не собираюсь начинать сразу с VS 2019, например. Начну с какой-нибудь "промежуточной" версии
Цитата Сообщение от The trick Посмотреть сообщение
Это неважно. Даже если начинать C++98 (который в 6-й студии).
Ну вот ещё один серьёзнейший вопрос. С какой версии начать? Самая модная, самая современная "тяжеловата", а самую древнюю, боюсь, не удастся подружить с современным монитором
Вот тогда уже точно придётся самому писать драйвер


Цитата Сообщение от The trick Посмотреть сообщение
Ну как минимум VBA7
Прочитал. Очень интересная информация. Выходит, всё-таки развивают. Но там интерпретатор, то есть заведомо проигрыш в скорости. Но с другой стороны, так ли уж часто мне-обывателю нужна высокая runtime-скорость? Ну вот сейчас, да, нужна. Поскольку взялся за аудиокниги. А так у меня в основном все программы за последние несколько лет на тему "зайти в интернет, скачать страницу, найти какую-то информацию на этой странице, обработать и выдать мне результат". Раньше всегда результат был текстовый, теперь вот приловчился озвучивать.
Кстати, одно время (ровно 10 лет назад) я очень сильно увлекался программированием на VBA Excel и даже мысли тогда были по поводу того, а зачем вообще кроме него ещё что-то нужно Таблицы для вывода информации в удобном виде всегда под рукой, взаимодействие с WINAPI точно такое же (с известными оговорками) как и в других языках.
Но теперь я уже так не думаю

======================================== ==========
Сегодня утром посмотрел два урока по перегрузке функций и по шаблонам функций. Как я понял в VB все эти проблемы решаются с помощью типа данных Variant
Но вообще фишка очень интересная.
Ну и вообще по ходу изучения постоянно убеждаюсь, что The trick прав, C++ действительно очень гибкий по сравнению с бейсиками.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
19.04.2020, 21:08
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну а мне сейчас как раз и нужны именно базовые особенности. Задача - научиться понимать примеры по WINAPI и COM в MSDN. Сейчас они меня всегда как бы "пугают" и я их абсолютно всегда автоматически пропускаю.
В COM на самом деле нет ничего страшного, если конечно не создавать такие компоненты и не углубляться в детали создания таких компонентов. По WINAPI тоже все достаточно просто и интуитивно понятно, есть конечно неочевидные моменты, но они один на миллион.

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

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

Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну вот сейчас, да, нужна. Поскольку взялся за аудиокниги.
Не понимаю для чего тут скорость, тем более если работа идет через SAPI. Там нужно то всего лишь передать данные движку, и получить от него результат - записать данные в файл. Все критичные к исполнению вещи реализуются движком, так что тут скорость ЯП почти не имеет значения.

Добавлено через 6 минут
Цитата Сообщение от locm Посмотреть сообщение
Развития не получила - мало кому нужны небольшие исполняемые файлы.
Такая задача бывает нужна, но только в очень небольшом сегменте. К примеру демосцены. Кстати неплохо было бы такие демки увидеть на PB, мб поклонников бы прибавило ему, раз он может такие маленькие файлы создавать. На плюсах у меня около 700 байт оконное приложение удавалось написать, не помню точно.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
20.04.2020, 12:28
Довольно странное предложение. Языки VB и C++ совершенно разные по духу (указатели, управление памятью, объектная подсистема). Не вижу смысла их "обсуждать совместно".
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2020, 13:23
Цитата Сообщение от Catstail Посмотреть сообщение
VB и C++ совершенно разные по духу ... Не вижу смысла их "обсуждать совместно".
Весь смысл в их разнице. Были бы они одинаковы, тогда что обсуждать?
Тут именно понять, как использовать примеры на C++ и C, в частности из MSDN, применительно к VB6.
В идеале бы вообще не плохо составить табличку соответствия по основным ключевым словам и типам переменных.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
20.04.2020, 13:45
Цитата Сообщение от Pro_grammer Посмотреть сообщение
составить табличку соответствия по основным ключевым словам и типам переменных
- если бы дело было только в этом...
0
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
20.04.2020, 16:22
Всю тему не читал.
1. ТС тоже, как и хороший преподаватель объясняет различия и сходства между языками и их ищет)
2. По вызову СИ функций из VB согласен с теми, кто ответил выше. Нужно этот вопрос знать, есть соответствующие книги. Если делать это без знания, то напрашивается ассоциация, все-равно, что писать текст программы без знания языка.
3. Для перевода объявлений с СИ на VB особо знания СИ, на мой взгляд - не требуется. Но есть книги, в которых приведены примеры на СИ ну и примеры в MSDN, чтобы их понять, хорошо бы СИ знать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2020, 16:22
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
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 05.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