¿Qué piensas? ¿Cuál es la secuencia ideal de aprendizaje del lenguaje de programación que abarcará la mayoría de los lenguajes y paradigmas muy utilizados hoy en día, así como también ayudará a comprender conceptos básicos, ideas y prácticas comunes de programación? Incluso puede sugerir una secuencia de aprendizaje para paradigmas en lugar de idiomas.
NB: Este es el puerto de la pregunta que hice en stackoverflow y se cerró por ser subjetiva y argumentativa.
programming-languages
Gulshan
fuente
fuente
Respuestas:
Python, Lisp, C, Haskell
Suponiendo que la pregunta se tratara de una secuencia de aprendizaje ideal para los recién llegados a la programación (dado que los viejos en la programación habrán tenido su propia secuencia de aprendizaje (probablemente accidental)), sugeriría leer el ensayo de Norvig sobre cómo aprender a programar en 10 años , entonces:
Python : Comience con un lenguaje dinámico, de alto nivel, OO y funcional. Porque es muy importante para los principiantes sentirse productivos lo antes posible, y no ser desactivado por la sintaxis alienígena, la falta de bibliotecas, la falta de multiplataforma, la falta de recursos de aprendizaje y la falta de comunidad. Python es altamente legible, tiene toneladas de buenas bibliotecas (especialmente bibliotecas científicas, un científico / ingeniero moderno debe saber programar), se ejecuta fácilmente desde la mayoría de los sistemas operativos, tiene toneladas de tutoriales y libros gratuitos completos, y es generalmente fácil de usar - todo mientras sigue siendo lo suficientemente poderoso como para crecer contigo a medida que te conviertes en un programador avanzado que trabaja en grandes problemas. También es importante reforzar las convenciones importantes + útiles para un principiante: la legibilidad del código cuenta MUCHO, y usted debe escribir código para que usted y otros lo entiendan fácilmente.
Lisp: En particular, al menos lea la Estructura e Interpretación de los Programas de Computadora o mire los videos de SICP , y tenga los ojos muy abiertos al ver los fundamentos y el poder expresivo de la programación; uno puede hacer mucho con tan poco. Aprenda cómo Lisp puede expresar no solo el paradigma funcional, sino también OO, lógico / declarativo y más, como la creación de nuevos lenguajes específicos de dominio. Lea el PAIP de Norvig para ser testigo de lo que un maestro puede hacer con el idioma. Luego echa un vistazo a Clojure , un dialecto moderno de Lisp que podría ser una de las siguientes grandes cosas.
C: Solo porque es la lengua franca de la informática. :) Posiblemente opcional en estos días si uno es principalmente un programador en un dominio particular que no es de software. Me parece feo, pero vale la pena saberlo para apreciar el hardware subyacente. Ve con K&R , por supuesto.
Haskell : Puro poder funcional. Donde actual Com.Sci. La teoría y el poder expresivo práctico se encuentran. Ver el mundo real Haskell .
Después del recorrido anterior, uno sería muy experto en abordar problemas y expresar soluciones en código, y sentirse totalmente cómodo con los paradigmas aquí :
fuente
Así es como lo haría:
Python (o Ruby o Lua): un lenguaje interpretado, sin tipos, puedes hacer cosas en pocas líneas. Gran biblioteca (Python es lo mejor para esto, supongo). Puede profundizar en los algoritmos porque no hay distracciones. No es necesario compilar, solo corre. Además de eso, con Python implícitamente enseñas buen estilo, ya que la sangría en Python es obligatoria. También puedes enseñar Orientación de Objetos (en Lua es más un problema). El propósito aquí es divertirse mucho y mostrarle al estudiante lo que se puede hacer.
C ++ (o tal vez Java): un lenguaje mecanografiado y rápido. Si necesita Orientación a objetos, ya conoce algunos conceptos. La idea principal es "traducir" lo que hizo en Python y hacerlo con las nuevas restricciones (principalmente tipos). Ahora, si tiene los conceptos correctos, agregar tipos no es un problema. El siguiente paso es pensar en un nivel más bajo (Java no ayuda aquí) y enseñar bien los punteros . Con esto quiero decir explicar un poco sobre el espacio de direcciones, la CPU, el sistema operativo, para que pueda comenzar a ver debajo de su programa. Un lenguaje compilado introduce la distinción entre interpretación y compilación, muy útil para explicar qué es el lenguaje de máquina, etc.
Montaje : Finalmente, no es magia, solo hablas con la máquina. Existe un debate sobre la sintaxis de Intel y GAS, no es importante. Si tiene MIPS, creo que es mejor para enseñar, pero supongo que x86 es más conveniente ya que está más extendido (x86_64 mejor ya que tiene más registros y detalles). Solo tiene que eliminar parte de la complejidad y dejar que los estudiantes investiguen más si lo desean.
(Estos primeros 3 son la "profundidad". Hasta ahora, hemos estado bajando hasta que tocas el fondo, que está "cerca del metal", como dicen. Creo que esto es muy importante, muchas preguntas en programación son resuelto cuando tienes una idea clara de lo que está sucediendo. Cuando lo sabes, puedes adquirir más conocimiento con confianza).
Esquema (o Common Lisp o Clojure): como dijo @dukeofgaming, los lenguajes Lisp le permiten enseñar bien la recursión (para este esquema es mejor, ya que no tiene bucles explícitos). Pero iría y enseñaría otras dos cosas: cierres y macros. Las macros son lo que separa los lenguajes Lisp de los demás. Personalmente, no me gustan las macros de Scheme, pero esto no es demasiado importante. Creo que las macros de Clojure son agradables, por ejemplo (pero la recursividad en Clojure no es tan limpia, ya que la JVM no tiene recursión de cola). Los cierres son un concepto muy importante, una vez que los asimila, "ve" Javascript al instante. Después de estudiar C ++, Python y Lisp, Javascript se convierte en "trivial".
Haskell : Para un lenguaje funcional, no creo que puedas vencer a Haskell. Lisp y Scheme se consideran funcionales, pero para enfatizar la programación funcional, debe obligar a los estudiantes a pensar sin estado. Haskell también tiene otras cosas muy bonitas, como curry y coincidencia de patrones para "desestructuración". No conozco mucho a Haskell, pero la concisión del código que puedes escribir es simplemente hermosa. Conocer bien a Haskell facilita mucho el camino para entender a Erlang.
Adelante : un lenguaje de pila. Rompe totalmente tu lógica nuevamente (si Lisp y Haskell no fueron suficientes). Yo iría tan lejos como para enseñar Jones's Forth ya que conocen la asamblea y luego puedes entender totalmente lo que está sucediendo. (Conocer Forth abre PostScript, por ejemplo).
(Así que estos 3 últimos son la amplitud que estabas diciendo. Para mí, estos idiomas son lo suficientemente extraños como para cambiar tu forma de pensar. Al menos lo hicieron para mí. Y creo que con estos, entiendes suficientes paradigmas para aprender un nuevo idioma muy rápidamente.)
Opcionalmente, puede estudiar estos:
SmallTalk : un lenguaje puramente orientado a objetos. Para ver qué sucede cuando tomas en serio la Orientación a objetos, el lenguaje no necesita "if", "for". Todo es un mensaje: gran realización de nuevo. (Esto facilitaría Objective-C ahora).
Ir : Un lenguaje (hermoso) con énfasis en la concurrencia. Me parece que Go es muy agradable y cómodo para programar.
Prólogo : otro paradigma de programación. No he escrito ningún Prólogo pero entiendo que es otro lenguaje alucinante.
fuente
En serio, es posible que haya aprendido BASIC, COBOL, Fortran, Forth, Pascal y Prolog en mi tiempo, pero nunca he necesitado particularmente usarlos y realmente no puedo ver ninguna forma en que hayan influido en mi uso de otros idiomas, excepto quizás la aplicación incorrecta de paradigmas entre sí. Me llevó años desaprender BASIC lo suficiente como para realmente escribir Pascal estructurado, un par de años para dejar de escribir el código Pascal en C y otros dos años para asimilar la POO cuando comencé a usar Objective-C y Java. Por otro lado, como he estado trabajando (casi) exclusivamente en lenguajes OO, he podido concentrarme en mejorar mi uso de los lenguajes OO, sin tratar de hacer que se vean como Scheme o PostScript.
fuente
Es difícil afirmar que cualquier secuencia es ideal, pero presentaré un plan que pueda justificar:
C
Aprender C exige paciencia y diligencia, y le presentará las formas básicas en que las computadoras manejan los datos y le mostrará casi el conjunto más amplio de responsabilidades que un programador puede aceptar para manejar una máquina de este tipo.
Perl
Como antídoto para el rigor requerido por C, prueba el Perl increíblemente indulgente. Lo que tardó una semana en escribir en C se puede escribir en una hora en Perl. Introduce un tipo diferente de placer que se encuentra en la programación y muestra cómo excluir ciertas preocupaciones y detalles libera al programador para centrarse en diferentes cosas.
C ++ , o tal vez Java
A continuación, vea cómo el enfoque de C en los aspectos primitivos y de bajo nivel de la programación sirve como base para elevar el nivel de abstracción, señalando los intercambios que uno hace en eficiencia al avanzar en abstracción. Explore cómo formar abstracciones que aún puedan retener las eficiencias importantes para su programa.
Lisp común
Esta es la recompensa por el slog anterior. Encontrarás ecos de lo que aprendiste en todos los idiomas anteriores y verás lo tontas que parecen muchas de las concesiones anteriores al programar en Lisp. El preprocesador de C y las plantillas de C ++ preparan uno para apreciar el sistema macro de Lisp. Recuperará la facilidad de expresión de Perl, las oportunidades de optimización de bajo nivel de C, las capacidades de creación de abstracción de C ++ o Java, y las superará todas. Ninguno de los tres anteriores, tal vez excepto el depurador de Perl, lo habrá preparado para la experiencia de programación interactiva con un REPL capaz ("lectura, evaluación, ciclo de impresión"). Trabajando con una imagenbasado en el entorno, que cambia la relación entre su código fuente y la idea de un "programa ejecutable", cambiará toda su idea de lo que significa construir un programa.
Más allá de esos cuatro, explorar otros estilos de programación, como la programación funcional en Haskell o la programación lógica en Prolog, permite una comprensión más completa de la gama de programación (conocimiento amplio, por así decirlo), pero en ese momento su tiempo está mejor servido mejorando su oficio - conocimiento profundo - con cualquier idioma que conozca.
Después de haber probado suficientes idiomas distintos, su punto de vista se elevará para centrarse en las ideas que trascienden a cualquiera de ellos. Es algo así como la diferencia entre aprender a conducir el automóvil de su padre y saber cómo conducir cualquier automóvil: es posible que no disfrute tener que conducir la mini-van de alquiler durante unos días, sabiendo perfectamente los placeres de conducir un automóvil deportivo favorito, pero descubrirás cómo operarlo y seguramente sacarás más de la pobre bestia que un aficionado.
fuente
1. Smalltalk
Diseñado originalmente al menos en parte como una forma para que los niños usen computadoras para aprender. La sintaxis es lo suficientemente simple como para describirla en un párrafo. Al igual que LOGO, ejemplifica el principio de "barrera de entrada baja, techo alto".
Smalltalk es un lenguaje OO puro en el sentido de que "todo es un objeto".
También enseña muchas técnicas funcionales, particularmente en su API de recopilación: encadenamiento de mensajes, funciones de orden superior, asignación, reducción, etc.
La comunidad Squeak es vibrante y acogedora. También verá muchas discusiones sobre técnicas avanzadas: al igual que la comunidad lisp, hay muchos Smalltalkers con mucha experiencia en la lista de correo dispuestos a compartir sus conocimientos. (No hace daño que la comunidad Squeak tenga una gran subpoblación de educadores profesionales). También hay otra lista para principiantes.
2. PROLOG
Un lenguaje de programación lógica que le dará una visión muy diferente de la computación a casi cualquier otro lenguaje. Prolog también es altamente declarativo (pero no completamente: el
!
operador or cut puede tener un efecto semántico significativo en un predicado).3. Lisp común
Sustituya el esquema aquí si lo desea. Common Lisp es compatible con múltiples paradigmas, especialmente OO y funcional. También tiene una larga historia (Lisp es el segundo idioma más antiguo aún utilizado: solo el más antiguo de FORTRAN).
4. Haskell
(Advertencia: Acabo de empezar a aprenderlo). Probablemente el lenguaje funcional más puro del planeta. Tiene un sistema de tipo estático muy avanzado. Existen prácticos libros de introducción .
5. C o Delphi
Necesita saber cómo funcionan las computadoras. Necesita saber cómo funcionan realmente la memoria y la CPU. Ambos son tradicionalmente "cercanos al metal" y tienen comunidades que alientan a pensar en cómo se compila su lenguaje para la asamblea.
¿Por qué esta orden?
Smalltalk es muy fácil de aprender, por lo que puede comenzar a concentrarse rápidamente en resolver problemas en lugar de luchar contra un compilador ("barrera de entrada baja"). Una vez que comience a programar, tampoco hay un límite artificial sobre lo que puede hacer: "techo alto".
Una vez que tenga una idea justa de cómo funciona OO (y, con la condición de que haya MUCHAS interpretaciones diferentes de lo que significa "OO", es justo decir que OO domina el mercado), pasar a Prolog asegura que no comience pensando que OO es la única forma. Prolog es muy diferente a la mayoría de los idiomas y estirará sus músculos mentales para que no empiece a pensar que lo sabe todo.
Common Lisp, a su vez, es el lenguaje de un adulto. Tiene un estándar maduro, ha sido líder en diseño de idiomas durante décadas (junto con Smalltalk): ¿todas esas nuevas y elegantes características que acaba de adquirir su idioma favorito? Las posibilidades son las ideas incubadas en Lisp o Smalltalk. Common Lisp también es un poco vergonzoso, y encontrarás verrugas donde quiera que vayas.
Haskell es el cuarto en la lista porque (me dicen: recién comencé a aprenderlo) su pureza significa que algunas cosas muy comunes (como E / S) son más difíciles de hacer que en lenguajes menos puramente funcionales. La gente de Haskell también usa algunas terminologías bastante exóticas (palabras como "catamorfismo", por ejemplo), y probablemente estaría mejor con algo de experiencia en programación en su haber antes de abordarlo. (Pero debo repetir, ¡acabo de empezar a aprenderlo! ¡Toma esta opinión con una pizca de sal!)
¿Y por qué C / Delphi duran? Porque a menos que trabaje en sistemas embebidos, realmente no debería tener que aprender programación pensando que la gestión manual de la memoria es todo lo que hay. La recolección de basura funcionó lo suficientemente bien como para una máquina de nivel 1980. ¡Tu teléfono es tan poderoso!
Finalmente, no he puesto a Erlang en la lista anterior, aunque realmente debería hacerlo.
fuente
Pitón. Una excelente introducción a la programación. Esto también se vinculará con cualquier exposición previa a la programación.
Esquema. También una excelente introducción a la programación. Si se trata de principiantes de programación, es posible que desee enseñar esto primero y Python segundo. Una alternativa sería Python primero y luego Common Lisp en lugar de Scheme: más trabajo, pero más recompensa.
C. Un lenguaje de bajo nivel que se mantiene cerca del silicio. Bueno para aprender lo que puede hacer una computadora. Podría sustituir alguna forma de lenguaje ensamblador, pero C está bastante cerca de lo básico y es mucho más fácil trabajar con él.
Prólogo. Alternativamente, sustituya cualquier lenguaje de propósito general de estilo declarativo, si puede encontrar uno que le guste más.
Haskell Para el sistema de tipos y la funcionalidad pura, si nada más.
Aquí hay varios candidatos, ya que es imposible cubrir todos los conceptos con seis idiomas. Vale la pena aprender Common Lisp, aunque solo sea para el sistema macro y el sistema de objetos (que es diferente de la mayoría de los otros que he visto). Forth, Tcl y APL son idiomas extraños que han tenido cierto éxito, y uno de esos sería bueno para evitar que el estudiante sienta que lo ha aprendido todo. Erlang sería bueno para la concurrencia.
fuente
Se han proporcionado muchas buenas respuestas, pero no vi a nadie ofreciendo SQL. Es un animal completamente diferente a la mayoría de los demás enumerados y muy importante para cualquier programador que tenga que lidiar con bases de datos.
También es posible que desee considerar algunos 'lenguajes' de scripting a nivel del sistema operativo, como Batch, grep, awk, etc. 'Make' también puede caer en esta categoría.
Otro idioma que puede considerar (si aún no está completamente muerto) es COBOL. Es lo suficientemente diferente de otros lenguajes de procedimiento que merece alguna mención. Las variaciones de C, Fortran, Basic, etc. se han vuelto tan similares que una vez que está familiarizado con una, mudarse a otra no es un gran problema, pero COBOL carece de muchas de las construcciones dadas por sentado en las demás. (Han pasado al menos 20 años desde que hice algo con COBOL, por lo que es posible que mis observaciones ya no sean válidas con respecto a este idioma).
Es posible que desee mencionar APL solo desde un punto de vista histórico, o dejar que descanse en paz. Tu elección.
fuente
Sugeriría primero leer a Eric Raymonds "Cómo convertirse en un hacker" ya que tiene algunos puntos muy interesantes sobre cómo comenzar, incluido Lisp, que tiene la noción de "código es datos y datos es código".
Para la programación, también sugeriría Haskell, Prolog, SQL y lenguaje ensamblador (solo algunos).
Independientemente de lo que desee aprender, tómese el tiempo para aprenderlo correctamente y escribir cantidades de código no triviales. Es muy parecido a andar en bicicleta: no se puede aprender de un libro.
fuente
Primero> ¿Qué quieres hacer cuando comienzas a programar? Aprender a ser un programador de juegos es diferente de aprender a ser un programador de bases de datos para una empresa ... es diferente a un programador basado en la web ...
Segundo> Una vez que comienzas a aprender, ¿quieres comenzar alto y avanzar hacia abajo? O comienza bajo y sube de nivel. El aprendizaje de C # (nivel alto) es muy diferente al aprendizaje de ensamblaje (nivel bajo).
Una gran elección dependerá de lo que quieras hacer. La programación de un controlador probablemente incluirá C o Ensamblaje ... La programación de un sitio web será PHP, C #, asp, etc. No tocará el ensamblaje para la programación web ... etc.
En cuanto a lo básico ... una vez que decidas QUÉ quieres hacer, es más fácil elegir un idioma. Yo, por ejemplo, me he convertido en analista de datos en un hospital. Entonces, mi "elección" de lenguajes es SQL / TSQL / DB2 para acceso a datos, C # WPF para clientes Windows, Silverlight para clientes web, algunos RPG / CL para lógica de back-end de IBM ...
Personalmente me quedo con un buen libro + construyo tu propio programa para practicar el idioma. Me gusta APress y me encantó leer C # 2008 Ilustrado cuando aprendí C #. Tienen otros libros que abarcan conceptos básicos para los no aprendidos, así como para los expertos.
fuente
Un principiante solo necesita un idioma para comenzar, después de aprender el segundo idioma, ya están progresando más allá de muchos desarrolladores competidores. Aprendería en el siguiente orden:
Puedes preguntar "¿dónde está C ++?" y que hay de X? Honestamente, aprender varios idiomas hace un par de cosas: enriquece tu experiencia y proporciona un impulso para aprender más idiomas. La lista de lenguajes que conozco bien (Java, C #, Ruby, C ++, Javascript) están orientados a objetos, pero eso es principalmente porque eso es lo que tengo que hacer en el trabajo todos los días. La lista de idiomas a los que he estado expuesto (Smalltalk, Python, Erlang, JESS, C, Assembly [Motorola 6502/6510], Go) me ha enseñado valiosas lecciones. Al menos puedo entender lo que está sucediendo con esos idiomas. Hay muchas cosas que no he explorado, pero que muy bien pueden en el futuro. También hay algunos lenguajes de marcado: HTML, XSL: FO, XSLT, CSS, XML, SGML a los que las personas necesitan exposición si van a trabajar con la web de alguna manera.
Después de aprender al menos dos idiomas diferentes, realmente no creo que deba restringir lo que alguien que desea aprender decide retomar a continuación. El aprendizaje debe ser una experiencia orgánica, y demasiada estructura en el proceso crea un grupo de personas que piensan exactamente de la misma manera. Un monocultivo por así decirlo.
fuente
La mayoría de estas respuestas parecen más o menos las mismas, así que voy a ofrecer una opinión diferente. Durante mucho tiempo he creído que el mejor primer idioma es Tcl.
¿Por qué? Por un lado, es muy fácil de aprender. El lenguaje no tiene mucha sintaxis, por lo que el alumno puede centrarse más en los conceptos de programación y menos en las peculiaridades sintácticas de un lenguaje en particular. Al momento de escribir este artículo, Tcl tiene exactamente 12 reglas que gobiernan todo el idioma (en lugar de once en las últimas dos décadas).
Por otro lado, Tcl viene con un fantástico lenguaje GUI incorporado, por lo que puede obtener una satisfacción relativamente instantánea y puede aprender los conceptos básicos de la programación basada en eventos.
Tercero, es extensible. ¿Quieres enseñar sobre un ciclo de repetición? Puede escribir un comando que haga un ciclo de repetición para que no solo pueda aprender a usar la repetición ... hasta que pueda aprender cómo es diferente de un ciclo while porque en realidad lo escribió usted mismo.
Además, debido a que es extensible, hay una fácil transición hacia C. Puede aprender los conceptos básicos de C y aprender a a) extender Tcl con nuevos comandos escritos en otro idioma, o b) aprender cómo agregar un lenguaje de secuencias de comandos a un programa escrito en C.
Una vez que haya aprendido Tcl y C, la mayoría de los otros idiomas se encuentran en algún punto entre esos dos extremos y deberían ser relativamente fáciles de aprender. Mi lista completa, con las cuatro que enseñaría después de Tcl y C son:
fuente
Lenguaje ensamblador, C, SQL, C #
Lo sé, aburrido y viejo. Y toda la pregunta ignora la parte realmente difícil de la programación, que es la resolución de problemas, el modelado de dominios y la construcción de algoritmos. Pero he aquí por qué:
no puedes fingir a través del lenguaje ensamblador; o lo entiendes o no. el compilador no lo salvará, no hay marco ni sobrecarga de la biblioteca, y no puede esconderse de la arquitectura de la máquina; es pura programación (en el nivel principiante de agregar dos números)
después de haber escrito algunos programas en lenguaje ensamblador de más de unos cientos de líneas, los punteros y la administración de memoria ya no son misteriosos, y debería haber comenzado a notar patrones en el código (if, switch, array, loops, etc. ) C saca esos patrones a la luz del sol y los deja brillar. La biblioteca estándar es útil sin ser inmensa, pero no te molestes con macros / templates / etc. En este punto.
ahora salte a las bases de datos con SQL. No se exceda con los procedimientos almacenados, solo obtenga los conceptos básicos de las tablas y consultas.
después de haber escrito algunos programas en C de más de unos cientos de líneas, los punteros, las estructuras y la administración de la memoria son una segunda naturaleza, y las construcciones de procedimientos son viejos amigos. Comenzará a notar patrones de orden superior: estas funciones siempre van con esta estructura de datos, esta parte del código es igual que esa parte del código, excepto los métodos X, Y y Z, y así sucesivamente. Agregue a esto su comprensión de los datos relacionales y ahora está listo para un lenguaje orientado a objetos. Con un marco masivo y documentación generalmente obtusa. ¡Bienvenido al mundo real! Explore las GUI, escriba aplicaciones de escritorio, escriba sitios web, escriba servicios web, escriba lo que quiera. Ve a buscar un trabajo si te apetece.
¿Eres ahora un Jedi de programación? ¿Un código ninja? No , ahora eres simplemente competente. Pero tiene una base sólida para explorar las nuevas y divertidas cosas brillantes.
fuente
Necesitas fundamentos:
Después de eso, probablemente no importe.
fuente
OK, este es el último día para recompensas. Y estoy agregando mi respuesta. Mi secuencia sugerida
C, C ++, JAVA / C #, Python / Ruby, cualquier otro lenguaje (Assembly / Lisp / Prolog, etc.)
fuente
Esquema, C, C ++
Seré parcial y usaré el modelo que mi universidad usa actualmente para su plan de estudios de informática. Estuve en contra durante mi primer año, pero en mis últimos años estoy agradecido por ello. El modelo se basa en no requerir ninguna experiencia de programación, sino que requiere la capacidad de aprender.
Esquema
Somos usted primero está aprendiendo programación, cuanto menos magia, mejor. El lenguaje de enseñanza de Scheme presenta una definición clara y razonable de un lenguaje, un conjunto muy pequeño de axiomas (la "magia") que puede construir y ampliar. Cualquiera que pueda entender las funciones en matemáticas puede rastrear y razonar los programas de Scheme. Comenzar con Scheme proporciona una forma limpia pero poderosa de pensar en la computación sin preocuparse por los detalles específicos del idioma.
C
Pasar de Scheme a C es drástico, pero le permite aprender sobre el mapeo muy importante de lenguajes de alto nivel a lenguajes de bajo nivel. Aprender el modelo de memoria (punteros, montón, pila, etc.) y cómo se compilan y ejecutan los programas, cómo funcionan los punteros, el montón y el montón son habilidades esenciales. A través de esta comprensión de bajo nivel, puede comenzar a analizar programas en un nivel superior (Big O). Puede comenzar a rodar sus propios tipos de datos abstractos, jugando con diferentes implementaciones (por ejemplo, una tabla hash simple frente a un árbol binario para un conjunto).
C ++
Al aprender C y Scheme comenzamos a ver diferentes paradigmas de lenguajes de programación y cómo pueden aplicarse a diferentes problemas. Ahora puede abordar los aspectos más aterradores de la programación: elección y compensaciones. La elección del lenguaje de programación puede afectar el rendimiento, la legibilidad, el mantenimiento, la solidez, etc. C ++ intenta hacer la menor cantidad posible de elecciones para el programador. Al aprender C ++, aprenderá cómo hacer estas compensaciones y elecciones usted mismo para resolver sus problemas.
Es posible que no use ninguno de estos idiomas en la industria ni que los vuelva a tocar, pero el proceso de aprenderlos lo ayuda a comprender otros idiomas que usará. Otro aspecto es que aprende las herramientas en torno a un idioma específico. Ejecutar gcc a través de la línea de comando, aprender Vim, recorrer un programa usando GDB, crear archivos Make, ingresar código usando SVN, escribir scripts de shell para automatizar las pruebas, etc.
Eso sí, el plan de estudios básico también tiene otros cursos (arquitectura de computadoras, estructuras de datos y algoritmos, compiladores, sistemas operativos, etc.). Por lo tanto, simplemente aprender estos idiomas no es suficiente para dominar la programación.
fuente
Pasar de un idioma básico a uno de alto nivel es el camino a seguir. De esa manera todavía tienes una idea de lo que está sucediendo en la parte de atrás.
fuente
Pitón. Para hacer las cosas, haga una programación ordinaria. De procedimiento, OO y (hasta cierto punto) funcional.
Expresiones regulares. Están en la biblioteca de Python, pero es un DSL separado.
Shell (BASH o lo que sea). El "&", "|", ";" Los operadores para combinar procesos son críticos y desagradables en Python.
SQL Esta es, por ahora, la lengua franca para el acceso a datos.
XHTML. Esta es, por ahora, la lengua franca para la presentación de datos.
CSS
Tal vez C si fuera necesario.
fuente
Comience cerca del metal:
Ahora el problema con un enfoque tan amplio es que nadie puede llegar a ser ni remotamente capaz en estos idiomas sin años de estudio.
A menos que su intención sea enseñarles "Hola mundo", lo que debería tomar alrededor de un mes para los 6.
fuente
¿Por qué no ir directamente y aprender VB o C #? En mi opinión, ambos son idiomas completos que van desde principiantes hasta avanzados, en mi humilde opinión.
fuente