Also there's Smalltalk/X: http://www.exept.de/en/products/smalltalkx
libart for Android also brings AOT to a jitted/VMed language.
Also there's Smalltalk/X: http://www.exept.de/en/products/smalltalkx
libart for Android also brings AOT to a jitted/VMed language.
Objective C is not a dynamic language.
Do not confuse dynamic language with dynamic typing or whatever the standard wisdom in the Apple cult is.
Supported:
Dynamic typing.
Fully dynamic message dispatch with doesNotUnderstand: (called forwardInvocation:), proxies, Higher Order Messaging, etc.
Addition of (a) classes ( objc_registerClassPair() ) and (b) methods ( class_addMethod() ) at runtime.
Changing an object's class at runtime (objc_setClass() slightly hacky, but done by system services such as KVO, so supported).
Closures/Blocks.
Reflection.
Addition of (associated) instance variables at runtime. Interpreted languages can be fully interoperable peers.
Not supported:
Eval (but see above re: interpreted peers).
Continuations.
----
See: https://developer.apple.com/library/mac/documentation/Cocoa/...
EDIT: added references.
This is news to me.
- add fields to a struct
- create a function
Objective-C is only dynamic typed in the OO runtime, everything else is static typed.
Dynamic languages are 100% dynamic, unless the CS classification got changed in the last years.
By that definition, Smalltalk is not a dynamic language: you cannot change the definition of assignment ( := ), message return ( ^ ) or the messenger itself. You also cannot change the the way the GC works.
No it is not. I can do that in fully dynamic languages like TCL and Python, for example.
This is used to run C# on iOS.