WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Programmieren mit und für Win+Linux (http://www.wcm.at/forum/showthread.php?t=22276)

fran 27.05.2001 05:37

Programmieren mit und für Win+Linux
 
Hallo,
ich hab ein paar grundlegende Fragen zum Programmieren:

1. Wenn ich C/C++ oder Java Code schreibe - ist dieser dann grundsätzlich OS unabhängig und vom Compiler abhängig? - Kann ich z. B. einfach unter Linux auch Programme für Win und/oder umgekehrt schreiben?

2. Wie sieht es generell bezüglich Programmierumgebung und Flexibilität aus - bei Win und Linux: - ich meine, wenn ich z.B. C/C++ oder Java unter Win lerne, kann ich mit diesem Wissen auch Programme unter Linux schreiben?

Das klingt jetzt vielleicht etwas konfus. Ich möchte mich aber mehr mit richtiger Programmierung beschäftigen und weiß nicht mit welchem OS. Ich verwende Linux und Win - und möchte die Programmierkenntnisse möglichst mit beiden OS umsetzen können.

Ich bitte euch um Tipps

grüße

Galileo 27.05.2001 09:27

also wenn du etwas in java schreibst läufts auf allen betriebssystemen, unter C musst schon betriebssystemabhängige compiler verwenden.

pong 27.05.2001 09:41

c/c++ sources kanns du unter win/linux schreiben des is egal, aber kompilieren musst du sie unter dem os wo die programme laufen sollen!

allerdings gibt es ein paar bibliotheken (header-files) die nur unter win bzw linux vorhanden sind zB du wirst dos.h nicht unter linux finden und unixstd.h nicht unter windoof. aber ansonsten sollten deine programme überall laufen

artemisia 27.05.2001 11:42

@fran

in java kannst du natürlich applikationen für beide os schreiben (insbesondere wenn diese in einem browser ablaufen sollen), da java sowieso mit einem bytecode arbeitet.
zu c: die progs die du in c schreibst, möchtest du wahrscheinlich mit gui-elementen ausstatten. in so einem fall benötigst du bibliotheken, die auf beiden sys installiert werden können. die qt-lib. von troll ist so eine.
progs die als funktionen nur intern daten verarbeiten und an ein aufrufendes mainprog zurückgeben, können natürlich unter einem beliebigen os compiliert werden, auf dem die standard c oder cpp bibliotheken installiert sind.
wenn du zb eine hervorragende neue sortier-routine schreibst, die schneller und besser abläuft, als quick- oder heap-sort kannst du diese auf den verschiedensten os einsetzen.

greetz artemisias

ps: falls du es schaffst mit der sortier-routine, meld dich doch bitte :-)))

fran 27.05.2001 19:02

Hallo - und danke für eure Tipps;

bei Java ist mir die Plattformunabhängigkeit durch den Bytecode prinzipiell klar - solange es bei Applets bleibt.

Bezüglich C/C++ würde mich interessieren, wo man einen betriebssystemunabhängigen Compiler und Infos zu entsprechenden Bibliotheken bekommen kann;

Ansonsten merkt man erst im Nachhinein, welcher Code nicht kompatibel ist - und muss entsprechende Änderungen vornehmen.

Ich habe bisher nur etwas Erfahrung mit Scriptprogrammierung im Internet, ansonsten bin ich diesbezüglich ein absoluter Anfänger.

Grüße fran


artemisia 27.05.2001 23:10

@fran



den gcc compiler gibt es sowohl für linux als auch für win.

in linux ist er standardmässig in jeder distribution installiert . die entsprechenden doc's sind als manpages oder im info-sys integriert.

den gcc für windows erhält man zb hier:
http://bird.musik.uni-onsabrück.de/edv/gcc-inst.html

und informationen über die qt erhälst du
hier:
http://www.trolltech.com



greetz artemisias

kikakater 28.05.2001 01:05

Plattformunabhängig zu programmieren ist eine Sache des Wissens, der Erfahrung und der Disziplin. Die Erfahrung wie was wo wann muß man machen, dann kommt eben dadurch DAS WISSEN (um die Umstände) und dann erst die Disziplin (das Wissen JEDESMAL korrekt umzusetzen).

Es gibt Maschinen (gemeint ist CPUs), die sogenannte Big-Endian Prozessoren sind, oder Little-Endian Systeme (CPUs also).

Big-Endian bedeutet das bei einem Wort (16bit Wert) das niederwertige Byte zuvorderst und hintan das höherwertige Byte im Speicher abgelegt wird. Bei einer Little-Endian CPU passiert das genau umgekehrt.

Falls man binäre Datendateien zwischen den Systemen austauscht und nicht mittels Makros die Bytefolge in der Datei innerhalb des Wortes (16bit Wert) anpaßt, kommt es zu Bytedrehern und insofern zu Inkompatibilitäten auf Datenebene und nicht nur auf prozeduraler Ebene, daß nämlich Funktionen anders heißen auf einem anderen System, beispielsweise. Gemeint sind Systeme: PowerPC, x86 code Kompatible, HP PA RISC, DEC Alpha etc.

Die wirklich professionelle Entwicklungsumgebung heißt Daten- und Procedure- Repository, das ist nicht anderes als das Speichern der Ausprägung von Datenvariablen wie auch Datenfeldern, die auch als Keyfelder daherkommen können, wie auch das Wiederverwenden von Codeteilen sowie den automatischen Einsteuerungsmechanismus von Datentypen beim Codieren, sodaß es garnicht zu inkompatiblen Datentypen beim Aufruf wie dem Ausführen der eigentlichen jeweiligen Funktion kommt. Gespeichert wird so ein Repository - das ein Nachschlagewerk darstellt - in indexsequentiellen Dateien wie auch in SQL-Tabellen gegebenenfalls.

Der Weg zu portablen Programmen führt über Bibliotheken, die eine technische Umsetzung der systemeigenen Befehle und Verfahren auf prozeduraler Ebene bieten außen aber eine einheitliche Schnittstelle anbieten. Das ganze stellt eine Prozedur dar, ist abgekapselt und wird somit als Modul oder Kapsel bezeichnet (Black Box sozusagen).

Umsetzung einer Routine zum Öffnen eines grafischen Fensters auf den einzelnen Systemen auf unterschiedliche Art und Weise.

Beispiel:

Öffnen eines Fensters (Funktion, die Schnittstelle ist allgemein"gültig")

z.B:

Öffnen eines Fensters in Windows
Öffnen eines Fensters unter X(-Windows).


Die zweite Notwendigkeit ist es, daß allgemeingültige Routinen, die nur in ganz engen Punkten systemindividuelle Anpassungen fahren müssen, die Entscheidung aus einem jedem System beigegebenen (selbst programmierten) Modul in Erfahrung bringen können, welche Systemanpassungen auf System xy notwendig sind.

sys = InquireSystem(); // InquireSystem enthält Code, der einen Wert je System zurückliefert, z.B. WINNT 1, Linux 2 usw. (das ganze ist sehr allegemein gehalten, in die Lösung eines solchen Problems fließt in der Regel das Gehirnschmalz, Unterversionen von Linux, Windows NT etc. ... wie zu implementieren ?)

deswegen hier nur sehr global ausführend ... :

Abfrage des "System-Code(werte)s" in einer an und für sich schon allgemeinen (portablen) Funktion (bzw. Funktionenlandschaft also Ansammlung von Funktionen (printf,sprintf,fprintf)).

if( sys == SYS_LINUX ) { do_something_linux_specific(); }
else if( sys == SYS_WINNT ) { do_something_winnt_specific(); }
....

usw.

Ich schreibe eine Ausgabefunktion printf oder mehrere, die sich ähneln printf,sprintf,fprintf, und baue Abfragen auf den Systemcode, der von InquireSystem zurückgeliefert wird, ein.

C++ hat den Nachteil größeren Code zu liefern und wirklich extrem down-top Programmieren vorauszusetzen, eine Scheiße für sich.

Java ist Schwabbel-Code, d.h. in der Regel - zumindest noch - langsam.

Das beste ist - meiner Meinung nach - C mit Repository RAD Umgebung, das ganze ist codekompakt, schnell, professionell genug und durchdacht einfach und auch genial lösungsorientiert (erfolgreich).

C++ ist was für große Teams, die unter Zwängen stehen (Termindruck, Kapselautomatik durch Memberzugriffsrechte, Methoden und Vererbung, Überladen von Funktionen), aufgeblähter Code und Abstürze in Grenzsituationen, die jedes C programmierte System locker wegsteckt, sind die Folge. Schon mal Visual C++ programmiert, noch dazu mit MFC, da kommt einem das Grauen, ebenso bei Microsoft Java Umsetzungen, wo eigene Extensions "angeboten" werden ... , ... - so - wie die Hexe ihren Gifttrunk 'einem' anbietet. Finger weg ! Profis coden nach wie vor in Cobol, plattformunabhängig ! und eben mehr und mehr in C mit eben solchen Hilfsmitteln oder gedrungenermaßen eben in C++ oder Sun Java.

Microsoft oder auch Borland C++ und Kollegen ist Kindergarten-Mühsal mit 'an die Wand-fahr Garantie'. Der gcc ist einzig, das Wahre, um Codebibliotheken für mehrere zigtausend Mark/Dollar angereichert oder eben SELBST programmiert, das ist Sache. Visual C++ usw. ist etwas für Einsteiger, sicher nicht für ernsthafte plattformübergreifende Programmierer(teams).

mfg Kikakater

fran 28.05.2001 05:30

@artemisias
danke nochmals. Könntest du bitte den gcc-link überprüfen; oder ist es nur ein kurzfristiger Serverausfall.
Naja - mit einer Sortier-Routine von meiner Seite wirst Du Dich wohl noch etwas gedulden müssen ... aber erste Schritte darf sollten bald folgen ;-)

liebe grüße

artemisia 28.05.2001 09:23

@fran

sorry mit dem gcc-link... weiß im mom auch ned, warum der ned funzt, werd mich mal drum kümmern und geb dir bescheid

greetz artemisias

artemisia 28.05.2001 18:38

@fran

sorry, der link muß natürlich so heißen

http://bird.musik.uni-osnabrueck.de/edv/gcc-inst.html

viel spaß

greetz artemisias


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag