Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/65: Рейтинг темы: голосов - 65, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65

Как запустить и обеспечить полноценную работу QBasic в Windows?

07.04.2018, 21:30. Показов 15708. Ответов 156
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как запустить и обеспечить полноценную работу q basic в windows. Если это возможно. у самого - в малое нетрансформируемое окно с проблемами редактирования и русификации
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2018, 21:30
Ответы с готовыми решениями:

Как запустить QBasic на Windows 7
Доброго дня. Подскажите пожалуйста где скачать qBasic для 7 винды) Поискав в поиске нашел сайт intmain.ru/qbasic.html(не реклама),...

Как установить или запустить Qbasic на Windows 7
не получаеться установить Qbasic выдает ошибку о несовместимости, где можно найти программу совместимую с windows7? или как обойти эту...

Запустить bin файл как полноценную программу
Здравствуйте, дорогие программеры)))) И так к проблеме. Начнем с того что bin файл который я хочу запустит изначально является...

156
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2018, 06:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от The trick Посмотреть сообщение
Там есть стартовая процедура (как к примеру main на C).
Стартовая процедура к бейсику вообще не имеет отношения, изначально этого не было на бейсиках.
Я в курсе про функцию main в c++. Сути это не меняет, главная программа это и есть по факту main.
Если ты прочитал то, что я писал про структуру программы, то можешь просто считать главной
программой всё что начинается в первом модуле от констант и до конца программы, за которым идут процедуры.

Цитата Сообщение от The trick Посмотреть сообщение
Еще раз повторюсь ООП никакого отношения к 4GL не имеет.
Так это не я придумал. ООП и считают по своей сути 4GL. Всегда так было в большинстве
нормальных источников и книг именно такая классификация приведена.
Если лень полностью читать историю IT - можно в вики ознакомиться:
https://ru.wikipedia.org/wiki/... ммирования

То что где-то там какие-то глупцы пишут свою какую-то инфу - это полная чушь.
Особенно доставляет про то, когда пишут что 4GL это SQL и мол только такого типа,
всегда объясняю - SQL это макроязык построенный на основе макрогенера́тора.
Или пишут ещё большую чушь про то что, 4GL - это мол ещё больше вычислений,
при том что эту грань "ещё больше" никто не указывает тут начинается ржака полная,
когда подбное читаю. Поэтому не советую читать всякую ересь в интернетах.
Местами проскакивает явный, зашкаливающий и вопиющий бред про то, что ООП - это 3GL.

Чтобы не было путаницы:
1GL - машинный код
2GL - ассемблер
3GL - процедурное программирвоание
4GL - объектно-ориентированные языки с интегрированными средами
5GL - функциональные и декларативные языки

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

А VB это мультипарадигменный диалект: т.е. 3GL + 4GL. Как и большинство современных
диалектов. FB и PB, например, ещё и 2GL умеет.

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

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

Цитата Сообщение от The trick Посмотреть сообщение
Это не процедурно по-твоему?
Да речь не об этом, разумеется это процедурно и на с++ можно писать процедурно.
Речь об идеологии, формирующей мышление программиста. IDE было сделано по тем годам
безупречно и сейчас если бы оно было модернизировано(под винду + хелперы), оно бы
легко уделывало все имеющиеся IDE, VB-шную, PB-шную, любую FB-шную, вообще любую.
Дело в том как это было продумано и реализовано, всё до мельчайших деталей проработано.

Но юзабилити - это такая вещь, в ней не бывает каких-то неопределённостей, будешь ржать
но за всё время владения ПК так и не могу нормально переключить раскладку клавиатуры
с первого раза, этот ALT+SHIFT - это настолько идиотское решение с точки зрения юзабилити,
что можно просто одуреть и как-бы сказать, что не привык за 20 лет, собственно, тут нельзя.

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

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Настраивать нынешний юзер всё привык под себя, жесткая стабильность из коробки нынче минус, жирный такой минус.
За кастомизацию - согласен. Но по поводу жирного минуса - тут ты не прав. Если всё сделано
грамотно с точки зрения UX и UI, то ничего настраивать, подчеркну, не нужно.
Речь о функциональной части, а не о "вкусовой", которой можно пренебречь в определённых
пределах.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
02.05.2018, 10:59
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Стартовая процедура к бейсику вообще не имеет отношения
Как не имеет? В VB6 что по твоему?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
изначально этого не было на бейсиках.
Изначально и процедур не было в привычном виде, нужно было нумеровать строки и т.п.


Цитата Сообщение от Quiet Snow Посмотреть сообщение
Если ты прочитал то, что я писал про структуру программы, то можешь просто считать главной
программой всё что начинается в первом модуле от констант и до конца программы, за которым идут процедуры.
Я уже написал что я понял, это также как в vbs.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Так это не я придумал. ООП и считают по своей сути 4GL. Всегда так было в большинстве
нормальных источников и книг именно такая классификация приведена.
Если лень полностью читать историю IT - можно в вики ознакомиться:
https://ru.wikipedia.org/wiki/... ммирования
Захожу, смотрю Third-generation programming language, а там:
Most popular general-purpose languages today, such as C, C++, C#, Java, BASIC and Pascal, are also third-generation languages, although each of these languages can be further subdivided into other categories based on other contemporary traits. Most 3GLs support structured programming. Many support object-oriented programming. Traits like these are more often used to describe a language rather than just being a 3GL.
В описании 4GL также нет ничего про VB6 и C++ (хотя оба являются ООП)
While 3GLs like C, C++, C#, Java, and JavaScript remain popular for a wide variety of uses, 4GLs as originally defined found narrower uses.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Особенно доставляет про то, когда пишут что 4GL это SQL и мол только такого типа,
всегда объясняю - SQL это макроязык построенный на основе макрогенера́тора.
SQL создан исключительно для работы с базами данных (узконаправленый), поэтому он и является 4GL. На нем нельзя написать приложение или прошивку к МК, в отличии от 3GL языков (широкого профиля).

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Или пишут ещё большую чушь про то что, 4GL - это мол ещё больше вычислений,
при том что эту грань "ещё больше" никто не указывает тут начинается ржака полная,
когда подбное читаю. Поэтому не советую читать всякую ересь в интернетах.
Ты сам скидываешь мне ссылку в интернете для ознакомления. 4GL как я понимаю - это более узконапраленые ЯП, уже заточенные под какую-то одну специфическую задачу. В списке 4GL языков программирования явно видно подразделение к примеру для работы с БД, языки генерации отчетов, диаграмм и т.п.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Местами проскакивает явный, зашкаливающий и вопиющий бред про то, что ООП - это 3GL.
Да, ООП - это 3GL. Т.к. никакого прямого отношения парадигма программирования не имеет к поколению ЯП. На том же FASM'е можно работать с объектами, что не означает что FASM является 4GL. В описании VB явно указано (привожу ссылку на твой же источник):
Visual Basic is a third-generation event-driven programming language and integrated development environment (IDE) from Microsoft for its Component Object Model (COM) programming model first released in 1991 and declared legacy during 2008.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
1GL - машинный код
2GL - ассемблер
3GL - процедурное программирвоание
4GL - объектно-ориентированные языки с интегрированными средами
5GL - функциональные и декларативные языки
Неверно. Процедурное программирование и объектно-ориентированное не является поколениями, а всего лишь парадигмами. Интегрированная среда тоже не показатель, т.к. в QB тоже есть среда.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
А VB это мультипарадигменный диалект: т.е. 3GL + 4GL. Как и большинство современных
диалектов. FB и PB, например, ещё и 2GL умеет.
Парадигм намного больше чем поколений, не путай. Да VB мультипарадигмальный, но он не может быть одновременно быть языком 2-х поколений, т.к. BASIC - это язык третьего поколения.

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

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Кстати код который ты выложил - почти идеально оформлен, единственная фиговая деталь - это полное
отсутствие комментов, ну видно что код рабочий, думаю ты добиваешь исходники комментами по финалу.
Я его написал исключительно для этой темы для демонстрации возможности работы только в процедурной-парадигме. Комменты я всегда проставляю для рабочих программ, как пример (кстати там тоже все процедурно-ориентированно).

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

Цитата Сообщение от Quiet Snow Посмотреть сообщение
IDE было сделано по тем годам
безупречно и сейчас если бы оно было модернизировано(под винду + хелперы), оно бы
легко уделывало все имеющиеся IDE, VB-шную, PB-шную, любую FB-шную, вообще любую.
Насколько я понял, VB-шная IDE это потомок QB IDE, т.е. я вижу сходства, но каких конкретно недостатков - не вижу, и ты не говоришь.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
ALT+SHIFT
У меня CTRL+SHIFT чуть более удобно мизинцем и безымянным.
0
68 / 18 / 0
Регистрация: 26.01.2018
Сообщений: 166
02.05.2018, 11:33
Цитата Сообщение от The trick Посмотреть сообщение
Изначально и процедур не было в привычном виде, нужно было нумеровать строки и т.п.
ZX Spectrum! Компьютер моего детства.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.05.2018, 13:59
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Чтобы не было путаницы:
1GL - машинный код
2GL - ассемблер
3GL - процедурное программирвоание
4GL - объектно-ориентированные языки с интегрированными средами
5GL - функциональные и декларативные языки
А если писать на ассемблере в объектно‐ориентированном стиле? В какую категорию попадает ассемблер?

Или вы считаете, что на ассемблере нельзя создавать классы и объекты, наследоваться, инкапсулироваться и полиморфироваться?
0
Эксперт по электронике
6873 / 3296 / 340
Регистрация: 28.10.2011
Сообщений: 12,915
Записей в блоге: 7
02.05.2018, 14:32
Цитата Сообщение от Замабувараев Посмотреть сообщение
А если писать на ассемблере в объектно‐ориентированном стиле?
Ассемблер поддерживает ООП на уровне компилятора?
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
02.05.2018, 16:13
Цитата Сообщение от locm Посмотреть сообщение
Ассемблер поддерживает ООП на уровне компилятора?
FASM позволяет работать с COM на уровне компилятора:
1.7 Component Object Model
The interface macro allows to declare the interface of the COM object type, the first parameter is the name of interface, and then the consecutive names of the methods should follow, like in this example:

Assembler
1
2
3
4
5
6
7
8
9
  interface ITaskBarList,\
             QueryInterface,\
             AddRef,\
             Release,\
             HrInit,\
             AddTab,\
             DeleteTab,\
             ActivateTab,\
             SetActiveAlt
The comcall macro may be then used to call the method of the given object. The first parameter to this macro should be the handle to object, the second one should be name of COM interface implemented by this object, and then the name of method and parameters to this method. For example:

Assembler
1
  comcall ebx,ITaskBarList,ActivateTab,[hwnd]
uses the contents of EBX register as a handle to COM object with ITaskBarList interface, and calls the ActivateTab method of this object with the [hwnd] parameter.

You can also use the name of COM interface in the same way as the name of data structure, to define the variable that will hold the handle to object of given type:

Assembler
1
  ShellTaskBar ITaskBarList
The above line defines the variable, in which the handle to COM object can be stored. After storing there the handle to an object, its methods can be called with the cominvk. This macro needs only the name of the variable with assigned interface and the name of method as first two parameters, and then parameters for the method. So the ActivateTab method of object whose handle is stored in the ShellTaskBar variable as defined above can be called this way:

Assembler
1
  cominvk ShellTaskBar,ActivateTab,[hwnd]
which does the same as:
Assembler
1
  comcall [ShellTaskBar],ITaskBarList,ActivateTab,[hwnd]
С таким же успехом можно реализовать остальные принципы ООП.
0
Эксперт по электронике
6873 / 3296 / 340
Регистрация: 28.10.2011
Сообщений: 12,915
Записей в блоге: 7
02.05.2018, 18:54
Хорошо, спрошу по другому. FASM это ООП язык?
Речь шла про ООП-языки.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
02.05.2018, 19:23
Цитата Сообщение от locm Посмотреть сообщение
FASM это ООП язык?
Не могу сказать, т.к. не знаю что такое ООП язык. К примеру Visual Basic является ООП языком или нет? В нем не реализованы все принципы объектно-ориентированной парадигмы. К примеру Smalltalk полностью удовлетворяет принципам ООП, его можно назвать ООП языком. Такие языки как C++ и Visual Basic мультипарадигмальными языками, они являются ООП языками? Вот кусок FASM кода:
Assembler
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
;  IronFelix, 11.02.2009
;  Example of TObjectList class with its objects
; RTTI checking.
 
;  It is better to use debugger to see what code
; and data are actually made by classes package here.
 
format PE GUI 4.0
entry Main
 
CLASSES_DATA_MOVEABLE equ ; mark classes data as moveable
CLASSES_RTTI_ENABLE   equ ; enable RTTI via vtables
 
 ; FASM includes
 include "win32a.inc"
 
 ; classes package includes
 include "..\..\Classes Package\ClassesCfg.inc"
 include "..\..\Classes Package\ClassesMCode.inc"
 include "..\..\Classes Package\ClassesCore 1.8.inc"
 include "..\..\Classes Package\ClassesCode.inc"
 
 ; TWinList declaration include
 include "..\WinList\TWinList.inc"
 
 ; inherits TWinBase list in order to override
 ; Clear function
 class TObjectList : TWinList
 
  function Create ; re-implement constructor, as we changed vtable
 
  ; free objects when list is cleared
  ; Delete and Remove methods are not changed
  ; in this example
  virtual_function Clear
 
 endclass
 
 ; declare some list items types
 class TBaseItem
 
  function Free ; free instance memory
 
 endclass
 
 class TItem : TBaseItem
 
  function Create ; constructor
  function F ; just a stub
 
 endclass
 
 class TItem2 : TBaseItem
 
  function Create ; constructor
  function F2 ; just a stub too
 
 endclass
 
 ; include TWinList implementation
 include "..\WinList\TWinList.asm"
 
 ; use automatic constructor implementation
 ; with ancestor InitObject initialization
 implement_constructor TObjectList() : 0 >> InitObject
 
 ; our TObjectList implementation
 proc TObjectList.Clear  this
 
  ; loop through list and free objects
  clsfcall TObjectList([this])->GetCount()
  dec eax
  js .exit ; if no items
 .next_obj:
  push eax
  clsfcall TObjectList([this])->GetItem(eax)
  ; skip item zero check here
  ; just free object
  clsfcall TBaseItem(eax)->Free()
  pop eax
  dec eax
  jns .next_obj
 
 .exit:
  leave ; !!! just because "proc" has done a stack frame
        ; and we have done all with stack here
  ; just jump to ancestor Clear implementation
  ; without any "ret"
  inhjump TObjectList->Clear() : 1
 endp
 
 ; items classes implementation
 
 proc TBaseItem.Free  this
  ; just free instance memory
  free_instance_memory this
  ret
 endp
 
 ; use automatic constructors
 implement_constructor TItem()  : 0
 implement_constructor TItem2() : 0
 
 ; use stubs for rest of functions
 proc TItem.F ; this
  retn 4 ; as it is "this" in stack
 endp
 
 proc TItem2.F2 ; this
  retn 4 ; as it is "this" in stack
 endp
 
; ******************   PROGRAMM ENTRY POINT   ******************
proc Main
 
 local pObjList : PTObjectList ; declare pointer to TObjectList as local
 
 ; get our instance
 invoke GetModuleHandle,NULL
 mov [hInstance],eax
 
 ; get process heap
 invoke GetProcessHeap
 mov [ProcessHeap],eax
 
 ; now create our list and test it
 constrcall TObjectList->Create()
 mov [pObjList],eax
 
 ; add some objects to it
 ; first is TItem
 constrcall TItem->Create()
 objfcall pObjList->Add(eax)
 ; use TItem2
 constrcall TItem2->Create()
 objfcall pObjList->Add(eax)
 ; use TItem again
 constrcall TItem->Create()
 objfcall pObjList->Add(eax)
 
 ; check items count
 objfcall pObjList->GetCount()
 ; after this call EAX = 3
 
 ; get second item (indexes are zero-based)
 objfcall pObjList->GetItem(1)
 
 ; check item with RTTI
 is_descendant TBaseItem(eax) of TItem
 ; after this check EAX = FALSE and zero flag is set
 ; because second list item is TItem2 object and
 ; is not a descendant of TItem
 
 ; get first item (indexes are zero-based)
 objfcall pObjList->GetItem(0)
 
 ; check it
 is_descendant TBaseItem(eax) of TBaseItem
 ; after this check EAX = TRUE and zero flag is cleared
 ; because first list item is TItem object and
 ; is a descendant of TBaseItem
 
 ; you may write your own check here
 ; ...
 
 ; free our list and objects in it
 objfcall pObjList->Free()
 
; exit process
 invoke ExitProcess,NULL
endp
 
; classes data consist of TObjList vtable
; which holds TObjList.Destroy and TObjList.Clear
; addresses and additional RTTI data
insert_classes_data ; put classes data here
 
stListBox  db  "LISTBOX",0
 
; *********************   IMPORTS   ***********************
align 16
data import
 
 library kernel32,           'kernel32.dll',\
         user32,             'user32.dll'
 
 include "apia\kernel32.inc"
 include "apia\user32.inc"
 
end data 
 
ProcessHeap  dd  ?
hInstance    dd  ?
 
 classes_finalize ; done all with classes
Является ли это показателем что это ООП язык?
0
Эксперт по электронике
6873 / 3296 / 340
Регистрация: 28.10.2011
Сообщений: 12,915
Записей в блоге: 7
02.05.2018, 20:18
Цитата Сообщение от The trick Посмотреть сообщение
Не могу сказать, т.к. не знаю что такое ООП язык.
В википедии написано https://ru.wikipedia.org/wiki/... ммирования
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
02.05.2018, 20:28
Цитата Сообщение от locm Посмотреть сообщение
В википедии написано https://ru.wikipedia.org/wiki/... ммирования
Странно что нет на английском статьи, но список языков там неполный. Непонятно почему C++ там, т.к. он является мультипарадигмальным.

Цитата Сообщение от locm Посмотреть сообщение
FASM это ООП язык?
Так все-таки, тот код что я скинул, показывает что FASM ООП язык или нет? Я думаю ответ кроется в этом.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2018, 21:34
Тут уже до абсурда дошло, ООП в 3GL записали. Всё забейте дальше дискутировать смысла никакого нет.

Ещё раз зацитирую правильный вариант:

1GL - машинный код
2GL - ассемблер
3GL - процедурное программирвоание
4GL - объектно-ориентированные языки с интегрированными средами
5GL - функциональные и декларативные языки

SQL - это декларативный ЯП.
FASM - это 2GL
VB6 - это 4GL язык

Поколение определяется максимумом того, что может предложить ЯП и тем, подо что он,
собственно, заточен.

The trick, очень печально что ты плохо знаешь историю IT, до недавнего времени
даже слов таких как парадигма не существовало, всё измеряли поколениями. Да в годы, когда
уже был VB6 никто не говорил парадигма. Это новомодное гавно разнесли хомяки теоретики
и теперь каждый, кто хочет разобраться тонет в этом бреде.

В русской вики нормально всё написано

Четвёртое поколение
Основная статья: en:Fourth-generation programming language
Термин языки программирования четвёртого поколения (4GL) лучше представлять как среды разработки четвёртого поколения. Они относятся к временному периоду с 1970-х по начало 1990-х.

Языки этого поколения предназначены для реализации крупных проектов, повышают их надежность и скорость создания, ориентированы на специализированные области применения, и используют не универсальные, а объектно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. В эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк исходного кода[1].
Всё это объясняется с исторической сточки зрения и учитывается время когда ОС Windows
ещё не существовало.

VB6 - объектно-ориентированный язык. Универсальными же тут назвали языки 3GL и 2GL.

Объясняю, чтобы сделать GUI на VB достаточно создать мышкой форму, разместить элементы
управления и по клику откроется процедура(где назн. события) и там может быть вбит ООП код,
что-то типа:
Form.Show
Для того чтобы реализовать подобное на чистом асcемблере под ОС DOS(можно взять тот же FASM),
потребуется написать тысячи строк кода.

Тебе придётся перехватывать таймер, писать свою поддержку клавиатуры, тебе придётся
программировать VESA адаптер, придётся писать процедуры рисования примитивов(это огромная
работа к слову), и каждый элемент управления, который на VB можно с лёгкой руки подключить.
Например если пользователь подключит FlexGrid, то соответственно чтобы его реализовать
придётся ещё и заняться сеточной аналитикой, количество кода там будет приличное даже на
3GL, на 2GL же это просто неподъёмно.

Не нужно упускать исторический аспект. В интернете сейчас полно чуши и бреда.
Не нужно вестись на всё это.

Цитата Сообщение от The trick Посмотреть сообщение
FASM позволяет работать с COM на уровне компилятора:
Это не уровень компилятора. Уровень компилятора это как на VBA у бедвита.
когда он написал что-то типа:
объект.число = объект.число
У тут просто подвязки к функциям и процедурам будут. Функции и процедуры это не методы(термин ООП).
Метод - применителен к объекту, а функция или процедура они не применительны ни к чему они сами
по себе.
Т.е. это 4GL реализованный через 2GL. Да и я читал статьи про то как на ассемблере писали почти как
на 3GL, но это не 3GL и нужно это понимать.

Когда появился Visual Basic, FASM-a ещё не существовало, большая часть программистов
использовали популярный MASM. Это сейчас там написано, что он поддерживает AVX и прочее добро,
а когда он вышел он ничего кроме DOS-a и базы MASM не поддерживал.
Даже если в него добавят нативную поддержку ООП, он просто перестанет быть 2GL языком,
историческую иерархию это не изменит.

Добавлено через 12 минут
Цитата Сообщение от The trick Посмотреть сообщение
Комменты я всегда проставляю для рабочих программ, как пример (кстати там тоже все процедурно-ориентированно).

Просто акцентирую внимание не потому что хочу чё-то там докопаться, форум читают пацаны,
которые не понимают как правильно и если не показать где правильно, а где нет - то так
и будет тотальная задница. Это не камень в твой огород, мне объяснять ничего не нужно,
т.к. и так всё понятно. А вот пацаны могут не так понять. И твой код я теперь буду приводить
как альтернативный пример мега грамотного стиля с отступами и пропусками строк.
0
Эксперт по электронике
6873 / 3296 / 340
Регистрация: 28.10.2011
Сообщений: 12,915
Записей в блоге: 7
02.05.2018, 22:00
Цитата Сообщение от The trick Посмотреть сообщение
тот код что я скинул, показывает что FASM ООП язык или нет?
Нет не показывает. Нет изначальной поддержки ООП компилятором, например как в C++, Java и других ООП языках.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
02.05.2018, 22:12
Цитата Сообщение от Quiet Snow Посмотреть сообщение
до недавнего времени
даже слов таких как парадигма не существовало, всё измеряли поколениями. Да в годы, когда
уже был VB6 никто не говорил парадигма. Это новомодное гавно разнесли хомяки теоретики
и теперь каждый, кто хочет разобраться тонет в этом бреде.
Не согласен. Классификацию я написал выше. Парадигма <> поколение ЯП, т.к. это не имеет смысла. Т.к. VB6 не включает полную поддержку ООП и включает в себя процедурную парадигму, а на C++ можно писать и в процедурной парадигме.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
В эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк исходного кода
Про какие операторы идет речь?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
и используют не универсальные, а объектно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области.
Это никак не показывает принадлежность ООП к 4GL, это утверждение по логике гласит что любой 4GL язык является объектно-ориентированным (с чем я не согласен). VB6 и C++ универсальные (мультипарадигмальные).

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Всё это объясняется с исторической сточки зрения и учитывается время когда ОС Windows
ещё не существовало.
Объектно-ориентированность никакого отношения к Windows не имеет.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
VB6 - объектно-ориентированный язык. Универсальными же тут назвали языки 3GL и 2GL.
Нет, он даже полностью не реализует все принципы объектно-ориентированной парадигмы (наследование реализации). Универсальные (мультипарадигмальные) это языки которые позволяют программировать к примеру в процедурной и объектной парадигме. Пример на FASM'е показывает что и там можно писать придерживаясь ООП парадигме, FASM является 2GL.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Объясняю, чтобы сделать GUI на VB достаточно создать мышкой форму, разместить элементы
управления и по клику откроется процедура(где назн. события) и там может быть вбит ООП код,
что-то типа:
Form.Show
Для того чтобы реализовать подобное на чистом асcемблере под ОС DOS(можно взять тот же FASM),
потребуется написать тысячи строк кода.
Есть такие же редакторы для ассемблера:

IDE никакого отношение к поколению не имеет. Такие же редакторы есть и для C/C++.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Тебе придётся перехватывать таймер, писать свою поддержку клавиатуры, тебе придётся
программировать VESA адаптер, придётся писать процедуры рисования примитивов(это огромная
работа к слову), и каждый элемент управления, который на VB можно с лёгкой руки подключить.
А причем тут DOS? По твоей логике на C++ это намного проще сделать чем на C под DOS?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это не уровень компилятора. Уровень компилятора это как на VBA у бедвита.
А в C++ как? Тоже не на уровне компилятора? Там также нужно запрашивать интерфейс и т.п. вещи делать, или оборачивать в макросы, но в макросы можно и в FASM'е обернуть. Разницы нет. По твоей логике на уровне компилятора с COM может работать только VB/VBA/VBS. Остальные требуют "обвязку", но пол системы работает на COM, как так?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Т.е. это 4GL реализованный через 2GL.
В чем смысл этого высказывания? Это в C++ ООП реализовано эмуляцией поверх императивной семантики. Поколение ЯП тут не при чем.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Даже если в него добавят нативную поддержку ООП, он просто перестанет быть 2GL языком,
историческую иерархию это не изменит.
Неверно. Мы как работали на самом низком уровне так и работаем, дополнительная функциональность ничего не меняет.
1
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
02.05.2018, 22:40
Цитата Сообщение от locm Посмотреть сообщение
Нет изначальной поддержки ООП компилятором
Что значит "нет изначальной поддержки"? А в C++ есть изначальная поддержка интерфейсов? Почему тогда там они реализуются на абстрактных классах и нет вообще ключевого слова interface как в C#? Тоже самое и тут, нет ключевого слова class, но оно реализуется через макросы. Иначе можно сказать что в FASM'е вообще нет никаких возможностей кроме как компилировать инструкции.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2018, 22:45
Цитата Сообщение от The trick Посмотреть сообщение
Про какие операторы идет речь?
Так я же ниже всё пояснил. Зачем интерпретировать как-то иначе.

Цитата Сообщение от The trick Посмотреть сообщение
дополнительная функциональность ничего не меняет.
Она меняет поколение к которому можно отнести ЯП.

Цитата Сообщение от The trick Посмотреть сообщение
А в C++ как?
Откуда мне знать, я не программирую на с++, но по факту в 3GL мне по барабану где программировать.
И на ООП тоже не программирую, только в 3GL ключе.

Цитата Сообщение от The trick Посмотреть сообщение
Парадигма <> поколение ЯП
Так то оно так, просто поколения ЯП это более обширный термин. Я повторюсь буквально недавно
его не было(массово об этом не говорили), программисты измеряли ЯП по такому же принципу
как распределяется энергия в пищевых цепочках царстве животных и растений. Если идеология
позволяла делать на порядки эффективнее(это обычно измеряли объёмом кода против кол-ва
решаемых задач - т.е. ёмкости вычислений). 4GL на момент её появления вкупе с интегрированными
средами как раз и дала подобный толчёк, а дальше уже его дали макрогенераторы и функциональное
программирование.

Цитата Сообщение от The trick Посмотреть сообщение
Объектно-ориентированность никакого отношения к Windows не имеет.
Имеет и прямое. ООП - это идеология в первую очередь. Абстрагирование от железа(и не только
от него, а ещё от тясяч строк того, что пишется с огромными трудозатратами с нуля).
Абстрагирование - это один из основных принципов ООП.
И WinAPI работают именно с объектами(черед дескрипторы), просто запросы идут в виде функций,
которые можно писать, где угодно, хоть на ассемблере.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.05.2018, 22:48
Цитата Сообщение от locm Посмотреть сообщение
Ассемблер поддерживает ООП на уровне компилятора?
ООП — это не ключевые слова «Class, Object, Abstract, Extends, Virtual».

Это наверное самый острый вопрос, который волнует всех. Вспомним слова Алана Кэй который придумал ООП:
Я придумал термин «объектно-ориентированный», и я уверяю вас, что не имел в виду C++
Я думал об объектах как о живых клетках или как об отдельных компьютерах в сети, которые обмениваются сообщениями
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2018, 22:50
Цитата Сообщение от The trick Посмотреть сообщение
Неверно. Мы как работали на самом низком уровне так и работаем, дополнительная функциональность ничего не меняет.
Ну программист волен работать на чём угодно. Хоть в машинных кодах программировать.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
02.05.2018, 23:09
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Так я же ниже всё пояснил. Зачем интерпретировать как-то иначе.
Просто операторы это +, -, & и т.п. Ты имеешь в виду библиотеку функций/классов. Так библиотеку можно подключить и к ассемблеру и вызывать почти также как в C или VB.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Она меняет поколение к которому можно отнести ЯП.
Нет. Привел пример на FASM'е где макросами делается поддержка ООП. Он от этого из поколения в поколение не "прыгает".

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Откуда мне знать, я не программирую на с++, но по факту в 3GL мне по барабану где программировать.
Ну так ты его относишь к 4GL, а там ничуть не проще если не пользоваться "обвязом". Т.е. получается утверждение ошибочно: либо C++ 3GL и ООП не имеет отношения к поколению, либо он 4GL без поддержки COM, но тогда VB6 тогда какой? 5GL?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Так то оно так, просто поколения ЯП это более обширный термин.
Это две разных характеристики, как к примеру вес и цвет, которые никак не пересекаются. По определениям я уже давал ссылку на вики. 4GL направлен на более узконаправленные задачи, в отличии от 3GL. 3GL языки универсальны, в отличии от 4GL, но имеют большую сложность реализации той задачи на которой в 4GL языках уйдет меньше времени. К примеру на VB6 можно написать аналог СУБД и разработать свои механизмы управления ею, но используя SQL мы уже имеем этот механизм. Написать на SQL программу невозможно, а на VB6 спокойно, т.к. VB6 универсальный, в отличии от SQL.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Имеет и прямое. ООП - это идеология в первую очередь. Абстрагирование от железа(и не только от него, а ещё от тясяч строк того, что пишется с огромными трудозатратами с нуля).
Абстрагирование - это один из основных принципов ООП.
И WinAPI работают именно с объектами(черед дескрипторы), просто запросы идут в виде функций,
которые можно писать, где угодно, хоть на ассемблере.
Ядро Windows по большей написана на C. Но это не имеет значения, т.к. парадигма ООП не имеет отношения к Windows вообще.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2018, 23:13
Цитата Сообщение от Замабувараев Посмотреть сообщение
ООП — это не ключевые слова «Class, Object, Abstract, Extends, Virtual».
Это наверное самый острый вопрос, который волнует всех. Вспомним слова Алана Кэй который придумал ООП:
Я придумал термин «объектно-ориентированный», и я уверяю вас, что не имел в виду C++
Я думал об объектах как о живых клетках или как об отдельных компьютерах в сети, которые обмениваются сообщениями
Да всё верно, но ты пишешь именно про идеологию.
Если же говорить с позиции "заточено" - идеологию надо технически подвязать к инструменту.
А технически это значит создать условия для того, чтобы раскрыть потенциал данной идеологии.
Т.е. все эти штуки про которые ты написал + среда разработки. Идеология не работает сама
по себе.

Говорю ж, не было этих терминов, сейчас ещё вот популярный термин - RAD.
5 лет назад скажи кому-нибудь это словосочетание, покрыли бы трёхэтажным.
На деле просто маркетинговый рекламный ход.
С термином парадигма - тоже самое. Куча ложной инфы в инете, просто куча.

Поколения ЯП - это то, что развивалось исторически, что несло прогресс. И ООП - это просто
идеология, всё зависит от того, как её применить технически. В определённое время люди
посчитали это прогрессом и отдали 4-е поколение этой идеологии, которая раскрывалась
как раз на интегрированных визуальных средах: Delphi, VB, Visual Studio и т.п..
Тут ничего больше понимать не нужно. Это же элементарно.
0
Эксперт по электронике
6873 / 3296 / 340
Регистрация: 28.10.2011
Сообщений: 12,915
Записей в блоге: 7
02.05.2018, 23:16
Цитата Сообщение от The trick Посмотреть сообщение
Что значит "нет изначальной поддержки"?
Вам не приходилось писать на ООП ЯП, скажем C++? Его компилятор изначально поддерживает ООП. В стиле ООП можно программировать и на Си, но кода будет гораздо больше и разница с точки зрения программиста будет очень заметна. Не ООП ЯП требует ряда действий для работы с объектами, автоматически производимых в ООП ЯП.

Цитата Сообщение от The trick Посмотреть сообщение
А в C++ есть изначальная поддержка интерфейсов? Почему тогда там они реализуются на абстрактных классах и нет вообще ключевого слова interface
Разве абстрактные классы по функционалу сильно отличаются от интерфейсов?

Цитата Сообщение от The trick Посмотреть сообщение
Тоже самое и тут, нет ключевого слова class, но оно реализуется через макросы.
Если на лошади нарисовать черно-белые полоски, зеброй она от этого не станет. Тоже самое и тут.
Я предлагаю вам создать темы тут и тут и написать что FASM это ООП ЯП.
Посмотрим что на это ответят.
Если по прежнему со мной несогласны, приведите пример кода на FASM с классами, содержащими публичные и приватные переменные, другие объекты, наследование, полиморфизм и др. Причем в при создании и уничтожении объекта, должны автоматически (а не из кода) вызываться конструкторы и деструкторы. Т. е. все как обычно в ООП ЯП.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2018, 23:16
Помогаю со студенческими работами здесь

Как поставить полноценную Windows 10 на флешку?
Поставил ubuntu 16 она работала, но все же хочется винду пробовал Windows to go но нифига не хочет ноут с нее грузиться У кого есть...

Как запустить QBasic-программу
Дано: Bas-файл (программа) Требуется запустить его на выполнение. Решение: 1) да, можно конечно открыть его программой QBasic и...

Как написать собственную полноценную Desktop программу для Windows?
Здравствуйте! Знаю основы C++, но всё это для создания консольных программ. Как написать собственную полноценную Desktop программу для...

Как обеспечить работу Timer в BackGroundWorker
Подскажите как сделать так чтобы в BackGroundWorker'e работал таймер?

Как обеспечить работу с SQL на другом компьютере?
Написал программу на своем компьютере. Программа работает с SQL. Но хочу эту программу установить на комп своего друга, а там она выдает...


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

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru