¿Qué tal cinco cosas que odio de las listas de "Cosas que odio de algún idioma"? :RE
5- Pintar un rojo anaranjado no lo convierte en una manzana.
Cuando se diseña un lenguaje, los diseñadores suelen tener en cuenta para qué es útil. Usarlo para algo completamente diferente puede funcionar, pero quejarse cuando no es simplemente tonto. Toma Python. Estoy seguro de que alguien lo ha hecho o alguien algún día hará una utilidad para crear exe's a partir del código Python. ¿Por qué demonios querrías hacer eso? Sería genial, no me malinterpreten, pero no sirve de nada. ¡Así que deja de quejarte!
Un proyecto bien diseñado probablemente contenga código de varios idiomas. Eso no quiere decir que no pueda completar un proyecto con un solo idioma. Algunos proyectos pueden estar dentro de las capacidades de cualquier idioma que esté utilizando.
4- ¿Estás parado sobre patas de madera?
La plataforma puede ser una gran influencia de lo que puede hacer el lenguaje. Con los recolectores de basura de hoy en día, o incluso los intentos pascales tempranos de "recolección de basura", pueden ayudar en el desvanecimiento de la memoria (¿quizás malloc más ram?). Las computadoras son más rápidas y, por supuesto, esperamos más de nuestros idiomas. Y francamente, probablemente deberíamos. Sin embargo, hay un gran precio a pagar por la conveniencia del compilador para crear tablas o cadenas hash o una variedad de otros conceptos. Es posible que estas cosas no se hereden a la plataforma en la que se usan. Decir que son fáciles de incluir en un idioma solo me dice que es posible que no tengas una pierna para pararte.
3- ¿De quién es la culpa?
Loco. Ya sabes. Me encantan los bichos. ¿Por qué amo los insectos? Porque significa que puedo mantener mi trabajo. Sin errores, habría muchas pizzerías cerradas. Sin embargo, los usuarios odian los errores. Pero aquí hay un poco de agua fría. Cada error es culpa de los programadores. No es el idioma. Un lenguaje con una sintaxis tan estricta que reduciría significativamente la cantidad de errores que se podrían generar sería un lenguaje completamente inútil. Sus habilidades probablemente podrían contarse con una mano. ¿Quieres flexibilidad o poder? Tienes bichos. ¿Por qué? Porque no eres perfecto y cometes errores. Tome un ejemplo realmente identificable en C:
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
Todos sabemos lo que va a hacer. Sin embargo, lo que quizás algunos de nosotros no nos demos cuenta es ... que la funcionalidad puede ser muy beneficiosa. Dependiendo de lo que estés haciendo. Los desbordamientos de búfer son el costo de esa funcionalidad. Ese código de arriba. Si realmente lo lancé al público. Eso es otra vez ... dilo conmigo ... "Mi culpa". No C's por permitirme hacerlo.
2- ¿No deberíamos poner eso en la papelera de reciclaje?
Es muy fácil señalar una característica en un idioma que no entendemos porque no la usamos a menudo y la llamamos estúpida. Quejarse de que está allí, etc. Goto siempre me entretiene. La gente siempre se queja de que goto está en un idioma. Sin embargo, apuesto a que su último programa incluyó un tipo de goto. Si alguna vez has usado un descanso o una continuación, has usado un goto. Eso es lo que es. De acuerdo, es un goto "seguro", pero es lo que es. Los Goto tienen sus usos. Si se usan gotos "implícitos" como continue o break o gotos explícitos (usando la palabra clave "goto" para cualquier idioma). No es que los desarrolladores de idiomas sean perfectos, pero generalmente ... si la funcionalidad ha existido desde el principio de los tiempos (para ese idioma). Probablemente ese aspecto es una cualidad definitoria de ese lenguaje. Lo que significa ... es s está siendo utilizado y probablemente no esté dando vueltas debido a la compatibilidad con versiones anteriores. Se está utilizando hoy. Como en hace 5 minutos. Y usado correctamente. Bueno ... podría decirse que alguien también lo está usando incorrectamente, pero eso se relaciona con el # 3 en mi lista.
1.- Todo es un objeto.
Ok .. este es realmente un subconjunto de # 2. Pero esta es, con mucho, la queja más molesta que veo en las listas de odio. No todo es un objeto. Hay muchos conceptos que no pertenecen o necesitan ser objetos. Poner cosas donde no pertenecen es simplemente feo y puede disminuir la eficiencia de un programa. Por supuesto. Quizás no mucho dependiendo del idioma. Esto también se relaciona con el n. ° 5. Esto significa ... si. Global está bien. Las funciones de los métodos estáticos están bien. Combinar la programación OO con funciones globales está bien. Ahora ... eso no significa que todos deberíamos salir y "liberar" nuestro código de sus modelos de objetos tampoco. Al diseñar una sección de código o un proyecto completo, lo que sucede detrás de escena deberíaser considerado al armarlo No solo dónde vive ese concepto y muchos otros factores. ¿Por qué incluir funciones globales dentro de clases o conceptos de espacio de nombres si no sirve para nada? Tomar variables miembro estáticas. Eso me divierte mucho porque ... bueno ... Dependiendo del idioma y la implementación, por supuesto, pero en general, usted acaba de declarar un global. Sí, hay algunas razones para envolver estos conceptos que no son OO en contenedores OO. Uno, por supuesto, es el código autodocumentado. Eso puede tener sentido. Entonces ... como digo. No salgas y "liberes" tu código. Pero cualquier buen lenguaje moderno tendrá un concepto global fuera de su modelado OO. Sí, quiero señalar específicamente que un lenguaje de programación OO sin un concepto global probablemente tenga un serio defecto de diseño. De nuevo, aunque ... depende de la intención y el diseño del lenguaje, por lo que no estoy tratando de elegir ningún idioma específico y hay demasiados para analizar aquí. De todos modos, considere dónde debería vivir el código y ser el más efectivo. Agregar un montón de destellos a algo que no agrega funcionalidad o soporte simplemente desgasta el teclado más rápido. A nadie le sirve de nada. Bueno ... a menos que te gusten los puntos brownie de la persona que probablemente te enseñó incorrectamente que todo es un objeto.
En resumen, la programación no es simplemente tocar el teclado sin pensar. Hay muchas consideraciones de diseño para cualquier proyecto. Sé que es un cliché, pero hay que mirarlo desde todos los ángulos. Incluso con los idiomas de hoy en día de tipo seguro. No solo saca el código y espera que funcione bien. Claro ... puede funcionar, pero puede que no sea la forma correcta de hacerlo. En general, elija el idioma y el formato más adecuados para el trabajo específico y el entorno. Pero ningún lenguaje quita el pensamiento detrás de él. Si no estás pensando ... solo estás escribiendo.