¿En cuántos lenguajes de programación se espera que un programador sea un experto? [cerrado]

21

¿La mayoría de los programadores se especializan en una sola pila, dejando otras cosas, o son expertos en varios idiomas al mismo tiempo? Si es más de uno, ¿cuántos es estándar?

Por experto, me refiero a algo más que simplemente conocer la sintaxis de un lenguaje: un experto sabe lo suficiente de bibliotecas, herramientas, entornos y sintaxis estándar para poder escribir programas no triviales sin tener que buscar constantemente cosas o leer libros / tutoriales.

blueberryfields
fuente
2
No creo que haya ninguna respuesta objetiva (o incluso subjetiva) a esta pregunta. Cuanto más experto sea, mejor será para usted, más amplia será su perspectiva. ¿Quiso decir "en cuántos paradigmas de lenguaje de programación un programador debería ser idealmente un experto?"
talonx
66
No estoy de acuerdo con tu definición de experto. Para mí, si tiene que buscar o no las funciones de la biblioteca es mucho menos importante que si puede o no escribir código idiomático en ese idioma. Si puedes pensar en un idioma, al menos estás cerca de ser un experto.
Chinmay Kanchi
1
¿Cómo piensas en un idioma, si tienes que buscar la mayoría de tus palabras en un diccionario para saber lo que significan?
blueberryfields
1
@blueberryfields: La fluidez en un idioma es mucho más que solo vocabulario y más allá de lo básico, el vocabulario es una pequeña parte de él. No es bueno saber que existe una función si no puedes hacer algo inteligente con ese conocimiento. Es mucho más fácil buscar la función que descubrir cómo hacer algo inteligente con ella. Diría que conocer los documentos lo suficientemente bien como para saber rápidamente dónde buscar una función determinada si existe es suficiente conocimiento de la biblioteca. Después de eso, recordará precisamente los que usa y recordará vagamente los que no.
aaronasterling
2
@blueberryfields: Dependiendo del idioma / plataforma , un poco de conocimiento puede ser algo peligroso . Lo que quiero decir es: si una persona afirma saber de memoria muchas funciones de la biblioteca y no necesita leer la documentación, esperaría que esa persona también conozca todos los valores de retorno, las condiciones de excepción y las trampas / advertencias, a la Raymond Chen de memoria, y poder escribir un libro y dar una conferencia a Microsoft / Google, etc. Además de eso, la persona termina cometiendo muchos pequeños errores graciosos.
rwong

Respuestas:

33

El principal beneficio de conocer varios idiomas no es escribirlos directamente. En igualdad de condiciones, prefiero trabajar con un programador de C # que también conozca C, Python y Lisp (por ejemplo) que uno que solo haya pirateado en C #. No es que saber más idiomas sea mejor, es que ser capaz de pensar en problemas en múltiples niveles y desde múltiples perspectivas es realmente útil.

No vale la pena conocer un lenguaje de programación que no cambie su forma de pensar sobre la programación. -Alan Perlis

No se trata de marcar un idioma más, o ponerlo en su currículum; solo necesita comprender sus conceptos subyacentes lo suficientemente bien como para programar en él para obtener el beneficio completo. No obtendrá eso al tener una comprensión básica de la sintaxis.

La respuesta más directa es "depende".

En las empresas más grandes se espera / se le permite especializarse, pero como dije anteriormente, creo que aún hay beneficios en comprender cosas más allá de su herramienta favorita.

En lugares más pequeños, realmente no puedes salirte con la tuya. Por lo menos, generalmente necesita mantener su aplicación y compilarla, y probablemente no debería usar los mismos idiomas para ejecutar registros / mezcla de datos como lo hace para construir su aplicación. Supongo que técnicamente podría salirse con la suya al saber un solo idioma, pero el beneficio de tener un lenguaje bien redactado, fuertemente tipado (o al menos con capacidad de aserción), probablemente compilado hace el trabajo pesado y un lenguaje de secuencias de comandos para mantenimiento / Las tareas de configuración / script parecen bastante grandes. No quisiera prescindir de él, sin duda.

Inaimathi
fuente
3
sí, también amplía mi horizonte - pensando en muchos idiomas para abordar un problema
maz3tt
3
+1 a todo lo que dijo Inaimathi. Piense en un lenguaje de programación como una herramienta. Sí, necesitamos conocer nuestra herramienta muy bien, pero cuando solo sabes cómo usar un martillo, entonces todo podría parecer un clavo
Liviu T.
14

Tienes una pregunta muy interesante:

No creo que ningún programador deba ser un "experto" en un lenguaje específico. Creo que como programadores estamos destinados a ser expertos en programación, diseño de algoritmos, pensamiento en pasos claros, pero un lenguaje de programación es algo que simplemente se aprende.

Un "buen" programador, quiero decir que maneja proyectos de desarrollo sin asustarse detrás del clásico "Nunca he trabajado con eso antes", debe aprender un idioma en menos de 5 días hábiles. Aprende las mejores prácticas, herramientas y bibliotecas principalmente de 2 maneras, 1: lectura y 2: trabajo. O rebotas tu cabeza contra el código o lees un montón de libros.

En unos pocos años siguiendo la premisa de "Los buenos programadores escriben solo código" sin código C # o código C ++ o código Java, se dará cuenta de que después de aprender a desarrollar programas, el lenguaje y las tecnologías no son tan importantes. Claro, sabrás cómo moverte por C # mejor que PHP, pero si has aprendido bien, encontrarás el camino a través de Python si es necesario.

Espero que mis ideas como tú!

David Conde
fuente
+1 "los buenos programadores escriben solo código ... el lenguaje y las tecnologías no son tan importantes" - muy cierto, se necesita una gran exposición para llegar a esa conclusión.
Orbling
Gracias, y lo entendiste bien: 11 años y contando ... :)
David Conde
3

Uno, pero eso no significa que puedas descuidar a los demás. Debe saber lo suficiente para justificar por qué no los está utilizando o conocer sus limitaciones, por lo que puede pedir ayuda cuando sea apropiado.

JeffO
fuente
3

Creo que probablemente depende de su personalidad, hay personas que se deleitan en profundizar en los rincones de un tema, y ​​hay otras personas a las que les gusta tener una visión amplia de las cosas. Probablemente necesite averiguar qué tipo de personalidad es usted. No estoy poniendo uno encima del otro, cada uno tiene sus usos.

Como el primero serás el experto, el gurú, el especialista. Como este último, será de uso más general y posiblemente se utilizará en una variedad de situaciones, pero posiblemente no profundizará ni se profundizará en un tema.

Harald Scheirich
fuente
2

Uno. Pero será mejor que seas muy bueno en eso.

Satanicpuppy
fuente
2

Uno

El que está delante de ti.

Steven A. Lowe
fuente
1
+1 La cantidad de idiomas en los que necesita ser experto es, como mínimo, la cantidad que debe usar. ;-)
Orbling
1

Como dijo Joel en el podcast SO, es mejor saber muchos idiomas y saber cómo / cuándo usar el idioma adecuado para la tarea. Hay cosas que puede hacer mucho más rápido en un idioma que en otro. Creo que sería bueno saber un lenguaje imperativo y un lenguaje funcional, por ejemplo. Muchas veces aprender un lenguaje más duro o más esotérico entrena tu cerebro para ser un mejor programador en general.

chiurox
fuente
1

Ninguno, ya que es probable que haya algunos programadores que no serán expertos en ningún idioma, pero que disfrutan del entorno diverso que tienen y usarán varios idiomas dependiendo de las circunstancias, ya que algunos pueden conocer algunas tecnologías del lado del servidor como PHP, ASP.Net en C # .Net o VB.Net, o Java, un par de lenguajes de secuencias de comandos del lado del cliente como JavaScript o Flash, y esto es sin entrar en ningún hardware utilizado para colocar el material web aquí.

Al mismo tiempo, puede haber algunos programadores que sean expertos en una docena de idiomas o más, ya que eso es lo que estudian con bastante fidelidad la mayor parte del tiempo para mantenerse al tanto de cada idioma.

JB King
fuente
1

Uno, pero debe poder leer de vez en cuando programas no triviales del mundo real que están escritos en algunos otros idiomas. De alguna manera, el que el programador es un experto es como su lengua materna, piensan en él, pero aprender y hablar otros idiomas es muy bueno, ya que muestra que el programador puede apreciar otras formas de pensar. Si pueden pensar en más de un idioma con fluidez como su lengua materna, eso es increíble.

vpit3833
fuente
1

Esta es una buena pregunta, pero no creo que haya un estándar. Normalmente, por lo que he visto, la gente es experta en un lenguaje de alto nivel (C ++, Java, etc.) en un entorno (Windows / Linux, Mac, Solaris). Conocen aproximadamente algún otro lenguaje de alto nivel, pero no lo entienden completamente. (por ejemplo, C ++, la gente de Java se conoce más o menos). Por más o menos quiero decir que pueden comparar el rendimiento de una tarea en el idioma que son expertos y en el otro idioma. Y luego son moderados en algunos de los lenguajes de secuencias de comandos. (por ejemplo, la gente de Linux sabe bash, la gente de Windows sabe VBA, la gente web sabe PHP).
Para mí lo que importa es el conocimiento básico del algoritmo que el lenguaje. Si sus conceptos básicos son buenos, hay menos posibilidades de equivocarse en cualquier idioma.
Pero sí, a veces puede ser útil saber qué idioma podría ser mejor para cada tarea. por ejemplo, el siguiente código es mucho más rápido en pascal que en C.

strcat (A, "Hola"); strcat (A, "Mundo"); strcat (A, "¡Hola!");

Esto se debe a que Pascal guarda la longitud de la cadena en la primera ubicación y, por lo tanto, es fácil saltar a la última ubicación. En C, la terminación de la cadena es '\ 0' y, por lo tanto, tendrá que recorrer toda la cadena para la operación de strcat.

Manoj R
fuente
0

Depende del entorno donde esté programando. En un trabajo anterior, la mayor parte de mi trabajo estaba en Perl; Durante mi tiempo allí, me hice bastante competente. Ahora trabajo en un lugar que tiene programas heredados en tres idiomas que apenas conozco la sintaxis; Se espera que los mantenga además de mi trabajo en nuevos proyectos. Ahora soy menos maestro de cualquier lenguaje, pero creo que he tenido una mejor idea de la programación . Aprendí a pensar de manera más abstracta, ver primero el panorama general y luego buscar la sintaxis y las bibliotecas para completar los detalles.

Bruce Alderman
fuente