-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Sebastian Biały <h...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: PICowanie
Date: Thu, 10 Oct 2013 20:46:53 +0200
Organization: ATMAN - ATM S.A.
Lines: 73
Message-ID: <l36sn2$mol$1@node2.news.atman.pl>
References: <e...@g...com>
<5254fb82$0$21838$65785112@news.neostrada.pl>
<f...@g...com>
<l34br2$8d0$1@node1.news.atman.pl>
<a...@n...neostrada.pl>
<l35dk5$950$1@node1.news.atman.pl> <l35rdb$bid$1@mx1.internetia.pl>
<l36gv3$epe$1@node1.news.atman.pl>
<5256d47c$0$32693$65785112@news.neostrada.pl>
<l36lfa$fbj$1@node2.news.atman.pl>
<5256ecf3$0$14832$65785112@news.neostrada.pl>
NNTP-Posting-Host: 193.0.194.227
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1381430818 23317 193.0.194.227 (10 Oct 2013 18:46:58
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Thu, 10 Oct 2013 18:46:58 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:17.0) Gecko/20130801 Thunderbird/17.0.8
In-Reply-To: <5256ecf3$0$14832$65785112@news.neostrada.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:653047
[ ukryj nagłówki ]On 2013-10-10 20:07, JDX wrote:
>> Odróżniasz idiom RAII od kodu natywnego, prawda?
> Ale o co chodzi? Co ma RAII do kodu natywnego? W każdym razie chodziło
> mi jedynie o to, że cli() i sei() to nie są funkcje standardowe C czy
> też C++.
Wyobraź sobie że napiszę ten sam example bez cli/sei. Co on niby miałby
ilustrować? Sam idiom RAII nie jest przydatny, jego konkretna
implementacja już jest.
>> To nie jest prawda. Czasem chcemy mieć pewność że UART_D zostanie
>> odczytany jeszcze w sekcji krytycznej. Efektem czego jest workaround z
>> temp w C. Nie ma rozwiązań załatwiających wszystkie przypadki. To jest
>> rozwiązujące pewna sporą grupę czestych sytuacji w przerwaniach.
> No to przecież sam pokazałeś że w C obudowujemy czytanie w cli()/sei().
Ale musisz uzyć zmiennej tymczasowej i musisz *pamiętac* o sei. kod robi
się podatny na czynnik ludzki.
> A jeśli z jakiegoś powodu w tej samej funkcji potrzebujemy przeczytać
> zasób jeszcze raz, no to jeszcze raz obudujemy operację czytania. Zdaję
> sobie sprawę, że kod się komplikuje i tym samym jest bardziej podatny na
> błędy, ale w sam raz IMO w tak, nomen omen, krytycznych przypadkach jak
> CS lepiej jest sterować ręcznie a nie zdawać się na automatykę.
Dlaczego lepiej zdawać się na czlowieka a nie na automatyke absurdalnie
automatycznej rzeczy? RAII to mechanizm który obecnie jest testowany
biliony razy na sekundę na calym swiecie na wszystkich architekturach i
działa. Dlaczego miałby tu być problematyczny? Znam tylko jeden powód:
gównanie kompilatory na gówniane architektury (PIC < 32).
>> Destruktor nie "czeka" tylko wołany jest natychmiast po return.
>> Dokładnie tak jak chcę.
> Zakładając, że pomiędzy odczytaniem z chronionego zasoby a returnem nie
> ma znaczącego (w sensie czasu wykonania) kodu.
A skąd on miałby się tam wziąść? Nawej najgorsze kompilatory C++ nie
będą robiły zadnego obiektu sc. On nie istnieje w kodzie wynikowym,
zostaje po nim tylko sei w miejscach gdzie wychodzisz z funkcji. Puffff
i cała sekcja krytyczna, klasa, konstruktor itd zamienia się w dwie
instrukcje asm. To jest wlasnie ten moment którego programiści embedded
nie czają. Tam *nie* ma obiektu ani narzutu w kodzie. Kod jest taki sam
jak z C a bywa że lepszy.
>> Taki idiom daje znacznie wieksze gwarancje w dobrze zrobionym kodzie. W
>> kodzie napisanym byle jak czyli z wielkimi funkcjami - nic nie daje
>> gwarancji poza modlitwą. Subiektywnie patrząc: RAII genaruje mniej
>> błedów niż jego ręczna emulacja i miałem w życiu na to milion przykładów.
> W każdym razie ja w podanym przykładzie jakoś nie widzę wyższości C++
> nad C. Zyskujesz większą odporność na błędy ale płacisz za to mniej
> precyzyjną kontrolą nad CS.
Jesli potrzebujesz precyzyjniejszej kontroli nad cs to mozna taką zrobić
bez rezygnacji z RAII.
> Nie twierdzę, że C++ jest gorsze od C w
> zastosowaniach embedded. Twierdzę jedynie, że przykład jest słaby.
Bo miał być jakikolwiek. Np. często liczę na szablonach rozmiary typów
co pozwala mi kod przenieść między różnymi procesorami. Często
specjalizuję generyczną funckję za pomocą obiektu co pozwala mi kod z uC
testować na PC używając mocków. Jest sporo zastosowań. Żadne nie ma nic
wspólnego z obiektowością.
>> To jest coś chronione przez sekcję krytyczna. Nie ma znaczenia co to
>> jest. Probolemem wielu programistów embedded jest wlasnie to że *musza*
>> wiedzieć co to jest, choć wiedza taka zazwyczaj kończy się pisaniem
>> nieprzenośnego kodu.
> No nie wiem, mi w sam raz wystarczyłaby informacja, że to jest coś co ma
> być chronione za pomocą CS. Tak, abym nie musiał snuć domysłów. :-)
Przecież właśnie w tym kodzie to doskonale widać.
Następne wpisy z tego wątku
- 10.10.13 20:57 Grzegorz Niemirowski
- 10.10.13 21:43 Marek Borowski
- 10.10.13 21:49 Sebastian Biały
- 10.10.13 22:05 JDX
- 10.10.13 22:05 JDX
- 10.10.13 22:11 Sebastian Biały
- 10.10.13 22:26 JDX
- 10.10.13 22:31 Sebastian Biały
- 10.10.13 22:49 Marek Borowski
- 11.10.13 00:11 Sylwester Łazar
- 11.10.13 00:19 Sebastian Biały
- 11.10.13 00:53 Sebastian Biały
- 11.10.13 07:53 Marek
- 11.10.13 08:43 Zbych
- 11.10.13 08:56 Marek
Najnowsze wątki z tej grupy
- Fejk muzyczny czy nie fejk
- Raspberry Pi 3 Model B+
- Kuchenka elektryczna
- test
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
Najnowsze wątki
- 2025-03-15 przegląd za mną
- 2025-03-15 Na co komu okna
- 2025-03-15 Mój elektryk
- 2025-03-15 Fejk muzyczny czy nie fejk
- 2025-03-15 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-15 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-15 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2025-03-15 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+ experience) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-03-15 KOMU w RP3 pasuje "Rumuńska łatwość gmerania w wyborach" i dlaczego nie PO-Trzaskanym?
- 2025-03-15 China-Kraków => Key Account Manager IT <=
- 2025-03-14 Spalił się autobus :-)
- 2025-03-14 Policjanci z Piątku
- 2025-03-14 Lublin => JavaScript / Node / Fullstack Developer <=