¿Vale la pena aprender idiomas experimentales? [cerrado]

25

Soy un joven programador que desea trabajar en el campo algún día como programador. Sé Java, VB.NET y C #. Quiero aprender un nuevo idioma (como programador, sé que es valioso extender lo que sé: aprender idiomas que te hagan pensar de manera diferente). Eché un vistazo en línea para ver qué idiomas eran comunes. Todo el mundo sabe C y C ++ (incluso aquellos muggles que saben muy poco sobre computadoras en general), así que pensé que tal vez debería presionar por C.

C y C ++ son agradables pero son viejos. Cosas como Haskell y Forth (etc., etc., etc.) son viejas y han perdido su popularidad. Tengo miedo de aprender C (o incluso C ++) por esta misma razón. Java también es bastante viejo y lento porque lo ejecuta JVM y no está compilado en código nativo.

He sido desarrollador de Windows durante bastante tiempo. Recientemente comencé a usar Java, pero solo porque era más versátil y difundible a otros lugares. El problema es que no parece un lenguaje muy útil por estos motivos:

  • Su propósito más utilizado es para aplicaciones web y aplicaciones para teléfonos celulares (específicamente Android)
  • En cuanto a los productos reales hechos con él, las únicas cosas que vienen a la mente son Netbeans, Eclipse (hurra por hacer e IDE con el idioma para el que es IDE; es como hacer una página web para escribir HTML / CSS / Javascript) y Minecraft que resulta divertido pero lento y bipolar en cuanto a especificaciones de computadora. apoyo.
  • Aparte de eso, se usa para servidores, pero diablos: no solo quiero hacer / configurar servidores .

Sin embargo, los lenguajes .NET son agradables:

  • La gente se ríe si incluso menciono VB.NET o C # en una conversación seria.
  • No es multiplataforma a menos que use MONO (que todavía está en desarrollo y tiene algunas mejoras por hacer).
  • Carece de cosas de bajo nivel porque, al igual que Java con JVM, CLR lo ejecuta / administra.

Mi primer pensamiento fue aprender algo como C y luego usarlo para saltar a C ++ (solo para asegurarme de que tendría una comprensión / base sólida), pero como dije antes, cada vez es más viejo.


Lo que he mirado

Fantom se ve bien. Es como un buen intermediario entre mis dos idiomas favoritos e incluso me permite publicar entre los dos de manera intercambiable, pero, a diferencia de lo que quiero, se compila en CLR o JVM (según lo que publique) en lugar de ser una compilación completa .

D también se ve bien. Parece un lenguaje muy útil y demultIPLEfuentes que parece ser realmente mejor que C / C ++. Me gustaría saltar con él, pero todavía no estoy seguro de su éxito porque obviamente no es muy convencional en este momento.

Hay un par de otros que se veían bastante bien y se centraron en otras cosas como Opa con desarrollo web y Go by GOOGLE.


Mi pregunta

¿Vale la pena aprender estos idiomas "experimentales"? He leído otras preguntas que dicen que si no estás aprendiendo idiomas constantemente y estás abierto a todos los idiomas, no estás en la mentalidad correcta para programar. Entiendo esto y todavía no lo estoy entendiendo, pero en verdad, si un idioma no se va a convertir en la corriente principal, ¿debería pasar mi tiempo aprendiendo algo más? No quiero aprender lenguajes de programación antiguos (o cualquiera que pronto lo sea). Sé que muchas personas ven esto como algo importante, * pero ¿alguno de ustedes consideraría (suponiendo que no lo supiera) FORTRAN? Mi objetivo es mantenerme actualizado para asegurarme de tener éxito en el futuro.


Renuncia

Sí, soy un joven programador, así que probablemente hice muchas declaraciones ingenuas en mi pregunta. ¡No dudes en corregirme en CUALQUIER COSA! Tengo que comenzar a aprender en algún lugar, así que estoy seguro de que gran parte de mi conocimiento es lo suficientemente incompleto como para haber causado declaraciones incorrectas o fallas en mi pensamiento. Por favor, deje cualquier sentimiento que tenga en los comentarios.


Los resultados...

Estoy realmente sorprendido por las sorprendentes respuestas, la mayoría de ellas señalando muy bien mis malentendidos y juicios erróneos. ¡Aprendí mucho de esto y espero poder utilizar todo lo que he aprendido! Probablemente comenzaré a aprender Haskell a continuación (el idioma no tan antiguo, aunque tenga más de 20 años, jajaja ) y luego comenzaré a buscar otras opciones a mi alrededor.

Gracias

Freesnöw
fuente
10
"aprender los cinco de Python, C / C ++, Java, Perl y LISP" (Eric Raymond, Cómo convertirse en un pirata informático -> Habilidades Básicas de Hacking -> 1. aprender a programar. )
mosquito
77
Tenga en cuenta que simplemente ser "viejo" no significa automáticamente "malo" de forma predeterminada. Algunas de las programaciones más fantásticas hasta ahora se realizaron en el C64 hace 30 años.
8
FWIW casi todos los idiomas tienen usos: si alguien se ríe de ti por usar casi cualquier lenguaje (Java es lento, .Net es para M $ perras, Haskell no es práctico, C ++ es demasiado viejo, etc.) ríete de ellos y cuéntales sobre el uso la herramienta adecuada para el trabajo;)
Martin
66
¿De dónde sacaste "Haskell y ... han perdido su popularidad"?
Leftaroundabout
13
Para un programador joven, tienes demasiados supuestos. Deshazte de ellos, están nublando tu mente.
Matthieu M.

Respuestas:

29

La cuestión de aprender idiomas drásticamente diferentes no se trata de aprender los idiomas, se trata de exponerse a diferentes enfoques de los problemas. Herramientas para la caja de herramientas por así decirlo.

Una cosa a tener en cuenta es que Haskell no es particularmente viejo y en realidad es un muy buen candidato para alguien que solo esté familiarizado con los idiomas principales. Incluso un lenguaje muy antiguo como Lisp es muy útil para aprender debido a su influencia en las cosas.

Además, Java y .Net no se interpretan y espero que esté haciendo algunas suposiciones incorrectas basadas en ese etiquetado incorrecto.

Telastyn
fuente
Woops, perdón por el problema interpretado. Estaba mezclando dos declaraciones oximorónicas diferentes allí. Lo arreglé en la pregunta misma.
Freesnöw 01 de
19
Bueno, Haskell es más antiguo que, por ejemplo, Java. Pero sí, eso no significa que esté desactualizado. De hecho, su sistema de tipos todavía está aproximadamente 2 décadas por delante de Java.
Jörg W Mittag
55
@ JörgWMittag: Sin embargo, creo que eso dice más sobre Java que sobre Haskell.
Tikhon Jelvis
1
Programo solo en Haskell y Java ... pero para ser justos, ningún lenguaje convencional tiene un sistema de tipos tan bueno como Haskell. (Y tengo que decir, OP ... muchas más cosas de las que mencionas se ejecutan en Java.)
Louis Wasserman
1
Haskell tiene más de 20 años y Haskell estándar es tan antiguo como C ++ estándar (ambos son de 1998).
fredoverflow
23

Mantente en forma: practica regularmente

La práctica hace la perfección.

Cuanto más código escriba y lea , más se acercará a la iluminación / dominio como programador / desarrollador / ingeniero de software / guru / ninja / artesano / hacker / palabra de moda elegida. Al no solo codificar y leer más, sino también al probar nuestras nuevas formas de escribir código, los más abiertos de mente (con suerte) permanecen.

Lectura recomendada:

Aprender sobre nuevos paradigmas y características del lenguaje

Tal vez no pueda traducir lo que usa en el nuevo Super-Language-X a su Enterprise-Language-Y, pero tal vez pueda reconocer cuándo podría haber sido una buena opción. Tal vez pueda saber cuándo integrar una tecnología diferente o una pila en su proyecto para adaptarse a un propósito particular. O tal vez sepa cómo usar las características del lenguaje Y para emular la característica genial del lenguaje X y refactorizar su código para beneficiarse de él (y potencialmente iluminar a otros compañeros de trabajo en el camino).

Por ejemplo, podría haber descubierto principios interesantes de FP y desea adaptarlos a Java, que posiblemente no sea FP por diseño .

Lectura recomendada:

Sé un Jack de todos los oficios ... ¿Maestro de algunos?

No sabes qué idioma se convertirá en el tren principal cuando esté en esa etapa "experimental", por lo que no debes preocuparte demasiado por apostar por uno de ellos. Lo más probable es que otras personas hagan la misma apuesta y estarán intrigados cuando los vean aparecer en su currículum. Agregue una herramienta a su cinturón. En nuestro caso, no hay mucho problema con cuánto pesa al final.

Claro, no puedes convertirte en un maestro de todos los oficios. Pero podrías ser un maestro de uno y bastante bueno en el resto. Estás aprendiendo un oficio, y el nuestro es multifacético. Hacer ejercicios con regularidad, asistir a talleres, tomar un libro, escribir un nuevo proyecto para mascotas y otras cosas similares son nuestra forma de mantenernos al día con el ritmo cada vez mayor del cambio en nuestro campo.

Lectura recomendada:

Manténgase adaptable

Si no aprende a adaptarse, es difícil hacerlo cuando lo necesita. Al aprender constantemente cosas nuevas, cada vez se mejora cada vez más al recoger cosas nuevas (siempre y cuando no se limite a desafíos muy similares).

Es como dice la canción "Stay Young" Oasis: Stay young and invencible .

Si puedes adaptarte, puedes sobrevivir.

Lectura recomendada:

Mantente visible: comprende el radar de la agencia de reclutamiento

Utilizan palabras clave y tecnologías como casillas de verificación. Los usamos como recipientes para reclutadores sin sentido.

Funciona en ambos sentidos. Mientras realmente conozca sus cosas, entonces tener muchas cosas en su currículum es bueno. Muestra su adaptabilidad y amplitud de conocimiento. Además, si realmente domina algunos de estos y es decente en algunos otros, le permite modular diferentes versiones de su currículum para diferentes puestos y trabajos.


Otros temas útiles de SE

haylem
fuente
Si vas a leer Beating the Average de Paul Graham (o cualquier otra cosa que escriba sobre el tema de la programación), tómalo con un poco de sal. Muchas de las cosas que tiene que decir sobre la práctica de programación son 50% correctas y 50% peligrosamente incorrectas.
Mason Wheeler
@MasonWheeler: Es controvertido, como muchas cosas que puedes encontrar por "gigantes" conocidos de la industria, aclamados o no. Muchas personas también desaprobarían los escritos de Zed Shaw, como otros lo harían con los de Norvig. Todo debe abordarse con una mente crítica: lo tomo como un hecho para cualquier cosa, y supongo (espero) que también lo hacen las personas en este nivel. Muchos escritores presentarán temas a la luz de una situación específica, que no se ajustan a los de todos. De hecho, ves esto aquí todos los días también en respuestas, pero por la fuerza "popular" serán venerados como "mejores" respuestas. Aún así, es informativo.
haylem
8

Para extender la respuesta de Telastyn, de hecho se trata de la exposición a diferentes paradigmas de programación . Por ejemplo, no se trata realmente de aprender programación lógica, sino de:

  • aprender a aprender (practicar para aprender nuevas habilidades)
  • entrenar tu cerebro para pensar de maneras novedosas
  • tal vez obtener un conocimiento menos popular (o incluso esotérico) que pocas personas tienen y podrían ser útiles
    • o al menos impresionarlos con su conocimiento técnico :)
  • y, por supuesto, proporciona información técnica valiosa. ¿Por qué C # es más popular que D? ¿Puede C ++ hacer todo lo que D puede hacer? ¿Puede D hacer más, o se parece más al azúcar sintáctico?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

Otra buena razón para aprender brainf * ck es entender cuán básico puede ser un lenguaje de programación completo de Turing. Un argumento común cuando los programadores comparan idiomas es "bueno, todos están completos en Turing", lo que significa que todo lo que puede hacer en un idioma puede hacerlo en otro. Una vez que hayas aprendido brainf * ck, comprenderás lo difícil que puede ser usar un lenguaje completo de Turing y cómo ese argumento no aguanta.

http://norvig.com/21-days.html (Peter Norvig)

Aprenda al menos media docena de lenguajes de programación. Incluya un lenguaje que admita abstracciones de clase (como Java o C ++), uno que admita abstracción funcional (como Lisp o ML), uno que admita abstracción sintáctica (como Lisp), uno que admita especificaciones declarativas (como plantillas Prolog o C ++), uno que admite corutinas (como Icon o Scheme), y una que admite paralelismo (como Sisal).

Astyanax
fuente
7

Mi primer pensamiento fue aprender algo como C y luego usarlo para saltar a C ++ (solo para asegurarme de que tendría una comprensión / base sólida), pero como dije antes, cada vez es más viejo.

Bueno, este es un montón gigante de falacia. Las personas que conocen C tienen más dificultades para aprender C ++, porque casi todo lo que creen saber sobre cómo usar el lenguaje es un montón de errores. Prácticamente no hay una C idiomática que sea remotamente buena C ++. Es mejor simplemente aprender C ++ desde cero. Las personas como yo, que ofrecen su tiempo como voluntario para ayudar a otras personas a aprender C ++, gastan una proporción masiva tratando de enseñar a las personas a abandonar sus hábitos de C.

En cuanto a la popularidad, bueno, C ++ está experimentando un pequeño resurgimiento recientemente. La gente notó que, en realidad, el rendimiento es muy importante, y no puede salirse con la suya al ejecutar todos los componentes como uno administrado, y Modern C ++ (especialmente con C ++ 11) no se parece en nada a la basura C que creían que era , y realmente no es tan malo en absoluto. Realmente no está envejeciendo. Se está volviendo más nuevo. El nuevo estándar es una gran actualización, y no hay lenguajes de reemplazo adecuados, ya sean actuales o en proceso, para muchas de las áreas en las que se usa C ++ ahora. Esto no es menos importante porque no hay lenguajes con una interoperabilidad decente de C ++ (incluso C ++ en sí), lo que dificulta la migración desde las bases de código de C ++ existentes.

La gente se ríe si incluso menciono VB.NET o C # en una conversación seria.

Consigue gente nueva. AFAIK, VB.NET realmente no existe por ninguna razón, excepto para ayudar a migrar lejos de VB6 y no es realmente un objetivo digno en sí mismo, pero C # es un lenguaje real. Es un poco como Java, excepto que luego agregaron características de lenguaje reales y algunas bibliotecas agradables. C # es un lenguaje muy popular y bien soportado con muy buenas herramientas en VS, que no es tan malo, y es una cosa sólida, si no excepcional, para aprender.

No es multiplataforma a menos que use MONO (que todavía está en desarrollo y tiene algunas mejoras por hacer).

MONO es bastante estable. Además, en última instancia, el 90% de los consumidores de escritorio (¿o era el 80%?) Ejecutan Windows en este momento. Si va a desarrollar una aplicación de escritorio, es una pregunta abierta si los usuarios que no son usuarios de Windows valen la pena, incluso si utiliza un lenguaje multiplataforma.

En última instancia, podría obtener mucho de aprender un lenguaje como C ++ o Haskell, que se centra en una tecnología de compilación sólida en lugar de un tiempo de ejecución masivo.

Simplemente no elijas PHP. Lo único que puede aprender de eso es cómo no construir un lenguaje.

DeadMG
fuente
1
Solo existe un porcentaje significativo de las adiciones recientes al estándar C ++, como un porcentaje significativo de adiciones en tiempos pasados, para reparar los defectos existentes de C ++. Las referencias de Rvalue, por ejemplo, agregan un montón de complejidad adicional para solucionar un montón de problemas de rendimiento y complejidad relacionados con los constructores de copias, que solo existen porque C ++ permite que los objetos se usen como tipos de valor, lo cual es 100% completamente incorrecto y hay un buena razón por la que ningún otro lenguaje OO hace eso.
Mason Wheeler
@MasonWheeler Al menos C #, D y Eiffel permiten objetos como tipos de valor. ¡Y RAII es muy bueno para la programación de sistemas!
fredoverflow
@MasonWheeler: las referencias de Rvalue también permiten reenvío perfecto y tipos de solo movimiento. El rendimiento fue solo una de las tres causas principales para su introducción. Los objetos con valor de tipo están bien. Además, por supuesto, puedes escribir tus propios objetos de referencia en C ++ todo lo que quieras.
DeadMG
Además, es curioso cómo, incluso con todos esos problemas de rendimiento, C ++ seguía siendo el lenguaje más rápido.
DeadMG
1
@FredOverflow: en C #, todos los objetos son tipos de referencia. Las estructuras pueden ser tipos de valor, pero los objetos no, y esto es por una muy buena razón: si los objetos se usan como tipos de valor, arrojas una enorme llave inglesa a la herencia y al polimorfismo y terminas teniendo que usar todo tipo de trucos feos como los constructores de copia, donde asignar (o pasar) un objeto descendiente a una variable de tipo padre no asigna ese objeto en realidad. Completamente arruina la sustitución de Liskov, que es el punto principal de usar OOP en primer lugar. Es una idea horrible, y me alegro de que nunca se haya dado cuenta.
Mason Wheeler
6

Un par de comentarios sobre lo que has dicho ...

1) Todo programador debe aprender C, incluso si es viejo. Es un gran lenguaje para acercarse a la máquina. Del consejo de Joel a los estudiantes de CS ...

Aprende C antes de graduarte

Parte dos: C. Note que no dije C ++. Aunque C se está volviendo cada vez más raro, sigue siendo la lengua franca de los programadores que trabajan. Es el lenguaje que usan para comunicarse entre sí y, lo que es más importante, está mucho más cerca de la máquina que los idiomas "modernos" que se les enseñará en la universidad como ML, Java, Python, cualquier basura de moda que enseñen. dias. Debe pasar al menos un semestre acercándose a la máquina o nunca podrá crear código eficiente en idiomas de nivel superior. Nunca podrá trabajar en compiladores y sistemas operativos, que son algunos de los mejores trabajos de programación. Nunca se te confiará para crear arquitecturas para proyectos a gran escala. No me importa cuánto sepa sobre las continuaciones y los cierres y el manejo de excepciones: si no puede explicar por qué while (* s ++ = * t ++); copia una cadena, o si eso no es lo más natural del mundo para ti, bueno, estás programando basado en la superstición, en lo que a mí respecta: un médico que no conoce la anatomía básica, pasa nuestras recetas basadas en lo que dijo el vendedor farmacéutico funcionaría.

2) Los idiomas pueden ser buenos para aprender mentalidades, incluso si no se usan comúnmente. Aprenda el esquema (o LISP) para comprender la programación funcional, incluso si no está de moda. De otra publicación en este foro .

Felicitaciones, parece (para mí) como si estuvieras yendo a una de las pocas escuelas que quedan que realmente trata de enseñar ciencias de la computación. El esquema de aprendizaje como primer idioma es (IMO) algo muy bueno. No, no es tan comercial como muchos otros, pero es un lenguaje excelente para aprender la verdadera esencia de la informática. - Jerry Coffin Oct 20 '11 a las 3:32

C, C ++ y Java son subproductos de la industria de la informática. Las raíces completas de Scheme están en la informática. Los idiomas en uso comercial tienen tanto que ver con la informática como McDonalds tiene que ver con la cocina. - JasonTrue Oct 20 '11 a las 5:30

Estos tipos son correctos; estás confundiendo la programación de computadoras con la informática; como dijo Dijkstra, eso es como confundir la construcción del telescopio con la astronomía. Scheme trata sobre el mejor lenguaje que existe para aprender conceptos básicos en informática. Si espera que obtener un título en informática se trate de aprender a escribir aplicaciones de línea de negocio en Java, es posible que esté inscrito en el programa incorrecto. - Eric Lippert Oct 20 '11 a las 7:40

Casi todos los desarrolladores que conozco han aprendido C / C ++ por sí mismos. No necesitas universidad para eso. - mouviciel Oct 20 '11 a las 7:48

Por la misma razón que los cursos de zoología enseñan biología evolutiva, anatomía y comportamiento animal en lugar de cómo eliminar un establo de elefantes - jk. Oct 20 '11 a las 7:58

Ahora, a pesar de atacar su premisa original, creo que debería ser elogiado por su curiosidad. Demasiadas personas se vuelven obsoletas debido a la falta de curiosidad. Aprovechar su desarrollo personal es una gran señal de que se desarrollará bien. Las personas que aprenden más son las que están dispuestas a seguir preguntando cómo funcionan las cosas.

MathAttack
fuente
1
"Casi todos los desarrolladores que conozco han aprendido C / C ++ por sí mismos. No necesitas universidad para eso": lo mismo aquí. En mi universidad nos dieron tareas en C, pero no nos dieron un curso de C. Solo esperaban que los estudiantes de Ciencias de la Computación obtuviéramos un libro y lo aprendiéramos.
Giorgio
1
Tener que aprender C es toda una tortura. Mis condolencias.
DeadMG
2
En realidad, aprender C fue la parte fácil, la verdadera tortura comenzó cuando tuvimos que pasar a C ++. ;-)
Giorgio
3

CUALQUIER idioma que aprenda va a cambiar en los próximos 5 años. No se trata de aprender un idioma que crees que podría ser por un tiempo, sino de aprender CÓMO aprender. ¡La mayor exposición al aprendizaje del idioma y el proceso de aprendizaje de ese idioma lo ayudarán enormemente a largo plazo!

La última compañía para la que trabajé usaba su propio lenguaje interno. Era similar al visual básico pero no igual. Solo por el hecho de que sabía otros idiomas, pude aprender su idioma mucho más rápido que los otros empleados.

Aprendí japonés después de aprender C ++, BASIC, Pascal, y puedo decir que aprender un idioma de computadora y un idioma extranjero requieren las mismas habilidades. Esas habilidades se pueden perder o agudizar. Si tiene el disco, ¡continúe y aprenda nuevos idiomas!

(ps. en cuanto a aprender FORTRAN o ensamblar, creo que es valioso al menos tomar un semestre de los idiomas más antiguos. Te hace pensar en cosas que simplemente das por sentado en los idiomas más nuevos, cosas como banderas, asignación de memoria y demás .)

BillyNair
fuente
3

Será mejor que aprenda tantos idiomas "antiguos" como sea posible, si alguna vez quiere ser programador. Comience con Lisp, obtenga una buena comprensión de Forth, preste mucha atención a la evolución de todos los idiomas de Wirth, la evolución de Fortran, el ascenso y la caída de Prolog, adéntrese en el ecosistema secreto de Ada, obtenga su arma secreta al aprender Occam. Perseguir la "corriente principal" es la cosa más estúpida que un aspirante a programador podría hacer.

SK-logic
fuente
+1: estoy totalmente de acuerdo. Muchas ideas interesantes que obtuve al experimentar con lenguajes menos convencionales como Haskell, Scheme, Scala, SML, etc.
Giorgio
2

Estoy de acuerdo contigo en la parte de exposición de las cosas. Aunque conozco Java, C, C ++, Javascript, Python, Ruby y un poco de .NET (principalmente porque odio cualquier cosa M $ <- opinión personal), debo decir que realmente amo programar en D.

D tiene un conjunto de características realmente agradable (la mayoría de ellas se implementan en C ++ / Java (lenguajes que tienen abstracciones de clase), etc.), pero lo que más me encanta son los genéricos y los delegados (facilita la implementación de devoluciones de llamada). Aparte de eso, obtienes una sintaxis mucho más simple para tratar en comparación con C ++. D tiene un recolector de basura realmente eficiente, aunque puede elegir manejar la memoria usted mismo (especialmente cuando interactúa con módulos C / C ++). Aunque D no tiene un montón de módulos aportados por los usuarios que no deberían ser una barrera para la entrada. Puede interactuar fácilmente con las bibliotecas C / C ++ existentes (que son abundantes), lo que lo hace redundante para la necesidad de módulos.

D tiene su propia biblioteca estándar (Phobos) que satisface la necesidad de todos los problemas de programación comunes. También hay una biblioteca alternativa ( Tango-D2 ) que puede usar con Phobos o solo. Si usted es un desarrollador web y necesita escribir un servidor basado en eventos, Tango tiene una buena abstracción Selector (tango.io.Selector solo para select (), poll (), epoll ()). He encontrado que funciona incluso mejor que libev.

Shripad Krishna
fuente
No es que desapruebe el aprendizaje de D, pero para alguien que ya sabe estáticamente tipado, OO y lenguajes procesales, de bajo nivel, sin duda vale más aprender un idioma que enfatice un paradigma diferente o esté un poco más cerca del metal. No hay mucho experimental sobre D, tampoco.
Leftaroundabout
1
Convenido. Pensé que la pregunta de los OP se centraba en que "experimental" era algo que aún no era estable / respaldar el soporte corporativo / uno que no es convencional. E incluso si opta por la implementación "experimental" de diferentes paradigmas, supongo que solo existen unos pocos paradigmas. Y la mayoría de los idiomas implementan uno u otro. Luego llegamos a qué idioma es mejor / más rápido / más fácil de usar / mejor para el trabajo en cuestión. Estos factores difieren de programador a programador.
Shripad Krishna
1

Los idiomas se desarrollan para resolver problemas en algún tipo de dominio (al menos al principio). Si no ha enfrentado problemas que sus herramientas no pueden resolver de una manera que le resulte cómoda, martillará una tabla de madera esperando convertirse en carpintero. Intenta comprender el tipo de problemas que los idiomas intentan resolver. La única diferencia entre un lenguaje "experimental" y un lenguaje nuevo / moderno es el dinero que lo respalda, por ejemplo, Go de google y Dart. Si se desarrollaron en mi patio trasero, probablemente morirán en algún foro y eso es todo. Solo sobreviven si son buenos para explicar los problemas que intentan resolver. O al revés, como Perl y C ++, que son buenos para absorber formas de resolver problemas para seguir con vida. Y podría sugerirle aprender Lua, es ' Es un lenguaje hecho para incrustar dentro de programas, es muy rápido y liviano, lo que le dará herramientas para resolver los problemas grandes o pequeños que algunos lenguajes como Java no pueden resolver de una manera directa. Tomando el ejemplo del japonés, si solo aprendes la sintaxis, la gramática y los alfabetos, ignorando la cultura, nunca entenderás por qué es tan complicado y eventualmente te olvidarás de eso. No está resolviendo nada para ti.

alfa64
fuente
1

Aprender varios idiomas diferentes le dará una visión más amplia de la programación. Énfasis en "diferente", por ejemplo, aprender C # y Java no le enseñará mucho más que aprender solo uno de ellos. Pero aprender C # o Java, y un lenguaje funcional (por ejemplo) lo hará.

Habiendo dicho eso, como joven programador, creo que obtendrías mucho más valor al conocer un idioma de manera realmente sólida, antes de saltar mirando diferentes tipos de lenguaje. No queda del todo claro a partir de su pregunta qué tan bien conoce Java, VB.NET y C #. ¿Confía en que si atacó un proyecto usando uno de los idiomas anteriores, su cuello de botella sería el proyecto en sí mismo, no su conocimiento del idioma? Si pasaras más tiempo preguntándote "¿Cómo hago esto en un idioma ?" de lo que pasaría pensando en el problema real, entonces es probable que necesite centrarse más en uno de sus idiomas actuales.

Y personalmente creo que deberías adoptar un enfoque pragmático para decidir cuál es. ¿Java se usa para aplicaciones de Android? Genial, si hacer aplicaciones de Android es algo que le interesa. Irrelevante si no lo es. C # no es una gran opción para el desarrollo que no sea de Windows? Malas noticias si estás interesado en desarrollar para Linux. Irrelevante si no lo eres. Y así.

¿Y los idiomas "experimentales" que mencionaste? Pragmáticamente, van a encajar mal cuando se trata de trabajar con otras personas; probablemente encontrarás miles de personas que conocen C # o Java por cada uno que conoce a Fantom. Para proyectos personales, esto no es necesariamente un problema. Si su objetivo es aumentar su empleabilidad, lo es.

Carson63000
fuente
1

Se podría decir que aprender a programar en un lenguaje como Postscript o APL es posiblemente una pérdida de tiempo principalmente porque las posibilidades de que alguna vez uses ese conocimiento se acercan a cero. Pero de la misma manera, podría argumentar que Ruby y Python son una pérdida de tiempo si nunca tiene la intención de usarlos para nada.

Pero pocas personas dirían que aprender Lisp es un desperdicio, a pesar de que es probable que tenga que escribir Lisp como Postscript; pero aprender Lisp te enseña a pensar de manera diferente acerca de tu problema (con suerte), por eso la mayoría de los programadores te dirán que vale la pena tu tiempo.

Aún así, nunca evito aprender un nuevo idioma, ya que la inversión de tiempo requerida es realmente solo una hora o cuatro. Y los usos de un idioma como Lua aparecen en los lugares más inusuales , y nunca los hubieras reconocido si no hubieras pasado algunas horas revisando los ejemplos.

Cuando vea un nuevo idioma, lea un poco sobre lo que es útil. Si es un nicho que sus idiomas favoritos no cubren demasiado bien, tómese un día para aprender los conceptos básicos. Sin duda, es mejor pasar el tiempo que ver la temporada 17 de The Bachelor o, de lo contrario, puede perder el tiempo. De esa manera, si le sirve, puede aparecer en la mente y usted sabe dónde encontrar más.

Personalmente, realmente recomiendo buscar en Go. Lo he usado para escribir programas de una sola página que funcionan mejor de lo que tomaría tres días y 13 bibliotecas de terceros en C o C ++, y ni siquiera sería posible en Python, C #, Ruby, etc. Fue diseñado por personas que realmente, realmente, realmente saben lo que hacen.

tylerl
fuente
-1

Elige unos con diferentes tipos. Agrúpelos por características y elija uno en cada grupo. Si desea hacer esto profesionalmente, elija uno que se use (por lo tanto, C ++ sobre D para lenguaje compilado estáticamente tipado con metaprogramación de plantilla).

Pobre D, es un buen lenguaje, pero carece de la aplicación asesina que tenía C ++: compatibilidad casi total con el lenguaje # 1 de la época (C para el caso de C ++). Es agradable, pero ese pequeño hecho importante probablemente relegará a D al estado secundario en los libros de historia.

luego
fuente
-2

C puede ser viejo, pero aún es muy poderoso e interesante, aprender C te ayudará mucho en tu futuro de "programación".

Java no es lento, quien te haya dicho que no sabe de qué está hablando, Java te aprenderá muchísimo sobre POO

¿Por qué no empiezas con Python y luego vas por C o algo más?

just_a_dude
fuente
C también es la lengua franca de los microcontroladores (cuando solo tiene 4K, no puede permitirse un tiempo de ejecución de 8K). Solo en ese espacio, C tiene otra buena década de uso activo por delante.
TMN
Java solía ser lento; recuerdo que era menos que un demonio de la velocidad en sus primeros años. Algunas personas piensan que el rendimiento nunca mejoró.
MetalMikester