Strona główna » programowanie

Tag: programowanie

Programowanie a oderwanie od podstaw

Niedawno czytałem wątek na Facebooku, w którym ktoś zapytał specjalistów od informatyki czy byliby w stanie sami zbudować od podstaw te różne urządzenia, z którymi pracują. Odpowiedzi były różne. Poczyniliśmy tak duży postęp techniczny, że niektórym się wydaje, że owszem, zrobią hurtownię danych, ale już pojedynczy tranzystor to kosmiczna technologia. Innymi słowy, specjalizacja, abstrakcja i miniaturyzacja oderwały niektórych profesjonalistów od źródeł ich zawodów. I nie ma w tym nic dziwnego, taki jest porządek rzeczy.

W programowaniu też widać zjawisko pewnego oderwania od podstaw, ale ma ono związek z dopasowaniem narzędzi pracy do umysłu pracującego. Weźmy na przykład kolorowanie składni. Jest tak powszechne i tak pomocne, że jej wyłączenie wprawić niektórych może w zakłopotanie, może wywołać poczucie zagubienia. Tymczasem dawniej często tak się pisało kod. I w dalszym ciągu w wielu przypadkach kod przychodzi pisać po dawnemu, gdy trzeba coś na szybko zmienić na serwerze z linii poleceń a tam czeka nas niedokonfigurowany edytor vi o niecodziennych skrótach klawiszowych.

Warto chyba przypomnieć, że programowanie nie tylko jest możliwe, ale jest całkiem wydajne w takich warunkach jak zwykły notepad. Czarno-białe litery, brak obsługi tabulatorów, brak podpowiedzi, brak podręcznego drzewa plików. To tylko przyzwyczajenia się zmieniły.

Jest to ważne także i dlatego, że wiele osób bardzo poważnie taktuje dzisiaj temat doboru narzędzi. Preferują pewne określone IDE czy określony program do administracji bazą danych oraz mają wyobrażenie takie, że te programy są niebywale złożone i koniecznie trzeba stosować te szczególnie wybrane.

Tymczasem ani nie ma takiej konieczności, ani te programy nie są szczytem złożoności. Wiele z nich można napisać samemu i w życiu programisty przychodzi taki moment, że zmuszony okolicznościami tworzy on np.:

  • Własne IDE
  • Własne webowe IDE
  • Własnego klienta SQL do administacji bazą
  • Własnego klienta GIT
  • Własnego klienta SSH, SCP, FTP
  • Własnego shella

Ze zdumieniem można wówczas odkryć, że podstawowe funkcjonalności tego oprogramowania da się wykonać w zaskakująco małych ilościach linii kodu. Te zaś przyrastają dopiero wtedy, gdy chce się wygładzić i wyspecjalizować określone obszary.

(W dawniejszych czasach nie było to rzadkością chcieć pisać własny system operacyjny, bo ludzie dzięki powszechności dyskietek i możliwości podglądu kodu BIOS-u mieli wiedzę o bootsectorach, systemach plików, zarządzaniu pamięcią. Dzisiaj to już jest wiedza nieco zapomniana.)

Liczby pierwsze a dziedziczenie w drzewie w bazach relacyjnych

Wstępem niech będzie prosty praktyczny przykład, który zobrazuje pewien problem. W relacyjnej bazie danych mamy stworzyć obsługę struktury drzewa, czyli powiązanej struktury węzłów, z których każdy ma maksymalnie jednego rodzica (korzeń drzewa nie ma rodzica w ogóle). Liście tego drzewa mają „dziedziczyć” po swoich rodzicach jakieś wartości – nazwijmy je atrybutami. Interesuje nas pozyskiwanie pełnej listy atrybutów dla danego węzła.

Czytaj więcej…

A jednak kod może być zduplikowany!

Wśród programistów krążą różne specyficzne przekonania na temat poprawnego tworzenia kodu. Trudno powiedzieć skąd te przekonania się biorą, bo też ich źródła mogą być rozmaite – czasami to tylko subiektywne opinie oparte na własnych doświadczeniach i przemyśleniach, czasami to dziedzictwo po dawnych językach programowania a jeszcze innym razem może być to wynik złożonych analiz albo nawet badań naukowych. Czasami pewne reguły tworzą się poprzez przeinaczenie lub nadmierne uogólnienie innych reguł. Dzisiaj chciałbym się odnieść do kwestii zduplikowanych fragmentów kodu, których występowanie w całym kodzie zdaje się być posądzane o bycie przyczyną wielu niedobrych rzeczy: m.in. zduplikowany kod ma utrudniać późniejsze wprowadzanie zmian oraz prowadzić do błędów. Czy tak rzeczywiście jest?

Czytaj więcej…

Identyfikatory: under_score kontra camelCase

Identyfikatory to bardzo ważny element kodu. Przeprowadzono rozmaite badania (link prowadzi do papieru z 2013 roku kompletującego namiary na chyba wszystkie najbardziej znane), które raz wspierały jeden styl a raz drugi w takim czy innym aspekcie. Ostatecznie jednak ostatnie lata wprowadziły do badań element eye-trackingu, który wykazał istotną i raczej bezdyskusyjną różnicę między tymi stylami: identyfikatory pisane stylem camelCase są wolniej przetwarzane przez ludzki mózg, ponieważ musi on podjąć dodatkową pracę w rozdzielaniu wyrazów.  Czytaj więcej…