[Zlecę] wykonanie interface'u Ethernetowego do archi tektury Z80 - Page 3

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Na koncu bloku. Jesteś *pewny* że wiedz gdzie strzela destruktor?

Quoted text here. Click to load it

Obydwa przypadki sa niebezpieczne. Wole ukryte ale *pewne* niĹź jawne i
podatne na błędy.

Quoted text here. Click to load it

Wyłacza zawsze przed } kończącym dany blok lub natychmiast po
opuszczeniu bloku inną metoda. W czym problem z tym "za późno" ? Możesz
podać przykład?

Stosowanie techniki "scoped" jest powszechne w świecie C++, choćby
boost::scoped_lock. Stosuje sie bo można. Inne języki nie mają to sie
nie stosuje.

Quoted text here. Click to load it

Nie zgadzam się. Moje doświadczenia sa zupełnie inne. To działa tak:
implementujesz raz i wiesz że działa. Przechodzisz do dalszych spraw nie
przejmując sie że zapomnisz. Po prostu nie zapomnisz. *Zawsze* zadziała.
Chyba że będzie bug w kompilatorze. Ale on może być też przy 2+2 w C.

Quoted text here. Click to load it

Możesz zacytować moją wypowiedź z której wynika wprost że skoro Ada
spowodował bum rakiety to C++ jest używany jako język firmware
samolotów? Jakieś message id?

Quoted text here. Click to load it

Ktore stanowią szum statystyczny implementacji firmware na procesorach w
ogóle. Co napisałem wydawalo mi się dość wyraźnie. Poza tym szumem - nie
stosuje się.

Quoted text here. Click to load it

Sprawdzałem. Ostatnio gówno bylo "shit". Ale ten świat idzie do przodu.

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
 >> Z tego by wynikalo ze 'ukryte' odblokowanie przerwan na koncu funkcji
 >
 > Na koncu bloku. Jesteś *pewny* Ĺźe wiedz gdzie strzela destruktor?

Wiem gdzie, to semantyka.

 >> jest mniej
 >> niebezpieczne niz nieodblokowanie przerwan w ogole?
 >
 > Obydwa przypadki sa niebezpieczne. Wole ukryte ale *pewne* niĹź jawne i
 > podatne na błędy.

No wlasnie ukryte jest wg mnie ciezej zdebugowac.

 >> No to powodzenia w
 >> debugowaniu kodu ktory ma 300kB bez OSa w celu znalezienia ktora funkcja
 >> za pozno wlacza przerwania.
 >
 > Wyłacza zawsze przed } kończącym dany blok lub natychmiast po
 > opuszczeniu bloku inną metoda. W czym problem z tym "za późno" ? MoĹźesz
 > podać przykład?

Jesli chce rozlaczyc logicznie wlaczanie i wylaczanie przerwan.

 > Stosowanie techniki "scoped" jest powszechne w świecie C++, choćby
 > boost::scoped_lock. Stosuje sie bo moĹźna. Inne języki nie mają to sie
 > nie stosuje.
 >
 >> Odwrotnie - pomaga to zamaskowac bug i zrobic go duzo trudniejszym do
 >> wykrycia.
 >
 > Nie zgadzam się. Moje doświadczenia sa zupełnie inne.

Jakbys mnie cytowal: tez sie nie zgadzam i tez moje doswiadczenia sa inne.

 > To działa tak:
 > implementujesz raz i wiesz Ĺźe działa. Przechodzisz do dalszych spraw nie
 > przejmując sie Ĺźe zapomnisz. Po prostu nie zapomnisz. *Zawsze* zadziała.

Ja nie mowie ze nie dziala. Ja mowie ze mnie by ograniczalo (za przyklad
biore kod do ostatnio robionego urzadzenia, gdzie wlaczanie przerwan
jest zupelnie gdzie indziej niz ich wylaczanie). Zupelnie gdzie indziej
== inny plik.

 >> Taaa... a te wszystkie samoloty co po swiecie lataja to w C++ pisane wg
 >> Ciebie?
 >
 > MoĹźesz zacytować moją wypowiedĹş z ktĂłrej wynika wprost Ĺźe skoro Ada
 > spowodował bum rakiety to C++ jest uĹźywany jako język firmware
 > samolotĂłw? Jakieś message id?

Wyciales za duzo cytatow to i sens stracilo. Napisales ze: "Ada to jezyk
obrosniety legeda jakosci ktora musi walczyc z faktami". A ja odpowiadam
"crap prawda", Ada to jest jezyk ktory bardzo latwo przechodzi Sil4 i
jest _powszechnie_ uzywany w pewnych galeziach przemyslu. Na pewno nie
musi walczyc z faktami.

Tak, mozesz uzyc MisraC/C++, ale uwierz mi: latwiej bedzie sie na Ade
przestawic...

 >> To ze nie wiesz/nie slyszales/nie podano do publicznej wiadomosci, nie
 >> daje prawa nikomu mowic ze Ady sie nie uzywa. Uzywa sie w bardzo
 >> powaznych zastosowaniach.
 >
 > Ktore stanowią szum statystyczny implementacji firmware na procesorach w
 > ogĂłle. Co napisałem wydawalo mi się dość wyraĹşnie. Poza tym szumem - nie
 > stosuje się.

Jak to ze statystyka, zalezy jak policzymy. Jesli cene koncowego
produktu * ich ilosc to nie bedzie to juz szum statystyczny.

 >> PS: 'crap' to sie tlumaczy jako 'gowno' (z US english), a nie
 >> 'beznadzieja'. Sprawdz w slowniku.
 >
 > Sprawdzałem. Ostatnio gĂłwno bylo "shit". Ale ten świat idzie do przodu.

shit to tez gowno. Dobrze sprawdziles, tylko za szybko skonczyles sprawdzac.

http://oxforddictionaries.com/definition/crap

--
Jerry1111

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Po co debugować coś co na pewno działa? To troche jak argument klepaczy
w C: Wole nie używać std::vector bo cięzko debugować. A ja się pytam, po
co do cholery debugować *pewny* i *działajcy* kod? Bo może sie tam
trafić bug w kompilatorze? Wszędzie się może trafić. To nie powód do
braku zaufania do kompilatora i pisania wszystkiego w asm licząc na
własną nieomylność.

Quoted text here. Click to load it

To wtedy wpadasz w podobne bagno co rozłączne wlaczanie i wylaczanie
mutexa. Po co chcesz to robić rozłacznie? Masz aż tak daleko jedno od
drugiego? Może design jest mizerny skoro sekcja krytyczna ciągnie sie
przez wiele funkcji i blokĂłw?

Quoted text here. Click to load it

Dlaczego tak to jest zrobione? Istnieje jakiś argument? Z chęcia go
poznam. Pytam, bo ostatnio widziałem kilka kawałków kodu na PC w których
nie dało się zrobić boost::scoped_lock. I nie wynikało to z przemyślenia
bądź rozsądnej potrzeby. Po prostu tak "sie napisało". Mogło sie napisać
inaczej, ale programista nie wiedział.

Mała uwaga: zawsze możesz zrobić coś na kształt move_lock jeśli
*naprawdę* musisz gdzie indziej uwolnić przerwania. Masz dwa w jednym:
nie jesteś ograniczony w scope i masz pewność że ktoś to gdzieś uwolni.

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Jak juz kod bedzie pewny i dzialajacy to idzie do biblioteki i mi wisi w
czym jest pisany. Na pewnym etapie zycia ten kod jest 'wrogi',
'niepewny' i 3x spowodowal wyciagniecie gasnicy ;-(

Quoted text here. Click to load it

Oj, moze... ale moze tak samo dla C jak i dla C++.

Quoted text here. Click to load it

Mysle ze design nie jest mizerny. Starczy powiedziec ze procek ma <5%
wolnego czasu, ok. 10% spedza w RTOS i reszta w przerwaniach. Ot, taki
sprytniejszy kontroler PWM do przetwornicy.

Quoted text here. Click to load it

Jak wczesniej napisalem: czas wykonania programu. W taki sposob mam
bardzo ladna kontrole nad wlaczaniem/wylaczaniem z priorytetami. Wiem,
mozna inaczej zrobic ale u mnie kazda us kosztuje duzo. Poza tym
kompilator glupi i nie zawsze wypelni pipeline procka tak dobrze, jak ja
to zrobie recznie.

Quoted text here. Click to load it

Ja wiem ze moge. Po prostu pokazuje ze dla roznych zastosowan sa rozne
rozwiazania. Zaczelo sie od tego ze C++ jest lepsze od C - owszem,
_czasami_ dla _niektorych_ zastosowan.


--
Jerry1111

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Więc kod na destruktorach gwarantuje że jest ok pod warunkiem braku
bugow w kompilatorze. *Tego* nie gwarantuje, ale nie przypominam sobie
takowego w gcc. Przypuszczam jednak że wiekszą masz szanse na dowolnego
innego buga w C który też będzie wymagał wyjęcia gaśnicy. Taki zawód, co
poradzisz.

Quoted text here. Click to load it

To nijak nie tłumaczy rozłacznych punktów sekcji krytycznej.

Quoted text here. Click to load it

To nijak nie tłumaczy rozłacznych punktów sekcji krytycznej.

Pokaż syntetyczny przykład w którym sekcja krytyczna *musi* być
rozwałkowana.

Quoted text here. Click to load it

Bzdua. Zaczeło się od tego że Microchip dostarcza rozwiązania z lat 80
dla lemmingów. Pomimo tego że moze dostarczyć darmowe ciastko nie robi
tego. A potem już poleciała standardowa dyskusja broniąca
"wystarczającego C" jakie już wiele razy widziałem.

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Pod warunkiem ze nie zapomnisz napisac destruktora. Kod w C bedzie
dzialal tak samo dobrze jesli nie zapomnisz wlaczyc przerwan. Ale to
troche tak, jakby sie chcialo napisac "Hello, world" i zapomnialo o
printf("Hello, world"); - przed tym sie nie zabezpieczysz.

Quoted text here. Click to load it

Tlumaczy - warunki sa sprawdzane w zupelnie roznych miejscach.
Stworzenie poprawnej logiki do tego wymagalo troche sprytnego myslenia
zeby 7 tranzystorow dobrze sterowac, ale bylo warto. Moglbym status
trzymac w zmiennej i miec funkcje ktora by sterowala przerwaniami na
podstawie tej zmiennej, ale robi to za mnie swiat zewnetrzny procka.

Nawet bym to w C++ se napisal, tylko kto mi da cykle zegarowe procka na
cos takiego?

Poza tym to nie jest taka ksiazkowa sekcja krytyczna, to sie dzieje w
przerwaniach i ilosc aktualnie nalozonych na siebie przerwan ma pewien
wplyw na priorytet (czyli poczatek i koniec takiej 'udawanej' sekcji
krytycznej bedzie sie wykonywal z roznymi priorytetami - logika jest
dosc zagmatwana). To wszystko narzucone przez hardware jaki musi byc
sterowany w czasie rzeczywistym. Sztuczka w tym zeby nie tracic czasu na
sprawdzanie tych warunkow bo to wszystko sie wykonuje co 10/20/100/500us
(a jest tam troche logiki i dosc duzo DSP).

Quoted text here. Click to load it

Wylaczam przerwanie, cos sie robi i chce wlaczyc przerwanie. W
zaleznosci co sie stalo w miedzyczasie albo wlaczam albo nie. Z
destruktowem musialbym kombinowac i miec jakies parametry mowiace czy
destruktor ma przerwanie wlaczyc czy nie.Tak, wiem, da sie to zrobic na
rozne sposoby, tylko skad ja kuzwa wezme tyle taktow asemblera na to?
Juz pisalem - jedna mikrosekunda jest droga w tej aplikacji, wiec
powstala troche niekonwencjonalna logika.

Quoted text here. Click to load it

Czyli kompilator C - nazywajmy rzeczy po imieniu.

Quoted text here. Click to load it

Czyli kompilator C++.
Aha - polemizowalbym z tym 'darmowe'...

Zapominasz o jednym - na ile wycenisz koszt szkolenia typowego inzyniera
elektronika zeby umial wykorzystac C++? To sie nie oplaca - chcesz robic
sztuke (perfekcyjna i ladna, ale tylko sztuke - bo to nie zmieni sposobu
dzialania urzadzenia) dla sztuki, a tu chodzi o zarabianie kasy. Nic
dziwnego ze ludzie sie nie zgadzaja.

Quoted text here. Click to load it

Czas zaakceptowac? ;-)

--
Jerry1111

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Nie widzisz róznicy pomiędzy "zapomniałem raz napisac destruktora" a
"zapomniałem napisać pierdyliard miejsc z sei()"? Przeciez oto tu
chodzi. Żeby nie zapomnieć, to kompilator ma zajmować się duperelami
tego typu.

Quoted text here. Click to load it

Dlaczego uwaĹźasz Ĺźe C++ zabiera jakies cykle zegarowe?

Quoted text here. Click to load it

OK, w więc na *typowy* problem blokowania przerwań masz *szczególny*
przykład gdzie to się nie nada. Jakie to częste w dyskusjach o C++ na uC ...

Quoted text here. Click to load it

Typowy pustak argumentowy polega na tym że "muszisz szkolić z C++". Nie
musisz. Zaleta C++ jest to że możesz pisać w C i *powoli* uzywać za
darmo ficzerów. To mogą byc maultkie piedoły typu destruktory i już
podnosisz jakośc kodu za darmo - zarówno jest to łatwiejsze w utrzymaniu
jak i teĹź nie generuje jednego bajtu kodu maszynowego a jest pewne.

Quoted text here. Click to load it

Bierz BASCOma. NiektĂłrym jednak zaleĹźy na tym Ĺźeby kod utrzymywac,
dodawać ficzery, poprawiać bugi i refaktoryzować. Z pierdyliardem cli()
/ sei() miałbym, z każdym z tych spory kłopot co przekłada się na tą
Twoją ekonomie.

Quoted text here. Click to load it

Gdybym postulował przejście na haskela to bym się nie dziwił. Ale ja
mówie o darmowym ciastku. Kompilator/składnia identyczna. Większośc kodu
przekompiluje się na tyle gładko, że jak nawet lemmingowi podstawić g++
zamiast gcc to nie zauważy. To bezbolesne. Opór ma źródło w psychice a
nie merytorycznych argumentach.

Re: [OT] [Zlecę] wykonanie interface'u Ethernet owego do architektury Z80

napisaC5%82(a):

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

Nonsens, i to ciC4%99C5%BCkiego kalibru. Na poczC4%85tku tej dyskusji=
 pisaC5%82em, C5%BCe w  =

C++ musisz uwaC5%BCaC4%87 czego nie uC5%BCywaC4%87. WeC5%BA typoweg=
o elektronika, ktC3%B3ry C  =

uC5%BCywa jak makroasemblera, a w C++ nie pisaC5%82 i kaC5%BC mu coko=
lwiek napisaC4%87.  =

RC4%99czC4%99 ci, C5%BCe efektem bC4%99dzie przeroC5%9BnC4%99ty ko=
d, korzystajC4%85cy z rzeczy, o  =

ktC3%B3rych gdzieC5%9B na szybko przeczyta i postanowi uC5%BCyC4%87 =
nie majC4%85c pojC4%99cia  =

jakie z tym wiC4%85C5%BCC4%85 siC4%99 konsekwencje (np. metody wirtu=
alne, wielokrotne  =

dziedziczenie). WiC4%99kszoC5%9BC4%87 z tych rzeczy bC4%99dzie napis=
ana bez sensu: np.  =

caC5%82y kod napisany w konstruktorach, nieC5%9BwiadomoC5%9BC4%87 ja=
k i kiedy siC4%99  =

uruchamiajC4%85 konstruktory i destruktory, przeciC4%85C5%BCone opera=
tory, gdy to  =

niczemu nie sC5%82uC5%BCy, wyjC4%85tki, w dodatku C5%BAle uC5%BCyte=
, itp. A o cechach C++,  =

ktC3%B3re dla ciebie sC4%85 tak cenne, mogC4%85 siC4%99 nawet nigdy =
nie dowiedzieC4%87.

Takie narzC4%99dzie jak C++ to moC5%BCesz daC4%87 wyC5%82C4%85cznie=
 dobrze wyszkolonym  =

programistom. WiC4%99cej trzeba zrozumieC4%87 i duC5%BCo C5%82atwiej=
 coC5%9B spieprzyC4%87.

Quoted text here. Click to load it

Quoted text here. Click to load it

Taaa, darmowym. Trzeba utrzymaC4%87 grupC4%99 programistC3%B3w, ktC3%
B3%rzy zrobiC4%85 port i  =

bC4%99dC4%85 o niego dbaC4%87. Trzeba wyszkoliC4%87 CAE/FAE, aby byl=
i w stanie to  =

wspieraC4%87. A naprawdC4%99 skorzysta z tego (w przypadku maC5%82ych=
 uC, nie piszC4%99 tu  =

o 32-bit!), jak to pisaC5%82eC5%9B? - "szum statystyczny". A zmiana po=
ziomu  =

sprzedaC5%BCy bC4%99dzie poniC5%BCej tego szumu.

ae

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Powstawia sei/cli po całym kodzie i będzie narzekać że programowanie to
ciężki zawód bo nie da się tego debugować i naczej nie da rady. Wiem,
bom widział już kilku miszczuf. Faktem jest że kod pisany przez
elektronika zazwyczaj jest gołym asm przerobionym na C ze milionem makr
bez grama wiedzy o programowaniu na jakimkolwiek poziomie abstrakcji.

Quoted text here. Click to load it

Będa o tym pamiętać. Podobnie jak nie sprawia problemu pamiętanie o tym
że nie nalezy uzywać sprintf czy conio na uC. Wiedza jak każda inna.
Zawsze ja mogę wrzucić argument że programista po dowolnym kursie C też
będzie na uC pisał gigantyczne bzdury. Ten argument ma dwa końce.

Ilu znasz programistów którzy po wpisanu a/2.5 zdziwili się czemu kod
zrobil się 10x wiekszy? To ten sam problem.

Quoted text here. Click to load it

Dlatego nie twierdze że C++ jest dla każdego. Microchip skreslił na
starcie wszystkich ktorzy chciali się rozwinąć. Dlatego unikam jak ognia
pomimo kuszącej oferty hardware tych prockow.

Quoted text here. Click to load it

Ta grupa programistów, jesli da się im sensowną architekturę, utrzymuje
się sama albo z mizernych datków. Widocznie MC zauwazył że odstaje od
świata i wsadził MIPSa co rokuje nadzieje że da się na tym coś
współczesnego skompilować a grupa pryszczatych nastolatków będzie mu
utrzymywała gcc.

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Ale u mnie co projekt to pisanie _wszystkiego_ od nowa. Wisi mi czy mam
debugowac konstruktor, makro czy funkcje.

Quoted text here. Click to load it

A bedziesz laskawy spowrotem wstawic caly kontekst?

Quoted text here. Click to load it

U mnie typowy. Od 10 lat nie napisalem ani jednego kodu embedded w
sposob *typowy* dla wiekszych maszyn. Tego sie nie da oderwac od warstwy
sprzetu jesli sie chce zarobic.

Quoted text here. Click to load it

Taaa... a kto zaplaci za pierwsze 2 miesiace zonkow podczas takiej
transformacji? To ma sens gdzies na uczelni gdzie przy pomocy fajki
mozna myslec o roznych rzeczach przez tydzien. W mojej okolicy za dzien
myslenia jednego inteligentnego idzie faktura w walucie.
Po kilku latach pracownik sie nauczy i co? Odejdzie i bedzie problem -
szukaj drugiego takiego...

Quoted text here. Click to load it

Nie jest za darmo, jesli wstawi gdzies ciag znakow "virtual" (bo nie wie
ze nie wolno) i 3 dni bedzie szukal czemu "Hello world" nie miesci sie
do flasha.

Quoted text here. Click to load it

Zrozumiales co napisalem?
Moze jeszcze masz plugin Matlab->Bascom?

Quoted text here. Click to load it

Prosze bardzo - czy ja nie mowie ze nie? Niektorym zalezy na zrobieniu,
wsadzeniu do produkcji i braniu sie za inny _produkt_.

Quoted text here. Click to load it

Darmowe nie jest. Producent musi wydac kase zeby to zrobic, klient musi
wydac kase zeby to dobrze uzywac. IMO return on investment bedzie
ujemny. Jest 6e9 ludzi i wychodzi ze jestes jedynym adwokatem.
Statystyka mowi mi ze cos nie tak.

Quoted text here. Click to load it

O!

Quoted text here. Click to load it

Znaczy nie identyczna.

Quoted text here. Click to load it

Opor ma zrodlo w koncie bankowym. Inaczej wszyscy by robili jak piszesz,
bo by wiecej zarabiali.

--
Jerry1111

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Tym fajniej busi być debugować te same błedy za każdym razem.

Quoted text here. Click to load it

Nie piszę tu o nietypowości że piszesz na uC. Mowię o tym że piszesz
nietypowo jak na uC skoro emulujesz priorytety przerwać na cli/sei
porozrzucancyh po kodzie. Na ten (mizerny) przykład u mnie są same
przypadki CriticalSection a kod jest RT jak najbardziej. Byc moĹźe mamy
rózne style pisania kodu. I nie, nie piszę firmware do migania diodą,
problemy są realne i raczej żyłują procesor na pełne osiągi.

Quoted text here. Click to load it

Jakiej transformacji? ScopedWhatever masz za 30 sekund w kodzie. JuĹź.
Działa. 0 zonków.

Quoted text here. Click to load it

Pięknie ujmujesz poziom kwalifikacji przeciętnego klepacza firmware :)

Quoted text here. Click to load it

Gorzej, jeśli wstawi gdzieś printf to może i 3 flaszy zabraknąć. I co,
porzucamy C i piszemy w asm? Fakt, dla wielu şadna róşnica.

Quoted text here. Click to load it

Ani razu w tej dyskusji nie padło słowo "matlab" o ile dobrze widzę.
Więc argumentujesz używając ukrytej wiedzy. To nie fair.

Quoted text here. Click to load it

Słusznie. Dzieki takiem podejściu zawsze zaczynasz od int main() { } i
odkrywasz kwadratowe koła za każdym razem. Ekonomia, ja rozumiem. Ja tak
nie potrafie. MoĹźe z tego wynika brak porozumienia.

Quoted text here. Click to load it

Oczywiście, jesli nie narobiłeś straszliwej kupy w C to skompiluje się
jako C++.

Quoted text here. Click to load it

Nie, z dokładnością do kupy w kodzie. Zazwyczaj wychodzi na zdrowie jej
poprawienie.

Quoted text here. Click to load it

Masz jednokierunkowe podejście do ekonomi. Faktycznie, jesli robisz małe
projekty to moje rady nie mają żadnego zastosowania. Jeśli jednak robisz
większe to nagle potrzeba refaktoringu, ponownego użycia, abstrakcji
staje sie bezpośrednio przekładalna na pieniądze. Zawodowo co prawda mam
do czynienia ze znacznie więszymi apliakcjami od strony kodu, ale zasady
są podobne - tracisz czas (i pieniądze) używając prymitywnych narzędzi,
choć pozornie wydaje się że tworzą produkt szybciej. Bez realiów cięzko
dyskutować czy Tobie taki model biznesu pasuje. Jak widze nie. To jednak
oznacza coś bardzo niefajnego: nie masz realnego przykładu na którym
możesz wykazać mizernośc C++. Bo masz tylko argument ekonomiczny i to
popraty raczej mizerną argumentacją. A taki argument jest zawsze
subiektywny, więc nie ma sensu ciągnąć dyskusji.

Mi potrzeba abstrakcji, destrutorów, traits wyszła na AVR. Dzieki temu
ostatnio firmware (specyficzny, RT) napisałem w 0.5 dnia wykorzystując
90% kodu optymalnie (tzn w C nie dało by się lepiej, musiałbym dlubac w
ASM) i 10% dopisując. Mógłbym to samo mieć w C z pomocą kilku
pokracznych makr, ale szacuje że bym się nie wydłubał przez tydzień z
ifdefów. I szacunek popieram próbą którą zarzuciłem po 3 dniach.

Byc może mi pomaga doświadczenie z duzych systemów, bo zawodowo pisuję w
C++ spore rzeczy. Myslę że to zawsze jednak ok poznać inny punkt
widzenia, nawet w ostrej dyskusji (którą to raz na jakiś czas próbuje
wzniecić). Ktoś mi tu zarzucił mesjanizm, może i racja.

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Przeciez napisalem ze _wszystko_ jest pisane od nowa. Zaakceptuj to jako
fakt, a nie oceniaj. Publiczna grupa nie jest miejscem na wyjasnianie
dlaczego tak sie dzieje.

Quoted text here. Click to load it

Jak najbardziej. Zastosowanie tez nietypowe, ale oszczedza $4.50

Quoted text here. Click to load it

Zagwarantujesz? Znaczy przyjmiesz fakture (i ja zaplacisz) za jeden
dzien pracy jesli pracownik, ktory dobrze zna C, przyszedl do naszej
firmy tydzien temu i _nie_wiem_ jakie ma pojecie o C++, jesli on straci
dzien bo mu to nie zadziala w 30 sekund? Ja byl bym ostrozny ze
stwierdzeniem typu '30 sekund i nie bedzie problemu'. W 30 sekund nawet
tego nie skompilujesz, nie mowiac juz o znalezieniu odpowiednich plikow
zrodlowych.

Quoted text here. Click to load it

Pieknie? A moze realnie?

Quoted text here. Click to load it

Rozmawiamy o kims kto zna C, niekoniecznie C++. To Ty twierdzisz ze nie
bedzie problemu przy przesiadce...

Quoted text here. Click to load it

O Bascomie tez nie fair - niepotrzebnie go ekshumowales.

Quoted text here. Click to load it

Jesli za kazdym razem kod idzie do innego klienta, to troche nielegalnie
byloby uzyc stary kod od innego klienta - nie mam kasy na wloczenie sie
po sadach. Jest udokumentowane ze calosc powstaje od nowa i nie ma problemu.
I prosze nie odpowiedz ze to znowu jest ukryta wiedza - po prostu (tak
jak i z Matlabem) _zalozyles_ sobie cos, co sie nie sprawdzilo.

Quoted text here. Click to load it

Ano moze.


Miala byc identyczna. Bezwarunkowo.

Quoted text here. Click to load it

j.w., mialo byc bezwarunkowo.

Quoted text here. Click to load it

Wyciagasz dosc duzo wnioskow bez posiadania wystarczajacej ilosci danych
- to jest odwazne.

Quoted text here. Click to load it

Alez ja wcale nie mam zamiaru tego zrobic. C++ lubie i uzywam. Po prostu
Ty chcesz przekonac p.m.e. ze C jest be, a C++ jest cacy. A to co ja
mowie to jest to, ze narzedzie dobiera sie w zaleznosci od problemu
ktory trzeba rozwiazac.
Jesli chodzi o poprzednie watki dotyczace Ady: odpowiedz na pytanie, czy
dla dobrego programisty ma znaczenie w jakim jezyku cos napisze?

Quoted text here. Click to load it

Argument ekonomiczny jest podstawowy: ksztaltuje rzeczywistosc.

Quoted text here. Click to load it

No i dla mnie taki kod o kant pupy rozbic. Ani test harness nie ma, ani
kodu legalnie nie uzyje. Jest szybciej, zgoda, ale jest tez (dla mnie)
bezuzytecznie.

Poza tym jesli chodzi o 'optymalnie' to bym uwazal: u nas w firmie jest
wiedza jak ukladac pojedyncze instrukcje w C zeby uzyskac pozadany efekt
od optymalizatora. Kod w C sie wykona tak samo, tylko w innym czasie.
Jest to tez powod dlaczego uzywamy 2.5 letniej wersji kompilatora a nie
najnowszej - bo optimizer znamy juz na wylot z wszystkimi jego fanaberiami.

Quoted text here. Click to load it

To jeszcze jezyki non-managed sa na PCta uzywane? (tak wiem, pewnie
'duzy system' to cos wieksze od PCta ;-) )
Pytam serio, bo juz jakis czas nie widzialem wiekszej _nowej_ aplikacji
nie napisanej w czyms managed.

Quoted text here. Click to load it

Musisz zaakceptowac ze rzeczywistosc nie jest idealna. Zycie stanie sie
latwiejsze ;-)


--
Jerry1111

Re: [OT] [Zlecę] wykonanie interface'u Ethernet owego do architektury Z80

napisaC5%82(a):

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

NaprawdC4%99 masz taki problem? Ja zawsze w umowie zaznaczam, C5%BCe c=
zC4%99C5%9BC4%87 kodu  =

bC4%99dzie pochodziC4%87 z naszych bibliotek, na ktC3%B3re udzielamy =
niewyC5%82C4%85cznej  =

bezterminowej licencji. Jak dotychczas zawsze byC5%82o to akceptowane, =
czasem  =

po krC3%B3tkich negocjacjach.

ae

Re: [OT] [Zlecę] wykonanie interface'u Eth ernetowego do architektury Z80
Quoted text here. Click to load it

Zalezy jaki klient. Sa i tacy co chca zeby _calosc_ informacji zostala
kompletnie usunieta po zakonczeniu roboty (z reguly zaczyna sie dyskusja
jak sie tego pozbyc z backupow serwerow). Klient nasz Pan.

Sa tez klienci gdzie rzeczy standardowe uzywamy swoje bez problemu, no
bo ile mozna pisac roznych driverow do UART na jeden procek? ;-)


--
Jerry1111

Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z 80
Hello Jerry1111,


Quoted text here. Click to load it

Ale to jest jakieś nieporozumienie - ochrona praw producenta nie sięga
tak daleko. Ochronie podlegają równiez prawa autora.

Na przykład ja zawsze zastrzegam projektując jakąkolwiek elektronikę,
że klient otrzymuje _niewyłączne_ prawo do korzystania z projektu.
Przecież nie wymyślę nowej konfiguracji przetwornicy czy też nie
policze inaczej transformatora dla podanych parametrów.

Uprzedzając: żylem 20 lat z programowania i tu też zawsze bylo podobne
zastrzeżenie - uprzedzałem klientów, że o ile rzeczy, które sa
unikalnego dla niego można trakttować na wyłączność, to sposoby
realizacji - jako nieunikalne - nie dają się zastrzec. Klienci na
przykład chcieli zastrzec interfejs. To tlumaczę, że np. układ pól,
przycisków i sposób nawigacji są uniwersalne i nie mogę go uznać za
zastrzeżony tylko dla nich, bo to byłoby absurdem.

(tak, wiem - Apple i inni patentują takie pierdoły, że zęby bolą)

--
Best regards,
 RoMan
We've slightly trimmed the long signature. Click to see the full one.
Re: [OT] [Zlecę] wykonanie interface' u Ethernetowego do architektury Z80
Quoted text here. Click to load it

Ja nie mam nic przeciwko - klient nasz pan. Tak chce, tak ma, taka
bedzie tez faktura. Przeciez nie powiem nie ;-)
Dla niektorych klientow jest to wazne, dla innych nie ma znaczenia. Byl
jeden klient, gdzie przy dyskusji o kodzie zrodlowym padlo
sdtwierdzenie: "Fabryka bedzie wiedziala jak to zaprogramowac? Tak? No
to mi kod zrodlowy nie potrzebny - jak cos bede chcial zmienic to mi to
zmienicie".

Quoted text here. Click to load it

To jest roznie. U mnie tematy sa tak rozne od siebie, ze tego typu
decyzje sa indywidualne dla kazdego projektu.

Quoted text here. Click to load it

Ano mielismy jednego co chcial - zastrzeglismy. Znaczy klient zastrzegl
sam, mysmy mu cala papierkologie przygotowali.

Quoted text here. Click to load it

Jak placi? Prosze bardzo, pomozemy.

--
Jerry1111

Re: [OT] koszt 'virtual' na ARM

Quoted text here. Click to load it
Moją magisterkę na ARMa z 8k flash i 32k flash piszę w hardcore C++ z:
- obiektami
- szablonami
- metaprogramowaniem (łącznie z testem, czy boost::mpl zadziała)
W planach właśnie dodanie polimorfizmu dynamicznego.

Dopisałem do projektu następujące klasy:
class foo{
public:
     virtual void f()
};
class bar:public foo{
     void f()
};
class foobar:public bar{
     void f()
};
class oof:public foo{
     void f()
};

I do main dopisałem:
         int ll=uart_read_int();
         foo f;
         bar b;
         foobar fb;
         oof o;
         foo* ff;
         if(ll==1){
             ff=&f;
         }else if(ll==2){
             ff=&b;
         }if(ll==3){
             ff=&fb;
         }else{
             ff=&o;
         }
         ff->f();

Binarka przytyła po tym o 200 bajtów:
    text    data     bss     dec     hex filename
    4012       8     168    4188    105c firmware.elf
    4212       8     168    4388    1124 firmware2.elf

- 28 bajtĂłw to sam wypisywany tekst
- po 8 bajtów na metodę [1]
- 48 bajtów dodatkowego kodu w main (o tym za chwilę)
- po 16 bajtĂłw na vtable dla klasy

W main został wygenerowany następujący kod:
    0x000006a4 <+56>:    ldr     r3, [pc, #224]  ; (0x788 <main()+284>)
    0x000006a6 <+58>:    str     r3, [sp, #4]
    0x000006a8 <+60>:    ldr     r3, [pc, #224]  ; (0x78c <main()+288>)
    0x000006aa <+62>:    str     r3, [sp, #8]
    0x000006ac <+64>:    ldr     r3, [pc, #224]  ; (0x790 <main()+292>)
    0x000006ae <+66>:    str     r3, [sp, #12]
    0x000006b0 <+68>:    ldr     r3, [pc, #224]  ; (0x794 <main()+296>)
    0x000006b2 <+70>:    str     r3, [sp, #16]
    0x000006b4 <+72>:    ldr     r3, [r4, #0]
//czyli po 2 instrukcje na stworzenie obiektu na stosie

    0x000006b6 <+74>:    cmp     r3, #1
    0x000006b8 <+76>:    beq.n   0x6c6 <main()+90>
    0x000006ba <+78>:    cmp     r3, #2
    0x000006bc <+80>:    beq.n   0x6ca <main()+94>
    0x000006be <+82>:    cmp     r3, #3
    0x000006c0 <+84>:    bne.n   0x6ce <main()+98>
    0x000006c2 <+86>:    add     r0, sp, #12
    0x000006c4 <+88>:    b.n     0x6d0 <main()+100>
    0x000006c6 <+90>:    add     r0, sp, #4
    0x000006c8 <+92>:    b.n     0x6d0 <main()+100>
    0x000006ca <+94>:    add     r0, sp, #8
    0x000006cc <+96>:    b.n     0x6d0 <main()+100>
    0x000006ce <+98>:    add     r0, sp, #16
// 13 instrukcji na obsłużenie 4 if-else

    0x000006d0 <+100>:   ldr     r3, [r0, #0]
    0x000006d2 <+102>:   ldr     r3, [r3, #0]
    0x000006d4 <+104>:   blx     r3
// 3 instrukcje na wywołanie funkcji wirtualnej

To gdzie są te straszne koszta 'virtual'?


[1]
Dump of assembler code for function foo::f():
    0x00000670 <+0>:     ldr     r0, [pc, #4]    ; (0x678 <foo::f()+8>)
    0x00000672 <+2>:     b.w     0x3b4 <uart_print(char const*)>
    0x00000676 <+6>:     nop
    0x00000678 <+8>:     lsrs    r7, r3, #18
    0x0000067a <+10>:    movs    r0, r0

--
Pozdrawiam
Michoo

Re: [OT] koszt 'virtual' na ARM


Quoted text here. Click to load it

[snip kod]

Quoted text here. Click to load it

[snip szczegC3%B3C5%82y]

Nie bC4%99dzie to C5%BCaden argument w dyskusji na temat metod wirtual=
nych, ale z  =

ciekawoC5%9Bci do maC5%82ego programu w C+asm (na PIC24) dopisaC5%82e=
m nastC4%99pujC4%85ce  =

wiersze:

const char msg1[] 3D% "foo\r\n";
const char msg2[] 3D% "bar\r\n";
const char msg3[] 3D% "foobar\r\n";
const char msg4[] 3D% "off\r\n";

NastC4%99pnie w main():

    const char *msg;
    int ll 3D% recv(0); /* odczyt z czegoC5%9B innego niC5%BC uart, nieis=
totne z czego,  =

0 to numer kanaC5%82u */

         if (ll 3D%3D 1) {
        msg 3D% msg1;
         } else if (ll 3D%3D 2) {
        msg 3D% msg2;
         } if (ll 3D%3D 3) {  /* tuC5%9B siC4%99 chyba pomyliC5%82, =
ale zostawiC5%82em bez  =

else, C5%BCeby byC5%82o tak samo */
        msg 3D% msg3;
         } else {
        msg 3D% msg4;
         }
    uart_send_str(msg);

Przy -O0 binarka zwiC4%99kszyC5%82a siC4%99 z 1452 do 1575 bajtC3%B3=
w (123 bajty).
Przy -Os binarka zwiC4%99kszyC5%82a siC4%99 z 1197 do 1269 bajtC3%B3=
w (72 bajty).

Po poprawieniu buga z "else":
-O0 : 1452 do 1578 (126)
-Os : 1197 do 1287 (90)

OgC3%B3lna zmiana przy wC5%82C4%85czeniu optymalizacji jest maC5%82a=
, bo to program tylko  =

do testowania sporego kawaC5%82ka kodu pisanego w asemblerze i C tam ma=
C5%82o jest.

Sam nie wiem czy i jakie wnioski z tego wyciC4%85gaC4%87.

ae

Re: [OT] koszt 'virtual' na ARM
Quoted text here. Click to load it
[...]
Tylko zauważ, że chciałem tu zaprezentować koszt związany z funkcjami
wirtualnymi - uĹźycie klas i funkcji wirtualnych do wypisywania kilku
napisów to 'trochę' głupi pomysł.

Odpowiednikiem funkcji wirtualnych z którym się spotkałem w C jest
wskaźnik na funkcję a z wtedy użycie metod wirtualnych to dodatkowy
koszt VTABLE.

Quoted text here. Click to load it
Rzeczywiście się pomyliłem pisząc kod, ale w poście statystyki są dla
poprawionego kodu, przeczyłem sam kod.

Quoted text here. Click to load it
+ 40 bajtĂłw Os
+ 128 bajtĂłw O0

Quoted text here. Click to load it
+ 72 bajty Os
+ 132 bajty O0

Kompiluję na gcc-4.7.0 z:

COMMON_FLAGS= -ggdb -Os $(INCLUDES)  -mcpu=cortex-m3 -mthumb
-D__thumb2__ -msoft-float -mfloat-abi=soft
CXXFLAGS=$(COMMON_FLAGS) -std=gnu++11 -fno-exceptions -fno-rtti

Quoted text here. Click to load it
Ĺťe kod w THUMB jest wydajniejszy niĹź w PIC32 ;) I Ĺźe hardcore c++ bez
optymalizacji jest małą masakrą - całość przy O0 spuchła do 8176 -
prawie 2 razy (a przebudowałem tylko projekt, bez bibliotek).

--
Pozdrawiam
Michoo

Re: [OT] koszt 'virtual' na ARM

Quoted text here. Click to load it

ZerknC4%85C5%82em w kod wynikowy: same instrukcje to 14 sC5%82C3%B3w=
 (42 bajty). WiC4%99kszy  =

kod wynika ze sposobu przechowywania stringC3%B3w we Flashu - pakowane =
sC4%85 w 2  =

mC5%82odsze bajty trzybajtowego sC5%82owa. A jak jest nieparzyC5%9Bci=
e, to na ostatni  =

bajt traci siC4%99 caC5%82e sC5%82owo - czyli na stringi poszC5%82o =
39. A 9 bajtC3%B3w siC4%99 nie  =

mogC4%99 doliczyC4%87...

Quoted text here. Click to load it

PIC24. Kod jest chyba doC5%9BC4%87 podobny, ale stringi siC4%99 efekt=
ywniej pakujC4%85 w  =

ARMie.

ae

Site Timeline