¿Por qué la gente hace difícil la programación?

Ellos no La programación es inherentemente difícil. Es difícil de aprender, y en la práctica es un trabajo muy duro. He trabajado muy, muy duro por más de 20 años.

La programación tiene que ver con la resolución de problemas . Tienes que desarrollar tus habilidades analíticas y lógicas para resolver un problema técnico. Se utiliza un lenguaje de programación para codificar la solución.

Aprender a programar es difícil porque implica entrenar tu mente , lo que siempre es un desafío. Esto se aplica a otras cosas como las matemáticas, la música y el ajedrez.

Dicho esto, la tecnología ha evolucionado para ayudar a facilitar la tarea de programación. A lo largo de los años, hemos visto mejoras en herramientas como IDE (por ejemplo, Visual Studio, IntelliJ IDEA, etc.) y marcos de aplicaciones y lenguajes gráficos (por ejemplo, Scratch, Blender, LabVIEW, etc.).

Los lenguajes de programación también han evolucionado para ser más fáciles de usar, en comparación con los gustos de C ++, C #, Java y JavaScript. Los buenos ejemplos incluyen Elixir, Nim, Raqueta, Python y Pharo. De hecho, Pharo es particularmente convincente: lea Por qué Pharo podría ser el futuro del desarrollo de software.

Sin embargo, la resolución de problemas sigue siendo una tarea difícil, y el cerebro humano sigue siendo la herramienta más crucial. Si “la gente dificulta la programación”, es porque son humanos.

Lo que la gente no entiende acerca de la programación es que en realidad es difícil y contraproducente crear un lenguaje de programación que sea fácil de usar para la persona promedio y lo suficientemente flexible para cumplir la amplia variedad de tareas para las que se usaría.

La razón por la que la programación se hace “difícil” a propósito es porque la programación requiere precisión, complejidad y flexibilidad. Si de alguna manera ‘reduce la dificultad’ de la programación, compromete los tres valores.

Voy a usar el kit de desarrollo de juegos GameMaker Studio 2 como ejemplo de cómo funciona esto.

GMS2 incluye esencialmente dos plataformas de programación: su sistema Drag and Drop y su sistema GML (Game Maker Language). Cuando comienzas un proyecto, debes elegir entre uno u otro. En versiones anteriores de GameMaker, puedes combinar elementos de arrastrar y soltar con código GML, pero ya no.

Arrastrar y soltar le permite arrastrar y soltar bloques de código predefinido en un árbol lógico.

(De Google)

Parece complicado, pero para ser honesto, esto es tan simple como la “programación” puede obtener. No estás escribiendo ninguna función de scripts ni nada. Está arrastrando y soltando cuadros en un orden específico para completar una tarea.

En los foros de GMS, existe esta ‘broma’ para arrastrar y soltar: nunca se usa profesionalmente y nunca debe considerarse para un proyecto profesional .

La razón por la cual es porque estás limitado por las limitaciones de los cuadros. Si necesitas que tu programa haga algo específico que Drag and Drop no puede hacer, básicamente estás jodido. Debido a que ya no puede hacer que Drag and Drop y GML interactúen entre sí, no puede presentar sus propios scripts personalizados para lo que quiere hacer.

Si bien Drag and Drop es fácil de entender y usar, su flexibilidad, precisión y complejidad están muy limitadas y, por no mencionar, es un sistema engorroso. Para ideas simples, es bueno; para otros, en realidad no.

GML (Game Maker Language) es arrastrar y soltar, menos las casillas y menos las limitaciones de lo que puedes hacer.

(De Google)

GML es un código escrito, no un árbol lógico de cuadros representativos. Con GML, solo está limitado por el conjunto de funciones en el lenguaje GML, así como por su propia imaginación.

Por supuesto, con esto viene una curva de aprendizaje decente, pero es mucho más fácil de dominar debido a lo que hace GML en el fondo.

GML es infinitamente más indulgente con ciertas convenciones de codificación. Cuando declara una variable, no necesita declarar qué tipo de datos es, ya que Game Maker maneja cómo se lee entre bambalinas. Por ejemplo:

hora int = 5;
float cpuTime = 3.14;
bool hasStarted = true;
char yesNo = ‘y’;
string month = “January”;

(De los tipos de datos primitivos en C #)

Aquí hay una lista de ejemplos con tipos de datos primitivos que puede usar en el lenguaje de programación C #: int, float (o double), bool (boolean), char y string.

Aquí es cómo escribirías esto en GML:

hora = 5;
cpuTime = 3.14;
hasStarted = true;
yesNo = ‘y’;
mes = “enero”;

Observe cómo no escribí los tipos de datos esta vez. Esto se debe a que Game Maker reconoce el tipo de datos por lo que escribe sin tener que hacerlo usted mismo. Por ejemplo, GM reconoce que ‘hora’ es un entero (int) porque ‘hora = 5’, donde 5 es un entero. GM reconoce ‘cpuTime’ como un flotador porque ‘3.14’ no es un número entero (entero).

Puede parecer que me estoy preguntando qué tan fácil es aprender y usar GML, así como su flexibilidad, y sería correcto asumir eso. Uso Game Maker en mis pequeños proyectos para hacer juegos. Es el software perfecto para mis necesidades personales.

Sin embargo, Game Maker tiene limitaciones. Hay ciertas cosas que deben hacerse de una determinada manera o de lo contrario no funcionará, o no funcionará bien, o lanzará un error exclusivo de Game Maker. Game Maker también tiene algunos problemas de memoria y de pérdida de memoria con algunas de sus características (algo que ocupa memoria seguirá ocupando memoria incluso cuando el programa está cerrado).

Si bien Game Maker, para mí, es una excelente forma de crear prototipos y crear juegos, muchas de las cosas que debo hacer son esencialmente soluciones alternativas y “casi” para algo que probablemente no tenga problemas en otros motores de juegos.

En lenguajes de programación más complejos como C # y C ++, y en motores de juego más robustos como Unity, las limitaciones son menos evidentes.

Entonces, una respuesta tardía y entrecortada más tarde: si intenta hacer que un lenguaje de programación sea “más fácil”, sacrifica la especificidad que necesita para producir algo que haga exactamente lo que quiere que haga.

La programación debería ser fácil, pero no lo es.

Tienes razón. Programar su computadora para hacer tareas automatizadas debería ser fácil. Debería poder decirle a su computadora que todos los viernes por la mañana desea que aparezca Quicken, descargue el registro de su banco, haga una reconciliación y luego, si hay alguna discrepancia para enviarlos a su teléfono a través de un mensaje de texto. Eso debería ser simple. Lamentablemente es muy difícil. Necesita aprender un lenguaje de shell / batch que sea peculiar e incoherente, instalar y aprender una aplicación de raspador de pantalla, averiguar cómo configurar el programador, etc. Es simplemente miserable.

Hay una oportunidad perdida para una buena herramienta de automatización. Algunos existen pero muchos faltan, no son de uso generalizado o tienen otros problemas.

Pero desarrollar un programa real es una historia diferente.

Pero si está hablando de escribir programas como los que las personas podrían instalar en su teléfono o computadora, juegos, aplicaciones, utilidades, etc., es un asunto muy diferente. Ha habido muchos intentos de crear lenguajes de programación y entornos de desarrollo que eran muy simples. Ellos fallaron. ¿Por qué? Porque cuando desarrolla software profesionalmente, hay algunas expectativas muy importantes que anulan la “simplicidad de uso”.

Si un lenguaje de programación fuera fácil de usar, sería capaz de “entender lo que quería decir” aunque no lo haya codificado de manera precisa y estructurada. Esto se puede hacer pero es una mala idea. Si las herramientas de desarrollo “descubren lo que quería decir”, entonces hay una pérdida de certeza, un compromiso en la precisión, que abre una oportunidad para los problemas.

Si no tuviera que seguir alguna estructura específica al escribir código (es decir, POO, alcance, convenciones de nomenclatura, etc.), solo podrá depurarlo fácilmente. Si otro miembro del equipo seleccionó su código, es posible que tengan que recorrer varias docenas de páginas para averiguar qué intentaba hacer. Esto hace que el código sea difícil de mantener y propenso a errores.

El diseño de lenguajes de programación

Por lo tanto, las personas que diseñan lenguajes dan prioridad a garantizar que se impone la estructura, que debe ser muy preciso con respecto a las definiciones y que su código debe ser fácil de leer y no tener ambigüedades. A menudo, esto se aplica estrictamente por el lenguaje, lo que significa que usted tiene que aprender las reglas y ser disciplinado sobre la programación.

Imagina que un arquitecto no dibujó planos, sino que hizo unos bocetos cuando diseñó tu casa. ¿O qué sucede si un ingeniero electrónico acaba de dibujar una vista en perspectiva de un circuito, por lo que fue muy difícil seguir un solo cable en un paquete, en lugar de dibujar un diagrama esquemático? ¿Confiarías en el trabajo de tales profesionales? El software es similar.

Aprendiendo a programar

Dadas estas limitaciones, aprender un lenguaje de programación no es difícil en absoluto. Sin embargo, aprender a programar en realidad implica: descomponer un problema en subproblemas, encontrar soluciones a estos y descubrir cómo manejar las malas entradas, los casos extremos y las situaciones especiales. Eso es realmente difícil. Aprender el lenguaje de programación más complicado es casi trivial en comparación con el desarrollo de la capacidad de resolver grandes problemas de programación.

Conclusión:

Entonces, si su pregunta se relaciona con la automatización de tareas en su computadora, entonces estoy de acuerdo, debería ser mucho más fácil.

Pero si su pregunta está relacionada con el desarrollo de programas serios, entonces malinterpreta gravemente la situación. Es como decir “Quiero ser un jugador de baloncesto rico y famoso como Michael Jordan, pero no debería tener que aprender todas las reglas del baloncesto o practicar mucho”.

Muy bien, lo que voy a decir puede sonar loco, pero realmente lo creo.

No es dificil.

Lo sé, lo sé, pero dije que era una locura.

No estoy negando su complejidad. Es extremadamente, extremadamente complejo. Y sí, esto lo hace difícil. Pero sólo por un tiempo.

Durante los meses / años que toma aprender todas las pequeñas complejidades de un lenguaje de programación, será difícil, pero una vez que sepa por qué las cosas funcionan de la manera en que lo hacen, puede escribir código extremadamente complejo desde el principio.

Tomemos el idioma inglés, por ejemplo. Es conocido como un lenguaje extremadamente difícil de aprender, y por una buena razón. Su, allí, y están, ¿verdad?

Pero, sin embargo, un hablante de inglés promedio puede leer fácilmente cualquier oración y descifrar las inflexiones y otras cosas, simplemente porque lo han hecho durante tanto tiempo. Es parte de ellos. Lo haces todo el tiempo sin darte cuenta.

Esto es lo mismo que experimentas cuando programas. Sabes por qué y cómo funcionan las cosas en el idioma sin siquiera saberlo. No se deje intimidar por la complejidad del código en sí. Sepárelo línea por línea y rápidamente se dará cuenta de que no son más que oraciones escritas en un idioma extranjero.

Ya hay muchas respuestas excelentes aquí, dudo que pueda agregar mucho más, pero esta pregunta se ha formulado de diferentes maneras y en diferentes momentos aquí en Quora, y creo que un error relativamente grande es que la gente asume que la programación es difícil porque la escritura El código es difícil y toda la sintaxis y los idiomas son difíciles, pero se debe más al hecho de que los problemas reales y los dominios de problemas en los que estamos trabajando a través de la programación de uso son mucho más difíciles. No es una cuestión del proceso o del código en sí, es simplemente que los problemas que estamos resolviendo son mucho más complejos ahora.

Genética, biología molecular, física, IA, etc., etc. Ahora tenemos herramientas muy complejas para resolver problemas muy complejos que simplemente no existían hace 20 o 30 años.

Las aplicaciones del Método de Elementos Finitos para abordar problemas reales y complejos de Física, como analizar el comportamiento de presas / puentes y poder realizar predicciones sobre comportamientos o reacciones futuras en un escenario más catastrófico, simplemente NO existieron en Portugal hace 30 años. No se trata de que no se conozca el algoritmo, simplemente su uso y programación con él, simplemente no estaba allí.

Y a medida que estas nuevas ideas complejas comenzaron a integrarse en la programación, fue entonces cuando se hizo difícil.

No como: “Oh, ¿cómo puedo invertir esta gigantesca matriz dispersa y calcular sus eingenvalores / vectores propios de manera eficiente?”, Difícil, porque eso es un problema resuelto, pero más como: “Bueno, si este material no es homogéneo, entonces su coeficiente de expansión se debe a el estrés necesita ser computado de una manera nueva y compleja que nadie hizo mucho antes ”.

No es el material de los libros de texto, se aplica el conocimiento de su dominio actual a la codificación en sí.

Por mucho que simplifiquemos la programación, producir software que pueda competir con éxito en el mercado siempre será difícil, ya que compite con muchas personas inteligentes que trabajan duro. Nuestras expectativas se basan en lo que otros logran, y dado que el software se puede reproducir y transportar de forma gratuita, estamos básicamente compitiendo con los mejores del mundo en nuestro nicho.

Entonces, es como preguntar “¿por qué es difícil correr?”. Es difícil correr si compites con otros buenos corredores y quieres ganar tanto como ellos.

Este es un problema general en todos los campos donde existe la posibilidad de alcanzar nuevas alturas. No hay diferencia real entre escribir programas o libros. Creo que me tomó mucho más tiempo poder escribir algo en sueco (que es mi lengua materna) que en BASIC (que fue mi primer lenguaje de programación). Por supuesto, tenía algunos años más de edad cuando probé BASIC por primera vez … Todavía no he escrito ningún libro real, principalmente cosas pequeñas como estas respuestas, pero he escrito muchos programas en varios idiomas diferentes.

Construí aparatos electrónicos, renové casas, reparé bicicletas y autos, etc., traté de aprender a tocar algunos instrumentos, hice algo de carpintería. No es tan fácil de comparar, pero creo que para mí es mucho más fácil lograr resultados sustanciales y útiles de la programación que de cualquiera de los otros campos que mencioné.

Me toma varios días renovar una habitación sencilla, y después de eso, básicamente se verá como hace diez años, solo un color diferente en las paredes. En la computadora, puedo escribir un juego simple basado en la web para mi hija de cinco años en unas pocas horas, a pesar de sus preguntas constantes sobre cuándo se terminará la interfaz …

Porque si no fuera difícil, no podrías hacer mucho con eso. Es como decir “¿por qué no puedo [insertar una tarea matemática realmente complicada] usando matemáticas de primer grado?”

La programación es difícil porque necesita ser complicada. Debe poder escribir un conjunto de instrucciones increíblemente preciso, de modo que el compilador / intérprete pueda entender exactamente lo que está tratando de hacer con gran detalle.

La gente no hace difícil la programación. No es facil.

La programación es un proceso de creación que convierte las instrucciones del programador en una computadora para realizar tareas. Entonces, para la tarea simple, es fácil; Para tareas complejas, es difícil, a veces, muy difícil.

Para programar / instruir una computadora, necesita un conjunto de reglas. Los lenguajes de programación vienen. Cada lenguaje de programación tiene su fuerza y ​​su debilidad. Depende del tipo de tareas que desee que realice una computadora.

El lenguaje de programación es un lenguaje artificial. Incluso cuando nosotros, los humanos, usamos lenguajes naturales que tienen miles de años de experiencia, todavía tenemos ambigüedad en nuestras comunicaciones. Un lenguaje de programación puede no ser lo suficientemente expresivo como creemos que queremos, especialmente en tareas complejas.

La programación no es fácil. La siguiente pregunta debe ser sobre cómo hacer que sea menos propenso a errores.

Durante décadas, la gran mayoría de la programación de computadoras fue realizada por programadores inteligentes de COBOL con solo 12 semanas de capacitación. Luego se inventó la informática.

La ciencia informática no existía cuando obtuve mi maestría en ingeniería informática. Vi cómo se inventaba la ciencia informática con mis propios ojos y leí sus revistas ACM y IEEE durante décadas, que a menudo eran más divertidas que la revista MAD. Montones y montones de diarios amarillos, rojos, azules y verdes apilados en mi garaje llenos de teorías.

Los científicos de computación hacen difícil la programación de computadoras.

Hacen que la programación de computadoras parezca difícil cuando en realidad se hizo más fácil con su invención del mecanismo de objeto genio. Los objetos se crean con la clase de palabra clave o estructura y eliminan la necesidad de crear nuevos lenguajes porque se pueden crear nuevas funcionalidades y nuevos tipos de datos definiendo objetos y colocándolos en una biblioteca de objetos universal para que todos los programadores los usen.

Es estúpido que se requiera aprender un nuevo lenguaje para obtener una nueva funcionalidad cuando esa nueva funcionalidad podría haber estado disponible para cualquier programador que use cualquier lenguaje de programación decente de los objetos contenidos en una biblioteca.

Luego, los científicos informáticos simplificaron la programación informática con su invención del entorno de ejecución Java y .NET. No más archivos de cabecera, módulos, y enlaces. Todo lo que se necesita es el mecanismo de objetos y una gran biblioteca de objetos administrados por el entorno de ejecución.

Hoy en día, los programadores de aplicaciones solo necesitan crear dos cosas para codificar sus algoritmos y utilizar toda la tecnología y los servicios del sistema operativo: 1) objetos y 2) métodos que se convierten en miembros de un objeto. ¿Qué podría ser más fácil?

No estoy diciendo que crear algunos algoritmos no sea difícil. Muchos algoritmos, como la navegación inercial, los sistemas de control de ejes 3D, la meteorología, la programación de rutas de FedEx y el desarrollo de compiladores optimizadores son difíciles de desarrollar y pueden requerir años de estudios universitarios en esas disciplinas de ciencia e ingeniería. Pero codificarlos debería ser fácil.

En realidad, la codificación es fácil.

Es usar Visual Studio que es difícil. Observé a muchos programadores pasar el 80% de su día intentando descubrir cómo hacer que Visual Studio hiciera algo que él quería hacer, pero no sabía cómo hacer que Visual Studio lo hiciera. Recuerde: los objetos y los métodos son todo lo que existe en la programación moderna.

¿Los científicos informáticos gastan su tiempo y energía haciendo que el desarrollo de software sea fácil para los ingenieros y programadores? Infierno no

Los científicos informáticos están inventando y enseñando a los ingenieros y programadores aún más paradigmas y teorías de programación, como si nos mostraran a los ingenieros una mejor manera de modelar la realidad o escribir un software de sistema de control.

Los científicos informáticos deben dejar de enseñar a los ingenieros y programadores sus teorías y paradigmas y asumir el deber de: 1) estandarizar uno o dos buenos lenguajes de programación, 2) desarrollar un sistema de desarrollo de software fácil de usar y 3) usar el ACM o IEEE para crear y mantener una biblioteca universal de objetos que contiene todos los algoritmos estándar conocidos y otras funciones útiles.

Danos a los ingenieros y programadores un sistema de desarrollo fácil de usar y una biblioteca universal de objetos, y confina tus teorías, paradigmas y programación funcional a otros científicos informáticos. Nosotros, los ingenieros y programadores (quienes en realidad crean el software de aplicación que todos usan) no queremos que sus teorías, múltiples lenguajes de programación y paradigmas no nos ayuden a programar más fácil o mejor.

Es difícil porque las computadoras son tontas y los programadores han convertido tu forma de pensar en cómo piensa una computadora. Hay una vieja broma de la computadora:

Un programador va a la tienda de comestibles y su esposa le dice: “Compre un galón de leche, y si hay huevos, compre una docena”. Así que el programador va, compra todo y vuelve a su casa. Al llegar, su esposa le pregunta airadamente: “¿Por qué obtuviste 13 galones de leche?” El programador dice: “¡Había huevos!”

Si no eres programador, probablemente no entiendas el chiste. El punto es si le dices a una computadora “Compra un galón de leche, y si hay huevos, compra una docena”. entonces puedes terminar con 13 galones de leche, porque si bien eso no es lo que quisiste decir, eso es lo que has pedido. El humor está en que el programador ha pasado tanto tiempo pensando como una computadora que ya no puede pensar como una persona.

Muchas personas pasan mucho tiempo tratando de facilitar la programación, pero el problema principal es que el lenguaje humano es impreciso y abierto a la interpretación y al error. La gente dificulta la programación porque las comunicaciones adecuadas son difíciles.

La gente no está haciendo la programación difícil. La gente hace que la programación sea cada vez más fácil.

Hacer un videojuego a finales de los 70 era algo que solo unas pocas personas podían hacer, lo que implicaba una programación de bajo nivel en los cartuchos. Ahora, incluso su promedio puede hacer un juego con las herramientas adecuadas.

Además, los lenguajes de programación y los IDE hacen que sea mucho más fácil programar ahora que hace 40 años, por ejemplo. Sin mencionar las diversas bibliotecas que puede descargar o comprar, lo que le ahorra mucho tiempo y esfuerzo.

Al final, sin embargo, la programación sigue siendo un campo de “resolución de problemas” .

Incluso con herramientas muy simplificadas, un problema complejo es complejo. Seguro que puede encontrar que es 100 más fácil resolverlo en C ++ que en el ensamblaje, pero esto no lo hace fácil.

¿Le ruego me disculpe? La gente ha estado haciendo la programación mucho más fácil durante las últimas 3 décadas que programé, es increíble lo mucho más fácil.

Cogí (aunque no se hizo profesionalmente) la programación en IBM 360, en Fortran o Assembler, usando tarjetas perforadas, una tarjeta por línea de código:

Sí, podría implicar leer las tarjetas perforadas para verificar si hay errores.

Lo que no fue tan malo como tratar con cinta perforada:

Y tratando de leer y corregir (!!!!) la cinta.

Para algunas ideas, lea Los programadores reales no usan PASCAL

Luego vinieron las PC, así como Pascal y “C”. Claro, escribir código se hizo mucho más fácil, sin embargo, la depuración aún incluía pasar por los comandos de la CPU y leer los volcados. Sí, para algo tan básico como una ventana emergente con un formulario para ingresar datos personales, el tipo de cosas que hace en FORMATO HTML en estos días. Y esas ventanas, por cierto, no fueron proporcionadas por el sistema sino dibujadas en símbolos ASCII, por su código.

Y quién puede olvidar la gestión de la memoria. Necesita almacenar cualquier cosa de tamaño variable, necesita solicitar memoria, luego no debe olvidarse de liberarla o se queda sin memoria RAM bastante rápido.

Cuando Java llegó junto con la recolección de basura, fue una revelación (para cualquiera que no conociera a Lisp, Prolog o Smalltalk, por supuesto).

Cuando ves los IDE modernos y los lenguajes como Python y Javascript, te sorprende lo fácil que es todo.

Y no se olvide, toda esa codificación solía hacerse sin Google, y mucho menos el desbordamiento de pila. Recibe sus discos / cinta con software y (con suerte) algo de documentación, y eso es todo. Recuerdo haber hecho algún trabajo en VAX UNIX. Le pregunté a un experto local por qué longjump no funciona como se describe, en respuesta, me dijo en qué directorio puede encontrar las fuentes del sistema operativo. Lee el código, encuentra la respuesta. No está tan mal: cuando algo salió mal con MS-DOS, tuve que pasar por una función del sistema con el depurador, leyendo el comando de la CPU en referencia a los datos a través de direcciones hexadecimales.

Entonces, no te quejes. Es mucho más fácil.

Tengo dos perspectivas sobre esto:

Respuesta pragmática corta:

La programación no tiene normas impuestas. Los electricistas pueden ver el trabajo realizado y decir si está “conforme al código” o no, lo mismo que con los constructores de viviendas o cualquier trabajador de la construcción, etc. Los programadores solo pueden decir, yo lo haría de manera diferente;).

Respuesta filosófica:

No podemos administrar un programa complejo en lenguaje de máquina básico, por lo que creamos abstracciones en la parte superior, a veces derivadas de teoremas reales y, por lo demás, por opinión sobre las mejores prácticas.

Encontrar el equilibrio entre la legibilidad, el rendimiento, la extensibilidad es difícil. Vas en una dirección, muy legible, a menudo pierdes el rendimiento. El rendimiento es extremo (p. Ej., Vamos a hacer todo en C), y para la mayoría de los programadores es difícil encontrarlo. Hacer que las cosas que escribimos sean fáciles de ampliar puede llevar a conceptos abstractos genéricos con los que es difícil relacionarse en la vida real. Hacer que las cosas sean fáciles de entender a menudo conduce a un código que es demasiado específico y no es reutilizable.

Usted va en círculos, en algún lugar necesita encontrar el equilibrio adecuado, pero depende del dominio del proyecto / problema y de las capacidades + estilo de los desarrolladores …

La gente no hace nada de programar, solo es lo que es.

La programación de computadoras es fácil, la ingeniería de software es difícil.

Escribir un montón de código para hacer que la computadora diga “hola” con instrucciones predefinidas sobre cómo hacerlo es realmente muy fácil. Todo lo que tienes que hacer es seguir las instrucciones y llegarás al objetivo final.

Ahora, crear un sitio web que un usuario pueda usar para hablar y conectarse con sus amigos es difícil, especialmente si nadie lo ha hecho antes. Lo que es aún más difícil es hacer que este sitio web sea tan increíblemente útil y adictivo que el 60% de todas las personas expuestas se registren para el final de la semana. Eso es realmente muy duro. Y no mucha gente puede hacerlo.

Los programadores de computadoras son completamente reemplazables, ya que hacen lo mismo que un empleado de entrada de datos.

Los ingenieros y desarrolladores de software son extremadamente valiosos, porque hacen lo difícil.

Porque la gente como usted lo hace difícil … er sobre ustedes mismos.

No es la máquina, es el operador. Si imprimir “¡Hola mundo!” Es demasiado para ti, entonces tal vez la programación no sea para ti.

¿O estás preguntando por qué la programación tiene que ser difícil? No culpe a las personas que crearon los idiomas y su infraestructura de soporte (Documentación, compiladores, bibliotecas, puertos, foros comunitarios, etc.), todo el punto de la programación (así como las matemáticas) es resolver problemas.

Incluso los juegos caen en esta categoría, porque los juegos tienen un propósito y una meta.

Los problemas complicados a veces requieren soluciones complicadas. No siempre, pero más a menudo que no.

Por defecto, por su “naturaleza”, la programación no es difícil. Por otro lado, es tan difícil como el problema con el que te encargas.

Como dice el viejo refrán: basura dentro, basura fuera. Lo que obtienes de la programación (así como la forma en que lo abordas), depende de lo que pongas en ella.

La computadora solo puede hacer las tareas tan bien como usted puede decirle.

Como han respondido los compañeros quoranos, la programación es un lenguaje . En este aspecto, lleva Semántica (significado), Sintaxis (estructura), Vocabulario (palabras utilizadas para comunicarse), Reglas de gramática (en relación con todo lo anterior para hacer que el lenguaje sea coherente y coherente). Piense en ello como si estuviera aprendiendo a programar para hablar con la computadora en su propio idioma (que es exactamente lo que está haciendo cuando codifica).

¿No le gustaría que la máquina entendiera perfectamente lo que quiere comunicar? Pondré un ejemplo, dibujando paralelismos con el desarrollo del lenguaje real.

Imagina que tú y la CPU son dos comerciantes que intentan hacer negocios, solo que eres de la lejana tierra de Humania y que has llegado a Cyberia , el país de la CPU, que solo sabe una o dos palabras. Rápidamente intenta comunicar sus ideas de negocio a la CPU … pero no entiende muy bien qué es exactamente lo que está tratando de decir. Entonces, a lo largo de la conversación, desarrollas un Pidgin : un gramaticalmente Lenguaje simplificado para transmitir sus ideas de la manera más básica. Ahora, la CPU obtendrá algunas de las cosas que quería decir, pero no tanto como si realmente hubiera hablado en lenguaje de máquina, que es el idioma que habla de forma nativa.

Un poco decepcionado porque no pudo obtener todo lo que quería de esta relación comercial, regresa a Humania y trata de aprender el lenguaje de la máquina, pero resulta que no está relacionado con su propio idioma y es muy difícil de entender. Además, uno de tus amigos te dice que una vez habló con tres CPU diferentes en Cyberia y los tres hablaron con diferentes variedades de lenguaje de máquina .

Ahora realmente no sabes qué hacer, casi lo estás dejando de lado para hacer negocios con esos extraños en Cyberia , pero el mismo amigo te dice “Oye, pero … ya sabes, hay estos tipos llamados compiladores que actúan como traductores. entre nosotros y los ciberianos , solo necesitas aprender este conjunto de palabras y sintaxis y un poco de reglas gramaticales y seguirán desde allí.

Ve y aprende estas palabras y la sintaxis y vuelve a intentar ir a Cyberia , ahora con tu amigo traductor. La CPU se muestra escéptica debido a que su última reunión no está logrando todo su potencial, pero luego ocurre algo mágico: ¡Habla en un idioma lo suficientemente fácil para que pueda expresar sus ideas y luego la CPU está escuchando todo en su propio lenguaje de máquina ! Ahora ha establecido una muy buena relación con la CPU y puede ofrecer lo que sea que solicite al principio.

Si la Programación fuera más sencilla , es decir, más parecida al lenguaje humano, paradójicamente podría ser más difícil llevar nuestros comandos a la máquina. Si le dejamos todo el trabajo al compilador, será demasiado lento para hacer las cosas en un tiempo razonable y todo el esfuerzo que haga para tratar de simplificar la interfaz de su idioma será contraproducente al final, con poca productividad, pérdida de tiempo y costo de oportunidad. .

Debido a que la codificación es fácil, pero no todos tienen la capacidad de expresarse claramente; Con código o de otra manera.

Lo dije antes, lo repetiré: escribir el código no es la parte difícil. El reto lo está escribiendo bien.

La mayoría de las personas no pueden articular ideas abstractas con claridad utilizando su propio lenguaje natural (por ejemplo, el inglés) . ¿Cómo puede esperar que articulen ideas abstractas con claridad en un lenguaje de programación inventado?

La programación no es la parte difícil. Hacer un programa de trabajo es bastante simple, francamente. La parte difícil es cuando la gente improvisa un código de “trabajo” sin pensar en la organización y articulación, lo que hace que la codificación futura sea mucho más difícil de lo que realmente es o debe ser.

La industria ha ideado todo tipo de reglas, ya sean paradigmas de programación, principios o “mejores prácticas” para ayudar a guiar a “la mayoría de las personas” (que no se articulan claramente) sobre cómo escribir código más limpio y fácil de entender. Sin embargo, muchas veces, estas herramientas y prácticas se explotan hasta extremos que hacen que el código sea mucho más difícil de entender en general. Interfaces de interfaces de interfaces o fábrica de fábricas constructoras … El hecho es que nunca trabajará en un proyecto de forma aislada a menos que sea un indie guru, y estará trabajando con el código de otras personas, gente a quién no se le ocurrió la abstracción correcta en el momento en que fueron a escribir un código nuevo y, por lo tanto, el código es más difícil de entender.

Concéntrese en organizar sus pensamientos y articular lo que hace su código, en lugar de cómo lo hace su código, y le hará un favor al resto del mundo. Trabaja en tus habilidades de escritura, trabaja en aclarar tus pensamientos e ideas, trabaja en organizar tus pensamientos en segmentos significativos, aprende a comunicarte claramente en tu propio lenguaje natural. Haga todas estas cosas y su código se mejorará para todos los que lo sigan.

¿Por qué la gente hace difícil la programación?

La gente hace que la programación sea fácil, la programación de una computadora es difícil, pero la gente crea intérpretes para hacerlo más fácil.

Pero debes ser exacto. No puede usar la palabra / comando incorrecto o escribir incorrectamente una palabra / comando. Si llamaste al perro, Blacky, no puedes llamarlo Blacy más tarde.

Quizás uno de los problemas con la codificación es que lo hemos hecho demasiado parecido al lenguaje humano.

Además, no todos los lenguajes informáticos usan las mismas palabras para el mismo significado. He estado escribiendo en REXX desde la década de 1970 y traté de aprender Perl en la década de 2000. Comencé a confundir las mismas funciones pero diferentes significados.

Si desea aprender a programar, apéguese a un idioma al principio y LEA EL MANUAL. Una vez que haya adquirido cierta habilidad, vuelva a leer el manual. Programar es como aprender cualquier otro idioma, necesitas aprender lo básico, la gramática y usarlo. La diferencia, no puedes pronunciar mal las palabras.

Está bien, voy a estar de acuerdo con la respuesta de Joseph Taylor. No creo que sea difícil en absoluto. De hecho, es fácil para mí y parece venir naturalmente. Siempre me sorprende cuando a otras personas les resulta difícil. Yo nunca he. He sido ingeniero de desarrollo de software de Silicon Valley durante 27 años, y en ningún momento me pareció difícil o desafiante. Al menos, no es la parte de programación del trabajo de todos modos.

Por cierto, me sentía exactamente de la misma manera cuando estaba en la universidad sobre cálculo, ecuaciones diferenciales, etc.

La gente no lo hizo difícil, es difícil hacerlo bien.

Las personas que dicen que “programar es fácil, me parece tan natural” son la principal fuente de errores costosos y aplicaciones llenas de errores.

Las técnicas de programación “rápidas y fáciles” son el flagelo de cualquier industria que exige precisión, precisión y confiabilidad en sus operaciones.

En tal compañía, el costo de reparar una falla de software es al menos 100 veces mayor que el costo de no crear la falla en primer lugar.