19.04.2024, 16:32
Ok. Dann muss ich annehmen, dass es an der Umbegung liegt (IDE, Betriebssystem). Die Alt-A Taste kommt bei mir an mehreren Stellen vor (die von mir nachstehend erwähnten Menüs sieht man in meinen Beispielen nicht, da man sie nicht übernehmen kann; sie sind klein, in dezenter Schriftfarbe, manchmal mit einem Symbol und im Editor immer direkt über dem relevaten Code eingebettet).
Angenommen ich habe in meinem Code folgende Funktion:
Jetzt wähle ich diese Funktion aus und drücke <ctrl>+I, dann erscheint ein "Codium Command" Fenster.
In diesem Fenster schreibe ich "Change the output from hello world to Hi there!".
Dann drücke ich <ctrl>+<shift>+<enter> oder klicke mit der Maus rechts unten auf "Codeium: Submit".
Jetzt erscheint ein neues Fenster mit einem Änderungsvorschlag.
Wenn ich den gemachten Vorschlag annehmen will, dann geht das nur, wenn ich mit der Mause oben links im "Codeium Command"-Fenster das Häcklein neben "Accept anklicke" oder Alt-A drücke um den Vorschlag zu übernehmen.
Ein anderes Beispiel:
Angenommen ich erstelle in meinem Go-Code an passender Stelle einen Kommentar in folgender Art:
Jetzt brauche ich gar nichts zu klicken; nach ein paar Sekunden erscheint folgender Code-Vorschlag:
Hier erscheint oben links wieder ein Menü. Hier kann ich jetzt den Codevorschlag mit <tab> übernehmen.
Später möchte ich mein Programm für Testzwecke mit Test-Daten ergänzen. Hier wird es jetzt interessant. Codeium füllt jetzt eine Slice mit fiktiven Userdaten, macht dabei aber nicht nur einen Vorschlag sondern mehrere. Hier kann ich mit Alt+] oder Alt+[ vorwärts und rückwärts durch die Liste scrollen und jeweils mit Alt+A diejenigen Vorschläge auswählen, die ich übernehmen möchte.
Das sind dann diejenigen Momente, bei denen ich von der KI profitieren kann und wo sie mich nicht nur nervt.
Im nachstehenden Beispiel habe ich zuerst im Codeium Chat Fenster mit dem Befehl "create a simple go app" ein Grundgerüst eines Web-Servers erstellt. Danach habe ich, wie oben beschrieben, "Hello World" in "Hi there" ändern lassen und den "User Type" erstellen lassen.
Der Rest geht aus den Kommentaren hervor, die ich genau so geschrieben habe, wie sie da stehen. Alles andere war dann nur noch den vorgeschlagenen Code zu akzeptieren oder eine Alternative zu wählen. Ich habe dabei keine einzige Zeile Code geschrieben. Das Resultat erzielte ich innert rund 3 Minuten. Es ist ein funktionierender einfacher HTTP-Webserver der im Browser die erstellten Testdaten ausgibt.
Angenommen ich habe in meinem Code folgende Funktion:
Code:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
})
In diesem Fenster schreibe ich "Change the output from hello world to Hi there!".
Dann drücke ich <ctrl>+<shift>+<enter> oder klicke mit der Maus rechts unten auf "Codeium: Submit".
Jetzt erscheint ein neues Fenster mit einem Änderungsvorschlag.
Code:
<<<<<<<<<<<<<< ✨ Codeium Command ? >>>>>>>>>>>>>>>>
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, "Hi there!")
- fmt.Fprintf(w, "Hello, World!")
})
<<<<<<< 97cb9157-ed42-4806-a7b9-3622dc622c48 >>>>>>>
Wenn ich den gemachten Vorschlag annehmen will, dann geht das nur, wenn ich mit der Mause oben links im "Codeium Command"-Fenster das Häcklein neben "Accept anklicke" oder Alt-A drücke um den Vorschlag zu übernehmen.
Ein anderes Beispiel:
Angenommen ich erstelle in meinem Go-Code an passender Stelle einen Kommentar in folgender Art:
Code:
// Create a User type with a struct for username, password, email, first name, last name, role and active flag.
Jetzt brauche ich gar nichts zu klicken; nach ein paar Sekunden erscheint folgender Code-Vorschlag:
Code:
type User struct {
Username string
First string
Last string
Email string
Password string
Role string
Active bool
}
Später möchte ich mein Programm für Testzwecke mit Test-Daten ergänzen. Hier wird es jetzt interessant. Codeium füllt jetzt eine Slice mit fiktiven Userdaten, macht dabei aber nicht nur einen Vorschlag sondern mehrere. Hier kann ich mit Alt+] oder Alt+[ vorwärts und rückwärts durch die Liste scrollen und jeweils mit Alt+A diejenigen Vorschläge auswählen, die ich übernehmen möchte.
Das sind dann diejenigen Momente, bei denen ich von der KI profitieren kann und wo sie mich nicht nur nervt.
Im nachstehenden Beispiel habe ich zuerst im Codeium Chat Fenster mit dem Befehl "create a simple go app" ein Grundgerüst eines Web-Servers erstellt. Danach habe ich, wie oben beschrieben, "Hello World" in "Hi there" ändern lassen und den "User Type" erstellen lassen.
Der Rest geht aus den Kommentaren hervor, die ich genau so geschrieben habe, wie sie da stehen. Alles andere war dann nur noch den vorgeschlagenen Code zu akzeptieren oder eine Alternative zu wählen. Ich habe dabei keine einzige Zeile Code geschrieben. Das Resultat erzielte ich innert rund 3 Minuten. Es ist ein funktionierender einfacher HTTP-Webserver der im Browser die erstellten Testdaten ausgibt.
Code:
package main
import (
"fmt"
"net/http"
)
type User struct {
Username string
First string
Last string
Email string
Password string
Role string
Active bool
}
func main() {
// create a list of users
users := []User{
// add some users
{
Username: "admin",
First: "admin",
Last: "admin",
Email: "admin",
Password: "admin",
Role: "admin",
Active: true,
},
{
Username: "user",
First: "user",
Last: "user",
Email: "user",
Password: "user",
Role: "user",
Active: true,
},
{
Username: "guest",
First: "guest",
Last: "guest",
Email: "guest",
Password: "guest",
Role: "guest",
Active: true,
},
{
Username: "disabled",
First: "disabled",
Last: "disabled",
Email: "disabled",
Password: "disabled",
Role: "disabled",
Active: false,
},
{
Username: "deleted",
First: "deleted",
Last: "deleted",
Email: "deleted",
Password: "deleted",
Role: "deleted",
Active: false,
},
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there!")
})
http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) {
// loop through the users and write them to the response
for _, user := range users {
fmt.Fprintf(w, "%s, %s, %s, %s, %s, %s, %t\n", user.Username, user.First, user.Last, user.Email, user.Password, user.Role, user.Active)
}
})
fmt.Println("Listening on port 8080...")
http.ListenAndServe(":8080", nil)
}