Tendencias del momento
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Transcripción: ¿Por qué los grandes modelos de lenguaje no pueden construir software realmente?
Autor: Conrad Irwin
Una de las cosas en las que he pasado mucho tiempo es en entrevistar a ingenieros de software. Esto es, evidentemente, una tarea ardua, y no me atrevería a decir que tengo algún truco especial; pero esta experiencia me ha dado tiempo para reflexionar sobre lo que realmente hace un ingeniero de software eficiente.
El ciclo central de la ingeniería de software
Cuando observas a un verdadero experto, te das cuenta de que siempre están ejecutando un ciclo de los siguientes pasos:
* Construir un modelo mental sobre los requisitos.
* Escribir (¡espero!) código que cumpla con los requisitos.
* Construir un modelo mental sobre el comportamiento real del código.
* Identificar las diferencias entre ambos y luego actualizar el código (o los requisitos).
Hay muchas maneras de completar estos pasos, pero la habilidad sobresaliente de los ingenieros eficientes radica en que pueden construir y mantener modelos mentales claros.
¿Cómo se desempeñan los grandes modelos de lenguaje?
A decir verdad, los grandes modelos de lenguaje son bastante buenos escribiendo código. Cuando señalas un problema, también son bastante buenos actualizando el código. Pueden hacer todo lo que un ingeniero humano haría: leer código, escribir y ejecutar pruebas, agregar registros y (supongo) usar un depurador.
Pero lo que no pueden hacer es mantener un modelo mental claro.
Los grandes modelos de lenguaje caen en una confusión interminable: asumen que el código que escriben realmente funciona; cuando las pruebas fallan, solo pueden adivinar si deben arreglar el código o arreglar las pruebas; cuando se sienten frustrados, simplemente eliminan todo y comienzan de nuevo.
Esto es exactamente lo opuesto a las cualidades que espero de un ingeniero.
Los ingenieros de software trabajan y prueban al mismo tiempo. Cuando las pruebas fallan, pueden consultar su modelo mental para decidir si deben arreglar el código o las pruebas, o si deben recopilar más información antes de tomar una decisión. Cuando se sienten frustrados, pueden buscar ayuda hablando con otros. Aunque a veces también eliminan todo y comienzan de nuevo, eso es una elección que hacen después de tener una comprensión más clara del problema.
Pero pronto estará bien, ¿verdad?
¿Cambiará esto a medida que los modelos se vuelvan más capaces? Tal vez, ¿¿pero?? Creo que eso requeriría un cambio fundamental en la forma en que los modelos construyen y optimizan. El modelo que necesita la ingeniería de software no es simplemente uno que pueda generar código.
Cuando una persona se enfrenta a un problema, puede dejar de lado temporalmente todo el contexto y concentrarse en resolver el problema inmediato, y luego volver a su pensamiento anterior y al gran problema en cuestión. También pueden alternar entre la visión macro y los detalles micro, ignorando temporalmente los detalles para centrarse en el panorama general, y profundizando en los detalles cuando es necesario. No nos volveremos más eficientes simplemente porque metamos más palabras en nuestra "ventana de contexto"; eso solo nos volverá locos.
Incluso si podemos manejar grandes cantidades de contexto, sabemos que estos modelos generativos actuales tienen varios problemas graves que afectan directamente su capacidad para mantener un modelo mental claro:
* Omisión de contexto: los modelos no son buenos para detectar información contextual que se ha pasado por alto.
* Sesgo de novedad: sufren de un sesgo de novedad severo al manejar la ventana de contexto.
* Alucinaciones: a menudo "alucinan" detalles que no deberían existir.
Estos problemas pueden no ser insuperables, y los investigadores están trabajando para agregar memoria a los modelos, para que puedan exhibir técnicas de pensamiento similares a las nuestras. Pero, desafortunadamente, por ahora, no pueden (más allá de un cierto nivel de complejidad) realmente entender lo que está sucediendo.
No pueden construir software porque no pueden mantener simultáneamente dos "modelos mentales" similares, identificar las diferencias entre ellos y decidir si deben actualizar el código o los requisitos.
Entonces, ¿qué hacer ahora?
Evidentemente, los grandes modelos de lenguaje son útiles para los ingenieros de software. Pueden generar código rápidamente y se desempeñan bien en la integración de requisitos y documentación. Para algunas tareas, esto es suficiente: los requisitos son lo suficientemente claros, el problema es lo suficientemente simple, y pueden hacerlo de una vez.
Dicho esto, para cualquier tarea que tenga un poco de complejidad, no pueden mantener suficiente contexto con suficiente precisión para producir finalmente una solución viable a través de iteraciones. Tú, como ingeniero de software, aún necesitas asegurarte de que los requisitos sean claros y de que el código realmente cumpla con la funcionalidad que dice tener.
En Zed, creemos que en el futuro los humanos y las inteligencias artificiales pueden colaborar para construir software. Sin embargo, estamos firmemente convencidos (al menos por ahora) de que tú eres el conductor que tiene el control del volante, y los grandes modelos de lenguaje son solo otra herramienta a tu alcance.
62,8K
Parte superior
Clasificación
Favoritos