Ви не увійшли.
Это можно считать приглашением?
А чем это ещё можно считать? Если Вам нужно официальное приглашение (для командировки или там ещё для чего), запросите, когда зарегистрируетесь, там на странице участника можно это сделать.
Неактивний
Green пише:Извините что встряю. Так вроде ж есть специалист и тоже из Харькова. Ну очень удобно. Olej, не?
Что значит есть? Может и есть. Не помню что б интересовался. Я всем предлагаю...
Нет, это у меня юмор такой.) Звиняйте.)
Неактивний
Batu пише:Это можно считать приглашением?
А чем это ещё можно считать? Если Вам нужно официальное приглашение (для командировки или там ещё для чего), запросите, когда зарегистрируетесь, там на странице участника можно это сделать.
Спасибо!
Неактивний
Batu пише:Green пише:Извините что встряю. Так вроде ж есть специалист и тоже из Харькова. Ну очень удобно. Olej, не?
Что значит есть? Может и есть. Не помню что б интересовался. Я всем предлагаю...
Нет, это у меня юмор такой.) Звиняйте.)
Уже!
Неактивний
Batu пише:Вот вопрос на засыпку. Чем отличаются методы и свойства?
Пока не сказано в рамках какой парадигмы идет речь - все вилами по воде писано.
Вы знаете что даже "массив" в разных языках программирования обозначает разные вещи?
Если речь идет в рамках определений ООП С++ то это уже старая давно известная тема. В java публичных свойств нет, есть методы.
Получается
Batu пише:Зачем эти два понятия нужны, если методами можно заменить свойства? А ответ на этот вопрос позволяет сделать адресацию интеллектуальней..
что Вы изобрели то что уже давно изобретено в С++ и эволюционировало в ту же джаву еще лучшим.
Глубокая мысль. Да разработчики Java сделали сильный шаг. Но, я залез еще глубже.
Неактивний
По тем обрывкам, что тут есть понять ничего невозможно.
Готовь доклад с презентацией (а лучше и демонстрацию работы, если есть) и приезжай http://2018.nscf.ru/ Не забудь заранее зарегистрироваться, ну если ты из науки, то знаешь как такие вещи делаются.
Гарантирую присутствие и критику серьёзных специалистов, а также возможность встретиться (как формально, так и в кулуарах за пивом) и перетереть с представителями всех ведущих производителей железа и софта, как российских (Байкал, МЦСТ, Т-Платформы), так и мировых типа Intel, AMD, IBM и пр. Также гарантирую возможность сделать заранее рассылку по нужным производителям с краткой аннотацией доклада и предложением к ним "не пропустить".
Также там будут представители практически всех институтов развития и фондов, которые финансируют хай-тек. С ними тоже можно будет всё перетереть.
Подумал я, посоветовался со знакомыми. Не поеду я в Россию. Хоть и заманчиво. Так что могу только пообщаться с кем-то и прислать материалы. Если кого интересует. Спасибо еще раз за приглашение.
Неактивний
Batu, обратитесь к технологии FPGA. Она предназначена именно для таких целей. С помощью неё вы можете смоделировать ваш процессор "вживую" и получить действующее устройство. А так же, продемонстрировать всем преимущества вашей технологии вычислений.
Неактивний
Batu, обратитесь к технологии FPGA. Она предназначена именно для таких целей. С помощью неё вы можете смоделировать ваш процессор "вживую" и получить действующее устройство. А так же, продемонстрировать всем преимущества вашей технологии вычислений.
Все надо делать последовательно. Рано еще заявлять за новый процессор. Надо поработать и довести до ума на обычном контроллере. Более того, это само по себе шикарный коммерческий продукт. Ардуино близко не катит по возможностям. А следующий этап, конечно, FPGA. Только для реализации надо иметь уже команду ориентирующуюся в теме, и финансы, коих потребуется значительно больше, чем у меня нет:)
https://www.anandtech.com/show/12773/intel-shows-xeon-scalable-gold-6138p-with-integrated-fpga-shipping-to-vendors
Вот, даже подходящий есть)
Неактивний
1. Определение события. Так ли необходимы ли булевы типы?
Читателю, уверен, знакома машина Тьюринга и состав компьютера потому поговорим за такую знакомую вещь как память. Какую роль она выполняет в принципе понятно, как и понятно, что состояние памяти (множество значений ячеек памяти) определяет состояние компьютера. Значение каждой ячейки памяти можем назвать состоянием ячейки. На основе анализа состояния ячейки выполняются переходы. Обычно это выполняется так : интересующее нас значение состояния сравнивается с текущим значением и по результату сравнения выполняются какие-то действия. Для выполнения этой задачи используются булевы переменные (True, False). Если обобщить эти действия, то можно сформулировать вышеприведенные действия как построение высказывания о состоянии ячейки и определении истинности этого высказывания.
Определение Истины по Тарскому.
«Высказывание Р истинно тогда и только тогда, когда "Р"»
Попробуем перечислить возможные состояния ячеек памяти, и все возможные высказывания о ней. Их можно разделить на два множества:
1. Множество событий состояний.
№ Имя события Описание
0 Initialization Присвоение значения первый раз.
1 Is Nothing Отсутствие значения.
2 Read Чтение.
3 Before Write Перед записью нового значения.
4 After Write После записи нового значения.
5 Error Ошибка.
2. Множество состояний, определяемых при сравнении (Compare).
№ Имя события Знак Имя события Объект сравнения
6 Equal = No Change Значение до присвоения
Equal Is Null 0
7 More > Positive 0
8 Less < Negative 0
9 No More <= С произвольным значением
10 No Less >= С произвольным значением
Т.е. всего различных состояний я насчитал 10. Остальные являются производными от перечисленных (назовем их базовыми)
Мне кажется это очевидно из того, что событие Positive (оно же понятие) является производным от события More при сравнении с 0. Правда при этом подразумевается наличие семантического смысла значения ячейки. А именно, наличие в двоичном представлении положительных и отрицательных значений. И если наполнить значение ячеек общепринятым семантическим содержанием, то можно расширить список состояний.
Исходя из этих соображений, расширим список базовых событий.
№ Имя события Объект сравнения
11 Not Equal Значения не равны
12 Change Изменение значения
13 Is Null Равенство 0
14 Positive Больше нуля
15 Negative Меньше 0
Назовем операцию определения истинности состояния ячейки термином «Событие», а имя высказывания-именем события.
Все остальные события в программировании – суть базовые события, примененные в том или ином контексте, в связи с чем могут потребовать другого имени, более подходящему по сути высказывания.
Так события, к которым мы привыкли Key_Press, Key_Down и прочие являются производными от базовых событий, и отличаются только именем для удобства восприятия семантического содержания при работе с этими событиями.
Предлагаемый подход в программировании можно назвать событийным, и, наличие событий делает лишним булевы типы. Переходы можно выполнять подписками на события. Необходимо отметить тот факт, что события не требуют изменения памяти, потому могут выполняться параллельно применяя конвейерный метод, как обычно, а то, что ветвление может быть множественным только добавляет возможностей. То, что привычные знаки «=», «<», «>» являются именами базовых событий (классами событий), а не операциями, добавляет пикантности в тексте.
2. Работа с событиями.
Так как базовые события порождают все остальные их можно назвать «Классами событий»
2.1. Подписка.
Подписка определяет действия по выполнению события (реакция) и начинается с вертикальной черты «|» после интересующего нас выражения, за которой следует имя состояния и далее реакция на него. Подписка имеет секцию Else, которая определяет реакцию на не истинность высказывания.
Пример. 2.1. Вычисление НОД
a ~ b| > a=a-b Else a=b-a
Данный пример выполняет сравнение а и b и b присваивает а в случае a>b разность a-b и b-a в противном случае.
Знак «~»- операция сравнения. Знак «>»-это не операция, а имя класса события.
Концепты – значения и команды имеют свойство «Подписка». Значениями этого свойства является группа подписок. Знак "|"- это не синтаксическая фича, как обычно в языках. Это имя свойства выражения. Здесь же отметим что и знак "=" это не операция, а также имя свойства выражения, содержащего значение.
Для того, что б получить НОД необходимо выполнить эту команду несколько раз и когда-то остановить вычисления. Поступим следующим образом.
Пример. 2.2. Вычисление НОД. Выражение Nod
Exp Nod a ~ b|{ ‘Создаем группу из 3-х подписок
> {a=a-b Nod} ‘Подписка на событие>. Вычитание и переход на выражение Nod
< {a=b-a Nod} ‘Подписка на событие<. Вычитание и переход на выражение Nod
= Stop ‘По равенству a и b заканчиваем вычисление.
} ‘Конец группы подписок.
2.2. Создание событий.
Итак, мы имеем базовые классы событий. Новые события создаются следующим образом.
Пример. 2.3. Создание событий верхняя и нижняя граница.
{
‘Определение значения Value типа Real с двумя подписками на событие Change
Real Value | {Change { Up_Border Down_ Border}
Real Up |Change Up_Border ‘Определение верхней границы с подпиской на проверку
Real Down |Change Down_ Border ‘Определение нижней границы с подпиской на проверку
<=Up_Border Up ~ Value ‘Определение события Up_Border
>= Down_ Border Down ~ Value ‘ Определение события Down_Border
}
Знак "~" –операция сравнения.
В этом примере при определении значения Value создается подписка на события проверяющие это значение на верхнее и нижнее значение, и тем самым создающие соответствующие события.
Обращаю внимание, что первые знаки при определении событий это не операции сравнения, а имена классов событий операции сравнения согласно синтаксиса ниже:
Событие ="Имя класса события" "Имя события" {Выражение}01 {Подписка}01 {"Обратная подписка"}01
Подписка = «|»"Имя события" Реакция {«Else» Реакция }01
Реакция=Адрес| "Команда или группа команд"
Данный пример выполняется так. При изменении значения Value (событие Change) выполняется адресация к событиям Up_Border и Down_ Border как указано в подписке и выполняются соответствующие проверки.
Мне в этом примере нравится все. Но, я хочу показать еще один вариант подписок.
2.3. Обратная подписка.
В примере 2.3. логика работы прямая. Изменяется значение, происходит событие, и мы переходим на соответствующую подписку. И такой же прямой синтаксис. Однако, если мы создадим класс с этими событиями и потом создадим объект этого класса, и нам понадобится подписаться на созданные события мы не сможем это сделать из класса хотя бы потому что объекта который будет подписываться на них не известен. Но, это можно выполнить обратной подпиской. И сейчас мы покажем, как это делается на этом же примере.
Пример. 2.4. Создание событий верхняя и нижняя граница.
{
Real Value ‘Определение значения Value типа Real без подписок.
Real Up |Change Up_Border ‘Определение верхней границы с подпиской на проверку
Real Down |Change Down_ Border‘Определение нижней границы с подпиской на проверку
<=Up_Border {Up ~ Value} ¦ Value.Change ‘Обратная подписка.
>= Down_ Border {Down ~ Value} ¦ Value.Change ‘Обратная подписка.
}
Этот пример выполняется аналогично. Однако подписки на событие Value.Change формируются при трансляции (в общем случае при создании объекта с обратной подпиской) основываясь на информации в обратной подписке (знак «¦»)
Неактивний
Это я проверил как сюда можно код и текст копировать. Для посмотреть. И если кому интересно.
Не совсем хорошо. Подстрочные и надстрочные значения и цвет не копируется.. А мой транслятор отличает и разбирает))
Остання редакція Batu (2018-06-27 14:24:44)
Неактивний
В тег code Вы код обернули? Нет (поэтому и не подсвечивает). Язык программирования выбрали? Какие еще цвета, подстрочные и надстрочные значения? В известных мне ЯП такого нет.
И события это конечно хорошо, но это полностью не отменяет булевые переменные. Они могут использоваться в любом произвольном алгоритме без необходимости какой либо подписки, просто как временная переменная.
Остання редакція LynX (2018-06-27 21:17:58)
Неактивний
В тег code Вы код обернули? Нет (поэтому и не подсвечивает). Язык программирования выбрали? Какие еще цвета, подстрочные и надстрочные значения? В известных мне ЯП такого нет.
Это мой язык. И система моя. И транслятор мой. У меня разбирает транслятор надстрочные и подстрочные значения.
И события это конечно хорошо, но это полностью не отменяет булевые переменные. Они могут использоваться в любом произвольном алгоритме без необходимости какой либо подписки, просто как временная переменная.
Да не отменяет. Просто в них нет необходимости. Я ж написал причину. Их придумали потому что не додумались сделать как я предложил. А для хранения состояния предусмотрено определение переменной как группы событий (массив). С ее помощью можно организовывать даже множественное ветвление оператор типа Select. Не все сразу. Много фишек. Надеюсь получается красиво..
Остання редакція Batu (2018-06-27 23:41:03)
Неактивний
Их придумали потому что не додумались сделать как я предложил.
Да, нет, их придумали потому, что за ними стоит фундаментальный математический аппарат - булева аглебра, которая, хотя и необратима, но свою службу служит. А у Вас есть что-нибудь вроде "алгебры событий"?
Неактивний
Batu пише:Их придумали потому что не додумались сделать как я предложил.
Да, нет, их придумали потому, что за ними стоит фундаментальный математический аппарат - булева аглебра, которая, хотя и необратима, но свою службу служит. А у Вас есть что-нибудь вроде "алгебры событий"?
Моя специальность математик. Потому я не просто придумываю, а подо все есть формализация.
А я ж вверху обосновал. Посмотри определение истины по Тарскому.
http://ponjatija.ru/node/728
Так истина определяется в логике. С какой целью, булевы переменные используются в компьютере ты и без меня в курсе. Но, мысль не только в организации множественных ветвлений. Во-первых, высказываний всего 16. Т.е. все они помещаются в 4 разряда. Во вторых, анализ выполнения события заключается в вычислении выражения (оно же событие) и может выполняться параллельно. Вычисление любого выражения не изменяет состояния. В третьих, этот анализ необходим только при наличии подписки. А этот признак всего один бит. Кстати, именно так построена ассемблерная команда в турбо-2. Только там биты означают свои проверки. Так что здесь я скорее обосновал и усовершенствовал архитектуру Cortex. И заведи привычку сомневаться. Многое сделано потому что эта мысль пришла в голову первой, а не потому что обосновано. Вот подпрограммы и адрес возврата придумано удачно. А расширения файлов не удачно.
P.S. Хотя ты и так сомневаешься Забираю свои слова обратно.
P.P.S. Вот и получается что булевы переменные-лишнее понятие. И оператор IF не нужен. Ну, это подробности для более подробного рассмотрения. У меня команды выполняются не совсем так как обычно. И адресация интеллектуальная..
Неактивний
Batu пише:Их придумали потому что не додумались сделать как я предложил.
Да, нет, их придумали потому, что за ними стоит фундаментальный математический аппарат - булева аглебра, которая, хотя и необратима, но свою службу служит. А у Вас есть что-нибудь вроде "алгебры событий"?
Не алгебра событий а сети Петри. Ну, это уже совсем не для этого форума. Там суровая математика. Это я занимался лет 15 назад. У меня свои определения были. Даже не помню куда это засунул.. Это для интересантов.
Кстати, вспомнил зачем я этим занимался. Что б выделить бесконечные циклы и полноту построения. Что б не было "подвисших" событий. Но, потом придумал подписки и еще кое-что из принципов построения и тема стала не актуальной.
Остання редакція Batu (2018-06-28 07:29:57)
Неактивний
Позволю себе ляпнуть, хотя я не матаматик и до уровня Петри мне очень далеко. С теоретической точки зрения, любое вычисление может быть выполнено без запоминания промежуточных результатов, выполняемое триггерами. Более того, оно может быть сведено к примитивнейшим булевым выражениям. Именно эти выражения можно вычислять с помощью бистабильных электронных устройств, обладающих высокой помехоустойчивостью и надежностью. И в основе всех современных счетных (математических) машин лежит именно булева алгебра. Применение триггеров, для запоминания промежуточных результатов, позволяет повторно испоьзовать одни и те же цепи (напр. арифметическое логическое устройство) для различных частей выражений. Без них производство реальных машинных вычислений было бы невозможно. Эти триггеры и являются булевыми переменными, с точки зрания языков программирования. А языки в котрых логичесий тип переменных отсутствует, например C или LISP, просто маскируют реальное устройство машины за удобной для программирования нотацией. А за усовершенрствование Cortex я промолчу.
Неактивний
Позволю себе ляпнуть, хотя я не матаматик и до уровня Петри мне очень далеко. С теоретической точки зрения, любое вычисление может быть выполнено без запоминания промежуточных результатов, выполняемое триггерами. Более того, оно может быть сведено к примитивнейшим булевым выражениям. Именно эти выражения можно вычислять с помощью бистабильных электронных устройств, обладающих высокой помехоустойчивостью и надежностью. И в основе всех современных счетных (математических) машин лежит именно булева алгебра.
Ну, да.
Эти триггеры и являются булевыми переменными, с точки зрания языков программирования.
Ну, да. Если речь идет о низкоуровневом программировании.
А языки в котрых логичесий тип переменных отсутствует, например C или LISP, просто маскируют реальное устройство машины за удобной для программирования нотацией.
Ну, да. Только не просто маскирует, а реализовывает образ мысли. Или парадигму. Потому и "удобней" в каком-то смысле.
А за усовершенствование Cortex я промолчу.
Тоже очень мудро.
Неактивний
в основе всех современных счетных (математических) машин лежит именно булева алгебра.
Это да, но это "пока". У использования булевой алгебры есть серьёзные проблемы - она необратима. Раньше это было "пофиг", но сейчас, сегодня это уже становится барьером на пути повышения производительности, т.к. Второе начало термодинамики никто не отменял.
Сегодня, очень много народу (от одиночек, вроде нашего ТС, до гигантов отрасли (например, IBM)) активно занимаются поиском возможностей построения обратимого вычислителя. Подходы самые разные (кристаллы, оптика, живые молекулы и т.п.) Если интересно, то по нечётным годам, в рамках того же форума, о котором я уже писал проходит специальная конференция ("Посткремниевые Вычисления. Если ли жизнь после закона Мура". Иногда бывают потрясающие доклады.
Остання редакція Kaka (2018-06-28 13:28:01)
Неактивний
Вячеслав Азаров пише:в основе всех современных счетных (математических) машин лежит именно булева алгебра.
Это да, но это "пока". У использования булевой алгебры есть серьёзные проблемы - она необратима. Раньше это было "пофиг", но сейчас, сегодня это уже становится барьером на пути повышения производительности, т.к. Второе начало термодинамики никто не отменял.
Я плохо разбираюсь в теории исчислений. Что вы имеете в виду под обратимостью? Булева алгебра ткая-же как и все остальные только с мощностью равной двум. А насчет этих квановых компьютеров, холодного ядерного синтеза, и свободной энергии эфира у меня есть свое мнение.
Неактивний
Ну, я ничего не писал ни про "квановые компьютеры", ни про "холодный синтез" (про горячий я тоже не писал).
Под обратимостью я понимаю, что в булевой алгебре есть операции, которые невозможно обратить (восстановить исходные операнды по результату). И это обуславливает фундаментальный предел на пути повышения производительности вычислений. Если интересно, я могу в двух словах самую суть пояснить, а дальше гуглите по ключевым словам. надо пояснять?
Неактивний
Если вы имете в виду проблему сложнообратимых функций, типа вычисления дискретного логарифма, так это особенность всех дискрентых процессов в природе. Наши представления о непрерывности и бесконечности лишь математическая абстракция. А эти горе-изобретели, пусть ищут. Что-бы что то новое найти, нужно как минимум поискать!
Неактивний
Я люблю теорию, но еще больше предпочитаю ее практическое применение. Теоретические споры можно вести бесконечно. То, что я делаю это работает и работает прекрасно. Более того, на этом пути просматриваются большие перспективы и в производительности и в технологии программирования. Хочу обратить ваше внимание на следующие моменты:
1. Событие - это высказывание. Т.е. определять его истинность можно не только вычислением, но и логическим разбором. А это уже логическое программирование типа Пролога.
2. ООП - формализует объекты. Нечто, называемое "программой" осуществляет взаимодействие между объектами. Здесь полная самодеятельность. Я предлагаю формализованное взаимодействие между объектами с помощью механизма событий и никак иначе. Это упрощает разработку особенно сложных систем. На примерах этого пока не видно, но гарантирую что стоимость разработки будет расти менее чем линейно относительно сложности. Это принципиально.
3. В памяти все структуры формализованные и единого формата. Нет абстрактных двоичных данных. Причем все данные порождаются по единым правилам с именами и хелпами. При отладке, и вообще работе мы имеем сущность которую можем идентифицировать. Кто отлаживал тот поймет разницу в сообщениях об ошибке..
4. Так как все структуры единого формата, то организовать взаимодействие с "черным ящиком" проще пареной репы. Запрашиваем его свойства, методы и события и взаимодействуем. Добавлять, удалять и изменять функционирование можно легко даже не зная объекты.
Это так.. навскидку. Мое дело сделать шаг который я могу. Кто будет после меня и умнее пусть делает лучше. Если будет помощь, то я сделаю больше. Вот и вся философия. А кто не может помочь, то это их дело..
Остання редакція Batu (2018-06-28 14:39:15)
Неактивний
Если вы имете в виду проблему сложнообратимых функций,
Какие функции? Я же говорю, что в булевой алгебре есть необратимые операции. Ну, например, выполнили Вы операцию ИЛИ. По её результату Вы можете откатить назад и узнать оба операнда? (только не говорите. что Вы их сохранили - вопрос не о сохранении, а об обращении операций). А операцию "И" Вы обратить можете и узнать оба операнда? Нет. Вот об этом я и говорю, что булева алгебра необратима и именно это становится барьером на пути повышения производительности вычислительных устройств, сделанных на её основе.
Остання редакція Kaka (2018-06-28 16:25:21)
Неактивний