Giter VIP home page Giter VIP logo

herd's Introduction

Who am I

  • Coder from Finland.
  • Professional work: full stack web development
  • Unprofessional work: demoscene, sizecoding in particular

What I'm up to now

  • Working mostly on sizecoded demoscene stuff.

Latest released stuff

herd's People

Contributors

mjvesa avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

herd's Issues

Write client side interpreter or compiler

Some things require client side development. It would be nice to have the same language available on the client side. See if doing something like what is done in Spil is possible here.

Move source directory into properties

The source directory for Herd sources is hardcoded in the Files class. It should be moved into herd.properties file as herd.source.directory or similar.

Add ability to introspect and modify a running program

Herd should already have most of the requirements in place for showing the constituent words of any word, and also recompiling that word when modified. Such ability would make it possible to live-edit a running program for fixing and debugging purposes.

Refactor ForthIDE

ForthIDE still looks like it has been quickly hacked together. This appearance should be reduced by refactoring the whole class. Once refactored, all parts of the UI should be easily locatable in the source.

Add better live display of words

All words (built-in and defined) should be visible somewhere in the UI. Built-in words could be grouped by their WordSet and the description string could also be shown at least as a tooltip.

Defined words could also use some kind of additional documentation system. For example the stack effect diagram could be shown if available. Also some system for
defining a documentation string for each definition would be nice. That string could then
be shown along with the other information on that word.

Add descriptions to all built-in words

There is a description field for each built-in word. That should be filled with the stack effect of the word and a description of what the word does.

Port to Vaadin 8

Port this thing to Vaadin 8 first using the legacy widgets, then move to the new ones. Table needs to be replaced with Grid and so on.

Fix SQL words and add new database backend

Previously MySQL was used for the database backend. This should be replaced with hsqldb. Additionally all the stuff from the SQL class should be moved into the SQL wordset.

Add production mode

A production mode needs to be added. In this mode the IDE will not be available,
and instead a file to execute is specified and only the main panel is shown.

Implement JVM interop

There are some word sets currently that simply wrap Java APIs. Those could by implemented in Herd if there was a simple API for interoperation with JVM code. Something like:

"com.vaadin.ui.Label" new "I am caption" .setValue

Let's add an interop wordset and special handling for the period. Same scheme as with Java dot notation from JScheme should be used, as that is used in Clojure as well and seems to be very effective.

Change the term block into file

The Forth source files are currently called "blocks", which is not correct. They are normal files, and should be called such in code and in the UI.

Add keyboard shortcuts

Executing code and swithing between various views are good candidates for keyboard shortcuts. Reasonable shortcuts should be added for a quicker workflow.

Core interpreter refactoring

The interpreter is currently in one large switch block. While this is the traditional way to implement Forth in a C-like language, it could be better to implement each word in its own class.

With an uniform interface for executing words it could be possible to compile defined words into series of method calls using the ASM tool.

Fix the MovieBase example

The MovieBase example is a naive movie database. It used to work before the core was refactored and must be fixed.

Investigate optimization strategies

As the JVM is a stack based VM, it may be possible to optimize things a bit by exploiting that. There are many limitations to fully using the JVM stack, but hopefully some gains in speed could be made.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.