¿Qué lenguaje de programación aprendo?

A la hora de elegir aprender un nuevo lenguaje de programación, muchas veces nos guiamos por su reputación en un momento dado, por foros o por comparativas de alguna web.

Sin embargo, ¿te has planteado alguna vez qué lenguaje de programación merece realmente la pena aprender?

NOTA: Esta es una opinión personal, y cada uno es libre de tener su propia opinión. Así que a insultar a vuestra casa. En cambio, los comentarios “constructivos” y otras opiniones serán bien recibidos.

En Febrero de 2011, las estadísticas de uso de los distintos lenguajes de programación estaban así (según Tiobe):

image

Entonces, ¿aprendemos Java? Es el más usado, y se escucha mucho hablar de Java. C y C++ también tienen tirón, les podría dar una oportunidad. PHP baja, así que no merece la pena aprender PHP, porque seguro que dentro de unos años ya nadie lo usa.  ¿Y Python? Es el lenguaje de moda: últimamente todo el mundo habla maravillas de él.

Pues bien, mi opinión es que no merece la pena guiarse por graficas como esta, ni por lo que lees en foros. Mi respuesta es clara y contundente: “aprende a programar”.

“Olé tus cojones!” estarás pensando. “Estoy aquí para ver que lenguaje me recomiendas aprender y me sueltas ’aprende a programar’ pero sin decirme qué lenguaje”.

Pues si: el lenguaje es lo de menos: lo más importante es saber programar en pseudocódigo, conocer y controlar estructuras de datos, estructuras de control de flujo, recursividad, distintos paradigmas, etc…. vamos, saber programar en papel. Una vez que seas capaz de diseñar un buen algoritmo sobre papel, serás capaz de implementarlo en un lenguaje especifico.

Lo que te recomiendo es que aprendas bien el paradigma Orientado a Objetos: polimorfismo, herencia, interfaces, etc… y luego le pegues un vistazo a los patrones de diseño.

Cuando domines bien esto, serás capaz de aprender un nuevo lenguaje en cuestión de días.

Si aún así estás esperando que te recomiende un lenguaje nuevo para que aprendas a programar con él, yo te recomendaría C#, ya que es muy sencillo y muy similar a Java, con lo que matarías dos pájaros de un tiro.

 

Fuente: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Categorías: General

Cygwin: Trabaja en Windows como si fuera Linux

9 julio 2011 1 comentario

image

¿Hechas de menos usar la consola en Windows como la usas en Linux? La verdad es que la consola de Linux es bastante intuitiva y potente. Puede que el estar hecho por y para informáticos que trabajan en modo consola la haya hecho tan versátil.

Si quieres usar la consola en Windows como si estuvieras trabajando en Linux, tu solución se llama “CygWin”. Cygwin es una colección de herramientas que convierten la consola de Windows en una consola de Linux, con comandos como “ls”, “grep”, “ssh”, “cat”, etc…

Cygwin es totalmente gratuito y se puede descargar desde este enlace.

Categorías: Programacion Etiquetas: , ,

Instalar Perl en Windows

14 junio 2011 2 comentarios

Ejecutar un script de Perl en Linux es muy fácil, ya que Perl viene instalado por defecto con Linux (o al menos en las distros que yo he probado), pero en Windows no es tan fácil. En Windows debemos instalar Perl y configurar ciertos parámetros antes de poder ejecutar un script.

Sin embargo hay una forma de hacer que instalar Perl en Windows sea muy fácil: “Active Perl”.
ActivePerl es un paquete de Perl “todo-en-uno” que nos instalar y configura Perl en un par de pasos, ya que lo hace todo por nosotros. Además, también instala “PPM"" (Perl Package Manager) el cual nos simplificará el proceso de instalar nuevos paquetes de Perl.

Es totalmente gratuito y nos lo podemos descargar de la siguiente web: http://www.activestate.com/activeperl

Categorías: Programacion Etiquetas:

Acceder a MySQL desde Java

Imaginamos que creamos una base de datos MySQL para nuestra aplicación en Java. ¿Cómo podemos conectar nuestra base de datos con nuestra aplicación? Esto es lo que resolveremos con esta entrada.

1. Debemos descargar el conector MySQL para Java, que lo podemos obtener desde la página oficial:

http://www.mysql.com/downloads/connector/j/

2. Añadimos el fichero .jar descargado y lo adjuntamos a nuestro proyecto: Ejemplo para NetBeans.
Botón derecho sobre la carpeta Libraries y añadir archivo .jar

paso1

Desde este momento ya tenemos el conector agregado a nuestra aplicación.

 

3. Instanciamos y utilizamos la librería. Para este caso, hemos creado una clase conexión con métodos que reciben una consulta y nos devuelvan el resultado según sea, en nuestro caso, tipo Integer o DefaultTableModel .

Con esta función haremos una consulta SQL y guardaremos el resultado en un DefaultTableModel que será el objeto que nos devolverá esta función.
public DefaultTableModel HacerConsulta(String sql,String[] columnas)
{
. . .
}
 

Con este método ejecutaremos aquellas consultas que sean Insert, Delete y Update. Devuelve un entero que representa se hay error.

public int EjecutarConsulta(String sql)
{
. . .
}
 

Esta función la utilizaremos para consultar un valor escalar. Por ejemplo una sentencia SQL del tipo: “SELECT Count(*) FROM almacen”.

public int ConsultarEscalar(String sql)
{
. . .
}
 

Puedes obtener el fichero original más abajo, el siguiente fragmento contiene nuestra clase de conexión lista para copiar y pegar.

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
 
public class ConexionMySQL {
    private String ruta;
    private String usuario;
    private String clave;
 
    private Connection conexion;
    private Statement statement;
    private ResultSet resultSet;
    private DefaultTableModel modelo;
 
    public ConexionMySQL(String ruta,String usuario, String clave){
        this.ruta = "jdbc:mysql://" + ruta;
        this.usuario = usuario;
        this.clave = clave; 
        statement = null;
        resultSet = null;
        modelo = null;
 
        try {
            // Se registra el Driver de MySQL
            DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
    }
 
    public void Conectar()
    {
        try {
            conexion = (Connection) DriverManager.getConnection(ruta, usuario, clave);
            statement = (Statement) conexion.createStatement();
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    public void Desconectar()
    {
        try {
            statement.close();
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    public DefaultTableModel HacerConsulta(String sql,String[] columnas)
    {
        try {
 
            modelo = new DefaultTableModel();
 
            for(int i=0; i<columnas.length; i++)
            {
                modelo.addColumn(columnas[i]);
            }
 
            Conectar();
 
            resultSet = statement.executeQuery(sql);
 
            Object[] datos = null;
            while (resultSet.next()) {
                datos = new Object[modelo.getColumnCount()];
                for (int i = 0; i < modelo.getColumnCount(); i++) {
                    datos[i] = resultSet.getObject(i + 1);
                }
                modelo.addRow(datos);
            }
            resultSet.close();
            Desconectar();
 
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return modelo;
    }
 
    public int EjecutarConsulta(String sql)
    {
        int error = 0;
        try {
            Conectar();
            error = statement.executeUpdate(sql);
            Desconectar();
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return error;
    }
 
    public int ConsultarEscalar(String sql)
    {
        int valor = -1;
        try {
            Conectar();
 
            statement = (Statement) conexion.createStatement();
            resultSet = statement.executeQuery(sql);
            if (resultSet.first()) {
                valor = resultSet.getInt(1);
            }
            resultSet.close();
            Desconectar();
 
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return valor;
    }
 
}

.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }

Categorías: Programacion Etiquetas: ,

Eliminar espacios en blanco en perl

Perl nos ofrece muchas facilidades a ala hora de trabajar con cadenas de texto, como por ejemplo hacer un split de una cadena y almacenar los valores en un array.
El problema viene cuando , por ejemplo, consideramos una coma (,) como carácter de corte y hay muchos espacios delante y detrás, los cuales no nos interesan. Entonces… ¿cómo eliminamos esos espacios en blanco?

Pues muy sencillo. Con la siguiente expresión regular:

$_ =~ s/\s//g;

Vamos a ver un ejemplo sencillo:

my $string= "hola, caracola   ,    esto es una cadena       larga "

my @array= split(/,/, $string); 

foreach(@array) 

   $_ =~ s/\s//g; #Elimina espacios en blanco
   print $_; 

   print “\n”;
}

La salida obtenida es:

hola
caracola
estoesunacadenalarga

Categorías: Programacion Etiquetas: , ,

Los números de 2010

Los duendes de estadísticas de WordPress.com han analizado el desempeño de este blog en 2010 y te presentan un resumen de alto nivel de la salud de tu blog:

Healthy blog!

El Blog-Health-o-Meter™ indica: Wow.

Números crujientes

Imagen destacada

Alrededor de 3 millones de personas visitan el Taj Mahal cada año. Este blog fue visto cerca de 35,000 veces en 2010. Si el blog fuera el Taj Mahal, se necesitarían alrededor de 4 días para visitarlo.

 

En 2010, publicaste 31 entradas nueva, haciendo crecer el arquivo para 97 entradas. Subiste 63 imágenes, ocupando un total de 8mb. Eso son alrededor de 1 imágenes por semana.

The busiest day of the year was 8 de diciembre with 204 views. The most popular post that day was Windows 7: Como activar el AeroPeek.

¿De dónde vienen?

Los sitios de referencia más populares en 2010 fueran search.conduit.com, google.es, nosoyfriky.es, google.com.ar y google.com.mx.

Algunos visitantes buscan tu blog, sobre todo por activar aero peek, activar aero peek windows 7, ojo, como activar aero peek en windows 7 y aero peek no funciona.

Lugares de interés en 2010

Estas son las entradas y páginas con más visitas en 2010.

1

Windows 7: Como activar el AeroPeek septiembre, 2009
139 comentários

2

Como resolver los puzzles del «Professor Layton» octubre, 2009
6 comentários

3

Como configurar un repositorio SVN en Google Code agosto, 2009
6 comentários

4

Cuenta gratuita Spotify sin invitacion enero, 2010

5

Instalando los driver de NVIDIA en Windows7 septiembre, 2009
9 comentários

Categorías: General

Los resultados del CodeCamp 2010

Hacia tiempo que no publicaba nada en el blog. La verdad que últimamente he estado bastante ocupado. Sin embargo, este fin de semana me lo he tomado libre y he estado en el CodeCamp programando  con WP7. La verdad que el móvil promete mucho. A ver si las operadoras españolas lo dejan por buen precio y me pillo uno.

image

Para ir abriendo boca, una pequeña captura del juego que estoy haciendo: “Daa-Boom!!!”. Ya os contaré de que va. Ahora es top-secret!

Categorías: Mis cosas, XNA Etiquetas: , ,

Error 404

7 septiembre 2010 4 comentarios

image

 

Que grande la pagina de error de www.amazing.es

Categorías: Frikismo, Humor Etiquetas: , ,

Pex for fun: Retos de programacion para los ratos muertos

3 septiembre 2010 2 comentarios

Interesante lo que me he encontrado hoy por internet leyendo algun blog (lo siento, no me acuerdo de la fuente).

Se trata de «Pex for fun». Es una pagina web que plantea «puzzles» de programacion en C#, Visual Basic y F# (alguien usa F#?).

Cuando le das a «Ask Pex» obtendrás una salida, y mirando la salida esperada debes resolver el puzzle. Por ejemplo, acabo de hacer un puzzle y al final consistia en devolver el valor maximo contenido en ese array. Lo he visto al 2º intento, ya que al 1º creia que se trataba de sumar cuantos elementos eran distintos de 0. Esta gracioso y para pasar un rato no esta nada mal.

Tambien dispone de «Duelos»  para picarte con tus amigos.

La web es http://www.pexforfun.com

Que aproveche!

Categorías: Frikismo, Programacion Etiquetas: , ,

Nuevo Blog de XNA

2 septiembre 2010 Deja un comentario

Logo100XNA

Tengo el blog abandonado. Muy abandonado últimamente.

Sin embargo, debido a que mayoritariamente las entradas del blog trataban sobre XNA, he decidido crear un blog nuevo donde solo se hable de XNA y algunas cosas relacionadas con la programacion de videojuegos. De esta forma, dejo este blog para mis frikadas y otras cosas sin relacion con XNA.

Pues lo dicho, nuevo blog: www.100xna.wordpress.com

PD: A alguien le apetece mejorar el logo? Se nota que mi dominio del paint es limitado, XD

Categorías: Mis cosas, XNA Etiquetas: