home.social

#kod — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #kod, aggregated by home.social.

  1. CodeMender od Google DeepMind: AI, która sama znajduje i naprawia błędy bezpieczeństwa

    Google DeepMind zaprezentowało wyniki badań nad CodeMender – nowym agentem AI zaprojektowanym do automatycznego poprawiania bezpieczeństwa kodu.

    Rozwiązanie to ma odpowiadać na rosnący problem: choć tradycyjne metody i nowe narzędzia AI, takie jak Big Sleep czy OSS-Fuzz, są coraz skuteczniejsze w odkrywaniu luk, ich ręczne naprawianie jest czasochłonne. W miarę postępów w wykrywaniu podatności, programiści (ludzie) mogą przestać nadążać z ich usuwaniem.

    Agent działa na dwa sposoby: reaktywnie, natychmiast łatając nowe luki, oraz proaktywnie, przepisując istniejący kod w celu wyeliminowania całych klas podatności. CodeMender wykorzystuje zdolności rozumowania modeli Gemini Deep Think, aby działać jako autonomiczny agent. Kluczowym elementem jest proces automatycznej walidacji, który gwarantuje, że proponowane poprawki są właściwe, nie powodują regresji (czyli nie psują innych funkcji w kodzie programu) i są zgodne z wytycznymi projektu, zanim zostaną przedstawione człowiekowi do weryfikacji.

    Aby skutecznie znaleźć źródło problemu, CodeMender wykorzystuje zaawansowane techniki analizy programu, w tym analizę statyczną, dynamiczną i tzw. fuzzing (testowanie odporności kodu losowymi, celowo zniekształconymi danymi). Pozwala mu to zidentyfikować rzeczywistą przyczynę błędu, a nie tylko jego objawy – jak informuje Google DeepMind w swoim wpisie na oficjalnym blogu, w jednym z przykładów agent odkrył, że zgłaszany błąd przepełnienia bufora był w rzeczywistości spowodowany nieprawidłowym zarządzaniem stosu podczas parsowania XML. System korzysta również z wyspecjalizowanych agentów (systemy wieloagentowe), np. narzędzia opartego na LLM, które weryfikuje zmiany i pomaga w autokorekcie.

    Google DeepMind poinformowało, że w ciągu ostatnich sześciu miesięcy, odkąd rozwijany jest CodeMender, zespół przesłał już 72 poprawki bezpieczeństwa do różnych projektów open source, z których wiele zostało już zaakceptowanych. Niektóre z tych projektów liczą nawet 4,5 miliona linii kodu. W ramach działań proaktywnych, CodeMender został użyty m.in. do biblioteki libwebp, aby dodać adnotacje -fbounds-safety. Mechanizm ten pomógłby zapobiec wykorzystaniu słynnej luki (CVE-2023-4863), która w przeszłości była używana do ataków na urządzenia z systemem iOS.

    Badacze podkreślają, że choć wczesne wyniki są obiecujące, podchodzą do projektu ostrożnie, stawiając na niezawodność. Obecnie wszystkie poprawki generowane przez CodeMender są sprawdzane przez ekspertów DeepMind przed ich wysłaniem. Zespół planuje stopniowo zwiększać ten proces i kontaktować się z opiekunami krytycznych projektów open source, aby rozwijać własne dzieło na podstawie ich opinii. Celem jest udostępnienie CodeMender jako narzędzia, z którego będą mogli korzystać wszyscy programiści.

    Vibe coding, czyli programowanie na czuja. AI miało zastąpić programistów, a stworzyło dla nich nowy rynek pracy

    #AI #Bezpieczeństwo #CodeMender #cyberbezpieczeństwo #Gemini #GeminiDeepThink #Google #GoogleDeepMind #kod #lukiWOprogramowaniu #news #openSource #programowanie #sztucznaInteligencja

  2. Zaprogramuj swoje ZX Spectrum! Prosty BASIC, wielkie możliwośc


     

    Powrót do korzeni: Programowanie w języku BASIC na komputerze The Spectrum

    Premiera urządzenia The Spectrum wywołała spore poruszenie w świecie miłośników retrokomputingu. Choć sieć zalała fala unboxingów i testów dołączonych gier, warto spojrzeć na ten sprzęt z innej perspektywy. The Spectrum, będący w rzeczywistości zaawansowanym emulatorem zamkniętym w nowoczesnej obudowie, to nie tylko konsola do gier, ale przede wszystkim narzędzie programistyczne. Dzięki pełnowymiarowej klawiaturze z naniesionymi komendami języka ZX BASIC, urządzenie to staje się idealną platformą do nauki podstaw programowania oraz tworzenia własnych gier i aplikacji.

    Złota biblioteka programisty – literatura z epoki

    Zanim przejdziemy do praktyki, warto pochylić się nad zasobami wiedzy, które kształtowały pokolenia programistów w latach 80. i 90. Literatura tamtego okresu jest niezwykle bogata i do dziś stanowi cenne źródło informacji.

    Jedną z fundamentalnych pozycji jest wydana w 1987 roku książka „Pierwsze kontakty z mikrokomputerem ZX Spectrum”. To idealny podręcznik dla osób, które nigdy wcześniej nie miały styczności z tą architekturą. Autorzy w przystępny sposób wyjaśniają obsługę klawiatury oraz podstawowe komendy BASIC-a, a całość uzupełniają gotowe listingi programów do samodzielnego wpisania.

    Kolejną, wręcz kultową pozycją, jest „Przewodnik po ZX Spectrum”. To kompendium wiedzy traktujące o komputerze w sposób całościowy. Znajdziemy tam nie tylko naukę BASIC-a, ale także wprowadzenie do Assemblera, opisy innych języków (takich jak C, Forth czy Logo) oraz szczegółowe aspekty sprzętowe, w tym rozpiskę szyny krawędziowej oryginalnego modelu.

    Dla osób szukających wyzwań doskonałym wyborem będą publikacje Rolanda Wrocławka, który na łamach „Młodego Technika” prowadził kursy programowania, czy popularna seria „Wszystko o komputerze”, składająca się z 13 zeszytów tworzących kompleksowy kurs od podstaw do zaawansowanych technik maszynowych. Nie można też zapomnieć o prasie komputerowej, ze słynnym „Bajtkiem” na czele, gdzie rubryka „Klan Spectrum” dostarczała niezliczonych listingów, w tym tak użytecznych narzędzi, jak generatory polskich znaków.

    Filozofia klawiatury i tryb edycji

    Klawiatura The Spectrum na pierwszy rzut oka może wydawać się skomplikowana. Wynika to z faktu, że każdemu klawiszowi przypisano konkretne komendy języka BASIC. Zamiast wpisywać słowo „PRINT” litera po literze, wywołujemy je jednym naciśnięciem klawisza „P”.

    System operuje na różnych typach kursora:

    • Kursor L: Służy do wpisywania liter i kontynuowania komend.
    • Kursor E (Extended): Wywoływany kombinacją klawiszy CAPS SHIFT i SYMBOL SHIFT. Pozwala na dostęp do komend oznaczonych na zielono, takich jak TAB czy funkcje matematyczne.
    • Symbol Shift: Używany wraz z kursorem E, daje dostęp do poleceń oznaczonych kolorem czerwonym (np. CIRCLE, SCREEN).

    Współczesna wersja komputera w trybie klasycznym wita nas ekranem powitalnym z datą zaktualizowaną na rok 2024, ale cała reszta – w tym logika edycji linii – pozostała wierna oryginałowi. Programowanie w BASIC-u wymaga numeracji linii (od 1 do 9999). Edycja istniejącej linii odbywa się poprzez najechanie na nią znakiem wyboru i użycie kombinacji CAPS SHIFT + 1, co przenosi kod do dolnej części ekranu, gdzie możemy dokonać zmian. Skasowanie linii jest jeszcze prostsze – wystarczy wpisać jej numer i nacisnąć ENTER.

    Interakcja z użytkownikiem i logika programu

    Podstawą każdego programu jest komunikacja. Komenda PRINT służy do wyświetlania treści na ekranie, natomiast BORDER pozwala zarządzać kolorem ramki (dostępna paleta obejmuje 8 podstawowych kolorów, choć w pełnej konfiguracji Spectrum obsługuje ich 15).

    Prawdziwa zabawa zaczyna się jednak przy użyciu komendy INPUT, która wymusza interakcję. W BASIC-u kluczowe jest rozróżnienie typów zmiennych:

    • Zmienna numeryczna (np. A) przechowuje liczby.
    • Zmienna tekstowa (np. A$) przechowuje ciągi znaków.

    Łącząc to z instrukcją warunkową IF…THEN oraz komendą skoku GOTO, możemy stworzyć prosty mechanizm „pseudo-chatu” lub gry tekstowej. Program może zadać pytanie, poczekać na odpowiedź użytkownika, porównać ją ze wzorcem i w zależności od wyniku – wyświetlić reakcję lub zapętlić się, prosząc o ponowne wprowadzenie danych. Tak budowane były dawne gry paragrafowe, które mimo braku grafiki, potrafiły wciągnąć gracza na długie godziny.

    Grafika i proste animacje

    ZX Spectrum, mimo rozdzielczości 256×192 piksele, oferuje ciekawe możliwości graficzne. Do dyspozycji programisty oddano trzy główne komendy:

    1. PLOT: Rysuje pojedynczy punkt o zadanych współrzędnych X i Y.
    2. DRAW: Rysuje linię od ostatniego punktu do zadanej lokalizacji.
    3. CIRCLE: Pozwala narysować okrąg, wymagając podania współrzędnych środka oraz promienia.

    Zastosowanie pętli FOR…NEXT pozwala na automatyzację procesu rysowania. Przykładowo, tworząc pętlę wykonującą się 20 razy i zwiększając w każdym kroku promień okręgu o zmienną z licznika, otrzymamy efektowną grafikę interferencyjną. Należy jedynie pamiętać o granicach ekranu – wyjście poza obszar roboczy skutkuje przerwaniem programu i błędem raportowanym przez interpreter.

    Budowa silnika gry na przykładzie „Węża”

    Wykorzystując zdobytą wiedzę, możemy pokusić się o stworzenie fundamentów pod prostą grę zręcznościową. Kluczowym elementem jest tutaj instrukcja INKEY$, która w przeciwieństwie do INPUT, nie zatrzymuje programu, lecz sprawdza „w locie”, czy jakiś klawisz jest w danej chwili naciśnięty.

    W prostym schemacie sterowania pikselem (analogicznym do gry „Wąż”) używamy klawiszy:

    • Q / A: Ruch w pionie (góra/dół).
    • O / P: Ruch w poziomie (lewo/prawo).

    Program w pętli odczytuje stan klawiatury, aktualizuje współrzędne X i Y, a następnie rysuje punkt w nowym miejscu. Aby gra była grywalna, można dodać warunki sprawdzające, czy gracz nie dotknął krawędzi ekranu. Taki model programowania, oparty na ciągłym sprawdzaniu warunków i aktualizacji obrazu, jest podstawą tworzenia gier wideo od dziesięcioleci.

    Podsumowanie

    Programowanie na The Spectrum w języku ZX BASIC to fascynująca podróż do czasów, gdy zrozumienie działania komputera było na wyciągnięcie ręki. Choć dziś dysponujemy ogromną mocą obliczeniową i zaawansowanymi silnikami graficznymi, ograniczenia 8-bitowej architektury wciąż uczą dyscypliny, logicznego myślenia i kreatywności. Niezależnie od tego, czy chcesz odświeżyć sobie wspomnienia z młodości, czy po raz pierwszy spróbować swoich sił w retro-kodowaniu, świat 15 kolorów i 48 kilobajtów pamięci wciąż ma wiele do zaoferowania.

    Zachęcamy do eksperymentowania z kodem i sięgania po starą literaturę – to najlepszy sposób, by w pełni wykorzystać potencjał drzemiący w tym niepozornym urządzeniu.

    Warto wypróbować: Spróbuj napisać program, który zmienia kolory ramki w rytm naciśniętych klawiszy lub stwórz prosty labirynt tekstowy, korzystając wyłącznie z komend PRINT i INPUT.

    #basicProgramowanie #jakProgramować #językProgramowania #kod #kodBasic #kody #komputer #komputerRetro #Komputery #komputeryRetro #łatweProgramowanie #programowanie #programowanieBasic #programowanieWBasic #programowanieZxSpectrum #prosteProgramowanie #retroKomputer #retroKomputery #retroSprzet #RetroGaming #retrogralniaProgramowanie #retrogralniaZxSpectrum #sprzętRetro #TheGameIsNotOver #zxSpectrum #zxSpectrumProgramowanie #zxSpectrumRetrogralnia