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.

15

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

0

Wie programmiere ich serverseitige Programme?

Nehmen wir als Beispiel, dass ein Gewinnspiel läuft, bei welchem sich die Teilnehmer einschreiben können und dafür eine Stunde Zeit haben. Nach dieser Stunde soll ein zufälliger Datenbankeintrag als Gewinner ausgewählt werden (z.B. indem dieser in eine extra "gewinner" Tabelle als einzigster Satz eingetragen wird etc.). Aber dieses Auswerten, kann mit PHP ja nur passieren, wenn ein Nutzer nach Ablauf der Zeit die Seite lädt. Also brauche ich ein Programm auf dem Server, der das übernimmt, wenn die Zeit abgelaufen ist. Kann man sowas auch in PHP schreiben (ich glaube nicht)? Oder benutzt man dazu Java, - oder was ganz anderes?!

(Ich brauche keinen Code - sondern nur einen Lösungsvorschlag!😉 )

LG Bamba675

...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

Frage zu einem C# Programm mit User input?

Hallo liebe Community :-)!
Ich wollte ein C# Programm schreiben, welches ein Array erstellt.
Nun soll die Größe dieses Arrays vom User bestimmt werden.

 int eingabe;

      Console.Write("Geben Sie die Größe der Matrix an: ");

      try

      {

 eingabe = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Ihre Zahl lautet " + eingabe);

      }

      catch

      {

        Console.WriteLine("Bitte geben Sie eine Zahl ein");

      }

      Console.ReadLine();

Das wäre bis jetzt mein "Code". Nur weiß ich nicht wie man die Eingabe abspeichert um mit dieser dann das Array zu erstellen.
Ich verlange kein fertiges Programm, nur paar Tipps und Verbesserungsvorschläge :-)

...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

C#, WhatsApp API?

Guten Tag,

In meinem Team Chat habe ich ein paar Leute die rum spammen. Also würde ich gerne eine KI erstellen, welche Leute die zu viele Nachrichten schreiben, aus der Gruppe entfernt und nach einer Stunde wieder hinzufügt.

Dazu wäre doch ein kleiner Bot mit dem man Chatten kann wenn man will doch auch ganz cool, aber das muss ich mir noch genauer überlegen.

Erstmals hab ich folgenden Code, um sich zu verbinden und dann eine Nachricht zu schreiben:

static void Main(string[] args)
        {
            Console.WriteLine("KI gestartet...");
            string Number = "";             string PW = "**";
            WhatsApp login = new WhatsApp(Number,PW ,"Agiger03 (KI)", false, false);
            login.OnConnectSuccess += () =>
            {
                Console.WriteLine("Verbunden...");
                login.OnLoginSuccess += (phonenumber, data) =>
                {
                    Console.WriteLine("Angemeldet...");
                    Thread.Sleep(3000);
                    sendMessage("KI verbunden...");
                };
                login.OnLoginFailed += (data) =>
                {
                    Console.WriteLine("Konnte sich nicht anmelden: " + data);
                };
            };
            login.OnConnectFailed += (Exceptopn) =>
            {
                Console.WriteLine("Konnte sich nicht verbinden: " + Exceptopn);
            };
        }

        static void sendMessage(string MSG)         {             Console.WriteLine("KI gestartet...");             string Number = "";             string PW = "**";             string Gruppe = "Giger-Netzwerk - Team";             WhatsApp nachricht = new WhatsApp(Number, PW, "Agiger03 (KI)", false, false);             nachricht.OnConnectSuccess += () =>             {                 Console.WriteLine("Verbunden...");                 nachricht.OnLoginSuccess += (phonenumber, data) =>                 {                     Console.WriteLine("Angemeldet...");                     Thread.Sleep(3000);                     nachricht.SendMessage(Gruppe, MSG);                 };                 nachricht.OnLoginFailed += (data) =>                 {                     Console.WriteLine("Konnte sich nicht anmelden: " + data);                 };

            };
            nachricht.OnConnectFailed += (Exceptopn) =>
            {
                Console.WriteLine("Konnte sich nicht verbinden: " + Exceptopn);
            };
        }

Nach dem starten schliesst sich die Konsolenanwendung direkt wieder ohne Fehlercode.

Wahrscheinlich ist der Fehler voll offensichtlich und ich bin wiedermal zu blöd ;)

...zur Frage

Was möchtest Du wissen?