Calico FAQ

From IPRE Wiki
Jump to: navigation, search
  1. What is the Calico Project?
    The Calico Project is designed to create a simple but powerful programming environment for computer science education. It has two main parts: an editor, and a shell. The goal is to have a single environment for exploring different computing contexts with different computer languages.
  2. What can you do with it?
    You can write programs and run them interactively. It is meant to be an all-on-one environment for easily writing and running programs on any platform. The main goal of Calico is to run the Myro interface to robots.
  3. What languages can one use with Calico?
    You can use Java, Python, Ruby, Boo, Scheme, and Jigsaw. Python, Ruby, Boo, and Scheme are well known programming languages. We use IronPython, IronRuby, Boo, and a new version of Scheme. Jigsaw is similar to the drag-and-drop language Scratch.
  4. What language is Calico written in?
    Calico is written in C#, and uses the Gtk graphical tool kit. It runs under Mono on MacOSX, Windows, and Linux.
  5. Are there any differences between the three platforms?
    Basically, no. Pretty much everything works identically on all three platforms.
  6. Why is Calico written in C#?
    One reason is that one doesn't need to re-compile anything other platforms. It is portable and easily maintainable.
  7. Why use Gtk?
    We wanted to use a graphical system that ran well on all three of the major operating system platforms. We tried WinForms, but that is not as well supported on MacOSX and Linux as Gtk is.
  8. Why use Mono?
    We wanted to use a framework that was as flexible as possible. Actually, on Windows we run under .NET with some libraries from Mono.
  9. What is the DLR?
    The DLR is a language infrastructure written so that it would be easy to implement scripting languages. It is written to sit on the Common Language Runtime, or CLR. It was written by Microsoft, but then donated as open source software.
  10. What is the CLR?
    Originally called .NET, the CLR is the heart of Microsoft's virtual machine. Mono implemented a freely available version of the CLR, which is called Mono.
  11. So, the DLR sits on top of the CLR, and Mono implements the CLR via Mono?
    Yes, exactly.
  12. What are Calico's dependency requirements?
    Just install the .zip file from the download page. Everything you need is included (the Linux version has additional dependencies).
  13. Is the Calico Scheme compliant with other implementations of Scheme?
    No. This is an on-going experiment to attempt to bring a Scheme language up to par with other modern scripting languages, like Python, Boo, and Ruby.
  14. Is Calico Scheme a real Scheme then?
    Mostly it is. It is fully and properly tail-call optimized; there is no program call stack. It is implemented using continuations, and supports define-syntax.
  15. What is Calico Scheme written in?
    It is written in Continuation Passing Style (CPS) in Scheme, and converted, through a series of transformations, into C#.
  16. Can Scheme call regular CLR functions?
    Yes.
  17. Can the other DLR languages call Scheme functions?
    Yes. Calico Scheme implements a method to wrap a Scheme procedure as a CLR function.
  18. In what ways can the Calico languages interact?
    Most of the Calico languages can share data structures and programs.
  19. You mean you can write code in Ruby, Boo, Python, and Scheme, and they can all interact?
    Yes. But it depends on the language as to how well, and how much.
  20. Is this slow?
    No, it is actually very fast compared to other scripting languages, especially if the other system needs to perform conversions in passing data back and forth between systems. Calico Scheme is the slowest, but we haven't yet to begin optimizing it yet.
  21. What are modules written in?
    Any language that can create a .DLL can be used. For example, C# or Visual Basic.
  22. Are all .DLLs usable in Calico?
    Windows can probably use any .DLL, but MacOSX and Linux can only use .DLL that are written in a cross-platform way (no P/Invokes, and no low-level C libraries, for example). However, if you write your module appropriately just using C#, then it can be run directly on all platforms.
  23. What does Calico offer for educators?
    The idea is to create an environment that is productive for beginners, but scales up pedagogically as they develop more skills. Educators can also create their own language, or accessory without having to make everything necessary to deploy in the classroom.
  24. Aren't there are already tools like this, such as DrScheme, or IDLE that comes with Python?
    Yes, and both of those are have inspired us and our goals. But we don't want to restrict the project to just Scheme, or just Python. We want to be able to switch, and not have to abandon all of the work on our educational environment, nor our context (3D graphics, robotics, gaming, etc).
  25. What is Jigsaw?
    Jigsaw is a drag and drop language, similar to the interface that comes with Scratch.
  26. What is Dinah?
    Dinah is the beginning of a drag and drop language, similar to the interface that comes with Alice.
  27. Why include these with scripting languages?
    Because we want a smooth continuum from beginner to expert. In Calico you'll be able to start with something like Alice, but then gradually move to Python (for Example). The context (say, 2D graphics) will be exactly the same.