Пятница, 29.11.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 96
Гостей: 96
Пользователей: 0
Главная » 2017 » Ноябрь » 28 » Списки команд
22:49
Списки команд

Списки команд

Исторически сложилось, что языки программирования называются языками. Поэтому их пытаются ассоциировать с обычными языками а это некорректно.
Дело в принципиально другом назначении. Если уж сравнивать разное, то скорее это разница в управлении автомобилем, самолётом и катером. Педали, рули, стрелки в приборах везде одинаковые. Разные сами управляющие системы и необходимый набор информации. В самолёте есть элероны на крыльях и он обычно поворачивает с их помощью а не с помощью руля (который в нем тоже есть). Катеру намного важнее форма дна потому что он ближе к мелям.
В так называемых языках слов очень мало. Я перечислю почти все: if, while, for, case. Можно наскрести ещё столько же общих и столько же уникальных для конкретных языков. Вот и всё что тут является языком. Потому что это не слова языка а те самые рули, педали и кнопки. Кнопка может быть круглой и квадратной. Точно также можно поменять английское «if» на русское «если», но никто не придумает что-то больше стандартного набора, который можно крутить, дёргать и нажимать.
Зато объектов, с которыми что-то делается, может быть очень много. Их набор определяется типовым набором решаемых задач (т.е тем «катер» это или «самолёт»).
Всё это можно сравнить с управлением. Текст программы это набор команд. Причём вначале обычно называется тот, кто должен что-то сделать. Потом пишется что конкретно оно должен сделать. Если требуется дописываются какие-то уточнения.
На примере рисования карты Access-ом и AutoCAD-ом:
http://akostina76.ucoz.ru/blog/2017-11-20-4593

Начало процедуры – функции, которая рисует карту:

В неё преданы параметры (lngStID As Long, lngPeriodID As Long, _...). Это та самая уточняющая информации о том, что надо сделать. Мне же не просто какую-то карту надо нарисовать, а конкретные данные за конкретный период. Чтобы мне это нарисовали мне надо сообщить, что я хочу.
Далее вызывается необычный «подчинённый». Есть обычный, командующий  Access-ом и который тут присутствует всегда. А вот AutoCAD-а, который тут вдруг потребовался, надо «вызвать». Это и делается строкой Dim objAcad As New AcadApplication.
Строки «Dim» это определение переменных. Командно-административный аналог – стандартная фраза в договоре «такой-то-такой-то со всеми подробностями далее заказчик». Чтобы каждый раз не писать «Иванов.[Смотри третий шкаф»].[Вторую полку].[Десятую папку]», можно с Ивановым договориться что если я говорю ПапкаX я имею в виду то, что написано выше.
После описания переменных начинаются приказы вызванному AutoCAD-у обозванному objAcad:
‘ Нарисуйся на экране:
objAcad.Application.WindowState = acMax

(присутствующий присутствует но невидим пока ему не приказали нарисовать своё окно)
‘ Возьми документ с именем C:\WORK\MAPS\map.dwg:

objAcad.Documents.Open ("C:\WORK\MAPS\map.dwg")
‘ Сделай так чтобы мне стало видно на экране весь документ:

objAcad.Application.ZoomExtents

‘ Сообщаю, что в дальнейшем первый документ, который у тебя есть, я буду называть ThisDrawing:

Set ThisDrawing = objAcad.Documents(0)
(В данный момент «взят в руки» только один документ. Может быть сколько угодно).
Обращаю внимание на форму команд, т.е на то, что вначале пишемся «имя» того, к кому обращаются (objAcad). Потом пишется то, что он должен сделать (например, открыть документ). И иногда пишется уточняющая информация (имя документа). Если уточняющей информации нет может выполняться что-то заданное «должностными инструкциями». Например, приказ нарисовать линию без уточнения координат может означать что рисовать надо из точки (0,0) в точку (100,100) потому что это где-то написано (эта информация используется если я не даю другой).
Пропущу текст до места где появляется второй «исполнитель»:

Его «зовут» CurrentProject. Именно он занимается всёй обработкой Access-овской информации. Таблица rstTemp, в которую будет выбираться информация запрошенная строкой strSQL – его хозяйство. Это и так понятно потому в явном виде не пишется.
Команда Open (открыть, получить данные) тоже команда ему, хотя формально эта команда подчинённому ему объекту – таблице rstTemp. Но эта таблица всё равно будет брать данные от своего «начальства», от его соединения с базой (connection).
Слово «with» - уникальное, существующее только языках типа VB (basic).
Это тоже сокращение. Ниже я даже краткого имени писать не будут. А буду писать «.Open» вместо полного имени «rstTemp.Open».
Совместные действия по закрашиванию карты:

У Access-а строка за строкой запрашивается информация (цикл While пока не кончатся строки т.е не случится rstTemp.EOF – end of file). По полученной информации даются указания AutoCAD-у. Можно было бы к нему обратиться по полному «имени» и указанию того с чем что-то сделать. Было бы так:
objAcad.Documents(0).ModelSpace.Item(i).Layer =
…но текст немного сокращён за счёт переменной ThisDrawing.
Больше там ничего интересного:

… Только указание всё сохранить, закрыть и очистить память.
Ничего другого в программах не пишут. Это везде перечисления «исполнителей» и приказов (с уточнениями или без).
Есть ещё кое-что но тоже чисто управленческое. Почти все «действующие лица» могут о чём-то информировать. Кнопка, например, может сообщить что её нажали. А форма может сообщить что курсор мыши перевели на неё. На это можно не реагировать. А можно реагировать и при этих событиях (которые событиями и называются) выполнять некие действия (точнее написать команды, которые должны быть выполнены).

 

Вывод карты не сам начинается. Он начинается когда кнопка печать, сообщает что её нажали:

Я могу вообще никак на это не реагировать. Большинство таких сообщений игнорируются. Но в данном случае если сигнал получен, то выполняются некие действия:

Тут возникли аж два новых «исполнителя» занимающихся одним Access-ом. При том, что вроде бы одного кого-то на одно «ведомство» вполне достаточно. Не буду вдаваться в подробности. Напишу только что это издержки развития. В 2003 году ещё не до конца понятно как это всё делать чтобы это было красиво и естественно. Это всё появилось позже. А некоторые вещи (специфические для инструмента) так и остались для совместимости. Важно, что общая форма «Имя.Приказ(Уточнение)» никуда не делась.
А в конце обработчика события нажатия кнопки:

… написано что если выбран предпоследний пункт то надо запустить то самое рисование карты.
Вот и всё. Больше тут ничего не делается. Только вот AutoCAD-у можно приказывать рисовать линии, Access-у выбирать информацию, а кому-то ещё делать ещё что-то. Всё это может делаться несколько раз (циклы) или при каком-то условии (условный оператор if).
VB в AutoCAD-е отличается не написанием if и while а набором имён «исполнителей», формой информации с которой они работают и тем, что они с ней умеют делать. Точно также javascript в HTML страницах по форме это язык Си. Только обращается он к элементам страницы. В каждом конкретном случае это разные «элементы управления». Такие же разные как набор приборов в автомобиле и самолёте.
Если же всё-таки попытаться перечислить, то начну с активно используемых и сейчас. Это VB (visual basic), Си (всех вариантов),SQL и HTML. Под SQL понимается язык хранимых процедур в котором тоже есть while и if а не форма SQL строки. Я не могу его приписать ни к Си ни к VB… просто потому что он не похож. Отчасти тут видимо прогладывает что-то древнее (времён больших машин). Отчасти он работает с очень необычной реальностью. Штурвал самолёта похож на руль, но это не руль, он вообще для другого предназначен и потому иначе устроен.
В Си надо выделить Borland и Microsoft. Там разная элементная база даже на уровне работы с массивами данных. Их делали разны фирмы и очень по-разному.
1С-овцы перевели всё на русский язык. Но при всей необычности это можно считать Си-диалектом.
Язык Интернетовских страниц HTML такой же язык как язык картинок. Только в картинках последовательно перечисляются цвета точек, а тут последовательно описываются элементы страницы.
Надо ещё вспомнить DOS. Этот период интересен тем, что в обычных языках (ранний Си, Clipper, Fox) ещё не было стройной формы «Исполнитель.Приказ(уточнение)». Там много чего было типа «попробуем так». А вот в ассемблере было именно это. Только вместо названий везде были цифры. Был набор исполнителей, отвечающих за свои «участки». Их вызов – вызов обработчиков прерываний int 10h, int 21h и т.д. А приказ им обычно отдавался через регистр ah (в него записывался «номер приказа»). Остальные регистры использовались для передачи уточняющей информации.
Мне приходилось сталкиваться в ДОСовские времена: 1) Ассемблер, 2) Clipper 3) турбо Си
В Windows – системе:
Диалекты Си:
1] Borland C++
2] Visual C++
3] C# (Web для баз ADO.NET)
4] javascript – Си-диалект HTML страниц
5] 1C с версии 8.2
Диалекты VB
1] Access (времён баз ADODB)
2] *.aspx.vb (Web для баз ADO.NET)
3] vbscript – VB-диалект HTML страниц
4] внутренние языки приложений (типа AutoCAD-а).
Я не буду утверждать, что это всё одно и то же (этим и вызвана лёгкость перехода с одного на другое),… но это утверждение довольно близко к истине.



 

Просмотров: 176 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz