programowanie2

 0    34 fiszki    kacperkamin
ściągnij mp3 drukuj graj sprawdź się
 
Pytanie język polski Odpowiedź język polski
Python proces wykonywania
rozpocznij naukę
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
rozpocznij naukę
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,
rozpocznij naukę
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
rozpocznij naukę
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)
rozpocznij naukę
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)
rozpocznij naukę
Ochrona Sekcji Krytycznej (zapobieganie Race Conditions).
Semaphore
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
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]
rozpocznij naukę
Adnotacja oznaczająca homogeniczną listę elementów typu T. W Pythonie 3.9+ zastępowana przez list[T]
Dict[K, V]
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
Tworzy nowy kontener, ale wypełnia go starami referencjami do dzieci
Głęboka Kopia
rozpocznij naukę
Tworzy nowy kontener i rekurencyjnie nowe kopie wszystkich dzieci.
semantyka kopiowania
rozpocznij naukę
Przypisanie (=), Płytka Kopia (copy. copy(), [:]), Głęboka Kopia (copy. deepcopy())
Hermetyzacja w Pythonie (Encapsulation)
rozpocznij naukę
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
rozpocznij naukę
Oznacza atrybut chroniony (umownie). Technicznie jest publiczny, ale sygnalizuje programiście: "nie dotykaj spoza klasy"
__zmienna
rozpocznij naukę
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
rozpocznij naukę
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)
rozpocznij naukę
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)
rozpocznij naukę
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)
rozpocznij naukę
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)
rozpocznij naukę
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)
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
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
rozpocznij naukę
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)
rozpocznij naukę
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
rozpocznij naukę
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)
rozpocznij naukę
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.

Musisz się zalogować, by móc napisać komentarz.