Sprachen kombinieren

Da ich net wußte wo es hin soll schreib ichs ma hier rein.
Ich habe über das buch Diabous erfahren das es möglich ist verschiedene Sprachen zu kombinieren.Wie geht das und was haltet ihr davon?
Ich hab bei google.de paar seiten gefunden aber da hab ich kein Owrt verstanden, wenn jmd ne seite kennt die gut verständlich ist kann sie ja au rein posten.

Danke
Linden

Da ich net wußte wo es hin soll schreib ichs ma hier rein.
Ich habe über das buch Diabous erfahren das es möglich ist
verschiedene Sprachen zu kombinieren.Wie geht das und was
haltet ihr davon?

Bei Compilersprachen besteht der Weg vom Quellcode zum fertigen Programm aus zwei Schritten. Im ersten wird der Quellcode kompiliert und liegt damit als Objektcode vor. Im zweiten Schritt wird dieser Objektcode ‚gelinkt‘, an andere Objekte des gleichen Projekts oder an Systembibliotheken gebunden. Bei diesem Schritt ist es - vereinfacht gesagt - unerheblich, aus welcher Sprache heraus der Objektcode entstanden ist. Du kannst also verschiedene Teile eines Projekts in verschiedenen Sprachen schreiben, einzeln kompilieren und die fertigen Objekte miteinander zu einer Anwendung verlinken. Eine Entwicklungsumgebung, die die dafür erforderlichen Werkzeuge zur Verfügung stellt, ist z. B. .net http://de.wikipedia.org/wiki/.NET

Etwas exotischer ist die direkte Einbindung einer Programmiersprache in eine andere. Auf Anhieb fällt mir hier nur der ‚Inline-Assembler‘ in C/C++ ein, der es erlaubt, direkt im Quellcode Maschinensprache einzubinden.

Beides hat aber mit den in ‚Diabolus‘ geschilderten Vorgängen wenig gemein. Dieses Buch solltest du als Literatur betrachten, nicht als Abbildung der Wirklichkeit.

Gruß

ich hab in Diablous vom LIMMBO gelese die scheint es ja wirklich zu geben, deswegen kam ich auf die Idee.
ich will das nicht weiter aufdrößeln aber was ist der unterschied zwischen Quell oder Objekt Code mir sagt nur Quellcode etwas.
Und wäre es möglich VB08 mit Java/JavaScript zu kombinieren?
solang die beiden sprachen einzeln kommpiliert werden (is das das mit dem Assambly??)kann man jede sprache kommbinieren?Lohnt es sich dann sprachen zu kommbinieren??

danke schon mal

MFG Linden

Hallo Linden,

ich will das nicht weiter aufdrößeln aber was ist der
unterschied zwischen Quell oder Objekt Code mir sagt nur
Quellcode etwas.

Der Objectcode ist im Prinzip aus dem Sourcecode generierte Maschinensprache. Allerdings sind Adressen noch nicht aufgelöst, welche entweder von diesem Modul importiert oder exportiert werden. Da auch nicht bekannt ist, an welche Adresse dieses Modul geladen wird, sind auch die Spungziele innerhalb des Moduls noch relativ.
Dise Adressen aufzulösen ist dan der Job des Linkers.

Und wäre es möglich VB08 mit Java/JavaScript zu kombinieren?
solang die beiden sprachen einzeln kommpiliert werden (is das
das mit dem Assambly??)kann man jede sprache
kommbinieren?Lohnt es sich dann sprachen zu kommbinieren??

Das mit dem Kombinieren geht nicht so einfach, wie es im vorigen Posting beschrieben wurde.
Unterschiedliche Programmiersprachen und auch schon unterschiedliche Compiler, übergeben die Parameter bei einem Aufruf unterschiedlich.

Klassisch übergeben z.B. Pascal und C die Parameter auf dem Stack.
Allerding bereinigt Pascal den Stack in der aufgerufen Rotine und C in der aufrufenden!
Manche Compiler kennen deshalb spezielle Schlüsselworte und Aufrufe anderer Sprachen zu erzeugen.

Typisch erfolgt die Kombination unterschiedlicher Sprachen über Bibliotheken, also z.B. DLLs.
Bei DLLs übernimmt das Betriebssystem die Aufrufe, die Schnittstelle ist also auf einem System genormt.

Jede Sprache hat ihre stärken und schwächen. Wenn also grössere Aufgaben eindeutig in einer speziellen Sprache einfacher zu lösen sind und man diese auch schon beherrscht, kann es Vorteile haben zu Kombinieren.

Ich schreibe oft die Oberfläche in VB und den eigentlichen Rechenteil in C. Teilweise kommt das auch daher, dass z.B. Protokolle auf der Gegenseite, sowieso in C geschrieben werden (Mikrocontroller). Wenn man es geschickt mach, kann man den selben Sourcecode auf beiden Computern verwenden.

MfG Peter(TOO)

gut zu wissen.

Danke

Linden

ich will das nicht weiter aufdrößeln aber was ist der
unterschied zwischen Quell oder Objekt Code mir sagt nur
Quellcode etwas.

Im Quellcode steht drin:
Variable = 17
Das kann kein Computer lesen, also muss man’s ihm in Maschinensprache übersetzen. Der sieht dann z. B. (auf einem C64) so aus:
A9 11 8D C0 00
Das kannst nun du nicht lesen. Irgendwer muss also übersetzen, das macht der Compiler. Das Ergebnis des Compilers ist Objektcode. (oder Bytecode -> Java) Dieser besteht aus dem in Maschinensprache übersetzten Programm, ist aber i. d. R. noch nicht ohne weiteres lauffähig. Dafür bedarf es noch des Linkens.

Und wäre es möglich VB08 mit Java/JavaScript zu kombinieren?

Nimm Webanwendungen. Da wird z. B. auf dem Client mit Hilfe von JavaScript ein Javaprogramm geladen und gestartet, das auf dem Server mit einem in VB geschriebenen Programm kommuniziert. Das ist aber wieder ein anderes Szenario. In einer einzelnen Programmdatei wirst du eine solche Kombination i. d. R. nicht finden, da JavaScript eine Interpretersprache ist, die eines Interpreters bedarf. Visual Basic wird in Maschinencode übersetzt, bildet also ein (auf einem bestimmten Prozessortyp) eigenständig lauffähiges Programm. Java wird in Bytecode übersetzt, verlangt also eine vorinstallierte ‚Virtual Machine‘.

das mit dem Assambly??)

Assembler ist ein Zwischending aus Maschinencode und Programmiersprache. Die Zeile von vorhin
A9 11 8D C0 00
sieht in Assembler so aus:
LDA 11
STA C0 00
Was ich wieder lese als 'Lade Akkumulator mit 17, steck diesen Inhalt in den Ar… ähhh… an die Adresse 49152.

Lohnt es sich dann sprachen zu kommbinieren??

Verschiedene Sprachen dienen u. U. verschiedenen Zwecken, haben ihre eigenen Stärken und Schwächen. Ob und wo es sinnvoll ist, in einem Projekt verschiedene Sprachen parallel zu nutzen, kommt immer auf den Einzelfall an.

Gruß

Verschiedene Sprachen dienen u. U. verschiedenen Zwecken,
haben ihre eigenen Stärken und Schwächen. Ob und wo es
sinnvoll ist, in einem Projekt verschiedene Sprachen parallel
zu nutzen, kommt immer auf den Einzelfall an.

Aus meiner Erfahrung passiert das in einem Projekt eher seltener. Meistens dann, wenn man eine neue Technologie einführen will und langsam die Altanwendung ablöst. Aber auch dann, wenn es zwei gut entkoppelte Komponenten gibt. In beiden Fällen gibt es aber kaum bis gar keine Mischungen. Der Overhead ist hier viel zu groß

~dirk

Ich habe über das buch Diabous erfahren das es möglich ist
verschiedene Sprachen zu kombinieren.Wie geht das und was
haltet ihr davon?

Hallo,

eigentlich wird das immer und überall benutzt: egal in was du programmierst, z.B. VB (Brrr…), das VB-Programm malt Buttons usw. nicht selbst, sondern benutzt dazu die Windows-Libraries (DLLs), und die sind in C geschrieben, vielleicht auch noch das eine oder andere in Assembler.

Btw Diabolus finde ich das schwächste Buch von Dan Brown, zumindest fachlich. Aber vielleicht verstehe ich auch noch zuviel von Kryptografie, um es einfach zu geniessen. Die Realität ist halt nicht so spektakulär.

Gruss Reinhard

Ah also ich find VB 08 genial.Also kann man sagenn VB is ein Verbund aus mehrern Sprachen um das anzuzeigen was der Anwender will.

Also ich find Diablous genial das hat micvh auf das Thema Kryptographie aufmerksam gemacht.
Nur so nebenher kennst du dich mit Kryptographie auch aus,wenn ja welche seiten oder bücher kannst du empfehlen und wie verschlüsselst du am liebsten??

Mfg
Linden

Hi Peter,

Ich schreibe oft die Oberfläche in VB und den eigentlichen
Rechenteil in C.

zumindest in .net würde das aber keinen Vorteil mehr bringen…
neuere Versionen von VB gibts doch nur in .net oder? Falls
es noch eine „echte“ neuere Version gibt, bitte direkt email
an mich :wink:

LG Alex