Lisp Guis Or “Bloodied but Unbowed”

Lisp Guis Or “Bloodied but Unbowed”

Introduction CL Solutions Web Browser as GUI Conclusion Lisp GUIs or “Bloodied but Unbowed” Robert P. Goldman TC Lispers 2009-08-18 Tue Robert P. Goldman Lisp GUIs Introduction CL Solutions Web Browser as GUI Conclusion Introduction Every now and then I have to write code for someone who doesn’t realize inferior lisp mode in emacs is a GUI. This is a classic Phil Agre hassle: “hassles, which are small bits of trouble that recur frequently in routine patterns of activity.” I have tried three solutions, only one of which works satisfactorily: 1 Use a pure CL solution: CLIM (McCLIM, specifically) Garnet 2 Use a web browser as the GUI, employing AJAX; 3 Have someone else write a GUI that will use my CL program as a server. There’s one that doesn’t work at all: FFI to another language’s GUI package. Here’s a bit about each of these. Robert P. Goldman Lisp GUIs Introduction CL Solutions Web Browser as GUI Conclusion Other Languages’ UI Toolkits Why don’t you just use this toolkit implemented in this language? this language = Java: No portable link to Java. this language = C++ C++ FFI is a big pain To know the package (e.g., Qt) you need to know about how the horrible C++ class system works These frameworks are dismayingly static. REPL is critical for GUI programming. Libraries typically have boatloads of parameters and are fussy about them. Robert P. Goldman Lisp GUIs Introduction CL Solutions CLIM Web Browser as GUI Garnet Conclusion CLIM: Common Lisp Interface Manager The Bad The Good UIs that feel unnatural to All CL solution. users. Gadgets versus PRESENT and ACCEPT. PRESENT and ACCEPT. PRESENT arbitrary Lisp Huge learning curve, data structures. crummy documentation. Whenever you need input of a particular McCLIM (open source type, just ACCEPT it CLIM) is unpredictably from everywhere on the unfinished. display. The API is huge, so Multiple backends. making it work is daunting. Robert P. Goldman Lisp GUIs Introduction CL Solutions CLIM Web Browser as GUI Garnet Conclusion Garnet: Constraint-based UI development The Bad The Good Huge learning curve: built All CL solution. on prototype-based object Constraint-based layout. system. Huge set of built-in Back-end has bitrotted — components. X has moved while Garnet Natural feeling UIs. has been static. Brilliant documentation. No non-X backend. Great for building novel Default look and feel is UI components. ugly (but this is readily fixable). Robert P. Goldman Lisp GUIs Introduction CL Solutions Web Browser as GUI Conclusion Using Web Browsers as GUI What do you do if you: Don’t really know or love C++ or Java; Want a cross-platform GUI; Want a repl-style development framework; Want a rich set of widgets that are reasonably native-looking? Use the browser! Robert P. Goldman Lisp GUIs Introduction CL Solutions Web Browser as GUI Conclusion Preliminary Lessons Learned Build your lisp program as a web server. There are a plethora of server frameworks. Use AJAX-style client-server interactions. Plenty of libraries for XML and JSON serialization from CL. Use JSON instead of XML. I learned the hard way. Consider going native and programming Mozilla: Evade the sandbox; Cross-browser compatibility is a horror; Get a richer set of widgets. Still can be ugly: Still a horrific learning curve; JavaScript can be cumbersome (get a good library!); JS debugging and repl use is still cumbersome. Robert P. Goldman Lisp GUIs Introduction CL Solutions Web Browser as GUI Conclusion Got anything better? Robert P. Goldman Lisp GUIs.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    8 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us