-
Éste es el "Semestre Perdido"
en Ciencias de la Computación.
-
Al menos así decidimos llamarle.
-
Si no estás aquí por ésto,
estás en la habitación equivocada.
-
Estaremos aquí alrededor de una hora.
-
Primeramente, quiero hablarles un poco
-
sobre por qué creamos este curso.
-
Esta clase se extiende de una observación
que Anish, José y yo hicimos cuando
-
fuimos profesores de apoyo en
varias clases aquí en el MIT.
-
Básicamente, todos los científicos de la
computación, sabemos
-
que las computadoras son excelentes en
el desarrollo de tareas repetitivas
-
y automatizando. Sin embargo, se nos pasa que
hay muchas herramientas que
-
mejoran nuestros procesos de desarrollo.
Podemos ser mucho más eficientes en el uso
-
de nuestras computadoras ya que
las empleamos
-
como una herramienta para nosotros,
no sólo para crear páginas web o software
-
o ese tipo de cosas… y esta clase es
un intento de abordar ésto.
-
Es un intento de mostrarles
algunas de las herramientas
-
que pueden aprovechar enormemente
en su día a día,
-
en sus investigaciones y en sus estudios.
-
Y será una clase donde
les enseñaremos
-
tanto cómo sacar
el mejor provecho
-
de las herramientas que ya usan
-
pero ojalá, enseñarles
-
herramientas que no conocían antes
-
y cómo juntarlas para producir cosas más poderosas
-
y cómo juntarlas para producir cosas más poderosas
-
que las que pudiesen coseguir con
lo que conocen ahora.
-
Serán 11 clases, cada una de 1 hora
-
tocando un tema en particular.
-
Pueden ver el sitio web en la descripción
(https://missing.csail.mit.edu/)
-
con la lista de temas y
en qué fecha serán las clases.
-
En su mayoría,
serán independientes.
-
Por lo tanto, pueden asistir a las
que consideren interesantes.
-
Sin embargo, asumiremos que
las tomaron una a una
-
a medida que progresemos,
por lo que no se repetirán temas pasados.
-
Por ejemplo, no les estaré enseñando
bash de nuevo.
-
También publicaremos las notas de la clase
y las grabaciones en el sitio web.
-
No sabemos cuándo exactamente,
pero lo haremos.
-
[Nota del traductor:]
Obviamente ya están disponibles!
-
Si no no estaría viendo esto usted.
-
La clase la darán 3 maestros: su servidor
John, Amish, quien está sentado por allá
-
y José quien no pudo estar hoy
pero dará la clase de mañana.
-
Tengan en cuenta que abordamos
demasiado para tan poco tiempo,
-
por lo que avanzaremos a pasos agigantados
-
pero en caso de que se atoren en algún
tema, no duden en contactarnos.
-
(Concerniente a la clase presencial)
-
Debido a la carencia de tiempo
-
no será posible tocar
todas las herramientas detalladamente.
-
Se mencionarán herramientas interesantes
y maneras útiles.
-
No necesariamente profundizaremos
en los detalles de cómo funcionan
-
o casos de uso más complejos
-
(Concerniente a la clase presencial)
-
Esta clase, en específico,
cubrirá prinicipios básicos
-
que utilizaremos en las siguientes
clases.
-
Por ejemplo, cómo usar el
shell en su terminal.
-
Explicaré qué es para los
que lo desconozcan,
-
y después avanzaremos a
herramientas más avanzadas.
-
Probablemente, ya se pueden
dar una idea de qué vendrá
-
basado en las notas
de la clase.
-
Y eso nos trae a la clase de hoy.
En esta clase hablaremos de el
-
Shell.
-
Será una de las principales maneras
en las que interactuamos con
-
nuestra computadora.
-
cuando quieran empezar a hacer
cosas que las interfaces gráficas
-
no les permite hacer.
-
Las interfaces visuales están,
de alguna manera, limitadas
-
porque sólo se pueden hacer
las cosas que tienen botones,
-
deslizadores o campos
de entrada.
-
La mayoría del tiempo, estas
herramientas de texto
-
están diseñadas para ser modulares
y funcionar entre sí.
-
Y también tener muchísimas maneras
de combinarse y programarse.
-
En esta clase nos estaremos centrando
en herramientas de texto,
-
también conocidas como herramientas
de la terminal. (command line utilities)
-
El shell será en donde
-
harán la mayoría
de su trabajo.
-
Para los que no conozcan lo que
es un shell,
-
la mayoría de las plataformas
proveen un shell por defecto.
-
En Windows, es Powershell, pero
también hay otros disponibles...
-
En Linux, encontrarán cientos de
terminales, es decir, ventanas que
-
te permiten ver shells.
-
Asimismo, encontrarán diferentes
tipos de shell, el más común
-
siendo bash.
Conocido como el Shell Resusitado.
-
(Bourne-Again-SHell)
-
Como éste es un shell tan común,
será el que utilizaremos en la clase.
-
Si están en MacOS, probablemente
tendrán una versión de bash.
-
(Nota del traductor):
Las nuevas versiones de MacOS Catalina (10.15)
-
usan zsh, bastante similar a bash.
Se abre con la app conocida como
-
Terminal.
-
Tengan en cuenta que la mayoría
de esto estará centrado en Linux
-
en términos de cómo lo enseñamos.
Sin embargo, la mayoría de estas
-
herramientas funcionan con otros
sistemas operativos.
-
Si quieren instalar una terminal y un
shell, y no saben cómo hacerlo
-
les podemos ayudar a hacerlo en las
horas de tutoreo. También pueden
-
simplemente buscarlo en google
como su plataforma + terminal.
-
Entonces... cuando abrimos una terminal,
usualmente se verá así. Tendremos
-
una línea hasta arriba. esto se conoce
como el Shell Prompt, contiente mi
-
nombre de usuario, el nombre de
mi computadora y el directorio
-
en donde estoy. Hablaremos de
`paths` o directorios más tarde.
-
Y después sólo hay un cursor esperando
a que reciba alguna entrada.
-
Y este es el shell en donde le
decimos lo que queremos que haga.
-
Podemos personalizar este prompt, puede
no necesariamente verse exactamente
-
como el mío pero se puede ver de
diferentes maneras, así, así y así.
-
En esta clase no hablaremos mucho
de cómo personalizarlo, eso lo haremos en otra clase.
-
Hoy hablaremos de cómo usamos un
-
shell para hacer cosas útiles.
-
Y esta es la interfaz de texto
principal en donde
-
escribimos comandos de texto.
-
En el shell, escribimos comandos.
-
Estos comandos pueden ser
-
bastante simples, usualmente,
-
ejecutaremos programas con argumentos,
bueno... y ¿cómo se ve eso?
-
Un programa que podemos ejecutar
dentro del shell es `date`.
-
Escribimos "date" y presionamos Enter.
Y, naturalmente, nos muestra la fecha
-
y la hora. Asimismo, podemos ejecutar
un programa con argumentos, también
-
conocidos como parámetros. Existe un
programa llamado `echo`,
-
el cual simplemente imprime los
argumentos que le damos.
-
Los argumentos son "cosas" separadas
por espacios que le damos al programa.
-
Entonces, podemos decirle "hola" y
nos imprime hola.
-
Nuevamente, no del todo sorprendente,
pero estos son los básicos de argumentos.
-
También, si se dieron cuenta, dije que
los argumentos están separados por
-
espacios. Y podrían preguntarse, pero
cómo le hago para que un argumento
-
tenga espacios. Bueno. pues también podemos
ponerlo entre comillas y escribir
-
algo como "Hola mundo" en comillas y
ahora contiente un argumento nuestro
-
programa que contiene espacios. También
se pueden usar comillas simples en lugar
-
de dobles. Hablaremos de las diferencias
cuando empecemos a hacer scripts
-
en bash. También podemos utilizar el
caracter de escape para un sólo caracter.
-
Todas estas reglas las cubriremos más en
específico después. Esperemos que no
-
les den contratiempos con esto. Por
ejemplo, si quiero crear un directorio
-
llamado Mis Fotos se crearán 2 directorios,
uno llamado Mis y otro, Fotos.
-
Y probablemente eso no es lo que queremos.
-
Ahora... una cosa que probablemente
se preguntarán es cómo sabe a qué
-
programas me refiero y cómo sabe
dónde están esos programas y qué
-
tienen que hacer? Y bueno, la respuesta
es que su computadora tiene programas
-
que vienen instalados dentro de sus
computadoras. Justo como podría
-
ir con Windows Explorer, la aplicación
de la terminal, Windows Explorer,
-
etc. también viene con aplicaciones
centradas a la terminal. Y, estas,
-
literalmente están en el sistema de
archivos. Y, el shell, tiene una manera
-
de determinar dónde están esos
programas. Báicamente, tiene una
-
manera de buscar en dónde está
cada uno de estos programas.
-
Y lo hace con algo llamado, una
variable de entorno (conocida en
-
inglés como ENVIRONMENT variable).
Es simplemente como una variable
-
que podrían encontrarse en un lenguaje
de programación. De hecho resulta que
-
el shell, y el BASH en particular,
es un lenguaje de programación.
-
Este prompt que tenemos aquí también
puede realizar bucles while, for,
-
condicionales. Podemos definir funciones,
entre otras cosas. Esto lo hablaremos en
-
la siguiente clase.
Mientras tanto, veamos esta variable de
-
entorno. Debo notar que las variables de
entorno se asignan cada vez que iniciamos
-
nuestro shell en automático. No son
variables que tenemos que cambiar
-
siempre que abrimos un shell.
Hay variables de entorno que nos
-
dicen dónde esta nuestro directorio de
HOME (casa), el nombre del usuario y
-
también, muy importante, la variable
PATH (en español, camino).
-
Entonces, si imprimimos con `echo`
la variable $PATH esto nos mostrará
-
todos los paths (caminos) en donde el
shell buscará programas.
-
Se darán cuenta de que esto es una
lista separada por dos puntos,
-
lo cual es bastante difícil de leer,
pero lo esencial es que cada vez
-
que escribamos el nombre de un
programa buscará dentro de esta
-
lista de paths, por un archivo
ejecutable que tenga el mismo
-
nombre que escribimos.
En mi caso, cuando escribo
-
`echo` buscará en cada uno de
estos directorios hasta que
-
encuentre un programa llamado
`echo` y lo correrá. SI queremos
-
saber dónde está el programa
que corre podemos usar el
-
comando llamado `which`.
podemos escribir `which echo`.
-
Esto quiere decir que si fuéramos
a correr un programa llamado `echo`
-
lo correríamos de ese archivo en
específico. Es imporante mencionar
-
lo que es un path (camino). Los paths
son una manera de mencionar la
-
ubicación que tienen tus archivos
en tu computadora. En Linux y MacOS
-
los paths están separados por diagonales,
específicamente, diagonales para adelante.
-
En inglés conocidos como `forward slashes`:
/ Y verán aquí que estamos en el directorio
-
`root`, eso es lo que indica el primer slash
(diagonal) y nos dice que nuestro
-
path empieza en la raíz del sistema de
archivos (file system). Entonces nos
-
vamos al directorio llamado `usr`, después
ve en el directorio `bin`y luego encuentra
-
el archivo llamado `echo`. En Windows,
los paths se separan por diagonales hacia
-
atrás \\
-
En Windows, hay una raíz por cada
partición. Puede que hayan visto
-
algo como `C:\` a diferencia de Linux
o macOS que traen todo bajo la misma
-
'raíz'. Tal vez se dieron cuenta de que
dije la palabra path absoluto (camino
-
absoluto). Los absolute paths son
caminos que determinan completamente
-
la ubicación de un archivo. En este caso,
estamos hablando de un archivo
-
llamado `echo` en específico. Y nos está
dando el camino completo al archivo.
-
También tenemos caminos relativos. Y estos,
como su nombre lo indica, están basados
-
en donde estamos al momento.
Podemos obtener el path en donde estamos
-
con el comando `pwd`, el cual significa
imprime el directorio de trabajo
-
(print working directory).
-
Not Synced
Muy bien. Gracias a todos por venir.