Une taille ne convient pas à tous. Pourquoi les logiciels ne sont-ils pas universellement compatibles?

  • Joseph Goodman
  • 0
  • 4920
  • 898
Publicité

Vous venez de télécharger une mise à jour riche en fonctionnalités sur votre application open source préférée. Tout fonctionne bien et vous l'utilisez sur vos autres appareils - il est donc temps de les diffuser également.

Sauf que votre tout nouvel ordinateur portable Linux n'est pas compatible avec votre package d'installation Windows. Que diriez-vous de votre tablette Android? iPhone? PS4? Pourquoi ne pouvez-vous pas simplement prendre ce logiciel et l’utiliser où vous le souhaitez? Explorons différentes barrières au rêve de “acheter une fois, courir n'importe où.”

Développement logiciel et architecture de système d'exploitation

Comprendre pourquoi les logiciels ne fonctionnent pas sur tous les systèmes d'exploitation nécessite un peu (juste un peu, je vous le promets) des connaissances sur la fabrication des logiciels..

Le processus de développement logiciel

Dans un flux de développement logiciel très basique pour les ordinateurs de bureau, les serveurs et les mobiles (c'est-à-dire pas la programmation Web par rapport au développement Web: quelle est la différence? Programmation par rapport au développement Web: quelle est la différence? Vous pourriez penser que les programmeurs d'applications et les développeurs Web font le même travail , mais c’est loin de la vérité. Voici les principales différences entre les programmeurs et les développeurs Web.), un programmeur va:

  1. Tapez un peu code dans un ou plusieurs fichiers.
  2. Compiler le code dans quelque chose que l'ordinateur peut exécuter.
  3. Tester pour vous assurer que le programme fonctionne comme prévu.
  4. Emballer et distribuer / déployer les logiciels.

C’est une combinaison des première et deuxième étapes qui nous concerne ici. Le processus de compiler logiciel, ou le transformer en code et en zéros qu'un ordinateur comprend (langage machine) est complexe. Nous n'entrerons pas dans les détails, mais il est utile de comprendre à un niveau élevé ce qui se passe.

Architecture du système d'exploitation

Un point important à comprendre est qu'un système d'exploitation n'est pas une entité unique. Plutôt, il est composé de couches de logiciels.

Noyaux de système d'exploitation

Un système d'exploitation noyau est responsable de la communication avec le matériel de l'ordinateur. Le logiciel communique ses commandes au noyau, qui à son tour envoie des commandes au matériel pour (par exemple) lire un fichier sur le disque dur ou dessiner une fenêtre à l'écran. Il coordonne essentiellement toutes les informations (qu'il s'agisse de données stockées, de calculs ou d'entrées utilisateur) entre le matériel et divers logiciels. Le noyau met toutes ces fonctionnalités à la disposition du logiciel via appels système.

Crédit d'image: Wikimedia Commons

Le noyau de chaque système d'exploitation implémente les appels système différemment, en termes de noms disponibles, de noms et d'options. En conséquence, le logiciel doit prendre en compte les appels système pris en charge par le noyau de chaque système d'exploitation ciblé. L'appel système que vous utilisez pour envoyer des données au processeur graphique sous Linux peut porter un nom différent, une liste d'informations à fournir, ou les deux sous Windows. Cet appel exact peut même ne pas être là du tout.

Bibliothèques système

Dans de nombreux cas, le logiciel n’appelle pas directement le noyau. Au lieu de cela, il appelle à bibliothèques système, ou des collections de fonctions de base. Les bibliothèques existent donc, par exemple, chaque programme qui enregistre des fichiers sur le disque dur n'a pas besoin d'écrire de fonction pour le faire. Au lieu de cela, simplement Liens vers une bibliothèque système et utilise une fonction existante. La bibliothèque GLibC pour Linux est un bon exemple, tout comme les fichiers .DLL de l'API Win32 ou le contenu d'un répertoire Mac / System / Library. Comment accéder au dossier de la bibliothèque OS X et pourquoi est-il pratique? Comment accéder à la bibliothèque OS X Dossier et pourquoi c'est pratique La plupart des dossiers de bibliothèque OS X sont mieux laissés seuls, mais il est utile de connaître votre chemin dans et autour de la bibliothèque utilisateur.. .

Crédit d'image: ScottXW via Wikimedia Commons

Les bibliothèques système agissent comme une sorte de traducteur entre les applications et le noyau pour les tâches de routine. Les applications font appels de fonction à ces bibliothèques, qui gèrent beaucoup de détails de bas niveau. Ils peuvent également faire des appels système au noyau pour plus de commodité. Comme vous l'avez peut-être deviné, cela signifie que ces bibliothèques sont écrites pour un noyau particulier et ne peuvent donc pas être utilisées sur des systèmes d'exploitation dotés de noyaux différents..

En-têtes d'exécution du système d'exploitation

Le dernier obstacle au logiciel universel est le format des fichiers exécutables pour les systèmes d'exploitation. Un système d'exploitation s'attend à ce que les fichiers qu'il exécute suivent un format de fichier binaire particulier. Tout ce que vous devez savoir sur les formats de fichier et leurs propriétés. Tout ce que vous devez savoir sur les formats de fichier et leurs propriétés. Nous utilisons le fichier Word de manière interchangeable: musique, image, feuille de calcul, diaporama. , etc. Mais qu'est-ce qui fait qu'un fichier est un "fichier"? Essayons de comprendre cette partie fondamentale de l'informatique. . Par exemple, les fichiers ELF (Executable and Linkable Format) exécutés sur des systèmes d'exploitation tels que Linux et FreeBSD doivent spécifier certaines propriétés du fichier dans certains octets, comme indiqué dans l'image ci-dessous..

le interface binaire d'application (ABI) montré capable est d'une importance particulière. Une combinaison des appels disponibles dans les bibliothèques processeur, noyau et système, une ABI est similaire à une interface de programmation d'application (API) en ce sens qu'il définit la manière dont deux programmes communiquent l'un avec l'autre. Mais l’API est quelque chose que les programmeurs (humains) utilisent en code source pour indiquer deux logiciels devrait Parler l'un à l'autre. L’ABI est ce qui leur permet réellement de le faire une fois le logiciel compilé et exécuté. Chaque système d'exploitation implémente une ABI particulière, qui peut ou non changer d'une version à l'autre du même système d'exploitation..

En général, les systèmes d'exploitation implémentent leur propre ABI, déterminée par une combinaison du type de processeur, du noyau et de toutes les bibliothèques système standard. Mais parfois, un système d'exploitation implémentera plus d'un. Par exemple, FreeBSD prend en charge les fichiers binaires Linux, car il fournit une ABI Linux en tant que complément du noyau FreeBSD (au lieu du noyau Linux). Ceci est différent des programmes de virtualisation Qu'est-ce qu'une machine virtuelle? Tout ce que vous devez savoir Qu'est-ce qu'une machine virtuelle? Tout ce que vous devez savoir Les machines virtuelles vous permettent d'exécuter d'autres systèmes d'exploitation sur votre ordinateur actuel. Voici ce que vous devriez savoir à leur sujet. tels que VMWare ou VirtualBox, qui utilisent un logiciel pour simuler une machine entière (matériel et tout). En conséquence, ce type de compatibilité ABI est plus rapide, mais demande beaucoup plus d’entretien. C’est pourquoi elle est rare, bien que Microsoft ait récemment constaté que Ubuntu est désormais disponible sur le Windows Store Ubuntu est maintenant disponible sur le Windows Store Windows Insiders peut désormais télécharger et installer Ubuntu sur Windows 10. Cela rassemble Linux et Windows dans une union impie peu ont jamais imaginé qu'ils vivraient assez longtemps pour être témoins. en le faisant.

Exception: logiciel interprété

Sur la base de ce qui précède, nous avons appris que les développeurs écrivent des logiciels pour un seul type de système cible. Sauf quand ils ne le font pas. Il existe de nombreuses applications que vous pouvez télécharger et exécuter sur un Mac, puis copier et exécuter sur Windows, et peut-être même copier à nouveau et exécuter sur Linux sans aucun problème. Comment est-ce possible?

Étais-je couché jusqu'à maintenant?

En fin de compte, il existe une catégorie de logiciels qui ressemble à la surface “court partout.” Vous pouvez le télécharger et l’exécuter sur n’importe quelle plate-forme prise en charge - le mot clé étant “prise en charge.” En fait, vous téléchargez le code source de l’application, alors qu’une autre application (la interprète) exécute le code source directement en temps réel. C'est un peu une simplification excessive, regardons donc comment cela fonctionne avec quelques langues.

Java

Quand Java a été publié pour la première fois, c'était promis (littéralement) “écrivez une fois, exécutez partout.” L'idée était de créer des applications à l'aide de fonctions Java pour enregistrer des fichiers, effectuer des calculs ou créer une fenêtre d'application. Puis un Environnement d'exécution Java (JRE) Pour chaque plate-forme informatique prise en charge, le code sera exécuté et traduit en fonctions OS natives. Le truc pour Java est qu’il ne fonctionne pas “directement” sur le système d'exploitation. Il est situé dans une partie de la JRE appelée Machine virtuelle Java et c'est ce qui fonctionne sur le système d'exploitation.

En insérant cette couche logicielle supplémentaire entre l'application et le système d'exploitation, Java vous permet de vous concentrer sur un ensemble de fonctions identiques sur tous les systèmes d'exploitation. Vous indiquez à Java ce que vous voulez faire et laissez la JVM de votre système s’inquiéter de la manière de le faire. La photo ci-dessous montre cela en action, où Java Desktop Application Framework de JIDE Software affiche la même application pour Mac (en haut) et Windows (centre-gauche)., “Java pur” (centre-droit) et Linux (en bas).

Crédit d'image: logiciel JIDE

Les programmes Java ne font pas précisément “compiler” eux-mêmes en temps réel. Au contraire, le compilateur Java les rendra en “bytecode.” Vous pouvez considérer le code intermédiaire comme un programme à moitié cuit. Lorsque le développeur publie l'application, elle est compilée autant que possible sans savoir sur quel système d'exploitation elle s'exécutera. Lorsque vous le lancez, la machine virtuelle Java “cuire le reste du chemin” pour s'adapter aux fonctions particulières du système d'exploitation hôte.

Python

Un langage interprété populaire est Python 5 raisons pour lesquelles la programmation Python n'est pas inutile 5 raisons pour lesquelles la programmation Python n'est pas inutile Python - Vous l'aimez ou vous le détestez. Vous pouvez même basculer d'un bout à l'autre comme un pendule. Quoi qu'il en soit, Python est un langage sur lequel il est difficile d'être ambivalent. . Lorsque vous exécutez un script Python, l'interpréteur Python traduit le code en instructions pour le système d'exploitation. Il peut également fonctionner de manière similaire à Java: lorsque vous “importation” code provenant de l'extérieur de votre application, il est compilé en bytecode lors de sa première exécution. Ensuite, l’interprète saura si, lors des exécutions suivantes, le code original a été modifié, il le recompilera ensuite en un nouveau bytecode..

Un sous-produit cool de cette “à la demande” En cours d'exécution, vous pouvez utiliser l'interprète pour développer vos scripts de manière interactive. En tapant simplement “python” Sur la ligne de commande, vous lancerez l'interpréteur, vous pourrez exécuter du code et voir immédiatement les résultats..

Cela signifie que les développeurs peuvent jouer et peaufiner les choses “vivre.” Ensuite, une fois qu'une ligne de code fait ce qu'elle veut, copiez-la et collez-la dans un fichier de script (ce qui est beaucoup plus efficace que le “code-compiler-test” cycle que les programmeurs non interprétés doivent faire).

Même lorsque le logiciel est identique, ce n'est probablement pas

Malheureusement pour les utilisateurs, le secteur de la technologie n’a pas vraiment développé “universel” format. Et cela peut ne jamais arriver. L’introduction de ces types de normes aboutit souvent à une “le plus petit dénominateur commun” solution, avec des concessions dans le but d'obtenir l'approbation de tous.

Qu'est-ce que tu penses? Préféreriez-vous un logiciel compatible universellement, même si cela signifiait qu'il n'était pas aussi bon? Ou êtes-vous d'accord avec le système d'exploitation que vous utilisez et n'avez aucun intérêt pour les applications d'autres plates-formes? Faites-nous savoir ci-dessous dans les commentaires!

Crédits d'image: Masterchief_Productions / Shutterstock




Personne n'a encore commenté ce post.

De la technologie moderne, simple et abordable.
Votre guide dans le monde de la technologie moderne. Apprenez à utiliser les technologies et les gadgets qui nous entourent chaque jour et à découvrir des choses intéressantes sur Internet.