<!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 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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=366093610-20082011></SPAN></FONT> </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> </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> </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> </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> </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> </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 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> </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> </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 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> </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> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=366093610-20082011></SPAN></FONT> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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>