Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I want to know if Objective-C is an interpreted or a compiled language.

share|improve this question
I always thought it was a compiled language. I'm curious where the confusion comes from... –  FrustratedWithFormsDesigner Jul 19 '11 at 13:21
@Mako: Please explain where you saw that objective-C was interpreted. Please provide the quote or the link that confused you. –  S.Lott Jul 19 '11 at 13:26
Nitpicking: Interpreted/compiled is a property of the language implementation, not of the language (although with most languages most implementations fall into one category). And even then it's blurry - if you go by the strict, and correct, definition of compilation, even most dynamic/"scripting" languages are compiled - to bytecode, but still compiled. –  delnan Jul 19 '11 at 13:38

2 Answers 2

up vote 19 down vote accepted

It is neither. Objective-C is a programming language. A programming language is an abstract concept. A programming language is a set of mathematical rules and definitions. Programming languages aren't compiled or interpreted, they just are.

Compilation and interpretation aren't properties of a programming language, they are properties of, well, a compiler or an interpreter (duh). Every language can be implemented by a compiler and an interpreter, and most languages have both compiled and interpreted implementations. In fact, the majority of modern language implementations utilize both an interpreter and a compiler in the same execution engine for maximum performance.

For Objective-C specifically, I know of three implementations: gobjc, clang and oscompiler, but a quick Google search turned up two more. Of those five implementations, three are compilers and two are interpreters.

share|improve this answer
great explanation thank you; one question what was your search query for google? –  MaKo Jul 19 '11 at 14:21
Part of the question the OP is asking stems from the fact that Objective-C was originally run through a pre-processor (and not directly run through an interpreted or a compiler) which generated C code. This could then be either run through a compiler that generates native machine code, or interpreted in some form (aside: I built a C interpreter once, just for fun). For simplicities sake people do say "C is a compiled language" - which - though wrong - actually denotes that C usually runs through a compiler. –  Martin S. Stoller Jul 19 '11 at 14:34
Out of curiosity, would you mind linking me to an objective-c interpreter as I haven't been able to find one. –  Joshua Nov 11 '11 at 7:03
So while C can obviously be interpreted, I think it is safe to say that the rationale behind the language is to allow for efficient compilation, yielding a run-time performance close to what you can obtain with assembler. Hence, interpreting C is possible (and even useful in some situations), but it is counter to the original intentions of the language's designers. –  Monolo Feb 20 '12 at 11:40

Objective-C is a compiled language, just like plain C or C++.

share|improve this answer
-1. Objective-C, C and C++ are languages. They are neither compiled nor interpreted, they just are. In fact, there are interpreters for each of the three. –  Jörg W Mittag Jul 19 '11 at 14:09
Out of curiosity, would you mind linking me to an objective-c interpreter as I haven't been able to find one. –  Joshua Nov 6 '11 at 16:58
-1, same reasons as Jorg. –  Dynamic May 20 '12 at 11:41

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.