On May 10, 2014, at 8:42 AM, Konrad Hinsen wrote: > Hi everyone, > > I just published a blog post about my first experiences with Racket: > > http://khinsen.wordpress.com/2014/05/10/exploring-racket/ > > Comments welcome. > > This is also a good occasion to thank everyone on this list who has > helped me by answering questions during the last few months.
Hi Konrad, thanks for the post. It is quite illuminating because I wouldn't have thought that we're that close to 'performant' in this domain. Here are some detailed comments: 1. You write that "the hallmark of the Lisp family is that programs are defined in terms of data structures rather than in terms of a text-based syntax." No! This is a common misunderstanding, and I beg you not to repeat it. In order to turn a Racket (Lisp, Scheme) program into Rackete data, you to perform (roughly) the following actions: add '( to the beginning of the program and add ) to its end. In order to turn a Python (C, Java) program into a piece of Python data, you need to add " to its beginning and " to its end. I am ignoring module or package structure here. The difference between those two methods is the amount of parsing left to the implementation. The Lisp method gives you naturally structured data; a compiler or interpreter can make sense of this data w/o much parsing effort. The Python method gives you "flat" unstructured data, meaning that implementation needs full-fledged parsing. But that's it. Other than that, you could use the exact same techniques to execute the program. (And people do so.) 2. Next you say "Racket’s macro system feels more like a programming API for the compiler." With this sentence you are hitting the nail on the head. We don't think of Racket's syntax system as a 'macro' system and I personally do not use the phrase. Instead I say 'syntax system' and when asked I call it a compiler API. 3. Well, minor point but when you state that "I am aware of only three other languages developed in a similar context: OCaml, Haskell, and Scala." please do keep in mind that GHC is a Microsoft product, OCaml comes from INRIA, which compares to a university the way Versaille compares to a MacMansion in a Dallas suburb. Scala definitely shares the academic group pedigree and differs now from Racket because Martin Odersky took a commercial time-out and placed Scala on a firm industrial grounding (which was possible due to the JVM anchor). But yes, these are all research labs. 4. There are some generic data interfaces (see dictionary) and generic operations but yes, Racket is more 'static' (in the sense of differentiating) than many scripting language. We have discussed making the successor of Racket (Racket II) more generic and developing a hardening philosophy that helps programmers inject the distinctions once they are happy with the result the way people are now encouraged to inject types into untyped programs. The differentiations help programmers discover bugs early but in a homogeneous domain such as matrix calculations, this may not help and actually hinder. 5. Next I don't know what I am talking about and I am off-line so who knows how this will come out. You write > What I miss most is access to my data in HDF5 and netCDF formats. And the > domain-specific code for molecular simulation, i.e. the equivalent of my own > Molecular Modeling Toolkit. Porting the latter to Racket would be doable (I > wrote it myself, so I am familiar with all the algorithms and its pitfalls), > and would in fact be an opportunity to improve many details. But interfacing > HDF5 or netCDF sounds like a lot of work with no intrinsic interest, at least > to me. Could you port your framework and use the FFI to get data via some existing HDF5 and net CDF library for now? 6. In response to your assumption whether > given Racket’s academic and teaching background, it is quite possible that > there are lots of students using Racket who find sufficient support locally > that they never manifest themselves on the mailing list. We have separate educational mailing lists for instructors, and we never see any of the 300-400 students from Northeastern alone that use Racket on a semesterly basis. Most of these students never figure out that there is a 'user' mailing list :-) When I teach I tell them that they are learning 'design' and they don't know anything about Racket, which is true. We have local means to help students (mailing lists, blackboard, TAs). NEU is only one of many universities and high schools that use Racket. We estimate that to this day the vast majority of our 100,000 yearly downloads are educational and we are pretty sure that the very vast majority of them (up to an epsilon) never show up on the 'user' list, due to 'local' support. Finally, > Even though the Racket community looks small compared to other languages I > have used, it is big and healthy enough to ensure its existence for many > years to come. That's the goal. And we need people like you to push Racket forward. We really want it to be a wide-spectrum language both in terms of users as well as in terms of linguistic and software-engineering structure. -- Matthias ____________________ Racket Users list: http://lists.racket-lang.org/users