Programación > Otros
[Guía]¿Con qué lenguaje de programación empezar?
~Skywatcher~:
Me propuse escribir esta guía, porque se que es muy frecuente que muchos se sientan perdidos a la hora de comenzar a programar. Espero que les sirva y cualquier duda pueden consultarla, al igual que si encuentran un error, no duden en corregirme en los comentarios!
¿Que lenguaje de programación elijo para empezar a programar?
Estoy seguro que esta es una de las preguntas que más se hacen cuando uno se empieza a interesar por la programación de software y o sitios webs. Ciertamente, es una pregunta que se esconde detrás del desconocimiento que tiene la persona acerca del termino: programar/codear/programacion/demás modismos. Es muy normal encontrarse con esta pregunta, es más muchos de nosotros al principio nos la hicimos y con el tiempo nos fuimos dando nuestra propia respuesta mediante la experiencia.
Silla = chair = sedia = stuhl...
Podemos empezar a resolver las dudas con una simple comparación entre el lenguaje de programación y los lenguajes que utilizamos para comunicarnos entre las personas.
A pesar de que todos nosotros vivimos en el mismo mundo -eso creo-, debido a que estamos en distintas regiones, tenemos distintas culturas, religiones, términos y o lenguajes para comunicarnos y poder realizar acciones en grupo.
Todos sabemos, que silla, no se dice igual en inglés (chair), italiano (sedia) o en alemán(stuhl...o al menos, eso me dijo el traductor), pero a pesar de que utilizamos diferentes términos para nombrarla, al fin y al cabo nos referimos al mismo sustantivo concreto/objeto. A mi personalmente, me gusta pensar en las palabras como algo abstracto, fueron inventadas por alguien al que por ejemplo le gustaba llamar a algo de cuatro patas, un respaldo y un asiento...silla, pero en otras regiones, como vimos antes, se puede llamar al mismo objeto, de otra forma, pero el objeto sigue siendo el mismo, al igual que pasa con los números (aunque un poco distinto, ya que la forma de escribirlos numéricamente es universal o...en la mayor parte del mundo se escriben utilizando los Europeos que utilizaron como base a los Árabes, pero para nombrarlos y escribirlos con letras...ahí ya cambian las pronunciación).
Si a nosotros sin saber ningún idioma, solo el natal, nos hablan en inglés y nos dice: “chair” señalando una silla, podemos deducir de que se trata la palabra. Ahora, pongamos el mismo ejemplo, pero, sin que nos señale nada...pondríamos cara de “sí...” pero por dentro pensaríamos: ¿A qué dios estará invocando?. Para descifrar que esta diciendo, tenemos que usar un traductor, que pueda traducir el inglés al español y de esa forma poder entender lo que realmente nos dijo.
Con las computadoras exactamente lo mismo. Las computadoras tienen un lenguaje, el binario, que se basa únicamente a escribir unos y ceros para formar “palabras” y “oraciones” que ella pueda entender...estaríamos manejando bit por bit...claro uno de los problemas seria que al finalizar el programa, lo ejecutes y te diga: “Por lo visto, hay un 1 que no esta en su lugar”, tu cara se transformaría y se convertiría en:
...obviamente, que no es tan así el mensaje de error que obtendríamos, pero es únicamente para que se den cuenta lo agotador que podría llegar a ser programar solo con unos y ceros, aunque actualmente es un reto bastante curioso.
¿Unos y ceros?Suicidio masivo de estudiantes de programación y de aquellos que llegaron a leer hasta el párrafo anterior.
Claro, también esta assembler o lenguaje ensamblador, que es muy cercano al binario, pero más fácil de escribir que el (fíjense bien lo que dije, más fácil de escribir que el binario, no estoy diciendo que sea fácil), cuenta con algunas palabras y o abreviaciones de palabras en ingles, utilizadas para modificar bits de memorias, representar palabras, guardar datos, etc. Pero a pesar de ello, sigue siendo un lenguaje de bajo nivel, esto quiere decir, que es muy cercano al lenguaje maquina (binario), por lo tanto, es difícil de escribir.
Por suerte, existieron algunos genios que se dieron cuenta de que realmente escribir software en esos lenguajes...era demasiado complicado y/o aburrido. Y a partir de esa disconformidad, comenzaron a crear otros lenguajes, que eran más entendibles y que se acercaban más al lenguaje del humano (ni español, ni italiano, ni aleman, INGLÉS). El primero de ellos, o por lo menos uno de los primeros fue FORTRAN, pero no voy a comenzar a aburrirlos con historia, pero si hay alguien que quiere realmente adentrarse más en la historia, los invito a utilizar este excelente recurso.
A partir de ese momento, se denomino a ese tipo de lenguaje que se acerca más al habla del humano: “lenguaje de alto nivel”.
Lenguajes de alto nivelAhora, si dejemos de lado un poco la historia y las comparaciones entre idiomas, sillas y demás alucinaciones, para comenzar a hablar de los lenguajes de alto nivel. No voy a hablar de todos ellos ni tampoco voy a dar una explicación de cada uno de los que nombre.
De escribir en binario, pasamos a escribir en un idioma mucho mas cercano al que hablamos cotidianamente. Vamos a ver un ejemplo en pseudocódigo, no importa si no entienden el funcionamiento y luego lo escribiremos en algunos lenguajes de programación conocidos.
--- Código: ---usuario admin
clave 123
Si usuario es admin y clave es 123 entonces:
mostrar bievenido admin
Si usuario es distinto a admin y clave distinto a 123 entonces:
usuario incorrecto
--- Fin del código ---
El pseudocódigo que planteo es muy fácil de entender, y esta bueno que implementen esta forma de razonar los problemas que se le presenten a la hora de programar graficando el programa de esa manera, es más, lo veo como una norma antes de empezar a escribir. Ahora, vamos a ver, estas mismas lineas, en otros lenguajes: Python, C y Java.
Python:
--- Código: ---usuario = 'admin'
clave = 123
if usuario=='admin' and clave==123:
print 'Bienvenido admin!'
else:
print 'usuario incorrecto'
--- Fin del código ---
C:
--- Código: ---int main()
{
char usuario[]="admin";
int clave = 123;
if (strcmp(usuario,"admin") == 0 && clave==123)
{
printf("Bienvenido admin!");
}else{
printf("usuario incorrecto");
}
return 0;
}
--- Fin del código ---
Java:
--- Código: ---public class login{
public static void main(String[] args){
string usuario = “admin”;
int clave = 123;
if(usuario==”admin” && clave==123)
{
System.out.println(“Bievenido admin!”);
}else{
System.out.println(“usuario incorrecto”);
}
}
}
--- Fin del código ---
Perfecto, ya vimos más o menos el funcionamiento del mismo programa pero en tres distintos lenguajes. Antes de seguir tengo que decirles algo: No quiere decir que porque lleve menos lineas o sea más fácil de recordar, el lenguaje sea mejor, o viceversa. Es cuestión de costumbre y comodidad, al final no importa cual sea el lenguaje, podemos hacer las mismas aplicaciones en cada uno de ellos, aunque puede ser que alguno tenga limitaciones, pero sucede en todos los casos.
Compilados o Interpretados
Una vez que nosotros terminamos de escribir el código necesitaremos ejecutarlo para ver como funciona, y sentirnos orgullosos de nuestra creación.
Cómo dijimos, estos lenguajes de alto nivel son una “traducción” del lenguaje de maquina, para humanos. Pero ahora una vez finalizado el código, necesitamos traducirlo, nuevamente a lenguaje maquina...TRANQUILO YAOMING!, esto se hará casi automáticamente!.
Un programa compilado, es aquel que la traducción (por ponerlo de la forma más fácil), se hace en el momento de la compilación que es antes de la ejecución. Es como si escribieras una hoja, con un texto en español(programa), y luego envies esa hoja a un traductor(compilador) y este la traduzca a otro idioma(en este caso lenguaje maquina). Cada vez que la maquina quiera ejecutar el código, no tendra que volver a compilarlo.
Un programa interpretado, es distinto al compilado. No se compila, es decir que va a ir interpretando cada sentencia y u oración a medida que este se vaya ejecutando. Imaginemos nuevamente una hoja escrita con un texto en español(programa), luego lo ejecutamos, pero como la computadora no lo entiende, va tomando a medida que va leyendo, renglon por renglon(sentencia por sentencia) y lo va interpretando, a medida que lo lee (el interprete). Es decir, que cada vez que se ejecute el código, tendra que interpretarlo.
Hay gente a favor, y en contra, tanto de un programa compilado como de un programa interpretado, una de las quejas es que los programas interpretados llegan a ser un poco más lentos que los compilados. Claro, esto se puede aceptar, pero si estamos en un proyecto chico...la diferencia de velocidad de ejecución no se va a notar tanto.
Python, C, Java...¿Son interpretados, o compilados?. En el caso de Python, estamos frente a un lenguaje que necesita un interprete, es decir, es un lenguaje de programación interpretado. C, en cambio, es un lenguaje de compilado. Mientras que Java...bueno, java voy a definirlo como un lenguaje hibrido. Tiene tanto partes de compilación como de interpretación...pueden averiguar y definirlos como a ustedes les parezca que debe ser.
Segunda parte - 2/05/13 - Todavía en construcción
¿Qué programa uso para programar?Otra pregunta que también se hace muy seguido. Para programar, en la mayoría de los casos podes usar un bloc de notas cualquiera (no se les ocurra utilzar un editor de texto al estilo writer, word, notepad), simplemente con un bloc de notas alcanza para escribir el código, luego necesitaremos compiladores o interpretes.
Escribiendo el código – Para empezar y proyectos chicos.Obviamente, no es lo mejor, ya que como su nombre lo indica, el bloc de notas únicamente sirve para tomar notas. A la hora de escribir un código, puede ser que nos resulte molesto, ya que todas las palabras que coloquemos se veran iguales, y no se resaltaran las reservadas por el lenguaje, ni los strings (cadenas de texto), los números enteros y decimales, con otro color o colocándolas en “negrita”.
Por suerte, existen softwares que ya vienen preparados (que no dejan de ser un bloc de notas, pero avanzado) para observar la sintaxis y de ese modo poder deducir que lenguaje de programación se esta utilizando y de esa forma poder cambiar la fuente (color, tamaño, estilo de la letra), dependiendo del que se utilice. Esto nos ayudara a que sea más entendible y amigable lo que escribimos. Además, estos software en su mayoría, vienen con distintos estilos de plantillas que permiten crear combinaciones que nos parezcan más comodas, colores de fondo, fuentes, etc. Cuando se tratan de proyectos chicos, se pueden utilizar este tipo de blocs, ya que no tendremos problemas.
De los más cómodos que utilice se encuentra: Sublime Text, tiene una interfaz muy limpia, permite ampliar a toda la pantalla para evitar distracciones y además, es expansible a través de plugins que podemos descargar desde Internet. Esta disponible tanto para Linux como para Windows y IOS.
Para los usuarios de Linux, pueden utilizar también el Gedit, que es el editor que ya viene incluido en algunas distribuciones como Ubuntu. Aunque obviamente, pueden buscar el entorno que más le guste.
Para proyectos grandes (IDES) - Proximamente..-
CONTINUARA...
Por ahora, dejo mi aporte hasta aca, pero lo voy a ir completando para que no haya dudas, y los que recien se inician, puedan tener una noción de lo que les espera.
Si tienen alguna sugerencia o alguna corrección, sera bien recibida!
Información y recursos uiles:
-Lenguaje de programación.
-Programación alto nivel.
-Programación bajo nivel.
-Sistema binario.
-Programación Assembler.
-Lenguaje compilado.
-Lenguaje Interpretado.
-Python.
-C.
-Java.
-Sublime Text.
JAG:
Buen post Skywatcher!! Espero que edites este post para seguir añadiendo información...
Lo haré fijo en la sección ok? Un saludo
~Skywatcher~:
--- Cita de: JAG en Mayo 01, 2013, 10:53:52 pm ---Buen post Skywatcher!! Espero que edites este post para seguir añadiendo información...
Lo haré fijo en la sección ok? Un saludo
--- Fin de la cita ---
Un gusto JAG, muchas gracias!
Lo seguire editando, perfecto ;D
Saludo
Fivo:
Buaa, buenísimo skywatcher! Muchísimas gracias! He querido empezar desde 0 en el mundo de la programación y joder, que buen comienzo ;D, ameno, divertido y muy bien explicado.
Esperando la continuación! :)
GengisCad:
Muy clara la explicación, estaré pendiente de la próxima "clase"!!!!
Chaucito!
Navegación
[#] Página Siguiente
Ir a la versión completa