| Autor |
Beitrag |
Atreyu
      
Beiträge: 137
Delphi 7 Enterprise
|
Verfasst: Mi 05.12.07 22:12
Wieso spricht man oft von "plattformunabhängigen Sprachen"? Ist nicht theoretisch jede Sprache unabhängig? Letztendlich bestimmt doch nur der Compiler, dass ein Code für eine bestimmte Plattform übersetzt wird.
Wenn mir das einer erläutert, wäre ich sehr erfreut!
|
|
COMMANDER86
      
Beiträge: 167
Win XP, Win Vista
D3 Prof., D7 Pers., Lazarus
|
Verfasst: Mi 05.12.07 22:36
Compilersprachen sind, denke ich zumindest, nur so weit plattformunabhängig, wie es auch Compiler für die verschiedenen OS gibt.
| Zitat: | | Borland benannte Object Pascal jedoch 2003 in Delphi-Language um, mit der Begründung, dass sich bereits so viel in der Sprache verändert habe, dass man es nicht mehr mit Pascal vergleichen könne. |
de.wikipedia.org/wiki/Borland_Delphi
Die Sprache "Delphi" beruht zwar auf Pascal und ist der auch ziemlich ähnlich, funktioniert aber nur perfekt mit Delphi, dass es @present nur für Windows gibt.
Ich würde bei Delphi also nicht von einer plattformunabhängigen Sprache sprechen. Bei (Free) Pascal schon eher, s. Lazarus. Das gibt es ja mittlerweile für fast alle OS und in einem verdammt guten Zustand, würde ich sagen.
Plattformunabhängig würde ich Sprachen wie beispielsweise HTML, PHP und JavaScript nennen, weil diese ja nicht compiliert werden. Gut: Mag sein, dass das Ergebnis auf den Systemen leicht unterschiedlich aussieht, aber es ist quasi kein Eingriff in die Source notwendig, um sie überall ans laufen zu bringen. Wobei o.g. Sprachen auch keine Compilersprachen sind.
Ich denke, dass eine konkrete Antwort darauf aber nicht mal im Lexikon zu finden ist. Im Prinzip gebe ich Dir Recht: Jede Sprache ist plattformunabhängig; wo genau die Grenze gezogen wird, wage ich nicht zu beurteilen. Um es mal dramatisch methaphorisch auszudrücken:
"Ich kann in jedem Land Deutsch sprechen. Ob man mich versteht, ist die andere Frage."
Gruß
Fabian
_________________ Streichen Sie bitte sämtlichen Sarkasmus aus vorhergehender Nachricht. Dann wissen Sie, was ich sagen möchte. Meine Lösungen sind die vermutlich Umständlichsten, aber sie funktionieren (bei mir).
|
|
Atreyu 
      
Beiträge: 137
Delphi 7 Enterprise
|
Verfasst: Mi 05.12.07 22:55
Dann würdest du also sagen, dass der Begriff "plattformunabhängig" eher Subjektiv, also etwas "gefühltes" ist? Denn hier gehts ja dann nur darum, wo zB Pascal am besten unterstützt wird, wobei ich davon ausgehe, dass fast jede Plattform zumindest einen ansatzweisen Compiler dafür hat.
Da nun C/C++ wohl überall recht gut supported wird, "fühlt" es sich eben eher wie Unabhängigkeit an....
|
|
COMMANDER86
      
Beiträge: 167
Win XP, Win Vista
D3 Prof., D7 Pers., Lazarus
|
Verfasst: Mi 05.12.07 23:24
Wie ich schon sagte: Eine genaue Antwort kann ich auch nicht geben...
Ich denke mal laut: Compiler-Sprachen werden auf dem System übersetzt, als Anwendung abgelegt und können ohne eine weitere Behandlung überleben. Interpreter-Sprachen brauchen einen RunTime-Öbersetzer im Hintergrund. Ob nun kompiliert oder interpretiert... es kommt auf's Selbe raus: Die Source bleibt gleich und auf verschiedenen System trotzdem lesbar / übersetzbar, sofern man keine Systemkomponenten, die beispielsweise nur Windows hat.
Ich denke, dass man heute nicht mehr von einer plattformabhängigen Sprache sprechen kann. BASIC gab es vor Jahren schon für AMIGA, DOS und MAC. Eine Differenzierung zwischen plattformabhängig und plattformunabhängig lässt sich, denke ich mal, nur noch in den Dialekten festlegen, auch wenn das trotzdem sehr... schwierig ist.
Ich glaube, gerade durch den Boom der OpenSource hat sich so viel getan, dass man diese Begrifflichkeiten gar nicht mehr klar definieren oder trennen kann. Eine wirklich plattformabhängige Sprache kenne ich nicht. Vielleicht gibt es da so interne Geschichten... beispielsweise bei SAP... die Sprache gibt es in der Form (ABAP?) nur bei SAP. Da ist quasi SAP selber die Plattform und die Sprache ist in diesem Sinne plattformabhängig. Aber ich denke der Begriff "Plattform" zielt in erster Linie auf das Betriebssystem, womit (SAP für Linux/Mac? Gibt's das?) wieder einer Plattformunabhängigkeit erreicht wäre...
Ich kann nur vermuten... Aber vielleicht gibt es einen Informatikprofessor hier im Forum, der eine genaue Definition hat.
Wie ich gerade sehe... es gibt einen interessanten Wikipedia-Artikel zum Thema:
| Zitat: | | Plattformunabhängigkeit ist die Eigenschaft eines Programms, auf verschiedenen Computersystemen mit Unterschieden in Architektur, Prozessor, Compiler, Betriebssystem und weiteren Dienstprogrammen, die zur Übersetzung notwendig sind usw. lauffähig zu sein. |
de.wikipedia.org/wik...munabh%C3%A4ngigkeit
Ich würde das so interpretieren, dass ein Programm dann plattformabhängig ist, wenn es nur auf einem bestimmten System laufen kann. Würde mir als Beispiel gerade Kaspersky einfallen. Kaspersky Anti-Virus für WinWorkstation funktioniert auch nur auf Client-Betriebssystemen. Auf einem Serverbetriebssystem von M$ läuft es nicht. Vielleicht kann man das so eingrenzen.
Ich denke, dass Source-Code (egal welche Sprache) im Prinzip erst mal völlig plattformunanbhängig ist. Ich kann mir vorstellen, dass es gar keine Definition gibt. Ich weiß es nicht... aber das Thema ist klasse.
Gruß
Fabian
_________________ Streichen Sie bitte sämtlichen Sarkasmus aus vorhergehender Nachricht. Dann wissen Sie, was ich sagen möchte. Meine Lösungen sind die vermutlich Umständlichsten, aber sie funktionieren (bei mir).
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Do 06.12.07 04:29
Atreyu hat folgendes geschrieben: | Wieso spricht man oft von "plattformunabhängigen Sprachen"? Ist nicht theoretisch jede Sprache unabhängig? Letztendlich bestimmt doch nur der Compiler, dass ein Code für eine bestimmte Plattform übersetzt wird.
Wenn mir das einer erläutert, wäre ich sehr erfreut! |
Hallo,
im Prinzip hast du recht, es KÖNNTE für jede Sprache und jeden Prozessor einen Compiler oder Interpreter oder Compreter/Interpiler geben, gibt es aber nicht - für manche Sprachen (C) gibt es Compiler für fast alles, für andere (Delphi) nur für 1 Zielsystem. Insofern braucht man eine Marktanalyse, um den Grad an Plattformunabhägigkeit zu beurteilen. Selbst ein Assembler kann für viele Plattformen gültig sein, MASM z.B. geht von 8088 über 80386/80486 bis zu heutigen Pentiums, andrerseits gab es in den Anfangszeiten Prozessoren ohne jede Sprachunterstützung, selbst ohne Assembler, ich habe damals die Sprungziele manuell berechnet. Heute weiss jeder Halbleiterhersteller, dass er einen neuen Prozessor zumindest mit Assembler und einem einfachen C-Compiler ausstatten muss, um eine Marktchance zu haben.
Allerdings gilt das alles nur für Berechnungen und Konsolen-Programme - grafische Schnittstellen sind per se systemspezifisch. Auch wenn man sich für Trolltech Qt entscheidet oder Java, dann ist DAS eben das Zielsystem und das Ergebnis sieht auch etwas anders aus als ein Windows-Programm, portabel ist sowieso nichts davon.
Meiner Meinung nach gibt es bei GUIs überhaupt keine Plattformunabhängigkeit, die zugrundeliegende GUI ist die Plattform. Auch wenn sie z.B. unter Windows und Linux verfügbar ist.
Gruss Reinhard
|
|
golgol
      
Beiträge: 58
Win XP Prof. / Linux
C# (VS 2005)
|
Verfasst: Do 06.12.07 08:29
Das ist leider das Problem in unserer schönen, heilen Informatikerwelt: Einige Begriffe, wenn auch sehr wenige, sind nicht eindeutig definiert und werden von jedem zweiten anders verstanden.
Für mich macht eine Plattformunabhängigkeit aus, dass ich die zugrundelegenden Quellen auf jeder aktuellen Architektur (das umfasst Kompiler/Intepreter, Betriebsystem und Hardware) übersetzen (wie das auch aussehen mag) und dann nutzen kann, ohne, dass ich Veränderungen am Quellcode vornehmen müsste. Die Systemunabhängigkeit ist meines erachtens dann gefährdet, wenn gewisse API-Elemente nur für bestimmte Systeme vorgesehen sind (ich denke da etwa an PureBasic) oder einige API-Aufrufe auf verschiedenen Systemen eine andere Funktion haben.
Also denke ich, dass C/C++ quasi Plattformunabhängig ist, solange man in der Kommandozeile/Konsole bleibt und nicht versucht irgendwelche Betriebssystem-"Geschichten" zu machen ... eine echte Plattforumunabhängigkeit ist es jedoch nicht.
Von den Programmiersprachen die ich kenne ist meines erachtens Java diejenige, die am nächsten die Kriterien erfüllt. Zwar hat Reinhard recht, dass ein Java Programm nicht aussieht wie ein anderes Windows-Programm, abe das ist meines Erachtens auch nicht der Kern des ganzen: Ein Java Programm (mit Swing-Oberfläche) sieht auf einer Sun-Spark mit Solaris genauso aus wie auf einem Windows XP- oder einem Linu-PC, und das ist das Ziel einer Plattforumunabhängigkeit: Gleiches Verhalten und Aussehen auf verschiedenen Systemen ohne Codepfuscherei.
just my two cent...
|
|
Atreyu 
      
Beiträge: 137
Delphi 7 Enterprise
|
Verfasst: Do 06.12.07 13:00
COMMANDER86 hat folgendes geschrieben: | Ich weiß es nicht... aber das Thema ist klasse.
Gruß
Fabian |
Danke für die Blumen
Also gibt es keine wirklich, unabhängigen Sprachen. Aber wenn ich so an HTML denke (was ja nur eine Skriptsprache ist), nur rein entwicklungstechnisch, dann ist es ja so, dass die Hersteller ihre Betriebssysteme, oder eher die Browser für diese, diesem Internationalen HTML-Standard angepasst haben.
Möglicherweise wird das auch mit Programmiersprachen so laufen. Vielleicht passt sich zB der MAC im Laufe der Zeit so an den PC an, dass er selbst API-Funktionen, die eigentlich nur für Windows sind, auch mal für sich interpretieren kann. Denn, so wie ich das verstehe, geht es ja nur darum. Das Problem wäre, das bei komplexen Programmen, die systemnah arbeiten dann wohl dennoch Fehler auftreten würden, denn wenn zB diese API-Aufrufe zu 100% gleich übernommen würde, das System auch 100% mit Windows kompatibel sein müsste. Und dann wäre es praktisch Windows.
Und Java arbeitet (soweit ich weiss, und das ist nicht weit) nur in einem eingeschränkten Rahmen, also sind, so mir bekannt, keine allzu Systemnahen Funktionen realisierbar. Das aber kommt immerhin der Unabhängigkeit zugute.
Bitte korrigiert mich, wenn ich falsch liege.
Naja, ein komplizierte Umschreibung für eine Feststellung, die schon vor mir jemand gemacht hat.
Ich hoffe, das versteht hier jetzt irgendeiner =)
Jedenfalls danke für eure Antworten, ich würde gern noch weiteres zum Thema lesen.
|
|
Stefan.Buchholtz
      
Beiträge: 612
WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
|
Verfasst: Do 06.12.07 14:28
Atreyu hat folgendes geschrieben: | Also gibt es keine wirklich, unabhängigen Sprachen. Aber wenn ich so an HTML denke (was ja nur eine Skriptsprache ist), nur rein entwicklungstechnisch, dann ist es ja so, dass die Hersteller ihre Betriebssysteme, oder eher die Browser für diese, diesem Internationalen HTML-Standard angepasst haben.
Möglicherweise wird das auch mit Programmiersprachen so laufen. Vielleicht passt sich zB der MAC im Laufe der Zeit so an den PC an, dass er selbst API-Funktionen, die eigentlich nur für Windows sind, auch mal für sich interpretieren kann. Denn, so wie ich das verstehe, geht es ja nur darum. Das Problem wäre, das bei komplexen Programmen, die systemnah arbeiten dann wohl dennoch Fehler auftreten würden, denn wenn zB diese API-Aufrufe zu 100% gleich übernommen würde, das System auch 100% mit Windows kompatibel sein müsste. Und dann wäre es praktisch Windows. |
Und dann könnte sich Apple den ganzen Aufwand mit der Betriebssystementwicklung sparen und direkt Windows-Kisten verscherbeln
Bei GUI-Toolkits hats es mit der Systemunabhängigkeit relativ schnell ein Ende, weil Benutzer eines Systems erwarten, dass sich ein Programm entsprechend den Konventionen dieses Systems verhält. Klar kann man durch eine Nachbildung der Windows-API Windows-Programme auf anderen Systemen zum laufen kriegen - WINE macht das für Linux schon recht gut. Da ist das auch mit den GUI-Konventionen nicht so das Problem, weil die meisten Linux-Desktops sich von der Bedienung stark an Windows orientieren. Die meisten Mac-User dagegen würden dem Hersteller ein Programm, das sich wie ein Windows-Programm verhält und aussieht, um die Ohren hauen.
Atreyu hat folgendes geschrieben: | Und Java arbeitet (soweit ich weiss, und das ist nicht weit) nur in einem eingeschränkten Rahmen, also sind, so mir bekannt, keine allzu Systemnahen Funktionen realisierbar. Das aber kommt immerhin der Unabhängigkeit zugute.
Bitte korrigiert mich, wenn ich falsch liege. |
Vor allen Dingen arbeitet Java (wie auch .NET) in einer Virtual Machine. Damit ist auch keine Rekompilierung des Programms nötig, um es auf einer anderen Architektur laufen zu lassen.
Stefan
_________________ Ein Computer ohne Windows ist wie eine Schokoladentorte ohne Senf.
|
|
|