Обещал выложить свой проект. Делаю
Современное программирование обогатилось различными парадигмами (Императивная, логическая, функциональная, ООП), понятиями и методами. Овладевший искусством программирования вдохновляется собственным могуществом и, надеюсь получает массу положительных эмоций от своих ощущений и своего положения в обществе. Что вполне заслуженно.
Источник этого вдохновения — железяка, называемая компьютером, с его привычной архитектурой. Не, думаю, что рядовой программист за все эти заслуги станет благодарить эту безмозглую железку, у которой заведомо нет (и быть не может) никаких заслуг в части интеллекта, и, тем не менее, именно современную архитектуру компьютера надо благодарить, за все современные парадигмы, и понятия. Именно архитектура компьютера лежит в основе всех методов программирования. Так, например, благодаря наличию адреса возврата мы применяем процедуры и рекурсию. Функциональная парадигма полностью стала возможной благодаря такой мелочи как адрес возврата. Циклы остались бы чисто теоретическим понятием, если б не были удачно реализуемы на компьютере языками высокого уровня. Это я к тому, что именно этот банальный принцип массива непосредственно адресуемой памяти и последовательно выполняющимся инструкциям (иногда с переходами) и есть источник вдохновения цивилизации.
Пора бы усложнить эту схему. Для начала представим память не как двоичный массив, а некое множество структур (концептов) построенных по единым правилам. Адресация к ним, понятное дело, немного усложниться. А выполнение (работа компьютера) будет заключаться в адресации к этим концептам, и в зависимости от состояний этих концептов (проверка на события) переходу (подписка) на концепт соответствующий этому событию (реализация события). Т.е. память представляется в виде графа с вершинами-концептами, имеющими некий семантический смысл и ребрами, представляющими адресацию (подписку) на следующий концепт или группу концептов. Некоторые обнаружат (и не без оснований) сходство с нейронной сетью.
Очевидно, что дело машины выполнять адресацию к концептам. Адресация бывает
1. Адресация для чтения.
2. Адресация для записи.
3. Адресация инициализации. Для создания нового объекта из адресуемого.
4. Просто адресация. Присутствует как самостоятельно, так и первым этапом в любом из видов адресации.
Такой компьютер можно представить не только многопроцессорным, но, и желательно иметь много шин доступа. Потому, в общем случае имеем множество шин доступа (желательно больше чем число процессоров) и адресация заключается в выборе свободной шины доступа, формирование концепта- параметра (при записи или инициализации), и формирования адреса возврата для выбранной шины (если адресация выполняется из группы), после чего выполняется адресация.
А теперь пример:
Integer Nod a ~ b {> {a=a-b Nod} # Подписка на событие a>b» <{b=b-a Nod} # Подписка на событие a <b» }
Я думаю общая картина более-менее понятна, но, вопросов должно быть много. За подробности дальше.
По опыту общения выложу здесь еще кое-что за подробности.
Управление устройствами заключается в реакции на какое-то событие или события, анализ состояния заключающийся в каких-то вычислениях (Что тоже анализ состояния Z некой виртуальной переменной A, т.е. тоже событие. Назовем его Z) И реакцией в зависимости от состояния этой виртуальной переменной A и запуск каких-то управляющих реакций (адресацией). Нюанс в том, что анализ состояния виртуальной переменной А может вычисляться параллельно. И фактические работа компьютера при управлении устройствами заключается в адресациях и определениях виртуальных состояний.
На примере работы коробки передач, оформляем событие (выражение SUp) вычисляющее в зависимости от номера передачи необходимость переключения передачи на высшую и другое событий с формулой для переключения на низшую ступень (SDown). Объединяем эти события в группу событий S и делаем ссылку (адресацию) на эту группу события изменения скорости вала двигателя V (V.Change)
Программа выглядит так
V.Change? S
Event S { SuP? Dup SDown? DDown}
Гдк Dup и DDown -методы переключающие скорость на верхнюю и нижнюю передачу..
Мне кажется достаточно просто.
Но, есть еще интересные возможности. В одном ТЗ для космических дел было задание распределить равномерно термометры (их было штук 16) по
Найкращі коментарі пропустити