son programaciòn programacion los lenguaje fundamentos entorno cuales computacional language-design

language design - programaciòn - ¿Los compiladores, los lenguajes y los marcos inteligentes hacen que los programadores sean más tontos?



fundamentos del lenguaje computacional (30)

¿Más tonto? No necesariamente. Como se ha dicho antes, contar con herramientas más inteligentes le permite al desarrollador enfocarse en cosas más importantes, como hacer que la aplicación funcione correctamente. Una anécdota relevante de mi propia carrera:

No soy un matemático habilidoso. Fallé en el precálculo (está bien, concedido, fue porque nunca hice mi tarea) y estoy incluso un poco oxidado con algunas fórmulas de física realmente básicas (calcular la fricción, por ejemplo). Esto se debe a que estoy extrañamente fuera de la práctica, lo cual es simplemente porque nunca lo uso.

Tome, por ejemplo, la derivada. Si me pidieras que buscara la derivada de una función, buscaría mi TI-89 porque no tengo la pista más clara de cómo hacerlo. Sin embargo, y mantengo que esto es más importante, sé cómo usarlo. Sé dónde es útil, por qué debería usarse, etc. El producto escalar es otro ejemplo. Sé cómo usarlo para calcular el espectro de una superficie en el espacio tridimensional, pero no sé cómo calcularlo a mano porque nunca lo necesito.

No me llamaría más tonto por eso. Fuera de la práctica tal vez, pero igual de competente.

Los compiladores, los lenguajes y los marcos, cada vez más avanzados, que tenemos para automatizar las tareas u ocultarnos ciertas complejidades, ¿nos convierten finalmente en programadores más tontos?

Jim C da la siguiente analogía de una calculadora:

¿Alguien extrae una raíz cuadrada últimamente, usando papel y lápiz? Usamos una calculadora o una simple llamada a una función en nuestro lenguaje de programación favorito. ¿Cuántos de nosotros sabemos lo que hace la calculadora o incluso la función?

Entonces, ¿por qué no simplemente les decimos a nuestros hijos que olviden aprender matemáticas, para eso tenemos calculadoras? ¿No sería eso inherentemente hacer más tontos a nuestros hijos?


¿Son más tontos los agricultores porque usan máquinas automáticas para plantar, cosechar y mantener cultivos?

La buena automatización de tareas simplemente hace que los programadores sean más efectivos, no más tontos.

Entonces, ¿por qué no simplemente les decimos a nuestros hijos que olviden aprender matemáticas, para eso tenemos calculadoras? ¿No sería eso inherentemente hacer más tontos a nuestros hijos?

Una calculadora es una herramienta que le permite realizar ciertas tareas. Seguro que puedes hacer matemáticas complejas e integración multivariable, pero sin aprender matemáticas, ¿cómo sabrías que NECESITAS realizar esa tarea en un momento dado?

Lo mismo ocurre con la programación y los SDK, puede lanzar muchas campanas y silbatos usando un código predefinido, pero cuando llega el momento en que necesita escribir algo para SOLUCIONAR un problema, todas las herramientas y la automatización del mundo no lo ayudarán. allí (AI aún no está tan avanzado;)


Creo que es necesario tener herramientas más inteligentes para que podamos tener capas de abstracción de la complejidad. Pero creo que debemos ser capaces de cambiar tener acceso a esas capas de abstracciones. Creo que los programadores serán más productivos pero fácilmente perderán la noción de muchos conceptos básicos. Es un intercambio ... Los buenos programadores serán los que sigan entendiendo los principios básicos de la programación. Los otros serán jugadores de "copiar y pegar" y de Lego.


Creo que las máquinas más rápidas empeoran la de los programadores ... en la actualidad, la mayoría de los programadores dedican muy poco tiempo a escribir un código óptimo. Los compiladores no pueden optimizar el código incorrecto en un buen código.

Las máquinas rápidas significan que los programadores malos pueden salirse con un código malo porque nadie sabe que es malo. En los viejos tiempos, el código tenía que trabajarse y refinarse para que funcionara lo suficientemente rápido como para funcionar de manera aceptable.

Tony


Creo que no, pero hay muchas personas (muy sabias) que piensan diferente

Realmente recomiendo esta conferencia, es una opinión muy interesante y muy buen ensayo


Creo que permiten programadores más tontos, no hacen programadores más tontos.


En promedio , sí. :)

No nos hacen programadores más tontos. Lo que hacen es permitir que haya más programadores tontos (lo que supongo significa que, en promedio, somos más tontos). Tener mejores herramientas significa que alguien con poca experiencia y una comprensión sombría de los conceptos de CS todavía puede generar código que finalmente funciona y hace algo útil. Eso no es posible cuando se escribe en ensamblaje, pero es cuando se escribe en, por ejemplo, VB. (Por supuesto, hay una mayor posibilidad de eventuales catástrofes de la WTF cuando una persona con menos experiencia está escribiendo grandes aplicaciones que finalmente colapsan bajo el peso de su arquitectura deficiente).

Es cierto que "tonto" es una palabra inflamatoria para usar aquí. Solo porque alguien sabe menos no los hace estúpidos, solo significa que tienen menos experiencia. Pero el punto es entendido.


En promedio, sí, hacen que los programadores sean más tontos. Pero eso es solo porque hacen que la programación sea más accesible para las personas que no son tan inteligentes como nosotros, lo que reduce la "inteligencia" promedio.

:-)

Un programador inteligente que critica la conveniencia de los entornos de desarrollo modernos probablemente no sea realmente tan inteligente.


Hace que sea más fácil para los programadores menos capacitados para entrar en el campo, es todo. No hace que un buen programador sea más tonto. Serían tontos si ignoraran las herramientas que potencialmente podrían aumentar su eficiencia.


Las computadoras son dispositivos de refuerzo. Tan estúpidos se vuelven más tontos e inteligentes se vuelven más inteligentes.


No diría que hacen que los programadores sean más tontos necesariamente, pero lo que diría es esto. Para las personas que comienzan a desarrollarse en el día y la edad de hoy en día, no aprecien por completo las cosas que están sucediendo detrás de escena que nos están haciendo. En la actualidad, hay tantas bibliotecas integradas en las plataformas, que las personas que comienzan hoy no tienen idea de cómo todo esto tuvo que hacerse a mano en un momento u otro.

Diré, sin embargo, que nunca podré volver a escribir una sola línea de código sin Intellisense :)


No hacen más tontos a los buenos programadores, sino que los hacen más productivos; pero hacen que los más groseros puedan programar y pensar que son grandes programadores.

Aclaración: no tengo una definición precisa para ser tonto. De tonto me refiero a algo general que son las personas que no deberían ser realmente programadores o deberían tratar de aprender cosas importantes. He visto mucha gente que no puede codificar y copiar cosas de aquí y de allá. La evaluación de la calidad del software no es una cosa fácil. Finalmente construyen un software de mierda que funciona de alguna manera (debido a la existencia de buenas herramientas) para que no pierdan sus trabajos y creen que son buenos programadores y, por lo tanto, nunca deberían intentar aprender nada. Créanme, hay una cosa que he visto en cada buen desarrollador: "Nunca dejan de aprender, y no van a aprender solo el pedazo de código que necesitan para completar su trabajo". Esas personas de las que hablé nunca intentan aprender nada más de lo que necesitan y las grandes herramientas reducen esta "necesidad".

Esto no significa que los IDE son malos. Los amo y creo que deberían desarrollarse tanto como sea posible.


No lo creo. Las herramientas más sofisticadas solo nos permiten concentrarnos en problemas más interesantes.


No necesariamente hacen programadores más tontos, pero pueden hacer que los programadores sean flojos. Me he encontrado a mí mismo haciendo esto a veces apurando un código y confiando en el compilador para ayudarme a encontrar todos mis errores en lugar de hacerlo en primer lugar.

Por cierto, esta no es la forma recomendada de hacer las cosas. Por lo general toma mucho más tiempo.


No,

Los compiladores inteligentes permiten a los programadores inteligentes centrarse en cosas que realmente importan, como diseñar un buen software.


No, es algo similar a los esteroides (y otras drogas que mejoran el rendimiento): hacen que un gran atleta sea aún mejor, pero no pueden hacer que alguien como yo corra 100 millones por debajo de 10, incluso si consumiera toda una farmacia de medicamentos. Entonces, Dios IDE, el lenguaje o el marco te pueden hacer un mejor programador, pero si solo estás confiando en él para hacer el trabajo, estás en problemas.


No, pero hace mejores programas y códigos.

Diría que las habilidades son diferentes en los lenguajes de nivel superior, necesita pensar mucho más en las abstracciones, hay muchas más API de las que preocuparse y las personas esperan un mayor nivel de calidad en su software. Como resultado de lo anterior, un programador enfrenta diferentes desafíos, y las herramientas se mantienen al día con esos desafíos.


Ok, las dos primeras computadoras que tuve, las construí yo mismo. Eso fue inteligente entonces, no estoy tan seguro de que sería un buen uso de mi tiempo ahora. Programé una mezcla de ensamblador y BASIC a principios de los 80, otra vez inteligente, no tan inteligente ahora.

Lo que quiero decir aquí es que el contexto ha cambiado, y en computación hemos tenido que intercambiar profundidad de conocimiento por amplitud de conocimiento, con el necesario "embrutecimiento" que eso conlleva. Con el fin de soportar la complejidad masiva y la amplitud de las aplicaciones cubiertas por la "informática actual", también estamos obligados a trabajar a niveles mucho más altos de abstracción. Por un lado, observamos que los especialistas en aplicaciones de dominio usan herramientas muy abstractas para proporcionar soluciones muy buenas y, por otro lado, vemos que los expertos en programación y tecnología informática producen un código excelente que tiene la capacidad de hacer avanzar a toda la industria informática. Llamar tonto a cualquiera de las partes es inflamatorio, y probablemente el único tonto en el debate.

Embrutecerse en este contexto es simplemente permitir que un público más amplio haga uso de las herramientas efectivas que son las computadoras modernas. Esto es algo bueno, y los programadores de núcleo duro no deberían sentirse amenazados por eso, es después de todo su bebé.


Para aquellos de nosotros que hemos aprendido a hacer esas tareas o hemos aprendido sobre dichas complejidades en el pasado, creo que solo nos hace más eficientes. Somos más libres para preocuparnos por otras / cosas más importantes. Es posible que tiendamos a olvidarnos de "qué tan difícil fue en ese momento" o quejásemos de cuán afortunados son hoy los nuevos programadores.

Para aquellos de nosotros que recién estamos empezando y que no hemos aprendido esos detalles, creo que simplemente nos hace una raza diferente. No es más tonto, solo que vemos diferentes problemas bajo diferentes luces.

Sin embargo, reduce el obstáculo de entrada y, por lo tanto, hace que la programación sea más accesible para las masas. Si eso es algo bueno o malo es discutible.


Por más inteligente te refieres automatizado . Hacer un trabajo repetitivo no hace a nadie más inteligente, por lo que la respuesta es no .

Permíteme expandir usando el ejemplo de la calculadora. La técnica para calcular una raíz cuadrada con lápiz y papel es simplemente un proceso que se puede aprender. No te hace más inteligente saber este proceso, solo te permite calcular raíces cuadradas en ausencia de una calculadora.

Ahora, si descubrió un algoritmo para calcular las raíces cuadradas, ahora eso lo hace inteligente.

Lo mismo con nuestras herramientas de programación. Un lenguaje que hace la gestión de la memoria para usted no lo hace estúpido, ni ser capaz de hacer la administración de la memoria usted mismo lo hace más inteligente.


Por el contrario, los compiladores más inteligentes significan que estás luchando con la computadora menos y tienes que pensar más acerca de cómo estás tratando de hacer algo.

Si estás luchando con el ensamblador, casi nunca te molestarás con métodos anónimos.


Si, pero no importa. ¿Alguien extrae una raíz cuadrada últimamente, usando papel y lápiz? Usamos una calculadora o una simple llamada a una función en nuestro lenguaje de programación favorito. ¿Cuántos de nosotros sabemos lo que hace la calculadora o incluso la función?

Debes saber cómo funcionan las cosas, el mejor programador o cualquier otra cosa que desees, más deberías saber. Pero solo hay muchas horas en el día.

Mejores herramientas nos hacen mejores. El intercambio es que perdemos poco control sobre el proceso.


Solo si se lo permiten.

Si aprendiste algo duro y complejo (como mi laptop Tandy 102), aún piensas en ese modo incluso con herramientas más inteligentes.

Ciertamente, es fácil confiar en las herramientas para hacer su trabajo, y por mucho de eso, estoy agradecido.

Por ejemplo, no le enseña a la gente cómo hacer carpintería con sierras de mesa y taladros: usted comienza con sierras manuales y sinfines o con pequeños taladros manuales. De paso, cuando te mueves a las herramientas eléctricas, no haces algo estúpido (tm).

Confiar en la herramienta es genial, pero saber cómo hacerlo sin la herramienta también es importante.


Yo diría que no.

Sistemas de programación más inteligentes (estoy pensando en niveles más altos de abstracción, no cosas como herramientas que corregirían automáticamente su código) Las IMNSHO son en realidad más difíciles de usar. La analogía que he encontrado es que actúan como una palanca larga; presionas con fuerza en el extremo corto, lo mueves un poco y se producen grandes cambios.

Es más difícil averiguar lo que se debe hacer, pero también es mucho más difícil estropearlo cuando finalmente lo haces.



En cierto sentido

Por ejemplo, no sé o no me importa escribir sobrecarga de operadores porque tengo herramientas que los hacen para mí. Ni siquiera tengo que recordar cómo funciona P / invoke porque una herramienta que tengo crearía automáticamente un proyecto dll C ++, y una [DllImport] en mi proyecto C #. No tengo que escribir un auto-updater para mi proyecto porque ClickOnce es más o menos. (Y no tengo idea de cómo funciona ''debajo del capó'').

Así que sí, soy menos inteligente porque no tengo ni idea de muchas cosas de bajo nivel que el programador de C ++ conoce. Pero aún creo que estoy en el lado ganador, porque puedo hacer más cosas. Puedo dedicar más tiempo a la presentación, al control de calidad y a las características que los clientes realmente desean tener. Además, profundizar en el framework .NET requiere algo de aprendizaje, por lo que es un poco una compensación.


s/make/allow/

Siendo un poco menos simplón: son herramientas. Las herramientas no hacen nada, y no mejoran o empeoran a ningún artesano. Las herramientas poderosas tampoco lo hacen: simplemente actúan como una palanca, amplificando la competencia de un artesano en particular (o la falta de ella).

Algunas herramientas de programación han tenido el efecto de reducir las barreras de entrada, si no de la profesión de ingeniería de software, al menos para que se ejecute una aplicación. Acortar la cantidad de pensamiento que se necesita para producir una aplicación que funcione (o "funcionar") es doble: los expertos competentes se liberan del trabajo y pueden hacer grandes cosas, pero los novatos torpes a veces obtienen un código malo en la producción que nunca habría funcionado sin las herramientas "inteligentes". El último efecto probablemente haya tenido un mayor impacto que el anterior en la configuración de las reputaciones de BASIC, VB, PHP y la reciente racha de marcos de desarrollo rápido MVC para la web, y de hecho en la noción de tales herramientas en general.


Las mejoras en los compiladores, los lenguajes y los marcos hacen que los programadores sean más efectivos, suponiendo que tengan una sólida formación académica o una buena comprensión semántica.


Los lenguajes, compiladores y marcos más inteligentes hacen posible la programación. Quiero decir, ¿te imaginas el estado de la programación si aún tuviéramos restricciones para usar el lenguaje ensamblador? Diablos, rasguña eso. ¿Podría imaginarse el estado de la programación si estuviéramos restringidos a C o C ++?


Sé que este es un hilo viejo, pero aún me gustaría opinar aquí ...

Nos hacen más tontos, la mayoría de ustedes aquí que reaccionan ya SABEN cómo programar de una manera decente. ¿Y por qué? Porque vienes de una era en la que los marcos apenas se usaban.

En el sistema educativo, cada vez se utilizan más marcos en las clases, ... y en las clases donde no se utiliza un marco, no es alentador comenzar a programar. Aprende TODO este código, mientras que en la parte posterior de tu cabeza sabes que hay una herramienta que lo hace todo por ti. Sabes que en el campo / workfloor tienes que usar frameworks para ir rápido. Entonces, ¿por qué pasar todo este tiempo aprendiendo el código?

SO: En el corto plazo, para todos ustedes que ya conocen los idiomas, no ... no los hace tontos

A largo plazo ... verá que los programadores de bajo nivel de vida mejoran y los buenos programadores empeoran en lvl.

¡Marca mis palabras!