For Scheme/Racket there are Geiser/Quack. They are not as good as SLIME, but pretty close. In my opinion Scheme is much cleaner language. Yes, macrosystem is different from one in common lips, but you just need to adjust your habbits IMHO to make them work for you. Also Racket in particular is full just bundle full of amazing things :)

On 07/01/2015 09:29 PM, Christian Schafmeister wrote:
I've implemented a Common Lisp that interoperates with C++ and uses LLVM as the 
backend because I was motivated by the same shortcomings in traditional 
software development languages and tools (https://github.com/drmeister/clasp). 
I choose Common Lisp rather than Scheme because the killer feature of Lisp is 
Macros and they are easier to use in Common Lisp than they are in Scheme. Also, 
Slime (Emacs interface to Common Lisp) is one of the most powerful software 
development environments available IMHO.


On Tuesday, June 23, 2015 at 8:33:04 PM UTC-4, John Carmack wrote:
Here is the overview of the work that I recently sent out internally.

I started out with a pure-functional scripting interface, but it very rapidly became 
imperative, and it is in heavy flux.  The sample scripts do capture the general 
"flavor" that I want this to have -- I think it will be easy enough to get 
interesting things happening that it will still tempt people who might be a little 
hostile to working in a Lisp.

------------------------------------------

Here is the first preview of the general purpose VR scripting environment I 
have been working on.  There isn’t anything exciting to look at, but if you 
squint real hard you can see where it might be going.  After I get a bit 
farther along, we can build a PC version as well for cross platform support.
        
Motivation:

Doing VR GUI development in the native apps is unpleasant – you can gut it out 
in C++ with our current interfaces, but the iteration times and code structure 
don’t make it a lot of fun.

In-editor prototyping is nice in Unity, but actual on-device testing cycle 
times are terrible, and you wind up with all the bulk of Unity and poor access 
to the native VR features like TimeWarp layers.

With app signing, we have no way for developers to casually share work with 
each other or limited communities.

My solution is to support development of VR applications in a scripting 
language with several modes:

“Web like”, where the script is downloaded from the net for each execution and 
run by a single signed app that we provide (NetHMD).  Fully specified by an 
app-scheme URI, this allows VR experiences to be launched directly from web 
pages or app-links on Facebook, which I think is VERY powerful – read about how 
great something is while browsing on your phone, then just click the link and 
get the “insert into HMD” dialog and jump right there.  VR scripts can link to 
other VR scripts without leaving VR.  There is no direct monetization here, but 
IAP can eventually be supported.

“App like”, where the script is bundled into a conventional apk to be 
distributed through the store, and the scripting is simply used as a more 
effective development environment for some classes of applications.

“Remote development”, where the script is actually executed in an IDE on a PC, 
communicating with NetHMD over a TCP connection.  This allows sub-second 
code-change to VR change iteration cycles, and the use of a debugger.  There 
might also be a use for a related mode where a central server directly drives 
one or more clients.

Where it will win first:

My “reference application” is the linking of multiple panoramic photos with 
text and audio annotations.  This is a completely obvious application that is 
not performance sensitive, and even a non-programmer could copy-paste-modify 
the simple script for this to make a high quality experience.

Once I hook up an ExoPlayer interface, this will completely subsume what I 
wanted to accomplish with “experience files” – the addition of static prop 
models to panoramic video, linking between different videos, merging of models 
or panoramas with videos that aren’t fully panoramic (GoPro, etc), and so on.

Once I hook up the Social interfaces, this will make it much easier to build 
trivial “activities” for multi-user experiences – board games, card games, etc.

It is already a big help for basic graphics development work – being able to 
just position a few quads with a custom shader and iterate on the shader 
programming remotely without rebuilding is a huge win.

Implementation:

This will be controversial, and I will have a longer discussion about it, but I 
chose Scheme (a Lisp) for the scripting language.  If this all works out, we 
can eventually make C# and Javascript versions, but I have a bunch of reasons 
for going this way first.  I am using Racket http://racket-lang.org/ for the PC 
development environment, and Chibi Scheme for the embedded interpreter on 
Android.  Download Racket and walk through their quick-intro-with-pictures to 
get a feel for the language and you should be able to hack on the sample 
scripts I have been writing pretty quickly.  Note that Racket is a very 
extended Scheme targeted at desktop apps, the embedded version is just the 
basic standard.

All texture / model / sound resources are loaded and cached from network URI.  
For testing, you can just paste in any URI from a Google image search, which is 
convenient.  For an actual project development, dropbox should work fine.

I am favoring ease of development over performance, and it definitely won’t be 
suitable for a lot of tasks, but everything we have done with first party apps 
so far should be at least a candidate for development in this style once it is 
mature.

Everything is super-rough right now, and I keep thinking “one more day of work 
will clean it up better for people to look at”, but it is past time I at least 
get this on everyone’s radar.

<actual Android apk redacted -- it is too crappy to show the broader world right 
now>

Running it will load a default home script, which has links to a few test 
programs I have made.  The back button returns to the home page.

The sample scripts are at:

http://s3.amazonaws.com/o.oculuscdn.com/netasset/home.rkt
http://s3.amazonaws.com/o.oculuscdn.com/netasset/office.rkt
http://s3.amazonaws.com/o.oculuscdn.com/netasset/shader.rkt
http://s3.amazonaws.com/o.oculuscdn.com/netasset/spin.rkt
http://s3.amazonaws.com/o.oculuscdn.com/netasset/text-panels.rkt
http://s3.amazonaws.com/o.oculuscdn.com/netasset/reversi.rkt

You could edit them dawn-of-the-web style by downloading, editing, uploading 
someplace else, and sending a new intent to nethmd:

adb shell am start -d 
nethmd://s3.amazonaws.com/o.oculuscdn.com/netasset/shader.rkt

However, the preferred development strategy is to use the DrRacket IDE.  In 
addition to the scripts you are working on, download the following two files 
into the same directory:

https://s3.amazonaws.com/o.oculuscdn.com/netasset/vr.rkt
https://s3.amazonaws.com/o.oculuscdn.com/netasset/remote.rkt

Make sure you have your phone and PC on the same WiFi network, and they can 
ping each other.  Run the NetHmd app (which reports the IP address on the home 
page for convenience).  Open the script you want to work with in DrRacket and 
put the ip address in the last line, which looks something like this:
(remote "172.22.52.94" #f tic)

Hit ctrl-R or select the Racket->Run menu option to start execution.  NetHMD on 
the phone should change from the home screen to the test scene.  You can load and 
run other scripts, or restart the current one, without restarting NetHmd on the 
phone.  You can move around with the joypad during development.  Button Y / 4-dot 
resets the view to the home position.

I am still figuring out exactly what the “standard library” should look like, 
and I’m sure it will go through incompatible changes, but I would be happy to 
support anyone interested in doing bleeding-edge experimentation with this.

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to