Voy a escribir cuatro notas b'asicas sobre lenguajes, sus ventajas y desventajas y pequeñas pistas para los que est'an empezando o quieren hacerlo.
Primera vez que publico en el foro, as'í que no he leído todo lo que se dice, pero echando un vistazo rápido sí creo que respondo a algunas dudas o ideas preconcebidas que suelen aparecer.
Todo desde mi experiencia, por supuesto. Sólo hablaré de los lenguajes con los que he trabajado directamente.
¿Qué necesitas para empezar a programar?
- Ganas. Si no hay ganas y no te entusiasma, déjalo. Hazte ese favor. Nadie te obliga a programar.
- Mejora tu inglés ya mismo. La mayoría de lenguajes usan una sintaxis que deriva del inglés, la documentación estará casi siempre en inglés, y aunque haya manuales y lecciones en internet, en inglés siempre habrá más, más actualizados y sí, mejores. Puede que te parezca algo complicado, pero a la larga será mucho más complicado seguir sin la lengua franca de la informática a tu favor.
- Haz cosas. Da igual que sean pequeñas, grandes, simples o complejas. Desde el primer momento en que leas un manual, empieza a ponerlo todo en práctica, aunque sea para crear la estupidez más irrelevante. No sólo te ayudará a ver tus progresos, te mantendrá motivado, te enseñará todos los detalles que no constan en los manuales porque no son lo suficientemente importantes para prestarles atención, te dará soltura y te lo pasarás bien.
- Tómate siempre unos minutos para pensar en lo que vas a hacer. No te pongas a escribir código sin más. Si quieres, apunta en cualquier lado lo que pretendes que haga tu código, y luego tradúcelo en código. Si no lo haces así, olvidarás detalles cuando estés centrado en una parte concreta del código, y cuando pases a otra fase tendrás que reescribir una y otra vez lo que habías hecho para que funcione con el conjunto.
- Por último, en cuanto tengas algo más de soltura, plantea el proceso de lo que quieres que haga tu código en términos de entradas y salidas. Es como se trabaja en la programación a nivel profesional. Es decir, esta función o método recibe esto y devuelve aquello. A menudo cuando trabajas como programador te dicen algo como: tu método recibirá una cadena de texto y debe devolver un número que representa cuántos caracteres contiene. Eso te ayudará a fijar objetivos y sobre todo a aislar procesos. Da igual lo que haga el resto del código de 80000 líneas que tienes, si tu función recibe una cadena y devuelve el número de caracteres, sabes que esa función funciona en cualquier contexto y por tanto no tiene errores.
Sobre los lenguajes:
C, c++, etc:
Alguien ha dicho por aquí que es lo mejor para empezar. Para mí, nada más lejos de la verdad. Es un lenguaje muy antiguo y poco práctico en términos de ponerte ya manos a la obra, porque hay que buscarse mucho la vida para simplemente empezar a escribir código y ver resultados.
Como ventaja, tiene muchos usos y una base importantísima de desarrolladores. Así que tú decides si te conviene o no.
Python:
Posiblemente el más amado por los desarrolladores ciegos y deficientes visuales. Entre sus ventajas están el hecho de que con sólo instalarlo puedes empezar a jugar y hacer un montón de cosas, tiene una base de desarrolladores impresionante, es moderno, a pesar de los años ue lleva activo, etc.
Como desventajas, cuidado con los mitos. Suele decirse que es un código fácil de entender, que es muy legible. Por supuesto, lo dice la gente que usa python, y en mi opinión, no tiene por qué ser mucho más fácil de leer que otros. Hay cosas que sí, y cosas que no. No es tan rígido como otros en cuanto a los tipos, y aunque eso es bueno para desarrolladores sin experiencia, puede dar muchos quebraderos de cabeza. Por último, el tema de las tabulaciones, o sea, que el código depende sí o sí de algo tan visual como el sangrado de las líneas para que funcione, es, para mí, y dolor de cabeza importante al que enfrentarse sin apoyo visual. Puede hacerse perfectamente, pero la dificultad está ahí.
C#/C Sharp:
Es mi lenguaje de cabecera, pero intentaré ser tan objetivo como pueda. Entre sus ventajas, está que respeta mucho de los lenguajes más veteranos pero al mismo tiempo incluye mucho de los lenguajes modernos. Fue pensado para Windows, y aunque ahora puede usarse para desarrollar en iOS, Android etc, y es el almma de Unity, y por tanto de la mayor comunidad de desarrollo de juegos, Windows sigue siendo en cierta manera su elemento natural. Se sirve de .net para brindar funcionalidades y librerías para la mayor parte de lo que se te ocurra, mejor o peor.
Como desventajas, hay que señalar que la mejor manera de trabajar con c# es desde el ide Visual Studio, y por tanto tendrás que aprender a manejar un software específico y a menudo sobrecargado de un montón de cosas que no necesitas y que pueden contribuir notablemente a desorientarte. Es un arma de doble filo, porque si aprendes a usarlo tendrás entre tus manos el que posiblemente sea actualmente el ide más accesible y completo para el desarrollo para programadores ciegos o con baja visión, a años luz de lo que puedas hacer con otros ides que, o bien no son accesibles o lo son parcialmente, o simplemente son más sencillos.
Notas finales sin ningún orden en particular:
No hay lenguajes mejores que otros. Todo depende de lo que quieras hacer con ellos. Si quieres un lenguaje fácil de aprender, potente y que te permita crear cosas increíbles en dos semanas, he aquí la mala noticia: no existe.
La única manera es elegir uno, ponerte en serio con él, aprender sus trampas y sus trucos y exprimirlo. Hay gente que pinta cuadros usando Excel...
Tómatelo con calma y prepárate para estar siempre aprendiendo, porque cuando creas que eres un experto en un lenguaje de programación, resulta que aún te quedará aprender librerías específicas, comprender cómo funcionan los protocolos que sirven para todo, y cada vez que intentes algo nuevo habrá más y más material: ¿Cómo funciona internamente un pdf? ¿Ahora cómo lo hago para ponerle sonido en 3d a esto? ¿Necesito multiproceso en mi aplicación y cómo lo implemento? ¿Cuál es la diferencia entre Unicode y UTF8? ¿Cómo simulo la física en este juego tan impresionante que voy a lanzar? ¿Por qué esta maldita cosa me genera un html que en Chrome se ve bien pero en Firefox da un error? Por poner unos ejemplos al azar que, por cierto, nunca acaban, porque cuando creas que ya lo sabes todo seguro que aparece una nueva tecnología, sea el deep learning, la realidad aumentada o lo que sea.
Y por último, y más que un consejo es para mí la regla de oro que todos deberíamos meternos en la cabeza... Comparte.
Esto ya está un poco pasado de moda, pero cuando yo empecé a estropear ordenadores allá por los 90, en listas de correo de hacking, criptografía y parecido, era una clave importantísima para todo. Comparte, lee el código de los demás, muestra el tuyo, pregunta, responde, aprende de los demás y haz críticas constructivas. No inventes otra vez la rueda para todo, otros posiblemente ya lo habrán hecho antes y mejor que tú, así que aprende de ellos. Pero si vas a reinventar la rueda, hazlo y muéstrales a los demás cómo lo has hecho.
Si todos los que desarrollan o han empezado a desarrollar alguna vez un juego accesible compartieran, ahora mismo estaríamos jugando a un montón de juegos complejos, artísticos y divertidos. Somos pocos y si cada uno se queda en lo suyo, además de ser pocos, la productividad seguirá siendo nefasta. Comparte, colabora, ayuda y acepta la ayuda de los demás. No te ganes el respeto de nadie siendo más desgraciado que él, haz que te respeten por lo que puedes aportar y ellos aportarán también.