Roberts Kolumne

Roberts Kolumne ist eine Kolumne im klassischen Sinne, mit der Möglichkeit, „Leserbriefe“ zu hinterlassen: Definitiv subjektiv, sanft satirisch und gerne auch mal populistisch.

Einträge

Ich nehme alles zurück

Eingestellt am 17. Oktober 2008 um 19:42 Uhr » Forschung und Wissenschaft Wer braucht so etwas? Kommentar Netz-Notizen

… und behaupte das Gegenteil über C# und .Net – Microsoft wäre wirklich nicht Microsoft, wenn sie bei dieser Umgebung nicht noch einen, sondern gleich duzende draufgelegt hätte. Und sie haben einiges draufgelegt: Das Sicherheitskonzept lässt mich ja bekanntlich keine Programme über das Netz mit Zugriff auf den lokalen Computer starten (also weder Dateien noch Geräte), nein sogar auf Programmebene haben sie überraschende Trennwände eingezogen: Alle Elemente/Controls/Objekte einer GUI gehören ausschließlich dem GUI-Thread und andere Threads dürfen nicht darauf zugreifen. Das führt u. a. zu folgendem Standardbeispiel der Sorte „Was ist denn hier los?“

Unerwarteter Zugriffsschutz

Wir basteln uns ein Programm mit grafischer Benutzerfläche und fügen einen seriellen Port als Unterobjekt des Mainforms hinzu. In seinem Eventhandler, der jedesmal aufgerufen wird, wenn der Port Daten empfangen hat, wollen wir diese Daten z. B. in einer Textbox darstellen lassen. Obwohl der serielle Port dem Fenster gehört, läuft der Eventhandler in einem eigenen Thread und darf daher nicht auf die GUI-Elemente zugreifen. Ja, das macht nicht nur bei Programmen, die als eine Art „Server“ an der seriellen Schnittstelle lauschen Spaß, weil sie sofort beim Eintreffen von Daten abstürzen, sondern vor allem die Fehlersuche gestaltet sich ob der „aussagekräftigen Fehlermeldung“ sportlich. Anstelle einer kruden Meldung sollte der Microsoft-Compiler vielleicht einfach nur den Namen der Exception und die passende Manualseite ausgeben.

Apropos aussagekräftige Fehlermeldung: Wer errät, was der Compiler mit einer „Überlast“ meint? Tipps bitte in die Kommentare, wer richtig rät, gewinnt!

Nichts zu tun?

Mit meinem vorletzten Punkt für heute lehne ich mich zwar aus dem Fenster, aber mit Sicherheit nicht sehr weit. Wie weit kann es eigentlich mit der Performance der CIL hersein, wenn „der halbe Programmcode“ aus NOP besteht? Der folgende Screenshot zeigt ein Beispiel, und meine C#-.Net-Programme hatten noch mehr NOP, praktisch in jeder Methode:

Screenshot des Programms IL DASM zum Anzeigen des generierten CIL-Codes, der in diesem Fall einige nops zeigt.

Objekt- und Java-Orientierung

Obwohl die Programmiersprache C# ein „C“ im Namen trägt, sind die Gemeinsamkeiten mit Java und Unterschiede zu C++ nicht zu übersehen. In welcher Programmiersprache ist folgendes Hallo-Name-Programm geschrieben?

using System;

class Hallo {
        static void Main() {
                Console.Write("Name: "); 
                string name = Console.ReadLine();
                Console.WriteLine("Hallo " + name);
        }
}

Ein cooles Feature von C# ist die Objektinstanzierung mit Literalen, also z. B. 23.ToString(), was weder mit C++ noch Java, dafür aber der Mutter Smalltalk möglich ist. Schön wäre es noch, wenn man Arrays und Listen auch mit „einer Form von Literalen“ initialisieren könnte. Weniger cool ist hingegen die Schreibarbeit und das strikte Festhalten an der Objektorientierung:

Hm. Irgendwie schieße ich mir doch lieber in den Fuß, anstatt durch einen pingeligen und fetten Oberaufseher ständig daran gehindert zu werden, „das darfst du nicht.“


Kommentare

Dein Kommentar

… wird moderiert

Wie benutze ich BBcode?


 

. Bis auf den Kommentartext sind alle Angaben freiwillig, neben dem Zeitpunkt des Kommentars werden keine weitere Daten gespeichert. Weitere Informationen findest du in der Datenschutzerklärung.

Informationen

XML - Fullpost XML - Summary RSS 2.0 - Kommentare
↪ Aktuelles von dieser Seite per RSS Feed. Mehr darüber erfahren Sie auf der Seite von Alp Uçkan.