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

Last change on this file since 31676 was 31676, checked in by sjamaan, 5 years ago

flyer: Add "you can use it as platform-indepent language for mobile development" item to the list of ideas what to use it for

File size: 7.9 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
130CHICKEN can be used as a platform-indepent language for business logic
131in mobile apps, to reduce development time.
132
133You can analyze data with our great database support and visualize it
134with \emph{GNU Octave} or render graphs to \emph{X11},
135\emph{SDL} or \emph{OpenGL} windows or \emph{PDF} documents.
136
137This very flyer was produced with {S\LaTeX}, a {\LaTeX} preprocessor
138which typesets Scheme code blocks with syntax-highlighting. Written in
139Scheme, of course.
140
141
142\section{Show me some examples!}
143
144\subsection{Hello world}
145
146How boring can it be?
147
148\begin{schemedisplay}
149(print "Hello, world!")
150\end{schemedisplay}
151
152\subsection{Obligatory factorial program}
153
154Slightly less boring than the hello world program:
155
156\begin{schemedisplay}
157(define fac
158  (lambda (n)
159    (if (= n 0)
160        1
161        (* n (fac (- n 1))))))
162
163(define number
164  (string->number (car (command-line-arguments))))
165(print "The factorial of " number " is " (fac number))
166\end{schemedisplay}
167
168\subsection{Integrating Scheme with C}
169
170\begin{schemedisplay}
171(define log10
172  (lambda (x)
173    (/ (log x) (log 10))))
174
175;; The same using log10 from C:
176(foreign-declare "#include <math.h>")
177
178(define log10-from-c
179  (foreign-lambda* double ((double x))
180    "double y;"
181    "y = log10(x);"
182    "C_return(y);"))
183
184;; Shorter versions:
185(define (log10 x) (/ (log x) (log 10)))
186(define log10-from-c
187  (foreign-lambda double "log10" double))
188\end{schemedisplay}
189
190% The example is a little contrived and maybe not too convincing
191
192As you can see, calling C functions is quite easy.  If you have longer
193C code, you can also write your functions in a separate C file and
194compile those against your CHICKEN program. You can just call those
195functions from CHICKEN.
196
197\section{Cool, I want to get started!}
198
199Great to have you on board! Chances are your operating system already
200packages CHICKEN Scheme. Try that first. Once you have it installed,
201you can try some code with the \textbf{C}hicken \textbf{S}cheme
202\textbf{i}nterpreter \emph{csi}.
203
204\begin{verbatim}
205$ csi
206
207CHICKEN
208(c) 2008-2014, The CHICKEN Team
209(c) 2000-2007, Felix L. Winkelmann
210Version 4.9.0.1 (stability/4.9.0) (rev 8b3189b)
211linux-unix-gnu-x86 [ manyargs dload ptables ]
212bootstrapped 2014-06-07
213
214#;1> (print "Welcome to CHICKEN Scheme!")
215Welcome to CHICKEN Scheme!
216#;2> (* 3 (+ 3 4) (/ 4 2))
21742
218#;3> ,q ; quits
219\end{verbatim}
220
221If you aren't familiar with Scheme yet, you can check out the
222extensive list of books at {\tt http://www.schemers.org/}.
223For CHICKEN Scheme specific documentation, try our wiki.
224
225For CHICKEN Scheme specific questions there is a newbie-friendly
226mailing list \emph{chicken-users@nongnu.org}.
227
228The CHICKEN Team is also reachable on Freenode's IRC, channel
229\#chicken.  This channel has many helpful people who are friendly to
230beginners, so don't be afraid to join!
231
232\pagebreak
233
234\section{CHICKEN Scheme on the net}
235\begin{tabular}{ll}
236Main site:& {\tt http://www.call-cc.org/}\\
237Code:& {\tt http://code.call-cc.org/}\\
238Chat: &{\tt \#chicken at irc.freenode.org}\\
239Documentation:& {\tt http://wiki.call-cc.org/}\\
240About Scheme:& {\tt http://www.schemers.org/}\\
241\end{tabular}
242
243\vskip 5cm
244
245\begin{center}
246\includegraphics[width=4cm]{continuation_guild_fighters}
247\end{center}
248
249
250\vskip 0pt plus 1fill
251{\small The CHICKEN Logo has been made by Joshua Griffith. The other
252  images are drawn by Conrad Barski, used with his kind
253  permission. Also have a look at his book \emph{``Land of Lisp''} on
254  {\tt http://www.landoflisp.com/}}
255
256{\footnotesize
257\hbox to \hsize{\hss Last updated October 2014\@.}
258\par}
259
260
261\end{document}
Note: See TracBrowser for help on using the repository browser.