Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Friday, October 8, 2010

Scheme

Lately, I have been learning Scheme, an elegant, minimalistic Lisp. Scheme is one of a few dialects of Lisp; two others that are (fairly) popular are Common Lisp and Clojure. I have used Common Lisp before -- it is a large, powerful language of ancient and storied lineage, yet one that is quite modern, if not as rich in libraries as others. Scheme, in comparison (although it shares some of Common Lisp's ancestry), is quite compact.

Perhaps as a side-effect of its compactness and clarity, there exists a large body of literature pertaining to Scheme and its implementation. It seems to me that this is a good place to start learning about the implementation of dynamic, interactive programming languages, a topic in which I am interested. I am especially curious about compiler design and construction for such languages -- what are the techniques for making a dynamic language go fast?

Wednesday, September 29, 2010

CAS: The Interface

I wrote in the tome-like overview of CAS that I would begin the technical posts with one about the parser. It makes more sense, however, to write first about how one uses CAS. After all, the interface is what unifies the rest of the program!


Saturday, September 25, 2010

Primitive Integration

Integration of polynomials, the basic trig functions, and sums of both is simple. Yesterday, I realized I could adapt the strategy I used in CAS's differentiator to implement integration of such expressions. The result is the first iteration of the CAS integrator, now up on my GitHub account.

Wednesday, September 22, 2010

An Overview of CAS

In this post, I intend to outline the basic problem of computer algebra, exposit the design of CAS, name its principle components, and briefly discuss possible directions of future development.

Note that most of this is written in very basic terms. A reader who has looked at the CAS source, or one who desires a technical description of each of CAS's components should skim the current posting (paying particular attention to the last two sections) and await the forthcoming series of explanations of CAS's constituent parts.