¿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

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 1 comentario

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

18 mayo 2011 1 comentario

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: , ,
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 84 seguidores