Cómo trabajar con software libre - Departamento de Computación

C´omo trabajar con software libre
Dr. Luis Gerardo de la Fraga
Departamento de Computaci´
on
Cinvestav
Correo-e: [email protected]
4 de noviembre, 2014
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
1/55
Contenido
1. Motivaci´on
2. La lista de herramientas
3. M´etodo de trabajo en GNU/Linux
4. Descripci´on de cada una de las herramientas
5. Conclusiones
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
2/55
Motivaci´on
Mostrar las herramientas de trabajo diario en GNU/Linux
La lista de herramientas est´a basada en mi experiencia
personal
Yo he trabajado m´as de 20 a˜
nos (desde 1993) con software
libre
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
3/55
Las herramientas que veremos
Herramienta
LATEX
gnuplot
xfig
ImageMagick
latex2html
perl
python
maxima
octave
Dr. Luis Gerardo de la Fraga
Uso
Formateador de texto para crear documentos, presentaciones
Crear gr´aficas
Para crear figuras
Para editar im´agenes
Para crear p´aginas WEB con ecuaciones
Programaci´
on de alto nivel
Programaci´
on de alto nivel
Manipulaci´
on simb´
olica
Para algebra lineal. Usa la misma sintaxis
que Matlab
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
4/55
M´etodo de trabajo en GNU/Linux
Excepto xfig todas las dem´as herramientas no tienen una
interfaz gr´afica
Se necesita usar un editor de texto, generar un script y usar el
comando de la herramienta sobre ese script
Los editores cl´asicos son emacs y vi
La curva de aprendizaje es m´as lenta y se realiza un mejor
trabajo cuando se conoce m´as de cada herramienta
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
5/55
Un archivo b´asico de LATEX:
Este es un archivo de prueba
\documentclass{article}
\begin{document}
\Huge
Este es un archivo de prueba
\end{document}
1
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
6/55
En LATEX lo que importa es la estructura del documento
Tipos de archivo
letter
article
report
book
Formato
ninguno
secciones (section)
partes, secciones (part)
cap´ıtulos, partes, secciones
Tambi´en se pueden usar \subsection{} y \subsubsection{}
beamer se usa para crear presentaciones.
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
7/55
Se pueden usar listas tipo enumerate e itemize:
\begin{enumerate}
\item Primero
\item Segundo
\item Tercero
\end{enumerate}
\begin{itemize}
\item Primero
\item Segundo
\item Tercero
\end{itemize}
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
1. Primero
2. Segundo
3. Tercero
Primero
Segundo
Tercero
C´
omo trabajar con software libre
8/55
Se pueden escribir negritas: {\bf palabras en negrita}
palabras en negrita
Palabras en it´alicas: {\em palabras as´
ı}
palabras as´ı
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
9/55
Uno de los mejores aspectos de LATEX es la notaci´
on matem´atica:
Una ecuaci´
on cuadr´
atica: $a x^2 + b x + c = 0$
Una ecuaci´on cuadr´atica ax 2 + bx + c = 0
Una matriz:
\[
\begin{bmatrix}
a_{11} & a_{12}\\
a_{21} & a_{22}\\
\end{bmatrix}
\]
Una matriz:
a11 a12
a21 a22
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
10/55
\int_{x=0}^2 e^x dx
2
x
x=0 e dx
\sum_{i=0}^{10} a_i x_i
10
i=0 ai xi
f(x) = \alpha \beta x ( \Delta x ) + 6
f (x) = αβx(∆x) + 6
x = r \cos(\theta); \; y= r \sin(\theta)
x = r cos(θ); y = r sin(θ)
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
11/55
El uso de etiquetas es algo muy poderoso en LATEX
Se poner etiquetas con \label{eq:uno} y referirlas con
\ref{eq:uno}
Se puede poner etiquetas a:
Ecuaciones
Figuras
Secciones
Cap´ıtulos
A n´
umeros de p´agina con \pageref{etiqueta}
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
12/55
La parte del documento entre el \documentclass y el
\begin{document} se le llama pre´
ambulo
Algunos de los paquetes u
´tiles son:
\documentclass{article}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{url}
\usepackage{moreverb}
\usepackage{multicol}
\decimalpoint
\graphicspath{{Figs/}}
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
13/55
gnuplot
Este es un programa para generar gr´aficas
Se puede usar de forma iterativa,
pero es mejor usarlo a trav´es de un script
P´agina del proyecto: http://gnuplot.info
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
14/55
$ gnuplot
G N U P L O T
Version 4.6 patchlevel 5
last modified February 2014
Build System: Darwin x86_64
Copyright (C) 1986-1993, 1998, 2004, 2007-2014
Thomas Williams, Colin Kelley and many others
gnuplot home:
faq, bugs, etc:
immediate help:
http://www.gnuplot.info
type "help FAQ"
type "help" (plot window: hit ’h’)
Terminal type set to ’aqua’
gnuplot> set term x11
Terminal type set to ’x11’
Options are ’ nopersist’
gnuplot> plot sin(x)
gnuplot>
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
15/55
1
sin(x)
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-10
-5
0
5
10
\begin{center}
\includegraphics[width=0.8\textwidth]{sin.pdf}
\end{center}
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
16/55
¿C´omo graficar un c´ırculo?
La ecuaci´on del c´ırculo x 2 + y 2 = r 2 , donde r es su radio, no
es una funci´on
Para usar una funci´
on tenemos que usar su ecuaci´on
param´etrica:
x = r cos θ
y = r sin θ
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
17/55
4
x(t), y(t)
set term post eps color
set output "circulo.eps"
x(t) = 4*cos(t)
y(t) = 4*sin(t)
3
2
1
0
-1
set size ratio -1
set parametric
plot x(t), y(t) w l lw 2
-2
-3
-4
-4
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
-3
-2
-1
0
C´
omo trabajar con software libre
1
2
3
4
18/55
set term post eps color
set output "circulo2.eps"
x(t) = 4*cos(t)
y(t) = 4*sin(t)
4
2
0
set size ratio -1
set parametric
unset key
set xrange [-5:5]
set yrange [-5:5]
plot x(t), y(t) w l lw 3 lt 3
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
-2
-4
-4
-2
0
C´
omo trabajar con software libre
2
4
19/55
set term post eps color
set output "test.eps"
test
postscript terminal test
show ticscale
filled polygons:
5
+4
by
ro
ta
te
d
test of character width:
12345678901234567890
ro
te
ta
d
by
Enhanced text: xn+1
0
5
-4
rotated ce+ntred text
de
g
left justified
centre+d text
right justified
de
g
linewidth
lw 6
lw 5
lw 4
lw 3
0
1
2
3
pattern fill
4
5
6
7
8
9
lw 2
lw 1
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
-1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
20/55
Xfig, un programa para dibujar
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
21/55
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
22/55
VDD
M P1
−I o
M P2 M P3
MP4 MP5
V2
V1
MP6
+I o
M N4
M N3
I bias
M N5
M N2
M N6
M N1
VSS
\begin{center}
\includegraphics[width=\textwidth]{circuit.pdf}
\end{center}
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
23/55
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
24/55
y
yg
T3
C2
x
xg
C1
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
25/55
ImageMagick
Es un conjunto de programas para crear, modificar y desplegar
im´agenes
Consta de los programas: display, identify, convert, montage y
varios m´as.
display sirve para desplegar im´agenes
identify sirve para identidicar los archivos de im´agenes
convert para transformar im´agenes
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
26/55
display marilyn.png
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
27/55
identify marilyn.jpg
marilyn.jpg JPEG 970x1221 970x1221+0+0 8-bit sRGB \
91.1KB 0.000u 0:00.000
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
28/55
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
29/55
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
30/55
Un script del shell:
image.sh
# 704.331 408.317
# 691.428 550.065
# 513.35 676.969
# 514.152 521.65
# 497.054 331.66
# 497.414 462.708
# 314.454 562.35
# 301.286 419.149
# 0 768
cp a.png b.png
mogrify -fill none -stroke white -strokewidth 4 \
-draw ’polyline 704,408 691,550 513,677 514,522 704,408 \
polyline 497,332 497,463 314,562 301,419 497,332 \
line 704,408 497,332 line 691,550 497,463 \
line 513,677 314,562 line 514,522 301,419’ \
-stroke black -fill black -strokewidth 1 -font Times-Bold -pointsize 6
-draw ’text 30,723 "a"’ b.png
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
31/55
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
32/55
latex2html
Es un script en perl para convertir archivos en LATEX a html
Las opciones del script se ven con:
latex2html -h
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
33/55
Lenguajes de alto nivel
Perl
Python
Php
Ruby
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
34/55
¿Porqu´e aprender un lenguaje de alto nivel?
C es un lenguaje de nivel medio
Los leguajes de alto nivel son interpretados
No se definen tipos de datos
Tienen una m´aquina de tiempo de ejecuci´
on (para uso de
memoria con un recolector de basura)
Es f´acil construir programas r´apidamente
Son los lenguajes m´as usandos
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
35/55
Prototipado r´apido
Son ideales para realizar programas que procesan texto y
generan texto
Para generaci´on din´amica de p´aginas WEB
Si se tiene una idea, puede obtenerse un programa funcional
en minutos u horas
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
36/55
´Indice de Popularidad de los Lenguajes de Programaci´on
PYPL PopularitY of Programming Language index https://sites.google.com/
site/pydatalog/pypl/PyPL-PopularitY-of-Programming-Language
Posici´on
sep 2014
1
2
3
4
5
6
7
8
9
10
Dr. Luis Gerardo de la Fraga
Posici´
on
sep 2014
1
2
4
3
5
6
7
8
9
10
Uni. Pol. Tlaxcala
Lenguaje de
programaci´
on
Java
PHP
Python
C#
C++
C
Javascript
Objective-C
Ruby
Basic
Porci´on en %
sep 2014
27.2 %
12.8 %
10.7 %
9.8 %
8.8 %
8.3 %
8.1 %
6.1 %
3.4 %
3.1 %
C´
omo trabajar con software libre
37/55
PYPL PopularitY of Programming Language index https://sites.google.com/
site/pydatalog/pypl/PyPL-PopularitY-of-Programming-Language
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
38/55
http://www.raspberrypi.org/
Se puede comprar en www.newark.com.mx
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
39/55
Problema: trazar un c´ırculo
y
(−a,b)
(a,b)
x
(−a,−b)
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
(a,−b)
C´
omo trabajar con software libre
40/55
Programa en perl
# Programa que genera los puntos de un
# c´
ırculo de radio 17
$R2 = 17*17;
for( $x=0; $x<=17; $x++ ) {
$y = int(sqrt($R2 - $x*$x) + 0.5 );
print "$x $y\n";
}
perl p.pl > p.txt
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
41/55
Programa en python
import math
R2 = 17*17
x=0
while x<=17 :
y = math.floor( math.sqrt(R2 -x*x) + 0.5 )
print x, y
x = x + 1
python p.py > p.txt
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
42/55
Script para gnuplot:
Programa en python
set term post eps color
set output "c.eps"
set xrange [-1:18]
set yrange [-1:18]
xt = 17yt = 17
unset key
set size ratio -1
set multiplot
plot ’p.txt’ w p pt 6 ps 3.5
set parametric
plot xt, yt
unset multiplot
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
43/55
La gr´afica hecha con gnuplot:
18
16
14
12
10
8
6
4
2
0
0
Dr. Luis Gerardo de la Fraga
2
Uni. Pol. Tlaxcala
4
6
8
10
12
14
16
18
C´
omo trabajar con software libre
44/55
y
(−a,b)
(−b,a)
(a,b)
(b,a)
x
(−b,−a)
(−a,−b)
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
(b,−a)
(a,−b)
C´
omo trabajar con software libre
45/55
Maxima
Maxima es un programa que usa manipulaci´
on simb´olica
http://maxima.sourceforge.net
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
46/55
Archivo m.max:
m.max
poli: (a+b);
f: poli*poli;
e: expand(f);
Lo ejecutamos como:
maxima -b m.max
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
47/55
La salida:
maxima -b m.max
Maxima 5.30.0 http://maxima.sourceforge.net
using Lisp SBCL 1.1.16
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) batch("m.max")
read and interpret file: m.max
(%i2) poli:b+a
(%o2)
(%i3) f:poli*poli
(%o3)
(%i4) e:expand(f)
(%o4)
(%o4)
Dr. Luis Gerardo de la Fraga
b + a
2
(b + a)
2
2
b + 2 a b + a
m.max
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
48/55
GNU Octave
Octave es un lenguaje de programaci´
on de alto nivel
Su prop´osito general es para c´alculo num´erico
https://www.gnu.org/software/octave
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
49/55
Un script para octave:
A = [1 1 1;
2 1 1;
0 1 3];
b = [0; 1; 1];
x = A \ b
A * x
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
50/55
Otro ejemplo:
 xm
0
0
0
ym
yx
sx
0

  sx
− xm
b0 b1 b2
sx
xm




− ym
0
b3
b4
b5
sy
b6 b7 b8
1
0
0
sy
ym
0

1
1
1
B: matrix([b0, b1, b2], [b3, b4, b5], [b6, b7, b8]);
Ti: matrix ( [ xm/sx, 0, -xm/sx], [0, ym/sy, -ym/sy], [0, 0, 1]
T: matrix ( [ sx/xm, 0, 1], [0, sy/ym, 1], [0, 0, 1] );
R: Ti . B . T;
/**
C: Ti^^(-1);
A: Ti.T;
**/
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
51/55
Salida:
(%i5) R:Ti . B . T
[
b0 - b6
[
[ b3 sx ym
b6 sx ym
[ -------- - -------(%o5) Col 1 = [ sy xm
sy xm
[
[
b6 sx
[
----[
xm
]
[ b1 sy xm
b7 sy xm ]
]
[ -------- - -------- ]
]
[ sx ym
sx ym
]
]
[
]
] Col 2 = [
b4 - b7
]
]
[
]
]
[
b7 sy
]
]
[
----]
]
[
ym
]
[ (b2 + b1 + b0) xm
(b8 + b7 + b6) xm
[ ----------------- - ----------------[
sx
sx
[
Col 3 = [ (b5 + b4 + b3) ym
(b8 + b7 + b6) ym
[ ----------------- - ----------------[
sy
sy
[
[
b8 + b7 + b6
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
52/55
]
]
]
]
]
]
]
]
]
Se ejecuta como:
octave -qf p.oct
La salida:
x =
1
-2
1
ans =
0
1
1
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
53/55
Conclusiones
Se mostraron varias herramitas para trabajo de uso diario el
GNU/Linux
LATEX, para editar documentos
gnuplot, para realizar gr´aficas
xfig, para realizar figuras
ImageMagick, para editar im´agenes
perl y python, para programaci´
on en alto nivel
maxima, para c´alculo simb´
olico
octave, para c´alculo num´erico
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
54/55
¡Gracias!
Dr. Luis Gerardo de la Fraga
Uni. Pol. Tlaxcala
C´
omo trabajar con software libre
55/55