source: project/promotional/flyer/flyer.tex @ 31675

Last change on this file since 31675 was 31675, checked in by sjamaan, 7 years ago

flyer: Use official capitalization of CHICKEN

File size: 7.8 KB
Line 
1%%
2%% A flyer for promoting CHICKEN Scheme!
3%%
4
5%% Add 'notumble' to preview in xdvi or preview in pdf without having to
6%% stand on your head to read page 2
7\documentclass[10pt,a4paper,notumble]{leaflet}
8%\documentclass[10pt,a4paper]{leaflet}
9
10\usepackage{slatex-chicken}
11\usepackage{graphics}
12\usepackage{color}
13
14\definecolor{maroon}{rgb}{0.5,0,0}
15\definecolor{darkgreen}{rgb}{0,0.3,0}
16\definecolor{darkblue}{rgb}{0,0,0.4}
17
18% TeX2page-like coloring for SLaTeX
19\def\keywordfont#1{\textbf{\textcolor{maroon}{#1}}}
20\def\variablefont#1{\textcolor{darkblue}{#1}}
21\def\constantfont#1{\textcolor{darkgreen}{#1}}
22
23\makeatletter
24\renewcommand{\section}{\@startsection
25  % Name, sectioning level, indent from margin, beforeskip, afterskip, style
26  {section}{1}{0mm}{\baselineskip}{\baselineskip}
27  {\centering\large\sffamily\bfseries}
28}
29
30\renewcommand{\subsection}{\@startsection
31  {subsection}{2}{0mm}{0.5\baselineskip}{0.5\baselineskip}
32  {\centering\small\sffamily\bfseries}
33}
34\makeatother
35
36%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37
38\begin{document}
39
40\begin{center}
41  \Huge\textbf{CHICKEN Scheme}\\
42  \normalsize\textsc{A practical and portable Scheme system}
43  \vskip 0pt plus 1fill
44  \includegraphics[height=0.8\textwidth]{chicken-colored-no-text}
45  {\large \bf http://www.call-cc.org/}
46  \vskip 0pt plus 1fill
47\end{center}
48
49
50\section{What is CHICKEN Scheme?}
51
52CHICKEN is a \emph{robust} and \emph{mature} compiler for the
53programming language \emph{Scheme}. CHICKEN has been around for over
5410 years now, and has a growing group of dedicated users.
55
56The system compiles to \emph{C}, which allows it to generate
57\emph{fast, portable code}. For easy development it also includes a
58powerful interpreter.
59
60CHICKEN is above all a \emph{practical} system; there are literally
61\emph{hundreds} of extension libraries (known as ``eggs'') available
62to help you get some real work done!  There are extensions for web
63development, concurrency and parallelism, cryptography, scientific
64computing and much, much more.
65
66All of the major platforms are supported, including GNU/Linux, the
67BSDs, MacOS X and Windows.  It has also been ported to mobile
68platforms like iOS and Android.
69
70\section{What is Scheme?}
71
72Scheme is a truly \emph{elegant and minimal} programming language
73which directly descends from Lisp, the \emph{second oldest}
74high level programming language still in use. But don't be fooled
75by that: It's still as fresh today as when it was first created!
76
77\begin{center}
78\includegraphics[angle=-90,width=8cm]{different}
79\end{center}
80
81It has very simple syntax so it is \emph{easy to learn}. This also
82makes it a very powerful tool: writing extensions to the language can
83be done right from \emph{within} the language, allowing you to
84\emph{mold the language} to better fit your program's
85domain. User-added functionality is treated no different from
86``built-in'' functionality.
87
88Scheme is well-known as a \emph{functional} programming language, but
89it's more accurately described as a \emph{multi-paradigm} language.
90Sure, you can program in a functional style, but also in all flavors
91of object-oriented, logical, distributed and even imperative styles.
92If tomorrow a new cool style of programming is invented, Schemers
93won't need to switch languages. Instead, they can just add it to their
94favorite language!
95
96\pagebreak
97\section{So, why CHICKEN and not {\mdseries\itshape$<$insert~Scheme~here$>$?}}
98
99Scheme is such a minimalist and easy to parse language that there are
100\emph{thousands} of implementations. However, implementing a
101\emph{good} Scheme is nontrivial. Of the implementations that are not
102toys, we prefer CHICKEN because it:
103
104\begin{itemize}
105\item sticks to the original minimalist spirit of Scheme
106\item produces \emph{fast} code
107\item has a growing number of useful libraries for real-world tasks
108\item integrates very easily with C
109\item has been actively maintained for more than 10 years
110\item has an energetic and enthusiastic community!
111\end{itemize}
112
113\section{What is CHICKEN Scheme used for?}
114
115Scheme is a general purpose language, so your imagination is the limit!
116Here are just a few examples:
117
118The ease of integrating C libraries and the rapid turnaround offered
119by the interpreter make CHICKEN a great prototyping platform.
120
121Many of us automate our sysadmin tasks with CHICKEN.
122
123It's easy as pie to make web apps with CHICKEN's web server
124\emph{Spiffy} and the web framework \emph{Awful}. Our wiki is
125a good example of this.
126
127You can also generate static web pages using \emph{Hyde}, which
128several community members use for their blogs.
129
130You can analyze data with our great database support and visualize it
131with \emph{GNU Octave} or render graphs to \emph{X11},
132\emph{SDL} or \emph{OpenGL} windows or \emph{PDF} documents.
133
134This very flyer was produced with {S\LaTeX}, a {\LaTeX} preprocessor
135which typesets Scheme code blocks with syntax-highlighting. Written in
136Scheme, of course.
137
138
139\section{Show me some examples!}
140
141\subsection{Hello world}
142
143How boring can it be?
144
145\begin{schemedisplay}
146(print "Hello, world!")
147\end{schemedisplay}
148
149\subsection{Obligatory factorial program}
150
151Slightly less boring than the hello world program:
152
153\begin{schemedisplay}
154(define fac
155  (lambda (n)
156    (if (= n 0)
157        1
158        (* n (fac (- n 1))))))
159
160(define number
161  (string->number (car (command-line-arguments))))
162(print "The factorial of " number " is " (fac number))
163\end{schemedisplay}
164
165\subsection{Integrating Scheme with C}
166
167\begin{schemedisplay}
168(define log10
169  (lambda (x)
170    (/ (log x) (log 10))))
171
172;; The same using log10 from C:
173(foreign-declare "#include <math.h>")
174
175(define log10-from-c
176  (foreign-lambda* double ((double x))
177    "double y;"
178    "y = log10(x);"
179    "C_return(y);"))
180
181;; Shorter versions:
182(define (log10 x) (/ (log x) (log 10)))
183(define log10-from-c
184  (foreign-lambda double "log10" double))
185\end{schemedisplay}
186
187% The example is a little contrived and maybe not too convincing
188
189As you can see, calling C functions is quite easy.  If you have longer
190C code, you can also write your functions in a separate C file and
191compile those against your CHICKEN program. You can just call those
192functions from CHICKEN.
193
194\section{Cool, I want to get started!}
195
196Great to have you on board! Chances are your operating system already
197packages CHICKEN Scheme. Try that first. Once you have it installed,
198you can try some code with the \textbf{C}hicken \textbf{S}cheme
199\textbf{i}nterpreter \emph{csi}.
200
201\begin{verbatim}
202$ csi
203
204CHICKEN
205(c) 2008-2014, The CHICKEN Team
206(c) 2000-2007, Felix L. Winkelmann
207Version 4.9.0.1 (stability/4.9.0) (rev 8b3189b)
208linux-unix-gnu-x86 [ manyargs dload ptables ]
209bootstrapped 2014-06-07
210
211#;1> (print "Welcome to CHICKEN Scheme!")
212Welcome to CHICKEN Scheme!
213#;2> (* 3 (+ 3 4) (/ 4 2))
21442
215#;3> ,q ; quits
216\end{verbatim}
217
218If you aren't familiar with Scheme yet, you can check out the
219extensive list of books at {\tt http://www.schemers.org/}.
220For CHICKEN Scheme specific documentation, try our wiki.
221
222For CHICKEN Scheme specific questions there is a newbie-friendly
223mailing list \emph{chicken-users@nongnu.org}.
224
225The CHICKEN Team is also reachable on Freenode's IRC, channel
226\#chicken.  This channel has many helpful people who are friendly to
227beginners, so don't be afraid to join!
228
229\pagebreak
230
231\section{CHICKEN Scheme on the net}
232\begin{tabular}{ll}
233Main site:& {\tt http://www.call-cc.org/}\\
234Code:& {\tt http://code.call-cc.org/}\\
235Chat: &{\tt \#chicken at irc.freenode.org}\\
236Documentation:& {\tt http://wiki.call-cc.org/}\\
237About Scheme:& {\tt http://www.schemers.org/}\\
238\end{tabular}
239
240\vskip 5cm
241
242\begin{center}
243\includegraphics[width=4cm]{continuation_guild_fighters}
244\end{center}
245
246
247\vskip 0pt plus 1fill
248{\small The CHICKEN Logo has been made by Joshua Griffith. The other
249  images are drawn by Conrad Barski, used with his kind
250  permission. Also have a look at his book \emph{``Land of Lisp''} on
251  {\tt http://www.landoflisp.com/}}
252
253{\footnotesize
254\hbox to \hsize{\hss Last updated October 2014\@.}
255\par}
256
257
258\end{document}
Note: See TracBrowser for help on using the repository browser.