Course Code: luacomp
Duration: 21 hours
Prerequisites:

Znajomość co najmniej jednego innego języka programowania. Programming doświadczenie. Opcjonalnie, jeśli znasz inne języki skryptowe, ułatwi ci to zrozumienie Lua.

Overview:

Lua to łatwy w użyciu język skryptowy, który jest używany jako wbudowany język wtyczek/rozszerzeń w różnych produktach. Na przykład jest to wbudowany język skryptowy aplikacji sieciowych, takich jak nmap i wireshark, a także można go znaleźć jako język skryptowy w World of Warcraft, Orbiter i innych grach.

Lua może być również używany jako samodzielny język. Jest to lekki, wieloparadygmatowy język programowania, dlatego kurs uczy różnych pojęć, które studenci uznają za przydatne również w innych obszarach inżynierii oprogramowania.

Ten kurs obejmuje wszystko, co można wiedzieć o Lua. Rozwijamy się od podstawowych konstrukcji programistycznych, poznajemy zaawansowane techniki i wreszcie mówimy o osadzaniu Lua w innych językach programowania i osadzaniu innych języków programowania w Lua. Kurs zawiera wiele ćwiczeń programistycznych, dzięki czemu nowicjusze mogą zdobyć biegłość w języku, zaczynając od zera.

Course Outline:

Wprowadzenie do Lua

  • Trochę historii
  • Cele, cechy i cele inne niż cele Lua.
  • Zasoby Lua dokumentacji i tutoriali
  • Instalowanie interpretera Lua.
  • Konfigurowanie i używanie LuaRocks

Podstawowa składnia i semantyka

  • Identyfikatory
  • Komentarze, blokowanie komentarzy
  • Zmienne globalne i egzekwowanie rygorystyczności
  • Zmienne lokalne
  • Programy samodzielne, argumenty programu
  • Jednostki kompilacji, fragmenty, wyrażenia, średniki

Typy danych i struktury danych

  • Podstawowe typy: nil, boolean, number, string
  • Typy obiektów: funkcja, dane użytkownika, wątek, tabela
  • Referencje/obiekty a wartości podstawowe
  • Znaczenie tabel w Lua

Wprowadzenie do tabel i ich wszechstronności

  • Tabele jako tablica asocjacyjna
  • Tabele jako tablice numeryczne, ciągi

Podstawowe struktury sterujące

  • Jeśli to elseif else się kończy
  • Pętla while
  • Pętla powtórzeń
  • Prosta pętla for

Obsługa błędów

  • Zwracane wartości a wyjątki
  • Konwersja wartości zwracanej na wyjątek
  • Konwersja wyjątku na wartość zwracaną
  • Poziomy błędów

Przykładowe programy

  • Ocena wielomianu
  • Przeszukiwanie wszerz
  • Dodatkowe ćwiczenia

Więcej o funkcjach

  • Nazwane argumenty
  • Wywołania obiektowe
  • Domknięcia
  • Curry
  • Ogon wzywa
  • Wielokrotne przypisanie i powrót
  • Varargs

Iteratory i współprogramy

  • Ogólna pętla for
  • Iteratory bezstanowe i stanowe
  • Różnice pomiędzy iteratorami i współprogramami

Metatabele i metametody

  • Ustawiony przykład
  • Metametoda __tostring
  • Metametody arytmetyczne
  • Metametody __index, __newindex
  • Metametoda __len

Moduły i pakiety

  • Korzystanie z modułów
  • Tworzenie modułów
  • Organizowanie modułów w pakiety

Zaawansowane tabele

  • Tabele kolejek i stosów
  • Tabele opisujące wykresy
  • Macierze jako tablice
  • Połączone listy jako tabele
  • Bufory ciągów

Metatabele na przykładach

  • Serwery proxy
  • Tylko czytać
  • Zapamiętywanie
  • Programowanie dynamiczne z zapamiętywaniem
  • Przykład Fibonacciego

Środowiska

  • Związek pomiędzy zmiennymi globalnymi a środowiskami
  • Dowolne zmienne
  • Tabela _ENV i tabela _G

Więcej o modułach

  • Różne podejścia do tworzenia modułów
  • Moduły zmieniające zachowanie
  • Inicjalizacja modułu i argumenty
  • Wykorzystanie środowisk do implementacji bezpiecznych modułów

Zaawansowane iteratory i współprogramy

  • Producent, konsument, filtr
  • Zawijanie współprogramów w celu uzyskania iteratorów
  • Iterator bezstanowy dla list połączonych

Wkład w ekosystem

  • Przesyłanie pakietów do MoonRocks

Paradygmat funkcjonalny w Lua

  • Funkcja mapy
  • Funkcja zmniejszania/składania

Zorientowany obiektowo Programming

  • Różne podejścia do OOP
  • Różne podejścia do dziedziczenia
  • Przykłady

Opis przejścia Lua bibliotek standardowych

Kompilacja

  • Kompilacja
  • Ewaluacja
  • Relacja z otoczeniem
  • Kawałki binarne

Zbieranie śmieci

  • Słabe tabele
  • Finalizatory, metametoda __gc

Lua kod bajtowy i maszyna wirtualna

  • Generowanie kodu bajtowego z kodu źródłowego
  • Odczytywanie i analizowanie kodu bajtowego
  • Szybki przegląd kodu źródłowego Lua maszyny wirtualnej

moduły C

  • Dzwonię do C z Lua
  • Search ścieżka i ładowanie modułów C

Dzwonię do Lua z C

  • Stos
  • Obsługa błędów
  • Kontynuacje

Obsługa wartości i typów Lua z C

  • Tablice
  • Smyczki
  • Dane użytkownika
  • Metatabele
  • Wywołania obiektowe
  • Lekkie dane użytkownika

Zarządzanie pamięcią

  • Alokatory
  • API GC

Wątki w Lua

  • Współprogramy vs wątki
  • Prawdziwa wielowątkowość i stany Lua.
Sites Published:

United Arab Emirates - Comprehensive Lua

Qatar - Comprehensive Lua

Egypt - Comprehensive Lua

Saudi Arabia - Comprehensive Lua

South Africa - Comprehensive Lua

Brasil - Compreendendo a linguagem de programação Lua

Canada - Comprehensive Lua

中国 - Comprehensive Lua

香港 - Comprehensive Lua

澳門 - Comprehensive Lua

台灣 - Comprehensive Lua

USA - Comprehensive Lua

Österreich - Lua Programmierung

Schweiz - Lua Programmierung

Deutschland - Lua Programmierung

Czech Republic - Comprehensive Lua

Denmark - Comprehensive Lua

Estonia - Comprehensive Lua

Finland - Comprehensive Lua

Greece - Comprehensive Lua

Magyarország - Comprehensive Lua

Ireland - Comprehensive Lua

Luxembourg - Comprehensive Lua

Latvia - Comprehensive Lua

España - Comprehensive Lua

Italia - Comprehensive Lua

Lithuania - Comprehensive Lua

Nederland - Comprehensive Lua

Norway - Comprehensive Lua

Portugal - Compreendendo a linguagem de programação Lua

România - Comprehensive Lua

Sverige - Comprehensive Lua

Türkiye - Comprehensive Lua

Malta - Comprehensive Lua

Belgique - Comprehensive Lua

France - Comprehensive Lua

日本 - Comprehensive Lua

Australia - Comprehensive Lua

Malaysia - Comprehensive Lua

New Zealand - Comprehensive Lua

Philippines - Comprehensive Lua

Singapore - Comprehensive Lua

Thailand - Comprehensive Lua

Vietnam - Comprehensive Lua

India - Comprehensive Lua

Argentina - Comprehensive Lua

Chile - Comprehensive Lua

Costa Rica - Comprehensive Lua

Ecuador - Comprehensive Lua

Guatemala - Comprehensive Lua

Colombia - Comprehensive Lua

México - Comprehensive Lua

Panama - Comprehensive Lua

Peru - Comprehensive Lua

Uruguay - Comprehensive Lua

Venezuela - Comprehensive Lua

Polska - Lua Programming

United Kingdom - Comprehensive Lua

South Korea - Comprehensive Lua

Pakistan - Comprehensive Lua

Sri Lanka - Comprehensive Lua

Bulgaria - Comprehensive Lua

Bolivia - Comprehensive Lua

Indonesia - Comprehensive Lua

Kazakhstan - Comprehensive Lua

Moldova - Comprehensive Lua

Morocco - Comprehensive Lua

Tunisia - Comprehensive Lua

Kuwait - Comprehensive Lua

Oman - Comprehensive Lua

Slovakia - Comprehensive Lua

Kenya - Comprehensive Lua

Nigeria - Comprehensive Lua

Botswana - Comprehensive Lua

Slovenia - Comprehensive Lua

Croatia - Comprehensive Lua

Serbia - Comprehensive Lua

Bhutan - Comprehensive Lua

Nepal - Comprehensive Lua

Uzbekistan - Comprehensive Lua