Programadores olvidando la sintaxis

17

¿Los buenos programadores necesitan tener sintaxis en la punta de la lengua cuando escriben código? ¿Qué piensas de ellos si googlean cosas simples en línea? ¿Son buenos o malos (tal vez saben dónde buscar)? ¿Deberían los programadores tener una buena memoria? ¿Es este un rasgo para un buen programador?

maz3tt
fuente
1
Dependiendo de cómo "simple". Algunos ejemplos / antecedentes serían útiles. También puede ser un problema de inconsistencia con el lenguaje / entorno que están programando.
rwong
1
Creo que eso sería parte de la definición de un buen programador, ya que se clasifica en rápido / eficiente. Si no puede escribir una línea de código con una consulta de referencia, no va a hacer nada de manera oportuna. Por otro lado, eso no es un llamado a memorizar cosas.
stonemetal
En C ++, generalmente tengo que buscar la sintaxis para puntero a funciones (miembro o no) ya que no la uso con tanta frecuencia ... ¿tal vez a veces la sintaxis es simplemente extraña ?
Matthieu M.

Respuestas:

25

Mi filosofía en la programación es que es un "estado mental" y el resto es "solo sintaxis". (es decir, no (como) importante)

Dicho esto, uno no debería tener que buscar las cosas simples. Al menos, no para los idiomas con los que trabaja regularmente. No hay nada de malo en necesitar refrescos y saber cómo encontrar información es sin duda una buena habilidad para tener. Sin embargo, la sintaxis central definitivamente debería ser bien conocida. De lo contrario, pasa demasiado tiempo buscando y muy poco tiempo programando.

George Marian
fuente
8
Exactamente, como un idioma hablado: hay que saber hablarlo, pero los diccionarios son de gran ayuda. ¡A menudo, sabes lo que quieres expresar antes de tener el vocabulario!
Kevin Cantu
@Kevin - Exactamente - pero también puedes juzgar la fluidez de alguien por la frecuencia con la que hacen tales referencias. La mayoría de nosotros los usaríamos de vez en cuando, pero usted cuestionaría a alguien que dijera que podía hablar un idioma pero sintiera la necesidad de consultar continuamente un diccionario.
Jon Hopkins, el
@ Jon Precisamente. Continuando con la metáfora del lenguaje hablado / escrito, con cierto esfuerzo podemos aumentar nuestra exposición al lenguaje y mejorar nuestro vocabulario. De ahí mi voraz apetito por la lectura y la búsqueda continua de una buena aplicación de tarjeta flash para iPhone. De manera similar para los lenguajes de programación, cuando tengo problemas con un idioma particular, creo un fragmento que lo demuestra y lo mantengo a mano para una fácil referencia. Y, por supuesto, hago un punto para volver a visitar esas áreas problemáticas ocasionalmente. Me llevó algo de tiempo, pero finalmente memoricé la molesta declaración del interruptor de esta manera.
George Marian
Creo que un desarrollador más 'avanzado' también tendrá múltiples idiomas en su haber y, a veces, los confundirá. Todavía confundo la declaración de una matriz multidimensional entre C # y C ++ de vez en cuando (si fue "arr [] [] o arr [,]") y tengo que buscarla.
Steven Evers
28

Depende de lo que quieras decir, pero la respuesta corta es sí.

¿Los programadores van a olvidar un punto y coma o un aparato ortopédico aquí y allá? Seguro. ¿Van a buscar la sintaxis de una instrucción switch porque probablemente rara vez la usen? Bueno lo haré. ¿Trabajaré con ActionScript pero lo escribiré como Java? Seguro. Puede llevar algún tiempo acostumbrarse a escribir en un idioma nuevo, especialmente si ha trabajado con uno diferente durante años.

La verdadera preocupación debería ser si un programador no puede hacer cara o cruz de la sintaxis incluso con un IDE que lo ayude. Si la persona no sabe para qué sirve un punto y coma, o para qué sirven esas llaves elegantes, entonces tiene que estudiar más.

Jeremy Heiler
fuente
8
Je, la sintaxis exacta de la declaración de cambio generalmente también me da pena.
George Marian
Esa es la misma razón por la que me quedo con las secuencias de comandos de Python, incluso cuando prefiero Ruby. Tengo que codificar en Python en el trabajo, y el ir y venir sería demasiado confuso.
LennyProgrammers
+1 para la sintaxis de la declaración de cambio - es difícil de alcanzar por alguna razón
billy.bob
55
Sin mencionar la gran cantidad de idiomas que uno conoce y la sintaxis a veces puede combinarse.
Josaph
@dave Creo que el problema es la combinación de símbolos. Por lo general switch, seguido de algo entre paréntesis, luego un paréntesis de apertura, luego casecon una etiqueta que no está entre paréntesis, luego dos puntos, luego las declaraciones típicamente con punto y coma. Y, no olvidemos, las breakdeclaraciones. Fue a través del esfuerzo y la pura fuerza de voluntad que finalmente lo memoricé y todavía tengo que verificar dos veces ocasionalmente; solo por asegurar.
George Marian
10

Definitivamente me sorprendería si un programador bueno por lo demás tuviera que buscar de forma rutinaria la sintaxis para un idioma en el que hablara con fluidez. Por supuesto, puede haber casos de esquina que en realidad no se usan mucho en la práctica de modo que sea perfectamente aceptable para que un buen programador no los conozca, pero, como regla general, un programador fluido no tiene que buscar la sintaxis. Tiene que buscar funciones y clases de bibliotecas :)

aaronasterling
fuente
+1. Me consideraría fluido en C ++ y busco nombres de funciones y argumentos a diario . Nunca voy a memorizar cada miembro de std::string, por ejemplo.
Kristo
8

Si está en una posición en la que cambia los idiomas regularmente o trabaja en 3 o 4 idiomas al mismo tiempo, no hay mucho que pueda hacer al respecto. Por un tiempo terminé trabajando en proyectos que requerían un cambio constante y comencé a referirme a mí mismo como un "programador de referencia", teniendo que buscar cosas mucho más de lo que hubiera preferido.

Matthew Frederick
fuente
44
+1 Totalmente de acuerdo. Los codificadores que saltan entre idiomas a una velocidad de nudos (puedo tener 10 idiomas o más en movimiento en un día que abarca muchos proyectos) terminan teniendo problemas para recordar las oscuras diferencias entre idiomas similares, particularmente en las funciones estándar de la biblioteca. Esto empeora a medida que envejeces, he notado.
Orbling
Este es mi problema, nos estamos moviendo por tantas cosas en el trabajo que a veces ni siquiera recuerdo lo básico. Especialmente dado que generalmente solo puedo usar el contexto, alguien escribió un bucle for o una función cercana, solo copié esa sintaxis. Sin embargo, últimamente me he estado obligando a aprender la sintaxis, solo contar con la práctica para hacerme memorizar no es suficiente. Elegí un idioma (Javascript) para moler la sintaxis en mi cerebro. Está ayudando mucho, especialmente con la práctica de la entrevista de pizarra.
Jemmeh
5

He estado escribiendo C ++ durante más de 15 años, pero todavía no conozco algunas de sus esquinas sintácticas arcanas de memoria.
¿Cómo se crea una instancia explícita de una plantilla de función nuevamente? ¿Y cuál es la sintaxis para especializar parcialmente una plantilla que tiene un argumento plantilla-plantilla? Y no me hagas empezar a declarar una función que devuelve un puntero a una matriz de punteros a funciones que llevan matrices de punteros a ...

Sospecho que hay a lo sumo una o dos docenas de personas en este mundo (si es que hay alguna) que realmente saben toda la sintaxis de C ++ de memoria. Y probablemente todos estos estén ganando su dinero escribiendo frontales del compilador de C ++.

sbi
fuente
4

Tengo curiosidad acerca de Google "sintaxis" aquí.

Mi sospecha (y miedo) es que no estamos hablando de los parámetros que toma una llamada (porque la mayoría de los IDEs lo guiarán allí para que no los busque en Google), sino cosas reales del tipo "cómo hacer X".

Los IDE han hecho innecesario memorizar nombres precisos y listas de parámetros de la forma en que solían ser necesarios, y eso ha hecho que muchas personas sean un poco vagas al respecto, pero está bien.

¿Pero algo que necesitas para Google? Para mí, eso generalmente no es sintaxis, es algo que realmente no sabes o con el que estás familiarizado.

Por supuesto, eso no quiere decir que esté mal tener que usar Google: los idiomas pueden ser bastante amplios en estos días y pocas personas lo saben todo, pero yo diría que si usted dice ser competente con un idioma, entonces Google debería ser la excepción y no la regla. .

Para mí, a menos que esté haciendo algo relativamente inusual, o tal vez esté oxidado con el idioma después de un período de hacer algo diferente, si afirma "saber" un idioma, no debería buscar en Google más del 10% de las cosas. a lo sumo, y eso debería ser realmente algo muy específico.

En referencia a la idea de que se trata de tener una buena memoria, en realidad no lo es. Se trata del tipo de sensación instintiva que obtienes por algo que realmente (en lugar de superficialmente) conoces. No considero el hecho de que sé cocinar una Melanzane Parmigiana sin una receta una señal de que tengo buena memoria, es una señal de que entiendo cómo cocinar ese plato, son cosas sutilmente diferentes.

Además, pregúntate esto, ¿esperarías ir a la cocina de un restaurante y encontrar al chef mirando constantemente un libro de cocina? ¿O para ver al mecánico trabajando en su automóvil hojeando el manual de Hayes para ese modelo? Si viera cualquiera de esas cosas, me sentiría bastante incómodo sobre lo buena que era esa persona.

Jon Hopkins
fuente
Comentario para el voto negativo? Estoy realmente interesado en cuál es el desacuerdo.
Jon Hopkins, el
+1 - Buena llamadasyntax != api
Jeremy Heiler
3

Mi opinión es No. No es la sintaxis lo que es importante, sino su lógica para resolver un problema o lograr un objetivo. Si se supone que trabaja en varios idiomas, es natural que en algún momento no recuerde la sintaxis exacta.

Fraz Sundal
fuente
0

La sintaxis es solo la vista sobre la semántica subyacente del lenguaje porque la programación se trata de usar los ladrillos semánticos subyacentes para construir algo. Si no comprende los conceptos fundamentales que usa el lenguaje, no importa cuán bueno sea para memorizar la sintaxis, su código será un desastre horrible. Como alguien dijo una vez: "Los buenos programadores tienen un intérprete y un compilador en su cabeza". Observe cómo no se menciona la sintaxis porque no es allí donde sucede el trabajo real.

davidk01
fuente