CLOC la herramienta para contar líneas de código

por:

Cloc la herramienta para contar las líneas de código

En algunos casos cuando desarrollamos proyectos, no interesa llevar un conteo de cuantas líneas hemos escrito para estimar el trabajo que nos ha llevado hacer el proyecto. Pero medir este número muchas veces es complejo, puesto que podemos tener muchos ficheros fuente y algunos IDEs no traen una herramienta que nos ayude a contarlas. Para ello hoy les quiero hablar sobre CLOC.

Cloc tu contador de líneas de código

Aunque como comentaba anteriormente, las líneas de código no es una buena medida del esfuerzo de un proyecto, ya que podemos tener algoritmos muy complejos que ocupen pocas líneas, en algunos casos es interesantes medirlas. Pero también encontramos distintas maneras de medir las líneas de código, medir solo el código, medir el código y los comentarios o medir el código, los comentarios y las líneas blancas que haya en los archivos. Además en ciertos lenguajes como C o C++ es útil diferenciar si las líneas son en ficheros de cabecera, o en ficheros fuente.

Leer más

5 habilidades necesarias para un informático

por:

Las habilidades necesarias para un informatico

 

Este artículo surge de una charla con otros compañeros de profesión, algunos de ellos novatos y otros con varios años de experiencia a sus espaldas. En ella nos planteábamos que cosas consideramos indispensables dentro de nuestro ámbito, la informática y esta es la conclusión a la que llegamos.

1 Conocer un lenguaje o tecnología en profundidad

Aunque muchos, entro los que me incluyo, hacemos desarrollos en múltiples lenguajes según lo que se nos pida, llegamos a la conclusión que es necesario saber algún lenguaje a un nivel medio-avanzado. Esto nos va a permitir desarrollar por una parte nuestra carrera profesional y por otra tener un conjunto de conocimientos amplios sobre programación. Esto último es muy útil cuando cambiamos de lenguaje o tecnología, porque ya sabemos dos cosas, cómo plantear el problema y cómo lo resolveríamos en el lenguaje que nos sentimos más cómodos, así que lo único que tenemos que hacer es ver si podemos adaptar esa estrategia a nuestro lenguaje actual.

Si un informático cumple este primer punto, es poco probable que se atasque al plantear o intentar resolver, aunque sea en pseudocódigo, la mayor parte de los problemas que le vayan surgiendo.

2 Comprender el inglés

En mi caso me he encontrado con muchos compañeros y usuarios en foros de internet, que preguntan cosas como las siguientes: ¿Dónde esta la documentación oficial de Apple en español?, ¿Por qué stackoverflow está en ingles? ¿Cómo pongo X programa o IDE en español? etc. El inglés es algo necesario para cualquier informático, actualmente la mayor parte de documentación técnica, programas, foros y webs de tecnología están en este idioma, así que sin él, es como desarrollar sin tener casi internet. En mi caso no soy un experto en inglés, pero tengo la suficiente comprensión lectora como para entender el idioma y la capacidad de poder redactar en él y que me entiendan (esto último también es importante).

Leer más

Comprobando las fugas de memoria con Valgrind

por:

Una de los errores más comunes cuando realizamos un programa con un lenguaje como C, son las fugas de memoria (memory leaks). Este error aunque parezca menor, tiene una gran importancia porque estamos desperdiciando parte de los recursos de nuestro equipo, dejándolos inaccesibles para todos los programas.

Cómo se produce una fuga de memoria

Una fuga de memoria consiste en reservar memoria dinámica y luego modificar el puntero que apunta a esta zona, dejándola inaccesible.
Por ejemplo en este código hay una fuga de memoria, que se produce al reutilizar el puntero sin liberar antes el bloque de 5 enteros:

#include <stdio.h>
#include <stdlib.h>

int main(){

  int *pt = NULL;
  pt = (int *)malloc(sizeof(int)*5);
  
  //mas codigo ...
  pt = (int *)malloc(sizeof(int)*10);
  free(pt);

}

Leer más

Prolog el lenguaje de programación lógico

por:

Prolog el lenguaje de programación lógico

Hoy en día cuando queremos estudiar o realizar un proyecto tenemos una gran cantidad de lenguajes a nuestra disposición. Pero hay muchos de ellos cuyas características principales son similares. Sin embargo dentro de ese grupo de lenguajes distintos y poco conocidos está Prolog.

¿Qué es Prolog?

Prolog es un lenguaje lógico, utilizado para programar en el campo de la inteligencia artificial. Sus características son bastante peculiares ya que no sigue la filosofía estructurada ni la orientada a objetos. Algunas de las cosas llamativas que podemos encontrar en el mismo es que no hay bucles.

El lenguaje se basa principalmente en:

  • hechos algo que siempre es verdadero.
  • reglas algo que para que sea verdadero se tienen que cumplir aquellas condiciones del cuerpo de la regla.

El proceso de resolución

La solución que suele ofrecer es verdadero o falso y para ello intenta buscar el objetivo que le indicamos analizando las cláusulas (hechos y reglas) de arriba a abajo. Además utiliza el algoritmo de backtracking para intentar al alcanzar la solución aunque sea utilizando múltiples reglas.

Leer más

Qué son los snippets o fragmentos de código

por:

Que son los snippets o fragmentos de codigo

Normalmente cuando desarrollamos programas, nos encontramos con cierto código que se suele repetir de manera constante en la mayoría de los proyectos. Normalmente esto lo solemos encapsular en una clase, en una plantilla de proyecto o en un fichero externo, según el lenguaje y plataforma que utilicemos. Sin embargo hay otras líneas de código, que sin ser tan frecuentes como las anteriores, sí nos gustaría tener a mano para solucionar un problema o recordar de una manera rápida cómo se solucionaba el mismo.

Snippets o fragmentos de código

Como sabréis los lectores más fieles a mis artículos, normalmente intento utilizar los términos en español para las palabras inglesas, siempre que esa traducción se use con frecuencia. En este caso, la mayoría de gente que conozco siempre dice snippets, así que he decidido incluir el término en el artículo.

Leer más

JSON el formato de datos mas popular

por:

Con el creciente desarrollo de Internet en los últimos tiempos debido a los dispositivos móviles, hemos asistido a una revolución en la manera de intercambiar datos. La mayoría de servicios nacieron para ser consultados desde un navegador web, pero se tuvieron que ir adaptando para poder hacer aplicaciones nativas, que permiten un mayor y mejor uso de los mismos. En estos casos la mayoría de las empresas decidió que la manera más sencilla de proveer a esas aplicaciones de datos, sería mediante una API.

En un principio la forma de comunicar datos entre dos aplicaciones fue XML, un lenguaje de marcado (similar a HTML). Pero su sintaxis es poco clara y en muchos casos tiende a generar ficheros con mucha sintaxis para la información real que queremos transmitir. Para sustituir a XML el formato que mejor se ha posicionado es JSON.

JSON

JSON es un formato mucho más claro, con mucha menor sintaxis al no utilizar etiquetas para indicar cada contenido y esta basado en un sistema similar a los diccionarios (relación clave-valor). Este formato ha sido elegido por la mayoría de las APIs y desarrollos en los últimos años y actualmente XML se está quedando relegado a aplicación antiguas.
Leer más

Visual Studio y la telemetría

por:

Una de las cosas más criticadas de Windows 10 ha sido que invadía la privacidad por su sistema de telemetría. Hoy os vamos a explicar qué es y qué datos nos da la telemetría utilizando un ejemplo real de aplicación realizada con Visual Studio.

Añadiendo telemetría a nuestra aplicación

Lo primero que tenemos que hacer es crearnos una cuenta de Azure para que recoja y procese nuestros datos sobre telemetría. Después cuando vayamos a crear nuestra aplicación debemos marcar la siguiente opción:

La telemetria en Windows 10 y Visual Studio

Esto va a cargar de manera automática información sobre el uso de nuestra aplicación a nuestra cuenta de Azure.

Leer más

Creando nuestra primera aplicación universal

por:

El concepto de aplicación universal (UWP Universal Windows Apps), es la nueva propuesta de Microsoft para competir con las aplicaciones móviles, aunando los esfuerzos del desarrollo para el escritorio y el desarrollo móvil. Se denominan universales porque su función es que el mismo código, genere una aplicación que se pueda usar en Windows 10, Windows 10 Mobile, XBOX One (con la actualización con Windows 10) y otros dispositivos con el sistema de Microsoft.

Logo de las aplicaciones universales

Primeros pasos con nuestra aplicación universal

Para realizar nuestra aplicación, lo primero que necesitamos es instalar y configurar el ecosistema de Microsoft:

  • Windows 10: necesitamos este sistema operativo para desarrollar estas aplicaciones
  • Visual Studio: es el IDE con el que las vamos a desarrollar
  • Activar Hyper-V para la emulación de dispositivos (opcional).

 

Conocimientos necesarios

Estas aplicaciones se realizan en el lenguaje C# y para la interfaz usan XAML. Si ya has trabajado con aplicaciones para escritorio con WPF, ya tienes los conocimientos básicos.

 

Demostración

Como explicar todo el proceso es demasiado complejo para hacerlo con imágenes, he creado un pequeño vídeo (es de los primeros que hago, no seáis muy duros), donde explico el proceso y muestro como se vería la App en Windows 10 y Windows Phone 10.

 

Plantilla para crear las aplicaciones

Actualmente hay varios usuarios que se han dedicado al desarrollo de plantillas para esta plataforma. Un de las más completas es Template 10. Esta proporciona código para crear entre otras cosas, el famoso menú hamburguesa.

Este desarrollo se puede complentar con el kit de herramientas comunitarias, para conseguir desarrollos mucho más pulidos y de mayor calidad.

Programación paralela con MPI

por:

Hace algún tiempo empezamos a escribir en Somos Binarios sobre la programación paralela, explicando algunos mecanismos para lograrla y los conceptos básicos. Un seguidor nos comentó que sería bueno hablar de MPI como máximo exponente de la programación paralela y por ello tenemos este artículo.

Programación paralela de altas prestaciones con MPI

MPI es una biblioteca pensada para la realización de programas altamente paralelizables en una única máquina o en un entorno formado por varias máquinas conectadas a través de una red.

Aunque hay muchas implementaciones de MPI básicamente es usado en programas en C o C++ que son los que realmente explotan al máximo los recursos que tenemos. En nuestro ejemplo vamos a usar C.

Instalando MPI

Lo primero que debemos hacer es instalar esta librería ya que posee un conjunto de funciones propias y para usarlas es necesario utilizar su compilador y su modulo de ejecución.

En Linux lo podemos instalar facilmente con:

 sudo apt-get install libcr-dev mpich2 mpich2-doc

Si vemos lo que nos instala, podemos comprobar que hay un compilador de c (mpicc), uno de c++ (mpic++) y el módulo de ejecución (mpirun).

Resultado de la instalación de MPI en un ordenador

Leer más

Como hacer una aplicacion multilenguaje

por:

Te enseñamos cómo hacer una aplicación multilenguaje

Una de las cosas que uno se plantea cuando está desarrollando un proyecto más o menos serio, es la difusión del mismo ya sea de manera gratuita o mediante su venta. En este sentido, rápidamente nos damos cuenta que necesitamos soportar distintos lenguajes para poder tener éxito.

En este punto podemos decir que nosotros tenemos cierta suerte, ya que el español es un idioma bastante extendido y con gran cantidad de hablantes. Pero no podemos dejar de lado el soporte como mínimo para el inglés y los idiomas de nuestro público objetivo.

Creando una aplicación localizada

En muchos casos en lugar del término multilenguaje o multilengua, se suele utilizar el término localizada, aunque esto incluye varias cosas como soporte al idioma y al formato regional con el que se escriben los números, las fechas, la moneda etc.

La localización de una aplicación es una cuestión que está ampliamente soportada en la mayoría de plataformas por parte de nuestro IDE. Por ello es importante seguir las indicaciones que nos da el creador del lenguaje o la plataforma.
Leer más