¿Por qué no puedo implementar algo usando un lenguaje de programación?

Probablemente no esté implementando un lenguaje de programación. Lo estas usando .

Para ser claros, primero debes aprender a programar (y las palabras utilizadas en tu pregunta me hacen creer que no lo aprendiste, y tu pregunta es confusa). La programación es difícil y no se trata de aprender un lenguaje de programación, sino de resolver problemas con computadoras. Los lenguajes de programación son especificaciones (escritas en algún informe, como R5RS o n1570) y los desarrolladores de software, que conocen la programación, también conocen varias de ellas y pueden elegir la adecuada para una tarea. La mayor parte de un lenguaje de programación es su semántica (no su sintaxis).

No intentes aprender programación si no te apasiona. No todos pueden programar. Necesita una motivación muy fuerte (y la motivación financiera no puede ser suficiente).

Lea primero Enseñe a programar en diez años y luego la respuesta de Basile Starynkevitch a Si quiero codificar para vivir, ¿cuáles son los idiomas que debo aprender y las cosas que debo hacer? Observe las referencias que di en esa respuesta y léalas . Necesitará años de trabajo (si aún no ha aprendido la programación). Supongo que esa respuesta es realmente lo que estás preguntando (no sobre implementar un lenguaje de programación).

Si está implementando un lenguaje de programación (lo cual es poco probable, porque en ese caso habrá formulado la pregunta de manera más precisa y correcta), está diseñando y escribiendo un intérprete o un compilador. Ambas son tareas muy difíciles (y un compilador es mucho más difícil que un intérprete). Antes de hacerlo, asegúrese de haber pasado varios años aprendiendo programación. Y, por supuesto, conoce los algoritmos y ha practicado varios lenguajes de programación de diferentes paradigmas de programación. Lea primero Fundamentos de lenguajes de programación y compiladores: principios, técnicas y herramientas y lista en piezas pequeñas …

Entonces necesitas trabajar duro . Varios años . Lea todos los libros a los que he hecho referencia en mi otra respuesta. Sé paciente y perseverante. Instale y use alguna distribución de Linux (porque está hecha de software libre y amigable para el desarrollador). Estudie y contribuya a algunos proyectos de software libre existentes.

Divide tu tarea en trozos más pequeños y manejables. Comienza asegurándote de que entiendes qué es lo que vas a construir: supongo que estás tratando de hacerlo por tu cuenta, así que escribe cuál crees que es el problema o la oportunidad.

A continuación, intente crear un diseño de alto nivel: ¿qué módulos hay? ¿Hay una interfaz de usuario? ¿Hay lógica de negocios? ¿Existe la necesidad de almacenar y recuperar información? ¿Se comunicará con algún otro software? ¿Entre partes de la aplicación en sí (por ejemplo, una interfaz de navegador web a través de una API a una base de datos)?

Determine cómo interactuará el usuario con el sistema y qué funciones le permitirá realizar el sistema. Por ejemplo, es posible que pueda crear un nuevo usuario, iniciar sesión como usuario existente, cerrar sesión, agregar un nuevo elemento de algún tipo, modificar un elemento existente o eliminar un elemento, etc.

Elija uno de estos como punto de partida (posiblemente relacionado con el usuario, pero también puede optar por ignorar ese aspecto del sistema y comenzar a agregar un nuevo elemento de algún tipo). Recomiendo encarecidamente realizar un desarrollo basado en pruebas: comience creando al menos el esquema de una prueba de extremo a extremo de la característica elegida. Eso le dará al menos un punto de entrada inicial en el sistema. Implemente algunas pruebas unitarias para ese punto de entrada (verifique si hay entradas no válidas, si hay entradas que cambian la forma en que se crea el elemento, pruebe esos casos). La implementación del código para soportar esas pruebas probablemente te hará agregar cosas adicionales al marco de trabajo. Cuando termine esa función de nivel superior, regrese a la prueba completa y vea dónde muere. Repita el proceso hasta que la prueba completa tenga éxito.

Haga lo mismo para las características restantes.

  • En primer lugar, deja de pensar en el trabajo independiente -blah-blah. Acabas de empezar. La programación es algo que lleva poco tiempo entender.
  • En segundo lugar, si puede escribir el mismo código que vio en algún sitio web o video, simplemente implica que tiene buena memoria y no implica que no pueda escribir nada por su cuenta.
  • Cálmate, créeme que será difícil al principio, no mires a programadores experimentados y comienza a pensar que eres muy lento, que no encajarás aquí, bla, bla.
  • Practica, practica, practica muchísimo y lo digo en serio.
  • Intenta expandir las cosas que has aprendido por tu cuenta. Le daré un ejemplo como asumir que recientemente aprendió cómo encontrar el elemento max de una matriz. Ahora intente escribir un código que encuentre el segundo elemento máximo.
  • Intente correlacionar las cosas, cada vez que vea algún problema intente pensar en alguna idea de problemas pasados ​​que pueda funcionar aquí.
  • Lo más importante es escribir código incluso si no está seguro de la sintaxis o algo así. En el peor de los casos, su código arrojará algún error en la compilación, déjelo arrojar errores. Ahora lea cuidadosamente esos errores y vea si comprende su error. Digamos que en el peor de los casos no tiene idea de lo que está sucediendo, simplemente copie el mensaje de error en google. Definitivamente encontrará una solución para ese problema en el desbordamiento de pila, ahora busque la respuesta para su problema y resuélvalo.
  • Feliz codificación .. !!

Gracias por A2A!

La respuesta es bastante simple: tus problemas son demasiado grandes.

Cuando se encuentra con un problema que no sabe cómo resolver, debe dividir el problema en mini problemas.

Cuando está planeando un proyecto o una solución, no solo escribe “Hacer un clon de Facebook” y comienza a codificar, lo divide en problemas más pequeños, y luego en problemas más pequeños.

Por ejemplo:

Idea abstracta: hacer un clon de Facebook.

Desglose los detalles: autogestión del usuario (inicio / cierre de sesión, configuración, muro, PM, etc.)

Desglose adicional de cada uno:

Desglose de inicio de sesión / cierre de sesión: necesita gestión de sesión, interacciones de base de datos, protección XSS, cifrado.

Desglose adicional: cómo implementar XSS, qué tipo de encriptación usar, qué diseño de base de datos debería usar, si las sesiones deben ser simples locales o capaces de escalar en red.

Y esto es solo una descripción general rápida, pero como puede ver, estos problemas se están volviendo cada vez más detallados, en algún momento es tan claro que puede comenzar a programar.

Si no es así, no lo ha desglosado lo suficiente.

Es simple resolución de problemas, no específica para la programación.

La mejor manera de aprenderlo es hacerlo, así que elige un problema simple para resolverlo y desglosarlo en pedazos, luego resuelve cada pieza.

Las primeras veces será un desastre, pero lo dominarás, lo importante es no rendirte.

¡Feliz codificación!

De hecho, recuerdo haber tenido esta experiencia hace mucho tiempo y creo que hubo dos problemas.

  • Primero, aprendí sobre la sintaxis, pero me costó pensar cuándo usar las diferentes ideas.
  • Segundo, elegía problemas de tamaño y complejidad más allá de mi experiencia.

Entonces, comience muy pequeño. Haz que funcione. Enjuague y repita. Luego aumente el alcance y comience nuevamente. Sigue así y encontrarás que será cada vez más fácil. Además, comienza a aprender cómo descomponer problemas más grandes y más complejos en problemas más pequeños.

Una de las habilidades esenciales de un programador es poder descomponer un problema en partes manejables.

Escribir software es difícil. Tienes que llevar muchas cosas en la cabeza mientras lo haces. Los nombres de las variables, los patrones de diseño, la sintaxis del lenguaje, las mejores prácticas, la optimización, el manejo de fallas, el rendimiento, el dominio del problema, los comandos del editor son solo algunos de ellos.

Si persevera, tendrá éxito.

Se llama falta de experiencia. Necesita trabajar en un proyecto real para superarlo. ¿Cómo sabes si no conseguirás un trabajo? Fracasarás en muchas entrevistas de trabajo y mucho rechazo. Confía en mí, no dejarás de conseguir un trabajo. ¿Estás aplicando Google, Microsoft o algunas grandes empresas? Comience pequeño y aumente a partir de él. Antes de codificar, tómese un tiempo para pensar sobre el problema y cómo lo resuelve. Entonces codificas. Todos los videos tutoriales ya tienen las soluciones y solo necesita seguirlos. ¿Qué tal este camino? Busque cualquier video tutorial, lea el problema e intente resolverlo usted mismo. Depurar y googlear el error. Será realmente difícil y más largo terminarlo. Cuando termine, mire los videos tutoriales para aprender EL CAMINO que hicieron, y compárelo con SU CAMINO. ¡Así es como aprendes programación!

Probablemente esté intentando hacer cosas que son demasiado difíciles en su nivel de habilidad actual.

La programación no se trata de saber idiomas; se trata de descomponer grandes problemas en muchos pequeños problemas que puedes resolver de forma independiente. Desafortunadamente, eso es una cuestión de práctica, y los videos de You Tube no serán de mucha ayuda.

Tomemos, por ejemplo, un programa que agrega 2 + 2 y muestra la respuesta. Rompería esto en tres subproblemas. Primero, algunas instrucciones aritméticas para agregar 2 + 2, luego convertir esto en una cadena (puede que no sea necesario en todos los idiomas), luego usaría el código que muestra “hola mundo”, pero lo usaré para mostrar la respuesta.

Si en cambio (y Dios no lo quiera) estuviera escribiendo un sistema de inventario para una tienda de alquiler de videos, lo dividiría en dos o tres subproblemas, tal vez la interfaz de usuario y la base de datos. Luego los desglosaría aún más, ¿qué hace exactamente la base de datos? Finalmente, lo descompongo tanto que puedo convertirlo en código, por ejemplo, llamadas a bases de datos estándar.

¿Cómo aprendes a hacer esto? Arrástrese antes de caminar. Si puede escribir un programa que muestre “Hola Mundo”, elija como próximo proyecto uno que muestre el resultado de sumar dos números. Entonces uno que puede leer los números de la consola. Y así. Eventualmente podrás escribir un simple programa de calculadora.

La ventaja de este enfoque incremental es que solo tiene que agregar una cosa nueva a la vez, por lo que la parte de descomposición es obvia.

Y cuando lo termine, sabrá al menos una forma de descomponer cómo construye una calculadora. Verá que necesitaba una parte de la interfaz de usuario, y una parte aritmética, y una parte que convierte los números en cadenas (y viceversa), y un código que puede interpretar 3 * 4 como que deben multiplicarse, no agregarse (un analizador, como se les llama), y algunas otras cosas para verificar la división por cero y similares.

Haga esto varias veces y desarrollará una intuición sobre la mejor manera de descomponer un problema en problemas más pequeños que pueda resolver, aunque solo sea porque hay más problemas más pequeños que ya sabe cómo resolver.

Debe hacer todo lo posible para escribir un programa y ejecutarlo por su cuenta, sin importar cuán pequeño sea (pero no hola mundo, es demasiado simple). Te dará una tremenda confianza. Puede consultar la documentación de las bibliotecas / herramientas que necesita, pero nunca copie y pegue el código.