Un programador debe concentrarse en al menos cuántos idiomas? [cerrado]

21

Para mí soy C # y persona Java. Creo que estos 2 idiomas son bastante similares, por lo que es más fácil para mí cruzarme. No estoy seguro de si es una buena idea elegir otros idiomas diferentes. ¿Alguna idea?

Amigo digital
fuente
¿Está preguntando porque los procesos de contratación buscan palabras clave en los currículums?
Brian
@ 0A0D no en realidad, fue por interés personal. Soy un programador también :)
Digital Dude

Respuestas:

43

Se me ocurren al menos cinco razones para aprender un idioma, y ​​parece que eventualmente deberías aprender una para cada una de ellas.

  1. Un idioma para obtener su primer trabajo: probablemente Java / C # / C ++
  2. Un idioma para hacer las cosas: probablemente Bash / Perl / Python / Ruby
  3. Un idioma para cambiar de opinión: probablemente Haskell / Clojure / Scala / F #
  4. Un idioma por razones específicas del dominio: probable JavaScript / Objetivo C
  5. Un idioma para ensuciarse las manos: probablemente C / Asamblea
Eric Wilson
fuente
17
¿Qué idioma los gobierna a todos?
Tester101
44
La asamblea los gobierna a todos. Es por eso que aparece en último lugar. Deja lo mejor para el final.
WernerCD
99
Tester101: Inglés? ; o)
John Fisher
66
Por supuesto, no debería sorprendernos que el idioma para obtener su primer trabajo no sea el idioma que utiliza para hacer las cosas.
44
... y en la oscuridad, ¡átalos!
tchrist
53

No se trata de cuántos idiomas aprendes. Se trata de aprender nuevos conceptos. Algunos idiomas pueden enseñarle muchos conceptos, mientras que otros pueden enseñar solo uno.

Si conoces C #, probablemente no aprenderías nada terriblemente nuevo al aprender Java. Pero lo harías si supieras Haskell.

Entonces, cuando elija un nuevo idioma para aprender, elija algo que le enseñe conceptos que aún no conoce.

Frank Shearar
fuente
23
+1 "No vale la pena conocer un lenguaje que no afecta la forma en que piensas acerca de la programación" -Alan Perlis
Inaimathi
20
@Inaimathi: a menos que sepa que ayuda a pagar las cuentas.
Kramii reinstala a Monica el
55
Solo una nota: le sugerí a Haskell sin más razón que ser radicalmente diferente a C #. ¡El tramposo que usa asbesto en mí quería decir "aprende Smalltalk para que puedas aprender OO"!
Frank Shearar
10
@ Digital Dude: el hecho de que sea difícil es algo importante. Ese dolor detrás de la frente NO es algo malo, es una señal de que su cerebro está creciendo. Si solo quieres seguir aprendiendo lo mismo una y otra vez, aprende Java, luego C #, luego Ruby, luego C ++ (¡guau, no hay recolector de basura - da miedo!), Luego C (no hay clases - ¡da miedo!), Entonces quizás enloquece y prueba Objective-C! (Ooooh, hace dos días no podía deletrear Mac y ahora puedo programar uno.) Mi punto: si quieres aprender algo NUEVO, tienes que hacer algo DIFERENTE. Seguir el mismo camino solo te lleva al mismo lugar.
Bob Jarvis - Restablece a Monica el
44
@Kramii @Inaimathi Aha, pero un lenguaje que lo ayuda a pagar las facturas afecta la forma en que piensa acerca de la programación
desde el
22

Yo diría que lo más importante es la capacidad de aprender rápido. Dicho esto, es importante conocer diferentes idiomas que se utilizan para diferentes propósitos. Por ejemplo, yo sé:

1) Python y Perl para la categoría de lenguajes de script

2) C ++ como lenguaje "framework"

3) Java para aplicaciones móviles

4) C para la gran cantidad de código heredado

5) Algunos idiomas obsoletos que solía conocer cuando era joven (Basic, Pascal, Clipper, etc.)

Yo diría que necesita al menos un idioma principal y uno de secuencias de comandos. Conociendo C #, diría que debes aprender Python o Perl o Ruby a continuación. (Me gustaría ir con Python, pero eso es solo una cuestión de preferencia).

Emiliano
fuente
1
También estoy de acuerdo con uno que. Un programador que conoce un idioma debe al menos necesitar aprender uno de los lenguajes de secuencias de comandos para trabajar con él. Siento que es muy importante + útil cuando quieres hacer algunas pruebas. especialmente desarrollo de juegos, etc. Supongo que elegiré Python como mi idioma adicional :)
Digital Dude
2
karma para la capacidad de aprender rápido
Ayush Goyal
Además de un lenguaje de script, a veces conocer un lenguaje de script de shell también puede ser de gran ayuda. Ciertas tareas comunes en el sistema son más fáciles de resolver en un lenguaje de shell que incluso en un lenguaje de script como Python.
CodexArcanum
saber que C # es diferente a ser un experto en ese idioma
Brian
1
Pascal es apenas un lenguaje obsoleto; Hay un montón de cosas que se están desarrollando en Delphi en estos días.
Mason Wheeler
8

Es bueno aprender un nuevo lenguaje de programación cada año. Pero en lugar de aprender algo similar a lo que ya sabe, le aconsejaré que aprenda algo radicalmente diferente como Scala o F #. Le mostrará nuevas formas de hacer cosas y, finalmente, enriquecerá sus habilidades de programación.

Paweł Dyda
fuente
¡Gracias! Sé un poco de aquí y allá, pero me di cuenta de que realmente no puedo dominar un idioma por completo. Siempre hay cosas nuevas que suceden ..: /
Digital Dude
2
@Digital No es necesario que domines todos los idiomas. Debe estar familiarizado con los conceptos, de modo que si surge un problema que sería mejor atendido por un idioma, puede tomar esa decisión. También puede exponerlo a conceptos que puede usar en sus idiomas principales.
KeithB
8

Debes concentrarte en los idiomas que necesitas y usar para lo que estás haciendo . Aprender un idioma realmente viene de la práctica, por lo que obtienes el beneficio de ese idioma cuando lo practicas. Si va a aprender un nuevo idioma en su tiempo libre, hágalo implementándolo en tareas de complejidad creciente, de modo que realmente pueda manejarlo.


fuente
7

concentrarse en ninguno. centrarse en aprender y escribir código limpio; claro, expresivo, simple y, lo más importante, no duplicado.

vaya a los principios de ese tipo de programación, los conceptos básicos (por ejemplo, encapsulación para OOP; qué significa y qué implica) y aprenda algunos principios

Esto facilitará su trabajo. Esto incluso facilitará las personas que trabajan con usted o después de usted.

sí, también debes conocer la sintaxis bastante bien. pero eso no es algo que te lleve mucho tiempo

y ya, también debes entender bastante bien las tecnologías que usas. pero se pueden priorizar según el nivel de complejidad que requiera su empresa.

los dos últimos no son de un enfoque principal, sino de algún enfoque

Belun
fuente
sí, recientemente tomé C # essential, que es un libro muy bueno para leer y descubrí muchas cosas que nunca he sabido realmente cómo usar. También se recomienda el otro libro C # en profundidad que escuché. Hay tantos para aprender ... es por eso que comencé esta publicación sobre tener que concentrar algunos idiomas.
Dude digital
priorizar de acuerdo a su propósito. ¿Quieres hacerte el trabajo más fácil? ¿Estás contento con dónde estás y qué haces? ir para código limpio. si quiere trabajar en otra compañía que usa otra tecnología, aprenda eso. si quieres cambiar la tecnología solo por la diversidad, hazlo. elige tu objetivo y actúa en consecuencia
Belun
6

Un programador debe concantrar en la programación, no en un lenguaje específico.

Ahmet Kakıcı
fuente
6

Tantos como sea necesario para hacer tu trabajo.

Pero C # y Java están tan cerca como el inglés del Reino Unido y el inglés de los Estados Unidos. Puede aprender algo nuevo yendo a finlandés o navajo.


fuente
1
o! Xóõ: en.wikipedia.org/wiki/Taa_language (el idioma africano de "clic").
Jared Updike
jeje, después de que mencionas sobre finlandés o navajo. Creo que iré por el idioma japonés para mi cuarto lugar ... suficiente de programación ...
Digital Dude
1
@Jared, creo que un lenguaje que REQUIERE cortar y pegar solo para decir su nombre, puede fomentar hábitos indeseables desde el principio ...
5

No creo que pueda dominar necesariamente un idioma sin tener suficiente comprensión de otros idiomas para ver ese idioma "desde afuera" por así decirlo. Cada idioma diferente aporta algo más a la mesa y los conceptos que aportan son cosas que puede llevar a los idiomas principales con los que trabaja.

Por lo tanto, el tiempo dedicado a aprender a usar otros idiomas nunca se desperdicia, incluso si no planea usarlos comercialmente.

El viejo adagio es aprender un idioma todos los años y sin duda diría que durante los primeros diez años más o menos debes hacerlo. Tal vez más allá de eso, podría elegir entre explorar algunos de los que ya conoce con mayor profundidad (tal vez actualizar su conocimiento de los que aprendió hace unos años) o trabajar con bibliotecas particulares en lugar de simplemente acumular nuevos idiomas sin cesar, pero vigilar explorar la práctica de la programación a través del trabajo con diferentes lenguajes es sin duda una ayuda para su desarrollo como programador.

glenatron
fuente
Después de un punto, también puede pasar algún tiempo usando conceptos aprendidos en un idioma en otro. Por ejemplo, después de aprender la programación funcional usando Haskell, puede intentar ver qué conceptos de programación funcional podría usar en C #. No querrá escribir un programa de funciones completo en C #, pero las secciones del mismo pueden tener más sentido de esa manera.
KeithB
3

Los lenguajes de programación populares como C # y Java lo mantendrán remunerado en la mayoría de los lugares, pero ninguno de los dos es lo suficientemente diferente el uno del otro como para aprender nuevas formas de resolver problemas. Creo que hay algunos idiomas con los que comes (los que usas para hacer tu trabajo), y otros con los que juegas. Ambos tienen sus propósitos.

Descubrí que al aprender nuevos lenguajes de programación, también aprendí formas nuevas y más elegantes de resolver problemas. No se trata de la cantidad de idiomas o de la frecuencia con la que los recoge. Cada lenguaje de programación que vale la pena aprender tiene un punto de vista único, que lo obliga a abordar sus problemas con una nueva mentalidad. Muchas veces el valor proviene de aprender esa mentalidad.

Jugué con Smalltalk y me encantó. Fue un placer desarrollar el lenguaje. Una vez que te acostumbraste a los modismos, te ayudaron a ser más expresivo con tu código. No me perdí la escritura estática que tienes en Java / C ++ / C # en absoluto. Los genéricos con los que vivimos en nuestros lenguajes de escritura estática son realmente construcciones para evitar las limitaciones que impone la escritura estática.

Uso Ruby y Ruby on Rails regularmente, aunque no para trabajos remunerados en este momento. El principio de diseño de Ruby era "aumentar la felicidad del programador". Tienes que amar ese sentimiento y, en su mayor parte, creo que cumple.

Finalmente, Java seguirá el camino de lisp y Smalltalk, y C # seguirá su ejemplo. Lo que estará allí para tomar su lugar está por verse. Al final del día, si sabe cómo resolver problemas y tiene varias formas de cortar y cortar el problema, podrá encontrar un trabajo y aprender el idioma que necesite.

Berin Loritsch
fuente
2

Cuando se trata de mantener las habilidades actualizadas y flexibles, creo que debería intentar aprender al menos un lenguaje de programación completamente nuevo cada 6 meses más o menos. Y me refiero a un lenguaje que es muy, muy diferente.

Por lo tanto, mientras aprende más del marco .net mientras usa C # o los marcos de Java ayuda a mantener la flexibilidad, aprender Haskell, Smalltalk, Scala, Clojure o Ruby ampliará su técnica y lo ayudará a pensar de diferentes maneras, algunas de las cuales puede tomar de manera útil volver a su idioma principal, y algunos de los cuales pueden ayudarlo a seguir adelante si Java deja de ser el rey de la colina.

Si nunca has aprendido C, entonces, aunque su sintaxis se ha introducido en Java, la mentalidad puede ser bastante diferente. Vale la pena conocerlo, en profundidad, y aún mejor, comprender cómo se puede escribir el código OO en este lenguaje, que parece solo de procedimiento.

Recomiendo leer el libro de Bruce Tate "Más allá de Java", que resalta muy bien los peligros de estar solo en un idioma, observando el ascenso y la caída de C ++. Aunque C ++ aún está lejos de estar muerto y le quedan décadas, se está restringiendo cada vez más para usar solo en situaciones que no pueden beneficiarse de las ganancias de productividad en otros idiomas. Por el contrario, Sinatra, un marco rubí, le permite construir un servicio web simple en aproximadamente 6/7 líneas de código, el equivalente de C ++ puede ser un orden de magnitud mayor que este.

Danny Staple
fuente
1

Cuando no eres un hablante nativo de inglés, al menos debes concentrarte en mejorar tu inglés . Lo digo en base a mi experiencia. Comprender ese idioma me ayudó mucho.

Todos los buenos materiales (libros, artículos, código, etc.) para aprender lenguajes de programación, tecnologías y nuevos conceptos están escritos en inglés.

Matias
fuente
1

Los idiomas son herramientas para hacer el trabajo. Algunos idiomas son buenos para algunos tipos de problemas, otros generalmente son buenos para resolver todo tipo de problemas. Recomiendo aprender nuevos idiomas a medida que salgan. No te obsesiones con lo que está de moda este mes, pero aprende qué pueden hacer, en qué son buenos. Mi consejo es 1 idioma nuevo por año. Salen más rápido que eso, pero está buscando poner nuevas herramientas en su caja de herramientas, no ser el nuevo chico de moda en el bloque.

Un ensayo que habla sobre las diferencias en los idiomas es "Beating the Averages" de Paul Graham. Recomiendo leerlo, pero una parte importante está aquí (usa "Blub" como un lenguaje hipotético para que no discutas sobre lo que tu idioma favorito puede hacer):

¿O qué tal Perl 4? Entre Perl 4 y Perl 5, los cierres léxicos se agregaron al lenguaje. La mayoría de los piratas informáticos de Perl estarían de acuerdo en que Perl 5 es más poderoso que Perl 4. Pero una vez que admitió eso, admitió que un lenguaje de alto nivel puede ser más poderoso que otro. Y se deduce inexorablemente que, excepto en casos especiales, debe usar el más poderoso que pueda obtener.

Sin embargo, esta idea rara vez se sigue hasta su conclusión. Después de cierta edad, los programadores rara vez cambian de idioma voluntariamente. Cualquiera sea el idioma al que la gente esté acostumbrada, tienden a considerar lo suficientemente bueno.

{recorte}

Mientras nuestro hipotético programador de Blub esté mirando hacia abajo en el continuo de potencia, él sabe que está mirando hacia abajo. Los idiomas menos potentes que Blub son obviamente menos potentes, porque les falta alguna característica a la que él está acostumbrado. Pero cuando nuestro hipotético programador de Blub mira en la otra dirección, hacia el continuo de potencia, no se da cuenta de que está mirando hacia arriba. Lo que ve son simplemente idiomas raros. Probablemente los considere como equivalentes en poder a Blub, pero con todas estas otras cosas peludas también. Blub es lo suficientemente bueno para él, porque piensa en Blub.

Sin embargo, cuando cambiamos al punto de vista de un programador que usa cualquiera de los lenguajes que están más arriba en el continuo de potencia, encontramos que a su vez desprecia a Blub. ¿Cómo puedes hacer algo en Blub? Ni siquiera tiene y.

Por inducción, los únicos programadores en condiciones de ver todas las diferencias de poder entre los distintos idiomas son aquellos que entienden el más poderoso. (Esto es probablemente lo que Eric Raymond quiso decir con Lisp para hacerte un mejor programador). No puedes confiar en las opiniones de los demás, debido a la paradoja de Blub: están satisfechos con el lenguaje que usan, porque dicta el cómo piensan sobre los programas.

http://www.paulgraham.com/avg.html

La mayoría de las aplicaciones que enviamos están escritas en C # o VB. Cuando necesitábamos agregar secuencias de comandos a una aplicación, elegimos Python (Lua fue la elección finalista). Estamos aprendiendo F # porque eso puede hacer algunas cosas nuevas y difíciles que son difíciles de explicar y comprender si todo lo que uno sabe es C # / Java / VB.

Tangurena
fuente
0

bueno, en primer lugar, hay una serie de lenguajes que son muy difíciles de evitar para la mayoría de los programadores: javascript, sql, c, etc., por lo que es mejor que los aceptes, no van a desaparecer.

también es una buena idea conocer un lenguaje de script tipo pato ... por ejemplo, uno de perl, python, ruby, lua, etc. Estos son increíblemente útiles para una gran variedad de problemas, incluida la automatización de gran parte de su propio trabajo diario.

para bien o para mal, es probable que también te encuentres con C # y / o Java en algún momento, son bastante generalizados.

en cualquier caso, no te limites artificialmente. aquellos codificadores que conozco que evitan explícitamente recoger herramientas interesantes parecen tener visiones del mundo enclaustradas e impacto limitado.

Brad Clawsie
fuente
0

Esto podría convertirse en otro debate especialista vs generalista en cierto sentido. Algunas personas pueden pasar mucho tiempo conociendo un idioma a grandes profundidades, lo que les funciona bien. A otras personas les gustaría saber un poco sobre un montón de idiomas diferentes que les funciona bien. La mayoría de las personas se encuentran entre estos dos extremos.

Si desea sugerencias de idiomas para explorar, aquí hay algunas ideas:

  1. Programación funcional: Haskell o Lisp serían ejemplos aquí y el cambio de paradigma puede ser un poco sorprendente.

  2. Base de datos específica: PL / SQL o T-SQL vienen a la mente como algo que puede ser útil si desea hacer más trabajo de back-end con sistemas que requieren una base de datos para algunas de sus funciones.

  3. Lenguajes web de interfaz de usuario: ActionScript o Javascript serían ejemplos aquí de lenguajes utilizados en aplicaciones de Internet enriquecidas, aunque AIR puede hacer que algunas aplicaciones de escritorio utilicen llamadas web en algunos casos como Twhirl utilizando la API de Twitter.

Estas son solo ideas y, dependiendo de dónde desee estar, pueden ser útiles o inútiles para usted. Buena suerte con las elecciones que hagas.

JB King
fuente
0

Un programador necesita saber tres idiomas: C, inglés y algo más.

C es un lenguaje central, está cerca de la máquina y tiene reglas de sintaxis que son comunes a varios lenguajes de alto nivel. C te obliga a pensar en cosas como las estructuras de datos de una manera muy diferente a la de Java. Además, los vms de Python y Ruby están construidos en C, y puede incorporar C en ambos lenguajes cuando quiera aumentar su velocidad.

El inglés es el idioma común de programación. La mayoría de los libros, informes técnicos, sitios web técnicos y artículos de revistas salen primero en inglés y, a veces, en inglés exclusivamente. Además, si el inglés no es su primer idioma, aprender inglés ampliará su conjunto de herramientas para manipular conceptos (por supuesto, esto también se aplica a los hablantes de inglés que aprenden algún otro idioma).

The Something Else debería ser un lenguaje que no sea de procedimiento, que no esté tipado estáticamente, que esté fuertemente orientado a objetos, o que de alguna manera sea fundamentalmente diferente de C. Haskell, Scala, Python, Ruby, algún dialecto Lisp, lo que sea .

Después de eso, puede aprender lo que su situación específica requiera, probablemente C # o Java.

filosodad
fuente
Agradecería un comentario sobre por qué usted, crítico anónimo, rechazó esta respuesta.
philosodad
el idioma inglés no te enseña idea, es solo una forma de expresar la idea.
sagarmatha
@sagarmatha: Incluso si esto fuera cierto, lo cual no es cierto, no hay nada 'solo' sobre poder expresarse en el lenguaje de comunicación predeterminado del campo. Si mejora su inglés, podrá expresarse claramente a los angloparlantes y, lo que es más importante, leer y comprender el inglés mucho más rápido. Como señala Matias, los libros de programación y los artículos técnicos tienden a publicarse primero en inglés y, a veces, solo en inglés .
filosodad
No entiendo por qué te votaron negativamente, pero estoy de acuerdo contigo en que saber inglés es tan importante como conocer un lenguaje de programación principal. @sagarmatha: Acabas de contradecirte. Si las ideas se expresan en inglés, seguramente conocer el idioma inglés le permitirá aprender estas nuevas ideas. Lo bien que lo aprenda y lo aplique dependerá de su capacidad para comprender el inglés más las habilidades de programación.
chiurox