¿Cómo aprenden algunos desarrolladores un nuevo lenguaje de programación en una noche?

Ellos no.

Todo programador profesional con algún sentido sabe comenzar algo nuevo con un ejemplo de trabajo desde algún lugar (generalmente búsqueda en Google, en estos días). A partir de un ejemplo de trabajo, la mayoría de los programadores pueden hacer modificaciones significativas y comenzar a aprender las convenciones de un nuevo sistema / lenguaje. Esto ciertamente puede suceder en un solo día y es probablemente lo que ha visto o le han contado.

Sin embargo, eso no es nada como el dominio. “Aprender un idioma” para mí implica cierto nivel de dominio, y eso lleva incluso a los mejores desarrolladores semanas, meses o incluso años.

Algunos idiomas tardan muchos años en dominarse. Aunque mucha gente dice que son expertos en C ++, honestamente me sorprendería si, después de probar rigurosamente a 10,000 expertos en C ++, encontramos a más de uno que realmente conociera el lenguaje al nivel requerido para escribir un compilador o responder correctamente una pregunta sobre un caso de borde sintáctico o semántico. He estado codificando en C desde 1979 y en C ++ desde 1994, y ni siquiera estoy remotamente cerca de ser un experto en C ++. Tampoco quiero serlo nunca. 🙂

Por lo tanto, el tiempo necesario para aprender realmente un idioma depende en gran medida del idioma. Pero ciertamente es más largo que una sola noche.

La mayoría de los lenguajes de programación imperativos tienen las siguientes estructuras:

  • Declaraciones condicionales (es decir: if / then / else)
  • Varias declaraciones de bucle (mientras (x) hacen algo; final)
  • Varias declaraciones iterativas / de rango (para i: = 0 a 10 hacer algo; final)
  • Sentencias de control de flujo (goto, calculated-goto / case / switch declaraciones)
  • Expresiones aritméticas y lógicas
  • Asignaciones
  • Subrutinas / funciones y formas de invocarlas.
  • Declaraciones de asignación de variables / memoria

Un poco más sofisticados son los lenguajes de programación estructurados que introducen:

  • Ámbitos (es decir: bloques de código con begin / {y end /} y similares).
  • Reglas de alcance (es decir, variables locales a una función o alcance)
  • tipos de datos compuestos (matrices, estructuras, tipos enumerados, punteros / referencias, etc.)

Lenguajes orientados a objetos (o idiomas de paso de mensajes)

  • declaraciones de clase
  • declaraciones de instancia y clase
  • función de sobrecarga
  • herencia
  • espacios de nombres

Y características diversas:

  • Excepciones / interrupciones + señales
  • hilos / multiprocesamiento
  • Macros / plantillas / compilación condicional
  • Módulos externos / código

La parte realmente complicada de los lenguajes modernos son las API / bibliotecas / marcos

EDITAR 12/03/2016 (anexo):

No aprendo un idioma en una noche. Se debe pensar mucho en aprender el idioma que simplemente no se puede hacer en una noche de agonía privada de sueño. Por lo general, lo reviso una y otra vez en pequeños trozos a la vez antes de intentar aplicarlos. E incluso entonces, no he aprendido el idioma hasta que haya escrito suficiente código útil y práctico para desarrollar un estilo que aproveche las características del lenguaje. Y si no hay ninguna ventaja en aprender el idioma, generalmente no lo hago.

Entonces, para mí, entiendo la sintaxis de Python, pero no la uso porque no tiene ninguna ventaja sobre los otros idiomas que uso. Puedo depurar un script de Python y probablemente corregir un error, pero aún no afirmo que lo he aprendido.

Los lenguajes de programación no son difíciles, en general. Una vez que haya aprendido algunos, el mapa de conceptos y solo necesita saber qué palabras clave y sintaxis se aplican.

Mucho más difíciles son las API complejas.

Aún más complejos son los tiempos de ejecución del lenguaje. Esta es la colección de API que generalmente van con un lenguaje, por ejemplo, Java. La lista de paquetes de clases se ejecuta por páginas. He estado programando Java durante unos 20 años, y hay partes de la biblioteca en tiempo de ejecución que no conozco. Algunos son nuevos, algunos son viejos y nunca los he usado.

Aún más complejos son los ecosistemas: las bibliotecas disponibles. Para lenguajes bien establecidos como Java o Javascript, NADIE conoce ecosistemas completos. Crecen y cambian más rápido de lo que cualquier humano puede seguir el ritmo.

Google y el boca a boca son útiles aquí.

Conoce los conceptos básicos. Es por eso que pocos desarrolladores pueden aprender un nuevo lenguaje de programación en un día.

Como desarrollador que conoce C, C ++, Java, Python, JavaScript, jQuery, jQueryMobile, Pandas, HTML, aprendí algunos de estos lenguajes en un par de días y los dominé.

Debe seguir pasos simples:

  1. Configuración del entorno de desarrollo: esta es una de las partes más importantes. Debe ser lo suficientemente paciente como para asegurarse de que todo esté correcto.
  2. Aprenda tipos de datos, sintaxis, funciones, biblioteca de importación, conceptos de OOP.
  3. Practique líneas de código una por una: no puede aprender un idioma a menos que lo practique en un entorno de desarrollo. No necesita escribir un programa completo, sino solo una instantánea de una función o sintaxis complicada para comprender su uso.
  4. Dominio en la búsqueda: marque páginas web que sean útiles, aprenda a buscar palabras clave para resolver la mayoría de los problemas que enfrenta en el desarrollo.

La paciencia y la perseverancia son dos características que necesitas al aprender un idioma en un día.

Lo he hecho varias veces, y estoy seguro de que continuaré haciéndolo (bueno, un día lo está presionando, pero 2 o 3 es bastante común para mí).

La cuestión es que realmente no estás aprendiendo un nuevo idioma. No es como si supieras inglés y español, así que aprendes mandarín de la noche a la mañana. Eso suena impresionante, y lo sería. Pero aprender lenguajes de programación no es eso.

Es más como tratar de encontrar las cosas principales que necesita hacer en un proyecto y las herramientas principales que el lenguaje le ofrece para hacerlas, y luego hacer algunas cosas concretas con ellas.

Es como encontrar el camino en una casa. La primera casa por la que camine será confusa, pero después de eso, la mayoría de las casas están estructuradas aproximadamente de la misma manera, por lo que solo necesita saber lo básico como dónde está la cocina, dónde está el baño, etc. y debería estar listo para ir. .

Todo lo demás ya tiene sentido, porque he usado entre 10 y 20 idiomas. Tienden a funcionar de manera estándar con nombres similares. Puedo buscar cómo hacer X o Y en el lenguaje Z, porque ya tengo un sólido conocimiento de X e Y en abstracto y concreto en otros idiomas, así que solo es cuestión de cómo hacerlo en Z.

Se basa completamente en la experiencia pasada, tanto con otros lenguajes similares estructurados de manera similar, como con el tipo de trabajo que estoy tratando de hacer con él. El tipo de trabajo es generalmente un poco nuevo, pero no tan nuevo. No es tan diferente.

Además, la mayoría de estos idiomas tienden a ser diseñados por humanos (a diferencia de los idiomas hablados) y, como resultado, tienen un incentivo muy fuerte para ser fáciles de aprender y ser similares a otros idiomas populares, lo que realmente reduce su curva de aprendizaje una vez que tiene 3 o 4 debajo de su cinturón.

Todo el proceso es más tedioso que cualquier otra cosa.

Aprendí un nuevo lenguaje de programación en una noche una vez.

En realidad, no funcionó en absoluto.

Estaba en mi segundo hackathon y estábamos trabajando para crear una aplicación de teléfono Android que se integrara con una cafetera. Íbamos a modificar la cafetera para encenderla a través del bluetooth desde el teléfono.

Habíamos dividido nuestro equipo en dos, de modo que un equipo estaba trabajando en la cafetera y el otro equipo estaba trabajando en la aplicación de Android. Mi amigo y yo éramos los dos trabajando en Android.

El único problema era que ninguno de nosotros tenía experiencia en la creación de aplicaciones de Android, ni siquiera en la programación en Java, para empezar.

Entonces, lo que hicimos fue decidir aprender a programar en Java en unas pocas horas y luego comenzar a trabajar en la aplicación. Nos dirigimos al curso de Java de Codecademy y comenzamos a analizar las lecciones.

Aunque ambos no teníamos experiencia en la creación de aplicaciones Java o Android antes del hackathon, ambos teníamos un fondo de programación decente en Python y, en menor medida, en C ++. Mi amigo estaba en ingeniería mecánica y yo en astrofísica.

Sorprendentemente, pudimos pasar por las lecciones muy rápido. Ambos completamos todas las lecciones en menos de 2 horas y comenzamos a trabajar en la aplicación de Android. Lo que teníamos que hacer era lograr que el teléfono se comunicara con la cafetera mediante bluetooth a través de un microcontrolador Arduino.

Buscamos todas las API necesarias y comenzamos a buscar tutoriales, uniendo código para que la aplicación funcione. Aunque acabábamos de aprender Java, no estaba tan mal, porque las características generales de los lenguajes de programación son bastante similares. Encontré que Java es una mezcla entre Python y C ++.

Logramos que la aplicación funcionara y se comunicara con el Arduino, pero desafortunadamente el otro equipo no pudo modificar la cafetera para hacer lo que queríamos, debido a un problema con los motores eléctricos que estábamos usando.

Entonces, ¿mi amigo y yo aprendimos un nuevo lenguaje de programación en solo 2 horas? A pesar de tener una aplicación de Android en funcionamiento, diría que en realidad no aprendimos a programar en Java. Acabamos de aprender suficiente Java para reconocer ciertos patrones que podríamos piratear juntos para crear una aplicación de Android simple.

Unos días después del hackathon, decidí volver y mirar el código que escribimos (o mejor dicho, pirateados juntos de una docena de tutoriales diferentes), y descubrí que no podía reconocer ni recordar un solo fragmento de Java. ¡Olvidé por completo todo lo que había aprendido!

Entonces, la moraleja de la historia es esta: nada es fácil o gratis. Tendrás que trabajar duro para aumentar tu conocimiento en algo, y una noche no es suficiente para aprender algo tan vasto y complejo como un lenguaje de programación completo.

Sin embargo, tenga en cuenta que de ninguna manera soy un desarrollador profesional, simplemente soy un estudiante en este momento aprendiendo a programar. Me imagino que alguien con más experiencia podría lograrlo, pero ciertamente no pude.

Si desea leer más respuestas mías, sígame en Quora en Paul Le , y consulte / siga mi blog en Quora en Hungry Minds .

Creo que soy elegible para responder esta pregunta ya que lo hice antes. Una vez aprendí un lenguaje de programación de la noche a la mañana porque tenía que comenzar a trabajar en el proyecto al día siguiente.

Lo primero que hice fue tratar de entender mi proyecto y los requisitos. Una vez que entendí los requisitos y descubrí una lógica para implementar, aprendí algunas características básicas de sintaxis de Internet que serían necesarias para implementar mi lógica.

A la mañana siguiente, comencé a trabajar en mi proyecto. Aunque enfrenté algunos problemas al principio, había suficiente ayuda disponible en Internet para depurar los errores de sintaxis. En los siguientes 2 a 3 días, continué trabajando en el proyecto y adquirí competencia en el lenguaje de programación y pude completar el resto del proyecto con facilidad. Trabajé en el proyecto con un solo lema en mi mente. es decir

“Al final del día, debo saber más sobre el idioma que lo que supe ayer”.

Algunas de las cosas importantes que me ayudaron a aprender:

1) Proyecto: dado que había un proyecto asociado con el idioma, podría trabajar de manera constante en ese idioma que me ayudó a adquirir competencia

2) Un buen historial de programación: ya era competente en otros lenguajes de programación. Entonces pude comprender rápidamente los conceptos importantes de este lenguaje de programación.

3) Consistencia: es muy importante mantener la consistencia en el aprendizaje. Aprender durante dos horas / día durante una semana es mejor que aprender durante 14 horas en un día.

Hago esto a menudo. Llega al punto donde todos los idiomas se mezclan.

No son saltos de idioma, sino saltos de IDE o plataforma en una noche que son impresionantes. No dominar en una noche, sino sobrevivir como profesional y terminar con un proyecto exitoso. El truco para hacerlo es comprender su problema y luego encontrar un libro para esa plataforma. Lea al menos las primeras 300 páginas muy rápido y lea el código. Los que saltan directamente a la codificación en una nueva plataforma son tontos. La plataforma fue desarrollada por la imaginación de otra persona, no importa cuán simple parezca … la imaginación de otra persona estaba involucrada.

Por ejemplo, si históricamente ha sido un desarrollador Backend Java, pero tiene la oportunidad de aprender el desarrollo de kernel y HAL para una plataforma IoT Android, su mejor opción sería leer. La sintaxis y los problemas comunes se pueden buscar en Google, pero necesitará conocer muchos detalles de la plataforma.

Para este salto, una persona leería ~

http://free-electrons.com/doc/books/ldd3.pdf
https://www.safaribooksonline.co

Además, este enfoque le permite ganar suficiente tiempo para aprender el idioma adecuadamente mientras habla con clientes o asociados de una manera productiva e inteligente. Lo que te hace ver mucho mejor que sentarse y buscar en Google la sintaxis.

La segunda cosa que una persona debe hacer en esta situación es encontrar las mejores herramientas para hacer diagnósticos, depurar y registrar. Comprenda qué métricas determinan la finalización de la tarea en cuestión. De esta manera, puede extraer tanta información del lenguaje / marco como sea posible mientras aprende.

Los idiomas se vuelven similares a poner el cuadrado en el agujero cuadrado. Círculo en el agujero circular. Cuando debe utilizar un búfer o productor / consumidor, etc., es importante el proceso de pensamiento que se adjunta a la plataforma.

Aprender un nuevo lenguaje de programación puede ser una tarea tediosa cuando tienes que aprenderlo en muy poco tiempo.

Lo que debe recordar es que no necesita dominar todos los conceptos en una noche. Comience aprendiendo la sintaxis, póngase cómodo escribiendo programas básicos y, con el tiempo, podrá profundizar en el idioma.

Bueno, cada vez que intento aprender un nuevo lenguaje de programación o marco, implemento operaciones básicas como (Recuperar, Insertar, Actualizar, Eliminar) integrándolo con la base de datos.

Recientemente tuve que aprender la base de datos Mongo y el framework Express, así que implementé estas operaciones y después de esto creo que realmente podría tener una comprensión firme del framework y la base de datos Nosql.

Puede consultar el repositorio de Github.

https://github.com/aryankanwar/Mongo_Express_Crud

Sigue aprendiendo como dicen …

Aprender un lenguaje de programación consta de tres partes:

  • La sintaxis
  • El paradigma
  • Las bibliotecas de idiomas correspondientes.

Si ya sabes algunos idiomas, tienes conocimiento de al menos un paradigma. Si aprende un nuevo idioma siguiendo ese paradigma también, no necesita aprender mucho, si es que tiene alguno.

En cuanto a la sintaxis, puede ser más o menos lo mismo. Hay idiomas que se parecen mucho a otros. ¿algunos ejemplos? C, C ++, C # y Java se ven muy similares. O Ruby y Elixir también están muy unidos. Si tiene un idioma que sigue una sintaxis muy similar, realmente no necesita aprender nada excepto algunas palabras clave nuevas que puedan aparecer. Pero eso es cosa de unos minutos.

Lo que queda son bibliotecas. Nuevamente, la mayoría de los inventores de idiomas no reinventaron la rueda. A menudo, los nombres dentro de las bibliotecas base, las clases y los módulos son muy similares. Entonces, a menudo puedes adivinar cómo se llama algún método o función. Lo nuevo son las cosas específicas del idioma. Eso suele ser lo único realmente nuevo aquí.

Lo ves. Aprender un idioma puede ser fácil si está cerca, por lo que algunos ya conocen otro idioma. Si quisiera aprender Python, podría adaptar los conceptos básicos de ese lenguaje en un día. Lo que lleva tiempo es aprender sobre otras bibliotecas no base. Aquí debes tener algo de sentido. Eso puede llevar algo de tiempo. Pero ya puede escribir aplicaciones con su conocimiento.

Una vez tuvimos un proyecto divertido aquí en nuestra empresa. Solíamos hacer un hackathon cada año y nuestro grupo decidió implementar uno de nuestros componentes en un lenguaje completamente desconocido (al menos desconocido para nosotros). Decidimos codificar en Clojure. Hicimos un tutorial juntos y después de tres horas comenzamos a implementar nuestra aplicación ya que sabíamos todo lo que necesitábamos saber sobre el idioma.

Primero debe definir los términos “aprender” y “nuevo idioma”.

En muchos casos necesito evaluar nuevas tecnologías, incluidos lenguajes, marcos y más. Me reí de una compañía que pensaba que me tomaría 6 meses “aprender” un marco, solo debería llevar unos días.

Los nuevos idiomas aprendidos solo deberían tomar unos días como máximo, si no un día, pero espera, ¿a qué me refiero?

Entonces, al aprender, hay varias vistas. No puedo dominar un nuevo idioma en un día, siempre hay pequeñas cosas por ahí, sin embargo, debería poder comenzar a codificar en poco tiempo.

Aprender un idioma se trata de comprender su estructura, sintaxis y conceptos generales, no se trata de conocer un solo aspecto.

Temas clave a considerar:

Estructura general y puntos de entrada: recopilados del ejemplo hello world

Estructuras y alcance de datos básicos: se recopilan observando un par de ejemplos. Esto incluye clases, alcance, herencia, uso de interfaces, etc.

Lógica general y control de flujo: rara vez se necesita mucho y la mayoría debería ser evidente a partir de idiomas con los que ya está familiarizado.

Gestión de hilos y memoria: Esto incluye cosas como pasar por referencia o pasar por copia cuando se habla de llamadas a funciones, conceptos de sincronización, etc. Los conceptos básicos aquí son relativamente fáciles, algunos como la gestión de memoria de hilos y detalles pueden requerir un poco de esfuerzo dependiendo de la complejidad de necesidades

Si eres un programador con medio cerebro, sabes que si has estado trabajando en el idioma durante 1 día o 10 años, encontrarás casos en los que Google es tu amigo.

Esto no quiere decir que después de 1 día pueda codificar como alguien que trabaja en el idioma durante meses o años, pero hay algunos idiomas en los que no podría comenzar a codificar después de un día buscando en Google o jugando.

No es necesario conocer todos los detalles (por dentro y por fuera) para “saber” algo. Si tiene una sólida comprensión de las teorías y algoritmos básicos, puede elegir cualquier lenguaje y comenzar a usarlo (a menos que sea ilógico y mal diseñado), con poco o ningún esfuerzo.

Por esta razón, sugiero que la gente se tome el tiempo de “aprender” ensamblador y tal vez incluso lo domine un poco, así como C, C ++ y Java o C #. Estos le brindan teorías sólidas y una comprensión del nivel básico y la abstracción que agregan los lenguajes modernos. Una vez que los comprenda, pasar a un lenguaje no basado en C es el próximo gran desafío, ya que debe volver a entrenar un poco su pensamiento, por lo que Python o Lisp también sería bueno para estudiar.

Respuesta simple, no y no puedes. No lo hicieron y no pueden. Es posible que pueda aprender la sintaxis de un idioma (especialmente un lenguaje como lisp donde la sintaxis es mínima). Sin embargo, el proceso de aprender un idioma es un proceso, no una sola actividad. He estado programando en C # durante aproximadamente 12 años y todavía estoy “aprendiendo” el lenguaje (si simplemente dejaran de salir con nuevos marcos ;-). PHP por aproximadamente 9 años. Java para 8. Podría seguir. Soy fluido en todo esto y muchos más, pero el aprendizaje nunca se detiene. Si volviera a Java en este punto, necesitaría un repaso serio sobre el estado del arte en Java (han pasado más de 8 años, y he seguido leyendo sobre las cosas nuevas, pero no desarrollé con ellas) .

Entonces, cualquiera que te dijera que te estaba soplando humo por la falda.

No solo porque son buenos en lectura, comprensión y buena memoria :).

He entregado productos en Java, PHP, Python, Perl, .Net, C y recientemente trabajé en Node.js. Usé una variedad de frameworks: Spring, Django, Flask, .Net y trabajé con múltiples bases de datos, todo tipo de bases de datos RDBMS, NoSQL: MongoDB, Cassandra, en Memory Database como Redis e incluso Graph Database como Neo4j.

Es porque están bien versados ​​en conceptos de programación. Ellos

  1. conoce bien las mejores prácticas de programación orientada a objetos
  2. conoce bien los conceptos de seguridad y está integrado en el diseño, sin errores
  3. escribir códigos modulares, seguir convenciones de nomenclatura consistentes
  4. he aprendido a entender bien otros códigos … ver la lógica en otra codificación.
  5. son perfeccionistas … que no se detendrían en “solo un código de trabajo”, sino que seguirían mejorando, hasta que veamos líneas de código reducidas, escalables, robustas y, en algunos casos, más rápidas
  6. conocen bien los motivos de las pérdidas de memoria, la utilización óptima de los recursos de CPU y RAM
  7. Comprender las áreas que los lenguajes de programación intentan responder.

Estas, creo, son algunas de las características comunes que abarcan los lenguajes de programación. Comprender que todos los lenguajes de programación tienen características que responden a la técnica de compilación, uso de recursos, bucles, comandos de impresión, metodología de depuración. La forma en que funcionan detrás de la pantalla es diferente, pero como parte de la abstracción, la que codifica es casi la misma.

Un buen programador en mi opinión es el lenguaje de programación agnóstico. Él sabe elegir bien su herramienta. Necesita un servicio web sin bloqueo – Node.js, Algoritmos computacionales pesados ​​- Python, para ir más allá de los límites – C. Es inútil aprender una base de datos NoSQL – a menos que no esté bien versado en los conceptos del teorema CAP y cómo las relaciones entre tablas, la consulta construye trabajo.

Por lo tanto, no mire la programación desde la perspectiva de un lenguaje, sino mire más allá de ellos, en conceptos que abarquen, las definiciones de un buen código.

En realidad es bastante fácil, pero solo si ya conoce algunos idiomas. En términos generales, una vez que conoces uno de cada uno de los “tipos” de idiomas, entonces son más fáciles de usar. De hecho, cuando voy a un proyecto en un idioma que no he usado en mucho tiempo, tengo que “aprender” el idioma nuevamente. Por ejemplo, si no he usado Ruby en mucho tiempo y tengo que trabajar en algo con Ruby, me sumergiré directamente en el proyecto. Si quiero una declaración de cambio, buscaré en Google la sintaxis de una declaración de cambio en Ruby, si necesito un módulo con una clase, también buscaré en Google. Por supuesto, esto sería mucho más difícil si no conociera la semántica de una declaración de cambio o un módulo o clase. Así que seguiré así por un tiempo y me doy cuenta de que una vez que puedo ‘sentir’ el idioma, se vuelve cada vez más fácil captar la sintaxis y las expresiones idiomáticas. Lo mismo se aplica principalmente a los idiomas que nunca he usado antes.

Ahora, esto es lo que podríamos llamar ‘aprender’ un idioma: puedo escribir algo en él y funcionará. Eso no significa aprender las complejidades y los matices del idioma. Si conozco Java, puedo comenzar a cavar en JavaScript de inmediato y escribir un código decente, pero ciertamente no voy a conocer todas las sutilezas (por ejemplo, herencia prototípica). Eso lleva tiempo y experiencia con un idioma en particular. Simplemente no sabes lo que no sabes hasta que lees sobre él en algún lado o te encuentras con un problema que te obliga a obtener una comprensión más profunda de algo específico. Y de hecho, así es como aprendí casi todos los idiomas que conozco, a diferentes niveles de competencia.

Sin embargo, hay excepciones. Como mencioné antes, ayuda conocer idiomas de diferentes ‘tipos’. Entonces, si vengo de una gran experiencia de OOP e intento comenzar a investigar algo como Haskell (muy funcional y mucho más conciso), entonces tendré un tiempo mucho más duro. También me gustaría señalar que algunos idiomas que son más “obstinados” también pueden tomar más tiempo para aprender. Go es un muy buen ejemplo de esto (y uno que aprendí recientemente) ya que le gusta imponer un cierto estilo a las personas que lo usan y lo hace más difícil para aquellos que no aprenden la forma correcta de usarlo.

En realidad, aprendo nuevos idiomas sobre la marcha y no es difícil una vez que comprendes los conceptos básicos del desarrollo.

La mayoría de los idiomas solo tienen tres elementos: declaraciones, condiciones y bucles. A menudo, estos se agrupan en métodos, funciones o procedimientos, convirtiéndolos en “declaraciones compuestas”. El principio de OO es que conecta las declaraciones compuestas a los registros de datos y generalmente tiene una estructura de herencia. A menudo, las interfaces se pueden aplicar a clases para “cambiar de forma” diferentes clases en otras similares. Y el resto es principalmente una sintaxis diferente.

Un desarrollador experimentado puede mirar a través del lenguaje y ver las cosas que acabo de nombrar. No los convierte en expertos inmediatos, pero muchos podrán hacer conjeturas educadas sobre la nueva sintaxis y, por lo tanto, no necesitarán mucho tiempo para aprender solo una nueva sintaxis. Básicamente, estos desarrolladores ya no dependen de los idiomas. Se basan en estructuras. No importa qué idioma elijas, todos tienden a tener estructuras similares.

Bueno, algunas cosas:

  1. Los lenguajes de programación son en su mayoría los mismos. C # es casi indistinguible de Java. Go y Limbo son básicamente el mismo lenguaje, incluso Swift es similar a C #, con menos caracteres “(” y “)” y más “!” y “?” caracteres.
  2. Los lenguajes de programación son realmente simples, están hechos para ser simples. C tiene menos de 50 palabras clave, Smalltalk, espere, tiene * seis * palabras clave. Eso no significa que pueda usar Smalltalk de manera productiva en una noche, pero si ya conoce otros idiomas de OOP, aprenderá mucho en un día.
  3. Los lenguajes de programación no son difíciles, son los kits de herramientas y las bibliotecas los que son difíciles. Estoy escribiendo mi primera aplicación en Swift en este momento, es lo suficientemente agradable y similar a otros idiomas que sé que es muy fácil de aprender. Sin embargo, las API REST a las que accedo en Swift son un ejercicio de frustración, y XCode no proporciona el mismo nivel de finalización de código que NetBeans o Visual Studio. ¡XCode espera que escriba mi propio código! La temeridad!

Básicamente, sí, puedes aprender un idioma en una noche, suponiendo que conoces a otros. Una vez que haya usado 10 idiomas, verá similitudes más de lo que ve diferencias, y no necesita ser un científico espacial para resolver eso:

int i = 0;

y

var i: Int = 0

significa lo mismo.

La mayoría de los idiomas (no todos), una vez que elimina algunos problemas de sintaxis, son muy parecidos, y pasar de trabajar 10 idiomas a 11 no es un salto tan grande como podría pensar.

Sin embargo, los kits de herramientas como Cocoa y WPF son muy diferentes, y puede llevar un tiempo entender uno nuevo. De nuevo, no todo, sin embargo, pasé de XAML a JavaFX con bastante facilidad, ya que son estructuralmente muy similares. Sin embargo, el cacao no es en absoluto similar, y es una curva de aprendizaje mucho más grande para pasar de XAML a Cocoa que de XAML a JavaFX.

A veces ni siquiera son los kits de herramientas, son los creadores de IDE y GUI, XCode e Interface Builder es una bestia realmente diferente a Visual Studio, y tomará algún tiempo dar ese salto.

Lo primero que debe saber es que los desarrolladores casi nunca conocen todas las características de un lenguaje de programación, independientemente de cuánto tiempo alguien haya estado usando ese lenguaje. Por supuesto, hay algunas excepciones, y algunas personas pueden aprender todo lo que hay que saber sobre un idioma mediante la implementación de un compilador o intérprete completo de funciones para ese idioma, pero el número de personas que lo hacen es pequeño.

Lo segundo que debe saber es que los lenguajes de programación dentro del mismo paradigma son básicamente diferentes en su sintaxis. Muchas estructuras de datos realizan las mismas tareas, aunque pueden implementarse de manera diferente. De todos modos, si te sientes muy cómodo en Java, es muy fácil aprender C #. La sintaxis es diferente pero sobre todo la misma. Comenzará a ver paralelismos entre los idiomas, lo que le facilitará el aprendizaje. Por ejemplo, en C # puede imprimir al estándar con:

Console.WriteLine (“¡Hola, mundo!”);

En Java puedes hacer lo mismo con:

System.out.println (“¡Hola, mundo!”);

Las dos partes del código se ven muy similares, y si solo supieras una forma de hacerlo, ver la otra sería fácil de entender solo en función del contexto del código y de las similitudes que tu cerebro verá con lo que eres. familiar con.

Interesante pregunta. Otros ya han dado la respuesta breve a esto: nadie aprende un nuevo lenguaje de programación en una noche, eso es simplemente imposible. Sin embargo, los programadores altamente experimentados que ya tienen algún conocimiento de una variedad de idiomas pueden aprender rápidamente las diferencias sintácticas básicas entre un nuevo idioma y uno similar que ya conocen. Un ejemplo sería un desarrollador Java experimentado que aprenda C #. Por supuesto, ese es solo el lenguaje, luego debe aprender los marcos y el IDE antes de que pueda comenzar a ser algo funcional como desarrollador en ese nuevo lenguaje.

Además, como otros también lo han señalado, aprender los conceptos básicos de un idioma de ninguna manera implica dominio de ese idioma. Es posible que pueda aprender lo suficiente en unos días para realizar tareas simples, especialmente si puede encontrar un código similar en línea. Sin embargo, el dominio llevará semanas o incluso meses de experiencia con ese idioma. No puedo comenzar a contar la cantidad de veces que he visto a nuevos desarrolladores (nuevos en un lenguaje) entrar, aprender los conceptos básicos, seguir ejemplos y luego mostrar su código a un desarrollador experimentado y me dicen “Buen comienzo, arregla esto, esto y aquello, y nunca vuelvas a hacer esta parte … ¡o si no! ”

En pocas palabras, cuando se aprende un nuevo idioma, se aplica TANSTAAFL, se espera que tome tiempo y mucha práctica. La experiencia previa solo te da un poco de ventaja. Pero eso es solo hablar de 30 años de escribir código y aprender más de una docena de idiomas (cuenta perdida).

Soy lo que uno llamaría “abogado de idiomas”. Cuando necesito aprender un idioma, reviso las especificaciones o BNF si están disponibles. Es denso, pero tengo una gran velocidad. Incluso puedo leer más rápido de lo que proceso.

Luego paso poco tiempo para comprender modismos y códigos idiomáticos.

Finalmente mapeo conceptos a través de isomorfismos simples.

Por supuesto, este proceso ocurre de manera intercalada.

Algunos idiomas son tan diferentes que no puedo entender los morfismos y debo implementar otra estrategia: usar un gatewy. Algún lenguaje Z que tiene morfismos tanto para X como para Y.

¡Y a veces, incluso esto falla! Cuando lo hace, pienso en una clase de problemas. Los muy simplistas como: bucle, filtrado, mapeo.

Por supuesto, todo esto se hace de forma empírica.

¡La realidad es que no aprendo el nuevo idioma, creo tanto vínculo con mi conocimiento actual para que se adhiera la primera vez!

Mi cerebro está acostumbrado a favorecer la construcción sobre la memorización del conocimiento. Tiene un inconveniente, 13 * 17 es un rompecabezas para mí donde haría (130 * 2) -39 o [(130 * 2) -40] +1 donde algunas personas simplemente encontrarán 221.

Y hay muchos problemas en los que parezco inferior hasta que se introduce un giro.

Así es como puedo aprender un idioma en 2 horas o incluso menos. Con un nivel de comprensión de un senior.

Pero no se equivoque, el lenguaje en sí mismo suele ser lo menor y el valor proviene de conocer el ecosistema que lo rodea. Como bibliotecas, contexto de ejecución, herramientas, …

Para APL, ¡eso tardó más de días en conseguirlo! El idioma es muy fácil y apuesto a que cualquier persona normal puede comenzar en 10 minutos. Lo que lo dificulta es la cantidad de funciones / operadores.

Además, los lenguajes como C ++ y Javascript son muy difíciles a veces e incluso las personas mayores con años de práctica no los entendieron por completo. El alcance en JS es una forma de divertirse. Lo “nuevo” en C ++ a menudo se malinterpreta. Etc!

Por último, algunos idiomas parecen realmente fáciles. Assembly es uno de ellos, pero un programa simple que use IDIV podría causar pesadillas a algunas personas. (¡Porque estas instrucciones levantan banderas que te dicen cómo interpretar el resultado!)

Ver, esta declaración está cerca de una falacia. Una mejor afirmación sería: 《¿Por qué algunas personas parecen poder aprender algo de idioma en aproximadamente 2 horas?》.

Los diferentes lenguajes de programación tienen mucho en común. Cuando conoces varios de ellos, aprender nuevos se vuelve fácil.

Personalmente, ni siquiera me molesto en aprenderlos, empiezo a usarlos de inmediato. Por ejemplo, mi amigo una vez me pidió que lo ayudara con su programa FORTRAN, y pude responder sus preguntas después de revisarlo, aunque no estoy particularmente familiarizado con FORTRAN.

Debe aprender un idioma cuando introduce nuevos conceptos o hace cosas inusualmente. Por ejemplo, Haskell es muy diferente de su lenguaje imperativo típico, y si bien un buen programador podría aprender lo suficiente para escribir algunos programas simples en una noche, lo más probable es que no pueda comprender programas más complejos.

More Interesting

¿Es una señal de alerta si la publicación de trabajos de desarrollador de software enumera uno de los requisitos como "capaz de hacer malabarismos con múltiples tareas"?

Cómo elegir entre trabajar de forma remota para una startup o ser un consultor desarrollador de software para una gran empresa

Como un cambio de carrera con la intención de convertirse en un desarrollador de software, ¿cuál podría ser el punto de entrada más fácil o más sensible en la industria de la tecnología?

¿Qué es mejor para comenzar una carrera, desarrollador de software o funcionario de IAS?

¿Cuál es la experiencia más desafiante que encontró como desarrollador de software?

¿Cuál es la mejor manera para que un desarrollador de software haga la transición de TI corporativa a nuevas empresas?

Como desarrollador de software, ¿vale la pena aprender blockchain y ethereum si estoy aprendiendo machine learning después del trabajo ahora?

¿Qué extrañé al no estudiar CS o CE como desarrollador de software? Estudié química y física, aprendí programación en el trabajo (C ++, Phython, un poco C #). Soy bueno en el procesamiento de imágenes y estoy trabajando a tiempo completo con sistemas HMI. ¿Qué me perdí?

¿Puede cualquier otro estudiante de flujo hacer una carrera como desarrollador de software?

¿Qué diferencia a un gran desarrollador de software de los mediocres / malos?

¿Cuáles son las ventajas de la empresa de desarrollo de software?

Como desarrollador de software, ¿cómo puedo ayudar a combatir el cambio climático?

¿Cuántos lenguajes de programación necesito aprender para convertirme en desarrollador de software y cuánto tiempo tomará?

¿Cuál es la mejor manera para que un programador autodidacta se convierta en un verdadero desarrollador de software?

¿Qué tan importante es para un probador o desarrollador comunicarse entre sí?