<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:m = 
"http://schemas.microsoft.com/office/2004/12/omml"><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 9.00.8112.16434">
<STYLE>@font-face {
        font-family: Calibri;
}
@page WordSection1 {size: 612.0pt 792.0pt; margin: 70.85pt 3.0cm 70.85pt 3.0cm; }
P.MsoNormal {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt; mso-fareast-language: EN-US
}
LI.MsoNormal {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt; mso-fareast-language: EN-US
}
DIV.MsoNormal {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt; mso-fareast-language: EN-US
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.EstiloCorreo17 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: windowtext; mso-style-type: personal-compose
}
.MsoChpDefault {
        FONT-SIZE: 10pt; mso-style-type: export-only
}
DIV.WordSection1 {
        page: WordSection1
}
</STYLE>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></HEAD>
<BODY lang=ES-CL vLink=purple link=blue>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>This reminds me of&nbsp;a project I once, some 20 or 
more&nbsp;years ago,&nbsp;did for converting SPSS system files from CDC6400 and 
CDC205 to SPSS system files to IBM9000. Unfortunately CDC has gone down shortly 
after.&nbsp;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&nbsp;(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&nbsp;and their labels&nbsp;(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&nbsp;recovered.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>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:</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>1: The foreign interface of Racket gives full access to 
all alien formats of data.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>2: Scheme, especially Racket, provides a very reliable 
representation of data. Also it provides very high hygiene.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>3: Most important: Racket allows a very quick 
implementation of algorithms based on data structure (see 
HtDP)</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>4: Although PLT Racket does (not yet) claim 
to&nbsp;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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>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&nbsp;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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011>Kind regards, Jos</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=366093610-20082011></SPAN></FONT>&nbsp;</DIV><BR>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> users-bounces@racket-lang.org 
[mailto:users-bounces@racket-lang.org] <B>On Behalf Of </B>gonzalo 
diethelm<BR><B>Sent:</B> sábado, 20 de agosto de 2011 0:08<BR><B>To:</B> 
users@racket-lang.org<BR><B>Subject:</B> [racket] Racket in the 
large<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV class=WordSection1>
<P class=MsoNormal><SPAN lang=EN-US>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.<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>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 Graham’s 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.<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>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…<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>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!<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>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?<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>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)?<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>[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.]<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>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 don’t hear 
of more success stories using it, other than Paul Graham’s (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)?<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>I really would appreciate (and am thankful 
for) any insight coming from the illustrious people on this list. Best 
regards.<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal><SPAN style="mso-fareast-language: ES-CL" lang=EN-US>-- 
<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="mso-fareast-language: ES-CL" lang=EN-US>Gonzalo 
Diethelm<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P></DIV>
<P>
<HR SIZE=1>

<P></P>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.
<P></P>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.</BODY></HTML>