Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von maxE
Thema: Vorteile und Nachteile von C#/.NET
Am im Forum: Smalltalk

Das hat nix mit Pedanterie/Blödsinn zu tun. Durch diese vielen kleinen Fehlgriffe wirkt die Collection API nicht sehr konsistent. Vorallem wenn schon viele andere, recht brauchbare, APIs entwickelt wurden. Man hätte sich einfach nur "inspirieren" lassen müssen. Das Rad muss nicht schlecht neu erfunden werden.
Und ja, es hat mich schon aufgehalten. Ich kann zum Beispiel keine abstrakte Listenschnitstelle bei .NET finden, das von der konkreten darunterliegenden Implementation abstrahiert.

Thema: Vorteile und Nachteile von C#/.NET
Am im Forum: Smalltalk

Ich bleibe dabei. Die Collection-Klassen in .NET sind nicht wirklich gut.

Zitat
Original von herbivore
Vielleicht ist der Name etwas irreführend.Unter einer IList im .NET Sinne ist "eine Auflistung von Objekten [zu verstehen], auf die einzeln über einen Index zugegriffen werden kann.".
Das ist nicht nur ein etwas irreführend, sondern ziemlich Inkonsistent. Scheinbar hat man bei MS eine etwas seltsame Vorstellung darüber was eine Liste (mal ganz abstrakt gesehen) überhaupt ist.
Zitat
Das ist bei LinkedList nicht der Fall und deshalb wird konsequenterweise IList nicht implementiert.
Bingo. LinkedList kennt keinen indizierten Zugriff. Dann stellt sich die Frage, warum man überhaupt ein IList interface entwickelt/benannt hat, wenn IList übehaupt nichts mit Objekten zu tun hat, die sich ebenfalls als Liste bezeichen.
Toll ist auch die englische Dokumentation zu IList:
The IList generic interface is a descendant of the ICollection generic interface and is the base interface of all generic lists.
Was ist denn nun mit LinkedList? Ist das keine Liste?
Zitat
Nein, da du von einer Fehlannahme ausgegangen bist, ist hier alles in Ordnung. LinkedList implementiert alle nötigen (Collection-)Interfaces als da sind: ICollection<T>, IEnumerable<T>, ICollection, IEnumerable.Es ist also nicht möglich die konkreten List-Implementierungen von ihrer abstrakten Schnittstelle zu trennen.
Doch, da du von einer Fehlannahme ausgegangen bist, ist auch hier alles in Ordnung.

Welche Fehlannahme? Es geht hier darum, dass MS für seine Klassen extrem unsinnige Namen verwendet und das darunter die Konsistenz der API leidet. Es gibt noch weitere Beispiele. Im Namensraum ObjectModel gibt es eine Klasse namens Collection, die IList und ICollection implementiert. Meinst du wirklich das ein so allgemeiner Name wie Collection zu einer Klasse passt die ICollection und IList implementiert. Vorallem wird daraus nicht klar was MS eigentlich für Designziele bei den Collection Klassen hatte.
Man schau sich nur mal die Java Collection-Klassen an, da wird mir sofort klar was sich die Entwickler gedacht haben.

Du magst die Collection Klassen vielleicht gut finden aber glücklicherweise bin ich nicht der Einzigste der das so sieht (Diverse - teilweise schon recht böse - Blogkommentare beim BCL-Team belegen das...)

Thema: Vorteile und Nachteile von C#/.NET
Am im Forum: Smalltalk

Teilweise hat das glaube ich nicht mehr so viel mit Geschmackssache zu tun. Mal ein Beispiel für eine typische Fehlleistung beim Design der Collection Klassen:
Im Framework gibt es ein IList interface. Jeder halbwegs logisch denkender Mensch würde annehmen, dass alles was sich wie eine Liste verhält bzw. eine Liste ist, dieses Interface implementiert. Genau das ist aber nicht der Fall. LinkedList implentiert IList aber überhaupt nicht. Damit wird das Interface-Konzept bei den Collections ad absurdum geführt. Es ist also nicht möglich die konkreten List-Implementierungen von ihrer abstrakten Schnittstelle zu trennen.
Hier hätte man durchaus von Java "klauen" können, die Ingenieure dort haben nämlich deutlich sauberer gearbeitet...
Ein kleiner Nachhilfekurs in Sachen Objektorientierter Programmierung würde so manchem MS-Entwickler gut tun

Thema: Vorteile und Nachteile von C#/.NET
Am im Forum: Smalltalk

Zitat
Original von Rainbird
Unmanaged Code (z.B. C++) ist schneller als managed Code. Das ist Fakt. Die ganzen Sicherheitsprüfungen etc. und die meistens verwendete JIT-Kompilierung schlagen auf den Geschwindigkeits-Magen. Dafür ist alles einfach, toll und sicher. Außerdem wird die sozusagen "Neue Windows API" von Vista großtenteils in managed Code geschrieben sein. Der .NET Zug fährt aus jetziger Sicht am weitesten in die Zukunft.
Naja, wenn ich mir so einige SciMark Benchmarks ansehe, dann kommen mir schon Zweifel ob das nun ein unumstößlicher "Fakt" ist. Ich denke es liegt vorallem an den Verwendeten Jit-Compilern und ihren Möglichkeiten Code zu optimieren. Eine gewisse Setup-Time beim Start bekommt man natürlich nie weg. Im Bereich Performance und verwaltete Sprachen, wird man in Zukunft aber garantiert so einiges zu sehen bekommen. (Siehe einige sehr interessante MS Research Projekte)
Zitat
Java ist .NET eigentlich ebenbürtig. Als Nachteil könnte man die Stückelung von Java sehen. Bei .NET gibt es die Base Class Library. Die ist fett und rund und macht alle glücklich. Bei Java ist das nicht ganz so ...
Da kann man sich streiten, ob Java .NET wirklich ebenbürtig ist. Aus rein technischer Sicht ist .NET eigentlich sogar die mächtigere Plattform. Du kannst sogar Low-Level Sprachen wie C nach IL kompilieren (mit allem drum und drann, Pointerarithmetik, Funktionszeigern, usw.).
In Java geht das nicht so einfach, da Programmiersprachenunabhängigkeit kein sehr großes Thema im Javaumfeld war.

Allerdings muss ich auch einige Dinge bei .NET kritisieren. Ich glaube die größen Probleme lauern im Design der Klassenbibliotheken. Ich persönlich halte z.B. die Collectionklassen für nicht sehr gut gelungen (Inkonsistente Bezeichnungen, zu wenig Funktionalität, ...)

Thema: Was heißt eigentlich "frickeln" auf English?
Am im Forum: Smalltalk

Ich würde frickeln einfach als "pseudokompetentes Gebastel" übersetzen
Also passt tinker glaube ich schon ganz gut (auch als Verb wie herbivore schon sagt).
to tinker with something -> an etwas herumbasteln/herumfrickeln.

Thema: Was heißt eigentlich "frickeln" auf English?
Am im Forum: Smalltalk

Also mir ist das Wort Tinker geläufig. Man könnte as frei als Bastler, Pfuscher oder auch als Frickler übersetzen

Thema: Unmanaged DLL in C# - Problem
Am im Forum: Rund um die Programmierung

Genau genommen ist ein DWORD sogar ein uint

Auch solltest du ein Flag nicht einfach als String übergeben. Das wird Brühe. Du muss die genaue Flag-Definition schon aus dem BASS Header nehmen und auf C# umschreiben.

Thema: Unmanaged DLL in C# - Problem
Am im Forum: Rund um die Programmierung

Schon mal daran gedacht, dass string und DWORD nicht kompatiblel sind?

Thema: PDF's mit SharpDevelop erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,
wär schon wenn du die Fehlermeldung etwas genauer beschreiben könntest.
Grundsätzlich funktionieren .NET Anwendungen unabhängig davon wo sie entwickelt wurden. Ob VS oder #D ist egal, da beide auf der exakt gleichen Technologie aufbauen.

Thema: Dokumentation erstellen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ein Problem von ndoc ist allerdings, dass die Entwicklung eingestellt wurde. Sehr schade wie ich finde. Jemand hat versucht das Projekt weiter zu führen:http://sourceforge.net/projects/ndoc05
Alternativ kannst du auch Doxygen benutzen. Akzeptiert inzwischen auch C# Dokumentationstags (Wenn auch nicht vollständig).

Thema: Suche Crossplattform GUI-Framework
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Für GTK Anwendungen wir meist Glade verwendet um die Gui zu basteln. Wenn du das GTK SDK installiert hast, dann sollte das Programm eigentlich mit dabei sein. Bei GTK werden Benutzeroberflächen mit Hilfe von Xml beschrieben.
Hier gibt's ne nette Demo wie man mit Glade Gui-Anwendungen baut und mit C# verknüpft: http://nat.org/demos/gtksharp.html

Thema: C++ wrappen?
Am im Forum: Rund um die Programmierung

C++ Klassen kann man am besten damit wrappen:http://www.swig.org/

Thema: Defragmentieren in .NET
Am im Forum: Rund um die Programmierung

@ikaros
Nein, geht nicht. Siehe mein Post oben.

Thema: erste test mit SourceSave 2005 :-(
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

http://ankhsvn.tigris.org/

Thema: Defragmentieren in .NET
Am im Forum: Rund um die Programmierung

@svenson
Ich glaube du liegst da ein bissl falsch. Der Dateisystem-Treiber sorgt dafür, dass nach einem FILE_MOVE Kommando per DeviceIoControl, das Dateisystem immer in einem konsistenten Zustand bleibt. Schließlich werden nur Cluster verschoben und die Verküpfungsinformationen werden dabei automatisch angepasst.
Hier ein interessanter Artikel dazu (Nutzt die Nt-API direkt):http://www.rheumanet.org/Uploads/content/m1/k2/k21/doc/20204120.pdf

Es dürfte also relativ einfach sein eigene Defrag-Tools zu schreiben. Zumindest wünsche ich ec-hasslau.de viel Erfolg dabei ;-)

Thema: Vertragsmodell und Unit Tests in .Net
Am im Forum: Rund um die Programmierung

Leider nicht jede Version. Baumbert würde wohl kaum fragen, wenn sein VS dieses Feature unterstützen würde

Thema: Vertragsmodell und Unit Tests in .Net
Am im Forum: Rund um die Programmierung

Ein Debug.Assert() wird wohl kaum testgetriebene Entwicklung ersetzen können
Schau mal im Netz nach csUnit. Sollte VS 2005 Unterstützung haben.

Thema: EDI (EDIFACT) Parser mit C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hier hat jemand schon mal was dazu gemacht:http://www.codeproject.com/csharp/edix.asp
Vielleicht ganz nützlich.

Thema: Meine Applikation in Zahlen mit Visual Studo 2005
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Vil ist ebenfalls ein Tool um Sourcecode zu analysieren. Es beinhaltet fast alle wichtigen Code-Metriken (LOC, abstractness, instability, cyclomatic complexity). Allerdings läuft Vil nicht auf Source-Ebene, sondern arbeitet direkt mit IL-Code:http://www.1bot.com/

Thema: Generic.SortedList - Frage
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Für die SortedList implementiert man am besten ein IComparer oder IComparable Interface. Und warum kaskadierst du die if-Bedingungen in der Vergleichsmethode nicht? Das sollte IMHO besser gehen:

public int CompareTo(myType other)
{
    if (this.val1 < other.val1)
        return -1;
    else if (this.val1 > other.val1)
        return 1;
    else
        if (this.val2 < other.val2)
            return -1;
        else if (this.val2 > other.val2)
            return 1;
        else
           // ... für alle Werte bis val5 
              if (this.val5 < other.val5)
                  return -1;
              else  if (this.val5 > other.val5)
                  return 1;
              else
                  return 0; // alle sind gleich

        }

Thema: SharpDevelop
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich selbst nutze auch SharpDevelop. Eigentlich bin ich sehr zufrieden mit der IDE.
Schön ist die Integration von Boo, NUnit und das Refactoring. Die nächste Version (2.1) soll auch FxCop und Subversion unterstützen.
Allerdings gibt's auch einige eklatante Schwächen. Am meisten stört mich ein Memory-Leak, dass bei häufigem Layoutwechsel im Debug-Modus auftritt. Dabei werden mehrere hundert Megabyte virtueller Speicher belegt und ein Geisterprozess bleibt übrig, den man nur im Taskmanager abschießen kann. Hoffe mal die Jungs bekommen das noch in den Griff.
Aber trotzdem. #D ist zur Zeit eine der besten freien IDEs die man überhaupt bekommen kann.

Thema: Livestreams: Reflector
Am im Forum: Web-Technologien

Jep, würde sagen das ist ein Port. Laut den Konventionen für URLs werden Ports am Ende mit einem Doppelpunkt abgegrenzt. Macht man ja beispielsweise bei http auch so, wenn man keinen Standardport verwendet
Was ein Reflector im Sinne von LiveStreams ist, kann ich dir aber leider auch nicht sagen

Thema: MS PowerShell Cmdlet
Am im Forum: Rund um die Programmierung

Zufälligerweise hab ich mich heute auch damit beschäftigt, wie man eigene Snapins bastelt und in die PowerShell integriert. Der installutil Aufruf und die zusätzlichen Snapin-Registrierung ist aber leider etwas fummelig. (Cmdlets muss man aber nicht unbedingt in C# schreiben, dass geht auch mit der Shell selbst.)

Insgesammt ist die PS aber ne geniale Sache. Objektorientierte Pipelines sind ein klarer Fortschritt gegenüber alten Zeichenkettenströmen. Will man spezielle Informationen aus der Pipeline eines anderen Programms lesen, so musste man früher erst mit awk, grep und Co. den Stream durchsuchen. Durch die Objektorientierung bekommt man auch gleichzeitig die "Semantik" des Datenstroms mitgeliefert.

Aber nicht nur die Pipeline ist Objektorientiert, sondern auch die Shell-Variablen werden auf die Typen des .NET Frameworks abgebildet. Wenn man beispielsweise folgendes eintippt:

 PS> $hallo = "Ich bin ein String."
 PS> $hallo | get-member | %{"{0,20} : {1,-20}" -f $_.name $_.membertype.tostring()}
bekommt man die internen Member der String-Klasse zurück. (Man beachte auch den Format-Syntax, der identsch zu Console.WriteLine() ist)

Mal sehen, wie das Ganze in Zukunft angenommen wird, denn die Shell ist nicht nur wesentlich mächtiger als die alte cmd.exe, sondern auch deutlich komplexer geworden. Eine gewisse Einarbeitungszeit ist also notwendig.
Fazit: Wieder ein schönes, neues und nützliches Spielzeug für Admins und Programmierer

Thema: usb daten senden?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hier gibt's ne USB-Bibliothek für .NET:http://www.icsharpcode.net/opensource/sharpusblib/

Thema: Freeware oder doch lieber Löhnware installer?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat
Original von Robert G
WiX ist ziemlich nett und sehr mächtig.
btw: Schonmal was von WiX-Vorlagen gehört?
Mag sein. Mir ist Wix aber teilweise zu "over-engineered".
Zitat
Die basieren aber nicht auf MSI.
Ist mir klar. Er hat aber auch nicht expliziet eine MSI Lösung gewünscht
Zitat
Mir ist noch kein Non-MSI-Installer unter die Augen gekommen, der sich selbst mit einem popeligen, StiNo VS-Setup messen könnte...
Mich würde mal interessieren was ein "StiNo-Klick-und-Weg-Installer" aus VS so viel besser macht als InnoSetup oder NSIS. Behaupte mal, dass man für über 90% aller Installationszenarien mit Non-MSI Lösungen sehr gute Installationen durchführen kann. Außerdem fährt MS - was Deployment angeht - teilweise auch selbst recht chaotische Wege. Wie oft da schon etwas "Neues" erfunden wurde ... Setup-API, Lz-API, MSI mit Wix, VB-Setups, Click-Once, ClickThrough, XCopy-Deployment ...
Die Hälfte von dem Krempel hat sich selbst überholt oder nur als Buzzword in der Marketingabteilung existiert

@Koskas: Nimm das, was deinen Anforderungen am besten enspricht oder das, was man von dir verlangt - aus welchen Grüden auch immer. Es gibt viel Möglichkeiten Software zu installieren. Musst halt das Optimum zwischen Kosten, Aufwand und Ergebnissen finden und überdies gibt es Wichtigeres als an Installern zu frickeln

Thema: Freeware oder doch lieber Löhnware installer?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Wenn dir das pure Wix zu fummelig ist, dann gibt es auch einen Editor für Wix-Files http://wixedit.sourceforge.net/.
Ansonsten InnoSetup oder NSIS. Wurde im Forum aber schon 1000 mal genannt

Thema: log4net
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du könntest auch einen komplett neuen Appender schreiben, der einfach prüft, ob das Netzwerk down ist oder nicht und dann selektiv wählt in welchen Appender geschrieben wird. Der Vorteil ist, dass du deinen bisherigen Code praktisch nicht ändern musst. IMHO der kompfortabelste Weg.
Im Pseudo-Code (nicht log4net konform):


public class SelectiveUDPOrFileAppender : Appender
{
  UDPAppender udpAppender;
  FileAppender fileAppender;

  public override void Write(string str)
  {
    if(NetworkAvailable)
      udpAppender.Write(str);
    else
      fileAppender.Write(str);
  }
  ...
  private bool NetwortAvailable {...}
}

Thema: Wer kennt dieses Lied -2-
Am im Forum: Smalltalk

@herbivore
*lach*
MyCSharp tries to take over the google index
Herbi for president!

Thema: Jemand Erfahrungen mit Boo oder Nemerle ?
Am im Forum: Rund um die Programmierung

Das du da nichts gefunden hast?

Es gibt dort Links auf Vergleiche von Boo, Ruby, C#, VB:http://www.cse.iitb.ac.in/~kart/writings/Ruby%20vs.%20Boo%20(long).htmlhttp://boo.codehaus.org/Part+01+-+Starting+Out#Part01-StartingOut-ComparingcodebetweenBoo%2CC%23%2CandVB.NEThttp://docs.codehaus.org/display/BOO/Differences+with+Csharphttp://boo.codehaus.org/Gotchas+for+Python+Usershttp://boo.codehaus.org/Differences+with+Csharp

Sogar Benchmarks gibt es:http://docs.codehaus.org/display/BOO/Boo+benchmarks

Meinungen:http://www.atug.com/andypatterns/boo.htmhttp://stevedonovan.blogspot.com/2005/05/boo-programming-language.html

Oder einfach kurz das Boo-Wikihttp://docs.codehaus.org/pages/listpages-dirview.action?key=BOO

Ich versteh einfach nicht was du noch wissen willst. Auf der Boo HP findest du eigentlich fast alles

Thema: Jemand Erfahrungen mit Boo oder Nemerle ?
Am im Forum: Rund um die Programmierung

Zitat
Original von e86
Hat jemand noch gute Links zu Infos von Boo ?
Hi wie wärs mit der Homepage von Boo selbst http://boo.codehaus.org/
Da gibts Tutorials und Beispiele. Wie oben schon gesagt ist Boo in #Dev 2.0 integriert.