Лекс Айрин писал(а):Alex2013, ХайАсм изначально строится как аналог высокоуровневых языков управления техпроцессами. То есть, ограниченное количество связей, вход четко соответствует выходу и пр. в том же духе.
В принципе верено но сильно сомневаюсь что автор изначально планировал такую заумь творить ... Ты смотрел в код что генерирует хайсам на паскале ? Там четком видно что никаких далеко идущих планов изначально не было... Практически весь код одно уровневой схемы запрятан в TClassMainForm_XXXXXXX.Create; (Если есть несколько уровней то это полная копия структуры только например в TClassChildFormEx_XXXXXXX.Create; ) В принципе ничто не мешало вообще все в один файл запихать . ВСЕ и никаких тебе методов обработки событий....
Но еще интереснее код элементов
- Код: Выделить всё
unit hiRGB;
interface
uses Kol,Share,Debug;
type
THIRGB = class(TDebug)
private
FColor:TColor;
public
_prop_R:integer;
_prop_G:integer;
_prop_B:integer;
_data_B:THI_Event;
_data_G:THI_Event;
_data_R:THI_Event;
_event_onRGB:THI_Event;
procedure _work_doRGB(var _Data:TData; Index:word);
procedure _var_Color(var _Data:TData; Index:word);
end;
implementation
procedure THIRGB._work_doRGB;
var r,g,b:byte;
begin
r := ReadInteger(_Data,_data_R,_prop_R);
g := ReadInteger(_Data,_data_G,_prop_G);
b := ReadInteger(_Data,_data_B,_prop_B);
FColor := r + g shl 8 + b shl 16;
_hi_CreateEvent(_Data,@_event_onRGB,integer(FColor));
end;
procedure THIRGB._var_Color;
begin
dtInteger(_data,FColor);
end;
end.
Не правда ли забавно ?
Вот она точка doRGB а вот вход onRGB и читаем данные с верхних точек (или значения из начальных установок )...
а нижняя Color просто читает внутреннюю переменную ...
Графическая же среда программирования это скорее развитие линии формошлепство, но на более высоком уровне, когда в граф превращается любой более-менее структурированный элемент.
Опять же реальная философия ХайАсма еще проще, но нужно отметить, что ХайАсма совершенно непривязан к формам да в среде есть совершенно обычный редактор форм, но он значительно более вспомогательный чем в лазарусе ( В принципе даже я писал/рисовал программы на хайасме где несмотря на развитый интерфейс мне ни разу не понадобилось туда заходить ... Как? Просто! Динамическая генерация относительные координаты + разнообразные выравнивания ... ) Да и вообще в хайасме даже можно консольные приложения делать ...(куда уж дальше от "формошлепства"...)
Да я понял что ты не много другое имеешь в виду ... но некоторые методики доступные в ХайАсме
в принципе не реализуются в "не графической среде" программирования (Например "МТ потоки" или динамические мультиэлементы (как минимум в таком виде точно нигде ничего подобного не встретишь )
То есть, сначала можно в проге быстренько набрать схему, а потом ее постепенно структурировать до элементарных конструкций. В идеале, вплоть до бинарного кода.
Немного не так, а иногда и совсем не так ... В ХайАсме в полне можно вести разработку "снизу вверх" или вообще в стиле "управляемый хаос", по мере надобности добавляя все новые функции . (Кстати именно так и проявляются лучшие свойства графического подхода к программированию в нормально сконструированной схеме нет "неприкасаемых зон" и "невидимого миру кода" )
Соответственно, нужен будет набор элементов для каждого уровня разработки.
Они есть ... просто не все "самоочевидно" вот так сходу.
Возьмём связи. В ХайАсме ты выбираешь одну из имеющихся и засыпаешь на связи другого компонента.
Не совсем понял про "засыпаю" ХайАсм точно также управляется событиями как и LCL приложение лазаруса часть может работать параллельно часть последовательно, есть горячие клавиши есть обычные потки(Thread) есть таймер и т.д.
Я бы сделал немного по другому. В списке выбираешь нужное поле, если надо, то создавая его, а в другом объекте тебе выдаётся список имеющихся уже в руки связей и так же возможность создания новой.
В хайасме уже пробовали делать что-то похожее тыкаешь в точку выпадет список элементов схемы выбираешь один там новый список точек выбранного элемента выбираешь, вуаля ! "есть контакт "... но не прижилось...
После этого тебе открывается окошко в котором ты можешь видеть код в который эта связь превратилась.
Да нет в хайасме кода в "который превращается связь" есть инициализация (создание экземпляров ) элементов и задание параметров ....
Чтобы сразу его можно было подправить. Если, конечно, данный уровень поддерживает генерацию кода или исходного текста.
В хайасме можно открыть код почить всего ....
Да, эта схема намного сложнее, но она, после того как привыкнешь и если правильно спроектирована среда разработки намного удобнее. А в ХайАсме, текст на ЯВУ присутствует скорее для галочки. Да, его можно править, но сквозного соответствия нет.
В смысле исходный код ? Нет не для галочки, но и не так как мне бы хотелось ...
Главное в том ,что используя идеи ХайАсма можно избавится от рутины, там где она традиционно считалась неизбежностью.