Paweł Łukasiewicz
2024-10-01
Paweł Łukasiewicz
2024-10-01
Udostępnij Udostępnij Kontakt
Wprowadzenie

Poprzednia seria wpisów dotycząca ChatGPT była bardzo ogólna. Moim głównym zamysłem było przygotowanie wpisów dla osób początkujących (takich jak ja) w celu zgłębienia tematów związanych ze sztuczną inteligencją. Chciałem, żebyśmy wspólnie poznali wszechstronne zastosowania i potencjał kryjący się w tym zaawansowanym modelu językowym. Jeżeli jeszcze nie przeszliście przez tamtą serie wpisów to zapraszam tutaj: ChatGPT - wprowadzenie

Ta seria będzie już nastawiona typowo na programistów. Czemu nie mówię wprost o C#? Ponieważ wspólnie przeszliśmy długą drogę w dążeniu do bycia Full Stack Developerem i płynnie łączymy wiele języków i technologii. Niektóre z wpisów będą pisanie z perspektywy backendu lub frontendu. Inne będą ściśle związane z platformą .NET.

Jak chcemy wykorzystać sztuczną inteligencję? Zależy nam na usprawnieniu procesu programowania i zwiększenia produktywności przy tworzeniu kodu. Tutaj z pomocą przychodzi nam ChatGPT, który może być niezwykle cennym narzędziem w naszym portfolio.

Czemu nie mówię o alternatywach? Te oczywiście istnieją, ale na tapetę wziąłem obecnie najpopularniejsze narzędzie. Przygotowałem jednak wpis, w którym porównujemy ChatGPT oraz Google Bard starając się sprawdzić, które narzędzie sprawdzi się lepiej w zależności od sytuacji.

My jednak wróćmy do naszego tematu i spójrzmy na 5 przykładów pokazujących jak programiści .NET mogą usprawnić swoją pracę przy wykorzystaniu ChatGPT i stać się bardziej konkurencyjni na rynku sztucznej inteligencji.

Proste generowanie kodu

Jako programiści często trafiamy na powtarzające się i niejednokrotnie nużące zadania dotyczące pisania kodu. Mam tutaj na myśli standardowe ‘stawianie projektu’, tworzenie warstwy dostępu do danych, tworzenie szablonów wykorzystania różnych wzorców projektowych, itd. Z pomocą przychodzi chatbot, który może nam pomóc w generowaniu tych fragmentów kodu oraz pozwolić na automatyzację tych zadań. Wystarczy przygotować prompt opisujący nasze potrzeby a narzędzie wygeneruje za nas fragmenty lub całe bloki kodu.

Spójrzmy na poniższy przykład, w którym prosimy o wygenerowanie kodu pozwalające na czytanie danych z SQL Servera przy wykorzystaniu ADO.NET. Jak doskonale pamiętacie z poprzedniego cyklu, niezwykle ważny jest kontekst, przekazanie odpowiednich informacji i zdefiniowanie naszych potrzeb. Dlatego mając na uwadze, że w naszej bazie danych istnieje już tabela poprosimy nie tylko o definicję połączenia, ale i samą możliwość przeczytania danych z tej tabeli: ChatGPT: ADO.NET: odczyt danych z SQL Servera

Poniżej również wygenerowany kod w języku C#:

using System;
using System.Data;
using System.Data.SqlClient;

namespace ReadDataFromSqlServer
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Your_SQL_Server_Connection_String"; // Zastąp "Your_SQL_Server_Connection_String" swoim rzeczywistym łańcuchem połączenia.

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                string query = "SELECT * FROM YourTableName"; // Zastąp "YourTableName" nazwą rzeczywistej tabeli, z której chcesz odczytać dane.

                SqlCommand command = new SqlCommand(query, connection);
                connection.Open();

                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine(String.Format("{0}, {1}, {2}", reader[0], reader[1], reader[2])); // Zastąp indeksy kolumn odpowiednimi nazwami kolumn w swojej tabeli.
                }

                reader.Close();
            }
        }
    }
}

Dokumentacja i szybka pomoc

Dokumentacja dokumentacją ale gdzie sięgamy zwykle po pomoc…Stackoverflow. Do tej pory tam trafialiśmy najczęściej, jeżeli potrzebowaliśmy szybkiego rozwiązania jakiegoś problemu albo zrozumienia jak dokonać poprawnej implementacji danej funkcjonalności. Teraz jednak pojawił się ChatGPT i znacznie wywrócił ten trend. Skąd ta pewność? Niedawno Stackoverflow ogłosił, że zastąpi 28% swoich pracowników generatywną sztuczną inteligencją. Co prawda w oficjalnych dokumencie pojawiła się informacja o względach ekonomicznych ale w ostatnim czasie pojawiało się wiele narzędzi takich jak Microsoft Copilot, Amazon CodeWhisperer, Google Bard oraz ChatGPT - to tutaj wszyscy doszukują się powodów zwolnień.

ChatGPT może nam dostarczyć natychmiastowe odpowiedzi i wyjaśnienia dotyczące bibliotek .NET, interfejsów API czy całego frameworka. Jest też w stanie podzielić się z nami najlepszymi praktykami przy tworzeniu oprogramowania.

Sprawdźmy jak poradzi sobie z poniższym poleceniem: ChatGPT: wyjaśnienie Entity Frameworka

A jeżeli jeszcze nie mieliście przyjemności z Entity Framework to odsyłam do serii wpisów na ten temat: Entity Framework - wprowadzenie

Przegląd kodu i nieustanna poprawa jakości

Jak to jest z tymi Pull Requestami? Pomijając oczywiście aspekt techniczny dostarczanej przez nas funkcjonalności czasami dajemy/dostajemy sugestie poprawy kodu, wskazówki pozwalające na zapewnienie lepszej czytelności czy wykorzystanie feature’ów dostępnych w kolejnych wersjach języka. ChatGPT może nam pomóc w przeglądach i analizie kodu i dostarczeniu sugestii dotyczących ulepszeń: ChatGPT: code review

Pamiętajcie jednak o licencjach i polityce swojej firmy – nie zawsze udostępnianie kodu projektów firmowych na licencjach prywatnych jest dozwolone.

Szukanie błędów i pomoc w debugowaniu

Nie unikniemy błędów przy tworzeniu kodu. Ich identyfikacja może być czasami problematyczna a sama naprawa czasochłonna. ChatGPT może pomóc zidentyfikować potencjalne błędy dokonując analizy i dostarczając sugestie ich naprawy: ChatGPT: identyfikacja i poprawka błędów

Szybkie POC i kolejne iteracje

Często w naszej pracy pojawia się potrzeba przygotowania POC lub eksperymentów z różnymi rozwiązaniami zanim zdecydujemy się na implementację. ChatGPT pozwala nam na eksperymenty z różnymi fragmentami kodu i podejściami. Dodatkowo, samo generowanie kodu będzie niejednokrotnie szybsze niż przysłowiowe odpalenie Visual Studio: ChatGPT: szybkie prototypowanie aplikacji

Podsumowanie

Jak widzicie na powyższym przykładzie, ChatGPT może być dla nas bardzo pomocnym narzędziem. Pozwala na generowanie kodu, pomoc przy tworzeniu czy analizie dokumentacji, przegląd samego kodu i informacje zwrotne z sugestią co możemy poprawić, pomoc przy analizie błędów i sugerowanie możliwych rozwiązań. Samo szybkie prototypowanie zasługuje na dużą uwagę – wygenerowanie tzw. placeholdera dla naszego kontrolera to dosłownie kilka sekund, gdzie większość czasu to zebranie wytycznych.

ChatGPT może zaoszczędzić nasz czas, zautomatyzować nudne i powtarzalne zadania, zwiększyć produktywność i poprawić jakość samego kodu. Tutaj jednak jak widzicie, chatbot jest naszym asystentem i narzędziem uzupełniającym naszą wiedzę. Zawsze powinniśmy dokładnie sprawdzać i testować kod wygenerowany przez ChatGPT przed wdrożeniem go na jakiekolwiek środowisko programistyczne.

Traktujmy ChatGPT jako naszego pomocnika, który zwiększy naszą produktywność i usprawni proces tworzenia kodu.