This reminds me of a project I once, some 20 or more years ago, did for converting SPSS system files from CDC6400 and CDC205 to SPSS system files to IBM9000. Unfortunately CDC has gone down shortly after. Different word size, different character encoding etc. Typically these system files were stored on magnetic tape, with or without labels. I designed a system for the conversion in natural language both for interpreting the labels and the data (may be interspersed with some pseudo code). The task to implement my design was given to a colleague who was confined to Cobol. The consequence was that I myself had to provide some code for binary reading of magnetic tapes and their labels (6 bit encoding to 8 bit encoding) and for the conversion of alphanumerical and numerical data from CDC to IBM EBCDIC. In the end it appeared to work very well. Many data that otherwise would have been lost, were recovered. This I mention in order to show that good understanding of the required processes is more important than the choice of the language, although cooperation between two or more languages may require additional interfaces. It remains a fact that using a LISP like language, in particular Racket, can reduce the time for development by at least a factor of 10. Four factors are important here: 1: The foreign interface of Racket gives full access to all alien formats of data. 2: Scheme, especially Racket, provides a very reliable representation of data. Also it provides very high hygiene. 3: Most important: Racket allows a very quick implementation of algorithms based on data structure (see HtDP) 4: Although PLT Racket does (not yet) claim to include a highly optimizing compiler, nowadays hardware allows me to use DrRacket to make computations that (for reason of time and/or memory) could not be made on supercomputers dating from 20 years ago. Even on the simple laptop I am using to send this email, I can do much more complicated computations than on a machine that 20 years ago was called a supercomputer. Nowadays supercomputers may include thousands of processors, usually each processor having its own memory and interconnected by fast interconnection network. I have hardly seen any machines with many processors sharing one single space of memory. Probably because of racing conditions. I sometimes have dreamt of a multiprocessor machine with one unified memory, possibly with addition of private memories for mutable data. When disallowing mutation on memory shared by multiple processors, there could be a good chance to develop multiprocessor machines running parts of a Racket program in parallel without requiring the user to specify which can and which cannot be done concurrently. For example you can imagine a Racket that computes the arguments of an application in parallel. For a single invocation of a procedure this does do not much, but think of arguments that themselves may call functions of arguments that can be computed concurrently. Kind regards, Jos
_____ From: users-boun...@racket-lang.org [mailto:users-boun...@racket-lang.org] On Behalf Of gonzalo diethelm Sent: sábado, 20 de agosto de 2011 0:08 To: users@racket-lang.org Subject: [racket] Racket in the large Hello everyone; this is my first post to this list. I present my apologies beforehand, because I know these kinds of topics can be easily misconstrued as trolling attempts or mental masturbation; all I can say in my favor is that these are real, honest questions on my part. If any part of this has been discussed before (and I cannot imagine it has not), please point me to the relevant places and I shall leave in peace; I must say I did go over the full Google Groups archive for this mailing list and could not find anything to answer my questions. I would like to start by saying that I have always had a strong attraction to Lisp-like languages. In the past years I have been reading on functional programming topics, specially about Scheme, the Y combinator, macros, Paul Grahams ramblings, etc., and I can say that I have finally come to understand the origins of my attraction: the purity, simplicity (of the basic concepts), elegance and power in functional programming (in general) and Scheme (in particular) are, in my view, unbeatable. So I declare myself an outright Scheme lover. In addition to that, my professional career has always been tied to programming and software engineering, because that is what I enjoy doing the most (as opposed to managing). I have had long stints (several years) of developing in C, C++ and Java. Incidentally, when I am programming in language X in that list, I usually find myself pining for language X-1 (from Java to C++, from C++ to C); but I digress The thing is, I must admit I have a secret desire and it is time to come out in the open: I want to leave those imperative languages behind and finally use Scheme for a real, in the large project There, I feel better now that I said that! So let me get to my point before I bore everyone here to death: can my desire be realistically fulfilled? Can Scheme (Racket) be used for a more enterprise-y project (console app, GUI app, web app, whatever, accessing data from any RDBMS in transactional ways) where I will have a team of developers working on separate parts of the system at the same time? How can Scheme (Racket) help me with the software engineering aspects of such a project? Has anybody here had any experience in projects similar to this? Which brings me to my second question: can Scheme (Racket) be used to develop all these different kinds of applications (console, GUI, etc.)? Can anybody point me to real life examples of each type of application developed with Scheme (Racket)? [In fact, I specifically came to Racket after having had a grand vision of being able to develop all the components for a web app (SQL to access the DB, business logic, HTML for presentation, CSS for styling, JS for interactivity, even XML for configuration) using a single unified language (or many small separate DSLs based on a single language) and I have been kind of surprised at not finding this idea fleshed out anywhere as a framework, library, module, etc.] I guess at the bottom of my questions lurks the following (and this is the non-trolling I was referring to before): if Scheme is the be-all and end-all of programming languages, how come I dont hear of more success stories using it, other than Paul Grahams (which, important as they are, in my view are not recent enough to provoke and inspire anymore)? Where are the flag web applications, GUI enterprise systems, even console applications, that have become watershed proofs of Scheme (Racket) as THE SINGLE BEST programming language there is (something of which I am 100% convinced)? I really would appreciate (and am thankful for) any insight coming from the illustrious people on this list. Best regards. -- Gonzalo Diethelm _____ Declaración de confidencialidad: Este Mensaje esta destinado para el uso de la o las personas o entidades a quien ha sido dirigido y puede contener información reservada y confidencial que no puede ser divulgada, difundida, ni aprovechada en forma alguna. El uso no autorizado de la información contenida en este correo podrá ser sancionado de conformidad con la ley chilena. Si usted ha recibido este correo electrónico por error, le pedimos eliminarlo junto con los archivos adjuntos y avisar inmediatamente al remitente, respondiendo este mensaje. Disclosure: This Message is to be used by the individual, individuals or entities that it is addressed to and may include private and confidential information that may not be disclosed, made public nor used in any way at all. Unauthorized use of the information in this electronic mail message may be subject to the penalties set forth by Chilean law. If you have received this electronic mail message in error, we ask you to destroy the message and its attached file(s) and to immediately notify the sender by answering this message.
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users