IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Swift Discussion :

Swift nécessite-t-il une VM ?


Sujet :

Swift

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut Swift nécessite-t-il une VM ?
    Bonjour,

    Swift semble être un langage de haut niveau, dont le fonctionnement ressemble plus ou moins aux technologies Java et .NET, mais dont la syntaxe s'approche plus du Python.

    Je ne voudrais pas dire de bêtise, mais il me semble que pour Android (Dalvik), le mécanisme est le même que sur PC, la JVM interprète du bytecode. Tandis que sur Windows Phone, le code C# est compilé en binaire (meilleure économie pour les batteries certainement).
    1. Jusqu'à présent, les appareils mobiles d'Apple n'intègre pas de GC, mais est-ce que cela va changer avec Swift ? Quel est le mécanisme "d'interprétation" d'un programme Swift ?
    2. Est-ce que Swift est utilisable sur les appareils mobiles uniquement, ou bien toute la gamme Apple ? (Macbook etc)

    Cordialement,
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  2. #2
    Expert confirmé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 900
    Par défaut
    Salut,


    Je ne voudrais pas dire de bêtise, mais il me semble que pour Android (Dalvik), le mécanisme est le même que sur PC, la JVM interprète du bytecode. Tandis que sur Windows Phone, le code C# est compilé en binaire (meilleure économie pour les batteries certainement).
    Dans les deux cas c'est pareil, c'est du JIT (just in time compiler), ça n'est donc ni du compilé classique (comme pour le C), ni de l’interprété, c'est entre les deux, c'est plus performant que de l'interprété.

    Par contre swift est compilé, comme objective C.

    2. Est-ce que Swift est utilisable sur les appareils mobiles uniquement, ou bien toute la gamme Apple ? (Macbook etc)
    Il est dispo aussi sur Mac.

  3. #3
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Concernant Windows Phone j'ai trouvé cette information sur internet :
    TIL: Windows Phone 8 doesn't use a JIT compiler. Instead it uses a cloud-based optimizing compiler that automatically generates "almost done" native images for all apps, which are then quickly finalized on the phone itself in order to produce a native executable.
    Source.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 101
    Par défaut
    Il n’y a pas de GC mais il y a ARC (Automatic Reference Counting) qui est un système plus performant qu’un GC et qui de fait est utilisé par un grosse majorité de développeur iOS (je dis grosse majorité dans le doute, mais je n’en connait pas un seul qui ne l’utilise pas).

  5. #5
    Membre très actif
    Avatar de yimson
    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Janvier 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 215
    Par défaut
    Bonjour,

    SVP, quelqu'un pourrait-il expliquer le principe de fonctionnement du ARC ?

    Cheers.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 101
    Par défaut
    Bonjour @yimson : voici un lien qui explique cela avec plus de détail mais pas trop : http://www-igm.univ-mlv.fr/~dr/XPOSE...re/memory.html

  7. #7
    Membre chevronné

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Par défaut
    Citation Envoyé par yimson Voir le message
    Bonjour,

    SVP, quelqu'un pourrait-il expliquer le principe de fonctionnement du ARC ?

    Cheers.
    Le principe de départ est le compteur de références (non automatique), qui associe à chaque variable un nombre indiquant combien il existe de références à un objet. Quand le compteur atteint zéro, la mémoire de l'objet est libérée.

    Par la suite le langage Objective C a introduit les "autorelease pools". Une variable spéciale est déclarée par exemple au début des fonctions. Après quoi, tout objet sur lequel tu invoque autorelease est attaché à cette variable (autorelease pool). Quand l'exécution atteint la fin de la fonction, les variables locales sont éliminées de la pile. Quand la variable spéciale est éliminée de la pile, toutes les variables attachées perdent une référence - et la plupart du temps leur mémoire est libérée.

    Avec le compteur de références automatique, c'est simplement le compilateur qui met des déclarations d'autorelease pool et des appels à autorelease, retain (incrémente le compteur) et release (décrémente le compteur) là où il faut.

    Mais pour bien fonctionner, il faut que l'utilisateur d'ARC annote les références à d'autres objets avec weak quand l'objet qui contient la référence n'est pas le "propriétaire" de l'objet référencé, de façon à éviter les références en boucle. Il n'est pas toujours facile de bien s'y prendre et à mon avis c'est l'obstacle principal à la démocratisation du langage.

    Voir aussi les cours et tutoriels de formation pour apprendre la programmation swift.

Discussions similaires

  1. [RegEx] Fonction nécessite une fonction
    Par floriian2008 dans le forum Langage
    Réponses: 1
    Dernier message: 06/08/2008, 18h32
  2. Réponses: 7
    Dernier message: 27/02/2008, 17h45
  3. Sous-Formulaire basé sur une requête nécessitant des paramètes
    Par nicou50 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 02/09/2006, 23h18
  4. Réponses: 2
    Dernier message: 04/08/2006, 15h23
  5. [Déploiement] Code Java nécessitant une dll
    Par nicolas.pied dans le forum Général Java
    Réponses: 3
    Dernier message: 12/01/2006, 20h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo