Critica constructiva

Soy vago y se nota, sobre todo por que sin terminar la universidad ya domino Java, Python y C/C++ bastante bien, todos los aprendí en casa, aunque Java fue mi primer lenguaje y de hecho en la universidad me lo siguen enseñando, aun así, quien sea estudiante sabrá que; para aprender algo correctamente hay que dedicarle horas en casa.

Como buen BOFHer me dí a la tarea de sacar conclusiones sobre los lenguajes que conozco e identificarlos según proyecto, para escoger cual es el que me conviene según magnitud del proyecto y orientación( eventos, objetos, métodos...).

La magnitud de un proyecto es el tamaño de un programa, mas funciones requieren de mas lineas de código, un programa orientado a objetos siempre será mas grande que uno funcional. Entre los tres lenguajes que conozco, el que me ha sido mucho mas leve para hacer proyectos grandes es C++, a pesar de que las compilaciones son mas lentas, el rendimiento del programa final vale la pena, aquí no todo son flores, cualquiera que trabaje en C++ sabe perfectamente que la solución de errores en este lenguaje es muy compleja, para ahorrar trabajo uso Python, a pesar de que funciona distinto a C++ no requiere compilación ninguna, así que los métodos que no quiero probar en C++ los arreglo desde Python, traducir código de Python a C++ es tarea fácil, luego solo se cambia la sintaxis y a compilar, cero errores.

Puedo afirmar que java es un punto intermedio entre C++ y Python, el problema de java es su rendimiento, puede ser menor a Python en muchos casos, java es casi tan híbrido como C++ y si a eso se le agrega la maquina virtual, obtenemos problemas de rendimiento, muchas veces son imperceptibles, pero basta con estudiar un poco de arquitectura de procesadores para darnos cuenta, claro que java simplifica mucho la etapa de pruebas, en la maquina virtual resulta mucho mas simple buscar errores ya que podemos ver que contienen las variables, java es auto suficiente, demasiado como para ser un lenguaje de alto rendimiento, demasiado como para que un programador pueda tener mucho control, cuando estoy programando sé que tengo las manos atadas por la JVM, no se me permiten muchas cosas.

Siendo yo partidario del software libre, no me siento libre con java, así que yo prefiero Python para trabajar mas o menos rápido con bastantes beneficios del rendimiento que ofrece su interprete escrito en C++, java para cuando el rendimiento no es importante y el proyecto tiene que estar para ayer, sobre todo para aquellos proyectos que no requieren mucho control a bajo nivel, cosas muy altas o que tengan que funcionar con bases de datos, escritorio y web, ya que ahí si es java el rey, C++ por otro lado lo prefiero para proyectos de escritorio que necesito controlar totalmente, C/C++ nos brinda un control a bajo nivel absoluto, ese control y eficiencia hace de C++ el padre de la informática moderna, siendo C el padre de los sistemas operativos, estos son lenguajes que no pierden vigencia.

Como segundo punto, quiero considerar la orientación de los sistemas, sea orientado a objetos, eventos o métodos, es muy claro que C/C++ y Python están pensados para funcionar desde consola, luego se les ha añadido la interfaz, java es justo lo inverso, para un proyecto con interfaz, orientado a objetos, con interfaz web o conexión a bases de datos, lleva todos los puntos a su favor.

Por otro lado, si el proyecto es un script queda java totalmente descartado, empezando por que no está diseñado para funcionar en consola, no tiene una gestión de memoria explícita que nos facilite ahorrar en uso de RAM y si no necesitamos usar objetos, estamos desaprovechando el punto mas fuerte del lenguaje, Python me parece la mejor opción para script's.

Se me ocurre un programa orientado a eventos o métodos y que su función sea borrar archivos no permitidos en un servidor de la empresa (para mas información: Kitakonio, un caso real de un programa motivado por usuarios malcriados), lo mejor sería hacerlo en Python por que es un proyecto rápido, para C++ es un drama el control de bases de datos y sistemas de archivos, así que no es rápido y se requieren muchas pruebas, en C es mas factible pero sus flaquezas son las mismas, es posible hacerlo en java, si no fuera por que el gasto de RAM que normalmente hace el lenguaje es muy alto, sin importar cuanto se cuide el programador a la hora de codificar, no creo que un lenguaje sea mejor que otro, solamente que si existen varios lenguajes de programación será por que cada uno tiene un sentido especializado, todos tienen algo especial para que los programadores sigan motivados en hacer uso de sus recursos.


Quiero ahora ser honesto, no me gusta java, lo comprendo, lo controlo, pero al mismo tiempo el me controla a mi, java tiene mucho poder y no lo cede al programador, eso me molesta, Python tiene muchas facilidades sobre los lenguajes compilados, a mi parecer su rendimiento es muy bueno y nos brinda muchas libertades, un ejemplo de esto viene siendo los tipos de datos automáticos y la posibilidad de liberar un espacio de memoria explícitamente, si odio a java es por que no me permite liberar memoria de forma manual.

Volviendo a Python, me encanta sobre todo por que es multiparadigma, puedo hacer un script muy avanzado para tareas complejas de mantenimiento, puedo hacer una web(Django), puedo controlar bases de datos, puedo hacer aplicaciones de escritorio usando mi querido wxwidgets y sigo en mi charco, a pesar de que los programadores sigan menospreciando el poder de Python yo he podido encontrar la magia que me puede brindar, a tal nivel que muchos hackers ahora están usando Python para desarrollar sus herramientas de detección y ataque, C/C++ es criticado por los programadores mas modernos, claro está, criados en java con la ideología de que un desempeño no es tan importante como el que se termine el proyecto lo mas pronto posible.

Creo que es el mayor error de las empresas actuales, tienen mucha prisa para poner en marcha cosas muy complejas y peligrosas, claro todos sabemos lo que puede pasar si no hay where en el delete from, ahora concluyendo me parece que c++ no puede morir, ya paso todas las pruebas que he querido hacerle y a pesar de que es bastante complejo empezar a programar en el, una vez que se entiende las bases de su sintaxis todo se vuelve mucho mas fácil, se podría decir que orgánico, mas que todo es el miedo que nos han metido a trabajar con hardware, el mismo conformismo por el cual hay pocos informáticos, el mismo conformismo que ha causado muchos graduados sin pasión, es miedo al fracaso, es trabajar por un salario y no por amor.

Espero que se tomen a bien mi análisis, es muy fácil prejuzgar algo sin conocerlo, así que los invito a escuchar, investigar, preguntar, yo no sabría programar en C/C++ sin un profesor muy interesado en el aprendizaje de sus alumnos que me dio pautas muy básicas, dichas pautas me abrieron la conciencia, me hicieron entender las posibilidades de C/C++, ahora los dejo y les recomiendo que en informática nunca tengan miedo a nada, que no sea una sobre carga eléctrica, el where en el delete from o un bucle infinito, eso si da miedo siempre y debe dar miedo, este miedo evita que se cometan errores.

Comentarios

Entradas populares de este blog

Hablemos de difamación, parafilias y denuncias bien hechas

Criticamos a pablito: "Atrapado en el cuerpo equivocado"

El fruto de una era: Antiintelectualismo moderno