¿Es aconsejable ir y venir entre dos lenguajes de programación? [cerrado]

28

He estado escribiendo bastante PHP durante casi dos años. Ahora estoy haciendo desarrollo .NET (principalmente c #). Sin embargo, a veces vuelvo y hago algo de php.

Mi pregunta principal es, ¿es prudente para mí continuar haciendo esto o debo continuar el desarrollo en C #? ¿Me perjudicaría a largo plazo (tenga en cuenta que mi objetivo principal no es ser un gato o todos los oficios) o es una buena práctica hacerlo?

superM
fuente
30
mejor ser un hombre orquesta que un pony de un solo truco
scrwtp
27
Ciertamente te dañará si te limitas a solo dos idiomas. Obtenga más herramientas diferentes en su caja de herramientas.
SK-logic
44
Usted hace esta pregunta como si fuera totalmente libre de elegir entre C # y PHP. ¿Es realmente así?
Doc Brown
10
Conocer todos los detalles sucios de un idioma es sin duda muy útil. Pero cuando trabaje con varios idiomas, en algún momento se encontrará diseñando partes del programa de una determinada manera, independientemente del idioma en el que esté trabajando actualmente. Esta es una especie de programador nirvana, donde el idioma se convierte secundaria y la aplicación es lo que importa. Es un gran lugar para estar, porque significa que tienes potencial como programador incluso en el futuro, cuando las personas están trabajando en un nuevo y sofisticado lenguaje Z ++.
2
¿Sólo dos? Muchos programadores trabajan regularmente en varios idiomas. Conocer varias te ofrece un conjunto más amplio de herramientas para dibujar.
Caleb

Respuestas:

75

Usar dos idiomas al mismo tiempo no es nada. No es raro que los programadores usen varios idiomas diferentes todos los días. Diferentes tareas y diferentes tecnologías requieren diferentes idiomas.

Justo hoy, ya he usado cuatro o cinco idiomas diferentes, y eso es interesante porque hasta ahora no había hecho ninguna programación. Todo lo que he hecho es trabajar en una presentación.

Como buen programador, se requiere que conozcas bien varios idiomas, y la única forma de lograr (y luego preservar) una fluidez razonable es usar esos idiomas.

Konrad Rudolph
fuente
44
No estoy seguro de cómo alguien podría ser un programador eficaz en absoluto sin utilizar al menos 3 idiomas de forma regular.
Brian Knoblauch
1
@Brian: ¿esos tres idiomas son su idioma principal hablado / escrito, su lenguaje de programación principal y SQL y / o HTML?
KeithS
2
@KeithS Solo si está creando páginas súper simples en el lado del cliente, y nunca toca registros XML en el lado del servidor. CSS y Javascript cuentan como sus propios idiomas, al igual que XPath y XSLT y XQuery.
Tacroy
2
Cualquier cosa que contenga "La mayoría de las personas" o "la mayoría de los desarrolladores" debe seguirse con una especie de cita. De lo contrario, es subjetivo. Casi todos los desarrolladores que he conocido (y yo incluido) consideran que SQL es un lenguaje de programación, y la integridad de Turing no es un factor necesario para un lenguaje de programación (piense en los DSL, que generalmente están diseñados para NO estar completos). HTML y XML son obviamente no lenguajes de programación (aunque puede tener lenguajes específicos de dominio basados ​​en XML). Las expresiones regulares no son lenguajes de programación, pero los autómatas programables / configurables sí lo son.
luis.espinal
2
Eso no es una fuente. Ese es un enlace a una discusión (las discusiones no son, por sí mismas, fuentes), y es una que solo se enfoca en CSS y HTML. No aborda la prueba de "turing complete" (le sugiero que lea el trabajo de Martin Fowler sobre el tema de DSL), ni si SQL es un lenguaje de programación (que es, aquí hay una fuente real: en.wikipedia.org/ wiki / SQL , o este amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Puede que no esté leyendo mi mensaje totalmente, o cree un enlace a StackExchange es una fuente (que no lo es.)
luis.espinal
37

¿Es una buena práctica estar haciendo?

Es una excelente práctica. Además, recomendaría expandir su lista de idiomas regularmente probando uno nuevo.

Los idiomas y las tecnologías entran y desaparecen rápidamente, en cuestión de pocos años. Por ejemplo, el Objetivo C despegó con una fuerza increíble después de estar casi muerto durante dos décadas y media, ¡una eternidad para los estándares de esta industria!

No importa mucho que esté planeando "no ser un gato o todos los oficios": si planea permanecer en la industria el tiempo suficiente, es muy seguro asumir que tendría que cambiar su pila de tecnología al menos una vez a lo largo de tu carrera. El uso de varios idiomas ahora lo mantiene preparado para activar un aviso razonablemente corto.

revs dasblinkenlight
fuente
14

¿Me perjudicaría a largo plazo (tenga en cuenta que mi objetivo principal no es ser un gato o todos los oficios) o es una buena práctica hacerlo?

Saber dos o más idiomas nunca te haría daño. Conocer tus idiomas de manera superficial (sin comprender el funcionamiento interno) puede hacerte daño.

Mi preferencia personal siempre fue dominar primero un lenguaje de programación orientado a objetos . Esto le proporcionaría un aprendizaje en profundidad de todos los conceptos de programación y la facilidad de aprender el próximo una vez que sea necesario.

¿Es una buena práctica estar haciendo?

¡Absolutamente sí!

Sugeriría definitivamente aprender más de uno y practicarlos creando algunas aplicaciones. Mientras tanto, también puede planear aprender algunos lenguajes de secuencias de comandos (jQuery, KnockoutJs, etc.) y bibliotecas si está haciendo o planea hacer desarrollo web.

revs ElYusubov
fuente
1
No creo que piense, aprender OOP le enseñará muchos conceptos de la programación funcional, por ejemplo, las reglas de alcance de JavaScripts son muy diferentes de los otros lenguajes populares de OOP como C #, etc. Hay muchos otros conceptos por ahí.
phant0m
Estoy totalmente de acuerdo. Sin embargo, jQuery y KnockoutJs NO son lenguajes de script. Y no recomendaría "aprender jQuery" sin un conocimiento fundamental de JavaScript.
Bruno Schäpper el
no puedes aprender jQuery sin aprender JavaScript en el proceso porque jQuery no es un idioma, es una biblioteca escrita en un idioma.
ILikeTacos
5

No debería perjudicarte a largo plazo, ser competente en varios idiomas te convierte en un desarrollador completo. El uso de "la herramienta adecuada para hacer el trabajo correcto" es el objetivo final y ser versado en diferentes idiomas lo ayuda a lograrlo, ya que sabe qué más hay y puede tomar una decisión bien informada sobre qué plataforma / marco / idioma usar conseguir algo hecho.

Deco
fuente
Gracias por la respuesta, pero me preguntaba si los cambios frecuentes no dañarán mi proceso de aprendizaje o lo prolongarán, ¿o eso solo depende de la capacidad de la persona?
Lamin Sanneh
@LaminSanneh Aprender otro idioma no te empeora en el primero. No es un juego de rol y no tiene un número establecido de puntos de "habilidad de programación" que puede asignar a cada idioma. En el peor de los casos, le quita tiempo que se hubiera dedicado a otro idioma. Pero los idiomas son solo una forma de expresar sus ideas, y aprender nuevos idiomas le brinda perspectivas e ideas nuevas y frescas que puede aplicar a las que ya conoce. Claro, no conocerá la sintaxis de cada idioma, pero ¿a quién le importa eso? Es una búsqueda rápida en Google
Jay
5

A lo largo de su carrera, usted tiene que aprender nuevos idiomas y nuevas tecnologías; la industria simplemente lo requiere. En mi primera asignación profesional, tuve que entregar el código escrito en Ada, C y Fortran, junto con algunos scripts SQL y shell. Tuve que cambiar de C ++ a Java y volver en los últimos años. He escrito scripts de shell en csh, bash y perl.

Tomarse el tiempo para aprender diferentes idiomas, especialmente si están en diferentes dominios (OO, funcionales, lógicos, etc.) lo ayudará de varias maneras. Mantendrá tu cerebro agudo. Le ayudará a separar los conceptos de la implementación (por ejemplo, los hash y los mapas no son solo tipos de datos en un idioma en particular) Le dará una mejor idea de qué herramientas son apropiadas para un problema determinado (por ejemplo, no crearía un sitio web en C ni escribiría un controlador de dispositivo en Haskell). Puede que sea más fácil para usted encontrar un trabajo ("¡Hey, él ya conoce la Intercal 1 , no tenemos que entrenarlo!"). Le dará una idea de los desafíos que enfrentan los diseñadores de idiomas. Puede inspirarte a crear tu propio lenguaje de programación.

Por lo menos, evitará que te aburras.


1. Broma No intentes aprender Intercal.

John Bode
fuente
4

Las personas que se jubilaron este año comenzaron sus carreras antes de que se creara C. Es seguro decir que puede cambiar los lenguajes de programación una o dos veces en su carrera. No desea trabajar para empleadores que no entienden eso.

Cuando eres nuevo, cambiar de contexto entre dos idiomas es mucho más difícil, por lo que serás más productivo si trabajas al menos 4-8 horas en un idioma antes de cambiar. Más tarde podrá cambiar instantáneamente sin perder productividad. En otras palabras, usar dos idiomas eventualmente se convertirá en una fortaleza en lugar de ralentizarlo.

Karl Bielefeldt
fuente
2

Hay una ventaja y una desventaja en esto.

Aquí está la ventaja ...

Como otros mencionaron, poder aprender nuevo y trabajar con muchos lenguajes y herramientas de programación es casi esencial para tener una larga carrera en programación. Las cosas cambian con los años, las herramientas / idiomas van y vienen. Claro, hay algunas personas que se contentan con programar en el mismo COBOL de mainframe que usaron en la década de 1980, pero esta es una situación relativamente rara. La mayoría de los programadores terminan cambiando herramientas / idiomas varias veces en el transcurso de su carrera. A veces puede ser contratado porque conoce alguna tecnología anterior o conoce todos los idiomas con los que trabaja una empresa.

La desventaja es ...

Algunos empleadores lo verán como un "maestro de todos los oficios, maestro de ninguno" y rechazarán su solicitud sin darle una oportunidad. Buscan un experto limitado en un área específica, no simplemente un programador bueno y completo. En ocasiones, HR puede interrumpirlo porque no tiene "5 años de experiencia continua en [X]". Puede evitar esto adaptando su currículum para que se ajuste al trabajo, pero esto puede no serle útil en una entrevista técnica.

Para mí, lo bueno es mucho mejor, pero debes ser consciente de que una minoría de organizaciones lo ve como algo negativo.

jfrankcarr
fuente
+1, además, estoy seguro de que hay una correlación entre esta minoría de organizaciones y una mala programación e ineficacia.
K.Steff
2
Sin embargo, esa negativa es cancelada por los empleadores que piensan exactamente lo contrario. Tengo algo que decir en las decisiones de contratación donde trabajo, y me sería muy difícil convencer de que acepte contratar a alguien que solo tenga un lenguaje de programación en su haber. Tal vez para un puesto junior, pero ciertamente no para un desarrollador senior.
Jon Hanna
@JonHanna: el problema principal es que el equipo de desarrollo ni siquiera puede entrevistar al posible desarrollador, ya que HR los excluye, a veces un programa automatizado. Este es, por supuesto, un problema más común en organizaciones más grandes. Es importante asegurarse de que su personal de recursos humanos no descarte a los mejores candidatos según criterios arbitrarios.
jfrankcarr
+1 por señalar las desventajas . De donde yo soy, el número de compañías que retienen esa visión de "Jack of All Trades, Master of None" no es tan pequeño.
lsoliveira
Sí, pero podríamos cambiar eso a cualquier buena calidad; Siempre podría haber un idiota en RRHH que piense que es de mala calidad. Sin embargo, en última instancia, si RR. HH. En una organización son idiotas, van a estar haciendo malas contrataciones, y mientras sean contratados puede ser mejor que la línea de desempleo, buscarán un nuevo trabajo de inmediato y encontrarán otro trabajo en otro lugar .
Jon Hanna
2

Cuando estabas desarrollando PHP, ¿escribiste JavaScript o SQL? En su desarrollo de C # todavía podría estar usando ambos. No es tan simple como usar un lenguaje de programación.

Si eres feliz haciéndolo, no te preocupes por eso. Si no quieres hacer ambas (o ninguna), entonces tienes un problema.

Firmar
fuente
2

Aprender un nuevo lenguaje de programación te enseñará cosas sobre la programación que puedes aplicar a los idiomas que ya conoces. Definitivamente deberías considerar al menos jugar con otros idiomas, incluso si no los usas profesionalmente, en lugar de tener tan pocos.

Idealmente, uno que sea muy diferente en enfoque a aquellos que ya conoce.

Jon Hanna
fuente
2

No, no hay nada de malo en aprender varios idiomas y usarlos con bastante frecuencia. En mi día a día puedo encontrarme con Ruby, PHP, JavaScript, CoffeeScript, Python y ocasionalmente C. Conozco todos estos lenguajes bastante bien y pasar de uno a otro simplemente activa un interruptor en mi cerebro. Claro que extraño las características de algunos idiomas cuando voy a otro, pero lo superarás.

Intento tener siempre un idioma que estoy aprendiendo en profundidad y luego otro como "prometedor". De esta manera, siempre tiene un objetivo educativo claro y luego algo en el horizonte. En este momento Ruby es mi idioma principal y estoy experimentando con Go. Probablemente nunca conseguiré un trabajo como desarrollador de Go, pero aprender un nuevo idioma ha hecho que sea un mejor desarrollador.

Cuando entrevisto a un desarrollador, siempre me gusta ver algunos idiomas diferentes en su currículum. Si un desarrollador tiene "C / C ++" o "PHP y Javascript" en su currículum, se ven mucho menos interesantes que alguien que tiene una comprensión firme de 4 o 5 idiomas. Asegúrese de sentirse cómodo en cualquier idioma que enumere, ¡cualquier cosa en su currículum es un juego justo en la entrevista!

En resumen: el uso de varios idiomas regularmente es una señal de un buen desarrollador que se preocupa por su oficio. ¡Sigue codificando!

clérigo binario
fuente
Diría que si el desarrollador dice "C / C ++" en un currículum, me gustaría que ese sea el único idioma (s) allí. Pero con otros lenguajes infalibles, cuanto más mejor.
Codificador
2

Cuando miramos currículums, generalmente buscamos a alguien que sepa varios idiomas. Además, a medida que aumenta la experiencia de una persona, también debería aumentar la cantidad de idiomas que ha utilizado.

En nuestro entorno, a menudo tenemos que abordar problemas nuevos e interesantes y estamos buscando personas que estén dispuestas a participar y resolver esos problemas, ya sea que necesiten aprender un nuevo idioma o no. El problema podría estar en el código que se ejecuta en un escritorio de Windows, un servidor de Windows, un servidor de Linux o en un navegador.

Saber varios idiomas es una señal de alguien con una buena actitud hacia su oficio. Quieren aprender siempre cosas nuevas, así que lo hacen. La falta de conocimiento de varios idiomas es una señal para mí de que una persona solo hace lo mínimo y no está interesada en aprender.

Sarel Botha
fuente
2

Siempre ha sido el caso para las personas programar usando más de un idioma. Cuando las personas usaban ensamblaje, tenían que aprender un nuevo lenguaje ensamblador cada vez que cambiaban las arquitecturas.

Cuando las personas estaban haciendo COBOL o Fortran, también solían hacer RPG y / o JCL.

En Unix, las personas trabajarían con C, sed, awk, script de shell y casi todo en el fregadero de la cocina de Unix (casi todas las herramientas de línea de comandos en Unix son su propio DSL muy especial).

En DOS, las personas estarían programando en Turbo Pascal o C además de los scripts por lotes. Más tarde, cuando llegó Windows, era VB o algo así como PowerBuilder junto con SQL y posiblemente scripts de instalación por lotes.

Hoy en día, es un hecho que las personas "trabajan" con más de dos idiomas en un día determinado (y por "trabajo" me refiero a hacer una codificación real del día a día o tener conocimientos prácticos). Java o C # o VB mezclado con JavaScript y SQL como mínimo. Luego, entran en juego otros idiomas para las secuencias de comandos de lotes / trabajos y similares. Luego, para cada idioma, tiene un marco que implementa un DSL interno, un mini-lenguaje por derecho propio.

Por lo tanto, no solo es beneficioso trabajar con más de un idioma, sino que es necesario. No hay forma de construir un sistema moderno y complejo con un solo lenguaje (y por "compilar" no me refiero solo a codificar basura que se compila, sino a construir algo con un diseño decente).

Demonios, saldré de apuros y diré que esperaría que los niños en la universidad dominen dos o más idiomas si se toman en serio su profesión.

Entonces, con respecto a su pregunta:

Mi pregunta principal es, ¿es prudente para mí continuar haciendo esto o debo continuar el desarrollo en C #? ¿Me perjudicaría a largo plazo (tenga en cuenta que mi objetivo principal no es ser un gato o todos los oficios) o es una buena práctica hacerlo?

Entonces, una respuesta corta, no, usar o cambiar entre idiomas no te dará los piojos. Saber más de un idioma no lo convertirá en un experto en todos los oficios, y no hay forma de que un desarrollador se convierta en un experto al no poder usar más de un idioma.

luis.espinal
fuente
1

Cuanto más tenga que comparar en referencia a su (s) idioma (s) principal (es), mejor comprenderá las compensaciones de diseño que se hicieron para hacerlo particularmente fuerte o débil en ciertas cosas y aprovechar / compensar esas cosas. Domina al menos uno, pero no te preocupes por ser un gato de muchos otros. Eso solo se ve bien.

Es mejor preguntar cómo se ve el currículum vitae con solo un idioma de los desarrolladores "senior". La respuesta a esa pregunta es: "No estoy muy interesado en lo que hacen para ganarse la vida".

Erik Reppen
fuente
0

Dos idiomas pueden ayudarte o no, eso depende. No te hará daño, eso es seguro. Muchos desarrolladores tienden a pensar que usar algo más aparte del 'idioma principal' es pura pérdida de tiempo, pero estoy totalmente en desacuerdo. Aprender otro idioma (y usarlo) es un beneficio puro: le brinda una perspectiva diferente sobre cómo resolver problemas. Puede suceder que comience a usar uno de los idiomas para tareas particulares en todo momento (como me sucedió después de que tuve la oportunidad de aprender y usar Python).

MaciekTalaska
fuente
0

En esta situación, no está preguntando acerca de cambiar de JAVA a C # y viceversa todo el tiempo, sino que está utilizando C # y PHP, lo que realmente no es un gran problema.

Suponga que desea hacer algunas cosas basadas en la WEB donde está utilizando una pila WAMP (Windows / Apache / MySQL / PHP) y C #. Utiliza C # para escribir algunos servicios basados ​​en SOAP y luego usa PHP para consumirlos.

Esto me parece totalmente aceptable.

De todos modos, saber más de un idioma es bueno. Mientras mas sabes es mejor. Bibliotecas PHP / C # / Java / Python / javascript [JQuery por ejemplo]. Sé útil para tantas personas como puedas.

PSU_Kardi
fuente