-
Data: 2021-04-08 12:57:41
Temat: Re: Narzędzia do wizualizacji systemów Embedded
Od: Maciek Godek <g...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]środa, 7 kwietnia 2021 o 22:07:20 UTC+2 Maciej Sobczak napisał(a):
> > (Akurat w przypadku deski jestem bez trudu w stanie sobie wyobrazić, że może być
częścią dokumentacji jako referencyjna jednostka długości w jakimś projekcie)
> Brawo. Czyli rozumiesz już różnicę pomiędzy artefaktem, który jest na ścieżce
generacji produktu od takiego, który nie jest.
> Ta deska referencyjna jest dokumentacją. Ale deska użyta do budowy budy dla psa już
nie jest - dokładnie tak było z diagramami parę postów wcześniej.
Teraz złap się czegoś, żeby nie spaść z krzesła: buda dla psa też może być
dokumentacją. Wraz z każdą użytą w niej deską.
> > > Bo medium może być współdzielone. Nadal jednak odróżniam te dwie rzeczy.
> > W porządku. Ty odróżniasz. Ale Wikipedia, na którą się powołujesz, nie odróżnia.
> Może ktoś kiedyś dopisze. :-D Wikipedia nie jest wykuta w kamieniu.
To nie o to chodzi.
Chodzi o to, że Ty stwierdziłeś, że "Jeżeli diagram służy do generowania kodu, to
*nie* jest dokumentacją, tak samo jak kod źródłowy (który też służy do generowania
czegoś) nie był dokumentacją", natomiast na moje pytanie o to, dlaczego nie,
odpowiedziałeś linkiem do artykułu na Wikipedii, z którego odpowiedź na to pytanie w
żaden sposób nie wynika.
Definicja, którą podaje Wikipedia, jest bardzo inkluzywna: "rodzajem nadrzędnym" czy
też "genus proximum" dokumentacji jest "dowolny materiał" (czyli bardzo dużo
przedmiotów podpada pod tę deskrypcję), natomiast "różnicą gatunkową" czy też
"differentia specifica" jest to, że "służy do opisania, wyjaśnienia bądź
poinstruowania".
Na ile do tej pory zdołałem się zorientować, definicja dokumentacji, którą Ty masz na
myśli, byłaby taka, że dokumentacja to "materiał, którego główną funkcją jest
opisanie, wyjaśnienie bądź poinstruowanie", albo "materiał stworzony przede wszystkim
w celu opisania, wyjaśnienia" itd.
To jest mniej inkluzywna definicja, i oczywiście możesz się na nią powoływać, ale w
momencie, kiedy powołujesz się na inną definicję, żeby uzasadnić coś, co wynika z
Twojej definicji, wprowadzasz tylko zamieszanie (moim zdaniem dość niepotrzebnie).
Przy okazji - odnośnie Twojego wcześniejszego rozróżnienia na "definiowanie i
dokumentowanie" -- dokładnie z tym samym mamy do czynienia w prawie.
Dokumenty prawne - ustawy, rozpotrządzenia - są zarazem "źródłem prawa" w tym sensie,
że definiują, jakie działania są legalne.
> > Studiowanie kodu źródłowego nie jest formą inżynierii wstecznej.
> https://en.wikipedia.org/wiki/Reverse_engineering
>
> Zdumiewająco duża część tego artykułu, w odniesieniu do oprogramowania, dotyczy
właśnie różnych form wyciągania wiedzy z kodu źródłowego. Czytanie kodu źródłowego to
jest właśnie reverse engineering.
Znamienne, że artykuł zaczyna się od uwagi: "This article has multiple issues."
W ogólności jest raczej dość długi, więc jeżeli jest jakieś zdanie albo akapit, który
miałbyś na myśli, to pewnie wskazanie albo przytoczenie go ułatwiłoby komunikację.
Moją uwagę przykuło zdanie (na początku sekcji 2.3 pt. "Source code"):
"A number of UML tools refer to the process of importing and analysing source code to
generate UML diagrams as "reverse engineering.""
Co jest znamienne, bo po pierwsze pokazuje, jak mętne i niedookreślone jest pojęcie
"reverse engineeringu", a po drugie, że zwolennicy najwidoczniej UML uważają, że ich
język jest "notacją, w której wyraża się źródłowa intencja budowy systemu". Podczas
gdy tym czasem bardzo wiele procesów wytwarzania oprogramowania w ogóle nie
uwzględnia UMLa na żadnym ze swoich etapów, i jeżeli w wyniku "reverse engineeringu"
za pomocą wspomnianych narzędzi otrzymasz jakiś artefakt, to on nie będzie żadnym
odtworzeniem czegokolwiek.
> > Ale to nie jest jedyny aspekt. Jakiś czas temu zauważyłem, że studiowanie
definicji przychodzi mi z pewnym trudem -- bo definicje są z natury rzeczy raczej
abstrakcyjne. Z tego też względu lubię mieć w kodzie przykłady użycia różnych
definiowanych przez siebie funkcji. W moim doświadczeniu posiadanie takich
konrketnych, namacalnych przykładów jest najefektywniejszą formą dokumentacji, z
jakiej do tej pory korzystałem.
> Jak najbardziej.
> Ale Knuth w swojej słynnej książce specjalnie podjał najpierw wysiłek opracowania
języka, który nie miał żadnej znanej implementacji, żeby z jednej strony zapewnić
sobie precyzję opisu, ale z drugiej nie sugerować, że te przykłady są fragmentami
konkretnych projektów. W ten sposób chciał zachować czystość narracji.
To też jest przykład, który dla mnie jest znamienny: książka Knutha jest raczej
słynna z tytułu i nazwiska autora, niż z tego, żeby była popularną lekturą wśród
młodzieży.
Po części problem wynika stąd, że Knuth zaczął ją pisać w latach 60., kiedy obsługa
komputerów często wymagała zaznajamiania się z ich partykularnymi zestawami
instrukcji.
Wtedy stworzenie asemblera "MIX" mogło wydawać się racjonalne, bo rzeczywiście
wiązało się z pewnymi umiejętnościami, które były wymagane.
Natomiast od tamtej pory wiele się zmieniło: upowszechnił się język C oraz inne
języki wysokiego poziomu, dzięki którym "ten sam program" można uruchamiać na różnych
zestawach instrukcji.
Pojawiły się też komputery osobiste, które za pomocą BASICa spopularyzowały
"symboliczne programowanie", i zredefiniowały rozumienie tego, czym jest
programowanie, wśród kolejnego pokolenia programistów.
I tym sposobem książka Knutha - mimo że porusza tematykę uniwersalną - nie porusza
jej w uniwersalny sposób.
Dla mnie pewnym kontrastem dla tej książki jest "Struktura i Interpretacja Programów
Komputerowych", która też porusza uniwersalne kwestie, ale w sposób bardziej
uniwersalny, bo pomimo, że używa języka, którego też nikt nie używa, używa języka,
który - w przeciwieństwie do asemblera - jest ekspresywny.
To przywodzi na myśl anegdotę opowiedzianą przez Breta Victora o reakcji von Neumanna
na to, jak jeden z jego studentów opracował asembler, dzięki któremu nie trzeba było
programować w kodzie maszynowym:
https://www.youtube.com/watch?v=8pTEmbeENF4
> > No, może problemem jest to, że programowanie nie do końca jest "branżą
inżynierską".
> Podobnie, jak nie każda kupa desek to architektura.
> To nie jest tak, że "nie do końca", tylko właśnie "szerzej niż". Powszechne
praktykowanie programowania daleko wykracza poza inżynierię. Dlatego mamy masę
projektów, które z inżynierią nie mają nic wspólnego.
No może tak bardziej.
> > Dla mnie raczej znamienne jest to, że Ty twierdzisz, że branża elektroniczna jest
"technicznie najbliższa naszej".
> Tak to widzę. W sensie - tak to pamiętam z lekcji historii. Również w sensie, że te
dziedziny nawzajem się karmią.
Dla mnie branża elektroniczna jest pod wieloma względami bliższa np. hydraulicznej. W
tym sensie, że jest trochę analogii w działaniu (choć oczywiście wiele zjawisk, jak
np. indukcja, nie ma bezpośrednich odpowiedników). Natomiast historycznie wydziały
komputerowe powstawały chyba równolegle na przy wydziałach inżynierii elektrycznej i
matematyki.
> > Sądzę też, że raczej nie zaszkodziłoby programistom zapoznanie się z teorią
literatury (zwłaszcza jeżeli mają tworzyć dokumentację).
> No właśnie, ciekawą sprawę poruszyłeś. A dlaczego to programiści mają ją tworzyć?
Dawno temu pisaniem dokumentacji zajmowali się zupełnie inni ludzie. Technical
writing to poważna dyscyplina, nie powierzano tego byle komu. Zauważ, że dokumentacja
w odróżnieniu od kodu jest wizytówką firmy (w wielu projektach zleceniodawca nawet
nie jest zainteresowany kodem źródłowym poza celami archiwizacyjnymi, natomiast
dokumentację dostaje uroczyście), więc ma wpływ na postrzeganie marki. Dlatego pisarz
dokumentacji to była wyższa kasta, niż klepacz kodu.
Może i tak. Z drugiej strony, dla mnie kod źródłowy również jest dokumentacją, i
wiele "reguł dobrego pisania" obowiązuje również przy pracy z kodem.
(Tzn. oczywiście wiele kodu nie stosuje się do tych reguł).
Pod tym względem bardzo podobała mi się ta prezentacja twórcy frameworku Rails dla
Ruby'ego, w której porusza związki programowania z siedemnastowieczną poezją
francuską:
https://www.youtube.com/watch?v=9LfmrkyP81M
> Może problemem jest to, że obecnie za bardzo przeciążyliśmy pojęcie programisty?
Kiedyś programista to był ktoś, kto pisał kod. A dzisiaj programiści zajmują się
wszystkim, łącznie z psychologią i grafiką użytkową.
Z jednej strony sobie myślę, że może trochę tak. Z drugiej -- ja nadal piszę kod, i
to głównie ten kod jest owocem mojej pracy (nawet jeżeli do napisania tego kodu muszę
zdobyć wiedzę z wielu innych dziedzin).
> > W każdy razie pomiędzy programowaniem a projektem hardware'u jest przepaść.
Współcześnie większość programistów nawet nie będzie miała szans powąchać hardware'u,
na którym będzie chodził ich software.
> No właśnie. Może to też jest problem?
Może jest na wielu poziomach. Ale wydaje mi się, że przede wszystkim pokazuje, jak
bardzo "wyabstrahowaną" aktywnością stało się programowanie.
Następne wpisy z tego wątku
- 09.04.21 16:57 Maciej Sobczak
- 10.04.21 16:26 Maciej Sobczak
- 11.04.21 23:57 Maciek Godek
- 12.04.21 11:45 Maciek Godek
- 12.04.21 17:58 Maciej Sobczak
- 12.04.21 18:07 Maciej Sobczak
- 13.04.21 10:32 Maciek Godek
- 13.04.21 17:50 Maciej Sobczak
- 13.04.21 22:57 Maciek Godek
- 16.04.21 11:26 Maciek Godek
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-02-17 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2025-02-17 Chrzanów => Programista NodeJS <=
- 2025-02-17 Warszawa => Node.js / Fullstack Developer <=
- 2025-02-17 Białystok => System Architect (Java background) <=
- 2025-02-17 Białystok => Solution Architect (Java background) <=
- 2025-02-17 Gliwice => Team Lead / Tribe Lead FrontEnd <=
- 2025-02-17 Gdańsk => PHP Developer <=
- 2025-02-17 Warszawa => Senior ASP.NET Developer <=
- 2025-02-17 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-17 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-02-17 Odśnieżanie samochodu
- 2025-02-17 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-17 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-17 Pompiarze...
- 2025-02-16 PV teraz