Búsqueda de sitios web

Por qué la ética se está convirtiendo en el mayor desafío de la IA


¿ChatGPT puede programar en un lenguaje de los años 50 o en uno de los lenguajes que escribieron su propio código? Dimos un paseo por el pasado para descubrirlo.

Un instructor de la Boston Latin School utiliza una computadora IBM 1130 para enseñar Fortran a los estudiantes el 4 de octubre de 1968. 

Hace unas semanas, eché un vistazo al uso de ChatGPT para escribir la misma rutina en una docena de los lenguajes de programación más populares. Pero como experto en lenguajes de programación, me preguntaba hasta dónde llegaría ChatGPT. ¿Programaría en un lenguaje de la década de 1950? ¿Programaría en un lenguaje que usara su propio conjunto de caracteres? ¿Podría escribir código en uno de los idiomas que escribieron su código?

Y entonces, me sumergí. He usado muchos de los idiomas que estoy destacando aquí, así que daré un pequeño paseo por el camino de los recuerdos e incluiré algunas historias sobre mi experiencia con los que he usado.

Si bien no he ejecutado el código en sí, he leído todos los programas generados. La mayoría tiene un aspecto correcto y muestra los indicadores apropiados que nos indican que el idioma presentado es el idioma que solicité.

Te digo esto porque los encabezados de todas las capturas de pantalla están incorrectos. La mayoría están listados como SQL. Por alguna razón, BAL se muestra como VBNet y Prolog aparece como Rust. ChatGPT no cometió este error la última vez, pero sí lo hizo hoy, para todos los idiomas que se muestran aquí.

Y con eso, profundicemos.

fortran

Fortran (o FORTRAN, como se llamaba entonces) significa Traducción de Fórmulas. Fue desarrollado principalmente para cálculos científicos y de ingeniería. Aunque se remonta a la década de 1950, a menudo fue el primer idioma que se enseñó a los estudiantes de ingeniería en las décadas de 1970 y 1980.

Para mí, fue mi cuarto lenguaje de programación, después del BASIC, el lenguaje ensamblador PDP-8 y el binario PDP-8 (sí, escribí código binario para poder activarlo en el panel frontal de una de las primeras minicomputadoras). Mi papá generosamente me llevó una hora hasta la Facultad de Ingeniería de Newark (ahora NJIT) para que pudiera tomar su curso de programación de primer año cuando todavía era estudiante de segundo año en la escuela secundaria.

Fortran nunca fue uno de los favoritos, aunque haría la mayoría de los trabajos orientados al cálculo. Hoy en día todavía se utiliza una variación de Fortran, pero está bastante limitada al trabajo científico especializado, ya que muchos otros lenguajes modernos realizan análisis a nivel de Fortran y lo hacen mejor.

Aquí, debido al uso de la palabra clave implícita, parece que ChatGPT representa código escrito en la variante Fortran-77.

Aunque la etiqueta es incorrecta, el código es Fortran.

COBOL

Yo era un programador COBOL adolescente. No conocía COBOL en ese momento, pero alrededor de 1980 vi un anuncio de búsqueda de un programador COBOL en el Centro de Datos Regional Noreste de International Paper en Denville, Nueva Jersey. Estaba a unos 40 minutos de la casa de mis padres y necesitaba un trabajo de verano. Tan pronto como logré programar una entrevista, corrí a la librería local y pasé un fin de semana devorando todo el material de lectura COBOL que pude encontrar.

COBOL estaba destinado al procesamiento orientado a los negocios. Hoy, el mismo tipo de clientes serían usuarios de SAP o Salesforce. Pero COBOL, como puede ver en el código COBOL-88 a continuación, era funcional, pero seguro que no era elegante.

Resulta que querían un empleado de tiempo completo. Pero como obtuve excelentes calificaciones en su examen (aparentemente mi fin de semana de estudio superó las calificaciones de los profesionales que postularon), decidieron ponerme a trabajar durante el verano. Decir que había un desajuste cultural era quedarse corto. Estos fueron los primeros días de las microcomputadoras (piense en las pre-PC) y me gloriaba en esas cosas. Mientras tanto, a esta gente le gustaban los trajes y corbatas y los centros de datos gigantes. Casi de inmediato tomé el apodo de "Problema". Oye, todavía era un niño.

El momento decisivo para mí llegó cuando uno de los programadores más experimentados de la empresa me llevó aparte para explicarme, y cito: "COBOL es vida". Me tomé ese mensaje en serio y decidí que no quería que mi vida girase en torno a COBOL. Ese verano fue la última vez que programé algo en COBOL.

Aunque la etiqueta es incorrecta, el código es COBOL, probablemente COBOL-88.

RPG (generador de programas de informes)

No, no es una granada propulsada por cohete ni un juego de rol. RPG era un programa para crear informes. Puede ver la evolución del lenguaje (y del pensamiento del lenguaje informático, en general) entre las dos versiones que se muestran a continuación. RPG II se remonta a finales de los años 50. RPG IV se actualizó en la década de 1990 y es considerablemente más moderno (pero aún definitivamente anticuado).

Escribí algunos programas RPG III para el AS/400 como trabajo paralelo mientras estaba en la universidad, pero nunca fue algo que siguiera tan de cerca.

Dos juegos de rol, ambos con etiquetas incorrectas.

Ceceo

Tengo una larga historia de amor con Lisp. Lisp, llamado así por el procesador LISt, a veces se describía como muchos paréntesis insípidos y estúpidos. Por alguna razón, esos paréntesis hicieron clic en mi cerebro. Lisp fue mi droga de entrada a la programación de IA y, como hemos aprendido del procesamiento del lenguaje de ChatGPT, el conocimiento se puede representar como cadenas de palabras o listas.

En la década de 1980, fui gerente de producto para una implementación Common Lisp basada en RISC y codifiqué en ella durante un tiempo. Según la sintaxis defun Greeting y let generada por ChatGPT, parece que el siguiente código también es Common Lisp, una variación posterior de la implementación Lisp original de John McCarthy de finales de la década de 1950. . McCarthy fue uno de los padres fundadores de la investigación de la IA, por lo que es lógico que una IA escriba en su idioma.

La etiqueta está mal. Eso es así no SQL. Es Lisp.

algol

ALGOL (Lenguaje ALGOtímico) se adelantó a su tiempo. Permitió el paso de funciones como parámetros y permitió el uso de recursividad. Estos son dos componentes clave de la programación moderna que estaban ausentes en lenguajes populares como Fortran y COBOL, que eran populares al mismo tiempo que ALGOL.

Si Fortran, BASIC y el lenguaje ensamblador me enseñaron programación de arriba hacia abajo, ALGOL me enseñó cómo estructurar mi código. Fue un lenguaje fundamental que preparó el escenario para mi uso de C, Pascal, Java, JavaScript y la mayoría de los lenguajes estructurados modernos que utilizamos hoy.

No, eso no es SQL. Es ALGOL.

simulación

Simula, como puedes imaginar, fue desarrollado para simulación y modelado. Al igual que ALGOL, Simula también se adelantó a su tiempo y admitió el uso de objetos y clases. Desde entonces, la programación orientada a objetos se ha vuelto fundamental para muchos de los lenguajes de programación más eficaces de la actualidad.

El uso de la palabra clave OUTFIX me dice que ChatGPT probablemente escribió el siguiente código en Simula-67.

No es SQL en absoluto, estás viendo alguna Simula.

BAL (lenguaje ensamblador IBM 360/370)

BAL, que significa "lenguaje ensamblador básico", fue el lenguaje ensamblador de las grandes máquinas de IBM en los años 1970 y 1980. El lenguaje ensamblador se considera más de "nivel inferior" que de "lenguajes de nivel superior", lo que significa que las instrucciones individuales y las palabras clave se asignan a instrucciones de procesador individuales. En los lenguajes de nivel superior (como la mayoría de los que utilizamos hoy en día), el lenguaje suele estar muy alejado de la arquitectura de la máquina subyacente y está diseñado más para la eficiencia de la programación que para el uso eficiente del hardware.

Tomé un semestre de BAL en la universidad. Fue duro. El profesor pasaba la mayor parte de los días de espaldas a los estudiantes, murmurando su conferencia en voz baja, mientras escribía sin parar en la pizarra. Me senté en la última fila junto a una chica llamada Laura. Un día, Laura y yo decidimos escabullirnos por la ventana trasera para tomar un café. Una vez que obtuvimos nuestro java, volvimos a subir a la ventana. El profesor nunca se dio cuenta.

Es una maravilla que cualquiera de nosotros haya pasado, pero no es de extrañar que prácticamente ninguno de nosotros haya adoptado la programación BAL como nuestra arma de codificación preferida.

Esta vez, la IA le dio al código la etiqueta VBNET. No lo es, por supuesto. Es BAL.

APL

APL, o lenguaje de programación, es otro lenguaje de programación. Uno de los aspectos más llamativos de APL es que utiliza un juego de caracteres no estándar para algunos de sus operadores y codificación. Puedes ver eso en la imagen de abajo. Los pequeños glifos son lo que ChatGPT pudo extraer de la fuente que estaba usando, pero APL está diseñado para usar la fuente Unicode APL385, que es exclusiva de la programación en APL.

Debido a su sintaxis concisa y a su buena gestión de grandes conjuntos de datos, se utiliza en un buen número de proyectos científicos, financieros y analíticos.

No es SQL. Ni siquiera utiliza todos los caracteres ASCII. Es APL y marcha con su propio baterista.

Prólogo

Prolog (que se deriva de la frase Programación en Lógica) es otro lenguaje centrado en la IA. Prolog es un lenguaje declarativo, que enumera reglas y condiciones y luego ejecuta consultas sobre esas declaraciones. Según ChatGPT:

Prolog es uno de los lenguajes de programación utilizados en el desarrollo de ChatGPT, específicamente para la generación de texto. Se utiliza en el módulo Prolog-to-English, que traduce formas lógicas en Prolog a oraciones en lenguaje natural.

Prolog es un lenguaje divertido, pero no es Rust. Este es el prólogo.

pequeña charla

Smalltalk es especial. Fue desarrollado en Xerox PARC, el mismo laboratorio de investigación que influyó en el desarrollo del ratón y los entornos con ventanas. Incorporó algunas de las innovaciones de Simula en programación orientada a objetos y fue más allá. También fue uno de los primeros lenguajes que hizo uso activo de un entorno de programación interactivo basado en GUI. Muchos de los principales lenguajes actuales, incluidos Java, Python y Ruby, estuvieron muy influenciados por Smalltalk.

Sólo incursioné en Smalltalk, principalmente para conocerlo. Viviendo en Silicon Valley en ese momento, conocí a los diseñadores de Smaltalk, quienes luego escindieron ParcPlace Systems, en un intento de comercializar Smalltalk fuera de la monotonía corporativa de Xerox. Tengo muchos buenos recuerdos de hablar sobre teoría de la programación mientras comíamos costillas y ensalada de col en un pequeño asador destartalado en Palo Alto.

Uno de los vicepresidentes con los que trabajé en la empresa de informática donde trabajaba intentó convencerme de iniciar una empresa con él para aplicar Smalltalk al mercado empresarial, pero aún no me había picado el virus de las startups. Smalltalk nunca llegó a ser un mercado. Aún así, a pesar de lo feliz que estoy con el camino que ha tomado mi vida, a veces me pregunto qué habría pasado si hubiera aceptado su oferta.

Y, finalmente, esto tampoco es SQL. Es charla trivial.

tengo pensamientos

No ejecuté este código y, dado que no tengo tanta familiaridad reciente con estos lenguajes como con PHP y JavaScript, no puedo estar seguro de que mi revisión visual garantice que el código mostrado arriba se ejecutará correctamente. Como vimos a principios de esta semana con mi exploración de las nuevas habilidades de programación de Bard, es posible escribir código sin que ese código funcione.

Sabemos que hay al menos un error en cada ejemplo: los encabezados son incorrectos. Entonces, si bien la capacidad de la IA para generar código en un montón de lenguajes relativamente oscuros es increíble, no asuma que está haciendo todo el trabajo correctamente.

Si decide incorporar la programación ChatGPT en su flujo de trabajo, deberá verificar, probar y depurar el código que genera tal como lo haría si contratara a alguien para que le escribiera algunas rutinas básicas.

Artículos relacionados