Вверх ↑
Этот топик читают: Гость
Ответов: 409
Рейтинг: 17
#61: 2009-07-09 13:19:34 ЛС | профиль | цитата
Dilma писал(а):
...позволяет с гораздо более раннего возраста...

Когда я первый раз увидел HiASM и попробовал его в деле, первая мысль: "Почему такое не преподают в школе?"
Помню мы в школе изучали бейсик, рисовали блок схемы и т.д. И хотя у меня проблем с информатикой небыло, я тогда написал даже текстовую игру на бейсике, и когда размер программы зашкалил за 16кб, она перестала запускатся на общих БК0010, а запускалась только на "сервере" БК0011 с 32кб памяти! Отвлекся...
Так вот, одноклассники в большей своей части не врубались в программирование, но если бы тогда был-бы HiASM - думаю большинство бы без труда справилось с простенькими алгоритмами которые нам преподовались.
И так как в школе не ставится задачи научить программированию, а лишь научить решать алгоритмы с помощью ЭВМ, то думаю HiASM - это то, что доктор прописал.
Dilma, ты не думал подарить HiASM детям в школы? Тем более сейчас школы вроде на СПО переходят, может под какую нибудь гос.программу этот проект подсунуть?
------------ Дoбавленo в 13.27:
Dilma писал(а):
и как это может выглядеть? примерно хотя бы.

А если представлять код в элементе IC - графически, в виде классических блок-схем.
По идее блок-схемами можно описать алгоритм любой сложности.
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#62: 2009-07-09 13:31:26 ЛС | профиль | цитата
в некоторых учебных заведениях уже преподают. Вот тема по этому вопросу: http://dev.hiasm.com/forum.html?q=3&p=106224
------------ Дoбавленo в 13.34:
а вот описание очевидца(Астрамак-а) с фотографиями с места событий http://dev.hiasm.com/forum.html?q=3&p=52434

собственно расписанное им поведение школьников и их освоение новой "игрушки" доказывает как минимум одно - HiAsm действительно позволяет начать программировать с первых же минут не зная о программировании вообще ничего.
карма: 26
0
Ответов: 5227
Рейтинг: 588
#63: 2009-07-09 13:52:09 ЛС | профиль | цитата
Dilma, ну вот Вы собственно и сами удосужились таки привести пример я бы за это сразу бан получил. Удивление Pirr(а) мне понятно, а вот если представить что этих массиво не 3 а 33 то это так и останется 2 строчки а в функцию будут передаваться только их указатели, потоков у Вас для массивов нет, можно представить какая красивая схема получается. Galkov, я думал лукавить не Ваш стиль и то что большинство ПО написаны в яву а не в HiAsm или других конструкторах это факт, и что можно всех под одну гребёнку типа что Вы пошли не туда .

Pirr писал(а):
Тогда, выхода нет, нужно только наращивать количество элементов и увеличивать круг решаемых задач.
глубокое заблуждение.

з.ы эх похоже я просто теряю время.

Судите строго, беспристрастно,
Проверьте правильность идей
Пусть буду битым я - не страшно,
Науке ..- истина важней.

карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Администрация
Ответов: 15294
Рейтинг: 1518
#64: 2009-07-09 13:58:42 ЛС | профиль | цитата
andrestudio писал(а):
ну вот Вы собственно и сами удосужились таки привести пример я бы за это сразу бан получил. Удивление Pirr(а) мне понятно, а вот если представить что этих массиво не 3 а 33 то это так и останется 2 строчки а в функцию будут передаваться только их указатели, потоков у Вас для массивов нет, можно представить какая красивая схема получается. Galkov, я думал лукавить не Ваш стиль и то что большинство ПО написаны в яву а не в HiAsm или других конструкторах это факт, и что можно всех под одну гребёнку типа что Вы пошли не туда

и что нового тут сказано по сравнению с тем, что было раньше?

andrestudio писал(а):
эх похоже я просто теряю время.

надеюсь кукареканье после этого вывода прекратится.
карма: 26
0
Ответов: 9906
Рейтинг: 351
#65: 2009-07-09 14:28:04 ЛС | профиль | цитата
Dilma писал(а):
то схема получится с таким переплетением связей, что проследить-то отдельный поток труда не составит, а вот общий смысл понять - увы.

Код тоже получится с таким "переплетением", что даже отследить отдельный поток будет нетривиальной задачей.
Не думаю, что для "отрисовки фрактала в цвете" понять общий смысл из кода будет намного проще. Для свежего смотрящего, скажем.
Ну и наконец, есть такое понятие, как дизайн схемы.
И крайне положительной особенностью HiAsm является то, что заставляет пользователя рисовать понятные схемы.
Положительной потому, что именно после этого они начинают работать всегда, везде, и при любых обстоятельствах
Экспериментальный факт, между прочим...

Пример. Для AVR-ок я пользуюсь Algorithm Builder. Тоже визуальная среда, между прочим. И тоже "сокращает время проектирования в несколько раз" - так продекларировано, и соответствует действительности.
НО, там визуализирован только поток исполнения, но не связи. Да, есть хинт - переменная такая-то и такая-то, вот ее локализация... А кто туда чего записал, когда, и почему - сам думай.
Так это самое первое, что я отметил в HiAsm (еще в те стародавние времена) - тут визуализировано ВСЕ.
И эту разницу я знаю не в теории, а на практике. Многолетней, между прочим.
А вы мне про "понять невозможно" рассказываете

Dilma писал(а):
и как это может выглядеть? примерно хотя бы

Дык "примерно-то" уже было описано на форуме. Примерно там, где коллега Вячеслав написал
Чё то отлично вижу, как это сделать в делфи, а как в HiAsm - не врубаюсь.
Это выходит, что у нас нет такой элементарщины

Конкретный элемент типа FileStream является конкретизацией (наследником) некого базового элемента, у которого методы Read и Write являются пустыми.
DataToFile является надстройкой (контейнер, элемент), в которой используется элемент-Pointer
Элемент-Pointer имеет св-во типа "класс-элемента", и в нашем случае - это как раз базовый класс для всяких там Stream-ов
Сей элемент принимает некие данные типа OBJ (то ли через поток, то ли через верхнюю точку), а среда ему автоматически делает точки и иконку в соответствии со "св-м класса"
И эти данные - фактически наш сегодняшний Handle мультика.

Тут никакого велосипеда не изобретается - все языки программирования имеют такую "отверточку"
При этом, не хочу я уже иметь элемент типа динамический мультик, и думать про себя, что на самом деле их там много.
А хочу иметь массив объектов (фактически - целочисленный массив хэндлов), подключать его, например, к EnumArray, выход которого - на этот элемент-Pointer, и через него - сотворять с конкретным объектом все, чего душа пожелает.
Меня в усмерть утомило, по каждому чиху внутри динамического контейнера - "выходить" из него, заниматься какой-то селекцией, с последующим выполнением задуманного.
Если таких "чихов" штук 20 - это начинает полностью противоречить "помогает думать"
По настоящему помогает - наличие внутри контейнера элемента памяти, хранящего нужный хэндл для употребления в элементе-Pointer-е.
Или хэндл на массив, если по жизни - именно перечисления необходимы будут.


В общем, делов-то - на копейку: визуальное замыкание, наследование, объекто-указание.
И я больше не буду делать MatrixWave на Дельфи, а буду - на HiAsm
Хотя - нет, буду делать BackEnd, адекватный таковому FrontEnd-у.
карма: 9

0
Ответов: 2125
Рейтинг: 159
#66: 2009-07-09 14:44:22 ЛС | профиль | цитата
Galkov писал(а):
Сей элемент принимает некие данные типа OBJ (то ли через поток, то ли через верхнюю точку), а среда ему автоматически делает точки и иконку в соответствии со "св-м класса"

Ты ещё вспомни про то, как я после начального знакомства с HiAsm предлагал, чтобы коллекция объектов у всех линков на мультики (и у него самого) была общая.
Фактически, я предлагал использовть линк на мультик в качестве того, что ты называешь Pointer-ом (без учёта фичи - принимать handle сверху).
Но это было предложение без нарушения общей концепции. Сколько лет уже после этого прошло, а воз и ныне там.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#67: 2009-07-09 14:58:49 ЛС | профиль | цитата
Я помню ВСЕ
Просто по-короче хотелось
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#68: 2009-07-09 15:00:30 ЛС | профиль | цитата
вообще-то линк на мультик с общей коллекцией объектов это потеря визуализации(не смущает?)
Прокидывание handle до таких мультаков это усложнение и нестыковка на уровне интерфейса - у оригинального-то контейнера никакого handle не будет
карма: 26
0
Ответов: 9906
Рейтинг: 351
#69: 2009-07-09 15:11:02 ЛС | профиль | цитата
Это может быть:
  • Причиной для дополнительных размышлений.
  • Отрицания аналогичных предложений Все зависит от цели.
    Если мы канонизировали круг решаемых задач "простыми программами" - второе
    Если хотим разорвать этот круг, и сравниваться с языками программирования - первое

    Да, про "копейку" - это шутка-юмору, конечно же.
  • карма: 9

    0
    Ответов: 2125
    Рейтинг: 159
    #70: 2009-07-09 15:22:30 ЛС | профиль | цитата
    Dilma писал(а):
    вообще-то линк на мультик с общей коллекцией объектов это потеря визуализации(не смущает?)

    Не смущает, потому что будет
    Dilma писал(а):
    Прокидывание handle до таких мультаков


    Пора бы уже перестроиться, и допустить возможность передачи в потоке не только предопределённых типов данных, но и объектов пользователя.
    карма: 1

    0
    Администрация
    Ответов: 15294
    Рейтинг: 1518
    #71: 2009-07-09 15:37:25 ЛС | профиль | цитата
    tsdima писал(а):
    Пора бы уже перестроиться, и допустить возможность передачи в потоке не только предопределённых типов данных, но и объектов пользователя.

    tsdima, и чем это от data_object отличается?

    Я вообще говоря не о том спрашивал. Ну положим есть у меня контейнер с точками doWork, onEvent и Data(верхняя). Делаю ссылку на него - у этой ссылки появляются такие же точки + верхняя handle. Это можно назвать удачным интерфейсным решением?
    ------------ Дoбавленo в 15.50:
    с фракталом вот что получилось

    
    Add(MainForm,2953706,21,105)
    {
    Point(Handle)
    }
    Add(For,8450866,147,105)
    {
    Start=-100
    End=100
    link(onEvent,2010766:doOperation,[])
    }
    Add(Math,2010766,196,105)
    {
    OpType=3
    Op2=100
    link(onResult,5732910:doNext,[])
    }
    Add(Counter,5732910,245,105)
    {
    Min=-1
    Max=1000
    link(onNext,12415604:doFor,[])
    }
    Add(For,12415604,294,105)
    {
    Start=-200
    End=100
    link(onEvent,5755526:doOperation,[])
    link(onStop,8332390:doReset,[(339,118)(339,76)])
    }
    Add(Math,5755526,350,105)
    {
    OpType=3
    Op2=100
    link(onResult,5132660:doEvent1,[])
    }
    Add(Counter,8332390,455,56)
    {
    Min=-1
    Max=1000
    }
    Add(Hub,5132660,406,105)
    {
    OutCount=8
    link(onEvent1,8332390:doNext,[(438,111)(438,62)])
    link(onEvent2,8178685:doWork2,[(537,118)(537,153)])
    link(onEvent3,8239575:doData,[(528,125)(528,174)])
    link(onEvent4,10946398:doReset,[(504,132)(504,244)])
    link(onEvent5,5847953:doClear,[(492,139)(492,377)])
    link(onEvent6,6620730:doClear,[(492,146)(492,377)])
    link(onEvent7,3546509:doRepeat,[(477,153)(477,370)])
    link(onEvent8,3459442:doCalc,[(438,160)(438,503)])
    }
    Add(Repeat,3546509,567,364)
    {
    Op1=Integer(1)
    link(onRepeat,11991298:doEvent1,[])
    link(Op2,1213182:reCalc,[])
    }
    Add(MathParse,1213182,567,308)
    {
    DataCount=3
    MathStr="(%1*%1 + %2*%2 < 4) and (%3 < 64)"
    Point(reCalc)
    link(X1,7738539:Var1,[(573,296)(554,296)(554,415)])
    link(X2,12484728:Var3,[(580,290)(745,290)(745,415)])
    link(X3,9177964:Var1,[(587,296)])
    }
    Add(Hub,11991298,616,364)
    {
    OutCount=5
    link(onEvent1,5847953:doCalc,[])
    link(onEvent3,10946398:doNext,[(648,384)(648,214)(591,214)(591,230)])
    link(onEvent4,8757944:doData,[(644,391)(644,440)])
    link(onEvent5,12339374:doData,[(639,398)(639,475)])
    }
    Add(GetDataEx,9122785,651,343)
    {
    link(Data,10290518:Value,[])
    }
    Add(GetDataEx,11003835,658,329)
    {
    link(Data,7938028:Value,[])
    }
    Add(GetDataEx,6972624,350,147)
    {
    Angle=3
    link(Data,2010766:Result,[(202,156)])
    }
    Add(Counter,10946398,602,224)
    {
    }
    Add(DoData,8239575,588,168)
    {
    link(onEventData,2533009:doWork2,[])
    link(Data,6972624:Var3,[(594,156)])
    }
    Add(DoData,8757944,658,434)
    {
    link(onEventData,8178685:doWork1,[(769,440)(769,127)(627,127)])
    link(Data,7738539:Var2,[])
    }
    Add(DoData,12339374,707,469)
    {
    link(onEventData,2533009:doWork1,[(756,475)(756,138)(641,138)])
    link(Data,12484728:Var2,[])
    }
    Add(HubEx,2533009,637,161)
    {
    link(onEvent,7938028:doValue,[])
    }
    Add(Memory,7938028,665,168)
    {
    Point(Data)
    }
    Add(Memory,10290518,658,147)
    {
    }
    Add(Img_Point,303235,567,497)
    {
    DrawSource=1
    Point(X)
    Point(Y)
    Point(Color)
    link(Bitmap,1909014:Value,[(573,485)(538,485)])
    link(X,2290288:Var,[])
    link(Y,900159:Var,[])
    }
    Add(MathParse,3459442,455,497)
    {
    DataCount=1
    MathStr="255 - 4*%1"
    link(onResult,12569120:doRGB,[])
    link(X1,9177964:Var2,[(461,431)(608,431)])
    }
    Add(RGB,12569120,511,497)
    {
    link(onRGB,303235:doDraw,[])
    link(G,7070108:Var2,[])
    link(B,7070108:Var3,[(531,485)])
    }
    Add(GetDataEx,7070108,511,476)
    {
    Angle=3
    link(Data,3459442:Result,[(499,485)(499,541)(461,541)])
    }
    Add(GetDataEx,9177964,595,287)
    {
    link(Data,10946398:Count,[])
    }
    Add(LineBreak,14005060,455,98)
    {
    Caption="x"
    Type=1
    link(Data,8332390:Count,[])
    Primary=[2290288,119,350]
    }
    Add(LineBreak,15110474,245,147)
    {
    Caption="y"
    Type=1
    link(Data,5732910:Count,[])
    Primary=[900159,336,322]
    }
    Add(Button,9657125,91,105)
    {
    Left=90
    Top=20
    link(onClick,8450866:doFor,[])
    }
    Add(Memory,1909014,532,441)
    {
    }
    Add(FastMathParse,6620730,707,364)
    {
    DataCount=3
    MathStr="2*%1*%2 + %3"
    Point(doClear)
    link(X1,9122785:Var3,[(713,352)])
    link(X2,11003835:Var3,[(720,338)])
    link(X3,6972624:Var2,[(727,274)(363,274)])
    }
    Add(FastMathParse,5847953,658,364)
    {
    DataCount=3
    MathStr="%1*%1 - %2*%2 + %3"
    Point(doClear)
    link(onResult,6620730:doCalc,[])
    link(X1,9122785:Var2,[])
    link(X2,11003835:Var2,[])
    link(X3,5755526:Result,[(678,282)(356,282)])
    }
    Add(GetDataEx,12484728,700,406)
    {
    link(Data,6620730:Result,[])
    }
    Add(HubEx,8178685,623,140)
    {
    link(onEvent,10290518:doValue,[])
    }
    Add(GetDataEx,7738539,651,406)
    {
    link(Data,5847953:Result,[])
    }


    карма: 26
    0
    файлы: 1fractal.png [12.6KB] [375]
    Ответов: 2125
    Рейтинг: 159
    #72: 2009-07-09 15:55:09 ЛС | профиль | цитата
    Dilma писал(а):
    Делаю ссылку на него - у этой ссылки появляются такие же точки + верхняя handle

    Ну есть же левые ##add, ##select, почему бы не сделать и верхнюю ##handle (##index)? Нижнюю, для определённости, можно обозвать ##selected (##selectedIndex, ##selectedHandle), а не ##handle, как сейчас. Только вот вопрос совместимости...

    карма: 1

    0
    Администрация
    Ответов: 15294
    Рейтинг: 1518
    #73: 2009-07-09 16:23:45 ЛС | профиль | цитата
    tsdima писал(а):
    Ну есть же левые ##add, ##select, почему бы не сделать и верхнюю ##handle

    да вот не хочется все это организовывать таким образом. Мешанина встроенных и пользовательских точек не удобна.
    карма: 26
    0
    Главный модератор
    Ответов: 2997
    Рейтинг: 395
    #74: 2009-07-09 19:41:39 ЛС | профиль | цитата
    Dilma писал(а):
    дать некие нано кубики, из которых строятся обычные элементы


    Может нанокубики - это просто FTCG? Мне кажется, (возможно ошибаюсь), но вполне реально собрать средний компонент на FTCG, но сразу оговорюсь, что моих знаний Delphi недостаточно, чтобы достоверно это утверждать.
    ------------ Дoбавленo в 20.12:
    Ещё в голову влезла мысль о компоненте на FTCG такой функциональности:

    
    #ini
    [Property]
    Uses=Задает список используемых модулей|5|
    GlobalVars=Задает список глобальных переменных|5|
    ...

    [Methods]
    doMethod=Формирует тело метода|1|
    doProperty=Формирует свойство|1|
    doEvent=Формирует обработчик события|1|
    ...

    карма: 6
    Дорогу осилит идущий. Install/Update HiAsm.NET
    0
    Администрация
    Ответов: 15294
    Рейтинг: 1518
    #75: 2009-07-09 20:31:15 ЛС | профиль | цитата
    Nic писал(а):
    Может нанокубики - это просто FTCG?

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

    Nic писал(а):
    Ещё в голову влезла мысль о компоненте на FTCG такой функциональности:

    это уж совсем низкий уровень...
    карма: 26
    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)