Objective-C is already a dynamic language. Its ability to drop to low-level C at will makes it too flexible and powerful to abandon for something slow and cumbersome like Javascript.
//Objective-C
#import <Foundation/Foundation.h>
@interface Order : NSObject {
NSString *id;
Customer *customer;
NSDate *timestamp;
NSString *productId;
}
@property (nonatomic, retain) NSString *id;
@property (nonatomic, retain) Customer *customer;
@property (nonatomic, retain) NSDate *timestamp;
@property (nonatomic, retain) NSString *productId;
@end
#import "Order.h"
@implementation Article
@synthesize id;
@synthesize customer;
@synthesize timestamp;
@synthesize productId;
- (void)dealloc
{
[self setId:nil];
[self setCustomer:nil];
[self setTimestamp:nil];
[self setProductId:nil];
[super dealloc];
}
//Javascript
Order = Proto.clone().newSlots("id", "customer", "timestamp", "productId"); // Order.h
#import <Foundation/Foundation.h>
@interface Order : NSObject
@property (copy) NSString *id;
@property (retain) Customer *customer;
@property (copy) NSDate *timestamp;
@property (copy) NSString *productId;
@end
// Order.m
#import "Order.h"
@implementation Article
@synthesize id;
@synthesize customer;
@synthesize timestamp;
@synthesize productId;
@end
Apple engineers have confirmed that they're working on making @synthesize the default behavior for properties, so eventually you won't have to write that either. A real-world app would be using Core Data for its model objects, negating the need to write this class at all while adding automatic faulting, data integrity, and undo/redo: Order *order = [NSEntityDescription insertNewObjectForEntityForName:@"Order"
inManagedObjectContext:self.managedObjectContext];Then I started coding in PyQt (a Python, Qt bridge). Now I know: Objective-C is not a high level language, even though it has some high level aspects. Also, coding in a high level language can improve productivity by a huge margin, even if you are coding against a low level framework.
On the desktop, this is a more than worthwhile tradeoff. Mobile devices still benefit from the performance advantage of Objective-C as opposed to, say, MacRuby.
Getting rid of "Too much work" is the point of software.