Bienvenido al sector de Internet que no sabías que existía.

viernes, 4 de octubre de 2019

Tutorial de C: (ce dos puntos, cdots)

En este breve instructivo pretendemos brindarle al lector una introducción al lenguaje C:.
Ce dos puntos, en inglés "c dots", creado en el año 2000 por el holandés Felicitos Van Emoji y el macedonio del norte Bing Bong Smijlejfajs, es un lenguaje de programación basado en C que busca utilizar la simbología que lleva el apellido de su creador Emoji para facilitar la tarea del programador, y para brindarle un momento jovial durante su trabajo que, de otra manera, sería más aburrido.
Veamos algunos operadores y su correspondencia en C.

Asignación de Variables
Funciona de una forma muy similar a C, con la única diferencia de que, como C: es más flexible, permite usar absolutamente cualquier nombre de variable. Si recordamos, C tiene algunas restricciones: no podemos llamar a una variable "int", o "char", o cualquier otro tipo de dato, y tampoco podemos llamarla comenzando con un número, como "3hola".
Para diferenciar el tipo de dato del nombre de variable, C: utiliza el operador ":V". También llamado 'pacman', se debe colocar entre el tipo de dato y el nombre. Ejemplo:

int :V contador ;)

Algo que es importante mencionar, como se puede ver en el ejemplo de arriba, es que el tradicional punto y coma de C se reemplaza por un ";)", también llamado 'emoji de guiño'. Se debe dejar un espacio antes de insertar este operador.

Si quisieramos asignar un valor a una variable, utilizaríamos el comando "=)", también llamado 'carita rara'. De la siguiente forma:

int :V contador =) 34 ;)

O bien, si ya existiera la variable:

contador =) 0 ;)

Comparaciones
En C tenemos comparaciones como <, >, ==, <=, etcétera. En C: también las tenemos, pero con algunas modificaciones. He aquí un listado de las comparaciones en C y a su lado el equivalente en C: :

  • < (menor) pasa a ser o<o (se lo suele llamar "duck" o "pato")
  • > (mayor) pasa a ser o>o (a este también)
  • == (igual) pasa a ser \o/ (se le llama "rexona no te abandona")
  • >= (mayor o igual) y <= (menor o igual) quedan iguales, pues ya son caritas
  • != (distinto) pasa a ser u.u (se lo llama "únu", ¡pero no hay que confundir su ortografía!)
Por ejemplo, dentro de un bucle "if" podríamos tener una condición como sigue:

:thinking:
if (: contador o<o 5 :)¿
      variable+o+ ;)
?

Equivalente en C

if(contador < 5){
      variable++;
}

Aprovechamos para introducir la sintaxis de C:. Podemos ver que en lugar de corchetes {} C: utiliza signos de pregunta ¿?. Se utilizan de la misma forma que C, exactamente. Es decir, se pueden y deben escribir en los mismos lugares que en C. Según los creadores: "no teníamos ganas de pensar nada".
Además, podemos ver que la condición se abre y cierra con caritas sonrientes (: y :), y que antes del bucle se incluyó un emoji de 'pensando'. C: sostiene que ante todo debe ubicarse la diversión, incluso antes que la legibilidad del código, por lo que antes de cada bucle "if" debe colocarse un emoji de :thinking:.

Esto dará pie a nuestra siguiente sección:

Bucles (while, for y sus correspondencias)
Ya vimos el uso del "if" en la sección anterior de este tutorial. Procederemos ahora con los bucles "while" y "for".
Estos bucles tienen una tamaña diferencia en comparación con C, a diferencia de "if". La sintaxis de un "while" es como se muestra a continuación:

:eyes:
boring (: contador o<o 5 :)¿
      :thinking:
      if (: cdots.internal.donkey.happy \o/ true :)¿
            break dem loop XD ;)
      ?
      else oof ¿
            //instrucción
            contador -.- ;)
      ?
?
:yay:

Ese código es el equivalente a lo siguiente en C

while(contador<5){
      //instrucción
      contador--;
}

Es notoriamente más largo, pero los creadores aseguran que "la diversión que provoca programar en C: lo vale, y mucho". Algunos programadores, sin embargo, difieren con creces al respecto.

Analicemos el código del "while" en C:. Primero, vemos que el nombre del bucle es "boring". Esta es la diferencia más notable a la hora de programar, pues es el único lenguaje que utiliza este término. También podemos ver una gran presencia de emojis y stickers, pues se debe incluir un :eyes: antes del bucle, y un :yay: posteriormente. Esto simboliza al programa aburriéndose y luego alegrándose cuando el bucle termina; los creadores afirman: "nuestros estudios indican un bajo nivel de adrenalina en el CPU al ejecutar ciclos while en C, sin embargo, los ciclos boring en C: han aumentado estos niveles y por consiguiente la esperanza de vida y felicidad promedio de nuestros computadores".

Además, podemos ver a simple vista que todo ciclo 'boring' posee un 'if' dentro suyo, con el :thinking: que le corresponde. Vemos que se corrobora el estado de una variable de un objeto que no nos interesa mucho a estas alturas como programadores (ya veremos tutorial de objetos en C: en otra ocasión). Lo que nos importa aquí es lo siguiente:

"cdots.internal es un método que accede a las variables y objetos internos de C:"

Uno de ellos es el "donkey", objeto interno muy muy importante en C:. Este 'burro' tiene una variable que representa su estado de felicidad. Básicamente, está feliz si no se ejecuta un ciclo 'boring'. Entonces, cuando el burro esté feliz, significa que debe salir del ciclo, y por eso llama al comando "break dem loop XD", que se debe escribir tal cual lo hemos enunciado. Si les causa gracia, pues los creadores de C: han logrado su cometido.
Finalmente, vemos que el "--" de C se convierte en "-.-" en C:. Una sutileza.
Lo mismo sucede con "++", esto se escribe "+.+".

Uno podría plantearse, ¿para qué es necesario incluir un break si estamos hablando de un ciclo equivalente al 'while'? Sencillo: los creadores olvidaron codificar el ciclo 'boring' de forma correcta, y nunca se termina a no ser que se rompa explícitamente. Por eso hay que hacerlo a mano y controlando el estado del 'donkey'.

Otra cosa a notar es el "else oof". Normalmente en C uno tiene "if", "else if", y "else". Esto ha sido reemplazado en C: por "if", "else ree", "else oof", respectivamente.

Ahora bien, intentemos ver el ciclo "for":

:robertdowneyjunior:
four (: int :V i =) 0 ;) i o<o 5 ;) i+.+ :)¿
      :lol:
      //instrucción
?

Equivalente en C

for(int i=0; i<5; i++){
      //instrucción
}

Vemos que la sintaxis de este es mucho más corta que la de un 'boring', pero la condición es absolutamente ilegible. Intentemos desglosarla a continuación:

  • (:, apertura de paréntesis
  • int :V i =) 0, se encarga de inicializar la variable "i" en 0 como hemos visto en la primera parte del tutorial
  • ;) es el punto y coma de C:, y siempre debe escribirse a continuación de un espacio, recordemos.
  • i o<o 5 indica que debe repetirse mientras i sea menor a 5
  • ;) otro punto y coma
  • i +.+ incrementa i en 1, como i++ de C
  • :) clausura de paréntesis.
Es decir, su sintaxis es prácticamente idéntica a la de C, con la sutil diferencia de que todo se escribe utilizando la sintaxis ilegible, absolutamente detestable, pero "hilarante" (según los creadores tarados), plagada de emojis, de C:.
Así como los otros bucles, el bucle "for" (que en C: se escribe "four" porque "lol why not", de acuerdo a los creadores) lleva un sticker o emoji de Robert Downey Jr., ya que su cumpleaños es el 4 de abril, o 4/4. A los creadores les causó tanta gracia esta elección que para conmemorarla añadieron como obligación incluir un :lol: antes de la instrucción dentro del ciclo "four".

Algunos ejemplos
Veamos algunos ejemplos de programas en C:. El primero es uno que devuelve los primeros 14 números de la sucesión de Fibonacci a partir del 3ero (0 y 1 no se muestran):

Podemos ver como nuevo el operando o+o que equivale a "+" en C. También existe el o-o que equivale a "-".
Vemos la función thiccPrint() que se encarga de imprimir en pantalla el contenido de una variable.
También, podemos ver que la variable dentro del ciclo "four" no se llama "i", como comúnmente se suele llamar, sino que se llama "B". Esta es una sugerencia de los programadores, para incentivar la cultura dank, referenciando al "B button".

Otro ejemplo. El programa a continuación halla una aproximación de la raíz cuadrada de un número basado en el método Babilonio:
Vemos que el tipo "float" se llama "pennywise" en C:, como un chiste interno referenciando al payaso de la saga "IT". También podemos ver las operaciones "*" y "/", que en C: se escriben *.* y (o/o). La división busca simbolizar una nariz de un cerdo, chancho, puerco, cochino, o jamón. Aunque usé un '/' y anduvo bien igual, qué se yo. Lo mismo con un "+". Seguro se olvidaron de anularlo.

(Para mí el "compilador" de C: son solo un par de #define y listo, qué querés que te diga).

Crean o no, estos programas funcionan a la perfección.

Espero que no haya quedado ninguna duda sobre como comenzar a utilizar C:. En otra ocasión explicaré el uso de arrays y de objetos.

Ante el surgimiento de cualquier pregunta, no dudes en realizarla.

Día emoji.