Ja, mit Turing könnte man es beweisen.
Nicht primitiv rekursive Funktionen sind Turingvollständing und While-Berechenbare Funktionen sind ebenfalls Turingvollständig. Die Beweise dafür findet man eigentlich in jedem Buch zur theoretischen Informatik.
Somit kann ich jede rekursiv berechenbare Funktion iterativ formulieren und umgekehrt, weil beide die gleiche Menge von berechenbaren Funktionen abdecken.
Was heißt kompliziert. SWIG generiert automatisch Wrapper für beliebige Zielsprachen und ist damit sicher einfacher zu nutzen, als alles von Hand zu wrappen.
Schon mal daran gedacht, es selbst zu schreiben? IMHO wirst du so ein Control schwer finden.
Wenn es eine interakive Messdatenvisualisierung in 3D sein soll, dann denke ich fast immer automatisch an OpenGL.
Bei Mono findest du C# Bindings für OpenGL, Glut, usw.:
Die Benutzung ist relativ einfach. Beispiele sind auch enthalten. (Eventuell muss du noch die dlls aus dem win32deps Verzeichnis zu den Beispielen kopieren, damit alle Demos laufen)
Gute Frage. Ich selbst habe mit den neuen Spracherweiterungen noch nichts gemacht, würde aber sagen, dass du in diesem Fall den Typ xyz explizit definieren musst - also keine anonymen Typen verwenden kannst.
Das Ergebnis, das die from ... - Klausel zurückgibt, implementiert auf jeden Fall eine IEnumrable Schnittstelle. (Soweit ich weiß)
Ich würde es dann wohl so implementieren (mit Object Initializers):
struct MyType {
int id;
public int Id { get{return id;} set {id = value;} }
}
var myVar = from ... select new MyType { Id = ... } // object initializer
MyMethod(myVar);
void MyMethod(IEnumerable<MyType> param)
{
...
}
Wie gesagt, ich habe die Sache noch nicht getestet... Ausprobieren
You can have a look at the latest Sharpdevelop source code. They provide a nice Form Editor where you can resize buttons, pannels, textboxes, ...
Here you can get the latest sources: http://build.sharpdevelop.net/BuildArtefacts/
Wann genau aufgräumt wird, kann man nicht vorhersagen aber ein Generation 0 Garbage Collect braucht im Schnitt weniger als 1 Millisekunde. Wenn du Probleme mit der Speicherauslastung hast, wäre es vielleicht mal an der Zeit zu überlegen ob deinen Auslesealgorithmus nicht etwas optimiert (sprich intelligenter) gemachen werden könnte.
Sicherheitsprobleme hätte ich bei einem Registryeintrag auch. Oder kann man dort Benutzerrechte vergeben?
Es gibt im wesentlichen zwei Schlüssel die relevat sind: HKEY_LOCAL_MACHINE und HKEY_CURRENT_USER.
Benutzer mit eingeschränktem Konto können nur HKEY_CURRENT_USER lesen und schreiben. Der Andere ist nur für Leute mit Adminrechten. Deshalb sollten auch keine Nutzerspezifischen Sachen in HKEY_LOCAL_MACHINE gespeichert werden.
Zitat
Deshalb enthält bei mir jede Applkikation auch ein Unterverzeichnis "Config", und diesem erlaube ich Schreibrechte für "Jeder".
Könnte man machen, nur leider hast du dann aber keine klare Trennung zwischen verschiedenen Nutzerprofilen.
Das könnte in besonderen Fällen auch zu Sicherheitsproblemen führen. Mal ein paranoides Szenario :
Stell dir vor, in deinen Config-Files kann man bestimmte PlugIns festlegen, die beim Start deiner Anwenung geladen werden sollen. Ein Angreifer bräuchte jetzt nur noch ein Gastkonto um deinen Rechner zu kompromitieren. Er schreibt einfach ein neues PlugIn, welches einen Keylogger, Trojaner oder anderen Backdoor startet und trägt es einfach in deine Config ein (ist ja für jeden les- und schreibbar).
Für die meiste Wald- und Wiesen-Software ist sowas natürlich kaum relevat, aber für Software in einem bestimmten Umfeld ist sowas todlich ...
Wie herbivore schon sagt: keiner käme auf die Idee, ein DirectX Spiel zu programmieren und dann darauf zu bestehen, das keine DirectX Runtime vorinstalliert sein muss.
Da finde ich es witzig, dass gerade viele Gamer immer die neuste DirectX Version installieren, aber sich dann streuben das läppische und deutlich kleinere! .NET Framework zu installieren.
Übrigens: Die .NET Runtime ist heute auf fast jeder Computerzeitschriften-CD zu finden. Mitliefern, musst du da eigentlich nichts.
Also MonoDevelop gibt es definitiv nicht für Windows und die Entwickler haben zur Zeit auch scheinbar kein Interesse es zu portieren (Es liegt an einigen GTK Komponenten, die noch nicht auf Windows laufen).
SharpDevelop 2.0 sieht wirklich vielversprechend aus, ist aber leider - für meinen Geschmack - noch etwas zu instabil.
@Ganry
Warum fragst du nicht die Sharpdevelop-Entwickler, ob du nicht eine bessere Monounterstützung für #D entwickeln willst, dann brauchst du nicht gleich ne neue IDE programmieren ?
Wenn man schon mal versucht hat ein COM-Objekt in C++ zu schreiben, dann ist das oft mit ziemlich viel Aufwand verbunden. Außerdem müssem COM Objekte korrekt bei der Installation registriert werden.
Sie erzeugen automatisch mit Perl einen Wrapper für C#.
Aber ich glaube nicht, dass du selbst so einen Generator bauen willst. Vorallem wenn man die vielen syntaktischen Besonderheiten von C++ berücksichtigen muss.
Das Problem ist, dass im C++ Standard nie festgelegt wurde, wie Klasseninformationen in Biblitheken abgelegt werden. Damit ist es fast unmöglich C++ Klassen in andere Programmiersprache einzubinden. Jeder Compiler-Hersteller kocht hier eigenes Süppchen.
Die Wahrscheinlichkeit ist aber hoch, dass eine Neuimplementierung deiner Bibliothek mit einem Bruchteil des ursprünglichen Codes auskommt.
Darf ich fragen was die Bibliothek eigentlich genau macht - natürlich nur, wenn es kein Geheimnis ist ?
Die Leute hier können dir sicher Hinweise geben, wie du die Funktionalität schnell nachbauen kannst.
Wenn die Schnittstelle zur Bibliothek nicht sehr groß ist (2-3 Klassen mit wenigen Methoden), dann ist wrappen mit C vielleicht sinnvoller. Vorallem musst du die C++ Bibliothek nicht nach managed C++ ändern.
Find ich auch. Warum alles nochmal neu machen. Die Wikipedia hat die nötige Infrastruktur und überdies könnte man auch Leute motivieren, Korrekturen und Erweiterungen zu machen, die nichts mit mycsharp zu tun haben.
Es gibt zur Zeit 2 C# Bücher auf WikiBooks. Warum nicht beide vereinheitlichen und zusammenfassen. Das wäre IMHO produktiver.
Wenn jeder sein eigenes schreibt, hat man am Ende 10 unvollständige C# Bücher, mit denen ein Einsteiger nichts anfangen kann.
Das frag ich mich auch ...
Spaß beiseite. An meiner Uni wurde noch nie "richtig" C++ gelehrt. Höchstens ein paar Java-Grundkenntnisse bei der Softwaretechnik und im Praktikum.
Bei uns ist es sogar so, dass die Wahrscheinlichkeit, mit C# in Berührung zu kommen deutlich höher ist als mit C++. Alle praktischen Übungen in der Computergrafik werden bei uns mit C# bearbeitet.
Hätteste nicht gedacht, oder ?
Das ist ein bissl was anderes. Hier geht es um die Abbildung von Klassen auf Entities und Relationen. XPO ist keine Spracherweiterung und braucht ne menge Hilfskonstrukte um ähnliche Dinge wie C# 3.0 zu machen.
Was Anders in C# integrieren will, ist ne echte Erweiterung der Sprache um beliebige Daten (Collections, XML-Files, ...) wie Datenbanken abzufragen.
Dazu benötigt LINQ, zusätzliche Erweiterungen wie Lamba-Ausdrücke, Anonyme Typen und Auto-Variablen. XPO kann das z.B schon mal nicht (eben weil es keine Spracherweiterung ist).
Ich häng in diesem MCI Kram nicht so tief drinn, aber es kann an ein deinem geöffnetem Gerät liegen. Nicht alle Geräte unterstützen alle Zeitformate.
CD-Devices haben üblicherweise das Format Track:Minute:Second:Millisecond.