[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT]como empiezo a programar en java?



Alejandro Santos <alejolp@alejolp.com> wrote:
Hola!

El 10/06/07, joakosandoval escribió:
> en mi cabeza esta metido que no quiero que me den pescados mejor
> ensename a pescar.

¡Barbaro!

> bueno entoces me gustaria pedirles unos consejos sobre como empiezo a
> programar en java . eh escogido java por ser multiplataforma me gusta
> eso. y pues si eh leido que es un poco dificil de aprender, yo tengo un
> conocimiento basico de programacion, por ejemp que son las variables,
> instrucciones condicionales, for, if, bucles, todo eso....inclusive en
> la escuela alguna vez programe en visual basic haciendo que un boton
> dijera "hola", pero hasta ahi me quede.
> ahora bien como hago para lllegar a alcanzar un buen nivel de
> programacion digamos crear un chat, una de transferencias de archvos,
> algo de bases de datos, cosas asi ........se que es un camino largo pero
> tiempo es lo que mas tengo.......
> me recomiendan algunos libros, cursos, manuales, o algun consejo me
> bastaria !!!!!
> gracias por la molestia de leer este offtopic
>

Antes que nada, quiero que sepas algo: vas por buen camino.

Yo trabajo programando en Java, y me gustaria resumirte en pocas
palabras todo lo que hasta ahora se dijo en esta lista. Hoy en día el
que quiera aprender programación por su cuenta esta recorriendo uno de
estos dos caminos:

a) cometiendo suicidio

b) realizando la mejor elección de su vida

Como te podrás imaginar, la opción a) es clara dada variedad de
respuestas totalmente opuestas y dispares que te dieron.

Al menos como yo lo veo, en ese aspecto no hay grises. Al día de la
fecha hay demasiados lenguajes de programación, demasiadas tendencias
y demasiados puntos de vista diferentes para poder encarar por uno
mismo esa titánica tarea de aprender a programar de forma autodidácta.

Al mismo tiempo, eso es algo bueno ya que tenes infinidad de
herramientas y materiales de los cuales podés ejercitarte.

Antes de darte una respuesta a tu pregunta, tenes que tener algo en
claro: aprender a programar es algo que lleva tiempo, dedicación y
esfuerzo. Y como alguien dijo, es un arte. Pero tambien es una
disciplina, y como cualquier disciplina, tenés que dedicarte a
aprender las cosas que realmente importan.

Dejando muchos detalles de lado, todos los lenguajes de programación
son basicamente iguales. Las diferencias entre Ruby, Python y Java (e
incluso con C++) no se comparan en relación a las cosas que tienen de
parecidos.

¿Qué cosas realmente importan en la programación? No voy a darte un
curso de programación por acá, sino simplemente enumerarte lo que yo
creo que vale la pena aprender. Para todo lo demás, Google y la
Wikipedia están para ayudarte. Y si te terminás apasionando, siempre
está la opción de seguir alguna carrera universitaria del tema.
Ciencias de la Computación en una linda opción.

Lo más importante es aprender a pensar. Esto es algo duro de aceptar
para algunas personas, pero la realidad es que uno se tiene que
adaptar a ver el mundo de la programación de forma diferente. Hace
algunos años estuve de profesor ayudante, explicándole a los alumnos
de primer año de mi universidad cómo resolver ejercicios de
programación, y ese era el mayor inconveniente de todos.

Muchos decian "yo tengo mi propia manera de programar", y ese era su
principal error. He visto a varias personas quedarse estancadas en la
carrera por pensar de esa forma.

Los otros dos mayores inconvenientes que tenían era poder diferenciar
un algoritmo de una estructura de datos. En programación esa
distinción es muy importante, pero no muchos le dan importancia.

Un algoritmo es la "receta" de cualquier programa, y la estructura de
datos son los ingredientes de esa receta. En el caso de un programa,
un algoritmo son las operaciones que se realizan (asignar variables,
operaciones matematicas, tomar desiciones con un if, hacer un while,
etc), y las estructuras de datos son las estructuras usadas para
guardar la información (variables, clases, registros, arrays, etc).

Un algoritmo muy simple es el de contar la cantidad de caracteres que
se leen desde teclado, hasta llegar a un punto. En este caso, no hay
muchas estructuras de datos sino simplemente las variables que usas
para leer los caracteres. Otro muy parecido es contar la cantidad de
letras "x" que hay dentro de un string. En Java eso es muy sencillo:

static int contar_equis(String s)
{
int cantidad = 0, indice;

for (indice = 0; indice < s.length(); indice++)
if (s[indice] == 'x')
cantidad++;

return cantidad;
}

Un algoritmo más elaborado es el de ordenar números dentro de un
vector. Hay diferentes métodos o técnicas, como la de inserción,
selección, burbuja con o sin sentinela, quick-sort, sorting by merge,
etc.

Querer aprender Java no es lo mismo que querer aprender a programar.
Mucha gente aprende Java solo para poder trabajar de eso y ganarse
algun dinero, pero solo los que quieren aprender a programar pueden
lograr algo interesante. De la misma forma que hoy en día Java es uno
de los lenguajes de programación más populares, 20 años atrás lo era
Cobol.

Los que se durmieron en los laureles y solo se quedaron con COBOL, a
la larga perdieron su trabajo y se quedaron en el tiempo. El error de
ellos no fue querer aprender COBOL: en algún momentó hay que leer el
manual de COBOL, aprender a usarlo y escribir código en ese lenguaje.
El error fué no aprender lo que realmente importa: a pensar, y los
algoritmos y estructuras de datos.

Dentro de 20 años, los que se quedaron con un simple curso de Java,
van a quedarse sin trabajo y todo lo que aprendieron no les va a
servir para nada útil.

Por último, la programación orientada a objetos no es más que esas
tres cosas metidas dentro de una sola cosa (llamada objeto ^^), pero
visto desde otro punto de vista, bastante más abstracto.

¿Querés aprender Java? La pagina de Sun es excelente:

http://java.sun.com/docs/books/tutorial/

Saludos,
Alejo.
http://www.alejolp.com.ar


Yo agregaría que estudia patrones de diseños y lee libros de algoritmos y estructuras de datos.


Get Firefox!
Reply to: