Analiza bieżącego kodu vs znajomość języka

Analiza bieżącego kodu vs znajomość języka

Wątek przeniesiony 2026-07-09 09:35 z Inżynieria oprogramowania przez cerrato.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 115
0

Próbuje zaimplementować prostą maszynę stanu dla włącznika świateł z kilkoma stanami i staram się zrozumieć kod znając powierzchownie C++. Wiec teraz kwestia podejścia do analizy fragmentów z którymi człowiek nie miał większej styczności. Samo przeczytanie dokumentacji da nam ogólny zarys jak działa w tym wypadku mapa czy stany aczkolwiek kodu będzie nieco więcej.
Waszym więc zdaniem dopóki nie pojmie się choć podstaw działania w praktyce danego zagadnienia to zbyt wiele człowiek nie zrozumie ?
Chyba, że samo czytanie dokumentacji i szereg modyfikacji na przykładzie jest bardziej optymalne co też generuje masę błędów w kodzie.
Zwykle staram się zrobić ze 3 proste przykłady np mapy i odnieść się do całości kodu.

LightState.h

Kopiuj
#pragma once
#include <map>

enum class LightState {
    Off,
    Low,
    Medium,
    High

};

std::map<LightState, LightState> lightTransitions = {
    { LightState::Off, LightState::Low },
    { LightState::Low, LightState::Medium },
    { LightState::Medium, LightState::High },
    { LightState::High, LightState::Off }
};
WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5269
1

Teoria i praktyka się wzajemnie dopełniają. O to chodzi?

cerrato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 9214
2

Pytanie jest inne - co chcesz osiągnąć?
Czy chodzi Ci o naukę języka na podstawie włącznika świateł, czy po prostu chcesz mieć działający włacznik?

Chociaż w sumie - nie ma to znaczenia. I tak uważam, że w obu przypadkach pogadaj z jakimś AI (GPT/Claude/Gemini). Prosty kod (takie tematy jak mapa czy klasa to są podstawy, doskonale opisane w milionach tutoriali i dokumentacji online z których te AI się uczyły) zostanie Ci wytłumaczony łopatologicznie i z wielką cierpliwością, jak czegoś nie zrozumiesz to dopyta, zawsze możesz w prompcie zaznaczyć coś w stylu wytłumacz to jak 13-latkowi który praktycznie nie miał styczności z programowaniem a jak to załapiesz to poproś o bardziej szczegółowe/techniczne wyjaśnienia. Przy obecnym poziomie EjAj'ów oraz biorąc pod uwagę o co pytasz - uważam, że te sztuczne inteligencje się idealnie sprawdzą jako Twój nauczyciel.

A jeśli chcesz mieć po prostu działające sterowanie światłem to tym bardziej - GPT, daj kod, powiedz co chcesz osiągnąć i za chwile Ci wypluje coś działającego. Przy tak prostych zadaniach nie mam obaw czy będzie to zrobione dobrze, takie podstawy praktycznie jakikolwiek AI ogarnie bez problemów.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
3

Zmienna globalna w pliku nagłówkowy doprowadzi do błędów linkowania "Wiele instancji tej samej zmiennej" w momencie, kiedy ten nagłówek zostanie dołaczony do więcej niż jednego źródła .cpp.

Sposób w jaki to zaprojektowałeś powoduje, że ograniczasz możliwe tranzycję stanów. Użycie do tego celu std::map powoduje dużo problemów.

brokenelevator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 59
1

Popieram pytanie: co próbujesz osiągnąć?

Nie rozumiem do czego zmierzasz? Masz już jakiś kod? Piszesz że próbujesz zaimplementować ale pożniej głownie o analizie kodu, zakładam że czyjegoś. Ciężko zaimplementować coś o czym się nie ma pojęcia. Oczywiście można skopiować ze Stack Overflow albo LLM może go wygenerować ale wtedy nie bardzo można powiedzieć że się to zaimplementowało.

delform_17 napisał(a):

dopóki nie pojmie się choć podstaw działania w praktyce danego zagadnienia to zbyt wiele człowiek nie zrozumie ?

Tak.

delform_17 napisał(a):

samo czytanie dokumentacji i szereg modyfikacji na przykładzie jest bardziej optymalne co też generuje masę błędów w kodzie

Ja uważam że tak właśnie człowiek się uczy. Teraz można też konsultować się z LLM'ami. Może i generuje to błędy w kodzie ale chodzi o naukę, zrozumienie jak coś działa. 'Produkcyjny' kod i tak byłby pisany od nowa? albo przynajmniej oparty na oryginalnym przykładzie więc nie widzę gdzie jest problem w tej metodzie.

delform_17 napisał(a):

Zwykle staram się zrobić ze 3 proste przykłady np mapy i odnieść się do całości kodu.

Czyli próbujesz zrozumieć jak działa mapa i potem przełożyć to na analizowany kod? To brzmi sensownie. Jest wiele dróg do celu.

Jeżeli nie wiesz, jak działa std::map, to tysiąc linii cudzego kodu niewiele Ci pomoże. Będziesz widział tylko, że ktoś używa std::map, ale nie zrozumiesz dlaczego robi to właśnie tak.

Natomiast po napisaniu kilku własnych przykładów zaczynasz rozpoznawać wzorce. Wtedy analiza cudzego kodu staje się wartościowa, bo nie uczysz się już składni, tylko decyzji projektowych autora.

W przeciwnym wypadku nie wiem co masz na myśli.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.