¿Por qué algunos desarrolladores de software pueden aprender solo la sintaxis del lenguaje de programación y usarla en la producción inmediatamente?

Cuando estás aprendiendo tu primer idioma, parece un gran problema.

Aprendiendo tu segundo, todavía parece un gran problema.

Aprendiendo tu tercero, comienza a sentirse un poco más fácil.

Una vez que haya pasado 5, 6, 7, 8, 9,10, etc., verá que aprender un idioma no es tan importante.

Si está aprendiendo un idioma con un paradigma completamente nuevo, puede ser difícil, pero la mayoría de los idiomas de uso común son muy similares.

Swift y C # son muy similares, solo una sintaxis ligeramente diferente. C # es Java con campanas y silbatos. Incluso C, una vez que pasas las cosas del puntero, todo comienza a sentirte muy familiar.

Es como aprender a conducir un automóvil, todos queríamos hacer nuestra prueba en el automóvil en el que aprendimos, ¿verdad? Sin embargo, una vez que haya conducido un poco, realmente no importa, y puede conducir casi cualquier cosa.

Algunos idiomas son más duros que otros, y algunas personas encuentran algunos idiomas más naturales que otros. Por ejemplo, me gusta mucho el IBM i, y la mayoría de la gente usa RPG en eso. Personalmente, considero que el RPG es incompatible con mi cerebro, por lo que uso C en su lugar.

Simplemente llega al punto después de años y décadas de que la sintaxis del lenguaje ya no es un problema tan grande.

Mi primer lenguaje fue PHP, y el segundo fue Java. He usado varios otros, pero en este momento mi enfoque es Scala. Como todos son lenguajes de la familia C, probablemente pueda aprender la sintaxis de Go y escribir un software que funcione rápidamente.

Sin embargo, para mí, la frase ” úsela en la producción ” implica un cierto nivel de profesionalismo que viene con algunas suposiciones. No solo desea ejecutar código, desea que tenga errores mínimos y que otras personas que no sean yo mismo puedan mantenerlo razonablemente.

Si mi jefe me exigió que escribiera un programa Go, puedo hacerlo (probablemente), pero existen riesgos.

Cuando aprendí Scala, mis primeros pocos programas fueron básicamente Java con una sintaxis abreviada. Eran funcionales, pero con errores y obviamente escritos por un novato. No siguieron los patrones de diseño o las mejores prácticas comunes de Scala. Y el veterano de 20 años en nuestro equipo fue igual de “malo”.

Entonces, en mi opinión, la respuesta es que no pueden simplemente aprender la sintaxis y luego usarla ( responsablemente ) en la producción .

Por supuesto, cuantos más idiomas aprendas, más corto será el período de transición. Muchos patrones de diseño y mejores prácticas se aplican a múltiples idiomas.

Si conoce suficientes de esos patrones, puede determinar rápidamente cuáles se adaptan mejor a un nuevo idioma y minimizar sus errores de novato. Todavía los harás, solo ganarás menos.

Así que no te desanimes. No tienen alguna habilidad secreta que tú no, tal vez solo un poco más de práctica. Y recuerde, somos nuestros críticos más duros: en secreto puede parecer increíble para alguien que no sabe cuán cohibido se siente realmente.

Porque el lenguaje es el aspecto menos importante de la programación.

Los idiomas son realmente solo una forma de manejar el mismo puñado de conceptos: aritmética, manipulación de memoria, condiciones, iteración. Además de estos conceptos básicos, obtienes conceptos de orden superior como llamadas a funciones. La orientación a objetos es solo una forma de organizar datos y funciones.

El verdadero arte de la programación es comprender un problema, resolverlo y expresar la solución en pasos muy pequeños y precisos. Puedes expresarlo en muchos idiomas diferentes. Algunos problemas tienen una expresión muy agradable y natural en ciertos idiomas.

Aprender una nueva sintaxis es solo mapear conceptos familiares en nuevas etiquetas y patrones.

Algunos idiomas admiten paradigmas desconocidos, pero también puedes aprenderlos con bastante rapidez. Nuevamente, los paradigmas de programación son solo diferentes formas de abstraer los fundamentos subyacentes.

Porque, con algunas excepciones, los lenguajes de programación son muy similares. Todos hacen las mismas cosas básicas: E / S, estructuras de datos, secuencias, bucles y ramas y funciones. Tal vez agregue algunas florituras como el manejo de errores. Una vez que conozca la sintaxis de esas cosas, puede escribir el código de producción.

Sin embargo, puede que no sea un buen código, porque usar un idioma también se trata de aprender los modismos. Y también hay convenciones de proyectos locales. Y necesita conocer la estructura del proyecto (arquitectura) y las bibliotecas locales. Pero un buen programador debe aprender la sintaxis básica en unos pocos días y las convenciones locales en unas pocas semanas y los modismos en un par de meses.

Aprender nuevos idiomas es parte de ser un programador. La mayoría aprenderá y usará al menos 20 en una carrera de 40 años. Los más difíciles de aprender son aquellos que vienen con un nuevo paradigma: su primer lenguaje funcional como Haskell, o un lenguaje declarativo como Prolog, pero cuanto más vea, más rápido aprenderá el siguiente.

Algunos son más difíciles que otros: creo que C ++ tiene tantas trampas a la espera de morder que lleva un poco más de tiempo, y personalmente encontré que la sintaxis de Smalltalk tomó un tiempo (¡pero uno lo entiende, es genial!). Pero la mayoría de los lenguajes modernos son de estilo Pascal / C y son muy fáciles de cambiar.

Bueno, para mí no aprendo la sintaxis en un instante y empiezo a escribir código de producción. Básicamente pseudocódigo el programa. Entonces, cuando voy a implementar el código real, todo lo que tengo que hacer es buscar la sintaxis según sea necesario. Por ejemplo, en mi trabajo actual, a algunos desarrolladores les gusta VB.net. Personalmente no soy un gran admirador de VB. Esto se debe principalmente a que estoy acostumbrado a C #. Entonces, para los programas que ya usan vb, solo tengo que buscar la sintaxis según sea necesario. Así que buscaré en Google y escribiré algo como “cómo escribir en vb”. Recibo mi respuesta y la implemento en el acto. Al mismo tiempo estoy aprendiendo vb. Los conceptos son similares a pesar de que la sintaxis es diferente. Mientras tenga los conceptos, debería poder implementar el código en un idioma diferente. No se trata de la sintaxis. Se trata de tomarse el tiempo para pensar realmente en el problema en cuestión.

Olvídese de la sintaxis del lenguaje por un minuto y piense en cambio en la abstracción presentada por el lenguaje.

La sintaxis C le permite escribir bucles, funciones, flujo de control, código de espagueti y declarar estructuras. El preprocesador también te permite hacer un poco de juju.

La abstracción incluye (entre muchas cosas) el hecho de que los punteros pueden hacer referencia a cualquier ubicación dentro del espacio de direcciones de su programa. Si su ejecutable se está ejecutando en DOS, eso incluye el acceso directo a la memoria de video y el uso de interrupciones para cambiar los modos de pantalla y acceder al teclado y al mouse.

Si solo conoce C, lo más probable es que también necesite aprender la orientación de los objetos al elegir Java. Si eres competente con la orientación a objetos, entonces solo necesitas elegir la sintaxis.

Java tiene diferentes abstracciones a C ++. Comparten las abstracciones fundamentales, como la herencia y el polimorfismo (con diferencias clave), pero Java incluye la recolección de basura automática, mientras que C ++ incluye metaprogramación de plantillas, estructuras de datos de bajo nivel y acceso a la memoria y otros, como la sobrecarga del operador.

Una vez que haya aprendido uno o dos idiomas, se habrá acostumbrado a las diversas abstracciones que le ofrecen los lenguajes de programación más dominantes. Aprender un nuevo idioma es, en su mayoría, un caso de identificar las abstracciones y construir software para esa abstracción utilizando la sintaxis como medio comunicativo y descriptivo.

Como desarrollador maduro, una vez que has aprendido (y dominado) un par de idiomas, aprender otros es bastante simple. Todos funcionan casi igual, solo usan verbos y construcciones diferentes para hacer el trabajo. Por lo tanto, es solo cuestión de comprender, interpretar y adaptar el lenguaje para resolver el problema. Debo agregar que un buen desarrollador también tiene una gran comprensión de la lógica y el flujo, y generalmente puede visualizar en su cabeza lo que quiere lograr.

En un momento de mi carrera, conocía cuatro o cinco lenguajes de programación en lo que describiría como un nivel “competente” (o incluso “experto”), y hablaba con fluidez unos veinte suficientes para incluirlos en mi currículum. Si de repente decidiste que necesitaba usar un idioma diferente, algunas cosas saltan a tu mente.

En primer lugar, existe una buena posibilidad de que haya programado en el idioma antes, pero no lo he hecho en mucho tiempo. Por lo tanto, solo necesito una actualización rápida de algunas de las peculiaridades de la sintaxis, y podré comenzar a ejecutar.

Pero incluso si no he usado ese lenguaje antes, lo más probable es que haya usado un lenguaje que sea sintáctica o temáticamente similar. He programado en C y C ++. He programado en Scheme y LISP. He programado en Python y Ruby. He programado en / bin / sh y TCL. Incluso he incursionado un poco en Haskell y Smalltalk. Demonios, incluso he codificado en FORTRAN antes.

Esto equivale a una especie de alfabetización general sobre programación y lenguajes de programación en general. Los conceptos que he aprendido en un idioma a menudo son bastante fáciles de transferir a nuevos idiomas. Es posible que me falten algunos de los matices idiomáticos que usan los programadores experimentados o expertos, pero en general puedo ser bastante competente razonablemente rápido.

Porque la sintaxis de “aprendizaje” es mucho más difícil que usar Google. Si , y es un gran si, primero has aprendido a programar . Incluso aprender su primer idioma no es tan difícil si ha aprendido la programación: conoce el tipo de función que necesita y en qué lenguaje de programación, por lo que le pregunta a Google. Como javascript parte de una cadena . Eso te da substr (), substring () y slice (), con explicaciones. (Aproximadamente 51 millones de resultados ). Hágalo para, por ejemplo, Python, parte de una cadena de Python, y obtendrá slice () y algunas otras formas.

¿Cómo sabes que necesitas parte de una cuerda allí? Aprendiste a programar primero. (Consulte Teach Yourself Computer Science.) Aprender un lenguaje de programación no es aprender a programar .

Como ya saben lo que quieren decir, solo necesitan aprender el idioma.

La programación no es tanto el conocimiento de lenguajes particulares (bueno, al final debe conocer uno o dos) como la definición de la resolución de problemas de manera programática.

More Interesting

Cómo tener éxito como desarrollador de software independiente

Vengo de un país del tercer mundo donde los desarrolladores de software están mal pagados y en realidad no hay una compañía de software seria. Soy un desarrollador de software bastante serio. ¿Qué tengo que hacer?

Cuando las grandes compañías como HP, Wipro, TCS, etc., contratan a un desarrollador o probador de software, ¿ponen a los alumnos directamente en el proyecto después de la capacitación? ¿Harán todos ellos exactamente el trabajo de desarrollo, prueba o soporte?

Como programador, ¿cómo te mantienes motivado para seguir aprendiendo CS?

¿Cómo iniciar una empresa consultora de software con solo 25k USD? ¿Cuál sería el consejo que me darías?

¿Qué te mantiene interesado en tu carrera como desarrollador de software?

¿Cuál es la diferencia entre el ingeniero de I + D y el desarrollador de software?

¿Cuál es el mejor televisor 4K que puedo comprar para usar como monitor de PC para desarrollo web?

¿Los desarrolladores de software alguna vez / a menudo usan generadores de algoritmos de fuerza bruta / aleatoria para crear soluciones cuando se conocen entradas y salidas?

¿Cuáles son algunos buenos consejos para encontrar ideas para desarrollar software?

¿Cuál es la mejor computadora portátil preferida para programadores y desarrolladores de software?

Como desarrollador de software a los 32 años, me enfrenté a una grave discriminación por edad en una startup joven. ¿Qué tengo que hacer?

¿Cuál es la diferencia entre un ingeniero de software (o desarrollador de software) y un desarrollador de aplicaciones?

Como desarrollador de software, ¿qué hacía cuando estaba desempleado?

¿En qué debería concentrarse un desarrollador de software al buscar oportunidades, ya sea conceptos lógicos o nuevos en ese dominio?