Tова е(или ще се опита да стане) имплементация на класическата машина на Тюринг. Всеки потребител ще има възможност да пише програми за нея, да ги изпълнява и да види визуално как работи машината, на която се базира модерният компютър.
##Основна функционалност В основата си, ще може да изпълнява следния набор от инструкции:
- read
- write
- NOP(no operation)
- move/shift left
- move/shift right
- change state
Като допълнение ще бъде реализиранa и възможността за ползване на:
- стек
- регистри
Недетерминизмът също ще бъде реализиран като ще има възможност да бъде изключен, т.е. използването на инструкция, която води до недерминистично поведение ще предизвиква грешка, караща програмата да спре и да изведе подходящо съобщение за настъпилата грешка.
##Интерфейс Ще има два интерфейса:
- конзолен - основен и минималистичен(surprise, surprise), който ,разбира се, ще поддържа вече изброената функционалност
- графичен - изпълнен от пъстри нюанси и цветове, с лесен за ползване от ежедневния потребител интерфейс, т.е. бутончета и козола за писане на инструкции.
Към графичния интерфейс ще бъде свързана и най-съществената част от проекта - визуализацията на машината. Като цяло ще се визуализира лента, разбита на клетки и глава под формата на стрелка, която ще сочи къде се намира в даден момент главата на машината. Тъй като все още липсва имплементация, в груб вид, идеята може да се илюстрира от полимеризацията на: идея1 идея2 идея3
Естетиката на MicrosoftPaint ще бъде минимизарана максимално, в идеалния случай, няма да присъства. Преместването на главата ще представлява плавна анимация, в която стрелаката (т.е. сочещия инструмен, a.k.a. главата) ще се "плъзва" наляво или надясно в зависимост от изпълняваната инструкция.
##Помощ за потребителя Тъй като ползването на програмата се свежда до писане на програми, желателно е да има парсър, който да преглежда написания код, и при наличието на синтактични грешки, любезно да подканва поправянето им като за целта ще предоставя информация за това на кой ред и къде в инструкция е възникнал проблем. Отстраняването на семантични грешки е теоретично невъзможно, но програмистът ще даде всичко от себе си, за да предостави антична форма на засичане на грешки преди изпълнение и дебъгване.