Como programador, ¿debo conocer los lenguajes de programación de bajo y alto nivel? [cerrado]

18

Me contactaron para hacer un trabajo de control remoto de pantallas LED a través de TCP / IP, pero mi experiencia y preparación es principalmente sobre lenguaje de programación de alto nivel. Le dije eso a la persona que me contactó sobre el trabajo y él me dijo que:

"si te llamas programador deberías saber todas estas cosas"

¿Debería un programador realmente conocer los detalles de la programación de bajo nivel? ¿O puedo tratarlo como un concepto de caja negra, como conocimiento teórico pero no necesariamente haciéndolo o implementando soluciones de lenguaje de bajo nivel, teniendo en cuenta que la programación de bajo nivel no es mi experiencia?

trabajo
fuente
8
Al programar en un nivel alto, debe enmascarar los niveles más bajos de abstracción, o de lo contrario no haría nada. Sin embargo, es bastante útil poder trabajar en niveles más bajos, simplemente no intentes hacer todo desde todos los niveles de abstracción a la vez. No es necesario, pero si no lo hace, no solicite trabajos de bajo nivel.
1
@delnan: Al trabajar en el nivel superior, por supuesto, es necesario enmascarar los detalles del nivel inferior. Sin embargo, creo que todos los programadores también deberían saber cómo funcionan las máquinas que están programando en el nivel inferior. No es necesario que el conocimiento sea demasiado detallado: basta con saber cómo construir una computadora básica desde cero.
Programado el
44
"Si te llamas programador, deberías saber todas estas cosas". Si te querían tanto que maldecían por tu falta de experiencia, algo está muy mal. Ignoraría su comentario por no tener ningún sentido. O te quieren con tu fondo, o no te quieren y no deberían maldecirte por el fondo que no tienes.
S.Lott
3
Otro caso de "¡Uf, me alegro de haberme perdido esa bala!" ¿Realmente no quieres trabajar para o con un snob así?
Edward Strange
2
@Schedler: y si no están quemando sus propios tableros, son novatos totales.
Edward Strange

Respuestas:

37

Su contacto no sabe de qué están hablando. Hay muchos lenguajes, metodologías, tecnologías, etc., que una sola persona no puede conocer todos los detalles necesarios muy bien. Lo que debe saber como programador es cómo aprender lo que necesita para hacer el trabajo y tener un enfoque de resolución de problemas que pueda aplicar para llegar a una solución, sin importar el lenguaje de programación que necesite usar.

Admitir lo que no sabe está bien, pero también puede demostrar que puede aprender lo suficiente como para lograr el resultado deseado, sin importar a qué se enfrente. Los buenos programadores son simplemente buenos solucionadores de problemas que pueden implementar sus soluciones en varios lenguajes de programación.

No estaría trabajando para alguien que tenga la actitud que tiene tu contacto.

Bernardo
fuente
44
+1: El comentario no tiene sentido en primer lugar.
S.Lott
Aunque apuesto a que hay muchos desarrolladores solo para asambleas que estarían encantados de cobrarlo por hora.
Erik Reppen
22

"si te llamas programador deberías saber todas estas cosas"

Estoy totalmente en desacuerdo con esta afirmación. Esto sería como pedirle a un chef que cocine cualquier cosa, a un conductor que opere cualquier tipo de vehículo motorizado o a un médico que conozca todas las enfermedades, lo cual es una suposición ridícula.

Para ser un programador, uno tiene que saber dar software de escritura en algún idioma para realizar alguna tarea de manera automatizada. Los idiomas y las tareas variarán de un programador a otro, al igual que los platos que un chef sabe cómo preparar, un conductor sabe cómo operar o un médico sabe cómo diagnosticar variará dependiendo de qué tan especializado quiera ser en cada profesión.

JB King
fuente
2
Sí, hasta que se rompa una abstracción y no tengan idea de por qué su código presenta un problema de rendimiento, por qué alguna biblioteca externa está bloqueando / corrompiendo datos, etc. En mi experiencia, los programadores que solo conocen lenguajes de alto nivel simplemente no son tan buenos en su trabajo como los que pueden hacer ambas cosas.
Ed S.
44
Te estás perdiendo el punto. Sí, los programadores de alto nivel deberían poder comprender los aspectos de bajo nivel, pero ¿debería saber cómo escribir una actualización de firmware para un enrutador Linksys?
maple_shaft
77
Sin embargo, creo que deberían saber cómo averiguarlo. Una gran parte de la programación moderna es saber qué recordar y qué archivar como referencia.
Michael K
8

Hablado como una persona que nunca escribió una línea de código en su vida. Esta será la misma persona que sentirá que deberías poder hacerlo en la mitad del tiempo que cotizas. No discutas con un idiota.

Mostró mucho más conocimiento y carácter al conocer sus limitaciones. Esta persona habla de cosas que no sabe nada.

Supongo que todo carpintero debería saber tallar un mueble adornado. Si un piloto puede volar un avión, puede volarlos a todos.

JeffO
fuente
Estoy de acuerdo, por mi parte, es como decir que, como médico, debes saber cómo realizar una cirugía a corazón abierto. Pero en la vida real, sabes que debe ser un especialista para hacerlo, pero en la programación de la diferencia es difícil saber cuándo lo ves desde afuera como "todos los programadores poderosos".
trabajo
6

La mayoría de los programas de CS en la escuela le brindarán algunos conocimientos en programación de bajo nivel. Yo, por ejemplo, tenía clases de ensamblador usando el procesador 8088 (OK ... así que eso me data un poco). Creo, sin embargo, que muchas escuelas de oficios de hoy en día eluden ese conocimiento; si no es cierto, comente un comentario.

En pocas palabras, siempre es bueno saber qué sucede en el nivel del chip; además, sus idiomas de alto nivel eventualmente terminarán allí cuando se ejecute.

Sin embargo, que alguien te diga que no eres un programador porque actualmente no sabes que la programación de bajo nivel es ignorante. Si necesita tener esas habilidades para el proyecto actual, debe tener suficiente inteligencia o motivación para aprender las habilidades que necesita y luego aplicarlas.

Tendría que considerar seriamente no tomar ese proyecto si el cliente ya te habla de esa manera, nunca sabes a dónde podría llegar.

Catchops
fuente
6

Realmente lo desprecio cuando la gente dice "Necesitas saber X para llamarte programador". De Verdad? Bueno, algunas personas trabajan en COBOL todo el día y LO AMAN. Puede que se hayan vuelto tan buenos en eso y en su dominio del problema que a su lado todos somos pretendientes.

En serio, respeta a las personas para resolver los problemas que enfrentan de maneras interesantes y interesantes. Comprenda que la gran resolución de problemas proviene de diversos orígenes. No si han dominado una supuesta "lista de verificación" de habilidades que todos deben saber para que todos puedan pensar de la misma manera. Ese es el OPUESTO EXACTO de lo que queremos. La "lista de verificación" de todos es y debería ser diferente. Cuanto más diferente, mejor. La programación es la resolución de problemas en estos días. Respeta a los que lo hacen bien y comprende que todos vienen a la mesa con diferentes puntos fuertes. Esa es la única forma en que nos vamos a ayudar mutuamente a trabajar eficazmente en equipo. El hecho de que saber "C" o algo realmente ayude a este chico a ser increíble, no significa que no lo hagas

Doug T.
fuente
3

Te sugiero que leas esto:

http://www.joelonsoftware.com/articles/LeakyAbstraction.html

Como se explicó, cuando usa una abstracción, el nivel inferior siempre influye en lo que está haciendo. Esto puede ser en términos de rendimiento, causa de falla, razones de seguridad, etc.

Definitivamente, ahora deberías hablar de estas cosas. No es especialmente un especialista en arquitectura asm o CPU. Pero saber lo suficiente para documentarse cuando necesita saber más es, de hecho, imprescindible.

deadalnix
fuente
Tal vez necesito aclarar que sé cómo funciona TCP / IP =), mi punto es implementar algo como sockets sobre TPC / IP está más allá de mi conocimiento, ¿puedo aprenderlo sobre la marcha? por supuesto, ¿quiero aprenderlo? en realidad no, principalmente porque no me siento seguro de que el resultado final esté completamente probado para un entorno de producción o cumpla con todos los requisitos en el tiempo dado. Solo pienso en el tiempo que me llevó alcanzar el nivel de experiencia en lenguaje de alto nivel, y no creo que el tiempo dado sea suficiente para conocer todas las trampas, lo que me da una sensación de riesgo.
trabajo
Este es el punto: no necesitas ser un experto. Pero necesitas saber lo básico. De este modo, sabrá cuáles son los límites de la abstracción que está utilizando: ese es el mínimo y sabrá cómo documentarse cuando se alcance el límite.
deadalnix
2

Su argumento es un buen ejemplo de la falacia lógica No True Scotsman .

Sin embargo, la diferencia entre la programación de bajo y alto nivel no es el lenguaje, es el dominio del conocimiento de la aplicación. Asignar un valor a verdadero podría significar encender un LED o habilitar eventos de clic del mouse en un widget. Al idioma no le importa.

Por ejemplo, eche un vistazo a esta biblioteca para trabajar con una matriz LED en un arduino. Aquí no se trata de ciencia espacial, y realmente cualquier programador podría entenderlo con un poco de esfuerzo si no presentara un "nivel bajo, ¡oh, no!" bloqueo mental.

Karl Bielefeldt
fuente
1

Cada lenguaje de programación tiene sus propios pros y contras. Aprender algunos le daría una gran percepción sobre qué usar y cómo usarlo de manera efectiva cuando se le da un proyecto.

Como programador, puede especializarse en un PL específico, utilizándolo como su única herramienta para resolver cualquier problema, también puede conocer mucho PL pero especializarse en nada y mucho más entre estos extremos.

Tal vez la persona que le dijo que "Frase" está frustrada, tal vez usted no fue la única persona de contacto con la que ha hablado.

Conocer el problema y saber qué conjunto de habilidades se necesitan para poder resolver el problema de manera efectiva es un buen rasgo de un programador. Desafortunadamente en su caso, dado que no tiene el conjunto de habilidades requerido, tal vez pueda referir a su persona de contacto a otro programador con el conjunto de habilidades necesario.

salud,

Wardy

Dorward Villaruz
fuente
1

Tener el conocimiento teórico es bueno. Ser capaz de aprender el idioma de bajo nivel cuando es necesario es muy importante.

Pero en cuanto a "si te llamas a ti mismo un programador, deberías saber todas estas cosas", ¿quién puede saberlo todo sobre todo? ¿Incluso antes de que los hagan?

FrustratedWithFormsDesigner
fuente
-2

Voy a reformular

"si te llamas programador deberías saber todas estas cosas"

A

"Si te llamas programador, debes saber lo suficiente como para poder aprender rápidamente todas estas cosas"

Parag
fuente