Posts

Showing posts from December, 2008

Simple lisp interpreters in C, Java and Erlang

Image
Overview I have already covered the lisp interpreters in Erlang and Java. I have created another example that is based on C. So, you have three different implementations in three different languages. Also, these interpreters are based on Peter Norvig's JScheme implementation. That is a fourth project that you can compare and contrast. Peter Norvig created JScheme, a Lisp Scheme dialect written in Java. It was created in 1998 and it has since been forked, extended and used quite extensively in other modern projects for the web and elsewhere. The C lisp interpreter is based on the JScheme interpreter. The JScheme code is copyrighted to Peter Norvig This is only a modifications to make our Lisp even lighter than it was originally. Norvig's most recent implementation of JScheme contains 1905 lines of Java code. This implementation contains 2000 lines of C code wrapped in additional Javadoc comments, including implementations of list, hashtable datastructures. There is...

Factor tech talk at google by Slava

Slava does a good job with this factor google tech talk. If you haven't already heard about it, here you go. http://www.youtube.com/watch?v=f_0QlhYlS8g

Great article on the Hotspot JVM JIT compiler

http://ssw.jku.at/Research/Papers/Ko08/ Abstract "Version 6 of Sun Microsystems' Java HotSpot™ VM ships with a redesigned version of the client just-in-time compiler that includes several research results of the last years. The client compiler is at the heart of the VM configuration used by default for interactive desktop applications. For such applications, low startup and pause times are more important than peak performance. This paper outlines the new architecture of the client compiler and shows how it interacts with the VM. It presents the intermediate representation that now uses static single assignment (SSA) form and the linear scan algorithm for global register allocation. Efficient support for exception handling and deoptimization fulfills the demands that are imposed by the dynamic features of the Java programming language. The evaluation shows that the new client compiler generates better code in less time. The popular SPECjvm98 benchmark suite is executed 45% fast...

Basic tools for monitoring garbage collection, and more on JVM memory analysis (draft)

Image
(Draft) I was having a discussion online. C is better than Java. Java is better than C. You know, the conversation you have everyday on the web and come up with the same conclusions. When people mention the benefits of Java, they normally mention WORA (write once, run anywhere) and Java's garbage collection. The Java developer does not have to worry about his application crashing and what-not. And it just occurred to me. I see more crashes with Java servers and systems than I could ever imagine with systems that were built with C++ or C. I don't think I have worked at a Java shop where they don't periodically reboot their Java application servers. Does this happen with Apache/PHP driven applications? Shrug? . I don't want to get into that debate, but it is the reality in the J2EE/Java world that the Java virtual machine is not immune to crashes or the dreaded 'Out of Memory' Errors. But like everything in life, there are no guarantees, right?. The ...

Working on a new programming language (octanelang)

I have had it. I am done with the current set of programming languages and writing my own. Maybe it is an effort in futility but I am frustrated enough to give it a go. There is always something missing from the language I am using. I don't have the full details yet, but here are some must haves: 1. Must be scripting and compilable/bundled language. 2. Must have a separate virtual machine runtime with garbage collector. 3. Must have a command console 4. Must be well documented, have document code generator Default External libraries and applications: 1. Application Web Server 2. Games 3. (optional) Text Editor, Development Environment 4. Network and web libraries -----