Diskussion: Der BCB / BuilderX und die Zukunft von Borland (war:Builder 7 kommt raus)



  • hallo,

    @volkerh: toll, wie sauoft werden diese c++-features schon wirklich benötigt wenn jeder mal ehrlich ist??? und wegen diesen sachen dieser rückschritt? also ich weiss nicht...

    mfg
    murphy



  • hallo murphy,
    also, Du hast recht, man benötigt diese Eigenschaften nicht unbedingt, sonst würde es ja keine anderen Sprachen, wie Delphi, Basic, JAVA, ... geben ;-). Aber dann kann man auch mit diesen Sprachen entwickeln.

    Aber diese Eigenschaften machen eben gerade den Unterschied aus! Warum programmierst Du in C++, wenn Du die Eigenschaften nicht ausnutzen willst, warum nimmst Du die langen Compilier und Linkzeiten in Kauf? Wenn Du diese Eigenschaften konsequent einsetzt, dann wird Deine Anwendungsarchitektur stabiler, Du hast plötzlich extrem weniger Quellcode, die Wiederverwendbarkeit erreicht eine neue Dimension und das Fehlerpotential sinkt. Deine Anwendung wird toleranter gegenüber Veränderungen, und Du kannst größere Probleme lösen. Eben gerade das ist der Unterschied zwischen professioneller Anwendungsentwicklung und der Quick and Dirty- Methode, und gerade hier spielt C++ seine Leistung aus. Also ist es schon vernünftig dafür einen vermeintlichen Rückschritt zu machen. Der BCB war am Ende nicht mehr C++. Wenn es Borland jetzt, wie versprochen, gelingt, die guten Eigenschaften und Möglichkeiten der VCL in eine echte C++ - Entwicklungsumgebung zu migrieren, dann ist das Fortschritt, und wir werden alle davon profitieren.

    Schöne Grüße aus Berlin

    Volker



  • hallo,

    hallo volkardh, also ich wollte dir ja nicht an den karren fahren, aber ich muss gestehen, ich arbeite eigentlich nur mit c++ weil es den c++builder gibt, in meiner ausbildung (da lerneten wir programmieren mit ms-visual c++ und der gaaaaaanz tollen mfc), war der erste einfühtungssatz unseres dozenten der seit 27 jahren mit dabei ist, das das seltenst sinnvoll eingesetzte feature der sprache c++ mehrfachvererbung ist, und wenn man solchen dinge doch einmal unbedingt benötigen sollte, so wäre es besser diese mit ´den moderneren konzepten der interfaces nachzubilden. naja, wie dem auch sei, ich arbeite seit ca. 5 jahren in der dos/windowsprogrammierung hauptsächlich windows, ich selber habe dieses feature noch nie gebraucht. klar, vielleicht bin ich dazu auch ein viel zu durchschnittlicher programmierer, aber für die dinge die du da angeführt hast, möchte ich auf keinen fall den komfort einer vcl vermissen! das ist es mir einfach nicht wert. für mich heisst der fall ganz klar und eindeutig: nix vcl-mässige klassenbibliothek = kein c++ und an borland: CBuilderX = ohne mich...

    mfg
    murphy



  • Hallo murphy,
    auch ich wollte Dir nicht an den Karren fahren. Entschuldige bitte, wenn Du es so aufgefaßt hast. Ich habe von vielen Leuten zu oft gehört, dass man diese Eigenschaften nicht braucht, und meistens von Leuten, die nicht verstanden haben, worum es eigentlich bei Mehrfachvererbung, templates, RTTI, ... geht. Eigentlich schade, denn das führt dazu, dass viele sich nicht damit beschäftigen. Und ich schließe mich dabei nicht aus.

    Meine ersten konstruktive Begegnung mit templates hatte ich in einem sehr datenintensiven Projekt, ein Zusatztool auf einer Finanzbuchhaltung. Eigentlich war der Termin nicht mehr zu halten, ich mußte in drei Tagen ca. 15.000 Quelltextzeilen schaffen, und dann auch noch alles sinnvoll einbinden. Dann habe ich aus der Not heraus, weil ich keinen Quelltext mehr sehen konnte, templates eingesetzt, aus den 15.000 Quelltextzeilen sind 2.500 geworden, und ich habe den Termin geschafft. Außerdem hatte ich in diesen Tagen sogar noch etwas gelernt. Vorher habe ich auch gesagt, templates, wozu?

    Mit der virtuellen Vererbung das gleiche. Am 4. April 1999 habe ich in einem Workshop in einem größeren Programmierprojekt, in dem ich verantwortlich war, gesagt, dass partielle Mehrfachvererbng nett ist, aber man es nicht braucht (ich hatte es mir bis dato garnicht angesehen, da ich glaubte, man brauche es nicht). Es waren damals 7 Projektmitarbeiter, die mir dieses natürlich auch glaubten. Nur 4 Tage später kam es zu Problemen im Modell, das Konzept war gut, nur lies es sich nicht umsetzen. Einen ganzen Tagen berieten wir, ohne Erfolg. Nachts im Auto, auf dem Weg nach hause, hatte ich plötzlich die Idee, vielleicht könne es ja mit der partiellen Vererbung zu lösen sein? Ich nahm mir ein Buch und arbeitete die Nacht durch. Ich las, probierte Sachen aus und am nächsten Morgen trommelte ich das Team zusammen und stellte am Flipchart das neue / alte Modell vor. Es hatte funktioniert, es wurde im laufe der Wochen verfeinert, aber es blieb bis zum Schluß stabil. Wir hätten es ohne die partielle Vererbung nie geschafft, ein Lebenversicherungssystem mit 6 unerfahrenen und 2 erfahrenen Programmieren in 6 Monaten aus dem Boden zu stampfen, wenn wir uns dieser Mittel nicht bedient hätten.

    Warum die Geschichten, passen sie überhaupt noch zum BuilderX? Ich denke ja, denn man muss sich ständig nach vorne bewegen und mit neuem beschäftigen, und wenn man in ein Sackgasse läuft auch den Mut haben, wieder zurück zu gehen. Und jedem, der C++ programmiert, kann ich nur raten, beschäftigt Euch mit diesen Spracheigenschaften, weil es sich wirklich lohnt. Und ich denke, aus meiner Erfahrung in Seminaren und RoadShows, die meisten C++ Entwickler haben noch eine Menge Freiraum, neue Dinge zu lernen.

    Schöne Grüße aus Berlin

    Volker



  • hallo,

    weisst du volker, das kann jetzt ewig so hin und her gehen. niemand sagt doch auch zu dir, das du templates, run time type informations und sogar mehrfachvererbung (obwohl dabei erwiessenermassen ziemlich gezwängte unnatürliche ergebnisse i. d. Regel rauskommen, auch wenn es jetzt bei deinem projekt total gut reingepasst hat) nicht verwenden sollst oder gar kannst. der builder unterstüzt so ziemlich den kompletten offiziellen c++ standard in einem solchen grad, wie kaum ein anderer c++ compiler, auch ist im bcb meist immer als erstes ein neues feature welches zum standard hinzukommen ist eingebaut. niemals habe ich auch behauptet, das templates nicht verwendet werden, templates sind eine geile sache (hat mittlerweile auch borland erkannt, und dieses konzept kurzerhand in delphi-language übernommen-neue version). in der vcl können sie derzeit leider nicht verwendet werden, da eben noch nicht unterstüzt, aber es gibt ja auch noch die stl die man jederzeit im builder nutzen kann. und nocheinmal, ich glaube nicht, das sehr viele builderprogrammierer den komfort der vcl gegen eine unterstüztung der mehrfachvererbung eintauschen wollten, denn genau wie du anführtest, das man immer in immensem zeitdruck ist, denke an alte vcl-lose zeiten. und auch wenn es im bcb geht, es ist niemand dazu gezwungen "quick and dirty" damit zu programmieren (s. hierzu z. B. doc/view-modell für bcb, etc.), es kommt immer nur darauf an, was man selber daraus macht.
    ich kenne deine meinung und respektiere die auch, und wenn die borländer was in c++ daherbringen, mit dem so programmieren kann wie mit der vcl dann binn ich der erste der hurra schreit, aber das glaube ich eben nicht, weil hierzu der c++ standard zu sehr verbogen werden müsste um die features zur oberflächengestaltung einzubauen. und für die programme die ich schreibe, brauche ich eine ide mit der sich windows-oberflächen einfach bauen lassen und auf dem neuesten stand halten lassen, wo wie es mir die vcl bietet.

    mfg
    murph



  • hallo murphy,
    also erst einmal kann ich dich (und alle anderen) beruhigen, die wxWindows- Libary ist, was Oberflächen betrifft, ebenso leistungsfähig, wie es die VCL war, nur fehlt der Designer noch. Im Performance- Vergleich ist sie sogar deutlich besser. Im preview bekommt man eine erste Vorstellung, in welche Richtung es mit dem Designer einmal gehen wird, auch das ist nicht unbedingt schlechter, als die VCL. Nur ist die Performance des Designers auf Grund der JAVA- Implementierung noch himmelschreiend schlecht, hier darf man auf die richtige Version gespannt sein. Um die Entwicklung von wxWIndows vorhersehbar zu machen, wurde eine Foundation gegründet, in der auch Borland vertreten ist. Borland hilft der Foundation beim Einarbeiten neuer Eigenschaften, wie STL, RTTI, ..., arbeitet also aktiv mit. Man muß auch C++ dafür nicht irgendwie verbiegen, da ja die API ohnehin in C++ geschrieben ist, und es sprachmäßig nicht viel in Delphi gibt, was es in C++ nicht auch gibt, im Gegenteil. Ich bin also fest davon überzeugt, dass der nächste Wurf ein Volltreffer wird, weil technologisch ist Borland immer gut gewesen (vielleicht sollte man etwas an der Kommunikation und dem marketing verbessern).

    Das was eben noch nicht unbedingt in Sicht ist, sind Komponenten für WebServer, WebServices, ..., aber auch da denke, weiß Borland, was man den Programmieren schuldig ist, ich denke also, wir werden bereits in den nächsten Wochen alle aufatmen können. Vielleicht schafft es ja Borland sogar, die IDE selber in C++ zu schreiben, den ein Problem für die enormen Hardware- Anforderungen und die schlechte Perfomance der IDE sind ja wohl eindeutig in der JAVA- Implementierung zu suchen.

    Damit könnten wir unsere Diskussion also beenden, allerdings ist da noch ein Nebensatz von Dir, den ich so nicht stehen lassen will.

    obwohl dabei erwiessenermassen ziemlich gezwängte unnatürliche ergebnisse i. d. Regel rauskommen, auch wenn es jetzt bei deinem projekt total gut reingepasst hat

    Auch Du trägst die Erbmasse mehrerer Personen in Dir 😉 , trotzdem denke ich nicht, dass Du unnätürlich bist, im Gegenteil. Aus der Mehrfachvererbung kann sicher etwas total sinnlosen werden, aber da reicht auch die einfache Vererbung in den Händen eines schlechten Designers. Nimm Dir doch wirklich einmal die Zeit, lasse Dich nicht von irgendwelchen Informatikprofessoren beeinflussen (oder benutze sie nicht als Ausrede) und beschäftige Dich mit Mehrfachvererbung. Sie ist kein Allheilmittel, sie ist nur ein Sprachmittel unter vielen, aber sie ist sehr mächtig, und deshalb sollte man sie nicht so abhacken, wie Du es hier versuchst, und sogar sagen, dass "erwiessenermassen ..." dabei herauskommen.

    Schöne Grüße aus Berlin

    Volker



  • dschensky schrieb:

    AndreasW schrieb:

    Soweit ich das verstanden habe, arbeitet ADO.NET mit XML-Daten.

    Die Verwendung von XML als "Datenbank" wird unterstützt, ist aber nur eine Möglichkeit. ADO.NET ist (wie etwa die BDE) eine generisches Datenbank-Zugriffs-Modell. Du kannst genauso auf jede andere Datenbank zugreifen, falls der Hersteller die entsprechenden Treiber zur verfügung stellt (OLEDB, ODBC).
    Die "große Neuerung" in ADO.NET ist die Verbindungslosigkeit (keine Cursor auf Server-Seite). Das macht das Programmieren schwerer, verbessert aber die Skalierbarkeit.

    du hast das falsch verstanden. ADO.NET benutzt XML um die Daten verbindungslos im Arbeitsspeicher zu cachen. Welche Datenbank ist prinzipiell egal, da ADO.NET OLEDB unterstützt.
    Aber beachte mal die Speicherrelationen... Zumal sich das beschriebene Verhältnis des Speicherbedarfes zwischen Tags und eigentlichen Daten noch dramatisiert, da auch alle Meta-Daten mitgespeichert werden müssen, um die Daten offline konsistent zu halten. Fatal. Das schlimmste was je aus dem Hause Microsaft gekommen ist. Für HelloWorld- Programme mit Adressverzeichnis in einer Datenbank mag das ja noch gehn, aber für professionellen Datenbankeinsatz ? Mehr als zweifelhaft.

    dschensky schrieb:

    Das macht das Programmieren schwerer, verbessert aber die Skalierbarkeit.

    In wie fern ?



  • Hallo und allen ein gutes und erfolgreich Jahr 2004.

    Auch ich benutze den C++Builder seit der Version 1.0 und bin mit dieser Entwicklungsumgebung sehr zufrieden.
    Es geht ja nicht nur darum, das man die Benutzeroberflächen sehr schnell und einfach erzeugen kann. Ich bin sicher, das das mit wxWindows ebenso einfach und schnell geht, ich kann mir darüber aber kein genaues Urteil bilden, da ich das noch nicht getestet hab.
    Das weitere Hightlight am CB ist das Benutzen der nichtvisuellen Komponenten, die der SW gewisse Funktionalitäten zur Verfügung stellen (wie z.B. die Datenbank-Komponenten) und damit den Programmieraufwand erheblich vereinfachen. Man kann ja die Eigenschaften zur Entwurfszeit setzen und auch gewisse Ereignisse eintragen, die dann beim Eintreten als Klassenmethode eines bestimmten Klassenobjekts aufgerufen werden. Diese Möglichkeit betrachte ich eigentlich mit als das genialste Konzept des CB-Compilers. Denn das Aufrufen von Klassenmethoden über Methodenzeiger ist beim normalen C++ ja (leider) so nicht möglich, es sei denn, es handelt sich um eine statische Klassenmethode, die an kein bestimmtes Klassenobjekt gebunden ist.

    Ich frage mich an dieser Stelle: Kann man denn auch mit andere Designern wie z.B. das wxWindows solche nichtvisuellen Komponenten erstellen?

    Gruß Burkhard



  • Hallo,

    ich kann zwar den Ausführungen mit statischen und Klassenmethoden etc. nicht ganz folgen, aber im Grunde geht es Dir ja um die Events. Eigentlich ist die Lösung der VCL simple (man musste nur einmal darauf kommen), die Behandlungsmethoden sind auch keine Klassenmethoden (im Gegenteil, sonst könnte man durch Ableitung die Eigenschaften nicht einfach so ändern, oder verschiedenen Edit- Feldern unterschiedliche Events zuweisen), also ist das mit jedem anderen Framework abbildbar. Dafür muss die Sprache auch nicht angepaßt werden, da reicht C++. Und Properties selber gibt es in wxWindows auch, insoweit bin ich überzeugt, der fertige Designer wird hier einen ähnlichen Komfort bieten, wie der BCB6. Ich habe einmal eine xrc- Datei (entspricht in etwa der dfm- Datei) kopiert, hier sieht man, die Parallelen doch deutlich, nur eben xml- basierend.

    <?xml version="1.0" encoding="utf-8"?>
    <wxWindowsXTI>
      <metadata classname="wxmainform" baseclass="wxFrame" objectname="mainform" unitname="unitname">
        <property type="wxPanel *">MainPanel</property>
        <property type="wxStaticText *">StaticText1</property>
        <property type="wxTextCtrl *">TextCtrl1</property>
        <property type="wxButton *">Button1</property>
      </metadata>
      <entry name="mainform">
        <object class="wxmainform" id="0" name="mainform">
          <prop name="Id">100</prop>
          <prop name="Title">mainform</prop>
          <prop name="Position">29,22</prop>
          <prop name="Size">500,400</prop>
          <prop name="WindowStyle">wxCLIP_CHILDREN|wxCAPTION|wxTHICK_FRAME|wxSYSTEM_MENU|wxRESIZE_BOX|wxCLOSE_BOX|wxMINIMIZE_BOX</prop>
          <prop name="Children">
            <element>
              <object class="wxPanel" id="1" name="MainPanel">
                <prop name="Parent">
                  <object href="0"/>
                </prop>
                <prop name="Id">101</prop>
                <prop name="Position">0,0</prop>
                <prop name="Size">492,366</prop>
                <prop name="WindowStyle">wxTAB_TRAVERSAL</prop>
                <prop name="Children">
                  <element>
                    <object class="wxStaticText" id="2" name="StaticText1">
                      <prop name="Parent">
                        <object href="1"/>
                      </prop>
                      <prop name="Id">102</prop>
                      <prop name="Label">StaticText1</prop>
                      <prop name="Position">31,19</prop>
                      <prop name="Size">54,13</prop>
                      <prop name="WindowStyle"></prop>
                      <prop name="ExtraStyle">0</prop>
                      <prop name="ForegroundColour">#000000</prop>
                      <prop name="BackgroundColour">#ECE9D8</prop>
                    </object>
                  </element>
                  <element>
                    <object class="wxTextCtrl" id="3" name="TextCtrl1">
                      <prop name="Parent">
                        <object href="1"/>
                      </prop>
                      <prop name="Id">103</prop>
                      <prop name="Value">Hallo</prop>
                      <prop name="Position">120,21</prop>
                      <prop name="Size">100,21</prop>
                      <prop name="WindowStyle">wxBORDER_SUNKEN</prop>
                      <prop name="Font">
                        <object class="wxFont" id="4">
                          <prop name="Size">8</prop>
                          <prop name="Family">74</prop>
                          <prop name="Face">MS Shell Dlg</prop>
                          <prop name="Encoding">wxFONTENCODING_CP1252</prop>
                        </object>
                      </prop>
                      <prop name="ExtraStyle">0</prop>
                      <prop name="ForegroundColour">#000000</prop>
                      <prop name="BackgroundColour">#FFFFFF</prop>
                    </object>
                  </element>
                  <element>
                    <object class="wxButton" id="5" name="Button1">
                      <prop name="Parent">
                        <object href="1"/>
                      </prop>
                      <prop name="Id">104</prop>
                      <prop name="Label">Button1</prop>
                      <prop name="Position">34,78</prop>
                      <prop name="Size">75,23</prop>
                      <prop name="WindowStyle"></prop>
                      <prop name="Font">
                        <object class="wxFont" id="6">
                          <prop name="Size">8</prop>
                          <prop name="Family">74</prop>
                          <prop name="Face">MS Shell Dlg</prop>
                          <prop name="Encoding">wxFONTENCODING_CP1252</prop>
                        </object>
                      </prop>
                      <prop name="ExtraStyle">0</prop>
                      <prop name="ForegroundColour">#000000</prop>
                      <prop name="BackgroundColour">#ECE9D8</prop>
                    </object>
                  </element>
                </prop>
                <prop name="ExtraStyle">0</prop>
                <prop name="ForegroundColour">#000000</prop>
                <prop name="BackgroundColour">#ECE9D8</prop>
              </object>
            </element>
          </prop>
          <prop name="ExtraStyle">0</prop>
          <prop name="ForegroundColour">#000000</prop>
          <prop name="Button1">
            <object href="5"/>
          </prop>
          <prop name="StaticText1">
            <object href="2"/>
          </prop>
          <prop name="TextCtrl1">
            <object href="3"/>
          </prop>
          <prop name="BackgroundColour">#808080</prop>
          <prop name="MainPanel">
            <object href="1"/>
          </prop>
        </object>
      </entry>
    </wxWindowsXTI>
    

    Es sollte also nicht schwer fallen, hier einen vernünftigen Designer aufzusetzen, der ähnlich der VCL arbeitet. Noch ist das, was man sieht, allerdings wirklich nur ein preview. Außerdem arbeitet Borland ja an der Weiterentwicklung von wxWindows aktiv mit, also wird es interessant, wie es weitergeht.

    Was die nichtvisuellen Komponenten betrifft, auch hier ist Borland doch beim migrieren, und mit dbExpress kann auch der CBX mit verschiedenen Datenbanken arbeiten. Durch die Art der Implementierung handelt es sich um echte Komponenten, also sollte es auch einfach sein, um diese noch ein bisschen Bedienerfreundlichkeit herumzustricken. Und wenn ich den offenen Brief richtig gelesen habe, dann hat Borland vor, weitere VCL- Komponenten in die neue Umgebung zu migrieren. Da es ja die erklärte Cross- Plattformumgebung ist, und damit für Linux entscheidend, hoffen ja alle auf leistungsfähige Komponenten für Web- Server.

    Schöne Grüße aus Berlin

    Volker

    Dabei gleich noch einmal eine generelle Anmerkung an alle begeisterten Windows- Programmierer (ich bin übrigens auch einer, und würde am liebsten bis zur weiten Rente weiter für Windows entwickeln), die lieber offene Standards und Portabilität über Bord werfen, und dafür komfortable Programmierung wie in C#, ... oder bisher in der VCL haben wollen. Ich habe gerade in der Computerpartner einen Bericht über die IDC- Prognose für 2004 gelesen, "Linux wird als preisgünstiges Betriebssystem für Unternehmen immer interessanter" (und ich bin bestimmt kein Linux- Freak), hier gibt es also erhebliches Potential. Mich macht das, wie schon gesagt, doch nachdenklich. Wer hätte vor 10 Jahren geglaubt, dass Novell im Netzwerkbereich zum Statisten wird und IPX als Protokoll keine Rolle mehr spielt? Wer hätte vor fünf Jahren geglaubt, dass Linux in Kommunen und Verwaltungen einzieht, und gerade im Bereich Web- Server die dominierende Stellung einnimmt? Wer hat Anfang der 90'er gerglaubt, das Lotus 123 defacto untergeht, und warum haben so viele nicht das Ende von Clipper gesehen? Und, eine ganz aktuelle Frage, Microsoft hat die Weiterentwicklung der Unternehmenssoftware- Apertum vor einigen Monaten, trotz neuem Release abgekündigt, die Nutzergemeinde wehrt sich und verhandelt mit Microsoft, dass die Software weiterbesteht. Auch dieses hätte kurz davor keiner für möglich gehalten. Wer weiss denn heute, welche Entwicklung die nächsten 3 Jahre wirklich bringen? Und genau hier haben viele Manager ein Problem, durch Gesetze sind sie zum aktiven Risikomanagement verpflichtet, Begriffe wie Investitionsschutz spielen eine zentrale Rolle. Gerade Sun und Microsoft führen eine Auseinandersetzung, auch mit erheblichen Werbemitteln, aber bekanntermaßen auch vor Gericht, und die Justiz ist manchmal unberechenbar. Und weil ich nicht weiss, wie sich die EDV entwickeln wird, bin ich froh über den CBX und hoffe, dass Borland, wie in der Vergangenheit schon oft, hier eine gute Arbeit macht. Nur die breite Basis von C++, mit wenig spezielle Firmeninteressen in einem breitgestreuten Komitee weiterentwickeln und ständig aktualisiert, gibt doch Sicherheit, und in genau diese breite Basis steuert die CBX zurück. Ich bedauere eben nur, dass die Nutzer so im Dunkeln stehen, anstatt über Strategien, Ziele, etc. aufgeklärt zu werden, und damit der Raum für die wildesten Spekulationen offen steht. Die Informationspolitik ist wirklich sehr schlecht. Eigentlich schade, denn schon jetzt ist der CBX besser als sein Ruf, und er besitzt eine Menge Potential.



  • Hallo Volker,
    danke für deine sehr ausführliche Antwort.
    Was ich mit den Klassenmethoden meinte, dazu sieh Dir am besten mal die Borland Hilfe an, und zwar such nach dem Stichwort __closure.

    Ich habe den CBX schon mal angetestet, da war noch nicht davon so richtig überzeugt, aber da hatte ich auch noch keinen Designer. Ich glaube schon, das der CBX ein gutes Produkt ist, aber ich werde erstmal noch etwas abwarten.

    Und ich gebe Dir auch recht in Bezug auf die Zukunft. Keiner kann doch genau vorraussagen, mit welchen Betriebsystem wir uns noch auseinandersetzen werden. OS/2 war ja auch mal der Renner, und plötzlich war es ganz schnell wieder weg vom Markt. Also hilft nur, sich ständig umzusehen und sich mit neuem auseinanderzusetzen.

    In diesem Sinne.. 😉
    Gruß Burkhard



  • Hallo Zusammen,

    also, die Aussagen/Meinungen in dem Thread sind wirklich sehr interessant.

    Ich hänge auch was die künftige Entwicklung angeht in der Luft.

    Ich arbeite seit einigen Jahren mit dem CBuilder und bin im großen und ganzen zufrieden.

    Ich denke mal, man kann sich wirklich erst dann ein Bild davon machen wie wertvoll ein gutes Framework ist, wenn man mit verschiedenen gearbeitet hat.

    Nehmen wir mal beispielsweise VC++(benutze VC++ 6 ebenfalls, hauptsächlich für Systemprogrammierung).
    Streng genommen ist das kein "Visual".
    Da ist solide Handarbeit angesagt!

    Die jenigen die versucht haben mit VC++ etwas zu Zeichnen,Schrift- oder Farbeneigenschaften der Kompos anpassen, wissen wovon ich spreche ...
    Da sind die Apis schon relativ schlecht gekapselt, mal ganz abgesehen davon,
    daß manche MFC Klassen wirklich nicht gerade gut konzeptioniert sind.

    Da ist der CBuilder um Welten besser(den Bereich Datenbank Programmierung spreche ich erst gar nicht an, da liegt VC unter dem Durchschnitt)

    Dafür wird VC++ im Gegensatz zum Builder aber konsistent in einer Sprache gehalten!
    Das stört mich ehrlich gesagt beim CBuilder sehr.

    Ich halte also den CBuilderX Weg und hier gebe ich Dir,Volker Recht für absolut richtig.

    Wird sich C# durchsetzen, oder doch Java?
    Ich möchte nicht unbedingt C# lernen und nach einem Jahr feststellen, daß dies doch Zeitverschwendung war.
    Oder doch Java?

    Ich persönlich möchte bei C++ bleiben schon alleine wg. STL

    Grüße
    epidemic



  • hallo,

    @epidemic: "Dafür wird VC++ im Gegensatz zum Builder aber konsistent in einer Sprache gehalten!"

    diese ist aber dann auch weit entfernt vom eigentlichen C++ Standard.

    mfg
    murphy



  • murphy schrieb:

    diese ist aber dann auch weit entfernt vom eigentlichen C++ Standard.

    Davon war auch nicht die Rede.

    epidemic



  • Hallo,

    abwarten und Tee trinken wird hier von vielen empfohlen, ein schlechter Rat !

    Nüchtern betrachtet bleibt einem doch nicht viel übrig. Wenn der C++ Builder eingestellt ist, ist jede weitere Zeile die ich damit schreibe für den Mülleimer geschrieben, da ich so oder so einmal umsteigen MUß. Der Code ist verloren oder muß umgeschrieben werden. Und bei der Hauruck-Mentalität, ist es nur eine Frage der Zeit bis es wieder heißt ... Entwicklung eingestellt !!!

    Also bleibt mir doch eingentlich keine Wahl ... umsteigen, besser früher als später ... doch wohin.

    BuilderX ... unausgereift ... wird er es mal sein ?
    VisualC++ ... nicht so gut aber bei der Microsoft Art wird er wohl lange überleben.
    Eine ganz andere Sprache Deplhi ? alles gelernte weg werfen und bei 0 anfangen .... nicht mit mir.

    Also ... C++Builder ist tot ... es lebe VisualC++

    Pronto



  • Hallo Pronto,
    ich kann Deinen Frust verstehen, wenn er auch an der Sache vorbeigeht. Denn auch Microsoft hat gerade mit "managed" C++ nicht gerade für Ruhe in den eigenen Reihen gesorgt. Ich kann auch weiterhin jedem Entwickler, der mit dem C++ Builder arbeitet, nur empfehlen, keine voreiligen Entschlüsse zu ziehen, und sich nicht von Parolen verunsichern zu lassen. Vielmehr muss es das Ziel sein, die eigenen Anwendungen so zu verändern, dass sie später einen entsprechenden Wechsel erlauben. Also Umstrukturieren, die Möglichkeiten von C++ nutzen. Das Problem liegt ja, wie schon sehr oft genannt, nicht in einer Unstetigkeit von C++ selber, sondern in der Unstetigkeit der VCL, die in ihrer Struktur an die Grenzen gekommen ist. Und wenn dann am Ende der Umstrukturierung der eiegnen Programme eine Entscheidung für Microsoft oder GNU getroffen wird, kann ich das auch verstehen, allerdings denke ich, dass ein weiterentwickelter CBX sicher eine gute Programmierumgebung sein wird.

    Schöne Grüße aus Berlin

    Volker



  • Hallo VolkerH,

    ich habe die letzten Monate visuelle neue Komponenten entwickelt, die kann ich vergessen. Natürlich ist eine kompatible Programmierung schön, nur nicht ganz praktikabel. Umschreiben muß ich immer.

    Und was BuilderX angeht, sind wohl die Schlüsselwörter "sein wird".

    Sicher hast du Recht, er hat (oder wird haben) tolle neue Feature. Doch ich muß micht jetzt entscheiden. Stecke ich jetzt die nächten Monate sehr viel Arbeit in das bestehende Projekt und werfe die dann hinterher weg, oder mache ich den Wechsel und habe von dem Code auch im nächsten Jahr noch was. Einfach den Leuten den Boden unter den Füßen weg zu ziehen ist keine Art. Ich kann auch nicht einfach den Kunden sagen, "werft eure ganze Arbeit der letzten Jahre weg, es gibt was Neues". Welche Firma macht so was ?

    Pronto



  • Hallo Pronto,
    wir wissen immer noch nicht, ob es eine Unterstützung für bestehenden Code auch im neuen Compiler geben wird, oder ob es einen Assistenten gibt, der bestehenden Code transformiert. Eigentlich hat Borland solches ja immer angeboten, und es gibt auch eine vorsaichtige ussage im offenen Brief aus dem Oktober, dass es eine entsprechende Unterstützung geben wird. Deshalb sollte man jetzt keine voreiligen Schlüsse ziehen und in Panik reagieren. Sicher, es ist richtig, um so spezieller man die Entwicklung an die VCL anpaßt, umso größer der Anteil der VCL ist, destso schwieriger wird der Schritt werden. Und die Entwickler, die ihr Geld vornehmlich im Bereich der Entwicklung von VCL- Komponenten verdient haben, sollten sich vielleicht am ehesten nach neuen Herausforderungen umschauen. Allerdings waren das ja meistens Delphi- Entwickler, und auch diese müssen ja in den letzten Wochen Entscheidungen treffen (Delphi 8 -> .net).

    Aber es ist wirklich einfach, mit C++ eine saubere Architektur zusammenzubauen, wenn es um die Verwendung der VCL geht. Voraussetzung sind allerdings erweiterte Kenntnisse von C++ und ein bisschen abstraktes Denkvermögen (aber das sollte man als Entwickler eigentlich mitbringen). Als erstes baust Du in Deinem Programm eine Schicht ein, in der Du in abstrakten Klassen Deine Erwartungen formulierst, die Du bisher mit der VCL umgesetzt hast (Erzeugen von Formularen, Ansprechen von einzelnen Elementen auf den Formularen, ..., Nachrichtenbehandlung, ... , Ansprechen von Datenbanken, Erzeugen von Queries, Arbeiten mit Ergbnismengen und Parameterm, ..., FTP, ...). Dann implementierst Du diese Klassen mit Hilfe der VCL, das ist einfach. Dann ergänzt Du eine abstrakte Providerklasse (oder Factory- Klasse) mit Methoden zum Erzeugen von konkreten Instanzen für diese Schnittstellenklassen und implementierst das Ganze mit den vorhergeschriebenen VCL- Implementierungen. Und in Deiner Anwendung verwendest Du dann nur die abstrakten Klassen, nur an einer einzigen Stelle benötigst Du in Deinen Programmen die Instanzierung dieser konkreten Factory- Klasse, dann kannst Du beim Programmieren die RAD- Features weiterbenutzen, und wenn es einen Wechsel des Frameworks gib, implementierst Du Deine "Erwartungen" einfach neu. Die Arbeit dürfte nicht länger als einige Tage dauern. Im Extremfall suchst Du Dir einfach einen Experten für dieses Framework, entscheidend ist nur noch die Frage, ob dieses Deinen "Erwartungen", die Du in den abstrakten Klassen aufgestellt hast, erfüllen können. Dann kannst Du Dein Programm darauf umstellen. Da es abstrakte Klassen sind, verlierst Du keine nennenswerte Performance im Programm.

    Das hört sich jetzt alles einfach an, ist es eigentlich auch. Die jeweiligen Plattformen sind sich sehr ähnlich, was die Möglichkeiten betrifft. Und die VCL ist in Delphi geschrieben, und dort gibt es nur eingeschränkte Möglichkeiten bei der Modellierung. Wichtig ist nur, dass man sich auf das wesentliche beschränkt, und nur "Erwartungen" formuliert, die man auch wirklich braucht. Es setzt aber voraus, dass man sich mit C++ und abstrakten Klassen beschäftigt, die elegantesten Implementierungen erhält man mit Hilfe der virtuellen (partiellen) mehrfachen Vererbung und templates. Datentypen hat C++ nun wirklich genug und die STL bietet reichlichst Container, die ich alle im Rahmen der Schnittstellen und im Businessbereich meiner Anwendungen verwenden kann. So gibt es keinerlei Einschränkungen, in vielen Fällen wird der Code sogar lesbarer und kompakter.

    Wenn man sich also die Arbeit macht, das Entwicklungswerkzeug auszutauschen, muss man diesen Code sowieso komplett umschreiben. Dann sollte man es doch richtig machen, vorher ein bisschen C++ Grundlagen lernen und das ganze mit der bekannten und vertrauten Entwicklungsumgebung umschreiben. Wenn es dann eine Entscheidung gibt, ob nun für den CBX oder Visual C++, dann ist es nicht mehr schwierig, dadurch kommt man aber jetzt nicht in die Situation, Code zu schreiben, der dann vielleicht überflüssig ist.

    Schöne Grüße aus Berlin

    Volker



  • Hallo VolkerH,

    in deiner Darstellung kommen mir zu viele "wenn", "aber" und "vielleicht" vor.

    Sicher ist :

    a.) Alle Komponente, die ich jetzt entwickle werden "vielleicht" mal konvertier werden können.
    b.) Es gibt schon seit Jahren kaum noch Bücher über den Borlad C++ Builder.
    c.) Von gutem kompatieblen Code sieht der Endanwender nix.
    d.) mit dem BuilderX kann ich im Moment keine vernünftige Entwicklung machen, auch wenn ich damit 5% mehr Endanwender erreichen kann.
    e.) guten kompatieblen Sourcecode kann ich auch im VisualC++ schreiben. Die Arbeit bleibt also die gleiche. (ohne hoffen zu müssen !!!)

    Mich errinnern deine Texte stark an die Durchhalteparolen zu den guten alten Amiga/Atari Zeiten. Das waren schöne Zeiten, mein A3000 steht noch immer in einer Glasvitriene, und ich werden den Borland C++ Builder wohl dazu stellen.

    Ich will Anwendungen schreiben, die nicht vielleicht mal fertig werden. Die Komponenten die ich jetzt noch entwicklen werde, sollen auch in späteren Projekten noch benutzt werden können. Sicher ist es mal nötig mit Altem zu brechen und NEU anzufangen, nur das kann ich für mich allein machen aber nicht für meine Kunden mitbestimmen. Ich glaube viele werden zu dem selben Schluß kommen und sich anderen Entwicklungsumgebungen zuwenden, und da ein Programm immer noch von den Käufern LEBT, wird es keine Zukunft für den BuilderX geben. Innovation allein macht noch keinen Standard, sonst stände auf meinem Schreibtisch ein Amiga und daneben ein Betamax-Videorekorder.

    Sich mit schönen VIELLEICHTS zu tösten und zu hoffen mag sicher angebracht sein, die REALISTEN werden sich jedoch anpassen und wechseln.
    Der Markt ist heute, die Hoffnung kommt da zu spät.

    Chris


  • Mod

    Hallo

    @Pronto451

    Leider sprichst du mir aus der Seele 😞
    Warum nur verprellt Borland hier die Builder-Gemeinde
    Denn bei Delphi funktioniert es (Delphi 8.Net)

    Ich bin von Borland sehr frustriert und werde mich (vermutlich)
    mit dem VC 😡 😡 😡 anfreunden muessen

    MfG
    Klaus



  • Hallo,
    eigentlich wollte ich mich dazu nicht zu Wort melden, mache es jetzt aber doch. Nur vorneweg, wenn ich selber Fehler mache, und die mir gegebenen Möglichkeiten nicht nutze, muss ich mich nicht beschweren, wenn es dann Probleme gibt. Und da sind keine "vielleichts" oder "wenns", wer in einem C++ - Programm bis zu 80% VCL- Code hat, sich mit AnsiStrings und TLists zufrieden gibt, obwohl es standardisierte (und damit automatisch sichere) Alternativen gibt, die auch noch leistungsfähiger sind, muss dann nicht aufbrüllen, wenn diese nicht mehr weiterentwickelt werden. Man hat sich in eine vermeidbare Abhängigkeit begeben. Und dabei ist es egal, ob der Builder 7 vielleicht doch noch kommen wird, es ist ein Fehler. Und diesen muss man korrigieren, in dem man den betroffenen Code umstrukturiert, und wenn einem dafür die Fertigkeiten fehlen, muss man dieses nachholen, und noch einmal lernen. Und ich will auch keinen für den CBX bekehren, wer mit Visual glücklicher ist, soll es werden (im Grunde ist derjenige glücklich, der diese Entscheidung alleine treffen kann, weil in Firmen sind das meistens politische Entscheidungen). Ich wollte 1999 auch vom damaligen C++ Builder zu Microsoft wechseln, weil Borland in meinen Augen die C++ Entwickler zugunsten von Kylix vernachlässigt hat, während wir in einem großen Projekt die Bugs reihenweise fanden. Also wechsle zum Visual C++, aber höre bitte auf, andere dafür verantwortlich zu machen. Und, wenn Du dann denselben Fehler machst, und Deinen Code zu sehr von Visual - Erweiterungen und dem Framework abhängig machst, wirst Du irgendwann Microsoft die Schuld geben, wenn diese irgendwelche Fehlentwicklungen (ob es nun welche sind oder nicht) zurückschrauben, wie zum Beispiel zu große Einschränkungen bezüglich "managed" C++. Borland muss seine Entscheidungen und Arbeiten verantworten, da hast Du recht, und die Zukunft wird uns zeigen, ob Borland das richtig gemacht hat, aber Du musst Deine Fehler verantworten, gegebenfalls auch gegenüber Kunden. Und da hilft Dir lautes Schreien und Sprüche garnichts.

    Wenn man sich also die Arbeit macht, das Entwicklungswerkzeug auszutauschen, muss man diesen Code sowieso komplett umschreiben. Dann sollte man es doch richtig machen, vorher ein bisschen C++ Grundlagen lernen und das ganze mit der bekannten und vertrauten Entwicklungsumgebung umschreiben. Wenn es dann eine Entscheidung gibt, ob nun für den CBX oder Visual C++, dann ist es nicht mehr schwierig, dadurch kommt man aber jetzt nicht in die Situation, Code zu schreiben, der dann vielleicht überflüssig ist.

    Wo sind hier die "Durchhalteparolen"? Die VCL musste irgendwann an ihre Grenzen stossen. Der C++ Builder erzeugt relativ langsamen und großen Code, und er ist weniger verbreitet, als Du annimmst. Warum glaubst Du, gibt es den kaum noch Bücher für den C++ Builder? Das hat ja wohl kaum etwas mit Borland zu tun. Viele entwickeln noch heute mit dem Borland C++ 5 Compiler (nicht mit dem Builder verwechseln, ich habe irgendwann mal gelesen, es sollen sogar 30% der Borland- C++ Nutzer sein). Außerdem liegt der Marktanteil von Borland gegenüber Microsoft wohl auch bei 30%. Freie GNU- Compiler (wie Ming) erfreuen sich einer zunehmenden Beliebtheit, und greifen die Position von Borland und Microsoft an an. Ich denke, in den nächsten 5 Jahren wird sich hier der Marktanteil spürbar erhöhen, vielleicht sogar Borland überholen, deshalb musste man reagieren. Und genau auf diese Trends ist der CBX eine gute Antwort. Der Fehler, den Borland gemacht hat, liegt einige Jahre zurück, damals hatte man einen relativ innovativen Compiler, und hat diesen gegen den Delphi- Bruder geopfert, übrigens gegen jeden Standard und am Anfang auch ohne erstzunehmende Unterstützung. Aus einer verrückten Idee heraus, hat man C++ der eigenen Sprache Delphi untergeordnet. Denn der Standard ist C++, offen und durch ein unabhängiges Kommitee gesteuert, nicht die VCL und die Erweiterungen, die hierfür im Builder notwendig waren. Wenn man jetzt schreibt

    ... wird es keine Zukunft für den BuilderX geben. Innovation allein macht noch keinen Standard, sonst stände auf meinem Schreibtisch ein Amiga und daneben ein Betamax-Videorekorder.

    ist das schon putzig, weil Du verkehrt herum denkst. Deine Forderungen an Borland, die alte Technologie am Leben zu erhalten, würden bedeuten, dass heute noch die Amigas auf den Schreibtischen stehen würden. Und nur weil der Amiga so leicht zu bedienen war, und mir ans Herz gewachsen ist, wäre es dumm, weiterhin alles an diesem zu messen.

    Nur um das noch einmal für Dich zusammenzufassen. Ich halte hier keine Lobeshymne für Borland und den CBX, und damit auch keine "Durchhalteparolen", sondern für die Möglichkeiten, die C++ uns bietet, egal, ob wir nun Borland, Microsoft oder GNU verwenden. Nur muss man diese auch einsetzen, und dabei gibt es keine "vielleichts" und "wenns", nur weil man Dir nicht recht gibt.

    Schöne Grüße

    Volker


Anmelden zum Antworten