Mostrando entradas con la etiqueta lenguajes de programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta lenguajes de programación. Mostrar todas las entradas

viernes, 19 de marzo de 2010

Programador de iPhones con 15 años







Este chico con tan sólo 15 años ha creado un juego para el iPhone que se ha llegado a comercializar. Si te interesa la noticia puedes consultarla en El Pais.

lunes, 8 de marzo de 2010

Una profesión con futuro: Desarrollador de aplicaciones para móviles

Según un reciente estudio de la consultora research2guidance, se espera que el mercado de las aplicaciones para móviles crezca un 807% en los próximos cuatro años, tal y como cita el periódico El Pais.

viernes, 15 de enero de 2010

Práctica sobre funciones en C


Para los que quieran practicar en la realización de funciones en C, os propongo estos ejercicios.

domingo, 20 de diciembre de 2009

Cuento de Navidad para programadores

Aprovechando que se acerca la Navidad, os traigo una particular versión de Cuento de Navidad, de Charles Dickens.
Una de las múltiples traducciones se puede leer acudiendo a este enlace
A disfrutarlo y espero que os guste.



Cuento de Navidad para programadores


Bueno, niños y niñas, erase que se era unas navidades de las postrimerias del siglo XX, antes de que los padres de vuestros padres hubieran nacido todavía,
que existia una empresa de programación llamada BUGSOFT S.A.

Dicha empresa estaba dirigida por Ebenizer Bughe, un hombre cuyo corazon era duro y no tenia la mas minima consideraciónes para con sus programadores, a
los que tenia aterrados con mil y una torturas, como programar en Visual Basic en maquinas 286 hasta altas horas de la madrugada, usando el edlin. Les
negaba el pan y la sal, los buenos compiladores, las revistas de juegos y los CD-Rom de imagenes subidas de tono. El sueldo era misero. Ni les dejaba acercarse
a un ordenador con Internet ("WWW, que tonteria, coged y trabajad, haraganes, que para eso os pago cinco duros la hora"). Incluso cuando su sobrino GNUberto
le trajo un compilador gratuito de C++, se quedo atónito y dijo:

"Gratis, ja, seguro que trae un troyano. Además, donde este un buen VBasic 1.0 en un 286 ... estos haraganes no dan para mas".

Ni control de versiones, ni depuradores, ni documentacion adicional, ni chocolatinas gratis. La vida de los programadores de BUGSOFT era horrible, pero
lo soportaban debido a la necesidad de sus familias.

La noche de Navidad, en la cual Ebenizer Bughe Había obligado a sus Empleados a quedarse hasta bien entrada la noche a hacer copias de seguridad en microdrives
usados ("La seguridad es lo primero, que de este código comeis"), Ebenizer sintio una conmoción en millones de bits que gritaban angustiados.

Fue mientras repasaba en la cama las jornadas de trabajo de sus empleados para los proximos meses, decidiendo entre si conectarles directamente a la cafetera
o implantarles teclados biónicos. Le entro un sopor estraño y oyo voces lejanas.

De pronto, se apareció en la pantalla del portátil la imagen espectral de su compañero, Joseph Palette. Habían sido compañeros de antaño, en los tiempos
dificiles, al fundar BUGSOFT. Tras su muerte por el ataque de una ciclo de color desbocado, ya nada Había sido lo mismo. Ebenizer empeoro mucho Su carácter,
malo de por si.

La imagen que tenia Joseph P. era horrible. Intento apagar el portátil, pero fue en vano. La imagen de la pantalla se dirigio a el. En voz espectral sensorround
stereo 3d 32 bits dijo:

"Ebenizer, he venido a intentar enmendarte..."

"Joseph, te veo bien scaneado... pero ¿enmendarme en que? Produzco programas baratos que la gente compra. Salen en todas las revistas del sector. Si, se
cuelgan un poco, pero, salvo el caso de la mujer electrocutada, nunca ha pasado nada... y estaba usando una copia pirata, o sea que ella se lo buscó..."

"Ebenizer, sabes que lo que haces no esta bien. Explotas a tus empleados, les exiges mas de lo que pueden dar, las fechas de entrega son ridiculas y no
les das las herramientas adecuadas, tu software apesta, es una colección de bugs visuales que disimulan los graves fallos conceptuales de los diseños...
La documentacion la genera un programa de inteligencia artificial de 5 lineas y tu servicio de atención al cliente es un loro conectado al telefono...
Enmiéndate, te lo pido, o acabaras donde yo estoy."

"¿En el Infierno...?"

"No, en la sección de sistemas operativos avanzados de Microsoft. Y eso es malo, peor de lo que te imaginas"

"Me asustas, Joseph. Pero no. Esas son las reglas del negocio, según nuestra Biblia, el "Mein Kode", de Bill Gates... Lo siento, pero no..."

"Bueno, yo solo vine a advertirte. A lo largo de la noche, vendran tres espectros para reconvenirte, pero si al llegar al ultimo no has cambiado de idea,
pues, me parece que te tienen asignado el departamento de atención al cliente del Win 95, me temo... Cuidate, Ebenizer"

Tras la visita del espectro de Joseph P., Ebenizer Bughe se sintio incomodo. El ordenador se Había colgado con una GPF, y penso que todo era resultado de
las largas horas que Había pasado programando en Visual Basic. Su medico ya se lo Había advertido, que era malo para su cerebro. Pero bueno, que sabran
esos medicos.

Intento dormir, contando bugs, como solia hacer...

No pudo.

Una hora despues de que se marchara Joseph P., apareció el primer espectro. Ebenizer se asusto, era la primera vez que veia un Spectrum hablar.

"Hola, soy el espectro de los Bugs pasados. ? Me recuerdas ? "

"Pues no mucho, la verdad. ? Debería ?"

"Si, recuerda la cantidad de horas que esperabas cargando mis cintas con tu código, y lo que luchabas porque tus programas tuvieran ese toque profesional
que tanto anhelabas. Vivias entre peeks y pokes, y conocías mis interioridades al dedillo. Anhelabas ser un gran programador, con un código correctamente
estructurado. Incluso leias cosas sobre orientacion a objetos y código reusable, antes de que fuera factible. Y lo que te divertias buscando tus bugs en
mis interiores. ¿Qué fue de ese Ebenizer?"

"Era un niño. Fueron buenos tiempos, hasta que piratearon todos mis programas en la cinta que venia en la revista ZXYMAS. La gente pensaba que estaba loco.
Las chicas no se acercaban. No ganaba un duro. Y lo de la Programación orientada a objeto es un cuento mas tragico que "La Sirenita". No, asi no se gana
dinero, la verdad. Hay que hacer código, mucho, aunque sea malo por dentro. Eso si , que sea muy bonito y espectacular, que es lo que la gente compra.
Si hay bugs, pues es una pena, pero somos humanos, ¿no?. Y para hacer mucho código hay que explotar a la gente. Bueno, se dejan ser explotados, asi que
no importa .. He crecido y este es el mundo real, y yo soy muy del mundo real..."

"Oh, Ebenizer, hablas como piensa un alto jerifalte de IBM, al que no pude convertir y ahora depura bugs del Pentium en tiempo real... Te vas a condenar,
pero que venga el siguiente espectro..."

Y ese espectro llego... Era un PC del monton, como cualquier otro, aunque era raro el cartel de "Auténticos Pentiums falsos Inside". Le hablaba pausadamente,
porque cada poco se paraba a hacer Swap del disco duro.

"Oh, Ebenizer, soy muy infeliz...."

"Si yo fuera un PC, también lo seria..."

"No, es que veo la desdicha de tus empleados. Les matas a trabajar,

les cambias todas las especificaciones, les das malos diseños, les pones teclados hasta en el servicio, y no les dejas tiempo para corregir los errores,
lo cual es un pelin difícil de hacer con el debug del DOS 1.0..."

"Pero si es que son unos haraganes. Hasta me han pedido herramientas avanzadas. Ya. Lo que quieren es que los lenguajes hagan su trabajo. Por Dios, que
den gracias a que no les hago programar en código maquina directamente..."

"Pero tienen familias a las que apenas pueden mantener, y sufren mucho en sus empleos..."

"Nada, el cliente es lo primero..."

"Si, lo primero en ser engañado. Vamos, Ebenizer, la calidad de tu soft destaca por su ausencia..."

"Bueno, pero es muy bonito...tiene iconos en 5 trillones de colores... Ocupa muchos megas.... Y tiene sonido estereo... Y es compatible Win 95"

"Pero se cuelga a cada rato. A veces se cuelga incluso antes de empezar a funcionar... e incluso se ha dado un caso de cuelgue antes de instalarlo..."

"El mundo del software es asi... y yo no lo voy a cambiar...De hecho ni quiero cambiarlo... Me va bien asi"

"Pero eso no es futuro...

"El futuro es vender más, aunque sea peor la calidad. La gente quiere apariencia, no calidad..."

"Bueno, veo que es en vano. Tendra que venir el ultimo espectro..."

El ultimo espectro era un cubo negro. Le sonaba de algún modelo de ordenador antiguo que no triunfo, pero no podia recordar cual. Este no hablo. Simplemente
hizo aparecer ante el una pantalla, la de inicio de

windows 95. Aunque esta era mas tetrica. Era una escena de tormenta, y la ventana estaba desvencijada. Apareció la barra de tareas, y con ella una flechita
que ponia:

"To end push here"

La mano de Ebenizer, inexplicablemente, se acerco al raton y pulso en el botón que ponia "END". Esto es lo que apareció en pantalla:

GODebugger

Life Error at bioprogram EBENIZER.EXE

Bad Mindset from start at 0xabcdef01

System is foobar

Program is going to be terminated

De la pantalla salieron millones de bugs, de miles de colores, que empezaron a devorar e Ebenizer. Todos los bugs que Había almacenado sus programas se
volvieron contra el. Era su venganza. Ebenizer se retorcia de dolor, y pedia una ultima oportunidad.

Seria bueno. Haria control de calidad de sus programas. Haria la vida de sus empleados mas aceptable. No sacaria betas que no funcionaran. No engañaria
a sus clientes con fechas imposibles. Incluso dejaria de piratear soft...

Fue entonces cuando se oyo la poderosa voz de Dios:

"EBENIZER...."

"Di, mi Señor, perdoname, haz que me salve, cambiare, lo juro... No volvere a pecar"

"EBENIZER, VOY A PERDONARTE, PERO SE POSITIVAMENTE QUE VOLVERAS A PECAR..."

"No, os juro que no..."

"SI, PECARAS, LO SE. SI TE PERDONO NO ES POR ESO...."

"¿Por que sino, mi Señor?"

"TE PERDONO PORQUE YO TUVE UNOS PROBLEMILLAS PARECIDOS CON LA VERSION 1.0 EL ENTORNO OPERATIVO EN EL QUE CORRES..."

domingo, 25 de octubre de 2009

Diálogo entre for y while

For: Hola, yo soy un while
While: Hola, yo soy un for
For: Veo que nos parecemos
while: Si, creo que tenemos un lejano parentesco. Pero mis problemas no se parecen a los tuyos.
for: ¿A qué problemas te refieres?
while: Bueno, ya sabes, a la hora de saber cuando tengo que dejarlo. Verás, soy un poco obsesivo y me cuesta decidirme a salir cuando me rayo con algo.
for: ¿Te refieres a dejar de hacer algo?
while: Exactamente.
for: Yo suelo tenerlo planificado. Por ejemplo, si voy a un casino me digo: "For, haz cinco apuestas y lárgate"
while: Yo, sin embargo siempre me digo que no lo voy a dejar hasta que la suerte me sonría.
for:¿Y te sonríe?
while: No, ese es el problema. Mi vida está llena de esperas infructuosas...
for: Bueno, creo que me tengo que marchar.
while: ¿Ya? Yo me había propuesto hablar contigo hasta que fuésemos amigos...
for: Si, pero no me gusta intercalar más de 10 frases con un desconocido y ya llevamos 9.
while: ¡Dios mío, que vida más triste!

martes, 16 de junio de 2009

Bucle infinito o LOOP


No solamente los ordenadores se cuelgan y entran en bucles infinitos. Y si no, analiza el siguiente ejemplo:

El director le dice a la secretaria:
- Vamos a viajar al exterior por una semana, para un Seminario. Haga
los preparativos del viaje...

La secretaria llamada al marido:
- Voy a viajar al exterior con el director por una semana. Cuídate,
querido.

El marido llama a la amante:
- Mi mujer va a viajar al exterior por una semana, vamos a pasarnos
esa semana juntos, mi reina...

La amante llama al niño a quien le da clases particulares:- Tengo
mucho trabajo la próxima semana.
No tienes que venir a clases.

El niño llama a su abuelo:
- Abuelo, la próxima semana no tengo clases, mi profesora estará ocupada.
¡Vamos a pasar la semana juntos!

El abuelo (que es el director de esta historia) llama a la secretaria:
- Voy a pasar la próxima semana con mi nieto, por lo que no voy a
participar en el Seminario. Puede cancelar el viaje.

La secretaria llama al marido:
- El director de la empresa cambió de idea y acaba de cancelar el viaje.

El marido llama a la amante:
- No podremos pasar la próxima semana juntos, el viaje de mi mujer fue
cancelado.

La amante llama al niño de las clases particulares:
- Cambio de planes: esta semana vamos a tener clases como siempre.

El niño llama al abuelo:
- Abuelo, mi profesora me dijo que esta semana tengo clases.
Discúlpame, no voy a poder hacerte compañía.

El abuelo llama a la secretaria:
- Mi nieto me acaba de decir que no va a poder estar conmigo esta semana.
Continúe con los preparativos del viaje al seminario

¿Entiendes ahora qué es un "bucle"?

(Por gentileza de Begoña)

miércoles, 17 de diciembre de 2008

Ejercicio para llenar un vector con números al azar

/*Primero, el cuerpo principal*/
#include
#include "funciones_vector.h"

main(){
       int vector[10];
       inicializar_aleatorios();
       inicializar_vector(vector);
       mostrar(vector);
       rellena_azar(vector);
       getchar();
       mostrar(vector);
       getchar();
       getchar();
}
/*En el fichero llamado "funciones_vector.h" incluimos las funciones necesarias*/
/*Incializamos el generador de números aleatorios*/
/*Incializamos el generador de números aleatorios*/
#include
#include

void inicializar_aleatorios(){
     int semilla;
     semilla=time(0);
     srand(semilla);
     return;
}


/*Esta función genera un número al azar
entre 0 y 9, ambos incluidos*/
int tirada_dado(int n_caras){
    int respuesta;
    respuesta=rand()%10;
    return(respuesta);     
}

/*Esta función toma un vector de numeros
enteros y graba en cada una de las posiciones
un cero*/ 
void inicializar_vector(int vector[]){
     int cont;
     for(cont=0;cont<10;cont++)
       vector[cont]=0;
     return;
}
/*Esta función muestra por pantalla el contenido
del vector*/
void mostrar(int vector[]){
     int cont;
     printf("\n*********************");
     printf("\n*");
     for(cont=0;cont<10;cont++){
       printf("%d",vector[cont]);
       printf("*");
     }
     printf("\n*********************");
     return;
}
/*Esta función rellena el vector con números al azar*/

void rellena_azar(int vector[]){
     int cont,cont2,aux,repetir;
     //Rellenamos el vector
     for(cont=0;cont<10;cont++){
       do{
         /*Para cada posición, generamos
         un número al azar*/                         
         aux=tirada_dado(9);
         printf("\nHa salido un %d",aux);
         getchar();
         /**Vamos a comparar el número
         que nos ha salido con los números
         que ya tenemos guardados en las 
         casillas anteriores del vector*/
         for(cont2=0;cont2 <>
                                         
           if(aux==vector[cont2]){
              printf("\n %d coincide con lo que hay en la casilla %d",aux,cont2);
              repetir=1;
              break;
              }
           else{
              repetir=0;
           }
         }
       }while(repetir==1);
       vector[cont]=aux;
     }   
     return;
}

martes, 16 de diciembre de 2008

Ejercicio del juego de dados

#include
#include
#include
#include
int explica_juego(){
  char jugar;
  int respuesta=0;
  printf("\n****************************");
  printf("\n**** GRAN JUEGO DE DADOS ***");
  printf("\n****************************");
  printf("\n\n Este juego consiste en tirar el dado en tres turnos");
  printf("\nGana el jugador cuya suma de puntos sea mayor");
  printf("\nDesea usted jugar (s/n)");
  scanf("%c",&jugar);
  if(jugar=='s') respuesta=1;
  return(respuesta);
}
int tirar_dado(int n_caras){
    int respuesta;
    respuesta=rand()%6+1;
    return(respuesta);
}
int muestre_resultados(int puntuaciones[]){
    int respuesta=0;
    int mayor_puntuacion=puntuaciones[0];
    int jugador;
    printf("\n*************************");
    printf("\n******  RESULTADOS   ****");
    printf("\n*************************");
    for(jugador=0;jugador<3;jugador++){
     printf("\nJUGADOR %d = %d puntos",jugador+1,puntuaciones[jugador]);
     if(puntuaciones[jugador]>mayor_puntuacion){
       mayor_puntuacion=puntuaciones[jugador];
       respuesta=jugador;
     }
    }
    return(respuesta);  
    
    }
main(){
   int opcion=0,turno,valor_dado,jugador,ganador;  
   int puntuaciones[3];  
   int semilla;
   //Inicializamos el generador de números
   //aleatorios
   semilla=time(NULL);
   srand(semilla);
   //Ponemos el casillero de puntos a 0
   for(jugador=0;jugador<3;jugador++)
     puntuaciones[jugador]=0; 
  //Explicación del juego
  opcion=explica_juego();
  while(opcion==1){
  //Juego
  printf("\nCOMIENZA EL JUEGO");
  for(turno=0;turno<3;turno++){
    system("cls");
    printf("\nTURNO numero %d",turno+1);
    fflush(stdin);
    getchar();
    for(jugador=0;jugador<3;jugador++){
       printf("\nTira el jugador %d",jugador+1);
       fflush(stdin);
       getchar();
       valor_dado=tirar_dado(6); 
       printf("\nHa salido %d",valor_dado);
       puntuaciones[jugador]+=valor_dado;
       printf("\nAcumula %d puntos", puntuaciones[jugador]); 
    }                      
  }
  //Resultados 
  ganador=muestre_resultados(puntuaciones);
  printf("\nHa ganado el jugador %d",ganador+1);
  
  opcion=explica_juego();      
  }   
       
       
       
       
       
}

miércoles, 10 de diciembre de 2008

Ejercicios básicos sobre funciones

  • Algunos ejercicios básicos de funciones. No olvidéis las tres preguntas que es necesario formularse para escribir una función: 
  • ->¿Qué datos recibe la función?, 
  • <-¿Qué tipo de dato devuelve? 
  • ¿Cómo consigue obtener el dato que devuelve a partir de los datos que recibe?
  1. Una función que reciba un número y devuelva 1 si el número es mayor o igual que cero y -1 si el número es menor que cero. Solución.
  2. Una función que reciba dos números enteros y devuelva su diferencia siempre y cuando el primero sea mayor que el segundo. En caso contrario devuelve -1. Solución.
  3. Una función que reciba la longitud de los lados de un rectángulo y devuelva el valor del área. Solución.
  4. Una función que reciba el valor del radio de un círculo y devuelva el área. Solución.
  5. Una función que reciba la longitud de los lados de un triángulo y  devuelva 1 si formar un triángulo rectángulo y 0 en caso contrario (recuerde el teorema de Pitágoras). Solucion.
  6. Una función que reciba una palabra y devuelva el número de letras que tiene.
  7. Una función que reciba 2 palabras y devuelva 1 si han sido enviadas en orden alfabético y -1 en caso contrario. Devolverá cero si ambas palabras son idénticas. Compruebe que funciona correctamente con las palabras “casa” y “casero”.
  8. Una función que reciba una cadena del tipo antonio.lopez@saleszar.org y verifique si puede ser una dirección de correo correcta (es decir, contenga @ nombre de dominio seguido de un punto y terminación formada por 3 letras). Solución.
  9. Una función que reciba el nombre de usuario y una contraseña y verifique si cumple con las siguientes condiciones:
    • Tenga al menos ocho caracteres.
    • Contiene mayúsculas, minúsculas y números.
    • Es distinta total o parcialmente del nombre del usuario.
    • Solución.

lunes, 1 de diciembre de 2008

Bibliografía sobre funciones




Con los alumnos del Grado Superior estamos comenzando a tratar el apasionante y siempre emocionante mundo de las funciones. Como lo que da tiempo de ver en clase no sacia la sed inagotable de conocimientos de nuestros alumnos, os propongo documentación adicional (y adictiva) sobre el tema:









viernes, 28 de noviembre de 2008

Lenguaje de programacion PHYTON


Python es un lenguaje de programación interpretado creado por Guido van Rossum en el año 1990.[1]
Se compara habitualmente con TCL, Perl, Scheme, Java y Ruby. En la actualidad Python se desarrolla como un proyecto de código abierto, administrado por la Python Software Foundation. La última versión estable del lenguaje es [1] la 2.6 (01 de octubre de 2008) (Se anunció la llegada de la versión 3.0 para agosto de 2008, aunque fue el 17 de septiembre de dicho año cuando se lanzó la primera versión rc1 -release candidate- de dicha versión).
Python es considerado como la "oposición leal" a Perl, lenguaje con el cual mantiene una rivalidad amistosa. Los usuarios de Python consideran a éste mucho más limpio y elegante para programar.
Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el usuario) como Tk, GTK, Qt entre otros...
Python es un lenguaje de programación interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. También es una calculadora muy útil.


Mas información en wikipedia.

martes, 25 de noviembre de 2008

¿Ordenadores que piensen como la mente humana?



Al menos esta es la intención que promueve un ambicioso proyecto  auspiciado por la empresa IBM y cinco universidades americanas con el apoyo económico de la Defense Advanced Research Projects Agency (DARPA). La idea clave que subyace en este proyecto sería la simulación del funcionamiento del cerebro a partir de su estructura;  algo así como si sabemos cómo está organizado, podemos entender cómo funciona. Podéis visitar la página del investigador principal, Dharmendra S. Modha, en la que hay vídeos sobre el tema y su blog.   
"

viernes, 31 de octubre de 2008

¿Todo lo que se hace con un FOR se puede hacer con un WHILE?¿Y al contrario?


Os propongo esta pregunta. La respuesta sería ver si es posible encontrar algún programa con un FOR que fuera imposible de ser traducido con un WHILE (y viceversa).

jueves, 23 de octubre de 2008

Propuesta de trabajo: Revisíón de software específico para crear diagramas de flujo

Un diagrama de flujo es un estandar que permite representar gráficamente los detalles algorítmicos de un proceso antes de traducirlo a un lenguaje concreto de programación. Aunque su uso principal es en informática, tambien podemos encontrar diagramas de flujo en economía, psicología o incluso en la descripción de los procesos organizativos en las certificaciones de calidad. 
Existen muchas herramientas para la elaboración de estos diagramas. El trabajo consistiría en revisar las más utilizadas de entre las que son gratuitas, poniendo especial énfasis en la búsqueda de aplicaciones que sean capaces de extraer estos diagramas directamente a partir del código C. 
Bibliografía básica (para empezar a buscar):

lunes, 20 de octubre de 2008

Lenguaje Ensamblador: Mi experiencia personal.

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de maquinas legible por un programador.

Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instrucción binaria como se expresa en código de máquina:
Binario: 10110000 01100001 (Hexadecimal: 0xb061)
La representación equivalente en lenguaje ensamblador es más fácil de recordar:
MOV al, 061h
Esta instrucción significa:
Mueva el valor hexadecimal 61 (97 decimal) al registro "al".



Mi opinión:
Yo la primera vez que entendí lo que era programar algo me entraron unas ganas horribles de hacer un programa hecho por mí y como  todo el mundo que empieza lo hace de forma autodidacta me hice una pregunta:

¿Con qué lenguaje debería empezar a aprender?

Yo feliz pensando que en dos días estaría haciendo virgerias llegué y pregunté en un foro con cuál empezar y como siempre está el graciosillo de turno me dijo:

"Deberías empezar con el lenguaje ensamblador (en inglés assembler) que es un lenguaje sencillo y con el que puedes hacer básicamente lo que quieras."

Yo desde mi ignorancia y sin haber visto nunca un lenguaje de programación dije pues nada a aprender ensamblador.

Si no recuerdo mal... creo que estuve con esto... una semana si llegó, me puse a buscar un lenguaje que se adaptase a mi novatez y encontré (aunque no se si en realidad es considerado como lenguaje de programación aunque sea web, creo que no) HTML y a partir de ahí empecé a adentrarme en este mundillo.

Bueno que me desvío del tema, mi opinión es que es un lenguaje difícil de aprender y que en realidad se usa mas bien poco porque habiendo lenguajes como c++ o java yo creo que ensamblador sobra (excepto si necesitas controlar demasiado el hardware), y otra cosa que le veo mala es que se pierde mucho tiempo programando en este lenguaje.

Una ventaja que si le encontré en el poco tiempo que estuve es que las aplicaciones van mas rápidas, ocupan menos, e incluso puede llegarse a crear alguna secuencia de comandos que en un lenguaje de alto nivel no se pudiese.

Vamos yo es como lo veo y como he dicho antes hablo desde mi ignorancia ya que he tenido poco contacto con este lenguaje aunque sí bastante información sobre el, pero ¿para gustos están los colores no?

domingo, 19 de octubre de 2008

Cuestión de método: Las ideas de un premio Nobel para investigar y resolver problemas


Recientemente se ha concedido el premio Nóbel de economía al profesor Paul R. Krugman. Resulta interesante revisar el llamado método Krugman, una serie de indicaciones para los investigadores en economía que resultan perfectamente aplicables en el mundo de la informática. El método que utiliza Paul Krugman para investigar se resume en los siguientes principios: 

1) Permanece atento a lo que la gente dice, ... aunque no hablen tu lenguaje técnico. ¿Cuántos informáticos son incapaces de hacerse entender por alguien que no sabe de informática? El problema es que la mayoría de los problemas interesantes los plantean personas que justamente carecen del lenguaje técnico en informática. 

2) Haz preguntas sobre las preguntas. No obligar a un algoritmo nuevo a responder a los detalles pendientes de los viejos. Si se quiere tener una gran idea, es necesario plantearse preguntas que vayan más allá de lo que ya tenemos resuelto. En síntesis, para tener una gran idea es necesario partir de una reflexión  sobre las preguntas que procede hacerse. 

3) Atreverse a ser «tonto». Hay dos formas de lograr que una novedad en informática tenga éxito: la vía más segura es «realizar una ampliación, difícil desde un punto de informático, pero menor desde un punto de vista conceptual, de algo ya conocido». Es una vía segura, pero poco útil para los que quieren tener una gran idea. Para éstos últimos, el consejo de Krugman es: «Partir de supuestos novedosos y hacer cosas sencillas con ellos». Ello requiere una gran autoestima (para aguantar la crítica y los rechazos) y mucha más disciplina (para transitar por caminos novedosos), pero ése es el precio que se debe pagar por las grandes ideas. 

4) Simplificar, simplificar. Es decir: ser minimalista, «intentar siempre expresar las ideas mediante el algoritmo más sencillo posible». Por dos razones: primera, porque ésta es la mejor forma de que los demás accedan al terreno desconocido que se está descubriendo; segunda, porque es la mejor forma de que, si uno se ha equivocado al andar solo, descubra pronto que está perdido. 

Estos consejos son especialmente aplicables para los alumnos que comienzan a estudiar programación estructurada. 

martes, 7 de octubre de 2008

Más sobre Alice y su autor: Randy Pausch


En el artículo sobre los temas propuestos para trabajos voluntarios aparece el IDE Alice. Si interesante es la propuesta, aún lo es más su autor, Randy Pausch
Si  quieres saber más sobre el tema o, simplemente, pasarlo bien escuchando a un orador impresionante y uno de los precursores de la Realidad Virtual, te recomiendo el siguiente vídeo. El contexto de la conferencia se explica en el libro La última conferencia (2008) . Editorial Grijalbo. ISBN 9788425342509 .

lunes, 29 de septiembre de 2008

El Lenguaje C


El lenguaje C parte de un lenguaje anterior, el lenguaje B, escrito por Ken Thompson en 1970 con el objetivo de recodificar el sistema operativo UNIX, que hasta el momento se había programado en ensamblador.

En 1972 es Dennos Ritchie quien diseña finalmente C a partir del B de thompson, aportando un diseño de tipos y estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy superior. Es un lenguaje que permite realizar una programación estructurada economizando las expresiones, con abundancia de operadores y tipos de datos (aunque los básicos sean pocos), codificando en alto y bajo nivel simultáneamente, reemplazando ventajosamente la programación en ensamblador y permitiendo una utilización natural de las funciones primitivas del sistema. Además, no está orientado a ningún área en especial y sobre todo consigue un código objeto altamente optimizado que repercute en que los programas son muy rápidos.

Después del lenguaje C nació el lenguaje C++ que añade nuevas características al anterior.

Un ejemplo de programación en C podría ser este, que hace raíces cuadradas:

#include
#define TOL 0.0001
main(){
float x,b,aux, aux2;
int OK;
printf("numero a calcular la raiz: ");
scanf("%f", &x);
OK = 1;
b = x;
aux2 = 0;
while (OK){
aux = x/b;
aux2 = fabs(aux2 - b);
if(b == aux aux2 <= TOL){ printf("La raiz cuadrada de %f es %f\n\n", x,b); OK = 0; } else aux2 = b; b = (0.5) * ((x/b) + b); } system("pause"); return 0; }