Also die Antworten schockieren mich ehrlich gesagt ein wenig. Ich weiß ja nicht, wo die anderen Antwortgeber studieren, aber ich habe eine komplett andere Erfahrung gemacht.

Wenn es dir wirklich ernst ist, und du dich auf ein Informatik-Studium vorbereiten willst, dann lernst du C. Mit allen Konzepten, die dazugehören. Pointer, Structs, dynamische Speicherverwaltung, Datenstrukturen,...

Auf vermeintlich "leichtere" Sprachen wie Python umzusteigen ist am Ende kein Ding. Programmiersprachen sind sowieso nur Werkzeuge, die Konzepte sind es, die man verstehen muss. Und C beinhaltet eben genau diese grundlegenden, elementar wichtigen Grundlagen, die man braucht, um späte zu verstehen, wie die höheren Sprachen funktionieren.

-----EDIT-------

Ich hab die Frage unvollständig gelesen. Den (Kampf)Begriff "KI" blendet mein Kopf inzwischen selbstständig aus.

Wenn du in den Bereich neuronale Netzwerke und maschinelles Lernen gehen möchtest, dann ist Python tatsächlich kein schlechter Rat. Wird in dem Bereich jedenfalls viel verwendet, aufgrund der stark abstrahierten Komplexität und dynamischen Typisierung.

Meine Antwort oben bezieht sich auf ein Informatiksturium allgemein.

...zur Antwort

Bevor ich antworte huste ich mal ganz stark. Wenn du darin "Obsidian ist kein RDBMS" hörst, ist das Zufall.

Wenn du unter Linux arbeitest, schau' mal, ob du EIN Skript geschrieben bekommst, das das für dich tut. Dann kannst du das einfach mit Hilfe von cron/crontab täglich laufen lassen (sofern der Computer zur eingestellt e Uhrzeit eingeschaltet und der entsprechende cron-Nutzer angemeldet ist).

Unter Windows müsste ich selbst nachschlagen, aber da wird es bestimmt etwas Vergleichbares geben.

...zur Antwort

Ich fasse das mal so zusammen, dass man das auch versteht (bin selbst Discord Active Developer):

Mit dem Update der API und der Migration zu SlashCommands hat Discord alle Developer verpflichtet, auf SlashCommands umzustellen. (Text commands werden auch von der App recht zuverlässig als solche erkannt und blockiert)

Ein weiteres Tool, welches uns in diesem Kontext zur Verfügung gestellt wurde, sind die sogenannten ContextMenus. Diese erlauben es, bestimmte Funktionen abhängig vom jeweiligen Kontext direkt auszuführen, sind also quasi Shortlinks auf Command-Funktionalitäten.

Das ContextMenu kennt dabei hauptsächlich zwei verschiedene Kontexte: Den MessageContext und den UserContext. Fu kannst also je nachdem, ob der Anwender auf eine Nachricht oder einen Nutzer klickt, unterschiedliche Commands zur Verfügung stellen.

Das Ganze heißt "Apps", weil nicht nur Bots, sondern auch andere Anwendungen die ContextMenu-API-Funktionen nutzen können (beispielsweise können registrierte Spiele hiermit Leute direkt über Discord in eine Ingame-Lobby einladen oder ähnliches).

Wenn du dazu mehr Fragen hast, frag' gern nach, oder schau in die Discord API, da sind die Funktionen so halbwegs gut dokumentiert.

...zur Antwort

Zu a): (Achtung: Ich kann nur eine approximierte amortisierte Laufzeit liefern)

Ich hab einfach mal ein paar Annahmen getroffen:

  1. Ich sage die durchschnittliche Länge eines Wortes sei L.
  2. Ich sage die Anzahl verschiedener (einzigartiger) Wörter ist u.
  3. Ich approximiere, dass alle Wörter gleich oft vorkommen, ich also n/u Mal an eine LinkedList anhängen muss.

Das bedeutet, ich muss folgende Sachen in Betracht ziehen:

  1. Ich muss alle Wörter einlesen. Laufzeit: 
  2. Ich muss jedes Wort einmal komplett hashen. Laufzeit:
  3. Ich muss approximiert an u Listen jeweils  Mal anhängen, und da es u Listen gibt, sind das 2n, also Laufzeit: 

Das bedeutet, wenn ich das jetzt asymptotisch aufsummiere, komme ich auf eine approximierte Gesamtlaufzeit von Ich übernehme natürlich keine Garantie, dass das eine korrekte Approximation ist, ich habe sehr viele Sachen einfach angenommen, um es nicht unnötig kompliziert zu machen, aber pseudopolynomiell sieht irgendwie richtig aus.

Zu b):

Das dürfte selbst bei meiner recht halbherzigen Laufzeitanalyse trotzdem aus dieser ersichtlich sein, wie man eine Datei erstellt, die WIRKLICH ätzend ist.

Zu c):

Wenn b) ordentlich gemacht wurde, und das Programm verstanden wurde, ist die Antwort hier trivial.

...zur Antwort

Wenn deine Auflösungen tatsächlich stimmen, wird dir nicht viel anderes übrig bleiben.

Ich würde dir allerdings um deinetwillen (und im Sinne dessen, der das Korrekturlesen muss) empfehlen, das in einen Bruch umzuwandeln, sonst kommt da eine relativ hässliche Zahl raus... Als Bruch geht's.

...zur Antwort
Wie kann ich machen, dass OpenAI mich duzt?

Hallo,

wie kann ich bei diesem Code machen, dass mich OpenAI bei allen Fragen, die es mir beantwortet, duzt und nicht siezt?

import pyttsx3
import re
import pyjokes
import speech_recognition as sr
import geocoder
import datetime
import pytz
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder
import openai

openai.api_key = 'sk-...'
model_id = "gpt-4"

engine = pyttsx3.init()


def recognize_speech(recognizer, source):
    print("Sage etwas...")
    audio = recognizer.listen(source, timeout=10)
    try:
        text = recognizer.recognize_google(audio, language="de-DE")
        print("Text: " + text)
        return text
    except sr.UnknownValueError:
        return "not_understood"
    except sr.RequestError as e:
        print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")
        return ""


def openai_request(prompt):
    response = openai.ChatCompletion.create(
        model=model_id,
        messages=[{"role": "user", "content": prompt}],
        max_tokens=150
    )

    api_usage = response['usage']
    print('Total Token consumed: {0}'.format(api_usage['total_tokens']))
    response_text = response.choices[0].message['content']
    prompt += response_text
    return prompt


def speak(text=None):
    if text:
        engine.say(text)
        engine.runAndWait()


def hey_luna_in_q(q):
    return "luna" in q.lower()


def wait_for_wake_word(recognizer, source):
    while True:
        print("Warte auf Wake-Word...")
        audio = recognizer.listen(source)
        try:
            text = recognizer.recognize_google(audio, language="de-DE")
            if hey_luna_in_q(text):
                print("Wake-Word erkannt!")
                return
        except sr.UnknownValueError:
            pass
        except sr.RequestError as e:
            print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")


def get_local_time(location_name):
    try:
        if location_name.lower() == "current location":
            current_location = geocoder.ip('me')
            latitude, longitude = current_location.latlng
        else:
            geolocator = Nominatim(user_agent="voiceAssistant")
            location = geolocator.geocode(location_name)

            if not location:
                return "Ort nicht gefunden"

            latitude = location.latitude
            longitude = location.longitude

        tf = TimezoneFinder()
        timezone = tf.timezone_at(lng=longitude, lat=latitude)

        if timezone:
            local_time = datetime.datetime.now(pytz.timezone(timezone))
            return local_time.strftime("%H:%M")
        else:
            return "Unbekannte Zeitzone"
    except Exception as e:
        print("Fehler beim Abrufen der lokalen Zeit:", e)
        return "Fehler"


def execute():
    recognizer = sr.Recognizer()

    witz_erzählt = False  # Variable, um den Zustand des Witzes zu verfolgen

    with sr.Microphone() as source:
        while True:
            wait_for_wake_word(recognizer, source)
            print("Warte auf Wake-Word...")

            q = recognize_speech(recognizer, source)
            print("Erkannter Text:", q)

            if q == "not_understood":
                speak("Entschuldigung! Das habe ich nicht verstanden.")
                continue

            if "hallo" in q.lower():
                speak("Hallo! Womit kann ich dir behilflich sein?")
                continue

            if "wie geht es dir" in q.lower():
                speak("Mir geht es gut, danke! Wie geht es dir?")
                continue

            if "spät ist es in" in q.lower() or "wieviel uhr ist es in" in q.lower() or "wieviel uhr in" in q.lower() or "zeit in" in q.lower() or "uhrzeit in" in q.lower():
                location_name = q.split("in")[-1].strip()
                print("Extrahierter Ortname:", location_name)
                local_time = get_local_time(location_name)
                print("Lokale Zeit für", location_name, ":", local_time)
                if local_time:
                    speak(f"In {location_name} ist es {local_time}.")
                else:
                    speak(f"Entschuldigung, ich konnte die Zeit für {location_name} nicht finden.")
                continue

            if "spät ist es" in q.lower() or "wieviel uhr" in q.lower() or "zeit in" in q.lower() or "uhrzeit in" in q.lower():
                current_location = geocoder.ip('me')
                latitude, longitude = current_location.latlng
                local_time = get_local_time("current location")
                speak(f"Es ist {local_time}.")
                continue

            if "erzähle mir einen witz" in q.lower() or "erzähl mir einen witz" in q.lower() or "ich möchte einen witz hören" in q.lower():
                joke = pyjokes.get_joke(language='de')
                speak(joke)
                witz_erzählt = True
                continue

            if "ich bin traurig" in q.lower() or "mir geht es nicht gut" in q.lower() or "es geht mir nicht gut" in q.lower() or "mir geht es schlecht" in q.lower():
                if not witz_erzählt:
                    speak("Das tut mir leid zu hören. Ich bin hier für dich, wenn du reden möchtest oder jemanden zum Zuhören brauchst. Soll ich dir zum Aufmuntern einen Witz erzählen?")
                    response = recognize_speech(recognizer, source)
                    if "ja" in response.lower():
                        joke = pyjokes.get_joke(language='de')
                        speak(joke)
                        continue
                    elif "nein" in response.lower():
                        speak("Ok, womit kann ich dir sonst behilflich sein?")
                        continue
                    else:
                        speak("Entschuldigung. Ich habe dich nicht verstanden.")
                        continue

            prompt = q
            response = openai_request(prompt)

            if response.lower().startswith(q.lower()):
                response = response[len(q):].strip()

            speak(response)


if __name__ == '__main__':
    execute()

Freundliche Grüsse

...zur Frage

Zählt vielleicht schon fast als Life Hack, aber...

Englisch.

Da ist die Anrede immer "You", dann kannst du dir aussuchen, wie du das interpretiersn willst... 😅

...zur Antwort

Als Informatiker muss ich leider sagen: Binär hat sich durchgesetzt. Andere Systeme sind nicht wirklich darstellbar, und selbst wenn wir mit trinären oder n-nären Systemen arbeiten, sind die tiefen Repräsentation trotzdem binär...

Das nur, weil mir diese Frage komplett random hingeworfen wurde, und ich nichts besseres zu tun hatte... 😅

...zur Antwort

Unter dem Aspekt, dass diese Daten von einer Systemanwendung kommen, vermute ich, dass da (für dich) garbage drin steht.

Das werden irgendwelche Metadaten sein, die sich Notepad in einem binary Format speichert.

Dass beim Kopieren diese Daten wieder in ASCII übersetzt werden, überrascht mich etwas.

Am einfachsten wird es sein, das (sofern das eine Datei ist, irgendwie must du es ja in VSC geöffnet haben) mal mit einem Hexeditor aufzumachen. Oder direkt ausgeben und woanders reinschieben (pipe auf der Kommandozeile). Ob das Windows-Clipboard dich Binary data kopieren lässt, ohne diese beim Einfügen als ASCII zu interpretieren, ist ein Frage, die uns nur Microsoft beantworten kann.

Je nachdem, was du damit willst, kannst du das aber auch einfach einfügen. Die Bytes bleiben die gleichen, egal ob du es als Hexadezimal siehst oder als Buchstaben - in der Datei steht auf unterster Ebene immer beispielsweise 0110 0101 (65 - 'A').

...zur Antwort

Nein, wäre ja sonst ziemlich sinnlos das Ganze.

Du solltest ihn allerdings auch nicht dorthin stellen, wo der Empfang eh richtig schlecht ist.

Der Sinn ist, dass der Verstärker das Signal empfängt und erweitert. Bei mir steckt auf jeder Etage einer im Flur, und der Router steht im Erdgeschoss. Die Repeater verteilen dann das Signal mit bestmöglicher Stärke auf der jeweiligen Etage.

Mein Tipp also: Irgendwo anstecken, wo das Signal noch brauchbar ist.

...zur Antwort

Insgesamt nicht zu kompliziert. Ich gebe dir ein paar Tipps, aber keine Lösung.

In einer Funktion brauchst du ja mindestens eine Variable (zumeist nennt der unkreative Mathematiker diese x), welche einen sich ändernden Wert darstellt.

Welcher Wert ändert sich in deinem Fall auf der linken Seite der Gleichung (also dem Teil, den wir wissen, rechts ist, was wir wissen WOLLEN):

  • der Anfangsinhalt?
  • die Zeit, die das Wasser bereits fließt?
  • die Menge, die pro Minute abfließt?

Die anderen beiden sind Konstanten. Nur eine der beiden übrigen Konstanten (heißen so, da sie sich ja nicht ändern lassen -> konstant sind) steht im Zusammenhang mit der sich ändernden Größe, also x, und muss mit dieser multipliziert werden (heißt dann nciht mehr Konstante, sondern Faktor, da Multiplikation).

Rechts des Gleichheitszeichens steht unser y, also der Wert, den wir berechnen wollen.

Sobald du die linke Seite vollständig hast, kannst du die rechte Seite zu jedem möglichen Wert der Variablen (x) berechnen, indem du den Wert einsetzt. Wenn es anders herum laufen soll (wir wollen wissen, welcher Wert zu einem bekannten Ergebnis führen würde), setzt du für y das bekannte Ergebnis ein, stellst die Gleichung nach x um und erhältst dessen Wert.

Reicht denke ich an Hilfe für diese Aufgabe.

PS: Die Dinger heißen Lineare Gleichungen, da sie linear (= Graph ist eine Linie) verlaufen, und auch wenn man sie mit einem Lineal zeichnet, wurden sie nicht danach benannt 😉

...zur Antwort

https://stackoverflow.com/questions/75270760/can-i-move-or-delete-appverifui-dll-and-vfcompat-dll-from-root-after-visual-stu

Hab deine Dateien gefunden. :]

Überreste einer VS oder VS Code Installation, die erkennen Systeminkompatibilitäten. Kann weg.

...zur Antwort

Uiuiui, wo fange ich da an...

Zuallererst: C# ist eine gute Antwort. War auch meine erste Sprache, als ich angefangen habe, und ließ sich auch mit damals 12-13 Jahren ganz gut lernen.

ABER!

Punkt 1 der mich hier stört:

"Null Grundwissen" und "AntiCheat umgehen" sind zwei Dinge, die ich nicht in einem Satz lesen will. Man kann versuchen, online Tutorials zu suchen und Code zu kopieren, aber Lernen wird man da nichts. Du wirst nciht umhin kommen, dich mit Programmiergrundlagen, Grundlagen der Informationstechnik, der Funktionsweise von Computern uvm. Zu beschäftigen. Spätestens wenn jemand anfängt über "DLL Injection" zu reden wirst du merken, dass du leider einfach nicht das Wissen hast, das du dafür brauchst.

Punkt 2:

Ich verstehe, dass Themen wie "EAC Hacking" und "Cheat Bots" spannend sind, aber meiner Meinung nach nicht erstrebenswert. Es gibt so viele sinnvolle Dinge, die man mit diesem Wissen tun kann - warum ausgerechnet sowas?

Punkt 3:

Das Thema Browser-Erweiterungen ist wieder ein ganz anderer Schuh, den Du versuchst, Dir anzuziehen. Da geht's dann nicht um DLL Injection und RAM Manipulation, dafür wirst Du dich mit der Funktionsweise und dem Aufbau von Webseiten und (je nach Ziel der Erweiterung) dem Internet beschäftigen müssen.

Mein abschließendes Wort dazu also:

Beginne bei 0, lerne die Grundlagen, gerne auch mit C#, wirklich tolle Sprache, und entdecke auf dem Weg, was dir Spaß macht, und wie du das Wissen vielleicht doch sinnvoller einsetzen kannst. Lass' dich nicht dazu hinreißen, "von 0 auf 100" gehen zu wollen - starte mit einfachen Konsolenanwendungen, grundlegenden I/O und sinnvollen Anwendungsprogrammen. Der Rest kommt auf dem Weg.

...zur Antwort

Simpelste Lösung: Browserverlauf prüfen.

Ansonsten loggen viele Router auch requests vom local network ins Internet. Da sieht man auch noch einiges.

Alles andere wird dir hier vermutlich keiner erklären, weil damit zu viel Unsinn getrieben werden könnte. Wer solches Wissen hat, hat auch die Verantwortung, wie und an wen es weitergegeben werden darf.

...zur Antwort

Ich werde jetzt keine fertige Lösung abliefern aber sich in die richtige Richtung schicken:

5 Stapel scheint (der Aufgabenstellung folgend) ein guter Ansatz zu sein.

Überlege dir, wie du für jede mögliche Art von Münze die Menge zahlen kannst, und berechne daraus den Wert dieses Stapels. Du musst also mehrfach über dein Original iterieren, und jeweils prüfen, wie viele Münzen des aktuellen Typs dort liegen.

(Welche Schleife das am besten kann, kriegst du selbst raus.)

...zur Antwort

Meiner Meinung nach ist die Antwort oben etwas schwierig zu verstehen, und die darunter recht kurz. Hier also mal eine Zusammenfassung:

Wie @ZaoDaDong korrekt festgestellt hat, passiert mit der Hardware insofern nichts, dass sie sich nicht verändert. Alle Transistoren bleiben genau da, wo sie sind.

Was passiert, wenn du programmierst, ist in etwa Folgendes (Hardware kommt gen Ende, aber das davor ist wichtig für das Verständnis):

1. Du schreibst Programmcode.

Diesen schreibst du in einer der unzähligen Programmiersprachen, die es gibt. Welche du wählst, ist allein dir überlassen, und am Ende geht es für alle gleich weiter. der programmcode sind für dich etwas verständlichere Anweisungen, was der Computer am Ende tun soll.

2. Der Code wird kompiliert.

Die Programmiersprache sieht zwar so aus, als könnte ein Computer sie verstehen, tut er aber nicht. Deshalb übersetzt ein sogenannter Compiler deinen Code in etwas, das wir als Assembly kennen (einige Programmiersprachen wie Java gehen hier einen Umweg über maschinenunabhängigen Bytecode, wenn du da mehr wissenn willst, frag' nochmal nach). Sprich: der Compiler macht aus deinen if-Statements, while-loops und switch-Cases sehr viele Assembly-Anweisungen für das System, auf welchem du kompilierst (x86-64 Assembly für moderne 64-bit Intel-Prozessoren, ARM für MACs, ...). Diese landen dann im RAM, also im temporären Arbeitsspeicher.

3. Die Assembly-Anweisungen werden von der Hardware ausgeführt.

HIer ist etwas mehr zu erklären, zum Thema Architektur:

Ein Computer funktioniert (stark vereinfacht) so, dass eine kleine (physische) Steuereinheit ("Control" genannt) sogenannte Steuerleitungen ("control lines") an- oder ausschaltet (0 oder 1). Diese Steuerleitungen wiederum beeinflussen, was die einzelnen Hardware-Komponenten tun (welche Register ausgelesen werden, welche Leitungen von Multiplexern/Demultiplexern durchgelassen werden, welche Berechnungen die ALU ausführt uvm...)

Damit Control weiß, welche Leitungen es wie zu setzen hat, muss es einen permanenten Input von Nullen und Einsen erhalten. Es wird immer die benötigte Menge an Stellen eingelesen, und in dieser Reihenfolge werden die Steuerleitungen dann auf 0 oder 1 gesetzt, also physisch Strom an oder aus.

Assembly-Anweisungen sind bereits sehr dicht an reiner Maschinensprache dran, der letzte Übersetzungsschritt passiert dann in der CPU (also im Chip) selbst, über eine dort fest abgespeicherte "instruction table" (Instruktionstabelle), welche aus jeder Assembly-Anweisung den finalen Maschinencode macht, welcher von Control verstanden und ausgeführt wird.

TL;DR der ganzen Sache: Dein Code (den du verstehst) wird mehrfach in andere Formen übersetzt (die deutlich weniger Menschen verstehen... ich zähle mich leider dazu), welche schlussendlich bei 0 und 1 ankommen, was der Computer dann physisch umsetzen kann.

Die Frage mit dem Abspeichern wurde bereits korrekt beantwortet, trotzdem auch hierzu nochmal kurze Zusammenfassung:

Der Arbeitsspeicher (RAM) eines Computers ist nicht permanent. Schaltest du ihn aus, geht dessen Inhalt verloren. Arbeitsspeicher --> Arbeitsplatz kann man sich gut merken: Der Computer legt dort seine ganzen Werkzeuge und was er sonst so braucht ab, aber wenn die Arbeit getan ist, räumt er dort wieder auf.

Die Festplatte dagegen (PS - physical storage) ist ein permanent state drive, also ein dauerhafter Speicher, der seinen Zustand nach dem Ausschalten des Computers beibehält. wenn ein Programm auf der Festplatte gepeichert wurde, wird es beim Start zunächst wieder in den Arbeitsspeicher geladen, und dann geht's von dort wie oben beschrieben weiter.

Sollte ich jetzt mehr Fragen aufgeworfen als beantwortet haben - feel free nochmal zu fragen :D

...zur Antwort

Das Problem mit der natives.h ist etwas einfacher zu erklären:

Wenn du spitze Klammern <> verwendest, sucht der Compiler in der stdlib nach diesen Headern. Wenn du lokal einen Header benutzen willst, setze ihn in Anführungszeichen.

Mit der .lib-Datei sieht's nur minimal komplizierter aus:

Eine Library wird nicht als header benutzt (wie .h-Dateien), sondern wird während des Kompilierprozesses vom Linker an das Compile Output angehängt. Siehe dazu https://stackoverflow.com/questions/2749733/how-to-add-libraries-in-c

Wie genau das funktioniert, hängt von deinem Linker ab. Falls du Makefiles verwendest, schau dir an, wie du eine Library in make mit an den Linker anhängen kannst.

Weitere Nachfragen einfach hier drunter. :wink:

...zur Antwort

Da wirst du massiv Probleme kriegen, da Twitter gerade erst (letzte Woche glaube ich) die abrufbaren Datenmengen stark limitiert hat, um Bots und Datenscrapern (also exakt das, wonach du suchst) entgegenzuwirken. Wenn es diese Tools irgendwo gibt (ich meine - ich würde wetten, es gibt sie=, dann sind sie zurzeit ziemlich nutzlos.

...zur Antwort

Ich kann dir für Python zwar keinen Code geben (baue meine Bots mit C# und der DSharpPlus library), aber ich kann dir sagen, wonach du suchen solltest:

Was du suchst, ist ein recht neues Discord-Feature namens "Slash Commands", welches von Discord als Ersatz für die alten Text Commands (die mit ! oder Ähnlichem anfingen, und einfach aus plain text interpretiert wurden...) eingeführt wurde, und verpflichtend für alle Entwickler ist (text commands sollen angeblich unterdrückt werden).

Wie gesagt - ich weiß nicht, womit man in Python arbeitet, aber schau mal nach, ob du etwas zu "Slash Commands" findest.

Diese registrierst du als solche im Code als Methoden, und Discord übernimmt diese dann als Vorschläge (einschließlich der Methodenparameter als Optionen - machst du Parameter optional (--> default value in der Signatur), werden auch die Command Options optional).

Hoffe, das hilft. Ansonsten gerne nochmal nachfragen.

...zur Antwort
Nein

Witzig... Warum habe ich das Gefühl, dass ich weiß, auf welcher Seite des Spektrums die Informatiker unter uns vertreten sind?

HIer wird so schnell gar nichts irgendwem zum Opfer fallen. Eine wirkliche, halbwegs gute "Künstliche Intelligenz" hat hier noch keiner gesehen. ChatGPT ist keine KI, nur ein sehr ausgereiftes Sprachmodell. Im Grunde genommen ist das Teil "Googeln auf Crack". Stellst du auch nur eine einzige Frage, die logisches, mathematisches, abstraktes oder kreatives Denken (das, was Intelligenz ausmacht) erfordert, wird das Teil grandios auseinanderfallen. Glaub mir, ich kenne einen der weltweit führenden Experten auf diesem Gebiet (Prof. Dr. Ralf Herbrich, cooler Typ) persönlich, und ich sage dir ganz klar:

Alles Hype, alles viel Theater um sehr wenig Inhalt... Und eine ganze Menge Leute mit null Ahnung vom Thema, null Ahnung von Informatik, die den Unterschied zwischen Sprachmodell und KI nicht kennen, denen "neuronales Netzwerk" und "Reinforcement Learning" nur zwei Buzzwords sind, die aber der Meinung sind, hier groß mitreden zu wollen... Plötzlich ist hier jeder KI-Experte, und wirklich Ahnung hat eigentlich keiner. Überlasst das uns Informatikern, wir haben wenigstens annähernd eine Ahnung, was wir da tun und wie es funktioniert.

Oder, wie die Alten immer sagten: "Wenn du nicht verstehst, worüber du sprichst, frage dich, warum du überhaupt sprichst."

...zur Antwort