Trabajo principalmente como desarrollador C (y Perl), porque la aplicación es madura, con una historia bastante larga (es decir, desarrollada originalmente a principios de los años 90). El paquete de aplicaciones originalmente fue desarrollado para estaciones de trabajo gráficas basadas en Unix. Mi trabajo anterior era una situación similar, una aplicación madura distribuida que se desarrolló en múltiples plataformas Unix, originalmente a principios de la década de 1990, y debido al tamaño y madurez del código fuente, sería difícil justificar simplemente tirar esa base de código para mover a un nuevo lenguaje de desarrollo o incluso migrar a C++.
Me imagino que todavía hay una serie de aplicaciones internas más grandes (usadas para fines internos, no vendidas como producto) escritas en C que aún se mantienen. No del todo diferente a las aplicaciones masivas de COBOL que las grandes compañías (seguros, finanzas, banca) que también se mantienen.
Para nueva desarrollo en C, otros ya han mencionado el mercado de sistemas embebidos, donde el desarrollo es a menudo para el software de puesta en ROM o EEPROM memoria/flash en el que se le conoce como firmware, por microcontrollers (PIC de Microchip, Atmel AVR, 80C51, 68HC11, etc.), donde el tamaño del código objeto, el uso de RAM y el rendimiento son importantes, por lo que es deseable el uso de un lenguaje de programación con menos abstracciones o suposiciones genéricas o de alto nivel.
Una cosa importante acerca de los buenos a los grandes programadores en C, es que se esperan si no se requiere saber más sobre estructuras de datos y algoritmos. Priority Queues, Binary Trees, MergeSort, QuickSort, Knuth-Morris-Pratt y Karp-Rabin deberían ser al menos vagamente familiares. Esto se debe a que el lenguaje C carece de STL, Boost, CPAN y otras bibliotecas estándar disponibles en otros idiomas. Esto se debe, al menos en parte, a que la mayoría de las implementaciones son específicas de tipo (debido a la falta de plantillas o de tipado dinámico o mecanismo similar) para tener rutinas suficientemente genéricas que sean útiles en la práctica.
Conocer más de un lenguaje de programación no es malo, incluso si no se siente lo suficientemente cómodo como para afirmar que es lo suficientemente competente para programar en el profesional de idiomas adicionales. Una secuencia de comandos "moderna" o un lenguaje de desarrollo web "moderno" podría ser una buena combinación. Perl, Python y Ruby son buenos candidatos potenciales.
Para la experiencia de programación, los lenguajes funcionales como LISP, Scheme, Prolog *, ML, Objective Caml, Haskell y Scala son buenos candidatos para hacerte "pensar diferente". Hay que admitir que Prolog es en realidad un lenguaje de programación de lógica declarativa, pero aún se está ampliando la experiencia de programación.
Supongo que después de su última pregunta tonta todavía no leyó las preguntas frecuentes sobre hacer preguntas. Esto no está relacionado con la programación (es decir, escribir código) ... está relacionado con que le paguen por ello. – gnovice
programación es el verbo, la última vez que revisé para ser un programador necesita un trabajo. –
Simplemente usar el verbo "programar" en su pregunta no lo relaciona con la programación. Y no, no necesitas un trabajo para ser programador ... algunos lo hacen como un hobby. – gnovice