40 bin satır Fortran 77 kodu yapay zekâ ajanlarıyla C++'a taşındı
Mistral, bir Avrupa enerji operatörünün eski kod tabanını modernize etme sürecini ve çıkardığı dersleri paylaştı.
Enerji, bankacılık ve sigorta sektörlerinde onlarca yıldır çalışan kod tabanları var; çoğu bugün kimsenin yazmadığı dillerde. Asıl sorun dilin eskimesi de değil: özgün yazarlar ayrıldığında kodun içine gömülü bilgi geri kazanılamaz hâle geliyor. Mistral, bir Avrupa enerji operatörüyle yürüttüğü göç projesini bu bağlamda anlattı.
Projenin ölçüsü 40 bin satır Fortran 77 kodunun C++'a taşınması. Söz konusu yazılım fizik ağırlıklı bir rezervuar simülatörü ve işi zorlaştıran iki koşulu var: ne bir test paketi ne de merkezî bir dokümantasyonu bulunuyor.
Fortran 77'nin neden zorluk çıkardığı somut. Dil 1977'de standartlaştırıldı ve o dönemin kısıtlarını doğrudan yansıtıyor: modül yok, ad alanı yok, yapılandırılmış tip yok. Durum bilgisi, program genelinde paylaşılan küresel bellek olan COMMON bloklarında tutuluyor. Değişkenler adlarının ilk harfine göre örtük olarak tipleniyor, yani yanlış yazılmış bir ad derleyici hatası vermek yerine sessizce yeni bir değişken oluşturuyor. Değişken adları altı karakterle sınırlı olduğu için kod okunması güç kısaltmalarla dolu.
Mistral'ın altını çizdiği ayrım şu: sözdizimi çevirisi büyük ölçüde çözülmüş bir iş — güncel bir modelden bir kod parçasını bir dilden diğerine çevirmesini isterseniz birkaç denemede kabul edilebilir sonuca ulaşıyor. Ancak prosedürel bir dilden nesne yönelimli C++'a tam bir sistem taşımak mimari yeniden yapılandırma gerektiriyor. Dağınık COMMON dizileri tek bir parametre nesnesine dönüşüyor, ızgara döngüsü çağıran tarafa taşınıyor; ortada satır satır karşılaştırılabilecek bir eşleşme kalmıyor. Doğrulamayı zorlaştıran da bu.
Ekip bu yüzden ajanları çalıştırmadan önce bir eşleşme düzeneği kurmuş. Buradaki "eşleşme" sayısal eşitlik anlamına geliyor: hem nihai sonuçların hem de müşterinin rezervuar mühendislerinin işaretlediği kritik ara noktaların birebir tutması. Düzenek üç parçadan oluşuyor — Fortran kod tabanının durumunu dışa aktaran alt yordamlar, kontrol noktalarını C++ tarafına yükleyen bir test çatısı ve ajanları bunları doğru kullanmaya yönlendiren yönerge dosyaları. Göç sırasında ayrıca PetSc gibi modern bilimsel hesaplama çatılarının entegre edilmesi gerekmiş.
Şirketin paylaştığı dersler de bu sıraya uyuyor: önce sayısal uyuşmayı garanti altına almak, göçe başlamadan önce dokümantasyonu düzenlemek ve ajan özerkliği ile insan denetimi arasında denge kurmak.
Comments (0)
No comments yet.
Comments are moderated before publishing.