Symulacja automatu skończonego - pomoc koncepcyjna

0

Cześć!

Na starcie zaznaczę, że nie jestem zupełnym laikiem jeśli chodzi o programowanie i nie mam problemu z zakodowaniem czegoś. Wybrałem forum "newbie", bo żadne inne nie do końca mi pasowało.

A więc tak. Jestem studentem pierwszego roku informatyki. Na zaliczenie przedmiotu mam za zadanie zrobić program symulujący działanie automatu skończonego.
Treść zadania:

Program ma pracować w trybie graficznym oraz umożliwiać wprowadzenie parametrów opisujących automat, wczytanie taśmy wejściowej, wizualizację pracy automatu w formie grafu, określenie czy taśma wejściowa została zaakceptowana.

Samo napisanie programu i jego logiki nie jest dla mnie jakimś specjalnym wyzwaniem. Mógłbym pójść na łatwiznę i zrobić wszystko w Javie i Swingu. Jednak chciałbym nauczyć się czegoś nowego, no i zrobić aplikację dużo bardziej profesjonalnie. Wykorzystać chciałbym do tego Scalę i Play Framework + D3.js do wizualizacji.

Wyobrażam sobie to tak, że użytkownik dodaje na planszy stany i przejścia między nimi.
user image
Na końcu użytkownik wpisuje słowo i symulacja krok po kroku prowadzi przez każdy znak słowa i odpowiednio stworzony graf pokazując na końcu czy słowo jest akceptowane przez automat. Oczywiście jest to pierwszy pomysł jak zrobić taką aplikację, wszystkie inne też chętnie poznam.

I tutaj chciałbym prosić o wszystkie rady jak powinna wyglądać taka aplikacja. A w szczególności chodzi mi o aspekt komunikacji między logiką w Scali, a grafem rysowanym w JS.

Dzięki za wszelkie pomoce!

0

Nie bardzo rozumiem jakich porad oczekujesz. Ja tu w ogóle nie widzę miejsca na backend - wszystko to przecież tylko wizualizacja tego automatu.

0

Ja też nie bardzo widzę miejsce na backend. Skupiłbym się więc na frontendzie (w trybie offline). Ten można skrobać w Scala.js. Ja ostatnio w tym rzeźbię i jest spoko. Możesz wystartować z tego: https://github.com/lihaoyi/workbench-example-app i dodać binding do D3.js, np: https://github.com/spaced/scala-js-d3

0

O właśnie o coś takiego mi chodziło! Przyznam, że już wczoraj trafiłem na ScalaJs. A myślicie, że projektowanie grafu jest dobrym pomysłem, żeby pokazać symulator automatu? Czy lepiej zrobić coś na styl http://ivanzuzak.info/noam/webapps/fsm_simulator/ ?

0

Myślę, że najlepiej dodawać funkcjonalności systematycznie zamiast od razu porywać się z motyką na Słońce. Najpierw zrób coś prostego, ale działającego, a potem systematycznie dokładaj nowe bajery. Cały czas miej otestowany kod, byś mógł pewnie go refaktorować. Zastosuj system kontroli wersji, byś mógł bezproblemowo wracać do ostatniego działającego stanu (nie musisz się bawić w żadne branchowanie, jeśli nie ogarniasz tematu - czas spędź nad funkcjonalnościami).

1 użytkowników online, w tym zalogowanych: 0, gości: 1