Skip to content

ytsvetkov/TuringMachine

Repository files navigation

TuringMachine

Tова е(или ще се опита да стане) имплементация на класическата машина на Тюринг. Всеки потребител ще има възможност да пише програми за нея, да ги изпълнява и да види визуално как работи машината, на която се базира модерният компютър.

##Основна функционалност В основата си, ще може да изпълнява следния набор от инструкции:

  1. read
  1. write
  2. NOP(no operation)
  3. move/shift left
  4. move/shift right
  5. change state

Като допълнение ще бъде реализиранa и възможността за ползване на:

  1. стек
  1. регистри

Недетерминизмът също ще бъде реализиран като ще има възможност да бъде изключен, т.е. използването на инструкция, която води до недерминистично поведение ще предизвиква грешка, караща програмата да спре и да изведе подходящо съобщение за настъпилата грешка.

##Интерфейс Ще има два интерфейса:

  1. конзолен - основен и минималистичен(surprise, surprise), който ,разбира се, ще поддържа вече изброената функционалност
  1. графичен - изпълнен от пъстри нюанси и цветове, с лесен за ползване от ежедневния потребител интерфейс, т.е. бутончета и козола за писане на инструкции.

Към графичния интерфейс ще бъде свързана и най-съществената част от проекта - визуализацията на машината. Като цяло ще се визуализира лента, разбита на клетки и глава под формата на стрелка, която ще сочи къде се намира в даден момент главата на машината. Тъй като все още липсва имплементация, в груб вид, идеята може да се илюстрира от полимеризацията на: идея1 идея2 идея3

Естетиката на MicrosoftPaint ще бъде минимизарана максимално, в идеалния случай, няма да присъства. Преместването на главата ще представлява плавна анимация, в която стрелаката (т.е. сочещия инструмен, a.k.a. главата) ще се "плъзва" наляво или надясно в зависимост от изпълняваната инструкция.

##Помощ за потребителя Тъй като ползването на програмата се свежда до писане на програми, желателно е да има парсър, който да преглежда написания код, и при наличието на синтактични грешки, любезно да подканва поправянето им като за целта ще предоставя информация за това на кой ред и къде в инструкция е възникнал проблем. Отстраняването на семантични грешки е теоретично невъзможно, но програмистът ще даде всичко от себе си, за да предостави антична форма на засичане на грешки преди изпълнение и дебъгване.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages