Przesyłanie strumieni multimediów w oparciu o UserMedia, WebRTC i ASP.NET SignalR
http://pracait.com/aktualnosci/programista-cc-czerwiec-2015/

Kuchnia pełna IT?

kuchnia-rgb

Czas wakacyjny to dla wielu czas podróżowania. Nie wiem jak Wam, ale mi często zdarza się rozpoczynać weekendowe eskapady już w piątkowe popołudnie. Siedząc za kierownicą samochodu (rzadziej, jako pasażer) pozwalam relaksować się umysłowi po całotygodniowym zgiełku. W dyskusjach, które następują po drodze czasami potrafi być gorąco („
Miałeś skręcić w drugie lewo!”), a czasami ocieramy się o tematy bliskie memu sercu, czyli te dotyczące IT. I tak gdzieś miesiąc temu, w trakcie drogi do naszych sąsiadów zza zachodniej granicy, zostałem łaskawie poproszony o wytłumaczenie różnic między kodem, programem a skryptem. Sprawa wydawać się może oczywista dla kogoś, kto „zjadł zęby” na komputerach lub jest po studiach informatycznych, ale jak to prosto wytłumaczyć laikowi?

Pora była już mocno wieczorowa, więc burczenie w brzuchu powiodło tory mojej wyobraźni ku analogiom kuchennym. I tak kod skojarzył mi się z przepisem kulinarnym. Sam z siebie nie daje wiele – nie jest daniem (produktem końcowym), a więc nim samym się nie najemy. Jest raczej opisem potrawy (problemu) i przez to platformą komunikacji z innymi kucharzami (programistami) – chociażby po to, aby pewne składniki (komponenty) udoskonalić.

Aby z przepisu (kodu) uzyskać efekt finalny musimy wymieszane składniki poddać jeszcze pewnego rodzaju obróbce termicznej (kompilacja). W tym kontekście program byłby gotową już przekąską, czymś, co konsumujemy (uruchamiamy). I mimo że możemy go doprawić (skonfigurować), to już głębsze przeróbki są w nim wykluczone – podobnie jak w programie, (bo czy bylibyśmy w stanie wymienić truskawkowe nadzienie ciasta na inne?)

„A gdzie w tym wszystkim miejsce na skrypt?” spytacie. Na szczęście tu z pomocą przychodzi danie z surowego mięsa, jak włoskie carpaccio czy, popularny w Polsce, tatar. Są to przypadki, gdy potrawę spożywa się na surowo – podobnie jest ze skryptem – nie przechodzi on procesu kompilacji (tj. zamiany z kodu na program), ale jest interpretowany „w locie” przez interpreter – specjalny program (w przypadku tatara bylibyśmy to chyba my? )

Trzymając się tego klimatu, możemy zadać kolejne pytanie: czy istnieje jeden sposób rozwiązania danego problemu w kodzie? Podobnie jak w gotowaniu, odpowiedź brzmi: nie. Tak jak z klasycznym bolognese – efekt końcowy możemy uzyskać na różne sposoby, bo składniki mogą być trochę inne (odmienna struktura kodu, podział na metody, czy użyte biblioteki i frameworki) i inna może być kolejność ich wymieszania (podejścia analityczne top-down vs. bottom-up, TDD czy też „klasyczne” kodowanie). Idąc dalej tym torem – książka kucharska byłaby standardową biblioteką użytecznych funkcji (.NETowy BCL czy C++’owy STL), a konwencje zapisu przepisów – standardami programowania w danym języku. Mamy też bez wątpienia w IT swoich guru, którzy przybliżają trendy i nadają ton, np. Okrasę (Henselman), Gessler (Julie Leerman) czy Makłowicza (Uncle Bob). Odpowiednikiem różnych kuchni świata byłyby z kolei paradygmaty programowania (funkcyjny, obiektowy, strukturalny).

Całe porównanie wydaje się też, dlatego dobre, że gotowanie bywa porównywane ze sztuką, i dokładnie tak samo jest w przypadku programowania, – choć wszystkie składniki (środowiska IDE do wytwarzania kodu), książki kucharskie (biblioteki) czy przepisy (kod open-source) są powszechnie dostępne, to nie każdy potrafi stworzyć wyśmienite danie (użytkowe oprogramowanie) i podać je na ciepło (nie przekraczając deadline’ów?).

Pewnie długo jeszcze mógłbym się snuć po tym kucharskim świecie i kto wie czy nie dotarłbym do czegoś przełomowego, lecz dojechaliśmy nagle na miejsce i zajęliśmy się innymi, bardziej przyziemnymi sprawami…


Autor: Konrad Łukasik – miłośnik .NETa w szczególe i technologii Microsoftu w ogóle. Profesjonalista z ponad 10 letnim doświadczeniem.Aktualnie pracuje jako architekt w firmie Objectivity i pomaga zespołom dostarczać oprogramowanie pierwszej klasy. Nieustannie pracuje NAD tym, aby „Wszystko było tak proste, jak to tylko możliwe, ale nie prostsze.”

Comments are closed.