Utiliser des langages de programmation sur différents systèmes d’exploitation

Est-ce que quelqu’un pourrait m’aider à “emstackr” ma compréhension des différents langages de programmation sur différents systèmes d’exploitation? En partant du bas, l’ordinateur de base ne comprend que le code machine ou l’assembleur. Cela signifie que le système d’exploitation, disons Linux, est écrit en C et compilé en code machine, non? Ou Assembleur?

Si vous avez Linux écrit en C, cela signifie-t-il que le compilateur C est déjà présent par défaut et que je peux écrire n’importe quel programme simple en C, le placer dans un dossier et l’exécuter depuis la ligne de commande? Je vois que certaines dissortingbutions Linux comme Ubuntu viennent avec des dossiers / perl et / python. Je suppose que ce sont des compilateurs ou des interprètes d’autres langages de haut niveau et qu’ils viennent s’append à ces dissortingbutions de systèmes d’exploitation spécifiques. Si je veux exécuter Java, j’appendais Java JVM, etc. Cependant, C est la langue par défaut pour Linux? Ou C ++ fonctionnerait aussi à partir de la boîte?

Ensuite, si je vérifie Wikipedia, je vois ce qui suit écrit en :

  • Windows: C, C ++, Assembly
  • OS X: C, C ++, Objectif C
  • iOS: C, C ++, Objective C, Swift
  • Android: C, C ++, Java

Cela signifie-t-il que tout programme “Hello World” écrit dans la langue respective pour chaque système d’exploitation serait hors de la boîte?

Puis-je écrire un pilote matériel en théorie dans Swift pour iOS? Ou certaines langues sont destinées à des tâches de bas niveau et d’autres sont destinées à des applications d’utilisateur final?

Puis-je écrire un programme en C et l’exécuter sur iOS et Android? Ou suis-je limité à Objective-C / Swift / Java?

Pour exécuter une autre langue en plus de ce qui précède, je devrais append des logiciels supplémentaires, tels que compilateur / interprète / VM. Correct?

Tout ce qui est écrit en C, C ++ et Assembly devient le code machine. TOUS les logiciels exécutés sur le matériel sont du code machine.

Votre système d’exploitation est composé du seul code machine autorisé à effectuer certaines opérations (principalement liées au contrôle du matériel). Cela permet à l’OS d’agir comme une sorte de gatekeeper sur le matériel. Les programmes réguliers accèdent au matériel en appelant des fonctions que le système d’exploitation expose.

La langue dans laquelle le système d’exploitation est écrit n’a pas d’importance pour les programmes exécutés sur ce système d’exploitation. Fondamentalement, quels que soient les outils qui traduisent votre code source en code machine (compilateurs, assembleurs, etc.), il faut se soucier de la langue, mais après cela, il est binary.

Si vous avez Linux écrit en C, cela signifie-t-il que le compilateur C est déjà présent par défaut

Non, vous auriez besoin de compilateurs GCC ou autres installés. Cela dépend entièrement de la dissortingbution Linux que vous utilisez.

Il en va de même pour Windows (partiellement écrit en C) et tous les autres systèmes d’exploitation, vous ne pouvez pas comstackr les programmes C sans avoir un compilateur installé.

Cependant, C est la langue par défaut pour Linux? Ou C ++ fonctionnerait aussi à partir de la boîte?

Linux n’a pas de langage par défaut, le kernel est écrit en C et en assembleur. Le binary compilé fournit une interface pour les applications / services à exécuter sur le dessus. Vous pouvez le voir comme une abstraction pour le matériel. Pour être plus précis, la notion de langage par défaut n’existe pas. Tant qu’un programme comstack en un binary compatible que le système d’exploitation peut exécuter, le programme s’exécutera.

Cela signifie-t-il que tout programme “Hello World” écrit dans la langue respective pour chaque système d’exploitation serait hors de la boîte?

(En supposant que “programme écrit” signifie code)

Dépend de la langue dans laquelle vous écrivez votre programme Hello World. Pour un langage compilé comme C / C ++, il est écrit une fois partout , ce qui signifie que le code est portable mais qu’il doit être compilé en binary sur la plate-forme cible. . (Ceci n’est vrai que si vous rendez le code portable).

Pour les langages interprétés (sorta *) tels que Java, le code est d’abord compilé en bytecode puis exécuté dans les machines virtuelles sur la plate-forme cible.

En règle générale, vous devez configurer un environnement de développement pour le code à comstackr. Cela signifie que le SDK, les compilateurs et les outils doivent être installés.

Puis-je écrire un pilote matériel en théorie dans Swift pour iOS? Ou certaines langues sont destinées à des tâches de bas niveau et d’autres sont destinées à des applications d’utilisateur final?

Dépend de l’OS et du design. Dans le cas d’iOS et de Swift, Swift interpole avec l’Objectif C. Cela signifie que vous pouvez appeler les méthodes Objective C de Swift. Vous pouvez donc écrire des pilotes dans Swift.

Désormais, les langages gérés tels que C # et Java peuvent ne pas convenir à l’écriture de pilotes de périphériques car ils ne disposent pas d’un access de bas niveau au matériel. Dans un langage non géré tel que C, la mémoire et le BIOS sont exposés au programmeur, ce qui simplifie le développement des pilotes.

Puis-je écrire un programme en C et l’exécuter sur iOS et Android? Ou suis-je limité à Objective-C / Swift / Java?

Cela dépend de la plate-forme et / ou de l’interface binary de l’application.

Dans Android, vous pouvez programmer en C / C ++ en utilisant le NDK ou simplement utiliser Java. Dans iOS, vous n’avez pas beaucoup d’options. Swift avec Objective C / C / C ++ est votre seul choix (à moins que vous n’utilisiez des solutions tierces telles que RoboVM).

Pour exécuter une autre langue en plus de ce qui précède, je devrais append des logiciels supplémentaires, tels que compilateur / interprète / VM. Correct?

Correct.

* NOTE: Java lui-même n’est pas interprété. Le bytecode compilé est. Ceci est similaire à C #. Un vrai langage interprété serait quelque chose comme JavaScript.