Yapay zeka kullanılarak JavaScript'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 | JavaScript Söz Dizimi Örneği | Objective-C Söz Dizimi Örneği | Puan (1-10) |
---|---|---|---|
Dinamik Tip Belirleme | let x = "Hello"; x = 5; |
NSString *x = @"Hello"; x = @(5); |
8 |
Prototip Tabanlı Miras | function Animal() {}; Animal.prototype.speak = function() { return "Roar"; }; |
@interface Animal : NSObject @end @implementation Animal - (NSString *)speak { return @"Roar"; } @end |
7 |
Birinci Sınıf Fonksiyonlar | const greet = function(name) { return "Hello " + name; }; |
NSString *(^greet)(NSString *) = ^NSString *(NSString *name) { return [NSString stringWithFormat:@"Hello %@", name]; }; |
6 |
Asenkron Programlama | fetch(url).then(response => response.json()); |
NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { /* yanıtı işleyin */ }] resume]; |
9 |
Dizi Yöntemleri | const numbers = [1, 2, 3]; const doubled = numbers.map(n => n * 2); |
NSArray *numbers = @[@1, @2, @3]; NSArray *doubled = [numbers valueForKeyPath:@"@unionOfObjects.self"]; |
7 |
Kapatmalar ve Kapsamlar | function outer() { let x = 10; return function inner() { return x; }; } |
- (void)outer { __block NSInteger x = 10; void (^inner)(void) = ^{ NSLog(@"%ld", (long)x); }; inner(); } |
6 |
Nesne Literali Söz Dizimi | const obj = { name: "John", age: 30 }; |
NSDictionary *obj = @{@"name": @"John", @"age": @30}; |
5 |
Hata Yönetimi | try { throw new Error("Oops!"); } catch (e) { console.error(e); } |
@try { @throw [NSException exceptionWithName:@"Oops!" reason:@"Hata oluştu" userInfo:nil]; } @catch (NSException *e) { NSLog(@"%@", e); } |
8 |
JavaScript dinamik olarak tip belirleyen bir dildir, bu da değişkenlerin çalışma zamanında türlerini değiştirmesine olanak tanır. Buna karşılık, Objective-C statik olarak tip belirleyen bir dildir ve açık tip bildirimleri gerektirir.
JavaScript Örneği:
let x = "Hello";
x = 5; // x artık bir sayıdır
Objective-C Örneği:
NSString *x = @"Hello";
x = @(5); // x artık bir NSNumber'dır
JavaScript Dokümantasyonu
Objective-C Dokümantasyonu
JavaScript prototip tabanlı miras kullanırken, Objective-C sınıf tabanlı miras kullanır.
JavaScript Örneği:
function Animal() {}
Animal.prototype.speak = function() {
return "Roar";
};
Objective-C Örneği:
@interface Animal : NSObject
- (NSString *)speak;
@end
@implementation Animal
- (NSString *)speak {
return @"Roar";
}
@end
JavaScript Dokümantasyonu
Objective-C Dokümantasyonu
JavaScript fonksiyonları birinci sınıf vatandaşlar olarak kabul eder, bu da onların değişkenlere atanmasına ve argüman olarak geçilmesine olanak tanır. Objective-C benzer işlevsellik için bloklar kullanır.
JavaScript Örneği:
const greet = function(name) {
return "Hello " + name;
};
Objective-C Örneği:
NSString *(^greet)(NSString *) = ^NSString *(NSString *name) {
return [NSString stringWithFormat:@"Hello %@", name];
};
JavaScript Dokümantasyonu
Objective-C Dokümantasyonu
JavaScript asenkron programlama için promises ve async/await kullanırken, Objective-C bloklar ve delegeler kullanır.
JavaScript Örneği:
fetch(url).then(response => response.json());
Objective-C Örneği:
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// yanıtı işleyin
}] resume];
JavaScript Dokümantasyonu
Objective-C Dokümantasyonu
JavaScript zengin bir dizi yöntemleri seti sunarken, Objective-C NSArray ve onun yöntemlerini kullanır.
JavaScript Örneği:
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
Objective-C Örneği:
NSArray *numbers = @[@1, @2, @3];
NSArray *doubled = [numbers valueForKeyPath:@"@unionOfObjects.self"];
JavaScript Dokümantasyonu
Objective-C Dokümantasyonu
JavaScript kapatmaları destekler, bu da iç fonksiyonların dış fonksiyon değişkenlerine erişmesine olanak tanır. Objective-C benzer işlevsellik için bloklar kullanır.
JavaScript Örneği:
function outer() {
let x = 10;
return function inner() {
return x;
};
}
Objective-C Örneği:
- (void)outer {
__block NSInteger x = 10;
void (^inner)(void) = ^{
NSLog(@"%ld", (long)x);
};
inner();
}
JavaScript Dokümantasyonu
Objective-C Dokümantasyonu
JavaScript özlü nesne literali söz dizimine izin verirken, Objective-C NSDictionary kullanır.
JavaScript Örneği:
const obj = { name: "John", age: 30 };
Objective-C Örneği:
NSDictionary *obj = @{@"name": @"John", @"age": @30};
JavaScript Dokümantasyonu
Objective-C Dokümantasyonu
JavaScript hata yönetimi için try/catch kullanırken, Objective-C @try/@catch kullanır.
JavaScript Örneği:
try {
throw new Error("Oops!");
} catch (e) {
console.error(e);
}
Objective-C Örneği:
@try {
@throw [NSException exceptionWithName:@"Oops!" reason:@"Hata oluştu" userInfo:nil];
} @catch (NSException *e) {
NSLog(@"%@", e);
}