ترجمه کد منبع به منبع از Fortran با استفاده از هوش مصنوعی شامل استفاده از تکنیکهای پردازش زبان طبیعی (NLP) و الگوریتمهای یادگیری ماشین برای تجزیه و تحلیل و درک کد منبع است.
توضیحات چالش | مثال نحوی Fortran | مثال نحوی Haxe | امتیاز (1-10) |
---|---|---|---|
مدیریت آرایه | A(1:10) |
A.slice(0, 10) |
7 |
آرایههای چندبعدی | B(3, 4) |
B[3][4] |
6 |
تایپ ضمنی | A = 5 (بهطور ضمنی عدد صحیح) |
var A:Int = 5 |
8 |
فراخوانی زیرروتین و توابع | CALL SUB(A) |
SUB(A) |
5 |
حلقههای Do | DO I = 1, 10 |
for(i in 1...10) |
4 |
عبارات فرمت | WRITE(*,*) A |
trace(A) |
6 |
بلوکهای مشترک | COMMON /BLOCK/ A, B |
var A:B = new B(); |
9 |
مدیریت اشارهگر و حافظه | ALLOCATE(A) |
var A:Array<Int> = new Array<Int>(); |
8 |
کامپایل شرطی | #IF DEBUG |
#if (DEBUG) |
3 |
اعلام نوع | REAL :: A |
var A:Float = 0.0; |
5 |
Fortran اجازه میدهد تا با استفاده از نحوی ساده، برش و دامنههای آرایه را مدیریت کنید، در حالی که Haxe نیاز به استفاده از متدها برای دستیابی به عملکرد مشابه دارد.
مثال Fortran:
REAL :: A(1:10)
A(1:10) = 0.0
مثال Haxe:
var A:Array<Float> = new Array<Float>();
A = A.slice(0, 10);
برای جزئیات بیشتر، به مستندات آرایه Fortran و مستندات آرایه Haxe مراجعه کنید.
Fortran از نحوی ساده برای آرایههای چندبعدی استفاده میکند، در حالی که Haxe از یک سیستم ایندکسگذاری پیچیدهتر استفاده میکند.
مثال Fortran:
REAL :: B(3, 4)
B(3, 4) = 5.0
مثال Haxe:
var B:Array<Array<Float>> = new Array<Array<Float>>();
B[3][4] = 5.0;
به مستندات آرایههای چندبعدی Fortran و مستندات آرایه Haxe مراجعه کنید.
Fortran اجازه میدهد تا تایپ ضمنی بر اساس نام متغیرها انجام شود، در حالی که Haxe نیاز به اعلام نوع صریح دارد.
مثال Fortran:
A = 5 ! بهطور ضمنی یک عدد صحیح
مثال Haxe:
var A:Int = 5;
برای اطلاعات بیشتر، به مستندات تایپ ضمنی Fortran و مستندات سیستم نوع Haxe مراجعه کنید.
نحوی فراخوانی زیرروتینها و توابع بهطور قابل توجهی بین Fortran و Haxe متفاوت است.
مثال Fortran:
CALL SUB(A)
مثال Haxe:
SUB(A);
به مستندات زیرروتین Fortran و مستندات تابع Haxe مراجعه کنید.
نحوی حلقه DO
در Fortran با نحوی حلقه for
در Haxe متفاوت است.
مثال Fortran:
DO I = 1, 10
A(I) = I
END DO
مثال Haxe:
for(i in 1...10) {
A[i] = i;
}
به مستندات حلقه DO Fortran و مستندات حلقه For Haxe مراجعه کنید.
Fortran از عبارات فرمت برای خروجی استفاده میکند، در حالی که Haxe از تابع trace
استفاده میکند.
مثال Fortran:
WRITE(*,*) A
مثال Haxe:
trace(A);
به مستندات عبارات فرمت Fortran و مستندات Trace Haxe مراجعه کنید.
بلوکهای مشترک Fortran برای به اشتراکگذاری متغیرها در واحدهای برنامه معادل مستقیمی در Haxe ندارند.
مثال Fortran:
COMMON /BLOCK/ A, B
مثال Haxe:
class Block {
public var A:Int;
public var B:Int;
}
var block:Block = new Block();
به مستندات بلوکهای مشترک Fortran و مستندات کلاس Haxe مراجعه کنید.
نحوی مدیریت اشارهگر و حافظه در Fortran با نحوی اولیهسازی آرایه در Haxe متفاوت است.
مثال Fortran:
ALLOCATE(A)
مثال Haxe:
var A:Array<Int> = new Array<Int>();
به مستندات اشارهگر Fortran و مستندات آرایه Haxe مراجعه کنید.
هر دو زبان از کامپایل شرطی پشتیبانی میکنند، اما نحوی آن متفاوت است.
مثال Fortran:
##if DEBUG
مثال Haxe:
##if (DEBUG)
به مستندات کامپایل شرطی Fortran و مستندات کامپایل شرطی Haxe مراجعه کنید.
Fortran اجازه میدهد تا اعلام نوع ضمنی انجام شود، در حالی که Haxe نیاز به اعلام صریح دارد.
مثال Fortran:
REAL :: A
مثال Haxe:
var A:Float = 0.0;
به مستندات اعلام نوع Fortran و مستندات سیستم نوع Haxe مراجعه کنید.