Programowanie: psychologia komputerów

Wszyscy uważamy się za ściśle związanych z programowaniem, czy to jako użytkownik, administrator, czy sam programista, ale ostatecznie jest to coś, co z biegiem lat będzie bardziej związane z naszym życiem.

W tym artykule (początek małej serii, którą planuję stworzyć), chcę podzielić się z wami kilkoma koncepcjami dotyczącymi tego, co odkryłem na temat programowania na przestrzeni lat. Nie chcę być bardzo techniczny, wyjaśnię dlaczego później. Zamierzam jednak sprawić, by zobaczyli świat moimi oczami, a jeśli podoba im się to, jak wygląda, to niech się trochę w niego zagłębią 🙂

Najpierw uderzę w najprostszy punkt, zanim przejdę do szczegółów.

Dlaczego nie mam zamiaru pisać postu technicznego?

Cóż, dla tych, którzy przeczytali mój post nt najlepsza komenda Linuksa, dowiesz się trochę o przyczynie takiego podejścia. Technologia zawsze się zmienia i jeśli napiszę coś dzisiaj, jeśli post zostanie dobrze przyjęty, zawsze będę musiał zaktualizować informacje. W dzisiejszych najpopularniejszych językach jedyną pewną rzeczą jest zmiana. Mam tu na myśli (a programiści będą w stanie podać mi powód) frameworki zawsze rosną i zmieniają się od swoich rdzeni, dzieje się tak, ponieważ pojawiają się błędy, niektóre można uznać za proste błędy, podczas gdy inne mogą się stać luki w zabezpieczeniach. Dlatego pisanie posta o konkretnym języku dzisiaj zagwarantowałoby mi może kilka miesięcy przydatności, w najlepszym przypadku rok lub dwa, ale nie o to chodzi 🙂

ważny jest prąd

Ci, którzy przeprowadzili trochę badań nad niższymi językami programowania oprogramowania, będą wiedzieć, że wszystko sprowadza się do elektryczności. W przeszłości programowanie odbywało się na poziomie sprzętowym, co oznacza, że ​​te stare zegarki, kalkulatory i wiele innych urządzeń mogło spełniać swoje przeznaczenie poprzez programowanie poprzez sprzęt komputerowy.

Problem

Zmiana programowania sprzętu jest kosztowna i skomplikowana 🙂 (przynajmniej tak mi powiedzieli 🙂 ). Dlatego powstały procesory, które właściwie wyabstrahowały tę warstwę sprzętową, aby dać nam kilka poleceń, abyśmy mogli zrobić wszystko, co było możliwe ze sprzętem, tylko teraz w warstwie oprogramowanie.

Procesory

Dzisiejsze procesory mają ograniczoną liczbę funkcji, tzw instrukcje w wielu książkach. Pozwalają one na najbardziej podstawowe funkcje, które sprzęt może wykonywać, i mobilizują informacje za pośrednictwem pamięci sprzętu.

Rejestry

Rejestry to przestrzeń, w której procesor przechowuje informacje, aby móc wykonywać pracę w jądrze, w zależności od architektury mogą mieć różną wielkość i kolejność, ale w prosty sposób ich funkcją jest przechowywanie danych wskazujących na procesorowi jeden z następujących rodzajów pracy: przenieść dane, arytmetykę i logikę oraz kontrolę przepływ. W tego typu funkcjonalnościach można podsumować wszystko.

Binario

Procesory działają na poziomie binarnym, co oznacza, że ​​tylko rozumieją 0sy 1s 🙂 . Ciekawy fakt tutaj 😀Czy pamiętasz uprawnienia GNU/Linux? Dobrze, Czy zastanawiałeś się kiedyś, jak procesor właściwie rozpoznaje te uprawnienia?? Proste 🙂 binarne. Na najniższym poziomie procesor będzie rozumiał uprawnienia jako ciąg zer i jedynek, dlatego tworzony przez nas ósemkowy ma wartości do egzekucji, 2 do czytania i 4 do pisania. Ci, którzy potrafią czytać binarnie, zrozumieją, że:

111100101111

Ustaw uprawnienia do odczytu, zapisu i wykonywania dla grupy inni podczas wykonywania i odczytu dla grupy grupa i tylko do odczytu dla właściciela pliku. Dla najbardziej ciekawskich ostatnie trzy jedynki aktywują setguid, setuid i sticky bit. Jeśli nie wiesz, co to jest ten plik binarny, mogę to wyjaśnić w innym poście, jeśli nie wiesz o setuid, setgid i lepkim bicie, to zostawię ci to do pracy domowej 😉 ale mogę też wyjaśnić gdzie indziej, jeśli to konieczne.

Gdy ciekawość wzywa...

Cóż, jeśli śledziłeś mnie tutaj, twoja ciekawość powinna zacząć zadawać ci wiele pytań, pierwsze, na które chcę odpowiedzieć (i być może jedyne, na które pozwala mi ten post, ponieważ już dużo piszę) : Jeśli rozmowy są takie same, dlaczego programy są tak różne?

Psychologia

Programowanie to sztuka uczenia się czytania w myślach 🙂 Chcę rozpocząć ten rozdział cytatem, który przeczytałem dawno temu, Edsger Dijkstra powiedział:

Jeśli debugowanie jest procesem usuwania błędów, to programowanie musi być procesem ich wprowadzania.

I nie znajduję lepszego sposobu, żeby to wszystko wyjaśnić 🙂 dlaczego programowanie jest sztuką wprowadzania błędów? więcej niż jeden będzie się zastanawiał w tej chwili. Odpowiedź jest prosta, ponieważ nasze umysły są ludzkie, a ludzie popełniają błędy 🙂 leży to w naszej naturze i będzie tak długo, jak długo człowiek będzie istniał na planecie.

komputery nie popełniają błędów

Błędy popełniamy my, zespoły zawsze będą ograniczać się do powielania tego, co im powiemy, niczego nie zakładają, niczego nie interpretują, niczemu nie sprzeciwiają się, tylko czytają i działają. Dlatego w innej książce C przeczytałem kiedyś coś takiego:

C jest szorstkim językiem, można nim wiele zdziałać, ale nigdy nie powstrzyma cię przed strzeleniem sobie w stopę, jeśli chcesz lub tak mu każesz.

To dość ciekawa prawda 🙂 Ponieważ podczas pracy na tak niskim poziomie możliwe jest, że wiele wykonywanych operacji może być destrukcyjnych, co nie zdarza się w przypadku języków nieco wyższego poziomu, ponieważ warstwy zapobiegania błędom są starsze.

wszystko jest psychologią

Każdy język, framework, programista szanuje i kieruje się jakąś filozofią, a jeśli tak nie jest, to nie ma zbyt obiecującej przyszłości. Ci z nas, którzy pracują nad UNIX-em i jego pochodnymi, prawdopodobnie znają stare powiedzenie:

Zrób jedną rzecz i rób to bardzo dobrze.

Filozofia ta jest stosowana w niektórych projektach, takich jak jądro, dość małe funkcje, które robią tylko jedną rzecz, ale robią to najlepiej, jak potrafią.

Jeśli przejdziemy do innych języków, każdy z nich będzie miał swoją funkcję i cel, niektóre bardziej liberalne, a inne bardziej restrykcyjne, ale każdy będzie podążał własnym sposobem myślenia.

naucz się czytać w myślach

Wśród programistów jest dość popularne powiedzenie, że istnieją setki sposobów rozwiązania tego samego problemu. To prawda, ale w tym aspekcie jest coś znacznie głębszego. Czytanie kodu źródłowego pozwala czytać w myślach 🙂 nie byle jakich, ale programisty (lub programistów), który go napisał. To rodzaj dogłębnego wirtualnego dziennika 🙂 pozwala uzyskać dogłębny wgląd w umysł dewelopera, a w przypadku rozbudowanych projektów pozwala zobaczyć, jak rozwijało się jego logiczne i krytyczne myślenie na przestrzeni czasu. Coś niezwykłego i co bardzo karmi umysły najmłodszych, bo można poznać najlepsze ścieżki ludzi, którzy musieli je odkrywać 🙂

Aby być konsekwentnym

Wielu programistów i specjalistów mówi, że musimy wyjść z naszego strefa komfortu, i chociaż to prawda, utrzymanie pewnych procesów i formatów jest więcej niż konieczne. Łatwo to wytłumaczyć, nasze umysły są powtarzalne i szanują struktury, jeśli codziennie piszesz kod w ten sam sposób, w krótkim czasie przestaniesz myśleć o formie i będziesz mógł skoncentrować się na tło. To pozwala zobaczyć logika programu zamiast składnia języka. I to jest powód, dla którego uważam, że uczenie się koncepcje zawsze będzie ważniejsze niż nauka formularze. To osobista opinia, ale mam nadzieję, że po przeczytaniu tego wszystkiego zrozumiesz, dlaczego tak to postrzegam 🙂 Powie ci też ktoś, kto miał do czynienia z programowaniem w C, Javie, JavaScript, Pythonie, Ruby, PHP i innych 🙂 Znajomość pojęć ułatwia pisanie kodu.

Podsumowując

Cóż, jest to pierwszy krok z serii, która, mam nadzieję, pomoże ci spojrzeć na sztukę programowania w inny sposób, a nawet zachęci cię do zagłębienia się w koncepcje, które pozwalają ci uruchomić kod, który napisałeś być może setki razy, ale nie przestali myśleć o tym, co tak naprawdę robi. I dla tych, którzy jeszcze nie zaczynali programować, ale chcieliby mieć możliwość ustawienia trochę priorytetów na tym, co naprawdę warto wiedzieć 🙂 Pozdrawiam


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Javiera G. Delgado powiedział

    Bardzo świadomy artykuł, w którym omawiane jest programowanie (w tym przypadku) być może w nowym języku, który programuje głębiej, moje poparcie dotyczy następujących.

    1.    ChrisADR powiedział

      Witaj Javier, dziękuję bardzo 🙂 Myślę, że to bardzo ważne, ponieważ zawsze chcieli mnie nauczyć tylko, jak odtworzyć kod, słynne Ctrl+C…Ctrl+V 🙂 ale nigdy mnie to nie poniosło, nawet jeśli to najprostszy problem na świecie, wolę napisać go sam niż skopiować od kogoś innego, daje mi to poczucie, że to moje dzieło.
      pozdrowienia

  2.   tratwa powiedział

    Już czekając na następny rozdział, przestałem programować dawno temu i myślę, że w kolejnym rozdziale znajdę jakiś powód swojej decyzji, naprawdę, od tego rozdziału zdejmuję czapkę.

  3.   ChrisADR powiedział

    Witaj Balu 🙂
    Cóż, wymyślę coś na następny. Uporządkowanie wszystkiego w taki sposób, aby można było śledzić wątek z dowolnego postu, jest trochę skomplikowane, ale postaram się to (i kilka innych, o które prosiłem) mieć jak najszybciej. Dzięki za komentarz. Pozdrowienia

  4.   inaczej powiedział

    Perełka artykułu! Czekam na następny…