| C++ | Doch multiple platform fähig?

Ingolo

Erfahrenes Mitglied
Hallo,

neulich hab ich bei einem Arbeitgeber gelesen das bei seinem Job den er zu vergeben hat C++ als grundvoraussetzung dient. Dort stand einiges Detailiert über alles mögliche. Auch über C++. Die Firma ist ein Riese in der Software branche. Ist das neu oder gibts das schon länger. Ich meine: Java ist doch Platformunabhänig. Und bei dem Arbeitgeber las ich das C++ es auch sei. Die Anwendungen selber nicht, aber die anwendungen die man schreibt und/oder fertig geschrieben hat können platformunabhängig programmiert/geschrieben werden. Ist das möglich?
 
Die Sprache C++ als solches und ihre Standardbibliotheken sind schon plattformunabhängig. Wenn man allerdings Programme entwickeln will, die über einfache Konsolenanwendungen hinaus gehen (also etwa GUI-Anwendungen), kommt man nicht umhin, die entsprechenden Schnittstellen (API) des jeweiligen Betriebssystems zu benutzen. An dieser Stelle hört dann die Plattformunabhängigkeit auf.
Bei Java ist Plattformabhängigkeit in die Laufzeitumgebung gewandert, so dass man als Anwendungsentwickler davon nicht berührt wird.


Gruß
MCoder
 
Aber ich könnte schon sagen:

'Hey jetzt habe ich lust in C++ ein programm für ein handy zu schreiben.' oder
'Jetzt schreib ich ein Programm in C++ für einen Macintosh oder Linux.'

Das geht doch schon oder?
 
Für das Handy wird es vermutlich schon schwieriger, da müsste der jeweilige Hersteller einen Compiler liefern. Da kommt man auch mit den Standardsachen (Konsole) nicht weit.
[Standard-Gemecker: Der Dämlack, der auf die Idee gekommen ist, auf dem unterentwickelten Prozessor eines Handys ausgerechnet Java draufzupacken, gehört...]

Linux und Mac ist klar, da bekommst du einen C++-Compiler mitgeliefert (Wäre das nicht nett, bei Windows auch dabeizuhaben?)
 
Mit welcher Prog-Sprache werden/wurden den die compiler geschrieben wenn man für c++ für jede andere platform extra einen andere compiler braucht?
 
Also GCC, der Compiler der standardmaessig bei Linux dabei ist, und ich denk mal auch bei MacOS X, ist wohl zum groessten Teil, wenn nicht ausschliesslich in C geschrieben. Moeglicherweise auch etwas Assembler, aber da bin ich nicht sicher.
Du kannst GCC auf allen 3 Systemen einsetzen, den gibt's ja auch fuer Windows, jedoch muss er fuer das jeweilige System kompiliert werden. Du kannst ja nicht einfach das Linux-Binary nehmen und unter Windows ausfuehren. Das ELF-Format kann unter Windows nicht ausgefuehrt werden.
Weiterhin reicht ja ein Compiler nicht aus, es muessen auch entsprechende C-Libraries und Header dabei sein, unter Linux ist das die GlibC, ob diese auch unter MacOS X zum Einsatz kommt weiss ich nicht, koennte es mir aber vorstellen.
Es gibt uebrigens den Borland C++ Compiler, inklusive einiger Libraries und Header bei Borland kostenlos zum Download.
Programme sind natuerlich nicht immer direkt portierbar, vor allem wenn Funktionen genutzt werden die nicht von allen Systemen unterstuetzt werden. Aber wenn es sich um Standard-Funktionen wie simple Ein- und Ausgaben handelt sollte das kein Problem darstellen. Das beruehmte "Hallo Welt"-Programm wird man wohl ohne jegliche Anpassungen unter jedem OS kompilieren koennen.

Also, lange Rede kurzer Sinn, man muss nicht fuer jede Platform einen anderen Compiler haben, aber man muss einen fuer dieses System kompilierten Compiler haben und die entsprechenden Libraries und Header.

Uebrigens, zum Thema Handy: Wenn es sich dabei um ein SmartPhone handelt welches mit Windows Mobile laeuft gibt es von Microsoft alles was man zur Entwicklung dafuer benoetigt kostenlos zum Download. Inklusive eines "Handy-Emulators".
 
Was genau sind/ist ein Assembler und deren sprache? Sind das nicht diese dinger die die Maschinensprache 1/0 übersetzten?
 
Assembler ist eine sehr maschinennahe Programmiersprache.
In Assembler geschriebene Programm(teil)e sind in der Regel von der Hardware abhaengig da dort direkt auf den Prozessor und seine Register zugegriffen wird.
Hier mal ein kleines Login-Programm das ich vor einigen Jahren mal geschrieben hab:
Code:
data segment
ver db "X-Code 1.0",0ah,0dh,"$"
logged db 0
login db "Login:$"
inp db 128 dup(0)
x db "*$"
code1 db "password1$"
code2 db "password2$"
data ends

code segment
assume cs:code,ds:data
prog:
mov ax,data
mov ds,ax
newinput:
mov ah,0
mov al,3h
int 10h
lea dx,ver
mov ah,9
int 21h
lea dx,login
mov ah,9
int 21h
lea bx,inp
mov cx,128
clear:
mov [bx],byte ptr 0
inc bx
loop clear
lea bx,inp
input:
mov ah,7
int 21h
cmp al,0dh
je endinput
mov [bx],al
inc bx
lea dx,x
mov ah,9
int 21h
jmp input
endinput:
inc bx
mov [bx],byte ptr "$"
call checkcodes
cmp logged,0
je newinput
mov ah,4ch
int 21h

checkcodes proc
lea bx,code1
call codechk
cmp logged,1
je endcheck
lea bx,code2
call codechk
cmp logged,1
je endcheck
endcheck:
ret
endp checkcodes

codechk proc
lea dx,inp
mov logged,1
check:
mov al,[bx]
cmp al,"$"
je checkend
push bx
mov bx,dx
mov al,[bx]
pop bx
cmp al,"$"
je checkend
mov al,[bx]
push bx
mov bx,dx
mov cl,[bx]
pop bx
cmp al,cl
je checknext
mov logged,0
jmp checkend
checknext:
inc bx
inc dx
jmp check
checkend:
ret
endp codechk

code ends
end prog
 
Ist im Grunde ganz einfach:

Code: Kann platformunabhängig sein, kommt drauf an was für Librarys du verwendest
Programm / Binary: Nie platformunahbhängig, sollte auf alle Sprachen zutreffen die zu einer Binary compilliert werden
 
FireFlow hat gesagt.:
Programm / Binary: Nie platformunahbhängig, sollte auf alle Sprachen zutreffen die zu einer Binary compilliert werden
Bei Java und .NET sieht das anders aus. Dort ist auch der ByteCode (einigermassen) platformunabhaengig. Ich hab mal ein kleines C#-Programm (nicht viel umfanreicher als das gute, alte "Hallo Welt") unter Linux mit Mono kompiliert und konnte das Binary ohne Probleme unter Windows starten.
 

Neue Beiträge

Zurück