La oss bryte ned hvordan forskjellige språk forholder seg til monteringsspråk og portabilitet:
Assembly Language:The Foundation
* Lavt nivå: Monteringsspråk er programmeringsspråket på laveste nivå som direkte samhandler med datamaskinens maskinvare. Den bruker mnemonics (korte koder) for å representere maskininstruksjoner.
* Maskinspesifikk: Hver CPU -arkitektur (som x86, arm osv.) Har sitt eget unike samlingsspråk. Kode skrevet for en arkitektur vil ikke kjøre på en annen.
* Mangel på portabilitet: Forsamlingsspråkprogrammer er notorisk vanskelig å port mellom forskjellige CPU -er. Dette er fordi de underliggende maskinvareinstruksjonene og minnet adresseringsmekanismer varierer betydelig.
språk på høyt nivå:abstraksjon og portabilitet
* Abstraksjon: Språk på høyt nivå (som Python, Java, C ++) gir et høyere abstraksjonsnivå. De bruker nøkkelord, datatyper og kontrollstrømningsstrukturer som er mer menneskelige lesbare.
* kompilatorer/tolker: Magien med portabilitet skjer her. Disse programmene oversetter kode på høyt nivå til maskinspesifikke instruksjoner (monteringsspråk). Denne prosessen kalles samling (for språk som C, C ++, Rust) eller tolkning (for språk som Python, JavaScript).
* Målplattform: Kompilatorene er designet for en spesifikk målplattform (CPU -arkitektur og operativsystem). Når du kompilerer et program for høyt nivå, genererer kompilatoren maskinkode optimalisert for det målet.
Portabilitet:avveining
* mer bærbarhet, mindre kontroll: Språk på høyt nivå gir større bærbarhet fordi de abstrakte maskinvaredetaljer. Imidlertid kommer denne abstraksjonen på bekostning av redusert kontroll over den genererte maskinkoden.
* mindre portabilitet, mer kontroll: Monteringsspråk gir deg finkornet kontroll over maskinen, men det ofrer portabilitet.
eksempler
* c/c ++: Disse språkene anses som "semi-bærbare." Mens de er designet for å være bærbare, kan de noen ganger kreve plattformspesifikke justeringer for å jobbe feilfritt på tvers av forskjellige systemer.
* java: Java kan skryte av utmerket portabilitet takket være filosofien "skriv en gang, løp hvor som helst". Java -kode er samlet i bytecode, som deretter kan utføres på hvilken som helst plattform med en virtuell Java (JVM).
* python: Pythons tolk er tilgjengelig på forskjellige plattformer, noe som gjør den svært bærbar.
nøkkel takeaway
Monteringsspråk er maskinspesifikt, noe som gjør det ikke-bærbart. Språk på høyt nivå oppnår portabilitet ved å bruke kompilatorer/tolker for å bygge bro mellom abstrakt kode og den underliggende maskinvaren. Nivået på oppnådd portabilitet avhenger av det spesifikke språket og raffinementet til kompilatoren eller tolken.