Yapay zeka kullanılarak Python'dan kaynaktan kaynağa kod çevirisi, kaynak kodunu analiz etmek ve anlamak için doğal dil işleme (NLP) tekniklerinden ve makine öğrenimi algoritmalarından yararlanmayı içerir
Çeviri Problemi | Python Söz Dizimi Örneği | Fortran Söz Dizimi Örneği | Puan (1-10) |
---|---|---|---|
Dinamik Tür Belirleme | x = 10 |
integer :: x |
8 |
Liste Anlamaları | [x**2 for x in range(10)] |
do i = 0, 9; a(i+1) = i**2; end do |
7 |
Birinci Sınıf Fonksiyonlar | def f(x): return x + 1 |
function f(x) result(res); res = x + 1; end function |
6 |
İstisna Yönetimi | try: ... except: ... |
! Fortran yerleşik istisna yönetimi yok |
9 |
Dilimleme ve İndeksleme | my_list[1:3] |
my_array(2:3) |
5 |
Sözlükler | my_dict = {'a': 1, 'b': 2} |
! Fortran yerleşik sözlük desteği yok |
9 |
Çoklu İş Parçacığı | import threading |
! Fortran çoklu iş parçacığı için sınırlı destek var |
8 |
Üreticiler | def gen(): yield x |
! Fortran üreticileri desteklemiyor |
9 |
Liste Değişkenliği | my_list.append(4) |
! Fortran diziler sabit boyutludur |
7 |
Söz Dizimi Olarak Girinti | if x > 0:\n print(x) |
if (x > 0) then print *, x; end if |
6 |
Python'de, değişkenler açık bir tür bildirimi olmadan atanabilir, bu da dinamik tür belirlemeye olanak tanır:
x = 10
x = "Merhaba"
Fortran'de, türler açıkça bildirilmelidir:
integer :: x
x = 10
! x bir dizeye yeniden atanamaz
Python Değişkenler Hakkında Belgeler
Fortran Veri Türleri Hakkında Belgeler
Python liste anlamaları kullanarak kısa liste oluşturma imkanı sunar:
kareler = [x**2 for x in range(10)]
Fortran'de, bu bir döngü gerektirir:
integer :: i
integer, dimension(10) :: kareler
do i = 0, 9
kareler(i+1) = i**2
end do
Python Liste Anlamaları Hakkında Belgeler
Fortran Döngüler Hakkında Belgeler
Python fonksiyonları birinci sınıf vatandaşlar olarak kabul eder, bu da onların argüman olarak geçilebileceği anlamına gelir:
def f(x):
return x + 1
Fortran'de, fonksiyonlar tanımlanabilir ancak argüman olarak geçmek için belirli bir sözdizimi gerektirir:
function f(x) result(res)
integer :: x
integer :: res
res = x + 1
end function
Python Fonksiyonlar Hakkında Belgeler
Fortran Fonksiyonlar Hakkında Belgeler
Python yerleşik istisna yönetimine sahiptir:
try:
x = 1 / 0
except ZeroDivisionError:
print("Sıfıra bölme!")
Fortran yerleşik istisna yönetimi eksik olduğundan bu önemli bir zorluktur:
! Fortran yerleşik istisna yönetimi yok
Python İstisnalar Hakkında Belgeler
Fortran Hata Yönetimi Hakkında Belgeler
Python dilimlemeyi destekler:
my_list = [1, 2, 3, 4]
sub_list = my_list[1:3]
Fortran dizi dilimleme için farklı bir sözdizimi kullanır:
integer, dimension(4) :: my_array = [1, 2, 3, 4]
integer, dimension(2) :: sub_array
sub_array = my_array(2:3)
Python Listeler Hakkında Belgeler
Fortran Diziler Hakkında Belgeler
Python yerleşik sözlük desteğine sahiptir:
my_dict = {'a': 1, 'b': 2}
Fortran yerel bir sözlük türüne sahip değildir:
! Fortran yerleşik sözlük desteği yok
Python Sözlükler Hakkında Belgeler
Fortran Veri Yapıları Hakkında Belgeler
Python threading
modülü ile çoklu iş parçacığını destekler:
import threading
Fortran çoklu iş parçacığı için sınırlı destek sunar ve genellikle dış kütüphaneler gerektirir:
! Fortran çoklu iş parçacığı için sınırlı destek var
Python İş Parçacığı Hakkında Belgeler
Fortran Paralel Programlama Hakkında Belgeler
Python tembel değerlendirme için üreticileri destekler:
def gen():
yield x
Fortran üreticiler için doğrudan bir eşdeğer sunmaz:
! Fortran üreticileri desteklemiyor
Python Üreticiler Hakkında Belgeler
Fortran Fonksiyonlar Hakkında Belgeler
Python listeleri değiştirilebilir:
my_list = [1, 2, 3]
my_list.append(4)
Fortran diziler bir kez tanımlandıktan sonra sabit boyutludur:
! Fortran diziler sabit boyutludur
Python Listeler Hakkında Belgeler
Fortran Diziler Hakkında Belgeler
Python kod bloklarını tanımlamak için girinti kullanır:
if x > 0:
print(x)
Fortran blokları tanımlamak için anahtar kelimeler kullanır:
if (x > 0) then
print *, x
end if