Welche Sprache
-
Shade Of Mine schrieb:
Ne der Punkt ist der: Delphi war mal eine halbwegs verbreitete Sprache aber gerade die fragwuerdige Firmenpolitik und Zukunft der Sprache - ich wuerde nicht meine Firma an soetwas binden wollen.
Insbesondere wo gerade der Compiler völlig neu entwickelt wird und, wie gerade auf der Delphi Live Konferenz verkündet, native Entwicklung (Crosscompiling ?) für Linux und Mac hinzukommt.
Klar Weiterentwicklung muss sein, aber wer die Dramen um Kylix und den C++BuilderX erlebt hat, weiß wie das bei denen abläuft ...
-
audacia schrieb:
Das wichtigste ist das "ecosystem" (irgendwie zweifle ich daran, daß "Ökosystem" hier eine passende Übertragung ist
).
doch, ist es. es kann ohne informationsgewinn übersetzt werden.
bereits in der biologie ist sind die sätze mit "Ökosystem" drin seit jahrzehnten schwer zu hinterfragen oder zu widerlegen und das wort wird nicht zuletzt deswegen gerne verwendet. als neues wort in der informatik gilt das erst recht.
-
audacia schrieb:
tfa schrieb:
Und ich glaube, da scheidet Delphi nicht besoders gut ab verglichen mit C++, C# oder Java.
Richtig. Dennoch gilt für Delphi wie für fast jede andere Sprache: ein erfahrener Programmierer kann sie bei Bedarf innerhalb kurzer Zeit erlernen. Warum sollte man nicht einen C#-Programmierer in einem Delphi-Job beschäftigen können, eine grundsätzliche Agilität des Programmierers vorausgesetzt?
Sicher, trotzdem ist das zu kurz gedacht. Die meisten Entwickler sind Gewohnheitstiere, die am liebsten in ihrer Sprache entwickeln (sieht man ja schon an vielen Forumsbeiträgen, wo Leute ihre Sprache verteidigen). Außerdem sind die reinen Syntaxkenntnisse auch nur ein geringer Anteil dessen, was man wissen muss. Möglichst umfangreiche Kenntnisse der Standard-API, Bibliotheken, Frameworks usw. sind sehr wichtig und nicht eben mal so in kurzer Zeit erlernbar. Und auch die Erfahrung zählt. Wie man die komplexen Spezialfeatures (da sind sie wieder!) einer Sprache einsetzt, ohne sich oder andere dabei in den Fuß zu schießen, lernt man erst mit der Zeit.
tfa schrieb:
(Nur interessehalber: Welche Vorteile haben benannte Konstruktoren gegenüber Fabrikmethoden?)
Eine Frage der Begünstigung. In Delphi bist du grundsätzlich gezwungen, deinem Konstruktor einen Namen zu geben; in C++/Java/... sind unbenannte Konstruktoren üblich, und du mußt i.d.R. einen Konstruktor und eine Factory-Methode schreiben, wenn du eine aussagekräftige Konstruktorbenennung willst.
Danke für die Erklärung. Ctor+Factorymethode sind sicher doppelter Aufwand. Können benannte Konstruktoren auch polymorph sein, d.h. kann ein Ctor der Klasse "BaseList" ein Objekt der Klasse "OptimizedSpecialList" zurückliefern (wie bei Fabrikmethode)?
-
...ist sinnlos
-
bcbx schrieb:
Klar Weiterentwicklung muss sein, aber wer die Dramen um Kylix und den C++BuilderX erlebt hat, weiß wie das bei denen abläuft ...
Ja, was die OS X- und Linux-Ambitionen angeht, bin ich auch skeptisch. Da würde ich erst ein paar Jahre abwarten, um zu sehen, ob sich das stabilisiert.
Außerdem wäre interessant, was man bzgl. der GUI vorhat. Hoffentlich wird es nicht eine Neuauflage der CLX (aka VCL-Pendant für Linux/Mac). (CLX basierte übrigens auf Qt, was sich nicht unbedingt als gute Entscheidung erwies.)tfa schrieb:
Sicher, trotzdem ist das zu kurz gedacht. Die meisten Entwickler sind Gewohnheitstiere [...]
Schon richtig. Aber einerseits wird das vorhandene Delphi-Know-how deutlich unterschätzt (viele C#-Entwickler haben früher mit Delphi gearbeitet und sind 2002-2003, als man noch allerorten hörte, daß das Windows-API zu einer Legacy-Schnittstelle degradiert und auf ganzer Linie durch WinFX aka .NET ersetzt werden solle, nach C# gewechselt), und andererseits sind .NET und Delphi sich keineswegs unähnlich (genauer gesagt hat .NET viele Konzepte aus Delphi übernommen).
tfa schrieb:
Danke für die Erklärung. Ctor+Factorymethode sind sicher doppelter Aufwand. Können benannte Konstruktoren auch polymorph sein, d.h. kann ein Ctor der Klasse "BaseList" ein Objekt der Klasse "OptimizedSpecialList" zurückliefern (wie bei Fabrikmethode)?
Ja; wenn du die Konstruktoren als virtual deklarierst, sind sie polymorph.
Edit: Du meinst vermutlich so etwas wie
class Compiler { public: static Compiler* Create (String fileExt); }; class CppCompiler : public Compiler { ... }; class CsCompiler : public Compiler { ... }; Compiler* Compiler::Create (String fileExt) { if (fileExt == ".cpp") return new CppCompiler; else if (fileExt == ".cs") return new CsCompiler; ... }
Dafür braucht man in Delphi entweder eine Factory-Methode oder eine Methode, die eine Klassenreferenz zurückgibt, über die du dann einen polymorphen Konstruktor aufrufen kannst.
volkard schrieb:
<audacia wirft mit buzzwords um sich>
Was hast du gegen "ecosystem"? Ich finde das in diesem Kontext gut verständlich. Aber wenn du eine bessere Alternative hast, erleuchte mich bitte.
-
Hi,
wenn man zum Ausgangspost zurückgeht, dann ergibt sich doch daraus, daß der Frager nicht eine Sprache zum Ausrichten eines Betriebes auf die Zukunft sucht, sondern eine Sprache für Hobby und Arbeit für kleine Programme.
Gerade dafür ist Delphi absolut ideal. Es ist eine im Vergleich zu C++, C# und Java noch relativ einfach zu erlernende Sprache die trotzdem alle für solche Zwecke benötigten Möglichkeiten bietet. Es steht eine kompfortable leistungsfähige und sehr einfach zu bedienende Möglichkeit für die Gestaltung von Benutzeroberflächen zur Verfügung, und es ist eine realtiv simpel zu bedienende Datenbankanbindung inbegriffen. Der Compiler ist im Vergleich zu C++ rasend schnell, die Sprache hat nicht viele Fallstricke und ermöglicht eine sauber objektorientierte Programmierung. Wenn man sich einmal mit Delphi eingearbeitet hat, ist es problemlos auf andere Sprachen umzusteigen. Durch die Unterschiedliche Darstellung der Sprache ist aber die Gefahr da später mit der nächsten Sprache was durcheinanderzubringen wesentlich geringer. Außerdem ist bei eingeschränktem Umfang für die ersten Schritte auch die Arbeit mit den kostenlosen Turboversionen möglich.
Und es entstehen immer richtig compilierte Programme, die ohne irgend eine Laufzeitumgebung oder Zwischenübersetzung sofort abarbeitungsfähig sind.
Gerade bei kleinen Programmen, die bie solchen Aufgaben wie er sie andeutet erst mal längere Zeit entstehen werden ist das optimal. Um aus 5 Werten einen sechsten zu berechnen oder ähnliches ist es absolut übertrieben erst Net oder Java zu starten und das Programm dann erst noch mal zu übersetzen.Gruß Mümmel
-
Wenn jemand Anfänger ist und Hobby-Programmierung als Ziel hat, würde ich immer BASIC empfehlen. Und das meine ich nicht abwertend!
Damals zu Homecomputer-Zeiten war es mehr als normal und sinnvoll BASIC zu lernen (vorallem weil jeder Heimcomputer BASIC eingebaut hatte). Warum muß es heute als Einstieg Java, C#, C++, Python o.ä. sein? Meiner Meinung nach viel zu komplex. Sowas kann man später lernen. Damals ist man von BASIC zu Assembler oder zu C gesprungen.
Also, meine Empfehlung: BASIC.
-
Bulli schrieb:
Also, meine Empfehlung: BASIC.
^^volle zustimmung.
-
audacia schrieb:
<volkard kennt das tolle wort nicht>
mist, ertappt. jetzt schäme ich mich. warum bin ich auch so vorlaut?
-
muemmel schrieb:
Hi,
wenn man zum Ausgangspost zurückgeht, dann ergibt sich doch daraus, daß der Frager nicht eine Sprache zum Ausrichten eines Betriebes auf die Zukunft sucht, sondern eine Sprache für Hobby und Arbeit für kleine Programme.
Gerade dafür ist Delphi absolut ideal. Es ist eine im Vergleich zu C++, C# und Java noch relativ einfach zu erlernende Sprache die trotzdem alle für solche Zwecke benötigten Möglichkeiten bietet. Es steht eine kompfortable leistungsfähige und sehr einfach zu bedienende Möglichkeit für die Gestaltung von Benutzeroberflächen zur Verfügung, und es ist eine realtiv simpel zu bedienende Datenbankanbindung inbegriffen. Der Compiler ist im Vergleich zu C++ rasend schnell, die Sprache hat nicht viele Fallstricke und ermöglicht eine sauber objektorientierte Programmierung. Wenn man sich einmal mit Delphi eingearbeitet hat, ist es problemlos auf andere Sprachen umzusteigen. Durch die Unterschiedliche Darstellung der Sprache ist aber die Gefahr da später mit der nächsten Sprache was durcheinanderzubringen wesentlich geringer. Außerdem ist bei eingeschränktem Umfang für die ersten Schritte auch die Arbeit mit den kostenlosen Turboversionen möglich.
Und es entstehen immer richtig compilierte Programme, die ohne irgend eine Laufzeitumgebung oder Zwischenübersetzung sofort abarbeitungsfähig sind.
Gerade bei kleinen Programmen, die bie solchen Aufgaben wie er sie andeutet erst mal längere Zeit entstehen werden ist das optimal. Um aus 5 Werten einen sechsten zu berechnen oder ähnliches ist es absolut übertrieben erst Net oder Java zu starten und das Programm dann erst noch mal zu übersetzen.Gruß Mümmel
wenn man zum Ausgangspost zurückgeht, dann ergibt sich doch daraus, daß der Frager nicht eine Sprache zum Ausrichten eines Betriebes auf die Zukunft sucht, sondern eine Sprache für Hobby und Arbeit für kleine Programme.
Gerade dafür ist Java/Python/Perl/Ruby absolut ideal. Es ist eine im Vergleich zu C++, C# und Delphi noch relativ einfach zu erlernende Sprache die trotzdem alle für solche Zwecke benötigten Möglichkeiten bietet. Es steht eine kompfortable leistungsfähige und sehr einfach zu bedienende Möglichkeit für die Gestaltung von Benutzeroberflächen zur Verfügung, und es ist eine realtiv simpel zu bedienende Datenbankanbindung inbegriffen. Der Compiler/Linker sind im Vergleich zu C++ rasend schnell, die Sprachen haben nicht viele Fallstricke und ermöglicht eine sauber objektorientierte Programmierung. Wenn man sich einmal mit Java/Python/Perl/Ruby eingearbeitet hat, ist es problemlos auf andere Sprachen umzusteigen. Durch die Unterschiedliche Darstellung der Sprache ist aber die Gefahr da später mit der nächsten Sprache was durcheinanderzubringen wesentlich geringer. Außerdem ist bei eingeschränktem Umfang für die ersten Schritte auch die Arbeit mit den kostenlosen IDEs/Linker/Compilern möglich.
Und man braucht das Programm nicht fuer jede Plattform neu zu uebersetzen.
Gerade bei kleinen Programmen, die bie solchen Aufgaben wie er sie andeutet erst mal längere Zeit entstehen werden ist das optimal. Um aus 5 Werten einen sechsten zu berechnen oder ähnliches ist es absolut übertrieben erst Net oder Delphi Standard Lib zu starten.SCNR
-
Hi,
ich weis ja nicht, wieso Java so viel einfacher sein soll als Delphi.
Delphi hat den vorteil, daß alles was die Oberfläche betrifft in den dfm-Dateien abgelegt ist und die eigentliche Programmierseite davon sauber bleibt.
Mit aus 5 Zeilen eine 6. berechnen meinte ich mit Sicherheit nicht addieren.
Kaputtlachen könnte ich mich immer, wenn als wichtigstes aller Argumente die Portabilität aufgeführt wird. Und für was programmieren die Erfinder des Schießpulfers die am lautesten danach rufen dann wirklich? Für Windows!
Für große Projekte mag Portabilität sicher eine Beduetung haben, aber ich vermute mal, das mindestens 95 % aller Programmierer nie ihre Programme auf eine andere Basis als die Microsoft-Systeme heben.Gruß Mümmel
-
muemmel schrieb:
Kaputtlachen könnte ich mich immer, wenn als wichtigstes aller Argumente die Portabilität aufgeführt wird. Und für was programmieren die Erfinder des Schießpulfers die am lautesten danach rufen dann wirklich? Für Windows!
Für große Projekte mag Portabilität sicher eine Beduetung haben, aber ich vermute mal, das mindestens 95 % aller Programmierer nie ihre Programme auf eine andere Basis als die Microsoft-Systeme heben.Das dürfte u.a. auch ein Henne-Problem sein.
-
wenn ich das so lese - wird zeit für was neues
-
das meiste ist doch schon längst dagewesen, es wird nur von vielen ignoriert, oder kann mir jemand erklären, was man mit java,ruby,python machen kann, das man nicht auch mit smalltalk und tcl seit 2 bis 3 Jahrzehnten machen könnte (von der schlüssigeren Syntax der beiden letzteren gar nicht zu reden)?
-
u_ser-l schrieb:
das meiste ist doch schon längst dagewesen, es wird nur von vielen ignoriert, oder kann mir jemand erklären, was man mit java,ruby,python machen kann, das man nicht auch mit smalltalk und tcl seit 2 bis 3 Jahrzehnten machen könnte (von der schlüssigeren Syntax der beiden letzteren gar nicht zu reden)?
Es geht doch garnicht darum, was man machen kann?! Es geht doch darum wie man es machen kann.
Mit 6502-Assembler kann ich auch alles machen. Nur wie mache ich das damit? Und dann weiß ich, das ich dafür kein 6502-Assembler mehr nehmen würde. Weil ich das gleiche Problem mit anderen Sprachen anders (z.B. einfacher) umsetzen kann. Meistens geht es auch um Nachhaltigkeit. Ich kann mit Sprache X nicht so nachhaltig entwickeln wie mit Sprache Y. Sprache A ist für kleine Programme geeignet, dafür komm ich bei komplexen Programmen in eine Sackgasse und nehme dafür lieber Sprache B, auch wenn diese bei kleinen Programmen umständlicher ist.
-
ja, ist ja wahr. Aber die von mir genannten smalltalk und tcl sind derart durchdacht aufgebaut und flexibel, daß sie die Anforderungen aus mehreren Jahrzehnten erfüllen können, ohne daß man die Sprachen um neue Syntax/Features anreichern müßte.
Braucht man in tcl ein Objektmodell, kann man eins implementieren - es gibt mehrere (xotcl, itcl, snit ...), davon sind einige sogar in tcl selbst (!) implementiert.
Ähnlich in smalltalk - was fehlt, wird hinzuimplementiert, ohne Änderung am Sprachkern. Wozu dann python oder gar ruby ?
-
Bulli schrieb:
Mit 6502-Assembler kann ich auch alles machen. Nur wie mache ich das damit? Und dann weiß ich, das ich dafür kein 6502-Assembler mehr nehmen würde. Weil ich das gleiche Problem mit anderen Sprachen anders (z.B. einfacher) umsetzen kann.
ich glaube es liegt nur daran, wie man seine programme strukturiert. höhere programmiersprachen erzwingen eine günstige struktur, während man mit assemblersprachen sehr diszipliniert umgehen muss. aber wer 'es kann', kann sicherlich auch mit 6502-assembler komplexe und grosse programme schreiben, die trotzdem erweiter- und wartbar sind.
-
u_ser-l schrieb:
das meiste ist doch schon längst dagewesen, es wird nur von vielen ignoriert, oder kann mir jemand erklären, was man mit java,ruby,python machen kann, das man nicht auch mit smalltalk und tcl seit 2 bis 3 Jahrzehnten machen könnte (von der schlüssigeren Syntax der beiden letzteren gar nicht zu reden)?
Neuere Bibliotheken zu finden? (1)
Was ich unter "b) die Bibliotheken die verfuerbar sind" einordne.Java ist die Sprache, die am wenigstens Features bietet. Generics wurde erst 2004 eingefuehrt (3), keine Closures, keine Lamdas, keine Operatorueberladung, keine Mehrfachvererbung. Wieso ist aber dann Java so erfolgreich? Es hat schon 2005 die Anzahl an Projekte, die in C++ geschrieben sind, auf Sourceforge eingeholt (2).
C 14613 projects
C# 2304 projects
C++ 15131 projects
Java 14520 projects
Perl 5728 projects
PHP 10731 projects
Python 3894 projectsWeis jemand wie man eine aktuelle Statistik ueber die Sprachen auf SourceForge bekommt?
(1) http://www.cs.berkeley.edu/~flab/languages.html
(2) http://rengelink.textdriven.com/blog/index.php?id=2
(3) http://en.wikipedia.org/wiki/Generics_in_Java
-
DEvent schrieb:
Java ist die Sprache, die am wenigstens Features bietet. Generics wurde erst 2004 eingefuehrt (3), keine Closures, keine Lamdas, keine Operatorueberladung, keine Mehrfachvererbung. Wieso ist aber dann Java so erfolgreich?
Man könnte gemein sein und sagen, dass man versucht hat Java so einfach wie möglich zu halten um die ganzen Wirtschaftsinformatiker und Durchschnittsprogrammierer zu bedienen. Dafür gab es offensichtlich einen Markt den man offensichtlich erfolgreich bedient hat. Ein langweiliges, emotionsloses Stück Sprache+Framework.
-
Tim schrieb:
Ein langweiliges, emotionsloses Stück Sprache+Framework.
dafür dass es so emotionslos ist, waren die flamewars (z.b. früher hier) aber ganz schön emotionsgeladen.