ChatGPT
Gedanken und kürzlich gemachte Erfahrungen mit ChatCPT (plus)
- ChatGPT ist von OpenAI, Gründer und Geldgeber: Elon Musk, Peter Thiel u.a.
- basiert auf der Idee des “Transformer” - deep learning model welches seinerseits auf der Idee eines Selbstbeobachtungsmechanismus beruht.
- “erfunden” , also veröffentlicht wurde die Idee von einer ForscherGruppe von Google.
- aber offenbar hat OpenAI es schneller als Google geschafft damit ein in der Praxis nützliches System zu schaffen.
Einschränkungen:
- begrenztes Wissen über die Welt nach 2021
- manchen Wissensgebiete sind absichtlich zensiert, oder “fine-tuned” z.B. politische oder gesetzeswidrige Themen
- wiederholt trotzdem manchmal menschliche falsche oder fragwürdige Vorurteile und könnte daher auch rassistische Antworten geben, trotz des Bemühens von OpenAI, dies zu vermeiden
Ergebnisse auf typische Softwareentwickler - Fragen:
- funktioniert erstaunlich gut
- wenn man nicht präzise genug fragt, bekommt man Antworten, die auf alten und überholten Versionen von Software Libraries oder Frameworks beruhen,
- längere Antworten brechen mittendrin ab, aber man kann per dem Kommando
continue
veranlassen, dass die Antwort fertiggestellt wird. - ich habe meine Frage bisher meist auf englisch gestellt, keine Ahnung wie gut die deutschen Antworten wären.
- ich habe inzwischen die bezahle Version für 20$/Monat, weil die kostenlose zu unzuverlässig war.
Beispiele die gut funktioniert haben:
direkte Programmierfragen
- “how to create a git branch for the current local HEAD and continue the main branch on the commit before the last commit ?”
- “How to read a file as String in java?”
- “How to merge the latest changes from the main branch in my feature branch with git ?”
- “When filtering a stream of objects in java, how would i get the first object with property
X==1
if that is contained in the stream or , if its not, then get the first object with propertyX==2
?”- Änderung der Anforderung: “Ok good! But now I want the object with property
X==2
, and only if there is none , I want the object with propertyX==1
!” - Interessanterweise ist hier der Text der Antwort von ChatGPT teilweise falsch: “To achieve this, you can simply reverse the order of the || expression in the filter() method, and change the sorting criteria in the sorted() method to reverse the order as well:”
- aber der erzeugte Code funktionierte trotzdem wie gewünscht, denn das umdrehen eine “||” oder-Anweisung hat keinerlei Effect, das vorgeschlagene hinzufügen des
reversed()
zum Comparator dagegen schon
- Änderung der Anforderung: “Ok good! But now I want the object with property
- “How to get the UTC time with
OffsetDateTime.ofInstant()
?” - “How to find the elements that are not the same in two Lists in Java” ->
list1.removeAll(list2)
- “How to copy a List in java?” ->
List<Integer> copy = new ArrayList<>(list);
- “How do I programmatically stop the spring-boot server in a integration test using
@SpringBootTest
annotation?” - “How to build a test hierarchy in
junit5
tests” - “I have a
Server
Class , with a String property calledurl
and a String calledcustomerId
, and aList<Server>
containing instances of theServer
class ,where I need to find and remove allServer
instances that have more then one sameurl
property, can you write the code in Java?” - “Now , write a unit test for this piece of code , please !”
Sehr hilfreich, obwohl ich selbst die Antwort nicht ganz verstanden habe
- “how to get the first element of an
Optional
of aList
in Java” ->Optional<Integer> first = optList.flatMap(lst -> lst.stream().findFirst());
- daher Folgefrage: “what exactly does Optional.flatMap do ?”
weniger spezifische Fragen, z.B. zu Konzepten in der Softwareentwicklung
- “what is gherkin and cucumber in relation to BDD?” und “can BDD be applied without using Gherkin?”
- “what are the drawbacks of test driven development?”
- “how many lines of test code in addition to the production code is needed on average as a percentage when software is developed according to TDD ?” -> korrekte Antwort
bis zu 1:1
- “how would you argue against the suspected drawbacks of TDD?”
- is there any good evidence, that TDD is for certain types of environment not a good idea?
Beispiele die NICHT (richtig) funktioniert haben:
- “do you know of some scientific studies about the ratio of test code to production code?” -> Antwort zu allgemein , keine Quelleangabe
- Big Bang Theory:
- “since when can Raj from the Big Bang Theorie TV show talk to women ?” Erklärung an sich gut aber die Rückfrage
- “ok, but was there a specific point in time , when he can talk to a woman the first time without having a alcohol first ?” brachte ein falsches Ergebnis: season 4 episode “The Desperation Emanation. Richtig ist, dass das erst im season 6 finale “The Bon Voyage Reaction” passiert ist.
- ein totaler Fail war auch die Frage an ChatGPT, you.com und neeva.com : “wie kann man
WebSocketStompClient
(eine Klasse in Spring) dazu bringen eine größereTransportBufferSize
zu verwenden (weil der war zu klein)” : -> Lösung musste ich letztlich doch direkt gegoogled und bei stackoverflow gefunden. - “What are the main difference between the Angular framework and React library regarding business applications especially big ones?” hier waren nach meine anderen Recherchen einige Antworten nicht ganz zutreffend.
- “Can the Annotation
@SpringBootTest
be replaced by other annotation to achieve the same behavior ?” - “From where did you get that ?”
Konkurrenz
- new bing und Googles Bard: noch kein Zugriff
- you.com, neeva.com
- im Gegensatz zu ChatGPT zeigt you.com und neeva.com auch die ursprünglichen Quellen, was manchmal hilfreich sein kann
- im allgemeinen ist you.com und neeva.com aber für meine Fragen sehr deutlich schlechter als ChatGPT
Werden Softwareentwickler sehr bald überflüssig ?
Ich glaube nein, aus folgendem Grund: die Arbeit des Softwareentwickler besteht zu mindestens der Hälfte daraus ein fachliches Problem zu analysieren, zu verstehen, in kleinste Schritte zu zerlegen, möglichst alle Sonderfälle und Ausnahmen zu berücksichtigen und dabei die richtigen Fragen an den Product Owner zu stellen.
- letztlich ist es die Kunst, die richtigen Fragen zu stellen, eine Kunst die keine AI bisher beherrscht.
- erst dann geht es an die Implementierung
- ChatGPT kann aber gar keine Frage stellen, es hat kein Ziel, sondern gibt nur Antworten
- letzteres kann und werden sich die Softwareentwickler zu nutzen machen und damit Ihre Produktivität drastisch steigern können.
- Idealerweise produziert die AI dann den richtigen fertige Code, wenn der Softwareentwickler die richtigen Fragen präzise aber eben in Umgangssprache, statt in einer Programmiersprache stellt.