Article View: pl.comp.programming
Article #217422Re: Narzędzia do wizualizacji systemów Embedded
From: Maciek Godek
Date: Thu, 08 Apr 2021 10:57
Date: Thu, 08 Apr 2021 10:57
77 lines
11678 bytes
11678 bytes
ś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.
Technical Details
Message-ID:
<5464719e-8925-4d87-9813-b94acaf80768n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<d1b39f9d-b32f-415a-8054-5383d4c09dc0n@googlegroups.com> <0732d3e3-0bad-4765-8588-b272b9834378n@googlegroups.com> <6c2d0f52-2d8e-4ca6-8766-dd8e7c7ce0b4n@googlegroups.com> <a8045016-bb5b-45ba-8664-d9ad28e91b00n@googlegroups.com> <ae0e5f1f-24c1-42bd-abfa-fd896b169110n@googlegroups.com> <657950da-97f7-420a-a3d0-13597899385en@googlegroups.com> <47e3881e-b68a-4769-8e09-d2be3159de58n@googlegroups.com> <03382e3f-a8a7-429f-9ab2-d59b48ffc44cn@googlegroups.com> <e54cb8c5-3584-42cc-a75e-e4ed197f4fc8n@googlegroups.com> <4ceb82cc-54f8-49c0-82f7-2a2464ed9f3fn@googlegroups.com> <ef31edca-80b2-45fa-be5c-3b8a3522acedn@googlegroups.com> <3c9199cd-da3a-442a-b9e3-e016ad28b7f8n@googlegroups.com> <ba7bbd79-47e7-4df4-b906-f9642edc0a79n@googlegroups.com> <s4d9qt$blm$1@news.icm.edu.pl> <fbc62c89-79e5-48e0-8dd6-863bfd5c029an@googlegroups.com> <70c173ca-4497-4220-a8fd-8973617a292dn@googlegroups.com> <2c6d9a96-7678-4293-9a30-40798dc822a4n@googlegroups.com> <30477950-94dd-4e7b-a409-90e47a6e933cn@googlegroups.com> <1a03e212-641b-4909-a630-52bbf4ca7b1bn@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:620a:1432:: with SMTP id k18mr1171101qkj.151.1617879462087; Thu, 08 Apr 2021 03:57:42 -0700 (PDT) X-Received: by 2002:ac8:7b8d:: with SMTP id p13mr6721671qtu.367.1617879461849; Thu, 08 Apr 2021 03:57:41 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Thu, 8 Apr 2021 03:57:41 -0700 (PDT) In-Reply-To: <1a03e212-641b-4909-a630-52bbf4ca7b1bn@googlegroups.com> Injection-Info: google-groups.googlegroups.com; posting-host=213.192.68.153; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 213.192.68.153 References: <d1b39f9d-b32f-415a-8054-5383d4c09dc0n@googlegroups.com> <0732d3e3-0bad-4765-8588-b272b9834378n@googlegroups.com> <6c2d0f52-2d8e-4ca6-8766-dd8e7c7ce0b4n@googlegroups.com> <a8045016-bb5b-45ba-8664-d9ad28e91b00n@googlegroups.com> <ae0e5f1f-24c1-42bd-abfa-fd896b169110n@googlegroups.com> <657950da-97f7-420a-a3d0-13597899385en@googlegroups.com> <47e3881e-b68a-4769-8e09-d2be3159de58n@googlegroups.com> <03382e3f-a8a7-429f-9ab2-d59b48ffc44cn@googlegroups.com> <e54cb8c5-3584-42cc-a75e-e4ed197f4fc8n@googlegroups.com> <4ceb82cc-54f8-49c0-82f7-2a2464ed9f3fn@googlegroups.com> <ef31edca-80b2-45fa-be5c-3b8a3522acedn@googlegroups.com> <3c9199cd-da3a-442a-b9e3-e016ad28b7f8n@googlegroups.com> <ba7bbd79-47e7-4df4-b906-f9642edc0a79n@googlegroups.com> <s4d9qt$blm$1@news.icm.edu.pl> <fbc62c89-79e5-48e0-8dd6-863bfd5c029an@googlegroups.com> <70c173ca-4497-4220-a8fd-8973617a292dn@googlegroups.com> <2c6d9a96-7678-4293-9a30-40798dc822a4n@googlegroups.com> <30477950-94dd-4e7b-a409-90e47a6e933cn@googlegroups.com> <1a03e212-641b-4909-a630-52bbf4ca7b1bn@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <5464719e-8925-4d87-9813-b94acaf80768n@googlegroups.com> Subject: Re: Narzędzia do wizualizacji systemów Embedded From: Maciek Godek <godek.maciek@gmail.com> Injection-Date: Thu, 08 Apr 2021 10:57:42 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit