2009-11-19 9 views
10

Estaba leyendo The Pragmatic Programmer anoche y recomienda aprender una gran cantidad de idiomas a medida que avanza en su carrera, incluso si nunca los usará. Siempre pensé que sería una buena idea, pero el libro me dio suficiente ímpetu para pensarlo seriamente.¿Qué es un buen lenguaje de programación para aprender a ampliar la mente de los desarrolladores de C#?

También menciona (palabras sobre el efecto de) "aprender diseño orientado a objetos y codificará programas C puros de forma diferente".

Podría ir y (re) aprender Java, pero parece ser una opción fácil dado que es un lenguaje que sigue muchos de los mismos principios que C#. Probablemente todavía (re) aprenderé Java en algún momento, pero estoy bastante interesado, ante todo, en qué idiomas serían lo suficientemente diferentes en su patrón de pensamiento que aprendería una perspectiva diferente, o simplemente una manera completamente diferente de pensar. acerca de cómo codificar un programa.

¿Programación funcional quizás? Cualquier sugerencia es bienvenida, pero intente proporcionar un breve razonamiento sobre por qué podrían ser interesantes y "nuevas" desde la perspectiva de un usuario de C#.

+1

Ver también http://stackoverflow.com/questions/362226/whats-your-next-programming-language-and-why –

+0

Definitivamente XSLT. :) –

Respuesta

19

funcional paradigma - Esquema, Haskell, Erlang, F #

Scripting - Perl, Python, Ruby

También uno de los APL variantes como J, K o Q

Dare menciono C? Mucha gente que está aprendiendo programación en la actualidad tiene muy poca exposición al metal y C le ayuda a ver la luz.

+2

¡Oh! Así que * ese es * por qué F # parece tan jodidamente extraño para mí. No me di cuenta de que era otro de los tipos funcionales;) – mpen

+0

¡No te olvides de lua! – RCIX

+0

Tenga en cuenta que F # es un lenguaje multi-paradigma. Yo recomendaría algunos Haskell básicos primero antes de aprender F # - o de lo contrario podrías terminar aprendiendo la sintaxis pero sin aprender realmente a pensar en términos de función. – FinnNk

5

Trate de aprender otro paradigma.

Sugeriría Lisp para programación funcional por razones históricas o Erlang para un lenguaje más "comercial", y Prolog para programación declarativa (a.k.a.).

Te dará una forma diferente de ver las cosas. Hay muchos programadores que siguen sorprendidos por las posibilidades de programación funcional (capacidad de probar una función correcta, fácil integración paralela sin efectos secundarios, etc.) así como las posibilidades de programación declarativa para ciertas tareas que ahora están bien adaptadas para la programación imperativa (reconocimiento de patrones, por ejemplo, o sistemas basados ​​en reglas)

15

Sugiero aprender F #. Ya está familiarizado con .NET Framework para que no tenga que lidiar con él. Puede enfocarse en el idioma y aprender ideas de programación funcional.

Es muy probable que, si cambia de nuevo a C#, se verá haciendo muchas cosas en estilo funcional y será más productivo en ese idioma también.

6

F # es una buena opción. Pero también, lenguajes dinámicos, como quizás Javascript. También, menos cosas centradas en C como Lisp o XSL.

Hazte muy bueno con ellas.

3

Probar C. Es bueno aprender a manejar los punteros y la administración manual de la memoria, especialmente si proviene de un mundo "administrado por memoria" como .NET o Java. Esto le dará una gran perspectiva de "cómo funcionan las cosas" internamente dentro de un programa de software.

O podría hacer como yo: soy un programador C# pero en mi tiempo libre escribo código en ensamblador Z80. De todos modos, esto es quizás demasiado extraño.:-)

3

No lo he intentado todavía, pero F # parece ser un buen lenguaje para aprender. Es funcional pero permite un estilo imperativo también. También aprovecha el .NET framework y las bibliotecas, por lo que gran parte de su conocimiento existente puede ser reutilizado. Tal vez debería probarlo yo mismo pronto ...

7

La programación funcional, sin duda. Un nuevo paradigma le permite ver su conocimiento y experiencia existentes bajo una nueva luz, algo que otro lenguaje imperativo nunca puede hacer en tal medida.

Si quieres mantenerte en .NET, prueba F #. Para algo completamente nuevo, recomendaría Haskell; hay una gran cantidad de información para principiantes, y la comunidad es maravillosa e increíblemente útil.

0

C# /. Net o Java no importa mucho, los conceptos básicos son idénticos, incluso si hay algunas características (algunas solo magia del compilador, algunas más profundas como las genéricas) que son diferentes.

Acostúmbrese a la programación funcional, a los lenguajes especializados tales como XSLT, XQuery, T-SQL, PL/SQL, OCL, etc. para enfrentarse con más conceptos y enfoques diferentes. Los dialectrs de SQL, por ejemplo, requieren que piense que se establece operaciones basadas en obtener un código eficiente. Las transformaciones XSL están trabajando en datos estructurados. Ninguna herramienta cumple todos los requisitos.

12

¿Puedo sugerir que eche un vistazo a la caja de desarrollo y observe otros aspectos del software?

La mayoría de los programadores evitan el aprendizaje y el tratamiento de la psicología del usuario y la usabilidad a toda costa. La mayoría ignora todo lo relacionado con el diseño gráfico, lo cual es una lástima.

Desde que me interesé por la interfaz de usuario y el diseño gráfico, me pareció una revelación. Simplemente no puedes mirar el software que creas con los mismos ojos. Empiezas a pensar en un nivel diferente.

3

Estallar la cabeza es una forma de ampliar su mente, ¿verdad? Si es así, prueba Objective-C.

+1

jajaja, cierto sin embargo. – RCIX

5

Cualquier lenguaje funcional para el modo de pensar - está recableando su cerebro para ser capaz de pensar diferente sobre el mismo problema, lo que a menudo hace que la solución sea más fácil.

Ensamblador para entender los gigantes que estamos soportando.

2

¡me pregunto que nadie lo ha dicho ya, C++/c! esto le enseñará los conceptos básicos subyacentes de las cosas que usa todos los días.

+0

Destacaría C sobre C++. Su simplicidad limpia le enseñará la mayor parte de lo que vale la pena aprender. Trabajar en K & R es una experiencia iluminadora. –

0

Si estuviera tomando el tiempo que está tomando: La capacidad de escribir en ensamblador o D bien es lo que tomaría después.

Si yo fuera usted hace años, y en retrospectiva: plantillas C++ en profundidad, aunque no es estrictamente un 'idioma', es suficiente decir que ha sido el lenguaje más revolucionario al cambiar mi perspectiva de programación. Comience con el diseño moderno de C++ de Alexandrescu, luego cree varios programas con sus nuevos conocimientos, o intente mejorar las bibliotecas clásicas existentes, para empezar. Hay mucho para aprender

0
  1. funcional Idioma - Esquema, Haskell
  2. dinámico lenguaje - Ruby, Python
  3. prototipo basado oop Idioma - Javascript
  4. lógica lenguaje de programación - Prolog
+0

.... Y sí, si tienes en cuenta varios subprocesos, entonces Erlang también – Tinku

Cuestiones relacionadas