eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
Ilość wypowiedzi w tym wątku: 81

  • 61. Data: 2012-05-05 22:50:52
    Temat: Re: [OT] koszt 'virtual' na ARM
    Od: Michoo <m...@v...pl>

    On 05.05.2012 19:47, Jerry1111 wrote:

    > 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.
    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(){uart_print("foo\r\n");}
    };
    class bar:public foo{
    void f(){uart_print("bar\r\n");}
    };
    class foobar:public bar{
    void f(){uart_print("foobar\r\n");}
    };
    class oof:public foo{
    void f(){uart_print("oof\r\n");}
    };

    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


  • 62. Data: 2012-05-05 22:59:30
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-05-05 21:39, Jerry1111 wrote:
    >> Tym fajniej busi być debugować te same błedy za każdym razem.
    > Przeciez napisalem ze _wszystko_ jest pisane od nowa.

    No właśnie.

    >> Jakiej transformacji? ScopedWhatever masz za 30 sekund w kodzie. Już.
    >> Działa. 0 zonków.
    > 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?

    Co ja mogę poradzić na biędę na rynku pracy? Jeśli twój target to
    studenci mizernych uczelni jako pracownicy to nie masz wyjścia. Znam
    przynajmniej kilka firm w okolicy które były zmuszone robić gówno, bo
    absolwent tylko w tym grzebać potrafi.

    > 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.

    W 30 sekund jestem w stanie to napisać i użyć przy okazji kompilując.
    Cały kod źrodłowy podałem kilka postów wcześniej. Szukasz dziury w całym.

    >> Pięknie ujmujesz poziom kwalifikacji przeciętnego klepacza firmware :)
    > Pieknie? A moze realnie?

    Tu się zgadzam w 100%. Zazwyczaj jak podnoszę temat C++ na uC to dostaje
    po ryju (z braku argumentu) od przeciętnego lemminga, najczęsciej z
    gatunku '51. Zaczyna to być nawet zabawne. Wiem, złośliwy jestem.

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

    Tu nie ma przesiadki. Tu jest dodatek.

    >> Słusznie. Dzieki takiem podejściu zawsze zaczynasz od int main() { } i
    >> odkrywasz kwadratowe koła za każdym razem.
    > 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.

    Dorzucasz kolejny utajniony argument: otwartość źródeł i handel nimi.
    Nie było o tym mowy.

    Jeśli miałbym od Ciebie kupić kod wręcz zażądał bym aby kod był już
    testowany wczesniej a nie pisany od zera. Może ja specyficzny jestem
    klient, ale jakoś nie wierze na słowo honoru że pisząc od 0 nie
    popelniasz bledow. No nie wierzę i już.

    > I prosze nie odpowiedz ze to znowu jest ukryta wiedza - po prostu (tak
    > jak i z Matlabem) _zalozyles_ sobie cos, co sie nie sprawdzilo.

    Bzdura. Najpierw wyciągasz argument o tym że przypadkowo robisz
    softwareowo kawalek hardware (kontroler przerwań), a potem wymyślasz
    dodakowy waunek brzegowy o tym że musisz pokazaź źródła. Za chwile
    dowiem się że masz klientów którzy robią grep class na plikach i nie da
    się. Za dużo tego pojawia się z nienacka. Nierozmawiam o *twoich*
    specyficznych problemach tylko o tym że do wiekszości projektów uC C++
    można stosować (o ile jest kompilator).

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

    Nikt o tym nie mówił. Zacytuje sam siebie: "Większośc kodu przekompiluje
    się na tyle gładko [...]". Co do problemów to wszelkiego rodzaju gówna
    typu int * = a, gdzie a to char * itp.

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

    Nie.

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

    Głupie raczej. Tym bardziej że widzę ewolucje argumentacji.

    > 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.

    Moim zadaniem jest pokaząc że *niektóre* konstrukcje z C++ nadają się na
    uC w przeciwieństwie do "reszty świata" która zaczeła tą dyskusję od
    opierdolenia C++ za obiektowość, dziedziczenie i generowanie za dużego
    kodu co ma się nijak: a) do moich intencji, b) do faktów.

    > Jesli chodzi o poprzednie watki dotyczace Ady: odpowiedz na pytanie, czy
    > dla dobrego programisty ma znaczenie w jakim jezyku cos napisze?

    Zasadnicze. Powodzenia w przepisywaniu Prologa na C i odwrotnie.
    Większość różnic w paradygmatach programowania jest poważna. Ada jest na
    szcęscie w tej samej rodzinie co C, ponadto bliski jej VHDL w środowisku
    elektroników jest znany. Więc mozna sie pokusić o stwierdenie że C->ADA
    jest realny nawet automatycznie. Zaznaczam że z tego wynika że problemy
    znane z C dotykają też ADY.

    >> 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.
    > No i dla mnie taki kod o kant pupy rozbic. Ani test harness nie ma

    Że czego nie ma ? Testów? Unit testów? Mój kochany, *każdy* kawalek kodu
    ktory kompiluje na AVR kompiluje tez na x86 z pełnym pokryciem unit
    testami poza dostepem do sprzetu (który czasem daje radę emulowac). Czy
    aby nie wyciągasz odważnyh wniosków bez posiadania wystarczającej ilości
    danych?

    Ostatnio spróbowałem google test/mock i chyba przy tym zostanę.
    Programiści C mogą lizać szybkę.

    >, ani
    > kodu legalnie nie uzyje.

    G. pradwa. Zalezy od licencji. Ja np. nie sprzedaje kodu tylko wsad.
    Inny sprzedaje zaprogramowane procesory. Inny pisze kod półotwarty. Twój
    problem jest specyficzny.

    > 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.

    Czas jednak pisać w asm. Mówie serio, używanie kompilatroa tylko po to
    aby obejść jego moduł optymalizacyjny jest z definicji porażką narzedzia
    i metodyki.

    > To jeszcze jezyki non-managed sa na PCta uzywane? (tak wiem, pewnie
    > 'duzy system' to cos wieksze od PCta ;-) )

    Są. Jezyki managed mają kilka problemów które przeszkadzają w
    aplikacjach obrabiających dużo danych bądź kierunkowanych na szybkość.

    > Pytam serio, bo juz jakis czas nie widzialem wiekszej _nowej_ aplikacji
    > nie napisanej w czyms managed.

    Nie piszę *nowej* aplikacji. C++ jest używany powszechnie w EDA (nie,
    nie piszę o SystemC, mówię o core apliakcji).

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

    Wlasnie dlatego rezygnuje z gołego C. Rzeczywistość jest taka że w C++
    jest łatwiej. Od AVR po klaster. Ze wszystkimi jego wadami.


  • 63. Data: 2012-05-05 23:06:47
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Michoo <m...@v...pl>

    On 05.05.2012 22:59, Sebastian Biały wrote:

    > W 30 sekund jestem w stanie to napisać i użyć przy okazji kompilując.
    > Cały kod źrodłowy podałem kilka postów wcześniej. Szukasz dziury w całym.
    Ja używam trochę bardziej rozbudowanej struktury, żeby umożliwić
    rekurencyjne wywołania:

    struct scoped_lock
    {
    scoped_lock(){tmp=SREG;cli();}
    ~scoped_lock(){SREG=tmp;}
    protected:
    uint8_t tmp;
    };


    --
    Pozdrawiam
    Michoo


  • 64. Data: 2012-05-05 23:13:05
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-05-05 23:06, Michoo wrote:
    >> W 30 sekund jestem w stanie to napisać i użyć przy okazji kompilując.
    >> Cały kod źrodłowy podałem kilka postów wcześniej. Szukasz dziury w całym.
    > Ja używam trochę bardziej rozbudowanej struktury, żeby umożliwić
    > rekurencyjne wywołania:

    Mam aktualnie w kodzie na ARMa unique_critical_section z semantyką
    podobną do unique_ptr. Przyznaje że tylko znajomy programista C++
    pokazał palcem gdzie robi się sei() ... Zawodowcy w C polegli. A kod
    mial tylko kilkaset linijek :/


  • 65. Data: 2012-05-05 23:34:37
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: RoMan Mandziejewicz <r...@p...pl.invalid>

    Hello Jerry1111,

    Saturday, May 5, 2012, 10:39:34 PM, you wrote:

    >>> 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.
    >> Naprawdę masz taki problem?
    > 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? ;-)

    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
    Nowa strona: http://www.elektronika.squadack.com (w budowie!)


  • 66. Data: 2012-05-05 23:54:40
    Temat: Re: [OT] koszt 'virtual' na ARM
    Od: "Andrzej Ekiert" <d...@t...pl>

    Dnia 05-05-2012 o 22:50:52 Michoo <m...@v...pl> napisał(a):


    >
    > Dopisałem do projektu następujące klasy:

    [snip kod]

    > Binarka przytyła po tym o 200 bajtów:

    [snip szczegóły]

    Nie będzie to żaden argument w dyskusji na temat metod wirtualnych, ale z
    ciekawości do małego programu w C+asm (na PIC24) dopisałem następujące
    wiersze:

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

    Następnie w main():

    const char *msg;
    int ll = recv(0); /* odczyt z czegoś innego niż uart, nieistotne z czego,
    0 to numer kanału */

    if (ll == 1) {
    msg = msg1;
    } else if (ll == 2) {
    msg = msg2;
    } if (ll == 3) { /* tuś się chyba pomylił, ale zostawiłem bez
    else, żeby było tak samo */
    msg = msg3;
    } else {
    msg = msg4;
    }
    uart_send_str(msg);

    Przy -O0 binarka zwiększyła się z 1452 do 1575 bajtów (123 bajty).
    Przy -Os binarka zwiększyła się z 1197 do 1269 bajtów (72 bajty).

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

    Ogólna zmiana przy włączeniu optymalizacji jest mała, bo to program tylko
    do testowania sporego kawałka kodu pisanego w asemblerze i C tam mało jest.

    Sam nie wiem czy i jakie wnioski z tego wyciągać.

    ae


  • 67. Data: 2012-05-06 00:11:29
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Jerry1111 <j...@w...pl.pl.wp>

    On 05/05/2012 22:34, RoMan Mandziejewicz wrote:
    > Hello Jerry1111,
    >
    > Saturday, May 5, 2012, 10:39:34 PM, you wrote:
    >
    >>>> 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.
    >>> Naprawdę masz taki problem?
    >> 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? ;-)
    >
    > Ale to jest jakieś nieporozumienie - ochrona praw producenta nie sięga
    > tak daleko. Ochronie podlegają równiez prawa autora.

    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".

    > 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.

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

    > 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.

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

    > 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.

    Jak placi? Prosze bardzo, pomozemy.

    --
    Jerry1111


  • 68. Data: 2012-05-06 00:26:23
    Temat: Re: [OT] koszt 'virtual' na ARM
    Od: Michoo <m...@v...pl>

    On 05.05.2012 23:54, Andrzej Ekiert wrote:
    > Dnia 05-05-2012 o 22:50:52 Michoo <m...@v...pl> napisał(a):
    >
    >
    >>
    >> Dopisałem do projektu następujące klasy:
    >
    > [snip kod]
    >
    >> Binarka przytyła po tym o 200 bajtów:
    >
    > [snip szczegóły]
    >
    > Nie będzie to żaden argument w dyskusji na temat metod wirtualnych, ale
    > z ciekawości do małego programu w C+asm (na PIC24) dopisałem następujące
    > wiersze:
    >
    [...]
    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.

    > } if (ll == 3) { /* tuś się chyba pomylił, ale zostawiłem bez else, żeby
    > było tak samo */
    Rzeczywiście się pomyliłem pisząc kod, ale w poście statystyki są dla
    poprawionego kodu, przeczyłem sam kod.

    >
    > Przy -O0 binarka zwiększyła się z 1452 do 1575 bajtów (123 bajty).
    > Przy -Os binarka zwiększyła się z 1197 do 1269 bajtów (72 bajty).
    + 40 bajtów Os
    + 128 bajtów O0

    >
    > Po poprawieniu buga z "else":
    > -O0 : 1452 do 1578 (126)
    > -Os : 1197 do 1287 (90)
    + 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

    >
    > Ogólna zmiana przy włączeniu optymalizacji jest mała, bo to program
    > tylko do testowania sporego kawałka kodu pisanego w asemblerze i C tam
    > mało jest.
    >
    > Sam nie wiem czy i jakie wnioski z tego wyciągać.
    >
    Ż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


  • 69. Data: 2012-05-06 00:30:37
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Jerry1111 <j...@w...pl.pl.wp>

    On 05/05/2012 21:59, Sebastian Biały wrote:
    > Co ja mogę poradzić na biędę na rynku pracy? Jeśli twój target to
    > studenci mizernych uczelni jako pracownicy to nie masz wyjścia. Znam
    > przynajmniej kilka firm w okolicy które były zmuszone robić gówno, bo
    > absolwent tylko w tym grzebać potrafi.

    ROTFL... jedna z najlepszych uczelni na swiecie 500 metrow (a raczej
    jardow) z prawej i nie mam wyjscia ;-)
    Prosze - zrozum ze nie wszystkie firmy/sytuacje/realia sa takie same u
    Ciebie i u mnie.

    >> 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.
    >
    > W 30 sekund jestem w stanie to napisać i użyć przy okazji kompilując.

    Znowu prawda, ale mierzysz swiat pod siebie. Stwierdzilem ze z
    przesiadka nie bedzie problemu, ale w 30s wliczyles swoje doswiadczenie,
    a nie brak doswiadczenia kogos zielonego.

    >>> Słusznie. Dzieki takiem podejściu zawsze zaczynasz od int main() { } i
    >>> odkrywasz kwadratowe koła za każdym razem.
    >> 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.
    >
    > Dorzucasz kolejny utajniony argument: otwartość źródeł i handel nimi.
    > Nie było o tym mowy.

    Nie bylo mowy ze pisze dla idei.

    > Jeśli miałbym od Ciebie kupić kod wręcz zażądał bym aby kod był już
    > testowany wczesniej a nie pisany od zera. Może ja specyficzny jestem
    > klient, ale jakoś nie wierze na słowo honoru że pisząc od 0 nie
    > popelniasz bledow. No nie wierzę i już.

    Nie ma problemu - dostalbys skladanke z naszych bibliotek. Tu nie ja
    decyduje jak cos jest robione. Ja tylko rekomenduje dla klienta, a
    decyduje klient.

    >> I prosze nie odpowiedz ze to znowu jest ukryta wiedza - po prostu (tak
    >> jak i z Matlabem) _zalozyles_ sobie cos, co sie nie sprawdzilo.
    >
    > Bzdura. Najpierw wyciągasz argument o tym że przypadkowo robisz
    > softwareowo kawalek hardware (kontroler przerwań),

    Alez ja specjalnie wzialem 'ciekawy przypadek' kodu, a nie kolejny
    sterownik wyswietlacza czy czegos tam innego.

    > a potem wymyślasz
    > dodakowy waunek brzegowy o tym że musisz pokazaź źródła.

    Powiem wiecej - w tym akurat projekcie klient zazyczyl sobie usuniecie
    wszystkiego, lacznie z danymi z backupow z serwerow.

    >>> Oczywiście, jesli nie narobiłeś straszliwej kupy w C to skompiluje się
    >>> jako C++.
    >> Miala byc identyczna. Bezwarunkowo.
    >
    > Nikt o tym nie mówił.

    Mowil. W poscie o 15:18 stoi: "Ale ja mówie o darmowym ciastku.
    Kompilator/składnia identyczna.". No to identyczna, czy z wyjatkami? Bo
    ja twierdze ze z wyjatkami.


    >> 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.
    >
    > Moim zadaniem jest pokaząc że *niektóre* konstrukcje z C++ nadają się na
    > uC w przeciwieństwie do "reszty świata" która zaczeła tą dyskusję od
    > opierdolenia C++ za obiektowość, dziedziczenie i generowanie za dużego
    > kodu co ma się nijak: a) do moich intencji, b) do faktów.

    To czego nie wliczyles do argumentacji to ryzyko spieprzenia programu
    przez kogos nierozumiejacego co robi.

    >> Jesli chodzi o poprzednie watki dotyczace Ady: odpowiedz na pytanie, czy
    >> dla dobrego programisty ma znaczenie w jakim jezyku cos napisze?
    >
    > Zasadnicze.

    No widzisz, a mi wszystko jedno - nie mam preferencji. Wybieram jezyk
    odpowiedni do zadania.

    >>> 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.
    >> No i dla mnie taki kod o kant pupy rozbic. Ani test harness nie ma
    >
    > Że czego nie ma ? Testów? Unit testów? Mój kochany, *każdy* kawalek kodu
    > ktory kompiluje na AVR kompiluje tez na x86 z pełnym pokryciem unit
    > testami poza dostepem do sprzetu (który czasem daje radę emulowac). Czy
    > aby nie wyciągasz odważnyh wniosków bez posiadania wystarczającej ilości
    > danych?

    W 0.5 dnia?

    > Ostatnio spróbowałem google test/mock i chyba przy tym zostanę.
    > Programiści C mogą lizać szybkę.
    >
    >> , ani
    >> kodu legalnie nie uzyje.
    >
    > G. pradwa. Zalezy od licencji.

    No i dokladnie tak napisalem - ze ja legalnie nie uzyje (w wiekszosci
    przypadkow), wiec nie jest crap prawda.

    > Ja np. nie sprzedaje kodu tylko wsad.
    > Inny sprzedaje zaprogramowane procesory. Inny pisze kod półotwarty. Twój
    > problem jest specyficzny.

    Sprzedawanie source code to przypadek specyficzny?

    > Są. Jezyki managed mają kilka problemów które przeszkadzają w
    > aplikacjach obrabiających dużo danych bądź kierunkowanych na szybkość.

    To jest kompilowane. Jesli nie masz za duzo przejsc managed/unmanaged to
    nie powinno byc duzego kosztu w szybkosci.


    --
    Jerry1111


  • 70. Data: 2012-05-06 00:36:33
    Temat: Re: [OT] koszt 'virtual' na ARM
    Od: Jerry1111 <j...@w...pl.pl.wp>

    On 05/05/2012 21:50, Michoo wrote:
    > On 05.05.2012 19:47, Jerry1111 wrote:
    >
    >> 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.
    > Moją magisterkę na ARMa z 8k flash i 32k flash piszę w hardcore C++ z:

    Wierze. Moje doswiadczenie bylo na Nios2 Altery. Niewykluczone ze to
    Altera cos pokrecila. Mam to gdzies udokumentowane, ale nie chce mi sie
    szukac - za pozno.
    Z drugiej strony to bylo gcc, wiec czemu mialo by nie dzialac?

    OIDP to pojawienie sie metody virtual (jednej) skutkowalo zlinkowaniem
    dodatkowych 15 czy 20kB. OIDP byla mozliwosc naprawienia tego kombinacja
    switchy do gcc.
    OIDP rozwiazanie tego problemu zajelo mi mniej niz 3 dni ;-)


    --
    Jerry1111

strony : 1 ... 6 . [ 7 ] . 8 . 9


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: