Η **Objective-C** είναι μία αντικειμενοστρεφής γλώσσα προγραμματισμού γενικής χρήσης. Είναι η βασική γλώσσα προγραμματισμού που χρησιμοποιήθηκε από την Apple για τα λειτουργικά συστήματα MacOS, iOS και τα αντίστοιχα APIs τους (Cocoa και Cocoa Touch αντίστοιχα) πριν την κυλοφορία της γλώσσας προγραμματισμού **Swift**. Η Objective-C χρησιμοποιεί το "στυλ" μηνυμάτων (ή κλήσεων) της γλώσσας Smaltalk ενσωματώνοντάς τα στην γλώσσα προγραμματισμού C.

Η Objective-C αναπτύχθηκε στις αρχές της δεκαετίας του 1980. Χρησιμοποιήθηκε από την εταιρεία NeXT για το λειτουργικό σύστημα NeXTSTEP από το οποίο προέχονται τα λειτουργικά συστήματα MacOS και iOS. 

Προγράμματα γραμμένα στην γλώσσα Objective-C που δεν χρησιμοποιούν τις βιβλιοθήκες των Cocoa ή Cocoa Touch, ή που χρησιμοποιούν άλλα μέρη που μπορούν να μεταφερθούν ή να υλοποιηθούν ξανά για άλλα συστήματα, μπορούν να μεταγλωττιστούν από κάθε σύστημα που υποστηρίζει των γνωστό μεταγλωττιστή GCC (GNU Compiler Collection) ή τον Clang. 

Τα αρχεία πηγαίου κώδικα "υλοποίησης" (implementation files) των προγραμμάτων που είναι γραμμένα σε Objective-C συνήθως έχουν την κατάληξη .m ενώ τα αρχεία "κεφαλίδας/διεπαφής" (header/interface files) έχουν την κατάληξη .h. Πρόκειται για την ίδια κατάληξη που έχουν και τα αρχεία κεφαλίδας/διεπαφής στην γλώσσα προγραμματισμού C.

Ιστορικά
--------

Η Objective-C δημιουργήθηκε αρχικά από τους Brad Cox και Tom Love στις αρχές της δεκαετίας του 1980 στην εταιρεία τους, την Stepstone.. Και οι δύο τους είχαν κάνει μία εισαγωγή στην γλώσσα Smaltalk κατά την διάρκεια της εργασίας τους στο Κέντρο Τεχνολογίας Προγραμματισμού της εταιρείας ITT Corporation το 1981. Τον Cox τον απασχολούσαν τα προβλήματα της "επαναχρησιμοποίησης" στον σχεδιασμό λογισμικού. Κατάλαβε σύντομα ότι μία γλώσσα προγραμματισμού σαν την Smaltalk δεν θα ήταν πολύ χρήσιμη για την δημιουργία "Περιβαλλόντων Ανάπτυξης" για τους προγραμματιστές στην ITT. Όμως τόσο ο Cox όσο και ο Tom Love αναγνώριζαν την ανάγκη και την σημασία της οπισσθόδρομης συμβατότητας (backward compatibility) με την C για τους μηχανικούς της ITT. 

Έτσι, ο Cox ξεκίνησε να γράφει έναν προ-επεξεργαστή για την C σε μία προσπάθεια να προσθέσει σε αυτή κάποιες από τις λειτουργίες της Smaltalk. Σύντομα κατάφερε να φτιάξει μία λειτουργική υλοποίηση μίας αντικειμενοστρεφούς επέκτασης της γλώσσας προγραμματισμού C, την οποία και ονόμασε "OOPC" (Object-Oriented Pre-Compiler). Το 1982, η Schlumberger Research προσέλαβε τον Love και εξαγόρασε την πρώτη εμπορική έκδοση της Smaltalk-80 που επηρέασε στην συνέχει την ανάπτυξη του δημιουργήματός τους.

Με σκοπό να δέιξει ότι μπορεί να γίνει σημαντική πρόοδος σε σχέση με το νέο εργαλείο που ανέπτυσσε, ο Cox έδειξε ότι η δημιουργία εναλλασόμενων μερών λογισμικού χρειαζόταν στην πραγματικότητα πολύ λίγες πρακτικές αλλαγές στα ήδη υπάρχοντα εργαλεία. Συγκεκριμένα χρειαζόταν η υποστήριξη **αντικειμένων** με έναν ευέλικτο τρόπο που θα παρεχόταν μαζί με ένα σύνολο από βιβλιοθήκες και θα επέτρεπε στον κώδικα (και όποιους άλλου πόρους αυτός χρησιμοποιεί) να "πακεταριστεί" σε μία διαπλατφορμική (cross-platform) μορφή.

Οι Love και Cox τελικά δημιούργησαν ένα νέο εγχείρημα, την Productivity Products International (PPI), για να εμπορευματοποιήσουν το προϊόν το οποίο "πάντρευε" έναν μεταγλωττιστή της Objective-C με διάφορες βιβλιοθήκες. Το 1986 ο Cox δημοσίευσε την βασική περιγραφή της Objective-C στην επίσημη μορφή της στο βιβλίο με τίτλο "*Object-Oriented Programming, An Evolutionary Approach".*

### Πως έγινε πιό γνωστή μέσα από την NeXT

Το 1988 η NeXT αγόρασε τα δικαιώματα της Objective-C από την StepStone (το νέο όνομα της PPI και ο ιδιοκτήτης του εμπορικού σήματος της Objective-C) και επέκτεινε τον μεταγλωττιστή GCC έτσι ώστε να υποστηρίζει την Objective-C. Η NeXT επίσης ανέπτυξε τις βιβλιοθήκες AppKit και FoundationKit πάνω στις οποίες βασίστηκε η γραφική διεπαφή NeXTSTEP και το εργαλείο ανάπτυξης Interface Builder. Παρ' ότι οι υπολογιστές της NeXT δεν άφησαν το στίγμα τους στην αγορά των υπολογιστών, τα εργαλεία ανάπτυξης αναγνώρισαν ευρεία αποδοχή από την βιομηχανία. Αυτό οδήγησε την NeXT στην απόφαση να αφήσει την παραγωγή υλικού (hardware) και να εστιάσει στα εργαλεία λογισμικού, πουλώντας το NeXTSTEP σαν μία πλατφόρμα για προγραμματισμό.

Η NeXT προκειμένου να παρακάμψει τους όρους της άδειας GPL, αρχικά είχε την πρόθεση να διανείμει το frontend της Objective-C ξεχωριστά, επιτρέποντας στον χρήστη να το συνδέσει με το GCC για να δημιουργήσει τον εκτελλέσιμο μεταγλωττιστή. Ενώ αρχικά αυτό το σχέδιο έγινε αποδεκτό από τον Richard M. Stallman, τελικά απορρίφθηκε όταν ο Stallman συμβουλέυτηκε τους δικηγόρους του GNU και η NeXT συμφώνησε να κάνει την Objective-C μέρος του GCC.

### Η ανάπτυξη της Apple και η Swift

Μετά την εξαγορά της NeXT το 1996, η Apple Computer χρησιμοποίησε το OpenStep στο -τότε νέο- της λειτουργικό σύστημα, το MacOS X. Αυτό περιελάμβανε την Objective-C, το Project Builder, που ήταν το βασισμένο στην Objective-C εργαλείο ανάπτυξης της NeXT και το εργαλείο σχεδιάσης διεπαφών χρήστη, το Interface Builder. Τα δύο τελευταία εργαλεία (Project Builder και Interface Builder) σήμερα είναι συγχωνευμένα σε μία εφαρμογή, το Xcode.

Δείτε επίσης
------------

* C (γλώσσα προγραμματισμού)
* C++
* Σύγκριση γλωσσών προγραμματισμού
* Swift
* Xcode

1. ↑  Garling, Caleb. «iPhone Coding Language Now World's Third Most Popular». Wired. Ανακτήθηκε στις 20 Μαΐου 2013.

Περαιτέρω ανάγνωση
------------------

* Cox, Brad J. (1991). *Object Oriented Programming: An Evolutionary Approach*. Addison Wesley. ISBN 0-201-54834-8.

Εξωτερικοί σύνδεσμοι
--------------------

|  |  |
| --- | --- |
| Commons logoCommons logo | Τα Wikimedia Commons έχουν πολυμέσα σχετικά με το θέμα   **Objective-C** |

* Programming with Objective-C, from Apple (2012-12-13)
* *The Objective-C Programming Language*, from Apple (2011-10-11)
* *Objective-C Runtime Programming Guide*, from Apple (2009-10-19)
* Objective-C GNUstep Base Programming Manual

  


|  |  |  |  |
| --- | --- | --- | --- |
| 

| π • σ • ε
Γλώσσες προγραμματισμού |
| --- |
|  |
| 
* Ada
* ALGOL
* APL
* Applescript
* Assembly
* BASIC
* C
* C++
* C#
* COBOL
* Erlang
* Forth
* Fortran
* Go
* Haskell
* Java
* JavaScript
* Kotlin
* Lisp
* Logo
* Lua
* ML
* Objective-C
* Pascal
* Perl
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* SQL
* Shell
* Simula
* Smalltalk
* Swift
* Visual Basic
 |

 |

|  |  |  |
| --- | --- | --- |
| 

|  |  |
| --- | --- |
| Καθιερωμένοι όροι | 
* WorldCat
* LCCN: sh2008009199
* GND: 4335874-3
* SUDOC: 077936582
* BNF: cb14537421z (data)
* NKC: ph589577

 |

 |

|  |  |
| --- | --- |
| 

|  |
| --- |
| * Πύλη:Προγραμματισμός
 |

 |