¿Qué tipo de papel juega la "historia cultural del lenguaje" con una plataforma?

15

Recientemente me topé con estoArtículo de hace unos años. Sostiene que las diferencias significativas en la cultura que rodea a VB y C #, no las diferencias reales en el lenguaje, contribuyen a que los codificadores de C # sean generalmente más talentosos que los codificadores de VB. Obviamente, eso causó muchas guerras de llamas y la pregunta de si C # ers o VBers son los más tontos nunca será respondida. Dicho esto, los escritores afirman que la cultura que rodea a una plataforma en particular contribuye a la calidad del equipo aún podría ser plausible. Por ejemplo, a pesar de que Java es más eficiente para desarrollar aplicaciones en este momento, un equipo de desarrolladores de Google Go parecería tener un calibre más alto en promedio que un equipo de desarrolladores de Java, ya que para aprender Go, un desarrollador probablemente tiene ser un adoptante súper temprano y un genio de la piratería de fronteras. Entonces, en pocas palabras,¿Cómo afecta la cultura que rodea a una plataforma u otra la calidad del desarrollador promedio en esa plataforma, si es que lo hace?

Morgan Herlocker
fuente
¿Es un día de C # vs. VB.NET?
@ DeveloperArt- Esa no es mi intención. De hecho, la pregunta que tuve fue interesante debido a que el artículo parece muy anticuado hoy, pero el concepto podría salvarse. El artículo hace que parezca que los desarrolladores de C # son genios. Soy uno, así que sé de primera mano que todos podemos ser igual de descuidados cuando el estado de ánimo golpea.
Morgan Herlocker
1
@Developer Art: Ayer leí ese artículo, y estoy bastante seguro de que fue un enlace publicado en una respuesta aquí que me llevó a ello. Tal vez así es como el profesor Plum también lo golpeó: una pregunta de C # vs.VB.NET lleva a otra. :-)
Carson63000

Respuestas:

8

Pregunta realmente interesante. Mi opinión personal es que es una que se pregunta con demasiada frecuencia y que realmente no retiene agua.

Los script kiddies (y las compañías que los contratan) permiten que el lenguaje de elección dicte su estado entre los escalones de los "programadores". Los buenos ingenieros no pueden preocuparse menos por el idioma de elección, sino concentrarse en resolver los problemas dados de la manera más óptima (obviamente, óptimo es una declaración general y se puede aplicar a muchos factores diferentes). Ya sea que se trate de C #, VB, C ++, Python o ensamblaje escrito a mano, no importa, ya que existe un beneficio claro al usar esa tecnología para resolver el problema.

En resumen, creo que es más valioso observar la complejidad de los problemas que uno resuelve de manera regular en lugar del lenguaje que usan para resolverlos.

Solo mis dos centavos sobre el tema :)

Demian Brecht
fuente
2
+1: Además, la idea de que hay una cultura VB que de alguna manera trasciende los límites de la compañía es absurda. ¿Cómo se preservaría esta cultura? ¿Reuniones secretas entre programadores de VB fuera del trabajo? ¿Una "unión" o "gremio" de programadores de VB para hacer cumplir esta "cultura"? Después de pasar 30 años rebotando entre cientos de tiendas de TI, puedo decir que la única cultura que he visto es puramente localizada. La elección del idioma no crea esta "otra" cultura a la que se hace referencia en la pregunta.
S.Lott
1
Interesante. Si hizo +1, pregúntese quién votó en contra y por qué: P
Demian Brecht
1
@ S.Lott: Me corrijo entonces (tengo que amar el subproducto de los supuestos;)). La mayoría de las veces, he recibido votos negativos sobre temas como estos sin realmente recibir ningún comentario, lo que a veces puede ser valioso y proporcionarme información de la que anteriormente no estaba al tanto :)
Demian Brecht
1
@prof: ¿La automatización realmente lo hace inferior, o crees que es superior porque entienden qué atajos pueden tomar para lograr el mismo resultado, pero de manera más eficiente? :) Por supuesto, esto es una generalización excesiva y casi imposible de responder con precisión. Estoy un poco cerca de que los codificadores de Go sean más apasionados. Todavía puedes encontrar personas que sean tan apasionadas por Fortran. Se podría , sin embargo, me llevan a creer que el programador Go es más apasionado de la nueva tecnología y prácticas, lo cual es una buena cosa en mi humilde opinión :)
Demian Brecht
1
@Prof Plum: "la elección de plataforma / idioma no tiene nada que ver con la calidad promedio del desarrollador". Correcto. ¿Cómo puede ser de otra manera? Más que nada, la cultura de la organización importa. Los codificadores de Google Go, ellos mismos, son solo personas. La organización limita a las personas a VB o las alienta a usar Go. Las personas son todas las personas.
S.Lott
4

La calidad del código desarrollado en cada uno de estos lenguajes se basa en estas filosofías fundamentales y menos en los desarrolladores individuales.

Cada idioma tiene una cultura a su alrededor, porque cada idioma fue desarrollado por una razón por alguien con una agenda y una filosofía subyacente de por qué su idioma iba a ser mejor en algo de lo que existía en ese momento.

Al igual que las religiones, los lenguajes de programación tienden a atraer a personas que ya tienen la misma predisposición a los principios y filosofías centrales del creador del lenguaje.

Ejemplo sobre calidad percibida de soluciones

En un campamento de Microsoft tienes:

La filosofía de C # es que está más orientado a objetos, promueve modismos más modernos y requiere más conocimiento para hacerlo correctamente y, por lo tanto, debe proporcionar soluciones de mayor calidad. Esto es lo que atrae a la gente sobre VB.

En el otro campamento de Microsoft:

La filosofía de VB es que puedo rápidamente y con poco conocimiento o esfuerzo construir algo que le permita a alguien hacer clic en un botón y hacer algo útil y de valor comercial, cómo hacerlo no es tan importante. Esto es lo que atrae a la gente sobre C #.

Aquí hay algunas tomas de lengua y mejilla sobre los idiomas y sus filosofías:

Las personas de Perl tienden a preocuparse por exactamente lo opuesto a las personas de Python.

La gente de Java se preocupa por ganar dinero.

Los lenguajes JVM (Groovy, Scala) se preocupan por el JMV y no por el lenguaje Java.

Todos los lenguajes específicos de Microsoft (VB, C #, F #, C ++ administrado) tienden a preocuparse por ganar dinero en Windows.

A la gente de Erlang le importan las cosas que a otras personas no les ha importado, y no aprecian lo que no saben.

A la gente de Lisp no le importa lo que los demás piensen que les importa.

Lo que les importa a estos grupos da forma al lenguaje, su desarrollo y su comunidad.

Las filosofías cambian con la experiencia y la necesidad.

Adopté ASM y BASIC porque en 1983 eso fue todo lo que tenía. Quería escribir juegos y demos, esas fueron las herramientas para hacerlo. Principalmente ASM para demos.

Adopté C y luego C ++ cuando era la única forma de escribir cosas como el renderizado 3D y prácticamente cualquier otra cosa que fuera crítica en cuanto al espacio y el tiempo. No era ASM, así que lo aprendí.

Adopté VB para ganar dinero, era lo más parecido a los entornos de desarrollo Scala, Director y CanDo a los que estaba acostumbrado en Amiga. Estoy de acuerdo con la filosofía de desarrollo rápido

Adopté Java desde el principio para ganar más dinero. Gané dinero con VB hasta 1999 y lo dejé atrás cuando Java 1.2 se estabilizó y maduró y la web ya se había puesto en marcha por completo, tenía 4 años de experiencia en Java cuando la gente realmente comenzó a tomarlo en serio. Estuve de acuerdo con la escritura una vez, ejecutar en cualquier lugar en que cuanto más lugares se ejecutó mi código, más fácil sería poder venderlo. filosofía.

Adopté Python tarde en su línea de tiempo, 2005 porque rascó una picazón que Java no hizo. Necesitaba escribir código rápidamente para usar algunas bibliotecas que solo estaban disponibles en C y también necesitaba hacer prototipos rápidos de servicios web. Python fue más rápido y menos código para hacer lo mismo en Java. Algunas cosas se pusieron en producción cuando Java se quedó Python, muchas cosas nunca llegaron a la naturaleza. Estuve de acuerdo con sus baterías incluidas, las filosofías de un solo idioma, así como las demás.

Adopté Lua cuando necesitaba poner un motor de secuencias de comandos ligero en mis programas C ++ y Java. Esto fue mucho antes del soporte JSR233 en Java. Estuve de acuerdo con la incorporación de un lenguaje de secuencias de comandos con todas las funciones que sea fácil de usar, debería ser una simple filosofía Lua.

Adopté Erlang en 2006 cuando comencé a necesitar una escalabilidad masiva y una ejecución multinúcleo relativamente indolora en problemas altamente paralelos y tengo una ejecución multiplataforma. ** Estoy de acuerdo con su estado de no compartir, pasar mensajes, filosofía de estado inmutable. * 8

Adopté Objective-C cuando comencé a necesitar construir aplicaciones OSX e iOS. Estoy de acuerdo con que agrega la orientación correcta de objetos a C para mejorar su filosofía. También para ganar mejor dinero.

Adopté JavaScript oficialmente en 2009 porque estaba de acuerdo con la filosofía CouchDB y usa JavaScript. Todavía no me gusta JavaScript cuando tengo que lidiar con el DOM.

Todavía no he adoptado oficialmente a Lisp, ¡pero eventualmente lo haré! Estoy de acuerdo con los que no saben lisp están condenados a reinventar su filosofía.


fuente
0

Una pregunta interesante de hecho. Es una de esas en las que entiendes la respuesta en el nivel subconsciente pero te esfuerzas por ponerla en palabras.

Se ve mejor como un ciclo de causalidad.

La cultura es responsable de la composición "étnica" de los desarrolladores atraídos por la plataforma. Esa composición a su vez define las cualidades del programador "promedio". La calidad de los desarrolladores que ahora usan la plataforma influye en la cultura o su percepción externa, lo que en consecuencia tiene un efecto en los desarrolladores que llegan a la plataforma o la abandonan. El valor de la "calidad" cambia como resultado.

He estado tratando de llegar a reglas específicas, pero me resulta difícil generalizar. Necesitamos investigar por separado cada plataforma. Algunas observaciones que he hecho:

  • La velocidad a la que se desarrolla, extiende, mejora una plataforma en particular tiene una correlación directa con la calidad de los desarrolladores. El flujo constante de nuevas funciones y herramientas brillantes atrae a desarrolladores entusiastas (que en promedio son más capaces de realizar un trabajo de calidad) y repele las mentes conservadoras que están irritadas por el esfuerzo constante de aprendizaje.

  • Los límites menores que ofrece una plataforma, incluso a costa de un mayor riesgo de dispararse en el pie, atraen igualmente mentes experimentales entusiastas.

  • Cuanto más complejas son las cosas que uno necesita comprender y dominar para usar la plataforma, igualmente atrae a personas resueltas y ahuyenta a los desarrolladores perezosos.


fuente
¿Cómo trasciende esta cultura los límites de la empresa?
S.Lott
1
@Lott Technology casi siempre trasciende las fronteras culturales. Hay grandes divisiones culturales entre los diferentes usuarios del sistema operativo. Conozco a muchos diseñadores gráficos e ingenieros de audio que pensarían que era un factor decisivo ir a una empresa que usara cualquier cosa menos Mac. Mac ha fomentado una cultura alrededor de esos dos grupos en particular que es completamente tangible. Los lenguajes de programación son herramientas como Photoshop y GIMP, por lo que no es sorprendente que tengan culturas construidas a su alrededor. Si no lo hicieran, entonces no tendríamos guerras de llamas.
Morgan Herlocker
@Prof Plum: sus ejemplos no se asignan a la "cultura" basada en herramientas. Tus ejemplos son exactamente lo contrario. La cultura actual (ingenieros de audio) elige herramientas comunes. No todos los usuarios de Logic Pro se ven obligados a convertirse en ingenieros de audio porque de alguna manera Logic Pro crea una cultura. Creo que los ejemplos en su comentario (mismo trabajo -> herramientas similares) son una excelente prueba de que no hay "historia cultural del idioma". Más bien, existe una cultura de caso de uso común o una cultura de trabajo de usuario final común.
S.Lott