C# sich selbst Source Code schreiben lassen. Geht das?

5 Antworten

Erstens sollten wir nicht von einer speziellen Sprache reden, sondern von einer Programmiertechnik, denn alle guten Sprachen können vieles...  

Wenn Du nur die Ausgabe verändern möchtest, reicht eine Funktion, die den Informationsweg von Input nach Output verändert.

Wenn schon bei der Eingabe was berichtigt werden soll, gibt es 2 Techniken: 

a) Vorschlagfeld (google schlägt z.B. oft gesuchte Begriffe vor)  

b) Tastaturbotschaften: wenn "falsch definierte Texte" erkannt werden, kann man Tastaturbotschaften an das Eingabefeld schicken (so als wenn jemand Tasten drückt) und noch vor Eingabe von ENTER berichtigen.

"sich selbst Code schreiben" gibt es 2 Wege:

- offline: Programm erzeugt passiven Code in Form einer Datei, welcher erst noch übersetzt und gestartet werden muss  

- online: Programme können eigenen Interpreter haben und selbst erzeugte Strings in Befehle wandeln, die sofort ausgeführt werden

Zu DOS-Zeiten (oder Profi-Virus-Programmierer) können auch Programme (also den Maschinen-Code) selbst verändern. Gute neue Betriebssysteme verhindern/verbieten jedoch eine Vermischung von Datencode und Befehlscode.

Noch was zu c#: das ist eine Interpretersprache! Da wird ein gewünschter Befehl an Microsofts Interpreter (.NET) geschickt -> und der entscheidet zur Laufzeit, was zur CPU gelangt! Für superschnelle oder hardware nahe Programme nicht geeignet.

Wieso schreibt das Programm selbst Sourcecode? Du arbeitest ja nur mit persistenten Daten (Dateien/Datenbank/Registry/whatever)

Was du meinst ist eine sich selbst weiter entwickelnde künstliche Intelligenz - da arbeiten andere mit einem anderen Budget dran.

Ich denke, du hast falsche Vorstellungen davon, wie eine sprachliche Fehlererkennung funktioniert.

Wenn ich dir ein "halol" schreibe - woran erkennst du dann, dass das falsch geschrieben ist? Woher weisst du, dass es (wahrscheinlich) "hallo" heissen soll? Der Vorgang ist sehr viel komplexer, als du dir das momentan wohl vorstellst.

Zur Erkennung des Fehlers in "halol" müssen u.a. folgende Dinge gegeben sein:

  • Du musst erkennen, dass es sich um Deutsch handelt.
  • Da das Wort am Anfang einer Unterhaltung stattfindet, kannst du vermuten, dass es sich um eine Begrüßungsfloskel handeln soll.
  • Unter allen Begrüßungsfloskeln, die du kennst, befindet sich auch das Wort "hallo".
  • Du weisst, dass ich das Wort mittels technischer Hilfsmittel (Tastatur oder Diktat via Handy etc.) eingegeben habe und auch dabei Fehler passieren können.

Dein Hirn vollbringt eine Riesenleistung, indem es in Sekundenbruchteilen erkennt, dass die Buchstaben des falsch geschriebenen Wortes mit den Buchstaben des von dir gemerkten Wortes übereinstimmen, lediglich ein Buchstabendreher vorkommt, dieser daher stammen kann, dass das Wort getippt wurde und auch der Kontext (Begrüßung) der richtige ist.

Nur mit einem simplen Listen- oder Buchstabenvergleich kommst du auf Dauer nicht weit.

Das selbstständige Erweitern eines Sources (von Lernfähigkeit eines Programms väöllig abgesehen) ist noch kniffliger. Denn irgendwoher muss das (dann sich selbst erweiternde Programm) ja erkennen, was du willst. Und solange Dankenlesen auf technischer Ebene nicht gegeben ist, wird das nicht laufen.

Woher soll das Programm wissen, dass "halol" zu "hallo" umgewandelt werden soll?

Sollte es nicht "hola" (Spanisch für "Hallo") heissen?
Oder vielleicht "halo" (Computerspiel oder englisches Wort)?
Oder bastelst du gerade eine eigene Phantasiesprache (z.B. für ein Computerspiel so wie Dovahzuul in Skyrim) und das Wort ist richtig geschrieben?

Alleine bei einem einfachen und relativ simplen Wort wie "hallo" bedarf es bereits eines sehr hohen Aufwands und einer Menge Hintergrundwissen, um erkennen zu können, ob es richtig oder falsch geschrieben ist. Der Sourcecode eines Programm ist ungleich komplizierter und länger und einem Programm "beizubringen", sich selbst zu erweitern ist nicht ein "bißchen" komplizierter, sondern so viel mehr komplizierter, dass es ganze Wissenschaftszweige gibt, die sich damit beschäftigen.

Das war auch lediglich ein Beispiel.........

0

Wie komm ich beim ASCII Code direkt von Z zu A?

Guten Tag,

ich habe folgende Aufgabe:

"Eine einfache und alte Verschlüsselungmethode für Texte ist die Caesar-Verschlüsselung. Ausgangspunkt ist ein Buchstabe b und ein Schlüssel k ∈ N. Das Verfahren arbeitet so, dass der Buchstabe durch den Buchstaben ersetzt wird, der k Buchstaben weiter im Alphabet erscheint. Dabei ist zu beachten, dass beim “Hinauslaufen“ über Z mit A weiter gezählt wird. Der nächste Buchstabe nach Z ist also A. Beispiel: b = H und k = 1 ergibt als Ergebnis I. Schreiben Sie ein Java-Programm Caesar, das für einen Schlüssel k mit k ∈ N (also z.B. k = 100) und einen Großbuchstaben b den verschlüsselten Großbuchstaben auf dem Bildschirm ausgibt. Die beiden Argumente werden über die Tastatur dem Programm übergeben, zuerst der Schlüssel k in einer Zeile und anschließend der Buchstabe b in einer Zeile. Die Ausgabe besteht nur aus dem kodierten Resultatbuchstaben zu Beginn der Ausgabezeile gefolgt von einem Zeilenumbruch. Beispiel: Für die Eingabe 5 X ist die Ausgabe C Überlegen Sie sich, wie Sie mit den Hilfmitteln, die bis jetzt bekannt sind, das “Hinauslaufen“ geeignet behandeln können. Nutzen Sie Eigenschaften der Zeichencodierung aus sowie geeignete arithmetische Operationen. Wie könnte die Dekodierung funktionieren? Hinweise: Modulo-Operation, Zeichen - ’A’, Typumwandlung zwischen int und char."

Ich bin schon so weit, dass der Buchstabe sich ändert je nachdem wie die Zahl ist. Aber ich habe noch das Problem, dass ich nicht weiß wie ich das "Hinauslaufen" programmieren kann. Kann mir da jemand helfen?

Vielen Dank im Voraus und freundliche Grüße, Lebenne.

...zur Frage

Wie erstelle ich eine Datei im .g3a Format?

Hallo ich habe einen Grafiktaschenrechner (Casio fx-CG20) und möchte selber Spiele für ihn entwickeln doch ich kenne kein Programm was ein C/C++ Source Code umwandelt könntet ihr mir weiter helfen?

...zur Frage

Ein Fehler im Programmcode! Kann mir jemand helfen?

Hallo :) Ich habe vor einigen Tagen begonnen, mich der Programmiersprache "C#" zu widmen. Dazu nutze ich das Buch "Schrödinger programmiert C#". Momentan befasse ich mich mit dem booleschem Ausdruck und den If- Anweisungen. Im Buch sind diesbezüglich vorgeschriebene Codes vorhanden, die man einfach in "Visual Studio" abtragen kann, um mit ihnen weiterzuarbeiten. Der vorgegebene Code funktioniert allerdings nicht. Ich poste diesen mal:

(vom Programm vorgegeben:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;)

namespace ConsoleApp6

{

class Program

{
    static void Main(string[] args)
    {
        Console.WriteLine("Freundin da? (true/false):");
        bool freundinDa = bool.Parse(Console.ReadLine());
            if (freundinDa == true)
        {
            Console.WriteLine("Kanal auf dem Titanic läuft:");
            int kanal = int.Parse(Console.ReadLine());
            Console.WriteLine("Heute sehen wir Titanic. Kanal: " + kanal);
        }
            else
        {
            Console.WriteLine("Horror (true) oder Action (false)?");
            bool horror = bool.Parse(Console.ReadLine());
            if (horror)
                Console.WriteLine("Heute wird es gruselig!");
            else
            {
                Console.WriteLine("Actionfilme sind auch nice!");
            }
        }
        Console.ReadKey();
    }       
}

}

Die Zeile " bool freundinDa = bool.Parse(Console.ReadLine()); " ist anscheinend fehlerhaft... Zumindest zeigt Visual Studio dies an.

Kann mir jemand helfen? Habe ich einfach einen Schreibfehler? Ich bin wie gesagt noch Anfänger und obwohl ich schon das Internet durchkämmt habe, konnte ich nichts Hilfreiches finden :( Auch muss ich zugeben, dass ich nichts mit diesem ".Parse"- Befehl anfangen kann, da er nicht im Vorfeld des Buches erklärt wurde.

Ich bin über jede Idee und helfende Hand dankbar, da ich eigentlich gern weitermachen würde. Der vorherige Stoff ging regelrecht "runter wie Öl" und es hat auch Spaß gemacht, aber momentan komme ich so nicht voran.

In diesem Sinne: Schon einmal Console.WriteLine ("Danke im Voraus!");

:D

...zur Frage

Warum funktioniert es nicht Variablen bei PHP zu übergeben?

Hallo, auf der ersten PHP-Seite habe ich ein Formular welches nachdem man Submit gedrückt hat dir eine Html-Email schickt, wo auch der Name usw. drin steht den man bei dem Formular eingegeben hat. Das steht in der HTML email: (wen man auf "hier" drückt sollen die Daten die man im Fromular angegeben hat auf einer anderen Seite in eine .txt-Datei geschrieben werden)

<form method=\"get\" action=\"link \"> <input type=\"hidden\" value=\"$email\" name=\"email\" /> 
<input type=\"hidden\" value=\"$vname\" name=\"vname\" /> 
<input type=\"hidden\" value=\"$nname\" name=\"nname\" />
 <input type=\"hidden\" value=\"$code\" name=\"code\" /> 
<input type=\"hidden\" value=\"$geschlecht\" name=\"geschlecht\" />
 <input type=\"submit\" value=\"Hier\" /> 

auf der 2. Seite steht das:

$nr = date('sihdmY');
$mail = $_GET['email'];
 $vorn = $_GET['vname'];
 $gender = $_GET['geschlecht']; 
$nachn = $_GET['nname'];
$handle = fopen ( "speicher.txt", "a" );
 fwrite ( $handle, $mail );
 fwrite ( $handle, " | " );
 fwrite ( $handle, $gender ); 
fwrite ( $handle, " | " );
 fwrite ( $handle, $vorn ); fwrite ( $handle, " | " ); 
fwrite ( $handle, $nachn ); 
fwrite ( $handle, " || " );
 fwrite ( $handle, $nr );
 fwrite ( $handle, "\r\n");
 fclose ( $handle );
echo "Danke.";

exit;

Was ist das Problem? In die Text datei wird nur die Zahl von $nr reingeschrieben. Kann mir da jemand helfen? Danke im Voraus.

...zur Frage

VB.NET Befehle senden und empfangen

Hey Leute, ich bin totaler Anfänger und habe noch nie etwas, was mit Internet zu tun hat, programmiert! Mein Problem ist, ich will, dass sich mein Programm mit einer anderen Kopie von meinem Programm "austauscht". So, dass ich zum Beispiel Befehle (Label1.Text = "") (oder gar ganze Subs) einfach übers Internet versenden kann. Blöderweise, komme ich nicht weiter, ich habe es erst über Hamachi versucht, habs aber dann abgebrochen.

Kann mir jemand helfen?

LG Felio110

...zur Frage

PHP: Formularinhalte vom mehreren Benutzen in .txt Dateien speichern?

Hallo,

Ich will das die eingegebenen Formular-Daten in ein .txt Dokument eingeschrieben werden. Dies klappt auch, aber wenn ich neue Infos eingebe, werden die von davor überschrieben.

Also wenn ich eine Seite für 'ne Party z.B. erstelle und sich jeder eintragen soll, werden die Namen jedesmal überschrieben.

Wie kann ich dies ändern, sodass in einem Textdokument mehrere Infos gesammelt werden?

So sieht mein PhP Code aus:

<?php

if ( $_GET['email'] <> "" ) {

$handle = fopen ( "speicher.txt", "w" );


fwrite ( $handle, $_GET['email'] );

fwrite ( $handle, "|" );

fwrite ( $handle, $_GET['name'] );

fclose ( $handle );

echo "Danke - Ihre Daten wurden speichert";

exit;

}

?>

...zur Frage

Was möchtest Du wissen?