Contenido patrocinado
Comentarios de Tom Miller, director de la facultad de Northwestern University MSDS programa.
Hace años, como estudiante de estadística aplicada en la Universidad de Minnesota, aprendí una lección sobre programación en el mundo académico. Al inicio del curso, el profesor dijo:
“No me importa qué idioma uses para las tareas, siempre y cuando hagas tu propio trabajo”.
Tenía experiencia con Fortran pero estaba aprendiendo Pascal por mi cuenta, tratando de adoptar un estilo de programación estructurado.
Tomando la palabra del profesor, programé la primera tarea en Pascal mientras mis compañeros usaban Fortran. La primera tarea llega. Llevo mi trabajo (una lista de programas) al frente del salón y se lo entrego al profesor. Lo mira con curiosidad y pregunta: “¿Qué es esto?”
Le explico: “Soy Pascal. Nos dijiste que podíamos programar en cualquier lenguaje que queramos, siempre y cuando hagamos nuestro propio trabajo”.
A lo que el profesor responde: “Pascal. No leo a Pascal. Sólo leo Fortran”.
Lección aprendida: los académicos no están especialmente abiertos a nuevos lenguajes de programación.
FORTRAN
Fortran fue desarrollado por John Backus en IBM y presentado en 1957. Cuando escuche su nombre, piense en “traducción de fórmulas”. Fortran es muy adecuado para cálculos numéricos, según sea necesario para aplicaciones científicas y de ingeniería. Fortran ha experimentado un resurgimiento recientemente, quizás debido a las demandas computacionales de grandes conjuntos de datos y la supercomputación.
PASCAL
Diseñado por Nicholas Wirth, un informático suizo, e introducido en 1970, Pascal es un derivado de ALGOL. Pascal se alineó con un movimiento hacia la programación estructurada en muchas universidades en los años 1970 y 1980. Se han utilizado variaciones de Pascal para la programación de sistemas en Apple y Microsoft.
Los estudiantes de ciencia de datos de la mayoría de las universidades actuales tendrían una experiencia similar si presentaran tareas en Go, Rust o cualquier otro lenguaje contemporáneo en lugar de Python o R.
Con aplicaciones de aprendizaje automático e inteligencia artificial, Python domina el día. Los científicos de datos pueden sentirse contentos navegando en un barco Python con salvavidas como numpy, pandas, Aprendizaje científicoy TensorFlow por sus lados.
Pero cuidado. Los océanos de datos actuales están agitados. Los tiburones se acercan.
Recuerde las palabras del jefe Brody a Quint en la película. Mandíbulas: “Necesitarás un barco más grande”. Yo sugeriría que se construyera un barco más grande y más rápido con Go.
IR (GOLANG)
Go fue desarrollado por tres informáticos de Google: Robert Griesemer, Rob Pike y Ken Thompson. Conserva las ventajas de rendimiento de C, aunque es más fácil y seguro trabajar con él que C. Go se introdujo en 2009 y ha sido el principal lenguaje de programación de sistemas en Google. Para los sistemas de misión crítica en muchas organizaciones, Go está reemplazando a C/C++, C#, Java y Python. A Go a veces se le llama “Golang” para distinguirlo del juego de mesa Go y proporcionar un término más confiable en los motores de búsqueda.
Carreras en ciencia de datos: el por qué de Go
En una presentación titulada “El por qué de ir”, Carmen Andoh trazó el desarrollo de los lenguajes informáticos desde 1980 hasta 2017. Presentó un argumento convincente para usar Go en grandes proyectos de programación. Su argumento suena cierto hoy.
- Go es máquina eficiente. Supera a los lenguajes que se interpretan y a los lenguajes que dependen de máquinas virtuales.
- Python se unió a la escena informática hace más de treinta años, antes de que prevalecieran los procesadores multinúcleo. Python es un lenguaje interpretado de un solo subproceso, poco adecuado para sistemas que exigen procesamiento concurrente.
- Los científicos de datos pueden estar escribiendo en Python, pero para tareas de computación intensiva es C o C++ el que hace el trabajo. Python es solo el “pegamento” que mantiene unidas las piezas del barco del aprendizaje automático.
- No lleva mucho tiempo encontrar ejemplos de pruebas comparativas que demuestren las ventajas de Go sobre Python y R, los lenguajes líderes en ciencia de datos.
A veces descrito como “C para el siglo XXI”, Go es un lenguaje fuertemente tipado que se compila directamente en código de máquina. Compila mucho más rápido que C y se ejecuta casi tan rápido como C.
C, C++ y C#
C fue desarrollado por Dennis Ritchie en Bell Labs e introducido en 1972. Debido a que proporciona acceso de bajo nivel a la memoria y se asigna fácilmente a las instrucciones de la máquina, C ha sido un lenguaje de programación de sistemas popular durante muchos años. C tiene ventajas de rendimiento sobre la mayoría de los otros lenguajes de programación. C++ y C# proporcionan extensiones orientadas a objetos para C, al tiempo que conservan la estructura y las ventajas de rendimiento de C.
El procesamiento concurrente (nunca es una tarea fácil) es una característica intrínseca de Go
Go ofrece un amplio conjunto de herramientas para aprovechar las computadoras digitales multinúcleo actuales. La ciencia de datos necesita lenguajes y sistemas que puedan manejar las demandas del mundo actual impulsado y intensivo en datos. La ciencia de datos necesita Go.
Go es un programador eficiente. A menudo se promociona Python como fácil de aprender. Pero yo diría que Go es más fácil de aprender que Python. Go es simplicidad por diseño, un lenguaje con sólo veinticinco palabras clave. Go es fácil de leer, fácil de usar y fácil de mantener en el tiempo.
Alegrémonos de que los líderes de la comunidad Go se muestren reacios a agregar nuevas funciones. Donald Knuth tenía la idea correcta. Cuando llegó a la versión 3.14 de Texas, declaró que no habría nuevas versiones del lenguaje, ni nuevas funciones, sólo correcciones de errores. Y con cada corrección de errores, tomaba prestado otro dígito de π (pi).
Un mantra de los programadores de Go: “Mantenlo simple. Mantenlo funcionando”.
Go tiene una estructura bien definida con utilidades de formato para garantizar un estilo común entre los programadores, un estilo que a veces se denomina “Go idiomático”. Go tiene administración de memoria automatizada (recolección de basura), lo que protege a los programadores de errores y pérdidas de memoria. Go es más seguro que C y C++.
Los desarrolladores principales de Go tienen un compromiso con la compatibilidad con versiones anteriores y el sistema de módulos de Go promueve la seguridad, garantizando que se incorporen los paquetes correctos en cada compilación en el momento de la compilación. Go realiza un seguimiento de las versiones de software a medida que crece la pila de software.
Piense en el desarrollo de software como un juego de Jenga. Queremos acceder a los bloques en la parte inferior de la pila, mientras nos aseguramos de que toda la pila no colapse. Vamos, déjanos hacer esto.
Go simplifica la pila de software. ¿Qué pasa con la pila de software y la infraestructura?
Cuando Python (incluso reforzado por C o C++) no está a la altura de la tarea, los científicos de datos recurren a otros lenguajes y sistemas. Aquí hay una supuesta solución a los problemas de rendimiento de Python:
Para implementar soluciones de alto rendimiento, los científicos de datos recurren a Spark, que se basa en Scala, que depende de la máquina virtual Java. Y para brindar un fácil acceso, estos científicos de datos bien intencionados agregan PySpark a la mezcla. ¿Es esta la mejor manera de abordar los problemas de rendimiento de Python? No.
Considere una pila de software más simple. Es ir, sólo ir:
Con ejemplos de código de las conferencias GopherCon en ai-workshop” rel=”noopener” target=”_blank”>2021 y ai” rel=”noopener” target=”_blank”>2023, Daniel Whitenack muestra cómo implementar soluciones de aprendizaje automático e inteligencia artificial en Go. Podemos utilizar Go para crear aplicaciones web inteligentes e integradas, incluidas aquellas que recurren a IA generativa y grandes modelos de lenguaje.
Go representa el lenguaje de programación de sistemas por excelencia para las computadoras digitales multinúcleo de hoy. Go es el lenguaje de la nube. Go es el lenguaje de la informática distribuida. Los científicos de datos que consideraban a Python como el “lenguaje adhesivo” del pasado ahora pueden considerar a Go como el “superpegamento”.
Go se utiliza ampliamente en la industria. Las empresas valoran la seguridad, la simplicidad y el rendimiento de Go. También reconocen las fortalezas de Go como entorno de programación de sistemas backend. Go es ideal para desarrollar servidores web y de bases de datos, interfaces de programación de aplicaciones y microservicios. Go es ideal para implementar sistemas escalables y de alto rendimiento.
Comenzando con Google, el lugar de nacimiento de Go, muchas empresas confían en Go para sistemas grandes y de misión crítica. Si Go es lo suficientemente bueno para Google, netflix, Úber, buzón, PayPal, American Express, Capital uno, Fuerza de ventas, Zillowy muchos otros, entonces Go es lo suficientemente bueno para el resto de nosotros.
Si Go puede proporcionar una plataforma efectiva para construir Estibador, Kubernetes, Prometeo, Grafana, Paquidermo, Terraformar, Multitud de huelga, etcétera, CucarachaDB, Weaviate, una cometa, aerospikey una amplia gama de sistemas distribuidos y microservicios nativos de la nube, Go puede ser una plataforma eficaz para crear aplicaciones de ciencia de datos.
Los educadores en informática y ciencia de datos deberían aprender de la industria. Deberían agregar Go a sus cursos. Esto es lo que estamos haciendo en Northwestern.
Tres lenguajes para la ciencia de datos en Northwestern
Usar Go para la ciencia de datos no implica que debamos renunciar a las cosas buenas que brindan R y Python. Podemos ser multilingües.
No es difícil imaginar proyectos para los cuales un científico de datos podría explorar datos con R, desarrollar modelos con Python e implementar sistemas en Go. Entre los tres lenguajes para la ciencia de datos, Go es el más nuevo. Go tiene una tendencia alcista y ofrece importantes oportunidades laborales.
Programa de ciencia de datos de Northwestern aprecia las fortalezas de los tres lenguajes para la ciencia de datos en todas las especializaciones del programa.
- R, con numerosos paquetes de análisis y modelado, goza de buena reputación entre los estadísticos aplicados. Es una excelente opción para programación científica e investigación aplicada. R es especialmente bueno para explorar y visualizar datos. R es el idioma principal en la mayoría de los cursos de la especialización en Análisis y Modelado de Northwestern.
- Python es actualmente el lenguaje informático más popular en ciencia de datos. Es especialmente fuerte en el procesamiento del lenguaje natural y sirve como cliente principal para las plataformas de aprendizaje profundo. Python proporciona un entorno rico en funciones para desarrollar modelos, y Python es el lenguaje principal en la mayoría de los cursos de especialización en Inteligencia Artificial de Northwestern.
- Go es un lenguaje de programación de sistemas diseñado para las computadoras multiprocesador actuales. Es muy adecuado para implementar sistemas escalables y de alto rendimiento para ciencia de datos, incluidas aplicaciones web y servidores de bases de datos. Go es el idioma principal en la especialización de Ingeniería de datos de Northwestern, como se muestra en la Aprenda a apostar por la ciencia de datos sitio web.
estudiantes en Maestría en línea en ciencia de datos de Northwestern University El programa desarrolla las habilidades esenciales de análisis y liderazgo necesarias para analizar e interpretar datos para tomar decisiones informadas e impactantes en una amplia gama de campos. Las clases están dirigidas por un docente consumado de expertos de la industria. Los estudiantes desarrollan experiencia en sus áreas de interés seleccionando una pista de ciencia de datos general o una de cinco especializaciones: Análisis y modelado, Gestión de análisis, Inteligencia artificial, Ingeniería de datos y Emprendimiento tecnológico. Los estudiantes aprenden a tiempo parcial, a su propio ritmo y completamente en línea. Las solicitudes se aceptan trimestralmente.