Technologie używane w projekcie

Kilka uwag co do technologii używanych w projekcie:

  • Powinniście Państwo użyć przynajmniej dwóch różnych języków programowania w swoim projekcie.
  • Jeśli w opisie projektu explicite nie zostało napisane inaczej powinniście Państwo użyć przynajmniej jednego języka niskiego poziomu - C/C++/Rust (jeśli chcielibyście użyć Państwo innego języka niskopoziomowego proszę najpierw o kontakt w celu uzyskania akceptacji takiego języka).
  • W ogólności, z poprawką na poprzedni punkt i jeśli nie napisano inaczej w opisie projektu, macie Państwo dowolność w wyborze języka implementacji. Ze swojej strony proponuję następujące języki:
  • Cały kod powinien "żyć" w repozytorium gitowym przez cały czas trwania projektu (tj. pracujecie Państwo na repozytorium - niedopuszczalna jest sytuacja, w której cały projekt składa się z jednego commita).
  • Zależności w projekcie powinny być zarządzane przez odp. narzędzie. Przykładowe narzędzia:
  • Do zarządzania projektem (budowanie paczki, testowanie, generacja dokumentacji itd.) należy użyć jednego narzędzia, przykładowo:
  • Polecane narzędzia do generacji wiązań:
  • Polecane biblioteki/narzędzia do pisania testów jednostkowych:
    • Rust - wbudowane wsparcie dla testów jednostkowych (cargo test)
    • Python - pytest
    • C++ - Catch2
  • Projekty korzystające z języka Python powinny używać środowiska wirtualnego.
  • Całość aplikacji powinna być łatwo instalowalna - można założyć, że użytkownik posiada wyspecyfikowane narzędzia do budowania aplikacji i kompilatory/interpretery, ale nie można zakładać, że ma w systemie zainstalowane biblioteki z których Państwo korzystacie (oprócz biblioteki standardowej).
  • Aplikacje powinny działać na systemach Linux i Windows.