¿Los programadores escriben código desde la memoria o buscan la sintaxis a medida que avanzan?

Todo viene de la práctica. Por lo general, me lleva algunos años de experiencia con un idioma antes de que deje de tener que buscar la sintaxis todo el tiempo. Y en muchos casos, incluso después de eso, siempre hay algo que hay que buscar.

Por ejemplo, tome un lenguaje como PHP donde hay una función incorporada para todo, y un montón de extensiones y bibliotecas disponibles para todo lo demás. No hay forma de memorizar cada nombre de función, ortografía y lista de parámetros. ¡Y ese es solo el lenguaje central! Adapte un marco o CMS sobre eso, complete con sus propias funciones personalizadas, estándares y la forma general de hacer las cosas y realmente es demasiado para memorizar. En mi humilde opinión, el espacio en mi cabeza está mejor servido con otras cosas.

Probablemente encontrará que a medida que haga más y más programación en un lenguaje determinado, comenzará a buscar cada vez menos en Google de las cosas básicas. Pero los detalles minuciosos que describí anteriormente son menos importantes de haberlos memorizado.

En cuanto a las entrevistas de trabajo, generalmente he encontrado que los entrevistadores generalmente no están interesados ​​en saber si usted ordenó correctamente los parámetros en strpos () o si puede recordar el nombre de la función para agrupar las arpas en un froblist. Pueden hacer preguntas similares, pero en general están más interesados ​​en conocer sus procesos de pensamiento, cómo resolver los problemas e intentar medir un nivel aproximado de su experiencia y conocimiento con las habilidades que requieren.

Entonces, si no recuerdas esos detalles (que bajo presión es aún más difícil), me parece que generalmente funciona para decirlo, pero explica que entiendes el concepto y cómo resolverías un problema con eso. función. Generalmente, si está codificando en una pizarra o algo así, probablemente no podrá buscar nada. Sin embargo, la mayoría de los empleadores NO esperarán una sintaxis precisa, más como un pseudocódigo o algo lo suficientemente cercano al idioma que está demostrando.

Tecnológicamente hablando el str.join(sequence) vs sequence.join(str) ejemplo de sequence.join(str) no es un problema de sintaxis. Eso es solo saber cómo usar los objetos y las funciones integradas. La sintaxis sería, por ejemplo, saber que if declaraciones terminan con dos puntos. En este sentido, diría que tiene que poder escribir código de la memoria sin leer la referencia de sintaxis. Es como aprender un segundo idioma. En algún momento, simplemente lo hablas, no estás recurriendo a los libros de gramática para ver cómo decir algo.

Con respecto a las bibliotecas, las API y las funciones integradas, opino que no, no se espera que las memorice todas. Más aún porque algunas cosas se hacen exactamente de la manera opuesta en dos idiomas, como el ejemplo de join usted menciona. Miro documentos y hago referencias todo el tiempo para verificar el orden de los argumentos, valores de retorno, etc. Esto sería como mirar un diccionario, si no sabes cómo decir una palabra extranjera. Sabes cómo formar la oración, simplemente no sabes la palabra. Tal vez aún no esté familiarizado con una determinada API, tal vez necesite usar una función que nunca antes haya usado.

Sin embargo, sería realmente ineficiente buscar los documentos para todo. Cuando realmente te conviertes en un lenguaje, terminas memorizando sus funciones integradas, porque hay algunas tareas que son muy comunes. Como join , precisamente. Lo mismo si aprendes un marco web, por ejemplo, eventualmente memorizas algunos métodos y clases. Hay ciertas cosas que aprendes a hacer automáticamente. Eso solo viene con tiempo y experiencia por supuesto. Nuevamente, imagínese si la única forma en que pudiera hablar un idioma fuera llevando un diccionario todo el tiempo.

Tu experiencia mientras estás aprendiendo es normal.

En términos de entrevistas de trabajo … No sé de otras personas, pero aquí están mis observaciones generales:

  • Si una persona pasa mucho tiempo revisando cada pequeña regla de sintaxis (no importa si puede implementar de un vistazo) … el candidato no está listo.
  • Si una persona necesita ir y buscar algo aquí o allá, pero no demasiado o con demasiada frecuencia, entonces no es un problema.
  • Si implementar algo es simplemente reflexivo … obviamente el candidato avanza hacia la parte superior de la pila (si el código es limpio y razonable, preferiría que alguien busque algo más que reescribir cosas básicas que son parte del lenguaje; y la hinchazón es un factor de ruptura tan grave como tener que consultar constantemente la documentación).

PERO, SI tiene acceso a materiales de referencia, SÍ, debería poder producir código de trabajo rápidamente. (No solo pseudocódigo).

No soy un tipo Ruby, pero una vez me entrevistaron para un trabajo de Ruby y, al principio, fui lento (avergonzado), mirando la sintaxis. Después de unos minutos, comencé a volar, y luego el entrevistador supo que era reflexivo (solo necesitaba un breve repaso).

Cuando llega al punto en que las cosas son reflexivas o regresan rápidamente después de alejarse, es cuando se da cuenta de que hacer referencia a la sintaxis está perfectamente bien. (Jog la memoria, entonces estás fuera y corriendo).

Pero de lo contrario, su experiencia de aprendizaje es normal.

Técnicamente, debe saber cómo funciona un programa, conocer conceptos sobre POO, estructuras o lo que sea. En mi humilde opinión, simplemente escribir bien la sintaxis no es un parámetro para adivinar si el candidato puede resolver problemas de programa o algoritmos complejos. Puedes ser perfecto en la sintaxis, pero no tienes idea de multihilo, solo para decir algo.

Al igual que la mayoría de los idiomas, los lenguajes de programación están vivos y las nuevas implementaciones se usan para agregar mejoras a la sintaxis, así como a la forma en que puede escribir código.

Por supuesto, si se le pidió que escribiera JavaScript y no puede ver la diferencia entre una variable local o global, tiene problemas.

Por otro lado, un entrevistador debe tener suficiente conocimiento para detectar qué tipo de programador es usted, porque normalmente un buen programador utiliza para resolver problemas complejos de una manera sencilla, mientras que un programador junior usa para resolver problemas simples de manera compleja.

No conozco tu contexto, pero en este caso simple no sé si me gustaría trabajar para una empresa que vea que el software de compilación sea tan simple como el código de escritura.

Cuando escribes inglés , ¿con qué frecuencia buscas reglas de sintaxis?

No soporto las comparaciones del lenguaje natural con los lenguajes de programación, pero en este caso es lo mismo con la programación. Después de unos meses o años, te sientes más seguro.

Probablemente nunca logrará las cosas al 100%, especialmente las bibliotecas que rara vez usa, pero los IDE ayudan mucho con eso.

En cuanto a las entrevistas, varía. La mayoría de los entrevistadores generalmente prefieren ponerlo en una pizarra y tener una idea de cómo está pensando en el problema que si tiene memorizada la sintaxis. Pero ocasionalmente encontrarás algunos que están buscando alguna excusa para reclamarte (y todos los demás candidatos) será una mala contratación.

Si lo recuerdo, escribiré de memoria. Si no, lo buscaré. No perdería el tiempo intentando recordarlo.

Personalmente no me gusta memorizar ningún tipo de sintaxis. Pero si estoy programando en Java durante los últimos 4 o más años, se me queda en la cabeza. Se ahorra mucho tiempo.

Si me pregunta cuál es el código para administrar las vistas en un ArrayAdapter para Android, lo escribiría sin esfuerzo. Pero si me preguntas el método en HttpServletRequest que devuelve el host, tendré que buscarlo.

Editar para la pregunta relacionada con la entrevista:
He tomado bastantes entrevistas. Y no tiene sentido esperar la sintaxis de un candidato. Si entiende bien el problema y sabe cómo abordarlo, está a mitad de camino. Llegando a la parte de escribir el código real en una entrevista: el pseudo código es igualmente apreciado. Para mi propio ejemplo, escribiría HttpServletRequest # getHost (); insinuando que sé que hay un método que hace el trabajo. Si el entrevistador todavía hace hincapié en la sintaxis, usted dice: Perdóneme, no puedo recordar la sintaxis en este momento. Pero definitivamente hay un método que se puede utilizar para obtener el host. (Continúa con tu respuesta). La mayoría de los entrevistadores no insistirán más allá de esa respuesta.

Además de las otras respuestas, esta es la razón por la que muchos programadores utilizan un entorno como Visual Studio o Eclipse. Estos reconocerán las funciones específicas del idioma y las cosas que se completarán automáticamente, mostrarán los argumentos disponibles, etc. Si tiene Microsoft Excel, puede ver este comportamiento al escribir una fórmula. Es muy práctico.

Como han dicho otros, con el tiempo ya tendrá que pensar en la sintaxis, pero siempre encontrará alguna función rara vez utilizada para la que no recuerda los argumentos.

No busca la sintaxis si domina ese idioma en particular. sin embargo, busca la documentación de la API / biblioteca con frecuencia, o ve a la definición de la propiedad / método / función en el código cuando lo tiene, especialmente si no está familiarizado con la API / biblioteca que está usando. Las excepciones a esto pueden ser las nuevas características de lenguaje agregadas al compilador, o la sintaxis utilizada raramente.

Así que para las entrevistas de trabajo, familiarícese con las API / bibliotecas comunes y las características de IDE.

Depende. En un proyecto grande en un número finito de componentes, la sintaxis se puede internalizar y memorizar temporalmente.

Sin embargo, encuentro que necesito buscar la sintaxis en casi todas las líneas de código que escribo. ¿Por qué?

Porque estoy centrado en el problema a resolver. La búsqueda de sintaxis tarda unos segundos y a veces aprendo alternativas.

Por lo tanto, para los exámenes de trabajo, revisaré la documentación para la sintaxis.

Los programadores internalizan la sintaxis de los lenguajes de programación en los que se codifican. Cuando se trata de las API, muchos programadores tienen solo una parte comprometida con la memoria, mientras que buscan el resto cuando lo necesitan. Después de usar funciones simples con pocos argumentos por un tiempo, naturalmente deberías recordarlas.

Para mí es como tener un GPS cuando conduzco, es posible que conozca el área, pero va más rápido al momento de verificar la precisión y la falta de errores.

¡Espero que esto ayude! 😀… no hay nada de malo en ello, la experiencia de todos es diferente, ¡aquellos con memoria también cometen errores! ¡mantenlo en mente!