Hello World!

Czy ktoś jeszcze pamięta “Hello World!”?

No pewnie! Przecież wszyscy znają “Hello World!”!

A co oznacza ów tekst? Oczywiście nie dosłownie.

To taki tekst, co sobie go programista wypisuje na konsolę jak się uczy kodzić.

Dziękuję Januszu 1 – zaiste jest to jakaś definicja. Porównajmy ją z “jedyną słuszną” Wikipedią:

“A “Hello, World!” program is a computer program that outputs “Hello, World!” on a display device. Being a very simple program in most programming languages, it is often used to illustrate to beginning programmers the basic syntax for constructing a working program. It is also used to verify that a language or system is operating correctly.”

Następnie rozbijmy ją sobie na mniejsze części:

“A “Hello, World!” program is a computer program that outputs “Hello, World!” on a display device.”

Oczywista oczywistość – punkt dla Pana Janusza za zgodność z Wikipedią.

“Being a very simple program in most programming languages, it is often used to illustrate to beginning programmers the basic syntax for constructing a working program.”

Kolejny punkt! Nieźle – definicja Pana Janusza jest nie tylko bardzo bliska Wikipedii, jak i o wiele krótsza.

“It is also used to verify that a language or system is operating correctly.”

No i tutaj trafiamy na brakujący fragment.

Ale, jak odpali nam się ten “Hello World!” to znaczy przecież że, wszystko bangla – toż to jest równoznaczne!

Zaprawdę. Ciężko się nie zgodzić. Jednakże…

Można się spierać czy wypisanie ciągu znaków na standardowe wyjście jest wystarczającym testem czy nie, lecz zastanówmy się nad ważniejszą funkcją “Hello World!”.

“Hello World!” jest swoistą manifestacją potęgi programisty nad językiem/narzędziem/systemem.

Ja tutaj jestem szefem, ja mówię co, jak i kiedy działa!

I have the power
I haaaaave theee poweeeeerr! To bend coooode!

Poza potężnym kopem w swoje ego, “Hello World!” powinno nam też zapewnić dowód, że nasz “tool-chain” działa.

No i o ile nikt nie oczekuje, że po napisaniu “Hello World!” Pan Janusz będzie ekspertem w wybranym języku, to to że ma gotowe środowisko do pracy to już jak najbardziej.

A więc czy taki mały program jest w stanie przetestować cały zestaw narzędzi jaki mamy?

Cofnijmy się troszkę w czasie. W sumie to nie trzeba się cofać, wystarczy się obrócić i popatrzeć, to wcale nie było aż tak dawno.
Kiedyś wszystko co potrzebowaliśmy do pisania kodu to:

  • Edytor tekstowy
  • Coś co zamieni nam kilka plików tekstowych w program wykonywalny

Oczywiście to coś bywało bardziej bądź mniej skomplikowane. Ale, rzadko kiedy wymagało więcej pracy niż odpalenie jednej komendy.
Jedna komenda w linii poleceń i mamy program gotowy do uruchomienia.

Wracając do dzisiaj. Co jest od nas wymagane przy tworzeniu aplikacji? W sumie, jak tak spojrzeć to całkiem sporo.

  • Generowana dokumentacja
  • Automatyczne testy jednostkowe/funkcjonalne
  • Generowane statystyki kodu
  • Systemy kontroli wersji
  • Skonfigurowane IDE

I tak dalej. Sens w tym, że aby uzyskać działające środowisko spełniające wszystkie dzisiejsze 2 wymagania to samo “Hello, world!” już raczej nie wystarcza.

Na szczęście część wymagań środowiskowych można spokojnie, przerzucić na maszynę budującą np. wszelkie generowane dokumenty wcale nie muszą być również generowane lokalnie. Dużo IDE też jest w stanie załatwić wiele spraw za jednym zamachem 3.

Więc wracając do “Hello World!” co powinien taki program być w stanie udowodnić?

Dla mnie, niezależnie od języka, zawsze powinienem być w stanie:

  • Edytować kod
  • Budować aplikację
  • Uruchamiać testy jednostkowe
  • Generować raport z pokrycia kodu
  • Wrzucać kod do repozytorium (chociażby lokalnego)

Zatem nasze finalne “Hello World!” po zbudowaniu powinno dać nam gotową aplikację i dokumentację 4.

Najlepiej, jeżeli oba możemy pobrać jako wynik naszego continuous integration.

A jak wygląda Twoje “Hello World!”?

  1. Mityczny Janusz programowania – postać fikcyjna, wszelkie podobieństwo do jakiejkolwiek prawdziwej osoby jest przypadkowe.
  2. Oczywiście wymagania skalują się w zależności od wielkości projektu – jednakże, dowolny projekt wykraczający poza pojedynczego developera zawsze ma jakieś standardy.
  3. Inna kwestią jest instalowanie takiego kloca (tak, patrzę na Ciebie Visual Studio).
  4. No bo czym innym są testy jednostkowe, jak nie niskopoziomową dokumentacją kodu?

Be First to Comment

A penny for your thoughts