On Wednesday I gave a presentation to the Montreal Scheme and Lisp Users Group (MSLUG) on translating Scheme to Cat. Overall I feel the presentation was well-received, but I made the mistake of bringing too many slides, so I ran out of time. The power point presentation can be found at http://cat-language.com/scheming_cats_2.ppt. Dominique Boucher, who does a great job of organizing the MSLUG, posted some pictures and a brief summary of the different presentations online at http://theschemeway.blogspot.com/2007/08/great-mslug-meeting.html. The other presentations were very interesting as well.
I have posted various thoughts and reflections on the Cat mailing list in response to some of the questions and suggestions brought up during and after the meeting.
Comments Off
A couple of years ago I had the bright idea of translating an intermediate language into Haskell. This way I thought I would know that was safe if the haskell compiler accepted the code I gave. And because haskell inferred types, I didn’t even have to bother giving it types annotations. “Aren’t I clever?” I thought, I’d get type inference and type checking for free in my higher level language. Unfortunately that doesn’t work, because I later found out that Haskell can’t infer recursive types.
So as a result of all this, I had to go build my own type inferred langauge from scratch that could handle recursive types. This lead to the current version of Cat language.
Comments Off
Recently on the Concatenative mailing list the paper: Linear Logic and Permutation Stacks: The Forth Shall be First by Henry Baker was referenced when talking about two new concatenative languages: Furphy (http://member.netlink.com.au/~peterl/furphy.htm) and Catenate (no site available).
This paper was also referenced not too long ago on Lambda-the-Ultimate.org (http://lambda-the-ultimate.org/node/2112) in reference to use a logic language to express contracts.
Comments Off
Some of the most interesting posts and discussions on Lambda-the-Ultimate.org in the past have been by Frank Atanassow. I haven’t seen many posts by him lately, but many of his old posts keep getting referenced. They are good reading and quite educational. All of Frank’s posts at LtU can be found at: http://lambda-the-ultimate.org/user/742/track.
One of Frank’s old posts which caught my attention recently was advice for a programming language designer. Some of Frank’s advice:
Go study Scheme and Prolog and ML and Haskell and Charity and Lucid Synchrone and OBJ and Erlang and Smalltalk. Look at Epigram or Coq or HOL or LEGO or Nuprl. Aside from Java, these are the important ones. If you are familiar with all of these, then you are in a decent position. If you have only ever programmed in C/C++/Java and Lisp and scripting languages, you have been sitting in a corner your whole life. Perl, Python, Ruby, PHP, Tcl and Lisp are all the same language. (Scheme itself is only interesting for hygienic macros and continuations.)
At first glance it appears to be an eclectic grouping of langauges that Frank chose, however you can be sure that there is very good reason why he listed each and every langauge that he did. Frank is a very smart fellow and is generally very thoughtful in what he says.
My own list of languages is different: C++, SKI calculus, Lambda calculus, Scheme, Joy, Prolog, Perl, Haskell, AspectJ, Eiffel, Python, and JavaScript. I’m perhaps less interested in theory, and more interested in software development than Frank is, but that is only my speculation.
Comments Off
I’ve just released version 0.17.0 of Cat. The announcement is here on the Cat mailing list.
Comments Off
I have written a new Wiki page about contributing to Cat: http://code.google.com/p/cat-language/wiki/ContributingToCat. The main point I wanted to make is that I am happy to have contributors, but I am especially interested in people creating their own implementations or dialects of Cat. Managing the Cat project requires a lot of time, and the core language has special needs and requirements that won’t be appropriate for everyone. Many times it will be easier to just fork the project (it is public domain after all) rather than petition me for new features. Some people feel my language design approach leans towards the bondage and discipline style.
I am also hoping that I can make it easier for people to contribute to the core Cat project even if they have very little programming experience. A big problem mentioned about many open-source projects, is that it is hard for beginners to make useful contributions, and to be assured that they will get anything concrete out of contributing to an open-source project. I have decided to try and address the issue.
On the ContributingToCat wiki page I have a list of steps a beginner should take, in order to start progress towards becoming a contributor. I am also offering, to contributors who are interested, mentor services. If you commit regular time to the Cat project, I would like to commit some of my own time to working with you one-on-one, helping you gauge your progress and giving you guidance and help (if you want).
This is a bit of an experiment, so I’d be curious to hear your thoughts either publicly (http://groups.google.com/group/catlanguage) or privately (cdiggins@gmail.com).
Also note: I have started an acknowledgements page on the Wiki. Please let me know if you feel left out, or my attribution is inaccurate. Even if you aren’t listed, but have discussed Cat with me publicly or privately, I will be happy to write a letter for you acknowledging your contributions.
Comments Off
I was recently asked “What’s the best way to begin as a programmer?”. If you are a student, then there are usually a lot of resources at your disposal. For example, I started by looking for small programming jobs around the university, and taking programming summer jobs which were posted at the local undergraduate comptuer society. If you are looking for answers to this question on the net, then I doubt you are a student.
However, there are countless open-source projects on the web though where you can increase your programming experience, even if you are just starting out. It can be hard to contribute useful code to a sophisticated project when you are too inexperienced at programming but there are many other ways you can improve your programming skills and gain experience.
- Testing
- Documenting
- Installing
- Building
In all of these cases there is a lot of reading and writing of code to be done. Especially if you make an effort to look for ways to use coding to automate your tasks. Not only will this make you a better programmer, it will really help your resume shine when looking for employment.
Comments Off
Well I arrived two days ago after traveling across the United States by minivan. I had limited access to the internet and my blog comments got spam-bombed. Lots of people also had problems previously with leaving comments because word-press wouldn’t inform them (or me) if their comments were being held for moderation. The final problem was that Wordpress comment formatting was just awful.
I’ve decided to disable blog comments and encourage everyone to start using either email ( cdiggins@gmail.com ) or the Cat discussion group ( http://groups.google.com/group/catlanguage ).
While I was travelling I managed to make a release of 0.16.1 of Cat, but in ZIP file format only. I made some major improvement to the graphics performance.
More news to come soon.
Comments Off