Lo hice y lo entendí

El blog de Vicente Navarro
06 jul

Instalar un Cygwin portable en una memoria USB

Para aquellos que no lo conozcan, el Cygwin es un oasis en el desierto del Windows, un destello de luz entre sus tinieblas… Poético, ¿verdad? Bueno, ahora en serio, el Cygwin son dos cosas:

  • Una librería dll (cygwin1.dll) que proporciona una capa de emulación de POSIX a las aplicaciones que hagan uso de ella.
  • Una muy importante colección de herramientas migradas de Linux fácilmente usando la librería anterior.
Logo de Cygwin

Con Cygwin tenemos en un entorno unificado la mayoría de las aplicaciones de consola de Linux y, además, como lleva también una implementación del X.org (Cygwin/X), también muchas aplicaciones gráficas. Hay incluso GNOME sobre Cygwin (CyGNOME) y KDE sobre cygwin.

Para dar una idea de lo que lleva cygwin, podemos citar algunos de los programas que lleva la distribución estándar: gcc, bash, sed, awk, bzip2, wget, apache, ssh, sshd, perl, vim, emacs, latex, pine, netcat, rsync, rpm, dpkg, mc, cpio, curl, gv, fvwm, twm, xfig, xterm… Cygwin Package List.

Todas las aplicaciones de la distribución estándar se pueden instalar, desinstalar y actualizar desde el programa de instalación, que resulta muy sencillo y cómodo:

Cygwin Setup

Y aunque algunas de las herramientas que proporciona Cygwin ya se han portado de forma nativa a Windows, como el Perl, el LaTeX, o las utilidades de línea de comandos, en general resulta mucho más cómodo trabajar en este entorno unificado donde se pueden usar paths estilo Windows y paths estilo UNIX y se gestiona mejor los diferentes finales de línea que usan Windows y UNIX (UNIX usa LF y Windows CR+LF). El precio es pérdida de rendimiento: como no puede ser de otra forma, una versión nativa es más rápida que otra que funciona sobre una capa de emulación de POSIX.

La apariencia normal del Cygwin es una aplicación de texto dentro de una ventana de terminal de Windows, a menos que usemos el Cygwin/X:

Cygwin en acción

Si el terminal de Windows nos da problemas de compatibilidad de terminal, es mejor usar el Cygwin dentro de un xterm, haciendo un ssh desde una aplicación que soporte emulación de VT100 o ANSI si tenemos el sshd del Cygwin habilitado, o usando el puttycyg (una adaptación de putty para conectar directamente al cygwin local).

Hecha la introducción al Cygwin, llega el momento de confesar que soy un fanático de las aplicaciones portables. Tras todas las entradas anteriores sobre meter sistemas operativos en memorias USB, se puede entender que las aplicaciones portables son su complemento perfecto. En PortableApps están haciendo un esfuerzo muy importante por sacar versiones portables de mucha calidad de los programas de código abierto más populares y útiles. Aunque aún no la hay, a los usuarios de PortableApps, les gustaría que desarrollaran una versión portable de Cygwin.

El problema con la portabilidad del Cygwin es que el Cywin usa el registro de Windows para almacenar los puntos de montaje. Son unas pocas claves nada más, una por punto de montaje, pero esto la convierte en una aplicación poco portable, como el propio FAQ nos aclara: How can I make my own portable Cygwin on CD?

While some users have successfully done this, for example Indiana University’s XLiveCD, there is no easy way to do it. Full instructions for constructing a portable Cygwin on CD by hand can be found on the mailing list at http://www.cygwin.com/ml/cygwin/2003-07/msg01117.html. (Thanks to fergus at bonhard dot uklinux dot net for these instructions.)

Conseguir tener el Cygwin en un CD es una tarea bastante más dura y ciertamente bastante menos útil que tenerlo en una memoria USB, con todas las posibilidades de lectura y escritura. Para ello, en realidad lo único que tenemos que hacer es guardar los montajes actuales, hacer los nuevos, usar el cygwin y deshacer los cambios, para lo cual nos vamos a basar en el artículo Cygwin on portable storage devices.

Instalar el Cygwin en una memoria USB

Backup de los puntos de montaje de la instalación anterior de Cygwin (si la hay)

Desde luego, lo más cómodo es instalar el Cygwin en la memoria USB en una máquina que no tuviera una instalación previa de Cygwin, pero si la había y la queremos conservar, antes de comenzar es necesario guardar la configuración actual y borrarla para reponerla tras la instalación.

Para ello, con el regedit podríamos exportar y a continuación borrar la rama del registro que contiene los puntos de montaje para importarla al final. La rama de registro es una de las siguientes en función de si la instalación de Cygwin se hizo sólo para el usuario actual o para todos los usuarios de la máquina:

HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin
HKEY_LOCAL_MACHINE\Software\Cygnus Solutions\Cygwin

El contenido del fichero .reg generado sería algo así:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2]
"cygdrive prefix"="/cygdrive"
"cygdrive flags"=dword:00000022

[HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2\/]
"native"="C:\\cygwin"
"flags"=dword:00000002

[HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2\/usr/bin]
"native"="C:\\cygwin/bin"
"flags"=dword:00000002

[HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2\/usr/lib]
"native"="C:\\cygwin/lib"
"flags"=dword:00000002

Pero posiblemente sea más conveniente usar las herramientas propias del Cygwin. La clave es el comando mount -m, que nos permite guardar los comandos necesarios para montar las unidades de nuevo dejándolas en el estado actual. Como vamos a desmontar los puntos de montaje, mejor usamos las herramientas de Cygwin desde la línea de comandos de Windows y no desde su propio entorno:

C:\>cd cygwin

C:\cygwin>cd bin

C:\cygwin\bin>mount -m > c:\temp\remount.bat

C:\cygwin\bin>type c:\temp\remount.bat
mount -f -u -b "C:/cygwin/bin" "/usr/bin"
mount -f -u -b "C:/cygwin/lib" "/usr/lib"
mount -f -u -b "C:/cygwin" "/"
mount -u -b --change-cygdrive-prefix "/cygdrive"

C:\cygwin\bin>umount -c
umount: remove_cygdrive_prefix: No such file or directory

C:\cygwin\bin>umount -A

Además, si teníamos el Cygwin instalado en el sitio de por defecto, C:\cygwin, es importante que lo renombremos a, por ejemplo, C:\cygwin_escondido para que el programa de instalación no lo encuentre y use la configuración ya existente para instalar el nuevo Cygwin, lo que causaría muchos problemas, entre otras cosas, porque consideraría los paquetes del Cygwin original como ya instalados.

Instalar Cygwin usando el asistente de instalación

Ahora hacemos la instalación del Cygwin en la memoria USB. Para ello, tenemos que descargar el setup.exe y seguir el sencillo asistente de instalación. Si tenemos alguna duda, podemos consultar la guía de instalación.

Es conveniente que pongamos algún editor (p.e. el vim) a la lista de aplicaciones a instalar, porque nos hará falta para editar el /etc/profile en el siguiente paso.

En esta parte, es importante especificar correctamente la unidad y el directorio donde queremos hacer la instalación en lugar del C:\cygwin de por defecto. Si vamos a usar la memoria USB de la unidad F:, será, por ejemplo, F:\cygwin.

Al finalizar, nos dirá si queremos un icono en el escritorio y un grupo de programas. Como es una aplicación portable, lo mejor es que decirle que no.

Tras la instalación ya podemos usar el script F:\cygwin\cygwin.bat para arrancar un entorno de trabajo de Cygwin. El script en realidad lo único que hace es abrir una sesión de login de bash:

@echo off

f:
chdir f:\cygwin\bin

bash --login -i

Portabilizar el Cygwin

El directorio $HOME

Además de las claves del registro, hay otro inconveniente para la portabilidad: El directorio $HOME.

El Cygwin sigue este orden para determinar el $HOME a usar:

# Here is how HOME is set, in order of priority, when starting from Windows
#  1) From existing HOME in the Windows environment, translated to a Posix path
#  2) from /etc/passwd, if there is an entry with a non empty directory field
#  3) from HOMEDRIVE/HOMEPATH
#  4) / (root)

Es decir, en la mayoría de los casos de un Cygwin recién instalado, el $HOME se derivará de:

HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\vnavarro

y será, por tanto, algo como: C:\Documents and Settings\vnavarro.

Para evitarlo, hemos de editar el fichero /etc/profile del Cygwin (que estará por ejemplo en F:\cygwin\etc\profile) y cambiar esto:

# Set the user id
USER="`id -un`"
export USER

por esto (suponiendo que vamos a usar el $HOME /home/supercoco):

# Set the user id
USER="`id -un`"
export USER

export HOME=/home/supercoco

Como F:\cygwin\home\supercoco no existía, el profile lo creará junto con los ficheros de arranque básicos (skeleton):

Cygwin Skeleton

Así conseguiremos que independientemente del usuario de Windows con el que usemos nuestro Cygwin, siempre tendremos $HOME en el mismo sitio dentro de nuestra memoria USB.

Hay que tener en cuenta que si usamos un editor de textos de Windows, podemos cambiar sin querer los LF por CR+LF en los finales de línea y que funcione mal. Por ello, es mejor entrar en el Cygwin y usar el vim o el editor que hayamos instalado.

También hay que tener en cuenta que el fichero profile dejará de ser mantenido automáticamente por Cygwin desde esta modificación:

# WARNING
#
# IF THIS FILE IS MODIFIED IT WILL NOT BE UPDATED BY THE CYGWIN
# SETUP PROGRAM.  IT BECOMES YOUR RESPONSIBILITY.

# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/profile
Los puntos de montaje

Cada vez que queramos usar nuestro Cygwin portable en una máquina distinta haremos:

  1. Guardar los puntos de montaje de la instalación existente usando el mount -m a un fichero en la propia memoria USB.
  2. Desmontar dichos puntos de montaje con umount -A y umount -c. El parámetro -c desmonta el cygdrive prefix (que por defecto es /cygdrive).
  3. Montar los directorios del Cygwin de la memoria USB
  4. Crear nuevos /etc/passwd y /etc/group adecuados para la máquina donde estamos trabajando
  5. Lanzar tantas sesiones de nuestro Cygwin portable como necesitemos
  6. Cuando hayamos acabado de usar el Cygwin de la memoria USB, desmontar sus directorios
  7. Montar los directorios del Cygwin de la máquina local

Para hacer todo fácilmente, vamos a usar un par de scripts que nos crearemos en el mismo directorio donde tenemos el cygwin.bat:

mountcyg.bat

for /F %%A in ('cd') do set WD=%%A
bin\cp tmp\mountprevcyg.sh tmp\mountprevcyg.sh.bak
bin\mount -m | bin\sed "s/mount/bin\/mount/"> tmp\mountprevcyg.sh
bin\umount -c
bin\umount -A
bin\mount -bfu %WD%/ /
bin\mount -bfu %WD%/bin /usr/bin
bin\mount -bfu %WD%/lib /usr/lib
bin\mkpasswd -l -c > etc\passwd
bin\mkgroup -l -c > etc\group
pause

umountcyg.bat

bin\umount -c
bin\umount -A
bin\bash tmp\mountprevcyg.sh
bin\rm tmp\mountprevcyg.sh
bin\rm tmp\mountprevcyg.sh.bak
pause

Y ya tenemos listo nuestro Cygwin portable manual. Cuando lleguemos a un PC conectaremos nuestra memoria USB, ejecutaremos mountcyg.bat, lanzaremos tantos cygwin.bat como queramos y finalmente (y es muy importante no olvidarlo), ejecutaremos el umountcyg.bar cuando hayamos acabado de trabajar con el Cygwin portable.

La consecuencia de no ejecutar el umountcyg.bar sería que el Cygwin local dejara de funcionar correctamente. Si no había una instalación local, no pasa nada grave, pero sí es conveniente ejecutarlo para eliminar las entradas del registro y por tanto, eliminar el rastro de nuestro paso.

Por cierto, ejecutar más de una vez mountcyg.bat antes de ejecutar un umountcyg.bar borraría el fichero de restauración de los puntos de montaje originales (mountprevcyg.sh). Por eso he incluído una línea que haga una copia de seguridad de la versión anterior a mountprevcyg.sh.bak. ¡No ejecutes en ningún caso el mountcyg.bat más de dos veces seguidas!

Si en algún momento tenemos dudas de qué Cygwin está montado, sólo tenemos que ejecutar el comando mount, aunque sea desde la línea de comandos de Windows:

C:\cygwin\bin>mount
C:\cygwin\bin on /usr/bin type user (binmode)
C:\cygwin\lib on /usr/lib type user (binmode)
C:\cygwin on / type user (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)

A continuación aparecen ejecuciones normales de los scripts. El mensaje de error del cp es normal y debería de aparecer siempre que el mountcyg.bat no se ejecute más de una vez antes de ejecutar el umountcyg.bat. El mensaje de error del umount -c también es normal y aparecerá siempre que no se haya especificado un cygdrive prefix distinto al estándar, que es /cygdrive:

mountcyg

umountcyg

Restaurar los puntos de montaje de la instalación anterior de Cygwin (si la había)

Tras la instalación, no se nos tiene que olvidar dejar bien la instalación anterior, si la había. Para ello, nos aseguramos de que tras las pruebas hemos ejecutado el umountcyg.bat y a continuación, o bien restauramos el export del registro, o bien ejecutamos el remount.bat, según cómo hubiéramos hecho el backup.

También nos tenemos que acordar de restaurar el nombre correcto de C:\cygwin_escondido a C:\cygwin.

Enlaces: Otros Unix en Windows

Windows Services for UNIX (SFU) de Microsoft
GnuWin32
GNU utilities for Win32 (UnxUtils)

Actualización 2/1/2010:

Todo esto era válido con Cygwin 1.5, pero con la reciente aparición de Cygwin 1.7, nos encontramos, entre otros, con los siguientes cambios (What’s new and what changed in Cygwin 1.7), tras los cuales este procedimiento ya no tiene validez:

- Mount points are no longer stored in the registry. Use /etc/fstab
and /etc/fstab.d/$USER instead. Mount points created with mount(1)
are only local to the current session and disappear when the last
Cygwin process in the session exits.

- Cygwin creates the mount points for /, /usr/bin, and /usr/lib automatically
from it’s own position on the disk. They don’t have to be specified in
/etc/fstab.

- Different Cygwin installations in different paths can be run in parallel
without knowing of each other. The path of the Cygwin DLL used in a
process is a key used when creating IPC objects. So different Cygwin
DLLs are running in different namespaces.

- Each Cygwin DLL stores its path and installation key in the registry.
This allows troubleshooting of problems which could be a result of having
multiple concurrent Cygwin installations.

En efecto, podemos comprobar que con Cygwin 1.7, se usan estas entradas del registro bajo la rama Software\Cygwin:

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\Installations]
"c5e39b7a9d22bafb"="\\??\\C:\\cygwin"

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup]
"rootdir"="C:\\cygwin"

y ya no se usan éstas bajo Software\Cygnus Solutions\Cygwin:

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2]
"cygdrive prefix"="/cygdrive"
"cygdrive flags"=dword:00000022

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/]
"native"="C:\\cygwin"
"flags"=dword:0000000a

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/bin]
"native"="C:\\cygwin/bin"
"flags"=dword:0000000a

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/lib]
"native"="C:\\cygwin/lib"
"flags"=dword:0000000a

El proyecto Cygwin Portable (Cygwin Portable en Sourceforge), que usa el formato de PortableApps.com, podría ser una alternativa a considerar según su evolución futura, ya que la versión actual (0.2) es algo antigua (julio/2008) y se pensó para Cygwin 1.5. Además, por lo que he visto, no funciona bien cuando el PATH contiene espacios, y no deja el registro bien limpio cuando dejamos de usarlo, por lo que aún parece bastante inmaduro.

:wq

Entradas relacionadas

10 Comentarios a “Instalar un Cygwin portable en una memoria USB”

  • tricky dice:

    En el último párrafo pones umountcyg.bar ¿es una errata el .bar?

    Las pequeñas herramientas del cygwin funcionan bien, las llevo usando mucho tiempo y son, en general, impecables y muy recomendables (de hecho creo recordar que en microsoft hay algunos paquetes de herramientas para sus servidores que incluyen versiones de herramientas unix).

    Pero el lío este de montar las X sobre windows (mejor dicho, sobre cygwin sobre windows) y ponerte un kde en vez del explorer es algo que no he conseguido nunca. ¿A ti te ha salido? Di que es un poco estúpido (con perdón) armar semejante cirio para usar kde: si quieres kde (o el otro, o el otro) usa *nix, si quieres windows, usa windows… pero tiene su gracia :-).

    Por cierto amigo Vicente, a ver si sabes algo de esto. Si usas reg (la utilidad de windows\system32) para exportar una rama o clave del registro, te lo vuelca en un archivo con formato Little-endian UTF-16 Unicode character data, with CRLF, CR line terminators (según la utilidad file Versión 4.08); si le haces un grep, pasa de ti como una la Cindy Crawford. ¿conoces alguna versión de grep para windows que admita ficheros con codificación de más de 8 bits? ¿se podría hacer un parche? ¿cuál es la herramienta (seguro que existe) que transforma la codificación de los ficheros de texto?

    <modo jefe on>
    hala, para el lunes a primera hora quiero que esté en mi mesa
    </modo jefe on>

  • tricky Sí, es una errata. Muchas gracias por avisar. Ya está cambiado.

    Sobre las herramientas UNIX de Microsoft, fíjate en los enlaces del final y verás que el primero es el de Windows Services for UNIX (SFU).

    Yo no he usado ni KDE ni GNOME sobre Cygwin nunca, aunque sí he usado algunas herramientas X. Aunque como muy bien dices vale la pena usar Linux directamente, yo veo que puede venir bien en dos situaciones:

    - Para usar en Windows una aplicación KDE o GNOME que nos gusta mucho

    - Para disfrutar de un entorno completo KDE o GNOME en ese PC del trabajo donde sólo nos dejan tener Windows

    Y finalmente, en relación a lo que me comentas del registro, voy a enfocarlo de otra forma… ¿Sabías que con cygwin puedes acceder a las ramas del registro usando /proc/registry/?

    vnavarro.DARKSTAR /proc/registry
    $ ls /proc/registry/
    HKEY_CLASSES_ROOT    HKEY_CURRENT_USER  HKEY_LOCAL_MACHINE     HKEY_USERS
    HKEY_CURRENT_CONFIG  HKEY_DYN_DATA      HKEY_PERFORMANCE_DATA
    
    vnavarro.DARKSTAR /proc/registry
    $ ls /proc/registry/HKEY_CURRENT_USER/Software/Cygnus\ Solutions/Cygwin/mounts\ v2/
    /  /usr/bin  /usr/lib  cygdrive flags  cygdrive prefix
    
    vnavarro.DARKSTAR /proc/registry
    $ cat /proc/registry/HKEY_CURRENT_USER/Software/Cygnus\ Solutions/Cygwin/mounts\ v2/cygdrive\ prefix
    /cygdrive

     
    Las utilidades para pasar de fina de línea de CR+LF a LF y viceversa son, como probablemente sepas, dos2unix y unix2dos. Pero no funcionan con ficheros con caracteres Unicode. Además, parece que el Cygwin no es Unicode-aware.

    En cualquier caso, puedes abrir el fichero .reg con el notepad, le das “Guardar como…” y especificas que te lo guarde con codificación ANSI. Si lo que necesitas es, como me imagino, una utilidad de línea de comandos, me temo que no conozco ninguna. Sería cuestión de buscar, que seguro que alguna hay…

  • tricky dice:

    asombrádome has, again

    eso del /proc/registry me ha llegado al alma…

    muchas gracias por la información

    te comentaré si encuentro algo con respecto a lo del unicode

    salud

  • tricky Je, je… Sigue el camino de la Fuerza, querido Tricky Skywalker ;)

  • Gabriel Menini dice:

    Hola, Vicente.

    Felicitaciones por el artículo y muchas gracias.

    Un pequeño detalle: `library’ no es `librería’ sino `biblioteca’ ;-)

    Saludos.

  • cristo!!! cuanto listo dice:

    Muy bien vicente!

    un pequeño detalle para el purista: libreria en castellano no solo es donde se venden libros tambien es el lugar donde se guardan (estanteria, armario, etc). En ingles (te recuerdo que no es igual el ingles de EEUU que el de UK, etc) a lo mejor no, pero en castellano (benditas polisemia, homonimia y recursos lingüisticos) esta perfectamente traducido por libreria. el universo del lenguahe no es binario. por otra parte si despues de la informacion que tan amablemente te han ofrecido te ves en la necesidad de hacer semejante apunte, pues
    no se, pero yo me lo haria mirar porque da la impresion que te fastidia no haberlo escrito tu y necesitas dejat tu impronta. Pero en fin, despues de ver que dices “felicitaciones”, no deberias permitirte el lujo de enmendar la plana linguisticamente a nadie.

  • Gabriel Menini Muchas gracias :-)

    Sobre lo de librería/biblioteca, creo que en el mundillo castellanohablante de informática se usa bastante más librería. De hecho, en la definición de la RAE de librería está la acepción de biblioteca. La página de la Wikipedia en castellano de Biblioteca (programación) nos lo aclara un poco más:

    Habitualmente se emplea el término librería para referirse a una biblioteca, por la similitud con el original inglés library. Ambos términos, biblioteca y librería, son correctos según las definiciones de la RAE, aunque los puristas consideran como correcta biblioteca. Esto se debe a que la traducción correcta de library es biblioteca, mientras que el término inglés para librería es book shop (literalmente: tienda de libros). También es habitual referirse a ella con el término de origen anglosajón toolkit.

    cristo!!! cuanto listo Muchas gracias por los halagos y por tan apasionada defensa :oops:

  • unoquepasaporaquí dice:

    han pasado bastantes días desde este conato de flame, y aunque no quiero molestar ni reavivar las llamas, me gustaría comentar que el comentario del tal Gabriel me recuerda mucho en el fondo y en la forma al peliagudo y desagradable asunto de los artículos relacionados con las matemáticas en la wikipedia (y el portal/fotocopia de wikiversidad). Seré breve.
    Resulta que para nuestros ‘primos’ hispanoamericanos (me refiero con ese término a las personas de los países que fueron colonizados por España) sólo existe una “Matemática” y por lo tanto, siempre hay que escribir y pronunciar el nombre de esta ciencia en número singular; da igual que lo común y generalizado en España sea el plural (Matemáticas para la Economía, Libro de Matemáticas, “He suspendido la asignatura de matemáticas”, etc.), está mal dicho y hay que corregirlo, o mejor, ocultarlo. Es algo que me parece bochornoso, por dos razones: primera. ¿Qué más da cómo lo digamos o escribamos si nos entendemos? ¿por qué discutir agriamente con un tema así? segunda. En mi opinión, que comparto con bastantes profesores de instituto, de universidad, estudiantes y/o admiradores, en realidad hay muchas matemáticas en la matemática, cada disciplina es tan profunda que casi parece autónoma, razón por la cual el singular resulta ofensivo, puesto que parece quitar valor o importancia a la materia.
    Ser tan purista dificulta bastante el entendimiento entre las gentes, sobre todo el del purista. Yo trato de traducir support por la palabra adecuada en cada contexto (soporte, apoyo, servicio o asistencia técnica o especializada, admitir, permitir, etc.), pero es realmente difícil nadar contra corriente (aunque seguiré bregando hasta que el cuerpo aguante), y no hay que volverse loco con estos temas. También decimos “lenguajes de programación”, cuando hubiera sido más acertado traducir la expresión como “idiomas” o “lenguas” de programación, lo cual hubiera ahorrado muchas confusiones, pero no se puede cambiar eso ya, solamente podemos explicar que un “lenguaje de programación” tiene mucho más que ver con una lengua natural que con una proceso mecánico o automático, y esto tampoco es siempre así…
    En fin, no me extiendo más. Un consejo. ¡Niños del mundo, no juguéis con estas cosas en casa, que se empieza discutiendo por los anglicismos y se acaba con la casa llena de abogados!

    Saludos

    P. D. una frase muy chula que vi ayer en el fortune:
    “The society which scorns excellence in plumbing as a humble activity
    and tolerates shoddiness in philosophy because it is an exalted
    activity will have neither good plumbing nor good philosophy …
    neither its pipes nor its theories will hold water.”
    sé que el fortune está lleno de citas intereantes, pero esta es la leche porque se puede aplica a todos los pretenciosos del mundo mudial.

  • unoquepasaporaquí +1 Inspirado

    Precisamente hoy a salido un artículo en Barrapunto sobre este tipo de discusiones De esa fuente no beberé ¡Muchas gracias por tu comentario! :-)

Trackbacks y pingbacks:

Tema LHYLE09, creado por Vicente Navarro