EntoLogic
Talk to us Home

About EntoLogic

From the Greek words εντολη (entolé) and λογος (logos).

The EntoLogic project was created to help programming newcomers understand how programs work by explaining snippets they provide in whichever language they speak.

The initial motivation was to have it as an entry in the BT Young Scientist & Technology Exhibition (a national science fair) but has grown since.

Screenshot of explanation Note the black mouse on the right hovering over the explanation which causes the code to highlight on the left.

How does it work?

FAQ

Translating x will not make any grammatical sense using your method!
Firstly you need to understand that the aim of EntoLogic is not to write poetic narratives of your code. We created it to get a message across to the reader. If we get people to understand programs better, we have accomplished our aim. This isn't at all to say that we aren't trying to make the system better at describing code like if it was written by a human.
What technologies did you use?
EntoLogic is written using multiple programming languages and data stores.
  • The main translator programmes are written in Haskell.
  • The whole web app is written in the famous/infamous JavaScript.
  • Backend is Node.js and the frontend (as some of you may have already noticed) is Angular.js.
  • And we are using MongoDB as a database.
Why isn't programming language x supported?
Obviously, we want to support as many programming languages as possible so EntoLogic can reach as many learners as possible. Currently our team is very small and we aren't experts in every single programming language. We have designed our system in a way that allows users to build the software necessary to parse (nearly) any programming language. If you are interested in helping out to build a UAST generator for a language you have proficiency in, please visit the contribution for more information.
Open Source?
We have been considering open sourcing much more or even our whole system. At the moment, the uast definitions and generators are open source. As we were entering the project in a competition, we wanted to keep things closed until shown to the judges
Is there an API? I want to build a CLI/text editor plugin.
We are currently working on an API and command line interface. You can use the web app until then.
Why doesn't it highlight the whole thing I'm hovering over?
The locations we can highlight depend on what kind of info we get from the language parsers. The parser we are using for Ruby (Ripper) only gives the starting character location of literals. If you think you could do a better job or want to add support for another programming language, go to the contribution page.