Temas en tendencia
#
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.
Traducción: Por qué los grandes modelos de lenguaje realmente no pueden construir software
Por Conrad Irwin
Una cosa que paso mucho tiempo haciendo es entrevistar a ingenieros de software. Obviamente, esta es una tarea difícil, y no me atrevo a decir que tengo ningún truco; Pero me dio tiempo para reflexionar sobre lo que hace un ingeniero de software eficaz.
El ciclo central de la ingeniería de software
Cuando miras a un verdadero conocedor, verás que siempre realiza los siguientes pasos en un ciclo:
* Construir un modelo mental de necesidades.
* Escribir (¡¿con suerte?!) ) que implementa los requisitos.
* Construya un modelo mental de cómo se comporta realmente su código.
* Encuentre la diferencia entre los dos y luego actualice el código (o requisito).
Hay muchas maneras de lograr estos pasos, pero lo mejor de los ingenieros efectivos es su capacidad para construir y mantener modelos mentales claros.
¿Cómo funcionan los modelos de lenguaje grandes?
Para ser justos, los modelos de lenguaje grandes son bastante buenos para escribir código. También hacen un buen trabajo al actualizar el código cuando señalas el problema. También pueden hacer todas las cosas que haría un verdadero ingeniero: leer código, escribir y ejecutar pruebas, agregar registros y (presumiblemente) usar el depurador.
Pero lo que no pueden hacer es mantener un modelo mental claro.
Los grandes modelos de lenguaje caerán en una confusión interminable: asumirán que el código que escriben es realmente utilizable; Cuando una prueba falla, solo pueden adivinar si es un código fijo o una prueba fija; Cuando se frustran, simplemente cortan todo y comienzan de nuevo.
Esto es exactamente lo contrario de lo que esperaría de un ingeniero.
Los ingenieros de software prueban mientras trabajan. Cuando una prueba falla, pueden usar su modelo mental para decidir si corregir el código o la prueba, o recopilar más información antes de tomar una decisión. Cuando se sienten frustrados, pueden pedir ayuda comunicándose con las personas. Aunque a veces borran todo y vuelven a empezar, es una elección que se hace después de una comprensión más clara del problema.
Pero será pronto, ¿verdad?
¿Cambiará esto a medida que los modelos se vuelvan más capaces? ¿¿Quizás?? Pero creo que esto requiere un cambio fundamental en la forma en que se construyen y optimizan los modelos. La ingeniería de software requiere modelos que sean más que solo generar código.
Cuando una persona se encuentra con un problema, puede dejar de lado temporalmente todo el contexto y concentrarse en resolver el problema en cuestión, y luego volver al gran problema en cuestión. También pueden cambiar entre el panorama general y los microdetalles, ignorando temporalmente los detalles para centrarse en el todo y profundizar en las partes cuando sea necesario. No nos volvemos más productivos simplemente metiendo más palabras en nuestra "ventana de contexto", solo nos volverá locos.
Aunque podemos manejar una gran cantidad de contexto, sabemos que estos modelos generativos actualmente tienen varios problemas graves que afectan directamente su capacidad para mantener modelos mentales claros:
* Omisión contextual: Los modelos no son buenos para detectar información contextual pasada por alto.
* Sesgo de actualidad: Están sujetos a un sesgo de actualidad severo cuando se trabaja con ventanas de contexto.
* Alucinaciones: A menudo "fantasea" con 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 ejercitar habilidades de pensamiento similares a las nuestras. Pero desafortunadamente, por ahora, ellos (después de ir más allá de un cierto nivel de complejidad) no pueden entender realmente lo que realmente sucedió.
No pueden crear software porque no pueden mantener dos "modelos mentales" similares al mismo tiempo, descubrir las diferencias y decidir si actualizar el código o actualizar los requisitos.
Entonces, ¿y ahora qué?
Obviamente, los grandes modelos de lenguaje son útiles para los ingenieros de software. Generan código rápidamente y se destacan en la integración de requisitos y documentación. Para algunas tareas, esto es suficiente: los requisitos son lo suficientemente claros, los problemas son lo suficientemente simples como para que se puedan hacer de la noche a la mañana.
Dicho esto, para cualquier tarea de cierta complejidad, no pueden mantener suficiente contexto con la precisión suficiente para iterar y finalmente producir una solución viable. Como ingeniero de software, sigue siendo responsable de garantizar que los requisitos sean claros y que el código realmente cumpla con lo que dice hacer.
En Zed, creemos en un futuro en el que los humanos y los agentes de IA puedan crear software juntos. Sin embargo, creemos firmemente (al menos por ahora) que usted es el conductor detrás del volante y que los grandes modelos de lenguaje son solo una herramienta más al alcance de su mano.
48.63K
Populares
Ranking
Favoritas