Översättning: Varför stora språkmodeller inte riktigt kan bygga programvara Av Conrad Irwin En sak som jag ägnar mycket tid åt är att intervjua mjukvaruingenjörer. Detta är naturligtvis en svår uppgift, och jag vågar inte säga att jag har några knep. Men det gav mig tid att reflektera över vad en effektiv mjukvaruingenjör gör. Kärnan i programvaruteknik När du tittar på en sann finsmakare kommer du att se att de alltid utför följande steg i en cykel: * Bygg en mental modell av behov. * Skriva (förhoppningsvis?!) ) som genomför kraven. * Bygg en mental modell av hur din kod faktiskt beter sig. * Hitta skillnaden mellan de två och uppdatera sedan koden (eller kravet). Det finns många sätt att utföra dessa steg, men det fina med effektiva ingenjörer är deras förmåga att bygga och underhålla tydliga mentala modeller. Hur presterar stora språkmodeller? För att vara rättvis är stora språkmodeller ganska bra på att skriva kod. De gör också ett bra jobb med att uppdatera koden när du påpekar problemet. De kan också göra alla de saker som en riktig ingenjör skulle göra: läsa kod, skriva och köra tester, lägga till loggar och (förmodligen) använda felsökaren. Men vad de inte kan göra är att upprätthålla en tydlig mental modell. Stora språkmodeller kommer att hamna i oändlig förvirring: de kommer att anta att koden de skriver faktiskt är användbar; När ett test misslyckas kan de bara gissa om det är en fixkod eller ett test fixat; När de blir frustrerade klipper de helt enkelt ut allt och börjar om. Detta är raka motsatsen till vad jag skulle förvänta mig av en ingenjör. Programvaruingenjörer testar medan de arbetar. När ett test misslyckas kan de använda sin mentala modell för att avgöra om de ska åtgärda koden eller testet, eller samla in mer information innan de fattar ett beslut. När de känner sig frustrerade kan de be om hjälp genom att kommunicera med människor. Även om de ibland raderar allt och börjar om, är det ett val som görs efter en tydligare förståelse av problemet. Men det kommer att bli snart, eller hur? Kommer detta att förändras i takt med att modellerna blir mer kapabla? Kanske?? Men jag tror att detta kräver en grundläggande förändring av hur modeller byggs och optimeras. Programvaruteknik kräver modeller som är mer än att bara generera kod....