¿Cuál es el mejor lenguaje para un programador principiante?

Este es probablemente uno de los que hacen una docena de programadores, obtienen trece respuestas diferentes y preguntas. Yo podría dar diferentes respuestas basadas en el contexto. Para esta pregunta, voy a suponer que estamos hablando de aprender el idioma a través de la educación superior.

El propósito de la escuela es hacerte un individuo completo, preparado para aprender más cosas. A veces creo que Niklaus Wirth tenía un objetivo muy valioso al crear Pascal como idioma de enseñanza, porque aunque era poco probable que te encontraras con Pascal en un entorno sin aprendizaje, te preparaba para la mayoría de los idiomas comunes del día. Pascal era un lenguaje imperativo para enseñar a las personas a usar los idiomas imperativos, que era el tipo más común en ese momento.

Creo que un lenguaje moderno para el aprendizaje debe ser multi-paradigma para enseñar imperativo, orientado a objetos y programación funcional. Es un poco inexcusable que un idioma de aprendizaje hoy no tenga un REPL, por lo que el alumno puede probar los comandos de forma interactiva, ya que muchos idiomas tienen esta capacidad ahora. También se debe compilar un lenguaje de aprendizaje para que el estudiante pueda entender el ciclo de edición-compilación-enlace, y escribirlo de manera estática para que el estudiante pueda aprender esas complejidades importantes. El lenguaje también debe ser utilizable para todos los tipos de aplicaciones comunes, por ejemplo, basadas en GUI o basadas en web o en línea de comandos, o móvil.

Con todas estas cosas, tanto la facilidad de aprendizaje como los principios del próximo idioma están definitivamente cubiertos, sin importar cuál sea el próximo idioma.

Teniendo en cuenta estos criterios, creo que el lenguaje más recomendable para nuestro tiempo es Scala.

Scala trabaja con varios IDE diferentes, por lo que la depuración a través del código no es realmente un problema. El idioma y la mayoría de los IDE están disponibles gratuitamente, por lo que se minimiza el costo para la escuela. Scala es el producto de un entorno de enseñanza, EFPL en Suiza. Irónicamente, su creador, Martin Odersky, fue alumno de Niklaus Wirth.

Algunas veces he recomendado Python a las personas como primer idioma, porque si eres autodidacta, tiene una barrera de entrada más baja que Scala. Pero, en esta pregunta he inferido que estamos hablando de un entorno de enseñanza donde hay personas disponibles para ayudar, y si bien Python tiene aspectos de programación funcional y orientada a objetos, no están tan implementados como en Scala. , por lo que realmente no saldrías conociendo OOP ni FP en la medida en que definitivamente puedas sentirte cómodo en otro idioma con estas características.

También en Python, carece del ciclo de edición-compilación-enlace y tiene que soportar la frustración de encontrar sus errores de sintaxis en tiempo de ejecución. Es un gran lenguaje de scripting, pero no estoy completamente seguro de que debas comenzar por ahí y estoy completamente seguro de que no deberías terminar ahí.

Es una especie de error enseñar a los programadores principiantes un lenguaje que se usa profesionalmente: les hace pensar que pueden aprender un idioma y luego obtener un trabajo escribiendo código profesional en ese idioma, mientras que tener programadores con ese tipo de competencia general limitada es uno de las razones por las que el estado del software es tan pobre.

Cuando doy recomendaciones para programadores principiantes, sugiero que aprendan Lua primero. Lua es, semánticamente, similar a Python, pero es bastante más simple y también carece de algunas de las idiosincrasias que hacen de Python un lenguaje muy extraño (como la sangría es sintácticamente significativa). Lua no hace una distinción entre diccionarios y objetos, por lo que es una buena puerta de entrada a JavaScript. Es trivial implementar un prototipo-modelo-objeto de estilo JavaScript en Lua, y a menudo la mejor manera de entender una característica de lenguaje es implementarla. tú mismo. Lua está escrito en puro ansi C y es trivialmente extensible en C, además de tener una implementación bastante pequeña y limpia, lo que la convierte en una buena puerta de entrada a C. Lua tiene una biblioteca estándar muy pequeña, por lo que el riesgo de pasar todo el tiempo aprendiendo Las llamadas a la API en lugar de las funciones básicas del lenguaje son pequeñas. A pesar de todo esto, el uso de Lua en el mundo profesional se limita principalmente a extensiones para otros proyectos. Básicamente, no puede salirse con la suya al aprender solo a Lua y conseguir un trabajo, porque cada posición de Lua también requiere otro idioma.

Aprender C para comenzar es probablemente un error. Es relativamente fácil escribir código malo, inestable e inseguro en C sin darse cuenta. A medida que los procesadores se vuelven más rápidos, los lenguajes como C se vuelven menos importantes porque se pueden realizar más clases de problemas en los lenguajes de nivel superior que antes solo eran útiles para la creación de prototipos. En estos días, se está realizando un análisis legítimo a gran escala de los datos en Python (lo cual es de alguna manera). hilarantemente ineficiente: como lo demuestra la existencia de PyPy, un intérprete de Python en Python que es más rápido que Python normal porque aprovecha las enormes y típicamente inesperadas diferencias de eficiencia entre diferentes métodos para hacer lo mismo, como que x + x es el doble rápido como 2 * xy ocho veces más rápido que x << 1). Un programador completo será competente en C, pero comenzar en C es una barrera para llegar a ser competente en él.

Muchas escuelas (tanto escuelas secundarias como universidades) enseñan Java como primer idioma. Java no lo alienta a hacer garabatos en toda la memoria principal como lo hace C, pero tiene sus propios problemas. Es demasiado complicado. Es un nivel demasiado bajo para ser un sustituto aceptable de los lenguajes de secuencias de comandos para el desarrollo rápido, sin embargo, tiene demasiadas restricciones de tipo HLL para tener capacidades o rendimiento comparables a los que podría obtener (por ejemplo) C ++ o D (dos idiomas con la misma forma Orientada a Objetos / Procesos que tiene Java, con una sintaxis similar y reglas de herencia similares). Puede escribir un sistema operativo en C ++ o D si primero destruye la biblioteca estándar; En Java, esta es una tarea más difícil, porque Java cree que no se puede confiar a los simples humanos con punteros mutables. En última instancia, Java es un híbrido situado en un nivel de abstracción de utilidad limitada para cualquier persona, excepto las grandes empresas, que aman a Java porque su burocracia de objetos refleja perfectamente la organización, en gran medida disfuncional, de corporaciones que son demasiado pesadas para innovar realmente. Las personas que aprenden Java como primer lenguaje obtienen Java-itis: piensan que Java representa el ideal de la orientación a objetos, el ideal de los lenguajes tipo c, el ideal de los lenguajes con recolección de basura, el lenguaje ideal de resolución general para cualquier cosa. Entran en el campo y hacen todo en Java, y luego nunca aprenden otro idioma, ya que Java se adapta aproximadamente a todas las tareas comunes, por lo que nunca tienen el indicio de que algún otro idioma pueda facilitar ciertas tareas. (También hay problemas didácticos en la enseñanza temprana de Java. Java hace que ciertas cosas que deberían ser muy fáciles sean muy difíciles, como la entrada directa desde un teclado o desde un archivo. Por lo que entiendo, estos problemas se han solucionado un poco desde que tuve para aprenderlo en la escuela, pero cuando estaba aprendiendo Java por primera vez, la forma más fácil de leer una línea de entrada de un usuario era crear seis objetos para poder manejar uno de ellos que podía leer líneas desde la fuente.)

C ++, en gran parte, sufre la mayoría de los mismos problemas que Java, además de la mayoría de los mismos problemas que C; como resultado, recomendaría enseñar eso a los principiantes incluso menos, aunque considero que es un lenguaje más útil profesionalmente porque no impone sus extrañas preferencias a través de un compilador. Enseñar C ++ como primera lengua es raro en estos días, pero era algo común en los años 90. Ya que estamos hablando de personas que enseñan a Pascal y BASIC como primer idioma en la escuela secundaria, algo que se detuvo más o menos por completo al mismo tiempo que la enseñanza de C ++ y la enseñanza de Java comenzaron (es decir, hace unos 15 años), esto es probablemente vale la pena decir.

Hay un conjunto de universidades que enseñan esquema primero. Me alegro de que no estén enseñando algo común, al menos. El esquema tiene el beneficio de que su uso profesional es muy limitado. Sin embargo, parte de eso se debe a que el estándar del esquema es realmente ambiguo, hasta el punto en que la portabilidad de los programas del esquema entre implementaciones que cumplen con el estándar es extremadamente baja. El esquema difiere demasiado de otros idiomas en el uso común como para ser particularmente útil como punto de partida. Sin embargo, las universidades que enseñan en el esquema en primer lugar tienden a ser las que solo toman a estudiantes que son expertos programadores desde la infancia o que son altamente talentosos y altamente motivados. Para los simples mortales, es probable que sea un error enseñar primero el esquema: muchos estudiantes tendrán el mismo problema que mucha gente hizo con el básico: aprendieron un idioma, pero a pesar de que no pueden usarlo, el abismo entre lo que saben y un lenguaje que pueden poner en su currículum es demasiado grande, por lo que se detienen después de algunos intentos y pasan el resto de su vida escribiendo el código en el primer idioma que aprendieron o ningún idioma en absoluto.

No recomendaría Python como primera lengua, aunque es una mejor lengua materna que muchas de las que se enseñan con frecuencia. Python perpetúa la división clase vs objeto frente a diccionario que C ++ y Java tienen, una división totalmente artificial que a veces es útil para proyectos grandes y complicados de varias personas, pero solo interfiere con la OO simple. Python tiene una enorme biblioteca estándar, y es muy fácil para los programadores principiantes aprender de memoria una serie de llamadas a la API de tipo libro de cocina para hacer algo llamativo e interesante y no darse cuenta hasta que es demasiado tarde que nunca se preguntaron a sí mismos qué eran esas llamadas. realmente funciona o cómo se implementó la API detrás de escena y, por lo tanto, no pueden transferir sus habilidades a algún otro idioma donde esa API en particular funciona de manera diferente o falta. Python fomenta una combinación de estilos de orientación a objetos, procedimientos y funcionales, y si bien es una buena idea entender todos estos estilos, probablemente sea un error mezclarlos de forma idiomática específica para un solo idioma antes de tener la experiencia de diferenciarse. ellos. Python tiene un conjunto de idiomas extremadamente fuerte y complejo, con complicadas razones técnicas e históricas detrás de ellos, y es demasiado fácil para los programadores principiantes aprender estos idiomas de forma remota y luego quedarse atascados cuando el mismo idioma no existe en otro idioma.

En cuanto a Haskell, estoy preocupado por esto. Haskell tiene un montón de los mismos problemas que Scheme, pero en realidad es más común usar Haskell para “proyectos reales”, y muchos nuevos lenguajes tienen una sintaxis y características similares a las de Haskell (Julia me viene a la mente). Haskell es un problema porque requiere que los estudiantes que aún no han aprendido qué es una variable o un bucle, y que les enseñen sobre las mónadas, la recursión de la cola, los generadores y los thunks. Al igual que New Math, se debe argumentar que tal vez enseñarles primero estas ideas abstractas los llevará a pensar sobre la codificación de una manera abstracta y, en última instancia, les permitirá escribir mejor código al razonar más claramente. Creo que, en la práctica, descubrir qué es un bucle es lo suficientemente difícil para los principiantes, que muchos de ellos solo quieren hacer un videojuego simple y les gustaría aprender lo mínimo posible para dibujar fichas y sprites, y se desanimarán. cualquiera que quiera que aprendan a pensar claramente sobre la inversión de la función o el cierre diferido de las listas infinitas antes de eso.

¿Porque vas al colegio? Para obtener en última instancia algo de experiencia, y luego aprovechar esa experiencia en un trabajo, ¿verdad?

A menos que vayas por una carrera académica, no tiene sentido llenar tu mente con conocimientos que nunca usarás en la vida real. Aprender es divertido, pero eso no significa que siempre deba ser teórico.

Para cuando termines tu clase en BASIC, ya hay un par de nuevos aspirantes a creadores de aplicaciones que están tomando cursos en Udemy, Stanford U, Free Code Camp, Bloc, One Month, Treehouse, …

Podría argumentar que no están lo suficientemente educados como para hacer un buen software, porque carecen de experiencia fundamental en los paradigmas de programación. Ellos no saben por qué la declaración GOTO apesta. Pero … le falta una habilidad similar: experiencia en el trabajo sobre problemas del mundo real y software del mundo real.

Mi sugerencia es:

  • Elija un idioma que actualmente es popular en compañías de software, como Python o Ruby.
  • Elija un idioma que sea popular para aplicaciones, como Java o Swift (u Objective-C).
  • Aprenda mucho sobre diseño, comunicación, ventas, administre un equipo y mejore sus cualidades de liderazgo.
  • Obtenga del Problema # 1 al Problema # 500 en Project Euler ( http://projecteuler.net )
  • Comienza un proyecto de fin de semana, cualquier cosa. Cree una aplicación de lista de tareas, invente su propio SaaS, configure un VPS y aprenda a aprender Linux.

Desarrolle una habilidad comercial, y elija un lenguaje de programación que complemente esa habilidad.

No existe un acuerdo general sobre qué lenguaje es un buen primer lenguaje de programación. Algunas personas todavía recomiendan C; Desde la base de mi propia experiencia docente, siento que C no es una buena elección como primer lenguaje de programación, es un lenguaje que es bastante bajo en muchos aspectos y obliga a los programadores a preocuparse por la asignación de memoria, las referencias y las bibliotecas. muy temprano en

Preferiría mencionar otros tres idiomas más recientes que pueden, cada uno a su manera, ser un buen punto de partida para usted.

Algunas personas son introducidas a la programación a través de Python. Si desea probar la programación en Python, no necesita instalar la plataforma Python. En su lugar, puede utilizar un tutorial en línea. Echa un vistazo a Learn Python – Tutorial interactivo gratuito sobre Python .

Otras personas como C #; en mi universidad, este es uno de los lenguajes utilizados para introducir la programación orientada a objetos. Visita Learn C # – Tutorial interactivo gratuito de C #.

Otro lenguaje de programación más es el lenguaje orientado a funciones Haskell. Nuevamente, puede encontrar un tutorial en línea que no requiere que instale el entorno de programación en su computadora local – visite tryhaskell.org

Independientemente del lenguaje de programación que elija, consulte un buen texto sobre los principios de programación. Los programadores autodidactos a menudo terminan conociendo solo un pequeño rincón de un lenguaje particular y adquieren malos hábitos debido a eso. Sus metas siempre deben ser llegar a ser fluido en el idioma de su elección y poder escribir un código bien estructurado que otros puedan leer y entender.

Recomendaría aprender Python. Es fácil de aprender y se puede utilizar en el mundo real; Especialmente para aplicaciones web. Aprendí Python por mi cuenta cuando era adolescente e hice modificaciones cuando era niño para Counter Strike. Empresas como Google utilizan Python. Es un buen lenguaje sólido, con mucho que ofrecer tanto académicamente como profesionalmente.

Otro gran lenguaje para aprender aparte de Python es Javascript. La sintaxis no es demasiado difícil de comprender y enseña buenos conceptos de programación. Javascript es genial para aprender si quieres ser un desarrollador de juegos, un desarrollador avanzado o un desarrollador de fullstack. Independientemente de lo que elija para especializarse, Javascript tiene muchas aplicaciones del mundo real, desde juegos hasta la funcionalidad de sitios web y aplicaciones web.

Sin embargo, lo más difícil no es aprender la sintaxis de un lenguaje, sino todas las funciones básicas, la estructura de cómo se compila el código, comprender qué está mal y aprender la POO (programación orientada a objetos).

Supongo que Python es la mejor manera de empezar.
Lo aprendí dentro de las 2 horas (conocía C / C ++ antes y siempre que tengo problemas con la sintaxis, simplemente vaya a Stack Overflow).

Tiene muchas cosas que lo hacen más fácil de usar para los no programadores.
p.ej

  • a, b = b, a (muy pocos idiomas permiten este tipo de asignación)
  • return a, b (Cualquier otro procedimiento u lenguaje orientado a objetos requiere pasar por concepto de referencia)
  • Nada como el tipo de datos. Todo puede ser asignado a cada variable.
  • Puede usarse para implementar inteligencia artificial, desarrollo web y muchas más cosas …
  • No hay confusión ya que no hay nada como punteros.
  • Demasiadas palabras clave se asemejan al lenguaje natural.

Ex:

para i en la lista:
imprimir i

  • OOP también es posible en python.
  • Los juegos y otras bibliotecas son predeterminados (pygame y muchos más)
  • No hay necesidad de poner la función “principal”.
  • Nadie puede escribir programa sin sangría. Así que no hay confusión al leer el código de otros. Cada uno tiene que seguir esa convención de sangría.
  • El código de Python puede ser interpretado por CLI.
  • Podemos escribir código en Python comparado con C / C ++ / Java o muchos otros lenguajes.
  • No hay límites en el rango de números. (No hay nada como un desbordamiento) Podemos calcular directamente 10000! (Factorial) usando math.factorial (10000) que da resultado en un segundo y sin desbordamiento a diferencia de C / C ++.

La programación de software es un dominio muy diverso, ya sea software de sistema, software de aplicación, programación web o programación estadística / científica. Hay idiomas más adecuados para dominios específicos. Será muy difícil dominar todos y cada uno de los idiomas.
En cuanto a la pregunta actual, en mi opinión, C es el lenguaje más adecuado. Puede aplicarse a una amplia gama de proyectos y puede ayudarlo a comprender el funcionamiento interno de los sistemas. C puede que no sea el lenguaje más fácil de aprender, pero aún así es un lenguaje funcional adecuado para que los principiantes comprendan los conceptos de programación. Más adelante, puede cambiar fácilmente a un idioma adecuado de su elección.

PD. Aprendí Logo y BASIC en mi escuela, luego C en mi universidad, trabajando en mis proyectos, usé C, C ++, python, Javascript, HTML, CSS, Lua, perl … como un interés personal que probé en java, y un poco de R …

Gracias por la A2A. Para agregar a las respuestas ya abundantes aquí, solo comentaré que Python y JavaScript son, con mucho, los idiomas más amigables para principiantes (en mi opinión). Mi razonamiento es que no son tan pesados ​​como la sintaxis y son más claros en términos de legibilidad. Además, creo que con JavaScript en particular, es fácil hacer que un proyecto se ponga en marcha rápidamente y con mucha interactividad (para mantenerlo interesado, por supuesto).

Si las universidades enseñan C como lenguaje introductorio, no veo nada malo en ello, sin embargo, depende del estudiante querer aprender otros idiomas y no un idioma como C los desalienta. Si el estudiante se mete en otro idioma antes de C, entonces C tendrá mucho más sentido. Gracias y espero que esto ayude!

Python o Haskell. Bueno, en lo que a mí respecta, C no debe enseñarse a los principiantes. Es mejor comenzar con un paradigma funcional como Haskell u OOP como Python.
Por qué:
Desventajas de C:
1. Punteros y comprensión de la arquitectura subyacente.
2. Demasiadas incógnitas desconocidas.
3. Cualquier cosa que se compile, puede crear un gran problema para el profesor.
4. Demasiada manipulación sintáctica posible (recuerde que cuando a los niños se les entrega la pluma del lápiz, se les entrega una pluma estilográfica y no bolígrafos).
5. Dependencia del compilador muy alta.

Sospecho fuertemente que la respuesta real es que no importa. Los idiomas son en gran medida intercambiables, y la mayoría de los estudiantes no van a escribir códigos que sean lo suficientemente complicados donde los matices marcan una gran diferencia.

Mi propia experiencia, por lo que puedes adivinar los sesgos, es que me apoyé en BASIC y Logo cuando era niño en los años 80. En la universidad, nos empezaron con Pascal y nos trasladaron a C. Desde entonces, es probable que al menos haya incursionado en casi todo, solo para ver qué hay disponible, aunque no he echado un buen vistazo a la última raza de mí. toos (Rust, Go, Swift, etc.).

De enseñar C como lenguaje introductorio, sé que puedes suavizar mucho con “confía en mí, hazlo de esta manera”. Es lo mismo con cualquier código repetitivo. Puede hacer que los estudiantes se sientan cómodos usando punteros mucho antes de que sepan qué es un puntero.

Aquí está la lista de características que busco en un lenguaje introductorio, con comentarios sobre lo importante que es:

  • Estandarizado : el gran defecto de Pascal como lengua de enseñanza es que nadie estuvo de acuerdo con lo que debería ser Pascal. No hubo consistencia entre los compiladores en bastantes áreas importantes. Hoy en día, debido a que los instructores ya no controlan el entorno para sus estudiantes, esto significa elegir una versión de idioma (Ruby 2.1, Python 3, C99, etc.) y requerir que el código también pase a través de algunos comprobadores de sintaxis.
  • Debuggable : la mejor manera que he encontrado para que los alumnos resuelvan problemas es realizar un solo paso a través del código en un depurador para ver cómo cambian las variables. Estoy sorprendido de cuántos idiomas parecen descartar esta idea, hoy. Lo considero no negociable.
  • Comunidad : Debatable, dependiendo de su visión para la clase, pero creo que un estudiante debería poder obtener ayuda en la mitad de la noche durante un fin de semana. Esto implica que desea iniciarlos en un idioma donde muchos otros usuarios se congregan en foros centralizados. No, StackOverflow no lo va a cortar.
  • Interfaces orientadas al idioma : la gran falla en muchos de los idiomas modernos es que el diseño de la interfaz es perezoso. Aprendes el idioma. Luego, para aprender el subprocesamiento, necesita aprender acerca de los subprocesos POSIX. Para aprender sobre cómo escribir una GUI, necesita aprender sobre este kit de herramientas o eso. Para aprender sobre redes, necesitas aprender sockets BSD. Eso es algo aceptable, pero mejor sería si las llamadas de la biblioteca se ajustan al modelo del mundo del idioma, de modo que lo que se ha aprendido hasta ahora se transfiera.
  • Interfaz de usuario sólida : es difícil no encontrar un buen IDE en estos días, pero vale la pena decir que probablemente no vale la pena enseñar ningún idioma que aparezca donde no sabrá si algo está mal hasta que compile (o peor, ejecute) el código. Eso significa marcar tipos de datos no coincidentes y similares a medida que los escribe. (Los programadores experimentados pueden usar lenguajes que descartan este tipo de cosas, pero creo que los programadores más nuevos se benefician del rigor).

Voy a sugerir que, por extraño que parezca, C # podría ser la mejor apuesta, aquí. No puedo pensar en otro idioma que se ajuste a los criterios. C y Java no tienen comunidades reales de las que hablar. Los fundamentos visuales (incluido VB.NET) no tienen ningún estándar más allá de la implementación. Ruby, Python y JavaScript son irritantes para depurar. Y casi todos ellos, excepto Java (y C #), hacen de su trabajo unir el modelo del idioma con el de la biblioteca.

C # también tiene herramientas (gratuitas) como StyleCop y Gendarme (por no mencionar que MonoDevelop está disponible para estudiantes que no están en Windows) que llevan a los nuevos programadores a las mejores prácticas.

No es una gran respuesta. Si no está en Windows, las interfaces de la interfaz de usuario de GTK + en MonoDevelop son terribles y parecen ser poco confiables, especialmente en contraste con la combinación de una aplicación WPF. En los casos en que el tipo de datos sea obvio, el compilador insistirá en que intervenga y emita o convierta explícitamente el valor, lo cual es molesto. Los IDE son grandes asuntos.

También preferiría que un lenguaje como Ruby tuviera sentido, ya que realmente me gusta y creo que es fácil de aprender. O un lenguaje similar a LISP, ya que hay una consistencia y un rigor atractivos (y muchas buenas universidades utilizaron Scheme como su idioma introductorio durante mucho tiempo).

Pero creo que C # es la única opción que actualmente tiene una infraestructura que hace que sea fácil de enseñar.

“Lenguaje de programación C”.

Proporciona la base para la mayoría de los otros lenguajes de programación y también es un subconjunto de c ++ (aunque un cambio en la sintaxis).

tratar

“Programación c por balaguruswamy”

es el mejor libro para principiantes en programación en c,

Cubre todos los conceptos vitales y más predominantes en c y proporciona un ejemplo para cada explicación.

Escribo sobre programación y algoritmos, si me sigues no perderé tu tiempo.

La mayoría de la gente piensa que aprender lo más popular es el camino a seguir: PHP, C, Java

Otros piensan que aprender lo más fácil es la forma correcta: python, ruby, Visual Basic

Algunos otros piensan que aprender lo más poderoso es la forma correcta: Haskell, C ++

En mi opinión, deberías buscar aprender algo más genérico y menos detallado. Debes aprender tanto el nivel muy alto como el nivel muy bajo, y aprender algo que no proporciona una gratificación instantánea.

C y Pascal son un buen punto de partida: los idiomas son lo suficientemente simples como para que realmente puedas entender todo. Pascal también te da algo de disciplina y el hábito de escribir código legible. C te enseñará a no cometer errores tontos. Python también es agradable, pero es peligrosamente simple.

El ensamblador es un deber, sin saber lo que sucede en el nivel más bajo, solo será un programador semicompetente.

Entonces, la familia de lenguajes LISP es necesaria para estudiar al menos brevemente, para comprender los conceptos universales más fundamentales de computación, sin necesidad de revolcarse en detalles y sintaxis.

Para una persona sin experiencia en programación, creo que Scratch es el mejor lenguaje para enseñar programación. No es un lenguaje de programación convencional como C y C ++, pero enseña algunas construcciones de programación muy esenciales, como loops y condicionales, de una manera realmente divertida. Incluso hoy, pienso en términos de estas “piezas de rompecabezas” cada vez que escribo un código.
Puede verificarlo aquí:
Scratch – Imagina, Programa, Comparte
Después de que todos hayan tenido la sensación de programar con Scratch, estoy seguro de que cualquiera puede aprender cualquier lenguaje de programación fácilmente.

Lisp, obviamente!

Con toda seriedad, creo que hay muchas buenas opciones. Python es muy predecible, bastante legible y ampliamente utilizado para enseñar a los principiantes.

JavaScript también es una gran opción porque adivina qué! ¡Ya tienen el compilador instalado! Sin mencionar que es bastante fácil de aprender y se usa ampliamente para sitios web, juegos y más.

Elixir es un chico nuevo en el bloque, pero es por lejos la mejor manera de introducir la programación funcional si es lo tuyo (lo que es mío) y con la documentación de primera clase es fácil obtener ayuda cuando sea necesario, incluso sin conexión. Sin embargo, el proceso de instalación puede ser un poco más complicado.

Lisp también es excelente porque es fácil de entender cómo se analiza.

He trabajado en alrededor de 6 idiomas, por lo que recomendaría comenzar con el lenguaje “básico” o si está familiarizado con el microprocesador o el microcontrolador, puede usar el lenguaje “Ensamblaje”.
Una vez que haya terminado con él, puede optar por el lenguaje ‘C’. Cuando haya realizado las estructuras de datos en ‘C’, puede comenzar con C ++.
Si ha dominado C ++, otros idiomas son bastante fáciles de aprender.

C. Es lo suficientemente fácil como para involucrarse, y trabajar con él te enseñará muchas cosas que los idiomas de nivel superior no enseñan.

Esquema

Realmente no importa mucho. Personalmente, creo que fácil es una prioridad para los principiantes, para que no se asusten, por lo que me inclino a poner HTML, VB y Python en la mezcla, ya que Python es el más poderoso y generalmente el mejor de los tres. .

Bueno, puedes consultar este blog que explica qué piensan los fundadores y las empresas de los diferentes lenguajes de programación.

http://mbworks.blogspot.in/2014/…

C. Es bastante simple y una vez que lo aprendas, puedes aprender fácilmente otros nuevos lenguajes como c ++, java, etc. usando su sintaxis.