cloidnerux hat geschrieben:Hier kann man 3 Ansätze verfolgen:
* Man Integriert einfach einen Editor in das Programm, folge: Einfaches handeln der Dateien, gute Integration ins gesamt Konzept, Nachteil: Keine vollständige Entwicklungsumgebung, nicht jedermanns Geschmack
* Integration einer Beliebigen IDE in Unser Programm, indem wir z.B unter Windows den hdc auf ein Frame unseres Programms Legen.
Vorteil: Beliebige IDE, vergleichsweise wenig Aufwand, Nachteil: Komplizierte Einbindung ins gesamt Konzept, erfordert eine Präselektion durch den lernenden
* Externe IDE, Vorteil: Wirklich freie Wal, kaum Aufwand zum Implementieren, Nachteil: Schwierig Dateien und Projekte zu Handeln, sehr schwierige Integration ins gesamt Konzept
Hierbei würde ich ganz klar den letzteren Weg wählen.
Den Nachteil, den du hier angibst, kann man nämlich komplett umgehen.
Dazu ist Aufwand im Sinne der Implementierung von unserer Seite aus aber in Kauf zu nehmen (wenn wir keinen Aufwand haben dann wär's doch langweilig

)
Du kannst dem Nutzer freie Wahl lassen.
Was dann nur vom Programm, dass die Aufgaben "verteilt" übernommen werden muss ist folgendes:
Es muss es dem Nutzer ermöglichen, möglichst mit einem Klick (egal welchen Weg er wählt) nach Kompilierung (lokal wird wirklich besser sein, PABS macht das online, um Betrug zu verhindern, was hier ja kein Ziel darstellt) das Programm zu testen (und zu validieren)

Wie das gemacht wird hängt stark davon ab, in welcher Form das Verteilprogramm die Aufgaben vorgibt.
Einfachste Implementierung (und meiner Ansicht nach die Beste ... frei nach KISS):
Das Programm stellt dem User eine Datenbank mit versch Aufgaben, bewertet nach Schwierigkeit und evtl Kategorie (= Arbeiten mit Dateien, GUI, etc) zur Verfügung. Diese Datenbank sollte natürlich möglichst online gehalten werden, so dass der User bei Bedarf die entsprechenden Aufgaben laden kann und sie dann bearbeiten kann. Außerdem sollte die Datenbank dann natürlich (durch uns) online erweitert werden, so dass dem Lernenden immer wieder neue Aufgaben zur Verfügung stehen, er jedoch auch sieht, welche Aufgaben er schon bearbeitet hat, und diese dann evtl ausblenden kann o.ä.
Nachdem der Nutzer nun eine Aufgabe heruntergeladen hat und sich dafür entschieden hat, sie zu bearbeiten, bekommt er die Aufgabenstellung dargestellt.
Daraufhin macht er/sie sich auf den Weg, um z.B. in einer IDE oder einfach nur mit Editor die Aufgabe zu absolvieren.
Er kompiliert das Programm, sobald er/sie der Meinung ist, einen ersten Test durchführen zu wollen.
Damit wechselt er wieder zum Verteilerprogramm (das derweil natürlich geschlossen werden kann etc)
Hier wählt er die Aufgabe, die er gerade bearbeitet (auf die er in der GUI natürlich schnell Zugriff haben sollte) aus und betätigt den Knopf "Eine Abgabe einreichen"
Daraufhin wird ein Dateiauswahldialog geöffnet, in dem der Nutzer die ausführbare Datei (sein Programm) auswählt.
Das Verteilprogramm prüft daraufhin anhand des mit der Aufgabe geladenen Eingabe/Ausgabe-Katalogs, ob die richtigen Ausgaben vom Programm produziert werden.
Vorteil dieser Implementierung:
Der Nutzer ist frei in seinem Handeln und an nichts gebunden.
Ein Test des Programms ist sehr einfach und ziemlich direkt durchführbar.
Nachteil dieser Implementierung:
Während der Entstehungsphase wird dem Nutzer kaum geholfen. (Um das zu kompensieren sollte im Verteilprogramm eine ... Liste mit Hinweisen aufgeführt sein, die typische Fragen, die bei der Bearbeitung auftauchen können beantwortet)
Der Nutzer muss wissen, wo sich die ausführbare Datei befindet. Das kann bei erster Benutzung durch aus zu Problemen führen (Abhilfe: Anleitungen zu versch. IDEs, wo diese ihre ausführbaren Programme speichern)
Nachtrag:
Dem Nutzer könnten natürlich auch Vorlagen angeboten werden, in denen die Grundstruktur des Programms schon erstellt ist. Diese sollten dann einfach per Copy&Paste durch den Nutzer verwendbar sein.