programowanie2

 0    34 informačný list    kacperkamin
stiahnuť mp3 vytlačiť hrať Skontrolujte sa
 
otázka język polski Odpoveď język polski
Python proces wykonywania
začať sa učiť
1) Analiza pod względem błędów, tłumaczenie na bajtkod 2) Maszyna wirtualna Python, pętla prog: 1) wczyt instr bajtkod, wykonuje instr w C, zarzadza stosem
Bajtkod
začať sa učiť
Jest to zestaw instrukcji dla Maszyny Wirtualnej, a nie dla fizycznego procesora (CPU). Nazwa pochodzi stąd, że każda instrukcja (opcode) zajmowała tradycyjnie jeden bajt (choć w nowszych wersjach Pythona się to zmienia)
Interpreter W kontekście Pythona,
začať sa učiť
zawiera w sobie zarówno kompilator do bajtkodu, jak i Maszynę Wirtualną (PVM). Jego zadaniem jest emulacja komputera – udaje procesor, który rozumie język bajtkodu Pythona.
threading
začať sa učiť
udostępnia interfejs wysokopoziomowy do pracy z wątkami. Kluczowa cecha implementacyjna: Wątki w Pythonie są natywnymi wątkami systemu operacyjnego
GIL (Global Interpreter Lock)
začať sa učiť
mutex (blokada wzajemnego wykluczania), wbudowany w rdzeń interpretera CPython, Aby jakikolwiek wątek mógł wykonać instrukcję bajtkodu Pythona lub operować na obiektach Pythona, musi najpierw uzyskać (zablokować) GIL
Lock (Blokada Wzajemnego Wykluczania)
začať sa učiť
Ochrona Sekcji Krytycznej (zapobieganie Race Conditions).
Semaphore
začať sa učiť
Semafor to licznik sterujący dostępem do zasobów. Pozwala określonej liczbie wątków na jednoczesną pracę. wait() (P) zmniejsza licznik, signal() (V) go zwiększa. Gdy licznik wynosi 0, wątek czeka. Idealny do puli połączeń lub ograniczania obciążenia.
Queue
začať sa učiť
queue. Queue to bezpieczny wątkowo kanał komunikacji w Pythonie. Pozwala na bezpieczne przesyłanie danych między wątkami bez ręcznych blokad (Lock). Obsługuje mechanizm blokujący: get() czeka na dane, a put() może czekać na wolne miejsce.
Generics
začať sa učiť
Mechanizm polimorfizmu parametrycznego umożliwiający tworzenie kodu (klas/funkcji) działającego na różnych typach danych, z zachowaniem bezpieczeństwa typów podczas analizy statycznej.
TypeVar
začať sa učiť
TypeVar to zmienna typologiczna używana do tworzenia generyków w Pythonie. Pozwala powiązać typy (np. zapewnić, że funkcja zwróci ten sam typ, który otrzymała). Umożliwia ograniczanie dopuszczalnych typów za pomocą argumentów lub parametru bound.
List[T]
začať sa učiť
Adnotacja oznaczająca homogeniczną listę elementów typu T. W Pythonie 3.9+ zastępowana przez list[T]
Dict[K, V]
začať sa učiť
Dict[K, V] to podpowiedź typu (type hint) dla słownika. K określa typ klucza, a V typ wartości. Od Pythona 3.9 zaleca się zapis dict[K, V]. Pomaga w autouzupełnianiu kodu i pozwala na szybsze wykrywanie błędów przez analizatory.
id() - is
začať sa učiť
id(<zmienna>) zwraca identyfikator obiektu, na który wskazuje <zmienna>. Pozwala to na sprawdzenie czy 2 różne zmienne wskazują na ten sam obiekt.
Płytka Kopia
začať sa učiť
Tworzy nowy kontener, ale wypełnia go starami referencjami do dzieci
Głęboka Kopia
začať sa učiť
Tworzy nowy kontener i rekurencyjnie nowe kopie wszystkich dzieci.
semantyka kopiowania
začať sa učiť
Przypisanie (=), Płytka Kopia (copy. copy(), [:]), Głęboka Kopia (copy. deepcopy())
Hermetyzacja w Pythonie (Encapsulation)
začať sa učiť
Brak słów kluczowych private/protected. Ochrona opiera się wyłącznie na konwencji (_name) oraz mechanizmie Name Mangling (__name)(trudniej nadpisac), a nie na blokadzie dostępu
_zmienna
začať sa učiť
Oznacza atrybut chroniony (umownie). Technicznie jest publiczny, ale sygnalizuje programiście: "nie dotykaj spoza klasy"
__zmienna
začať sa učiť
Uruchamia mechanizm Name Mangling. Interpreter zmienia nazwę na _Klasa__zmienna w czasie kompilacji. Służy do unikania kolizji nazw przy dziedziczeniu, a nie do bezpieczeństwa danych
@property
začať sa učiť
mplementacja Protokołu Deskryptora. Pozwala zamienić metody (getter/setter) na atrybuty dostępne przez kropkę (obj.x), zachowując kompatybilność API bez zmiany kodu klienta
Unie (union)
začať sa učiť
Specjalny typ, w którym wszystkie pola dzielą ten sam obszar pamięci. Rozmiar: Równy największemu polu. W danej chwili można przechowywać tylko jedną wartość. Zastosowanie: Oszczędność pamięci lub dostęp do tych samych danych na różne sposoby.
Enumeracje (enum)
začať sa učiť
Typ wyliczeniowy przypisujący nazwy (symbole) do liczb całkowitych. Przykład: enum Kolor {RED, GREEN, BLUE}; (domyślnie 0, 1, 2). Zaleta: Poprawa czytelności kodu i bezpieczeństwo typów (zwłaszcza enum class w nowoczesnym C++).
List (Lista)
začať sa učiť
Uporządkowana, zmienna (mutable) kolekcja elementów. Pozwala na duplikaty. Zapis: [1, 2, 2, 3] Cechy: Dostęp przez indeks, dynamiczny rozmiar, bardzo uniwersalna.
Tuple (Krotka)
začať sa učiť
Uporządkowana, niezmienna (immutable) kolekcja. Pozwala na duplikaty. Zapis: (1, 2, 2, 3) Cechy: Szybsza od listy, bezpieczniejsza (brak zmian), może być kluczem w słowniku.
Set (Zbiór)
začať sa učiť
Nieuporządkowana kolekcja unikalnych elementów. Zapis: {1, 2, 3} Cechy: Automatycznie usuwa duplikaty. Bardzo szybkie sprawdzanie przynależności (operator in).
Operatory na kolekcjach
začať sa učiť
in, not in: sprawdzenie czy element jest w kolekcji. +: łączenie list/krotek. *: powielanie kolekcji (np. [0] * 3 -> [0, 0, 0]). ==: sprawdzenie czy kolekcje mają tę samą zawartość. is: sprawdzenie identyczności (ten sam obiekt).
std: function
začať sa učiť
Polimorficzny opakowywacz (wrapper) na wszystko, co można wywołać: zwykłe funkcje, lambdy, funktory. Składnia: std: function<typ_zwracany(argumenty)>. Zastosowanie: Pozwala przechowywać różne obiekty funkcyjne w jednej zmiennej/kontenerze.
Relacja: Lambda a std: function
začať sa učiť
Lambda to konkretny obiekt o nieznanym typie wygenerowany przez kompilator. std: function to kontener, który może tę lambdę przechować, ale wiąże się to z niewielkim narzutem wydajnościowym (dynamiczna alokacja).
Bufory i Pule pamięci
začať sa učiť
Bufor: tymczasowy obszar RAM do przechowywania danych w przesyle. Pula (Pool): wstępnie zaalokowany blok pamięci, z którego program sam wydziela małe porcje. Zaleta: Szybsze działanie i brak fragmentacji RAM niż przy ciągłym new/malloc.
memset
začať sa učiť
Funkcja wypełniająca blok pamięci określoną wartością (bajt po bajcie). Użycie: memset(ptr, 0, sizeof(ptr)). Zastosowanie: Najszybszy sposób na "wyzerowanie" tablicy lub struktury zaraz po jej utworzeniu.
memcpy i memmove memcpy
začať sa učiť
kopiuje blok danych z adresu A do B. Bardzo szybka, ale niebezpieczna, gdy obszary na siebie nachodzą. memmove: bezpieczniejsza wersja, która radzi sobie z nachodzącymi na siebie obszarami pamięci (używa bufora pomocniczego).
Garbage Collector (GC)
začať sa učiť
Mechanizm automatycznego zwalniania pamięci zajmowanej przez obiekty, które nie są już używane przez program. Zaleta: Zapobiega wyciekom pamięci (memory leaks). Wada: Może powodować nagłe, krótkie pauzy w działaniu programu.
Przeciążanie operatorów
začať sa učiť
Zasady Pozwala definiować działanie operatorów dla własnych typów. Ograniczenia: Nie można tworzyć nowych symboli (np. **), zmieniać priorytetów ani liczby argumentów. Przynajmniej jeden argument musi być typem użytkownika.
Adnotacje typów (Type Hints)
začať sa učiť
Opcjonalne deklaracje typów: zmienna: typ = wartosc. Zasada: Ignorowane przez interpreter Pythona, ale używane przez IDE i analizatory (np. mypy) do wykrywania błędów przed startem. Zwiększają czytelność kodu.

Ak chcete pridať komentár, musíte byť prihlásený.