Gå till innehåll
Just nu i M3-nätverket

Carbon eller Cocoa


jens_rock

Rekommendera Poster

Köpte en bok och började plugga lite OS X Utveckling.

Har bara läst teori än så länge men såg för första gången Objective-C och tänkte:

 

Vad i helv... är det här får något? :superirriterad:

 

Jag programmerar dagligen Objektorienterad PHP och VB.NET och är således inte helt borttappad men hur ska jag göra nu? :fundersam:

 

För det första, vänjer man sig vid Objective-C?

Vilken är vinnaren i längden? Carbon eller Cocoa?

Kan man programmera i C++ ihop med Carbon?

Vilka styrkor resp svagheter har Carbon/Cocoa?

 

Är mycket tacksam för era svar... :ThumbsUp:

Länk till kommentar
Dela på andra webbplatser

Har aldrig kört Objective-C. Det är icke-standard och därmed inte portabelt.

 

Under Carbon kan du köra C++ (vilket jag gör i jobbet).

 

Vinnaren i längden? Ingen av dem. Eller båda om man så vill. Cocoas utskriftsrutiner anropar Carbon, till exempel. Det GÅR dessutom att anropa från Carbon till Cocoa och vice versa om man verkligen vill.

 

Min åsikt är att du ska hålla dig till ett allmänt spritt och standardiserat språk. Då blir det Carbon och C++.

Länk till kommentar
Dela på andra webbplatser

Har aldrig kört Objective-C. Det är icke-standard och därmed inte portabelt.

Att det är icke-standard är väl lite att ta i. Objektive-C kan också användas på andra plattformar och andra system. Men Objektive-C är om man så vill Apples motsvarighet till Microsofts C# dvs en vidareutveckling av C eller C++. Det har också sina fördelar.

 

Min åsikt är att du ska hålla dig till ett allmänt spritt och standardiserat språk. Då blir det Carbon och C++.

499049[/snapback]

Det beror ju lite på. Om man brett vill lära sig programmering eller utvecklar till flera plattformar så är ju C++ eller Java ett bra val.

 

Om man däremot verkligen vill göra snygga smidiga mac-program och egentligen inte är intresserad av att porta program eller utveckla för andra plattformer så är, tycker jag, Objective-C och Cocoa det naturliga valet.

Länk till kommentar
Dela på andra webbplatser

Carbon är inte ett språk och inte heller mer standardiserat än Cocoa. Carbon är ett ramverk för programvaruutveckling till Mac OS. Likaså Cocoa.

 

Frågan är (som alltid): vad vill du uppnå? Vill du skriva applikationer för Mac OS X? Vill du lära dig ett nytt programmeringsspråk? Vill du använda Macen som utvecklingsplattform för plattformsoberoende applikationer?

 

Om man vänjer sig vid Objective-C? Jag kan bara svara för mig själv: JA. Annars är det väl en inställningsfråga: vill du lära dig så kommer du att vänja dig!

 

Objective-C tillsammans med Cocoa är i praktiken Smalltalk med C-syntax. Dvs fantastiskt :-)

 

Objective-C är dessutom ett lika öppet språk som C++. Du kan programmera i Gnome på Linux med Objective-C. Däremot är Cocoa inte plattformsoberoende.

 

Du kan även blanda Objective-C med C++.

 

/Dan

Länk till kommentar
Dela på andra webbplatser

Har aldrig kört Objective-C. Det är icke-standard och därmed inte portabelt.

 

Det där är helt felaktigt. Objective-C är ovanligt, men språket går att använda på andra plattformar. gcc klarar av att kompilera Objective-C-kod precis som vilken annan C-kod som helst oavsett om du kör Linux, OS X eller något annat.

 

Ramverket Cocoa är däremot mer eller mindre knutet till OS X. Det är skrivet för Objective-C men det betyder inte att Objective-C vare sig är icke-standard eller oportabelt.

Länk till kommentar
Dela på andra webbplatser

Köpte en bok och började plugga lite OS X Utveckling.

Trevligt.

 

Jag skulle vilja passa på att tipsa om en speciell bok jag gillar. Om det inte är den boken du köpt så rekommenderar jag boken "Cocoa Programming for Mac OS X" av Aaron Hillegass, vilken är en helt underbar bok om man vill lära sig programmera för OS X.

 

Har bara läst teori än så länge men såg för första gången Objective-C och tänkte:

 

Vad i helv... är det här får något? :superirriterad:

Objective-C är något förenklat en objektorienterad vidareutveckling av C.

 

Jag programmerar dagligen Objektorienterad PHP och VB.NET och är således inte helt borttappad men hur ska jag göra nu? :fundersam:

Förutom de vanliga böckerna har Apple en PDF om Objective-C som kan vara läsvärd.

The Objective-C Programming Language

 

För det första, vänjer man sig vid Objective-C?

Ja absolut. Det är väldigt väl använt bland OS X-utvecklare. Väldigt många OS X-program är skrivna i Objective-C. Själv tyckte jag att Objective-C var relativt svårt att komma igång med, men allt eftersom upplevde jag det som enklare att använda än många andra språk.

 

Vilken är vinnaren i längden? Carbon eller Cocoa?

Båda finns, fungerar och kommer troligen att finnas kvar länge.

 

Men för att försöka komma fram till vilken som kommer att användas mest i framtiden får man gå tillbaka till tiden då vi Mac-användare gick från OS 9 och tidigare till OS X. En stor övergång med tanke på att de var helt olika operativsystem som inte delade någon kod och som i grunden byggde på helt olika teknik. De gamla Mac OS-programmen gick enbart att köra i OS 9, äldre system och oftast i Classic-miljön i OS X. Cocoa var till för rena OS X-program som kunde använda alla funktioner OS X erbjöd. Dessvärre fungerade Cocoa-program inte i OS 9 och äldre system.

 

Problemet var att utvecklarna var tvungna att skriva om programmen ganska ordentligt för att bli Cocoa-program. Det ville inte utvecklarna så därför infördes Carbon som tillät utvecklarna att få sina program att fungera i OS X med de funktioner OS X erbjöd med enbart en liten omskrivning i koden. Det kunde röra sig om veckor eller högst månader innan ett gammalt program "karboniserats" för att köra i OS X.

 

Min erfarenhet av Apple säger att de troligen kommer att lägga det mesta av krutet på Cocoa. Jag upplever att det är där den mesta utvecklingen sker. Om du inte måste använda Carbon skulle jag rekommendera dig att i huvudsak skriva Cocoa-program.

 

Kan man programmera i C++ ihop med Carbon?

Ja. Jag skulle vilja påstå att de flesta Carbon-program är skrivna i C++.

 

Du kan dock blanda både C och C++ i dina Cocoa-program om du vill. Du kan till och med använda andra språk till Cocoa. Bland annat Java, Ruby och Python går att använda i Cocoa-program. Java har varit vanligt tidigare och har haft stöd från Apple, men är mer eller mindre på väg ut till förmån för Ruby.

Länk till kommentar
Dela på andra webbplatser

Du kan dock blanda både C och C++ i dina Cocoa-program om du vill. Du kan till och med använda andra språk till Cocoa. Bland annat Java, Ruby och Python går att använda i Cocoa-program. Java har varit vanligt tidigare och har haft stöd från Apple, men är mer eller mindre på väg ut till förmån för Ruby.

 

 

Ursäkta jag hakar på tråden med min följdfråga. Jag lär mig Ruby och har kikat lite på Xcode och RubyCocoa. Är det överhuvudtaget värt besväret eller ska man gå på Cocoa och Objective-C på en gång? Tycks ganska enkelt, ungefär som Ruby. Men måste man inte kunna en hel del om Cocoa i alla fall om man använder RubyCocoa?

Länk till kommentar
Dela på andra webbplatser

Ursäkta jag hakar på tråden med min följdfråga. Jag lär mig Ruby och har kikat lite på Xcode och RubyCocoa. Är det överhuvudtaget värt besväret eller ska man gå på Cocoa och Objective-C på en gång? Tycks ganska enkelt, ungefär som Ruby. Men måste man inte kunna en hel del om Cocoa i alla fall om man använder RubyCocoa?

Cocoa är Cocoa oavsett om du använder Objective-C eller Ruby när du skriver kod. RubyCcooa är inte ett substitut till Cocoa utan fungerar som en brygga mellan Ruby och Cocoa. Jag ser inga större problem med att använda Ruby i Cocoa-program. Däremot tycker jag att Objective-C ofta får en mer lättläst syntax.

 

Det ryktas även om att Xcode 3.0 som kommer i och med Leopard kommer att ha stöd för Ruby i Cocoa-applikationer direkt efter installationen. Jag tror att vi kommer att se många fler Ruby-applikationer för OS X så småningom.

Länk till kommentar
Dela på andra webbplatser

Cocoa är Cocoa oavsett om du använder Objective-C eller Ruby när du skriver kod. RubyCcooa är inte ett substitut till Cocoa utan fungerar som en brygga mellan Ruby och Cocoa. Jag ser inga större problem med att använda Ruby i Cocoa-program. Däremot tycker jag att Objective-C ofta får en mer lättläst syntax.

 

Det ryktas även om att Xcode 3.0 som kommer i och med Leopard kommer att ha stöd för Ruby i Cocoa-applikationer direkt efter installationen. Jag tror att vi kommer att se många fler Ruby-applikationer för OS X så småningom.

 

Tack Lars. Låter väldigt intressant. Ruby är kul, rent och enkelt. Mindre kul är dokumentationen för Ruby on Rails som är hopplös. Förstår inte hur dom lyckats med det. För många Gröna kanske när han dansken David Heinemeier Hansson som skapade Rails kom till den punkten . :-) Men det är förhoppningsvis något som kommer bli bättre då intresset för Ruby och RoR ökar. Och inte minst då det ska ingå som en del i Leopard.

Länk till kommentar
Dela på andra webbplatser

Jag tackar ödmjukast för alla kommentarer.

 

Det jag ska göra för tillfället är bara ett litet Mac OS X program, så det låter som om Cocoa onekligen är det bästa alternativet.

 

Men samtidigt vill man ju inte låsa sig, även om OSX är det bästa OS som finns just nu ;)

 

Lars Torpare:

Du ska att man kunde använda C++ i Cocoa, har du några länkar där man kan läsa mer om det?

Länk till kommentar
Dela på andra webbplatser

Men samtidigt vill man ju inte låsa sig, även om OSX är det bästa OS som finns just nu ;)

Du låser inte fast dig i OS X mer för att du använder Cocoa istället för Carbon. Ingen av dem finns för andra operativsystem. Vill du skriva portabla program ska du kika på Java.

 

Du ska att man kunde använda C++ i Cocoa, har du några länkar där man kan läsa mer om det?

Using C++ With Objective-C: http://developer.apple.com/documentation/C...section_10.html

Länk till kommentar
Dela på andra webbplatser

  • 2 weeks later...

Om du redan kan C och objektorienterade koncept så lär du dig Objective-C på en eftermiddag. Att lära sig API:et tar betydligt längre tid, men det är samma sak oavsett om du väljer Carbon eller Cocoa.

Vill du göra snygga och användbara OS X-program ska du välja Cocoa. Det finns alltid drawbacks med plattformsoberoende, och det går väldigt mycket snabbare att utveckla ett OS X-only-app i Cocoa än ett som funkar både till win och OS X med Carbon, såvida du inte redan har väldigt mycket ramverk färdiga.

Förutom Objective-C kan du såklart använda bindings till andra språk om det faller dig bättre i smaken, t.ex. PyObjC eller RubyCocoa.

Länk till kommentar
Dela på andra webbplatser

Cocoa är definitivt det du ska titta på om du är intresserad av att göra program för MacOS X.

Lärningskurvan är ganska brant, Men när du kommit igång kan du göra iprincip vad som helst väldigt enkelt, Carbon är stenålder idag- ytterst få nya program skrivs med Carbon.

 

Det finns situationer då du _måste_ välja Carbon istället för Cocoa men det är inget som normal programmerare påträffar, Utan endast om du skriver på väldigt lågnivå i systemet, Cocoa eller rättare sagt Objective-C kräver nämligen en runtime vilken inte är tillgänglig under alla omständigheter, ungefär som C++ med RTTI. Du kan förövrigt skriva Carbon i Objective C också utan svårigheter, Objective-C är helt bakåt kompatibelt med C, så det är inga svårigheter att anropa Carbon från ObjC, Tvärtom går också som lars skrev men är betydligt svårare och behöver man verkligen göra det så har man förmodligen gjort ett stort misstag att skriva i Carbon till att börja med.

Carbon har en fördel mot Cocoa det är något snabbare exekutionsmässigt då runtimen inte involveras, det är dock sällan märkbart och än mindre på x86 maskinerna, PowerPC hostar lite på vissa saker i Mach ABI:t vilket gör Carbon/Cocoa kontrasten något mer mätbar, men det handlar om microsekunder och för att göra någon mätbar skillnad måste du ha en tight loop som anropar en funktion/metod ur respektive ramverk, det är något som sällan inträffar.

 

Edit: ---

 

Och så lite kortfattat, Cocoa är avsett för GUI program i första hand, det är där det verkligen skiner- Och det är väldigt nära RAD i många avseenden, Men visst kan man göra icke GUI apps i Cocoa (fast man måste då länka till Foundation.framework istället för Cocoa.framework (vilket automatiskt länkar AppKit.framework och Foundation.framework)

 

Carbon spänner sig över ett större område (Carbon är ju egentligen det gamla Mac APIt fast förnyat för skyddatminne och irq multitasking)

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...
Ingemar Ragnemalm

Carbon innehåller en del av gamla MacOS-Toolboxen, men det är mindre än man kan tro. Framför allt är nästan allt gammalt "depreciated" (det finns men anses gammaldags). Det går ganska lätt att porta gamla program, men skall de vara moderna så måste de skrivas om nästan helt. (Lämpligtvis i moderna Carbon-APIerna.)

 

Mitt val är i alla fall Carbon (och dess syskon "Core"). Cocoa låser mig på ett språk som visserligen existerar på andra plattformar, men i praktiken är det NeXTs eget språk. Det kommer att åka ut när det är dags för generationsskifte hos Apple. Carbon kan prata med vilket språk som helst (inkl Obj-C). Jag vill ha den friheten.

 

 

/Ingemar

Länk till kommentar
Dela på andra webbplatser

Lars Torpare

Ingemar: Du kan skriva Cocoa-program i flertalet andra språk förutom Objective-C. Bland annat kommer Xcode 3 i Leopard att ha inbyggt stöd för Cocoa-utveckling med både Python och Ruby.

Länk till kommentar
Dela på andra webbplatser

Det går att skriva Cocoa i andra språk ja, Men Cocoa som framework är och kommer alltid vara skrivet i ObjectiveC och således förlita sig på att ett komplett ObjC system finns på platformen.

Jobbar man med flera platformar är det i mångafall smidigare att använda större delar Carbon då Carbon oftast kan mappa ganska bra på andra operativsystems API:er.

 

Men frågan är om det är rätt sätt egentligen? Det tar inte mycket längre tid att göra en frontend i Cocoa som dessutom ger ett mycket "Macigare" resultat i slutändan.

 

Däremot så tror jag inte Apple någonsin kommer "kasta ut" Objective-C, Det finns inget språk som direkt kan ersätta och göra något bättre som inte Objective-C redan gör.

Java är för hårt typat så det mesta kräver mer kod istället (Apple har förövrigt slutat stödja cocoa program skrivna i java)

C++ dras med så många problem att knappast ingen vill använda det om det finns andra språktillgängliga, det absolut största problemet är att det inte har något stabilt ABI.

 

Ett flertal andra språk är så små och eller så olika C att dom gör det krångligare att jobba med speciellt om man redan har en stordel av programmet skrivet i tex C, visserligen kan dom flesta språk anropa C libs men det känns ganska meningslöst att ha separata projekt för ett program då det inte finns någon annan anledning än att det är absolut nödvändigt för att få programmet att fungera utan att skriva om allt.

Objective-C är nära på fullt C bakåtkompatibelt och gör det där med väldigt lätt att flytta över platformsoberonedekod eller vad man nu har till ett nytt cocoa projekt.

Länk till kommentar
Dela på andra webbplatser

Ingemar Ragnemalm
Ingemar: Du kan skriva Cocoa-program i flertalet andra språk förutom Objective-C. Bland annat kommer Xcode 3 i Leopard att ha inbyggt stöd för Cocoa-utveckling med både Python och Ruby.

Flertalet? Det enda jag vet är Java, och Cocoa för Java är nedlagt. Inte mycket till alternativ. Och Python och Ruby är ännu långsammare än Java, inte någon vidare skojig väg att gå även om det är hyfsade språk.

Länk till kommentar
Dela på andra webbplatser

Lars Torpare
Flertalet? Det enda jag vet är Java, och Cocoa för Java är nedlagt. Inte mycket till alternativ.

He he. Fel av mig. Ibland skriver man snabbare än vad hjärnan hinner med.

Länk till kommentar
Dela på andra webbplatser

Ingemar Ragnemalm
He he. Fel av mig. Ibland skriver man snabbare än vad hjärnan hinner med.

Nå, du har inte helt fel, för man kan anropa Cocoa från alla språk, men det är bökigt, opraktiskt. Jag har sett exempel i alla fall. Allt går att lösa med klisterkod.

Länk till kommentar
Dela på andra webbplatser

Jag kan svara enkelt åt dig:

 

Objective-C är i dagsläget antagligen det absolut bästa programmeringsspråket som går att kompilera till flera plattformar. Speciellt om man kopplar det till Cocoa (men då är det låst till OS X). Jag tänker inte förvadla denna diskussionen till bråk om C++ kontra C, utan håller det vid att väldigt många utvecklare som jobbar profesionellt erkänner att C++ är ett dåligt programmeringsspråk i att det är alldeles för avancerat för vad det kan göra, och alldeles för spritt för att vara praktiskt. Syntaxen är ful och jobbig. Jag tror de flesta som kan både C++ och Objective-C med cocoa kommer hålla med om att Cocoa är väldigt mycket roligare att jobba med. (Därmed inte sagt att det är mer användbart, C++ är ett måste om man vill utveckla profesionella produkter till windows.)

Länk till kommentar
Dela på andra webbplatser

Ingemar Ragnemalm

Vad som är det bästa programmeringsspråket är en stor och komplicerad diskussion. Det beror på väldigt mycket. C++ är språket som var dåligt nog att bli världsstandard.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...