¿Qué lenguajes de programación necesito aprender para ser un buen ingeniero en mecatrónica y para fabricar / desarrollar instrumentos médicos?

En este mundo hay idiomas de alto nivel y hay idiomas de bajo nivel. Aunque no soy ingeniero, me imagino que, incluso en esta etapa de desarrollo, los instrumentos médicos suelen ser directamente programables con lenguajes de bajo nivel, como ensamblador o C / C ++. Esto es lamentable porque los seres humanos tienden a pensar mejor en niveles mucho más altos de abstracción.

Otra cosa a tener en cuenta es que la mayoría del trabajo científico y de ingeniería implica cálculos o resolución de problemas que también se realiza mejor en algún nivel de abstracción conveniente. Existen numerosas bibliotecas para usar con Python para realizar análisis numéricos, álgebra simbólica, optimización, etc.

Por estas razones, te sugiero que aprendas Python. La ventaja es que es fácil de aprender. Y más allá de eso, muchas de las abstracciones más comunes que el mundo de la informática ha inventado en las últimas décadas se han puesto a disposición del programador de Python.

Podrías decir: “¡Pero si intento escribir un programa en Python, no podré usarlo en un instrumento médico!” Ofrecería un par de respuestas a eso.

  • Es inmensamente más fácil resolver problemas en algoritmos en Python que en C. Ahorrará tiempo haciendo esto. Dado que el código simple de Python se puede escribir para parecerse al código C, es fácil de traducir.
  • ¡Hay medios de traducir máquinas Python a C!

Por cierto, llevo escribiendo código desde 1969; involucrando código de sistemas operativos, ciencia e ingeniería, bases de datos, ensayos clínicos, etc. Fortran, lenguajes ensambladores, JPL, Basic, Algol, Cobol, SPL, NEWP, C / C ++, Snobol, Icon, Javascript, Java, HTML, Perl, Python y otros.

Deberías aprender C.

No te molestes con el ensamblaje de aprendizaje, solo ten en cuenta. Muy pocas personas codifican en ensamblaje por elección. La mayoría de la gente necesita lidiar con la auditoría de código de bajo nivel para aplicaciones de alto rendimiento o alta seguridad. Los dispositivos de alta seguridad a veces se benefician de la auditoría de código de bajo nivel, pero rara vez lo hacen. En cualquier caso, el proceso está altamente automatizado, y si está muy familiarizado con C, entonces recoger el ensamblaje no es un problema. Si trataste de aprender ensamblaje antes de aprender C, te espera un viaje largo y frustrante.

C ++ es opcional. Las personas a menudo confunden C y C ++ para lenguajes completamente diferentes. En realidad, C ++ mejora significativamente C, pero en realidad puede continuar usando las funciones C y C dentro de los proyectos C ++. Estas nuevas características, como la Programación Orientada a Objetos, son útiles para algunas cosas, pero no son particularmente adecuadas para dispositivos de nivel inferior, y te obligan a usar OOP en aplicaciones que no las necesitan o no son adecuadas para tenderá a compilar código menos eficiente a menos que tenga mucho cuidado con él.

La gente habla mucho del Arduino. Si bien el lenguaje utilizado es C ++, los paradigmas utilizados son casi todos de procedimiento, por lo que realmente no está obteniendo los beneficios de C ++. El código que escriba podría ser C pero con un espacio de nombres más limpio.

Como tal, sería mejor dominar C primero antes de agregar C ++ a su conocimiento. Si tuviera que aprender C ++ primero, y luego volver a C, puede confundirse por qué ciertos métodos ya no funcionan.

Soy administrador de sistemas para un laboratorio que realiza secuenciación de ADN para una universidad de investigación, y he visto secuenciadores de ADN / ARN implementados en plataformas Windows y Linux. He visto código para analizar los datos escritos en C, C ++, Perl, Java, Python y D (pero se trata de los datos de salida de los secuenciadores, no de cómo se controlan los robots de secuenciación).

La vida de nadie se ve directamente afectada por estas máquinas. No son máquinas de infusión de drogas, respiradores, etc. Pero algunos tardan semanas en realizar una muestra de datos, y las CPU que los controlan califican como entornos mini HPC (computación de alto rendimiento) (en algunos casos, hay 6 por separado servidores que controlan estas máquinas).

Dudo que haya un lenguaje requerido para programar dispositivos médicos.

Lo que necesita comprender es la programación en tiempo real / robótica: el lenguaje específico es irrelevante, aparte de que admite la programación. Un aspecto importante (que puede ser más fácilmente apreciado por un ingeniero mecánico o un ingeniero biomédico) es que DEBEN funcionar sin fallas notorias indefinidamente. (A excepción de los núcleos del sistema operativo, ciertos demonios de red y algunas otras piezas especiales de software, la mayoría de los programas se completan en unos segundos como máximo, y la mayoría del resto se ejecuta hasta su finalización. Como resultado, para aquellos de corta duración programas, ciertos tipos de manejo de errores nunca se ejercen, incluso si están codificados. Ciertos tipos de gestión de recursos no importan).

Jef Wu mencionó el Arduino. La última vez que examiné el Arduino, su lenguaje de programación era un SUBSET de C ++. (Fue suficiente para mí programar un simple cazador de luz en unas pocas horas mientras aprendía a programar el Arduino; estoy mucho más familiarizado y cómodo en C que en C ++).

Si tiene el tiempo, la energía y el dinero para comprar y explorar un kit Arduino con algunos motores y sensores, le dará una experiencia independiente en robótica. Eso podría ser bueno (experiencia) o malo (aprender malos hábitos).

Hola
Gracias por el A2A.

Definitivamente creo que deberías aprender C ++. Es el primer idioma que aprendí. Ahora, antes de que realmente pienses que hay algo mal con esta vista, espera y piensa. ¿Hay muchas personas que se quejan de lo difícil que es C ++? ¿Pero cuánto tiempo han dedicado? Muchas veces las personas que se quejan del idioma deberían decir “No me gusta porque me lleva demasiado tiempo aprender” o “No estoy preparado para dedicar el tiempo requerido”. Pero algo sucede cuanto más sabes sobre el idioma, piensas para ti mismo “está bien, aprendí algunos trucos geniales en este momento” He ahorrado mucha memoria al usar eficientemente mis estructuras de datos, y nuevamente “Tengo menos pérdidas de memoria ahora”. O evito muchas copias innecesarias de la estructura de datos utilizando correctamente punteros y referencias. Entonces piensas, “está bien, qué más puedo hacer”, sientes curiosidad y aprendes más. Cada día descubres un nuevo algoritmo de C ++ 11 que es más eficiente que lo que sabías antes. Entonces, pide un libro sobre C ++ 11 de Amazon y trabaja en los ejercicios. Luego descubres que C ++ 11 tiene algunas características excelentes que mejoran la eficiencia del código. El poder del lenguaje es el control que se le da al programador y cuando se usa correctamente le ofrece una gran satisfacción al programador, luego, en algún momento, después de resolver suficientes problemas, se mira en el espejo y decide unirse a TopCoder. El lenguaje es tan vasto que siempre hay algo nuevo que aprender, incluso si no lo sabes todo, todavía te ofrece mucho que puedes usar en términos de C ++ 11, esto te anima a saber más, en realidad se vuelve divertido ????? Sí, lo hace y te encuentras leyendo textos de C ++ 11 en la noche después del trabajo y resolviendo algunos problemas. Hazlo vale la pena. También use C ++ 11 es muy ordenado.

Si vas a aprender solo un idioma, ese será C.

Pero creo que necesitarás más que eso.
Le sugiero que siga este orden: C, Python, Forth, C ++, cualquier otro.

Muchos idiomas entran en la categoría de “otros”, y cuáles querrá aprender realmente depende de cuáles estén siendo utilizados por sus compañeros: cada lugar de trabajo es ligeramente diferente.
Haskell es el único lenguaje que según esa lista está en “otros” y que eventualmente puede revelarse como asombrosamente útil (pero realmente depende de lo que esté haciendo). Si sospecha que puede estar en un curso que conduce a un encuentro cercano con Haskell, estudíelo inmediatamente antes o inmediatamente después de Forth en la lista anterior.