Archivo para la categoría ‘Lenguajes’

Yo soy lo que escribo

Por fin alguien en sus cabales que inicia una aventura para alfabetizarnos (me incluyo) en esta lengua nuestra que es el castellano. Porque no basta con saber hablar lo justo, no basta con que te entiendan, no. Hay que saber hablar correctamente para así cuidar nuestras ideas, compartirlas, plasmarlas, difundirlas, ampliarlas,… y esto sólo se consigue con una buena educación verbal.

Desde Eres lo que escribes, eres como escribes, nos instan a conocer el medio por el cual se transmite la inteligencia: el lenguaje. Y con ello intentarán que todos escribamos correctamente en estos proyectos mal-llamados blogs, en estos cuadernos de bitácora.

Ya hace tiempo que se iniciaron algunas campañas de este tipo, como CCFVLS, aunque no al nivel de reseñar los elementos necesarios para mejorar nuestra sintaxis. Pero por supuesto agradecida y apoyados sus argumentos.

Y seguro que a mi novia esto le encantaría. Sólo hay que ver su primera y única entrada.

El lenguaje de programación D ya es 1.0

Hoy estoy un poco más feliz, informáticamente hablando, porque el lenguaje de programación D ya es 1.0. Pues sí, después de 178 versiones, Walter Bright ha sacado la versión 1.0.

A partir de ahora habrá que ponerse al día con todo lo nuevo y ver que potencial se le puede sacar a este verdadero lenguaje de programación moderno de propósito general y compilado a lenguaje máquina. Aunque hay que tener en cuenta que es muy nuevo, hay que darle una oportunidad, oportunidad que llevo impulsando desde hace bastante.

A todos los frikis informáticos os animo a que lo probéis. Y para los no tan frikis también ;)

¡Ah! Y después de mirar un poco por aquí y por allá, creo que soy el primero (bueno, de los primeros) que se hace eco de la noticia… ¡cómo se nota que me gusta ¿eh?!

Figuras retóricas

Ya hace tiempo que vi esta entrada en el blog de Psicobyte sobre figuras retóricas (aunque con algo más…) y quería ponerla en este, por supuesto, con su permiso gracias a la licencia Creative Commons.

Pequeña introducción, con ejemplos, a algunas figuras retóricas de uso común:

Y como no, en la Wikipedia se puede encontrar una larga lista de las mismas con sus correspondientes ejemplos. Lectura (casi) obligada.

Host

Host es una palabra ampliamente usada por los informáticos. Host viene del inglés y significa anfitrión en el sentido estricto de la palabra, pero también puede significar presentar como verbo, o montón si lo tratamos como sustantivo.

Si lo llevamos al campo de la informática, un host es un ordenador que actúa como servidor proporcionando servicios de red, como por ejemplo servidor Web, FTP, etc.

Pero lo que he llamado la atención es que host también es hostia, pero la religiosa, no la otra (aunque se escriben igual). En inglés, host es la Holy Communion, es decir, la Sagrada Comunión, vamos, la hostia que te da el cura.

Y he estado mirando en Word Reference pero no hay nada bien traducido del tipo «¡que te doy una hostia!», ni «¡hala, qué hostia!». Las traducciones, por ejemplo para «echando hostias» al inglés sería «as far as possible», que nada tiene que ver con el significado exacto y el énfasis de la frase en español.

Así que cuando en inglés digamos «I am going to hit you a host!» os aseguro que no estaremos diciendo «¡Te voy a dar una hostia!». Cosas del lenguaje.

Dando órdenes

Me llama enormemente la atención la forma tan errónea con que se usa la forma imperativa del verbo. Es cierto que es un fallo frecuente en el habla coloquial, incluso en el decurso hablado sea del tipo que sea la conversación, pero cuando veo un informativo, escucho a un periodista o leo un periódico no puedo evitar “poner el grito en el cielo” ¿no se supone que en un informativo o en la prensa escrita se emplea un registro formal? ¿no se supone que tienen escrito lo que deben leer y que además lo están leyendo en el telepronter teleprompter? ¿no se supone que tienen unos libros de estilo? Entonces ¿por qué no se expresan correctamente? Y peor aún ¿por qué no escriben correctamente?

Es sabido por todos, desde el colegio, que el imperativo es una forma verbal empleada para dar órdenes y que sus formas morfológicas correctas son, por ejemplo, come tú, comed vosotros (las formas coma usted, comamos nosotros y coman ustedes las comentaré en otro momento) sin embargo es extremadamente habitual encontrarnos con que las órdenes hacia la segunda persona de plural (vosotros) se realizan utilizando una forma de infinitivo, por ejemplo: *comer (vosotros) las patatas o *comeros las patatas. Esta expresión es incorrecta, muy incorrecta, lo correcto es: comed (vosotros) las patatas o comeos las patatas en donde la desinencia de segunda persona de plural de imperativo –d se elimina al añadirle el pronombre os, tan sólo hay un verbo que conserva esta –d, es el verbo irse cuyo imperativo es idos no *íos ni *iros.

La explicación es muy simple. Cuando nosotros damos una orden estamos utilizando la función apelativa del lenguaje, es decir, estamos intentando que el receptor de nuestro mensaje lleve a cabo la orden que le estamos dando, pero esta apelación nunca, repito nunca, puede usarse con un infinitivo si nos estamos refiriendo a un “vosotros”, únicamente se acepta el infinitivo con valor imperativo cuando le anteponemos la preposición a (Niños, a dormir), o bien cuando el receptor del mensaje no es alguien concreto (No tocar, peligro de muerte).

Por tanto, a partir de ahora cuando oigáis o leáis una orden en la que utilizan un infinitivo como imperativo de segunda persona de plural ACORDAOS, no *acordaros, de esta pequeña explicación e INTENTAD, no *intentar, que vuestro uso sea el correcto, ya que a muchos que se consideran excelentes periodistas habría que darles con la Gramática en la cabeza.

Nota: Esta entrada la escribió mi novia hace tiempo cuando se lo pedí, pero resulta que no le gusta escribir en blogs. Digamos que es un poco «antitecnología» ¿influirá que haya estudiado Filología Hispánica, la antítesis de la Ingeniería Informática? Joer que mal rollo. Bueno, el caso es que estaba por aquí sin publicar por ella, así que lo hago yo.

Compiladores

Ya llevo algún tiempo con ganas de hacerme mi propio compilador. Sí, como lo oís, un compilador de un lenguaje personalizado.

Y es que mirando cada día el foro de D pues digo: «Joer, si cada día se complican más y más…»; y el caso es que ciertamente muchas de sus funcionalidades estarán muy bien en el momento que salga la versión 1.0 (que ya va siendo hora, por cierto) pero creo que es demasiado complejo, que está creciendo demasiado como le está pasando a Java, y eso que todavía no está terminado.

Bueno, el caso es que hay cosas con las que no comulgo, como que no hay strings nativas y sea un array dinámico del tipo char[], que está muy bien, que su tratamiento es totalmente correcto, pero no deja de ser un array especial como dicen en la documentación. ¿Tanto costará poner una palabra reservada string y que todo siga funcionando igual? Si es que va a ser lo mismo sintácticamente pero no semánticamente (sobre todo para los programadores más que para el lenguaje).

Y, como no, ya he mirado un poco cómo hacer un compilador de mi propio lenguaje. Lógicamente no va a ser uno competitivo, ni nada usable a priori, pero lo principal es aprender a hacerlo. Y, como no, ya he investigado un poco (a parte de las asignaturas de Teoría de Autómatas y Lenguajes Formales y Procesadores de Lenguaje de la carrera) y tengo algunas partes ya resueltas.

Lo primero es hacer la definición del mismo en un lenguaje formal. Vamos, cómo se va a escribir el lenguaje. Y esta es la parte más divertida a la par que compleja, tiene que quedar bien antes de comenzar con la implementación.

Luego está implementar el compilador con sus diferentes fases, que son el análisis léxico (cotar el código fuente en tokens, grupos de caracteres), análisis sintáctico (ver si los tokens con correctos dentro del lenguaje y crear un árbol con la estructura del programa), análisis semántico (comprobar si la estructura del árbol es correcta para dicho lenguaje para comprobar el significado del programa), crear código ejecutable para la máquina destino (a partir del árbol crear código objecto), compilarlo (unir todo el código objeto) y enlazarlo (enlazar la aplicación con las funciones externas del programa).

Qué de cosas ¿no?. Bueno, las tres primeras están más o menos superadas. No es demasiado difícil crear un árbol para un código fuente previamente definido. Pero la cuarta fase, la de crear código ejecutable todavía no la tengo muy clara. He estado viendo por aquí que se puede seguir el modelo MDA pero todavía no tengo la idea mental para hacerlo.

Y, finalmente, en caso de conseguir generar código objeto, se podría utilizar un enlazador (linker) genérico para enlazar el código y crear la aplicación final, por ejemplo, ld de GCC.

Pero vamos, que todavía no lo tengo muy claro. ¿Alguien quiere ayudar? Por cierto, en referencia a esta entrada ya antigua, este lenguaje sería para construir mi propio sistema operativo, es decir, mi lenguaje, mi sistema, mi arquitectura… eso sí, todo libre amigos. ¿Alguien se apunta? Yo sé que algunos de vosotros lo estáis deseando… ;)

P.D.: Por cierto, tampoco tengo un nombre. ¿D++ quizás? Lo digo por lo de mi nombre, y como D ya está cogido…

Cinco Vocales

Hace ya bastante tiempo que Lucía Echevarría, la famosa escritora, dijo en una entrevista que «murciélago» era la única palabra en el idioma español que contenía las 5 vocales. Pues el señor José Fernando Blanco Sánchez, envió esta carta al director de un diario nacional, dando un repaso a la escritora y escribiendo varias palabras con las vocales…

Acabo de ver en la televisión estatal a Lucía Echevarría diciendo que «murciélago» es la única palabra en nuestro idioma que tiene las cinco vocales. ¡Confiturera, frene la euforia! Un arquitecto escuálido llamado Aurelio (o Eulalio… o Ausencio) dice que lo más auténtico es tener un abuelito que lleve un traje reticulado y siga el arquetipo de aquél viejo reumático, desahuciado y repudiado, que consiguiera en su tiempo ser esquilado por un comunicante que cometió adulterio con una encubridora cerca del estanquillo (sin usar estimulador).

Señora escritora: si el peliagudo enunciado de la ecuación la deja irresoluta, olvide su menstruación y piense de modo jerárquico. No se atragante con esta perturbación, que no va con su milonguera y meticulosa educación, y repita conmigo, como diría Cantinflas: ¡Lo que es la falta de ignorancia!

José Fernando Blanco Sánchez

Me llamó la atención en su momento, no quizás por la réplica del señor José Fernando, sino por la ignorancia de la famosa escritora. Lo copié y ahora lo encontré en la inmensidad de mi disco duro por lo que lo pongo aquí, para no incurrir en el mismo delito y para que no se pierda.

La riqueza del lenguaje castellano

Este texto que ahora muestro ya lo había leído yo hacia el año 1995, cuando Internet en España era una cosas rara donde andaban los frikis y que se accedía a través de Infovía de Telefónica (¡qué tiempos!), gracias a mi profesora de Lengua de 2º de B.U.P. que se llamaba Maria José y que no he vuelto a ver.

La información tardaba más en llegar pero llegaba, no sé de donde lo sacaría, pero este texto nos lo puso para ver eso: la riqueza del lenguaje castellano.

Cojones

Si va acompañado de un numeral, tiene significados distintos, según el número utilizado. Así “uno” significa caro o costoso [valía un cojón]; “dos” significa valentía [tiene dos cojones, con dos cojones]; “tres” significa desprecio [me importa tres cojones]; un número muy grande y par, significa dificultad [lograrlo me costó mil pares de cojones].

El verbo cambia el significado. “Tener” indica valentía [aquella persona tiene cojones]; aunque en admiración puede significar sorpresa [¡tiene cojones!]; “poner” expresa un reto, especialmente si se hace en algún lugar determinado [puso los cojones encima de la mesa]. Se los utiliza para apostar [me corto los cojones]; o para amenazar [te corto los cojones].

El tiempo del verbo utilizado cambia también el significado de la frase. Así el tiempo presente indica molestia o hastío [me toca los cojones]; el reflexivo indica vagancia [se tocaba los cojones]; el imperativo significa sorpresa [¡tócate los cojones!].

Los prefijos y sufijos modulan su significado; “a” expresa miedo [acojonado]; “des” indica cansancio [descojonado]; “udo” significa perfección [cojonudo]; “azo” se refiere a indolencia o abulia [cojonazos].

Las preposiciones matizan la expresión: “de” significa éxito [me salió de cojones], o cantidad [hacía un frío de cojones]; “por” expresa voluntad [lo haré por cojones]; “hasta” señala el límite de aguante [estoy hasta los cojones]; “con” indica el valor [era un hombre con cojones], y “sin” la cobardía [era un hombre sin cojones].

Es distinto el color, la forma, la simple tersura o el tamaño. El “morado” expresa el frío [se me quedaron los cojones morados]; la forma el cansancio [tenía los cojones cuadrados]; el desgaste implica experiencia [tenía los cojones pelados de repetirlo]. Es importante el tamaño y la posición [tiene dos cojones grandes y bien plantados]; sin embargo, hay un tamaño máximo [tiene los cojones como el caballo de Esparteros] que no puede superarse, porque si no indica torpeza o vagancia [le cuelgan, se los pisa, se sienta sobre ellos, necesita una carretilla para llevarlos].

Como interjección [¡cojones!] significa sorpresa, y cuando uno se halla perplejo los solicita [¡manda cojones!].

En ese lugar reside la voluntad y de allí surgen las órdenes [me sale de los cojones].

En resumen, será difícil encontrar una palabra, en castellano o en otros idiomas, con mayor número de acepciones.

Esta palabra, tan bonita ella al igual que cargada de significado, es una palabra muy rica que todos usamos o hemos usado alguna vez…

¡Qué cojones, mola un huevo!

Lenguaje de Programación D

Sé que con el ritmo de vida que llevo actualmente va a ser muy difícil, por no decir imposible, cumplir mis sueños respecto a la informática. Pero como soy informático por vocación, siempre me gusta soñar despierto de vez en cuando y buscar información relacionada con esos sueños.

Entre la información que busco es el lenguaje de programción que usaré para construir mi sistema operativo fantástico, fabuloso, estupendísimo, super-mega-guay que va a desbancar al güindos equis pe.

El lenguaje de programación que más me gusta en estos momentos es el Lenguaje de Programación D. Y digo el que más me gusta porque hay cosillas que no me entusiasman demasiado.

Pero como actualmente es el que más me gusta y, además, es un proyecto real, un proyecto que en un futuro puede desbancar (ojalá) a lenguajes como el C++, pues voy a hacer unos pequeños comentarios acerca del mismo.

(más…)

Controversia

Leyendo la página del lenguaje de programación D y nombrando la entrada anterior en el blog, veo que en la versión 0.147 del lenguaje se habían incluido las expresiones regulares teniendo como operador los símbolos “~~”, así la expresión:

if("[a..c]*" ~~ "abcde")
  assert(0);

Indicaba si en la cadena “abcde” existía alguna letra entre el rango de letras “a” y “c”.

Pero parece ser que gracias a los comentarios en el foro, finalmente en la versión 0.148 se han elimitado. Esta es una de las cosas buenas que tiene el desarrollar software con ayuda de los demás. Las cosas que no se deben hacer (no todas por desgracia), finalmente no se hacen (o se deshacen).

Mi opinión es que no se incluya, por supuesto. ¿Por qué? Porque un lenguaje de programación debe proporcionar una herramienta básica para construir software y no debe incluir cosas innecesarias, como las expresiones regulares cuya implementación es bastante compleja y se debe dejar elegir al programador si usa una implementación u otra. ¿Por qué tengo que usar yo la implementación que me proporciona el lenguaje si conozco otra que lo hace mucho mejor? Ya se confía bastante en el compilador como para tener que confiar todavía más y encima obligados.

Extrañamente, además, y para mi grata sorpresa, han añadido el tipo de datos bool de tipo booleano al igual que en C++, Java, Delphi, etc. Pero para mi ingrata sorpresa, han quitado el tipo de datos bit sustituyéndolo por la clase BitArray dentro de la librería std.

Cosas raras están pasando últimamente dentro del lenguaje (¿o dentro de la cabeza de Walter Bright?). A ver en qué termina esto para la versión 1.0.