Narzędzia programistów

Dlaczego narzędzia są ważne

  • "Ciągle większa inteligencja
    siedzi przed komputerem"
  • Jednak, każda pomoc jaką
    możecie dostać jest warta
  • Najczęściej jednak ta pomoc
    wymaga pracy również od Was

System kontroli wersji

  • Umożliwia powrót do poprzedniej wersji projektu
    • Fajne szczególnie dla symulacji/kodu fizycznego
      (nie ma problemu: "tydzień temu mi działało")
  • Umożliwia równoległą pracę nad kodem wielu osób
    • Ci z Was którzy nie używają Git-a zapewne odkryli już że na dluższą metę nie da się tak pracować
  • Umożliwia równoległą pracę nad kilkoma wersjami programu, np. produkcyjną i developeską

System kontroli wersji

  • Ja lubię Git-a, aktualnie jest IMO najlepszym rozwiązaniem.
    • Jeśli potrzebujecie lepszych referencji: jądro Linuksa jest rozwijane w Gicie
  • Tutorial: https://try.github.io/
  • Hosting repozytoriów
    • Github: Darmowe projekty Publiczne
    • BitBucket: Darmowe projekty Publiczne; Darmowe projekty zamknięte dla akademików i studentów
    • Kilin: Repozytoria dowolnego rozmiaru (bitbucket i github ma limit 1GB)

System kontroli wersji

  • Bez systemu kontroli wersji nie da się
    pracować profejsonalnie.
  • Jeśli firma w której będizecie pracować (jako programiści) nie używa takiego systemu, jest to bardzo poważny sygnał by uciekać.
  • Podobnie jeśli używa się CVS ;)

Bugtracker

  • O ilu rzeczach możecie pamiętać?
    Ja mogę pamiętać o 4 rzeczach "do załatwienia".
  • System zadań (Issue tracker) pozwala na przechywywanie list zadań do zrobienia.
  • Ułatwia pracę zespołową.
    • Ułatwia zarządzanie zespołem.
  • Kto z Was wie (albo może łatwo sprawdzić) co musi jeszcze zrobić żeby oddać mi Wasz projekt?
  • Bugtracker odpowiada na takie pytania!

Bugtracker

  • Bugtrackerem może być arkusz kalkulacyjny (najlepiej dostępny online)
  • Są różne narzędzia:
    • Youtrack: Używam, za darmo do 10 użytkownków (zarówno wersja w chmurze, jak i oprogramowanie)
    • JIRA: 10$ za wersję dla 10 osób z rocznymi aktualizacjami. Darmowa dla projektów OpenSource.
    • BugZilla: Wolne Oprogramowanie. Nie używam :)
    • FogBugz: Darmowy hosting dla dwóch osób

Bugtracker

  • Jeśli w Waszej firmie nie używa się Bugtrackera raczej jest sygnał żeby zmienić pracę.

Narzędzia statycznej analizy kodu

  • Pozwalają wykrywać wzorce sugerujące błędy.
  • Polecam: FindBugz
  • IDE IntelijIDEA ma bardzo dobre własne narzędzia do statycznej analizy kodu.

Integrated Developement Enviorment

  • Wasze środowisko programistyczne
  • Znam takie ide do Javy:
    • IntelijIDEA (sam używam)
    • Eclipse (używam na zajęciach z Wami)
    • NetBeans dobre dla początkujących.
  • Możecie używać dowolnego IDE na zajęciach projektowych.

Zastosowania IDE

  • Uruchamianie projektu; uruchamianie testów
  • Integracja z debuggerem
  • Integracja z Systemem Kontroli Wersji
  • Statyczna analiza kodu
  • Integracja z Issue Trackerem
  • Uzupełnianie składni
  • Nawigacja po kodzie
  • Refactoring kodu

Profilery

  • Narzędzia do znajdowania problemów wydajnościowych w kodzie.
  • W javie jest to Visual VM (dostępne jako polecenie jvisualvm).

Narzędzia formalne

  • Czasem dobrze jest mieć dowód że program działa (oczywiście ze względu na błędy w implementacji nie ma gwarancji poprawności). 
  • Czasem chemy np. udowodnić że dwa programy są równoważne (ważne przy optymalizatorach)
  • Czasem chcemy udowodnić że format pliów jest kompatybilny wstecznie.

To tylko pobieżny przegląd

Made with Slides.com