018
28.03.2003, 14:35 Uhr
Bruder Leif
dances with systems (Operator)
|
Moin!
@KaizerQuint89: Geht nicht. C#, J#, VB.NET, JavaScript.NET und Managed C++ sind auf das .NET-Framework angewiesen. Nur REINES C++ läuft auch ohne, egal ob mit oder ohne STL bzw. MFC. Wenn Du in Visual Basic "reine" Windows-Programme schreiben willst, ohne das Framework zu installieren, mußt Du bei VB 6.0 bleiben. Nachdem Du dabei die VB-Runtime-DLLs mit ausliefern mußt, kommt bei der Verteilung aber der selbe Aufwand raus. Wenn Du das Framework 100% statisch Einbinden willst, schau Dir mal Delphi bzw. C++Builder an, da geht das.
@0xdeadbeef: Also nochmal *seufz*. Von der Seite des Software-Engineering aus machen die Sprachen wie gesagt keinen Unterschied. Aber wenn Du einem Programmierer, der jahrelang nur Visual Basic gesehen hast, C# vorsetzt, wird ihm das Messer in der Tasche aufklappen. Wenn er aber weiterhin mit Visual Basic arbeiten kann, und nur an einigen Stellen etwas umdenken bzw. dazulernen muß, an denen die Sprache erweitert wurde, wird er damit leben können. Es geht hier nicht um Paradigmen, es geht um die Wiederverwendbarkeit von Code und Wissen. Was meinst Du, warum Fujitsu einen Fortran.NET-Compiler entwickelt hat? Warum es einen COBOL.NET-Compiler gibt? Es geht in erster Linie darum, bestehende Quelltexte möglichst ohne große Änderungen von .NET aus ansprechen zu können. Freaks und Hobbyisten macht es vielleicht nichts aus, ein bestehendes 100KLOC-Programm mal eben aufzugeben, um es in einer völlig anderen Sprache/Paradigma/Strategie neu hochzuziehen. Aber ein Berufsprogrammierer wird sich kaum für einen solchen Ansatz begeistern können...
Zu "C++.NET ohne Templates, ohne STL": Schau mal...
C++: |
#include <iostream> #include <string> #include <vector>
using namespace std;
int main() { vector<string> x; x.push_back("forever trusting who we are"); x.push_back("and nothing else matters");
for(vector<string>::iterator it = x.begin(); it != x.end(); it++) cout << *it << endl;
return 0; }
|
Der Quelltext wird vom Visual C++ .NET-Compiler sowohl native als auch mit der /clr-Option (also für die .NET-CLR) ohne Murren geschluckt. Ich weiß ja nicht, was der Typ auf der CeBIT dazu gesagt hätte, aber ich würde das schon als STL bezeichnen...
Oder Du kombinierst das .NET-Framework mit der STL, z.B.
C++: |
#using <mscorlib.dll>
#include <string> #include <vector>
using namespace std;
int main() { vector<string> x; x.push_back("I once had a girl, or should I say she once had me?"); x.push_back("She showed me her room, isn't it good? Norwegian wood."); x.push_back("She asked me to stay and she told me to sit anywhere."); x.push_back("So I looked around and I noticed there wasn't a chair...");
for(vector<string>::iterator it = x.begin(); it != x.end(); it++) System::Console::WriteLine((*it).c_str());
return 0; }
|
Da bleiben keine Wünsche offen. Offensichtlich hatte der Typ, mit dem Du da gesprochen hast, von Tuten und Blasen keine Ahnung...
Zum Thema "Eventhandling": 1. Mehrere Listener pro Event: Kein Problem mit .NET 2. Austauschen von Listenern zur Laufzeit: Kein Problem mit .NET 3. Hin-und-her-reichen von Listenern: Kein Problem mit .NET 4. Ein Listener für mehrere Objekte: Na was wohl? *g*
Ein kleines Beispiel, diesmal in C#:
C++: |
using System; using System.Windows.Forms;
class MyForm: Form { private Button button1, button2;
//------------------------------------------------------------------------------
public MyForm() { button1 = new System.Windows.Forms.Button(); button2 = new System.Windows.Forms.Button();
EventHandler myHandler = new EventHandler(buttonClick);
SuspendLayout();
button1.Location = new System.Drawing.Point(48, 72); button1.Text = "Button1"; button1.Click += myHandler;
button2.Location = new System.Drawing.Point(160, 160); button2.Text = "Button2"; button2.Click += myHandler; // Derselbe wie oben button2.Click += new EventHandler(buttonClickNummerZwei); // und noch einer dazu
Controls.AddRange(new System.Windows.Forms.Control[] {button1, button2}); Text = "Nicht anklichen!"; ResumeLayout(false); }
//------------------------------------------------------------------------------
void buttonClick(object sender, System.EventArgs e) { MessageBox.Show("Aua!"); }
//------------------------------------------------------------------------------
void buttonClickNummerZwei(object sender, System.EventArgs e) { MessageBox.Show("Das sollst Du doch nicht!"); }
//------------------------------------------------------------------------------ [STAThread] public static void Main(string[] args) { Application.Run(new MyForm()); }
//------------------------------------------------------------------------------
}
|
-- Mit 40 Fieber sitzt man nicht mehr vor dem PC. Man liegt im Bett. Mit dem Notebook. |