İşlemeleri karşılaştır

..

3 İşleme

Yazar SHA1 Mesaj Tarih
tTh
6c2d6476b8 new chapter: Basic 2023-03-03 21:27:18 +01:00
tTh
6546d1d5c0 add a TODO 2023-03-03 20:21:15 +01:00
tTh
a47c1f6d7a bricolages... 2023-02-11 12:19:00 +01:00
17 değiştirilmiş dosya ile 185 ekleme ve 23 silme

65
chap/Basic.tex Normal dosya
Dosyayı Görüntüle

@ -0,0 +1,65 @@
% ----------------------------------------------------------
\chapter{Basic}
\index{dosbox}\label{chap:Basic}
% -------------------------------------------
\section{BASIC} \index{BASIC}
C'est probablement un des premiers langages interactifs utilisable par le
peuple et les gens. Déja, à ce titre, dénonce que ce langage
demande un peu de curiosité, il a traversé soixante ans
d'informatique, et il existe enore.
Mais pour moi, le véritable intérèt
est dans la multitude et la diversité des implémentations.
Des minis catatoniques des années 60 aux micros-ordinateurs 8 bits,
des dizaines de versions souvent incompatibles ont vues le jour.
Un nom ? « Locomotive », ça ira ?
Dans un premier temps, je vais les lister sommairement, et
ensuite j'aurais une idée sur lesquels seront les plus funs
à explorer.
% -------------------------------------------
\section{Bywater} \index{bywater}
\begin{verbatim}
Bywater BASIC Interpreter/Shell, version 2.10
---------------------------------------------
Copyright (c) 1993, Ted A. Campbell
for bwBASIC version 2.10, 11 October 1993
\end{verbatim}
Le mode interactif me semble un peu rustre, mais utilisable à l'ancienne.
Les messages d'erreur sont du genre \textsc{bdos error on a}.
Je n'ai pas réussi à faire une sauvegarde du programme\footnote{J'ai
renoncé au bout de 30 secondes}, ce qui limite son \textsl{utilisability}.
Heureusement, on peut utiliser son éditeur de texte favori pour écrire
le code source, et le lancer en mode batch. Voici un exemple rudimentaire
mais canonique~:
\lstinputlisting{code/Basic/bywater-1.bas}
Première conclusion : affaire à suivre.
% -------------------------------------------
\section{Yabasic} \index{yabasic}
Première innovation, les numéros de ligne ne sont plus obligatoires.
\lstinputlisting{code/Basic/yabasic-1.bas}
Et on peut faire des images qui clignotent :)
\lstinputlisting{code/Basic/yabasic-2.bas}
% -------------------------------------------
\section{Et ailleurs ?}
L'interpréteur \texttt{Qbasic} de Microsoft fonctionne très bien
dans Dosbox~: à lire en page \pageref{Qbasic}. Son prédécesseur,
\texttt{GWBASIC} marche très bien aussi.
% -------------------------------------------
% -------------------------------------------

Dosyayı Görüntüle

@ -252,12 +252,12 @@ int fprintf(FILE *stream, const char *format, ...);
Ce qu'on appelle un "filtre" est un logiciel destiné à transformer
les données qui le traversent. Pour bien comprendre, le mieux,
comme d'habitude, est un exemple. Il est un peu artificiel,
il s'agit d'éliminer les lettres \textsc{o} et \textsc{p}.
Le voici~:
car il s'agit d'éliminer les lettres \textsc{o} et \textsc{p},
sans raison valable. Le voici~:
\lstinputlisting[language=c]{code/no-op.c}
\lstinputlisting[language=c]{code/C/no-op.c}
Démonstration~:
Démonstration immédiate~:
\begin{verbatim}
$ echo apopoz | ./no-op
@ -271,6 +271,16 @@ $ ./no-op < no-op.c | head -5
$
\end{verbatim}
Vous voulez un autre exemple ? En voici un, parfois utile pour des
simulations de terminal de \textsl{h4ck3rZ}\footnote{texte vert ou
orange sur fond noir de rigueur.} sur une ligne en boucle de
courant à 300 Bauds, le tout pour un film que l'on souhaite classable
en série Z.
\lstinputlisting[language=c]{code/C/slowprint.c}
\vspace{2em}
Pour une explication plus détaillée sur les mécanismes
utilisés et les usages possibles d'un tel filtre,
il faut voir le concept de pipeline du shell en

Dosyayı Görüntüle

@ -224,9 +224,9 @@ D'accord, mais dessiner quoi ?
\end{itemize}
% --------------------------------------------------------
\section{Reponses}
\section{Réponses}
\textsl{<none>}
\textsl{<Pas de réponse>}

Dosyayı Görüntüle

@ -31,7 +31,9 @@ keyb fr
\section{In an Out}
\textbf{Q:} J'ai téléchargé un warez de Qbasic pour jouer avec,
\textbf{Q:} J'ai téléchargé un warez de Qbasic\footnote{%
cf. page \pageref{chap:Basic}}
pour jouer avec,
le l'archive 7z ne contient qu'un fichier \texttt{.img}.
Que puis-je faire pour jouer enfin à snake ?
@ -75,6 +77,9 @@ juste pour constater que c'est un peu technique.
merveilles de l'ancien temps.
% ----------------------------------------------------------
\section{Qbasic} \index{Qbasic} \label{Qbasic}
% ----------------------------------------------------------

Dosyayı Görüntüle

@ -86,3 +86,15 @@ indoor.gif: $(DEPS)
% ==================================================================
\section{gifsicle}
'Gifsicle' manipulates GIF images. Its most common uses include combining
single images into animations, adding transparency, optimizing animations for
space, and printing information about GIFs.
% ==================================================================

Dosyayı Görüntüle

@ -7,28 +7,42 @@ Quelques \textsl{oneliners} de bon aloi pour vous donner
une idée du langage\dots
\begin{verbatim}
cat { print $0 } or just 1
grep pattern /pattern/
head -n 5 NR <= 5
cut -f1 { print $1 }
tr a-z A-Z { print toupper($0) }
sed 's/hi/ho/g' gsub(/hi/,"ho")
wc -l END { print NR }
cat { print $0 } or just 1
grep pattern /pattern/
head -n 5 NR <= 5
cut -f1 { print $1 }
tr a-z A-Z { print toupper($0) }
sed 's/hi/ho/g' gsub(/hi/,"ho")
wc -l END { print NR }
\end{verbatim}
Vous pouvez déja constater une certaine élégance portée par une
grande simplicité logique, une sorte d'axiome de base, de
méthologie très \textsc{kiss} :
on va procéder en quelque sorte « demi-dalle par demi-dalle ».
% ===============================================================
\subsection{Un exemple simple}
À partir d'un jeu de données structurées, nous allons générer un
fichier \texttt{.inc} contenant un objet pour Povray\index{Povray}.
Un cas d'école : un élément par ligne, les valeurs séparées par
Un cas d'école : un élément par ligne, les valeurs sont séparées par
des espaces.
\lstinputlisting[]{code/awk/dataset}
Ces données sont les coordonnées \textsc{xyz} et le rayon d'une
Ces données sont les coordonnées \textsc{x,y,z} et le rayon d'une
petite collection de bubulles. Pratiquement, une représentation
sommaire d'une sphère de povray.
sommaire d'une sphère de povray\footnote{SDL keyword: \texttt{Sphere}}.
Le fichier à générer est en trois partie : l'en-tête, la liste
des bubulles\index{bubulle} et l'en-pied, ce qui est bien raccord
avec la structure de déroulement d'un script Awk, comme nous allons
le voir ici-même~:
\lstinputlisting[]{code/awk/mkunion.awk}
% XXX to be continued XXX
% ===============================================================

3
code/.gitignore sağlanmış
Dosyayı Görüntüle

@ -12,7 +12,8 @@ foo
get-signal
hello
listen-osc
no-op
C/no-op
C/slowprint
*.o
plugiciel.so
send-osc

0
code/Basic/README.md Normal dosya
Dosyayı Görüntüle

4
code/Basic/bywater-1.bas Normal dosya
Dosyayı Görüntüle

@ -0,0 +1,4 @@
10 CLEAR
20 FOR I=1 TO 10
30 PRINT I, I*I
40 NEXT I

3
code/Basic/yabasic-1.bas Normal dosya
Dosyayı Görüntüle

@ -0,0 +1,3 @@
for i=1 to 10
print i, i*i
next

5
code/Basic/yabasic-2.bas Normal dosya
Dosyayı Görüntüle

@ -0,0 +1,5 @@
open window 511,511
for x=10 to 495 step 5:for y=10 to 495 step 5
colour x/2,y/2,0
fill rectangle x,y,x+5,y+5
next y:next x

10
code/C/Makefile Normal dosya
Dosyayı Görüntüle

@ -0,0 +1,10 @@
# exemples pour le chapitre sur le C
# new Sat Feb 11 12:06:34 CET 2023
no-op: no-op.c Makefile
gcc -Wall $< -o $@
slowprint: slowprint.c Makefile
gcc -Wall $< -o $@

Dosyayı Görüntüle

20
code/C/slowprint.c Normal dosya
Dosyayı Görüntüle

@ -0,0 +1,20 @@
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int c;
struct timespec ts;
ts.tv_sec = 0;
ts.tv_nsec = 115 * 1000 * 1000;
while ( EOF != (c=getchar()) )
{
putchar(c);
fflush(stdout);
nanosleep(&ts, NULL);
}
return 0;
}

Dosyayı Görüntüle

@ -16,9 +16,6 @@ hello: hello.c Makefile
arguments: arguments.c Makefile
gcc -Wall $< -o $@
no-op: no-op.c Makefile
gcc -Wall $< -o $@
voirenv: voirenv.c Makefile
gcc -Wall $< -o $@

15
code/awk/mkunion.awk Normal dosya → Çalıştırılabilir dosya
Dosyayı Görüntüle

@ -0,0 +1,15 @@
#!/usr/bin/awk -f
BEGIN {
print "#declare Bubules = object"
print "{ \nunion { "
}
{
printf(" sphere { <%f, %f, %f>, %f }\n", \
$1, $2, $3, $4 )
}
END {
}

Dosyayı Görüntüle

@ -26,7 +26,7 @@
%------ reglages des 'listings'
\lstset{frame=single} % dessin d'un cadre autour du listing
\lstset{basicstyle=\ttfamily\small}
\lstset{aboveskip=0.8em,belowskip=0.5em}
\lstset{aboveskip=1.2em,belowskip=1.2em}
\setcounter{tocdepth}{1}
\pagestyle{plain}
@ -130,6 +130,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/Fortran}
\input{chap/scripting}
\input{chap/Arduino}
\input{chap/Basic}
% \input{chap/GMP}
\input{chap/Python}