SI potrafi programować?
Korzystając z czata CLARIN-IT dałem mu trzy zadania napisania programu według zadanej specyfikacji.(zaznaczonej boldem). Po pewnym czasie otrzymałem nastepujące odpowiedzi:
Napisz w języku basic rozwiązanie równania drugiego stopnia
Oto przykładowe rozwiązanie równania drugiego stopnia w języku BASIC:
10 INPUT "Podaj wartość a: ",
20 INPUT "Podaj wartość b: ",
30 INPUT "Podaj wartość c: ",
40 LET delta = (b ^ 2) - (4 * a * c)
50 IF delta < 0 THEN PRINT "Równanie nie ma rozwiązań rzeczywistych."
60 IF delta = 0 THEN LET x = -b / (2 * a): PRINT "Równanie ma jedno rozwiązanie:", x
70 IF delta > 0 THEN LET x1 = (-b + SQR(delta)) / (2 * a): LET x2 = (-b - SQR(delta)) / (2 * a)
80 PRINT "Równanie ma dwa rozwiązania:", x1, "i", x2
Ten program prosi użytkownika o podanie trzech wartości: a, b i c, a następnie oblicza deltę, czyli wyrażenie pod pierwiastkiem w wzorze na rozwiązania równania. Następnie, w zależności od wartości delty, program drukuje odpowiedni komunikat oraz oblicza i drukuje rozwiązania. W przypadku delty mniejszej od zera (czyli gdy równanie nie ma rozwiązań rzeczywistych), program kończy działanie po komunikacie.
Napisz w C program obliczania pola trójkąta na podstawie podanych długości jego trzech brzegów
Oto przykładowy program w języku C, który oblicza pole trójkąta na podstawie podanych długości jego trzech boków: 1 #include
2 #include
3
5 float a, b, c, p, pole;
6 printf("Podaj długość boku a: ");
7 scanf("%f", &a);
8 printf("Podaj długość boku b: ");
9 scanf("%f", &b);
10 printf("Podaj długość boku c: ");
11 scanf("%f", &c);
12 p = (a + b + c) / 2;
13 pole = sqrt(p*(p-a)*(p-b)*(p-c));
14 printf("Pole trójkąta wynosi: %f", pole);
15 return
Program przyjmuje od użytkownika trzy wartości reprezentujące długości boków trójkąta (a, b i c). Następnie oblicza półobwód trójkąta p za pomocą wzoru:
1 p = (a + b +
Następnie, korzystając z wzoru Herona, oblicza pole trójkąta:
1 pole = sqrt(p * (p - a) * (p - b) * (p -
Ostatecznie, wynik jest wyświetlany na ekranie. Warto zwrócić uwagę, że program zakłada poprawne dane wejściowe, czyli że podane boki rzeczywiście tworzą trójkąt, a ich długości są dodatnie. W przypadku podania nieprawidłowych danych program może działać niepoprawnie lub zakończyć się błędem.
Napisz w asemblerze pdp fragment programu dodającego wartości danych całkowitych umieszczonych w słowach pamięci A i B
Oto przykładowy fragment programu w asemblerze PDP-11, który dodaje wartości umieszczone w słowach pamięci A i B i wynik zapisuje w słowie pamięci C:
1 MOV 16(AP), R0 ; wczytaj pierwszy argument A do R0
2 MOV 18(AP), R1 ; wczytaj drugi argument B do R1
3 ADD R1, R0 ; dodaj wartość R1 do R0
4 MOV R0, 20(AP) ; zapisz wynik w trzecim argumencie C
5 RTS ; powrót z
Fragment programu zakłada, że adresy słów pamięci A, B i C są umieszczone odpowiednio w rejestrach AP+16, AP+18 i AP+20. Pierwsze dwie instrukcje wczytują wartości słów pamięci A i B do rejestrów R0 i R1. Następnie, za pomocą instrukcji ADD, wartość z rejestru R1 jest dodana do wartości w rejestrze R0, a wynik zapisywany jest z powrotem do rejestru R0. Ostatnia instrukcja MOV kopiuje wartość w rejestrze R0 do słowa pamięci C. Instrukcja RTS kończy działanie tego fragmentu programu.
---koniec przykładu.
Nie powiem, że mnie to nieco zszokowało. gdyż onacza to, że początkowo do prostych zadań programistycznych, a z czasem również do trudniejszych programiści będą zbędni. Jednakże będą potrzebni najpierw do sformułowania bardzo precyzyjnej specyfikacji programu (nie wiadomo na ile SI będzie mogła samodzielnie się domyślić nieujawnionych w specyfikacji intencji). Następnie będą potrzebni do bardzo dokładnej weryfikacji i przetestowania uzyskanego od SI programu,aby móc się pod nim podpisać, że jest tym co zamawiający oczekiwał. Ale nie ulega wątpliwości, że będzie się działo.
Ale też pamiętam mój pobyt na jednym z amerykańskich uniwersytetów jakieś dwadzieścia parę lat temu. Kiedyś w laboratorium z dostępem do komputerów zapytałem z ciekawości tamtejszą studentkę nad czym się tak biedzi. Odpowiedziała, że ma napisać jakiś program sortowania, a nie może znaleźć błędu w tym, który ma na ekranie. Moja dusza nauczyciela zaoferowała jej wspólne przeanalizowanie kodu tego programu. Ale Ona stwierdziła, że w Googlu znajdzie inny program sortowania i może ten będzie działać. Nieco się załamałem - no tak zamiast trochę pomyśleć, to wystarczy Google.
Jednak nieco czasu minęło, od zbioru algorytmów wyszukiwanych przez Google, do ofery GPT. Pytaniem jest czy te programy GPT napisał samodzielnie, czy też po prostu odszukał w sieci właściwy i ewentulanie tylko zmodyfikował. A odpowiedź na takie pytanie będzie niebawem kluczowa dla bardziej zlożonych przypadków.