RTV forum PL | NewsGroups PL

Zalecane środowiska programistyczne dla PIC16F877A: opinie i darmowe opcje

PICowanie

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Zalecane środowiska programistyczne dla PIC16F877A: opinie i darmowe opcje

Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next

Sebastian Biały
Guest

Fri Oct 11, 2013 3:56 pm   



On 2013-10-11 11:59, Sylwester Łazar wrote:
Quote:
Nawyk dokumentowania kodu mam już od 15 roku życia.

Ja od 12-go, mając w ręku ZX Spectrum - Z80, przez 6502, 8051, 680x0,
8086, arm, mips. Znam(łem) assemblery wszystkich i we wszystkich
pisałem. I obecnie programuje ogromna aplikację w C++ na duzym systemie
i w wolnych chwilach roluje bity na GPIO AVRka. Skażenie asm nie
przeszkodziło mi znajdywać zalety zarówno programowania
wysokopoziomowego jak i asm, dosuje obie techniki, wliczając to takie
ciekawoski jak programowanie deklaratywne czy constrains a nawet
ostatnio kawalek w prawie-prologu się trafił (na uC Smile. Używam wielu
narzedzi, a nie tylko młotka asm, bo problemy mam różne więc i narzędzia
też.

Quote:
Jednak wyrobienie sobie takiego nawyku przez kilkanaście lat pracy,
powoduje, że teraz to idzie szybko.

Mam znajomego ktory niezwykle szybko kopie doły łopatą. Do tego stopnia
ze konkuruje z minikoparkami. Czy jesteś pewny że kopanie łopatą ma
jednak przyszłość? Bo ja tak, sprawdza mi się w ogródku.

Quote:
Wiadomym jest, że jak stukasz w klawiaturę wpisując ~destruktory w C++,
czy inne konstrukcje, nie dodając żadnych komentarzy zawsze będzie to
szybsze,
niż rysowanie algorytmu, dokładanie opisu słownego po polsku czy angielsku,
kopiowanie tekstu, czy tworzenie historii zmian.

Szybsze będzie tworzenie unit testów, abstrakcji oraz czytelnego kodu
które pozwolą w pełni przetestować kod zamiast pisania komentarzy które
po miesiącu nie mają nic wspólnego z rzeczywistością bo nie istnieje
żadnej przymus aby były synchronicznie zmieniane z kodem. W "zespole"
jednoosobowym bywają z tym problemy. Wobraź sobie jak to wygląda w
zespole N>1.

Quote:
a) przyjemność zabrania się za analizę kodu przedstawionego na kolorowym
algorytmie,

Ja mam przyjemnośc nie analizowania kodu tylko stwierdzenia jakie
warunki brzegowe ma realizować widząc testy. Implementacja ma tylko tyle
na znaczeniu że musi mieć założoną złożoność bądź restryckje czasowe.

Quote:
b) poprawianie, czy adaptacja kodu nie zabiera już tyle czasu, a wręcz
przyspiesza.

Refaktoring kodu przyspiesza kiedy masz testy.

Quote:
c) uruchamianie jest już formalnością i czasem jest tak, że rysujesz/piszesz
program 3 dni,
a samo uruchamianie z oscyloskopem czy analizatorem stanów - kilka godzin.

Patrz, zupełnie jak przetestowany kod in virto.

Quote:
Gdy znajdziemy błąd, często pada od razu po spojrzeniu w dokumentację
zdania:
" No tak... śmieszny błąd"

Albo jak padnie unit test to patrzymy w kod i naprawiamy.

Quote:
Dzieje się tak, gdyż poświęcając dużo czasu na przygotowanie kodu, zanim
zacznie się pisać słowa w dowolnym języku programowania, już wcześniej
korygujemy wiele błędów natury logicznej, składni, nazwy, czy zwykłych
pomyłek.

Dzieie się tak gdy przygotujesz sobie test suide na długo przed
napisaniem pierwszego słowa kluczowego algorytmu.

Quote:
Po wpisaniu kodu - jest on już niemal pewny.

Ba, przetestowany kod jest nie tylko pewny, ale i *przetestowany*.

Quote:
Zmiany zwyczajowo dokonują się poprzez poprawę kilkunastu znaków w kodzie.
A w większości pewnie w komentarzach i historii zmian.

Która to historia znajduje się w systemie kontroli wersji który bez
watpienia używasz.

Quote:
Samo wpisanie daty 2013103 to już 7 znaków Smile

Tym bardziej że zbędne.

Quote:
Odpowiadając na Twoje zapytanie - tak kod jest zawsze rozwojowy.
I tak miało być w założeniu.

Nie wątpie że łopata można kopać dziury różnych kształtów.

Quote:
W związku z tym czasem podrzucam żonie mój algorytm sprzed nastu lat na
8051,
a żona przerabia go na PIC32 zmieniając (bardzo optymalnie zresztą) kod.

Zupełnie jak kompilator pawie każdego języka.

Quote:
Uczę tej pracy też dzieci, więc już trójka z mojej całej piątki opanowała
rysowanie algorytmów,
choć są dopiero na poziomie <liceum.

3 łopaty kopią szybciej niż jedna :P

Odkryłeś kwadratowe koło i je pielęgnujesz piłując pieczołowicie rogi aż
wyjdzie romb. Bez wątpienia warsztat masz znakomity, znajomość asm w
jednym palcu, ale czy na pewno widziałeś jak wygląda warsztat
przeciętnego programisty poza twoim domem? Wiesz ile i jakich narzędzi
używa, jak pracuje w zespole bądź samotnie, ile twoich problemów
rozwiązano w latach 70-tych i gdzie obecnie znajdują się jezyki
programowania? Programiści embedded to czesto skansen osobliwości i
rozwiązań poroblemów które albo nie istnieją albo zostały rozwiązane
dziesięciolecia temu. Nie dalej jak miesiac temu trafilem na mistrza
ktory programuje 8051 w edytorze hex pod dosem znając na pamięc kod
*maszynowy*. Nie dalej jak wczoraj musiałem zmagaś się z
systemverilogiem w którym ktoś intensywnie wymyśla nowe "lepsze"
programowanie obiektowe ignorując to co wiemy od smalltalka.

Nie zrozum mnie źle: szanuje Twoją pracę i wiedzę. Ale proszę, dla dobra
ludzkosci, nie przedstawiaja jej jako wzorca dla kogokolwiek. Jesli Ci
pasuje to ok, jesli sprawia radość to tym lepiej.

Koniecznie obejrzyj to:

http://vimeo.com/71278954

Od 4:00 jest pouczający kawałek na temat "assembler jest najfajniejszy
do wszystkiego".

Tak, ten film to rodzaj żartu, ale czy nie ciekawy? Polecam dla
wszystkich aby to obejrzeć do końca.

Sebastian Biały
Guest

Fri Oct 11, 2013 4:01 pm   



On 2013-10-11 16:35, Sylwester Łazar wrote:
Quote:
Co do objętości kodu to się zgodzę, że w C jest większy, ale bez
przesady - nie 5kB->10MB! Jeśli w bibliotece są niewykorzystane funkcje
to linker może je po prostu wyciąć z automatu.
Czasem jedna błędna deklaracja typu w C powoduje, że brakuje Ci pamięci.
No może to skrajny przykład,
ale 5kB w ASM i 50kb w C to chyba się zgodzisz?

Bzdura. Kod wynikowy zajmuje tyle ile powinien, nawet w skrajnie
popsutych współczesnych kompilatorach jest ciągle nieźle a nie 10x
gorzej bez powodu.

Sebastian Biały
Guest

Fri Oct 11, 2013 4:03 pm   



On 2013-10-11 17:43, Sylwester Łazar wrote:
Quote:
No i dorzucił trochę koloru do Linuxa i zmieścił się w procku.
Teraz po naciśnięciu książki telefonicznej czeka tylko 100ms i już ma 10
pierwszych numerów z bazy danych na ekranie.
A mógł mieć to wszystko w ASM przy 1MB i czasie reakcji na wyjątek 1ms

Po 10 latach pisania kodu. Taki system operacyjny i GUI w asm nie
istnieje *nigdzie* jako działający poważnie produkt. Nie dlatego że się
nie da tylko dlatego że nie ma to żadnego sensu.

Piotrek
Guest

Fri Oct 11, 2013 4:04 pm   



On 2013-10-11 17:55, Sylwester Łazar wrote:
Quote:
Może.
Skomentuj proszę te 100ms.

A co tu komentować?

W podanym przez Ciebie przykładzie kompletnie nie ma sensu ściganie się,
w celu przyspieszenia wyświetlania książki telefonicznej w ciągu 1ms.

Główne z tego powodu, że i tak userowi zajmie pewnie dobrą sekundę
poskrobanie się po głowie w celu ustalenia czy to o tego "Ziutka" z
książki telefonicznej mu chodziło, czy o jakiegoś innego.

Piotrek

Piotrek
Guest

Fri Oct 11, 2013 4:18 pm   



On 2013-10-11 17:51, Sylwester Łazar wrote:
Quote:
Zauważ, że te biblioteki możesz mieć swoje lub obce, a nawet swojo-obce,
czyli kolegi, z którym jeszcze się nie pokłóciłeś.

Jeżeli ja mam bazę swoich projektów/bibliotek, do których interfejsy mam
znane,

Acha. Czyli jednak zaczynasz od "szukania gotowych programów/bibliotek".
Zanotowałem ;-)

Quote:
potrzebuję tyle samo lub mniej czasu, niż ktoś kto wchodzi do zasobów
globalnych,
szuka biblioteki, wgłebia się w interfejs, includuje a na koniec
uruchamia....

Problem zaczyna się w momencie, kiedy zaczynasz się poruszać poza swoją
niszą.

A przecież sprawny projektant powinien sobie poradzić z zaprojektowaniem
"czegobądź".

Dobierając co najwyżej ekspertów dziedzinowych, którzy doradzą mu jakich
komponentów użyć. :-)

Quote:

Jeżeli jednak ktoś, kto pisał 10 lat w C i 3 razy w asm,
pragnąłby napisać kod na 32-bitowy uC w ASM - nie da rady.
Polegnie na opisie sprzętowego 8xPWM.

No dokładnie o to chodzi. Dlatego IMHO - jeśli już masz spełnić jakieś
szczególne wymagania - lepiej użyć gotowych i sprawdzonych narzędzi, niż
rzeźbić samemu.

Quote:
[...]

Piotrek

Sylwester Łazar
Guest

Fri Oct 11, 2013 4:45 pm   



Quote:
Nie zrozum mnie źle: szanuje Twoją pracę i wiedzę. Ale proszę, dla dobra
ludzkosci, nie przedstawiaja jej jako wzorca dla kogokolwiek. Jesli Ci
pasuje to ok, jesli sprawia radość to tym lepiej.
Widzę, że piszesz szybko i bardzo nowocześnie.

Skutki są, jakie są, ale każdy widzi to inaczej.
W czasie tej polemiki zrobiłeś mnóstwo błędów.
Do tego je bagatelizujesz i często się złościsz na kogoś kto Ci zwraca
uwagę,
że jest źle.
Liczy się nie tylko szybkość, ale też i jakość.
Nie da się szybko bez utraty jakości.
Doceniasz wagę testów. Myślę, że w tym przypadku zupełnie słusznie.
Ja mam inną metodę pracy.
Ja również szanuję Twoją pracę i wiedzę, ale proszę, dla dobra ludzkości
nie przedstawiaj jej jako wzorca dla kogokolwiek.
Wzorce są różne w każdej dziedzinie.
Nigdy człowiek nie wie, które naśladować, aby być poprawnym.
S.

Marek
Guest

Fri Oct 11, 2013 4:55 pm   



On Fri, 11 Oct 2013 17:56:54 +0200, Sebastian
Biały<heby@poczta.onet.pl> wrote:
Quote:
Nie zrozum mnie źle: szanuje Twoją pracę i wiedzę. Ale proszę, dla
dobra
ludzkosci, nie przedstawiaja jej jako wzorca dla kogokolwiek. Jesli
Ci
pasuje to ok, jesli sprawia radość to tym lepiej.

Mam nadzieję, że Sylwek jedynie nas trochę tr... prowokuje ;)

--
Marek

Sylwester Łazar
Guest

Fri Oct 11, 2013 4:59 pm   



Quote:
Dobierając co najwyżej ekspertów dziedzinowych, którzy doradzą mu jakich
komponentów użyć. Smile
O! To by było dobre.

W szczególności wszyscy marzymy o systemie z mikrofonem,
gdzie wypowiemy tajmnicze zaklęcie:
"Zrób mi sterownik z ładnym i funkcjonalnym ekranem, który będzie zarządzał
domem i ogrzeje mi go w sezonie za 300 Euro"
i staniemy się takimi ekspertami dziedzinowymi.

Po czym, (gdzie tam w weekend!) w minutę z kompilacją, testami i realizacją
system zintegruje się z inteligentnym domem i zacznie pracę.

Pozostaje do wypłaty honorarium.
Stawka roboczogodzinowa zdewaluowała się już w tym przypadku kompletnie z
przyczyn oczywistych,
więc jako, że zaoszczędziliśmy jakieś 600 Euro, wychodzi gdzieś tak po 20
Euro za słowo.

Wszelki sprzęt produkowany w Chinach kupimy w Farnelu za cenę jednego
wypowiedzianego słowa :-)


Quote:
No dokładnie o to chodzi. Dlatego IMHO - jeśli już masz spełnić jakieś
szczególne wymagania - lepiej użyć gotowych i sprawdzonych narzędzi, niż
rzeźbić samemu.

[...]

Piotrek
Zawsze lepiej jest coś kupić niż zrobić.

A jeszcze lepiej mieć za darmo.
Dokładnie tą polityką kieruje się cała Europa, ale nie Chińczycy, u
których cały świat kupuje, bo się tak lepiej opłaca i jest czytelniej.
Poczekamy tylko na skutki.

S.

Sebastian Biały
Guest

Fri Oct 11, 2013 5:06 pm   



On 2013-10-11 18:45, Sylwester Łazar wrote:
Quote:
W czasie tej polemiki zrobiłeś mnóstwo błędów.

Z chęcią dowiem się jakich.

Quote:
Do tego je bagatelizujesz i często się złościsz na kogoś kto Ci zwraca
uwagę,
że jest źle.

Nikt nie zwrócił mi jeszcze uwagi lub też nie zauważyłem poza czeskim
błędem z void.

Quote:
Liczy się nie tylko szybkość, ale też i jakość.

I dlatego asm nie ma żadnego sensu. Pisnanie w asm nie ma żadnego
związku z jakością ma za to duzo wspólego z RealTime albo archeologią
(do wyboru).

Sylwester Łazar
Guest

Fri Oct 11, 2013 5:09 pm   



Quote:
Mam nadzieję, że Sylwek jedynie nas trochę tr... prowokuje ;)

--
Marek
Też Smile

Ale dziś już poświęciłem zbyt wiele czasu na to bagno jakim jest internet.
Jednak telewizora nie posiadam jakieś 12 lat, więc czasem trudno mi się
zbliżyć do mainstreamowych poglądów Smile
Idę coś zrobić w weekend.
Miałem dzisiaj podłączyć oscyloskop i pokazać/omówić transmisję 1-wire
dzieciakom.
Nie wiem jednak, co lepiej kupić dodatkowe łopaty, czy poszukać gotowych
bibliotek do
DALLASa.
Miłego wieczoru, jak mawiają!
EOTFM
S.

Sebastian Biały
Guest

Fri Oct 11, 2013 5:13 pm   



On 2013-10-11 19:14, Sylwester Łazar wrote:
[quote]Z chęcią dowiem się jakich.
Voil

Sylwester Łazar
Guest

Fri Oct 11, 2013 5:14 pm   



[quote]W czasie tej polemiki zrobiłeś mnóstwo błędów.

Z chęcią dowiem się jakich.
Voil

Marek Borowski
Guest

Fri Oct 11, 2013 9:19 pm   



On 10/9/2013 11:52 AM, stchebel@gmail.com wrote:
Quote:
W dniu środa, 9 października 2013 08:45:22 UTC+2 użytkownik Zbych napisał:

Dzięki za info!! Jeszcze tego nie zassałem, a już mam pytania.. Czy jest to środowisko "okienkowe"? Tak jak chociażby Delphi(Pascal) i czy jest to strasznie upierdliwe? Czy da się tam skrobać w Assemblerze tego procka?
Podejrzewam, że jest kompilator C, ale raczej nie jestem fanem tego potrąbionego języka programowania. a+=a, a=+a , toż tego czytać się nie da! O popierdolonych znakach funkcji logicznych nawet nie ma co wspominać...

To jest wylacznie kwestia gustu. Ja tam wlasnie bardzo lubie C

za mozliwosc bardzo zwiezlego zapisu. To jest wylacznie
kwestia przyzwyczajenia.

v++; v+=5; *p = v ? v : v+1; while(f); sa bardzo ok.

zato niedobrze mi sie robi na mysl ze mialbym to zapisywac w postaci:

let v := v + 1

if v<>0 then
begin
derefrence p := v
end
else
begin
derefrence p := v + 1
end
endif

itd.

Pozdrawiam

Marek

Marek Borowski
Guest

Fri Oct 11, 2013 9:37 pm   



On 10/11/2013 12:19 AM, Sebastian Biały wrote:
Quote:
On 2013-10-10 22:49, Marek Borowski wrote:
Mniej więcej w wersji lite.
A w wersji full ?
Np. statyczny polimorfizm (pomaga unit testować kod na PC bez utraty
To akutrat wymienilem.
szybkości na uC) bądź obliczenia na szablonach.
Czyli metaprograming. Jeszcze cos ?

Rzadziej:

Programowanie obiektowe (ze względu na heap raczej arm7 i więcej). Sporo
SFINAE w różnych postaciach. Obciętą wersję template expressions w
jednym z projektów.
To mozna podciagnac pod metaprogramowanie.


Quote:
Namespaces
powszechnie, często anonimowe.
Jako zamiennik do slowa kluczowgo static ?

Tak pozatym to namespace to znow cos co sie przydaje przy wiekszych
projektach. Ew. kwestia niecheci do prefixow w nazwach.


Quote:
Type traits.
Jakis przyklad ?


Quote:
Inicjalizacja przed main
(szczególnie peryferiów).

A jaka to jest zaleta w stosunku do funkcji init() wolanej z main ?



Quote:
Natomiast latwiej będzie czego nie używam:

Smart pointerów, bo fragrmentują pamięć, boosta (tylko dlatego że nie ma
zazwyczaj na mniejsze uC), stla ze względu na fragmentacje. Boosta
żałuję najbardziej.

A akurat zastanawialem sie nad smart pointerami z wlasnym allokatorem.

Niestety zarzadzane pamiecia jest czyms na co w uC nalezy zwracac
szczegolna uwage, bo do efektywnych algorytmow zarzadzania pamiecia
potrzeba jej po prostu duzo a w przypadku uC raczej jej nadmiar
nie wystepuje.


Pozdrawiam

Marek

Marek Borowski
Guest

Fri Oct 11, 2013 9:50 pm   



On 10/11/2013 6:01 PM, Sebastian Biały wrote:
Quote:
On 2013-10-11 16:35, Sylwester Łazar wrote:
Co do objętości kodu to się zgodzę, że w C jest większy, ale bez
przesady - nie 5kB->10MB! Jeśli w bibliotece są niewykorzystane funkcje
to linker może je po prostu wyciąć z automatu.
Czasem jedna błędna deklaracja typu w C powoduje, że brakuje Ci pamięci.
No może to skrajny przykład,
ale 5kB w ASM i 50kb w C to chyba się zgodzisz?

Bzdura. Kod wynikowy zajmuje tyle ile powinien, nawet w skrajnie
popsutych współczesnych kompilatorach jest ciągle nieźle a nie 10x
gorzej bez powodu.

Nie bez powodu tylko poprzez gigantyczne powinowactwo do dolaczania

wszystkiego co mozliwe. Walka z tym jest dosyc mozolna.
W asm masz dokladnie to co chcesz, w C juz musisz sie zastawiac
nad dodatkami w postaci startup code i bibliotekami, a w C++ te dodatki
na dodatek sa "ciezkie". Owszem mozna to ogarnac ale wymaga to
pracy i nie dziw sie ze odczucie jest jakie jest.

Pozdrawiam

Marek

Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Zalecane środowiska programistyczne dla PIC16F877A: opinie i darmowe opcje

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map