2010-12-09 27 views
1

Je voudrais apprendre l'objectif-c et le cacao. Je veux vous demander si vous pouvez me recommander n'importe quel genre de chose pour apprendre cette langue et le cadre de cacao (pour le développement de Mac OS X). Je connais actuellement PHP. Sera difficile d'apprendre Obj-C en PHP?
PD: L'anglais n'est pas la langue maternelle, j'ai un assez bon niveau. Serait-ce si difficile à apprendre avec ma connaissance de l'anglais?Suggestions pour apprendre Objective-C et Cocoa

+0

Vous allez avoir besoin d'une compréhension raisonnable de l'anglais technique bien faire dans ce domaine, mais vous semblez bien faire avec l'anglais dans votre question, donc je ne vous inquiétez pas. Vous mai mai ou ne pas avoir à lire plus attentivement qu'un locuteur natif; J'ai vu les deux. –

Répondre

2

Excellent! C'est inspirant d'entendre que vous voulez apprendre de nouveaux langages de programmation. Objective-C est un langage intéressant parce que c'est un surensemble de ANSI-C qui comprend Message Passing. Vous pouvez envisager d'apprendre C d'abord, car il vous aidera à apprendre quelques principes fondamentaux de l'informatique qui ne sont pas pertinents pour PHP, et une fois vous savez C, l'objectif C est beaucoup plus facile à comprendre.

De plus, je trouve que l'apprentissage d'une nouvelle langue, il aide beaucoup à comprendre certaines des différences entre eux. (Pardonnez-moi si vous avez déjà compris les informations suivantes ou si elles sont trop basiques!)

  • PHP est un langage interprété. Ainsi, chaque fois que vous exécutez un script PHP, le binaire PHP ou CGI décide peut-être quoi faire avec chaque appel de fonction ou déclaration que vous faites dans le script. D'un autre côté, C est un langage compilé. Cela signifie que vous devez d'abord écrire le code C, puis le "compiler" en langage assembleur (plus ou moins une représentation en langage écrit du code machine) et l'assembler en code machine (1 et 0).

    Heureusement, vous n'avez pas à faire ces étapes vous-même! Le compilateur et l'assembleur le font. Le fait est que le code C est finalement transformé en une application binaire qui s'exécute directement sur le processeur de l'ordinateur sans être interprétée.

  • Vous devrez apprendre à gérer des structures de mémoire et de données sur votre propre. En PHP, la mémoire pour les variables et les structures est automatiquement allouée pour vous. En C ou Objective-C, votre application devra le faire en utilisant un appel de fonction ou un message. De plus, vous devrez disposer de la mémoire lorsque votre application n'aura plus besoin de la structure de variables ou de données. PHP est ce qu'on appelle un langage typé "vaguement" ou "dynamiquement", ce qui signifie que vérifier un type de variable (pour convertir un type en un autre) est fait pendant l'exécution du script.

    D'autre part, C et Objective-C sont (la plupart du temps) statiquement typé, ce qui signifie que les conversions de type sont vérifiées lorsque l'application est compilée. Finalement, Objective-C a aussi un passage de message, qui est similaire à un appel de fonction, bien qu'un message soit toujours envoyé à un objet.

Il existe de nombreuses autres différences, mais ce sont quelques-unes des principales. N'hésitez pas à commenter avec des questions.

Aussi, à d'autres, n'hésitez pas à signaler les erreurs ou les choses que j'ai peut-être manqué.

+0

Merci !! Pouvez-vous me recommander n'importe quelle ressource pour apprendre Objective-C ou je devrais utiliser le tutoriel Objective-C d'Apple ?? – Francesc

+0

Les livres d'Aaron Hillegass sont plutôt bons: http://www.bignerdranch.com/books – JeremyP

1

En plus de la réponse de Tom, je dirais que vous avez besoin d'une bonne compréhension de l'allocation de mémoire et des pointeurs. Ce sont de nouveaux concepts issus de PHP.

Je recommande l'apprentissage et la pratique des différentes couches de gestion de la mémoire du simple au complexe, et j'utiliser d'autres langues comme un pont de PHP à Objective-C:

  • allocation de pile (C)
  • allocation brute tas: malloc()/free() (C)
  • d'allocation intelligente tas: C++ nouveau/supprimer (C++)
  • Automa gestion de la mémoire tic basée sur des références (C#)
  • comptage et la collecte des ordures référence (Objective-C)

Et outils pour gérer cette mémoire:

  • types valeur, pointeurs et tableaux (C)
  • pointeurs vers des objets (C++)
  • références (C++ et C#)

Ceci vous aidera à comprendre la différence entre un bloc de mémoire et un pointeur ou une référence qui pointe vers ce bloc de mémoire.

Bonne chance