RTV forum PL | NewsGroups PL

Jak skonfigurować wentylację i oświetlenie domu przez USB z PC?

sterowanie urządzeniami el. przez PC?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonfigurować wentylację i oświetlenie domu przez USB z PC?

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

Jerry1111
Guest

Sat Feb 14, 2009 6:58 pm   



gargamel wrote:
Quote:
Użytkownik "T.M.F." napisał:
A po co ci to wiedziec?

no właśnie w tym stwierdzeniu jest całą prawda o językach
wysokopoziomowych, nie wiedzieć jest łatwo,

Jak 'nie wiesz' to i w C/C++/C#/VB nie napiszesz.

Quote:
wygodnie, łatwiej nauczyć
się języka C raz na całę życie niż architektury i asemblera kolejnych
uP-uf, ale ceną tej łatwości jest to że potem taki windows, czy linux
sie zawiesza, programy sie zawieszają nie wiedzieć dlaczego,

Mam kilka kompow windzianych i z linuxem - musza byc zepsute bo sie nie
chca wieszac (uptime po pol roku jest).

Quote:
a nawet
telefony komurkowe się zawieszają (i reset nie pomaga)

Jak masz miesiac na soft to nic dziwnego. Z asm w ogole nie byloby
telefonu, bo soft by sie pisal 2 lata.

Quote:
dawniej gdy
sprzęt był programowany w asemblerach coś takiego się w głowie nie
mieściło żeby telefon mógł się zawiesić, a mam w domu taką starą
dwóekranową gierkę (donkey kong) i w życiu sie nie zawiesiła, cuda
jakeiś czy co?:O)

Roboczogodzina 20 lat temu miala inna wartosc niz teraz.

Quote:
kompilatopr może nie mieć błędów, chodzi o brak kontroli) a własnie
niewiedza jest przyczyną błędów, dodatkowo oprogreamowując sprzęt
urzywasz sterowników producenta i też używasz funkcji wysokopoziomowych,
czyli też nie masz pojęcia jak dana instrukcja jest wykonywana, znowu
nie masz kontroli i dupa blada

Ja tam mam kontrole.

Quote:


Podaj nazwe. I nie twierdze, ze nie mozna, to po prostu jest bez sensu.


nazwy nie pamiętam, zresztą jak programu na oczy nie widziałeś to i
nazwa nic ci nie powie

Po opisie kilku mega w asm to ja juz bym znalazl ten program - zeby go
zobaczyc.

Quote:
, a sens ma to ogromny, bo program który pisany
wysokopoziomowo nie ma szans na działąnie w czasie rzeczywistym na nowym
super sprzęcie, napisany w asemblerze tylko śmiga na starych piernikach,
wiec sens jest, jest nim wydajnosć i niezawodność,
p.s. do tego programu 3D to pamiętam jak sam pisałem w C takie funkcje i
wiem że jedna klatka takiego obrazu zajmowała nowemu PC 10 minut a bryła
3D skąłdała się z kilkuset takich klatek, więc taka obróbka trwała setki
godzin, dlatego byłem ogromnie zdziwiony gdy program napisany w
asemblerze działąjacy na starym peirniku robi to samo w czasie
rzeczywistym i jeszcze w czasie rzeczywistym obraca taką bryłę i ją kroi
w dowolnej płaszczyźnie, więc różnica w wydajnosci między językami
niskopoziomowymi a wysokopoziomowymi jest OGROMNA i im język jest
wyższego poziomu to jego wydajność drastycznie spada!

Tutaj to juz bzdury piszesz. Dobrze napisany program w C nie rozni sie
niczym od asemblera. No, oczywiscie trzeba wiedziec jak kompilator
ustawic, jakie konstrukcje w C uzyc itp. Ja np: nie pisze juz czasowo
krytycznych przerwan w asemblerze (dla prockow w ktorych znam
kompilator). Bardzo czesto napisanie w C wystarcza - jeden rzut oka na
wynik w asm i stwierdzam ze nie da sie szybciej.

A co do Twojego 3D - wiesz, algorytmy przyspieszaja dzialanie wielu
programow duzo bardziej niz rozne kompilatory.

Quote:

masz szanse napisac cos szybciej w assemblerze... masz niezle ego :)

jakie ego? to oczywisty fakt że pisząc w asemblerze na tym samym
sprzęcie program będzie o niebo szybszy od pisanego wysokopoziomowo, ale
ja tego nie będę pisał bo mi za to nie płącą:O)

Jak programista dupa to oczywisty fakt. Jak wie co robi, to mozesz sie
zdziwic.

--
Jerry1111

T.M.F.
Guest

Sat Feb 14, 2009 7:13 pm   



Quote:
Nie wiem po co uczyć się historii. Lepiej nauczyć się jak udostępniać
sterowanie/pomiar przez Apache/PHP, Tomcat czy Ajax. A to już wymaga
współczesnego systemu operacyjnego.

Nie o to chodzi, by uczyć się historii... Ale jeżeli człowiek sam jest
historią, to łatwiej mu zaprogramować stary PC aniżeli przesiadać się na
siakieś mikrocuda i/lub uczyć Ajax'a tudzież PHP. Mówię oczywiście
spoglądając na sprawę z mojej własnej perspektywy. Razz

Zapewne tak jest. Ale za $100 mozesz kupic plytke np. ANGW100 z
32-prockiem, Linuxem na pokladzie, USB, 2xeth itd. ktora jest mala,
zuzywa pare watow, a programujesz to sobie wygodnie chociazby na PC, po
czym tylko rekompilujesz program na cross-kompilatorze i wrzucasz do
tego sterownika. Jesli umiesz programowac, rozumiem, ze znasz cos w
stylu C/C++ to to czy to bedzie DOS, czy Linux nie robi roznicy.
Kompatybilnosc zapewniaja biblioteki systemowe.

Quote:

Dawno temu nauczyłem się programować w DOS, i nie będąc zawodowym
programistą/eletronikiem nie mam wcale ochoty próbować/uczyć się czegoś
nowego w tym zakresie. To, czega nauczyłem się kilkanaście lat temu w
zupełności mi wystarcza.

Jeżeli ktoś dopiero uczy się i szuka rozwiązań, rzeczywiście równie dobrze
mógłby próbować tych obecnych nowości (AVR, Tomcat, itd, itp...).

Zapewne, niechec do nauki to jest argument:) Ale nie zmienia to faktu,
ze sterowanie paroma przekaznikami za pomooca PC to strzelanie z armaty
do muchy.

Mario
Guest

Sat Feb 14, 2009 10:24 pm   



gargamel pisze:
Quote:
Użytkownik "T.M.F." napisał:
Zawiesza sie bo jest napisany w jezyku wysokiego poziomu? Masz jakas
literature na poparcie tej tezy?

oj zaraz byś chciał literaturę kjtóra by zaciebie pomyślała, naprawdę
nie rozumiesz aktu że im język jest wyższego poziomu tym programista ma
mniejszą kontrolę nad kodem?:O)
np: taka zwykłą pętla for w C, wiesz ile z tego kompilator robi
instrukcji asemblera?:O) jak sprawdzisz to przynajmniej dędziesz
wiedział ile tam jest śmiecia

Załóżmy, że jesteś w stanie napisać krótszą pętlę niż wygenerowana z C
przez kompilator. Ale musisz napisać znacznie więcej kodu, we którym
masz znacznie większe szanse pomylić sie. A pętla w C jest prosta jak
konstrukcja cepa. Nawet jeśli kod wynikowy jest troszkę dłuższy to jest
wygenerowany automatycznie i małe są szanse żeby zawierał błąd. Zdarza
się, że kompilatory zawierają błędy ale dość szybko są wykrywane łatane.
Zakładam, że bardziej niezawodna jest zbiorowa praca programistów od
avr-gcc niż rzeźbienie rozbudowanego projektu przez programistę
asemblerowego. Sam od dawna pisałem w asemblerze ale przy okazji
przejścia na nowe procki przerzuciłem się na C. Nigdy więcej pisania w
asemblerze obliczeń zmiennoprzecinkowych na logarytmach Smile Będzie
konieczność przyspieszenia jakiejś obsługi przerwania to najwyżej
przepiszę kawałek kodu w asemblerze ale jeszcze nie miałem takiej potrzeby.

Quote:

Jaka niewiedza? Co mnie obchodzi jak dziala jakas funkcja. Mam funkcje
biblioteczna, ktora realizuje np. x+y i nie ma dla mnie znaczenia jak
ona to robi, byle to robila.

no włąśnie, co ciebie obchhodzi, tak samo co ciebie obchodzi ze
oprogramowanie jest niestabilne i z masą śmieci skoro jest poprawnie
napisane:O(

A skąd wniosek że jeśli go nie obchodzi jak funkcja działa to znaczy że
go nie obchodzi stabilność kodu wynikowego. Przecież ty pisząc w
asemblerze też nie interesujesz się jak to jest realizowane na poziomie
mikrokodu. Skoro tego nie wiesz to może twoje instrukcje są zamieniane
na błędne mikroinstrukcje?
Quote:




--
Pozdrawiam
MD

T.M.F.
Guest

Sun Feb 15, 2009 11:14 am   



Quote:
Zawiesza sie bo jest napisany w jezyku wysokiego poziomu? Masz jakas
literature na poparcie tej tezy?

oj zaraz byś chciał literaturę kjtóra by zaciebie pomyślała, naprawdę
nie rozumiesz aktu że im język jest wyższego poziomu tym programista ma
mniejszą kontrolę nad kodem?:O)

Nad swoim kodem ma taka sama. Nie ma kontroli nad kodem bibliotek,
ktorych uzywa i o to chodzi. Dowolna biblioteka systemowa jest lepiej
przetestowana niz to co sam napiszesz. Ergo - mniej bedzie bledow jesli
korzystasz z kodu bibliotek niz piszesz samemu. Jesli uwazasz inaczej to
znaczy, ze jestes lepszym programista niz setki osob, ktore zawodowo te
biblioteki pisaly i wylapujesz bledy lepiej niz pewnie setki tysiecy
testerow/programistow, ktorzy je wykorzystywali.
Gdyby bylo tak jak piszesz to w kazdej ksiazce na poczatku byloby
ostrzezenie, zeby nie uzywac jezykow wysokiego poziomu. A jest dokladnie
odwrotnie, w kazdej ksiazce znajdziesz stwierdzenie, ze lepiej pisac np
w .NET niz assemblerze.

Quote:
np: taka zwykłą pętla for w C, wiesz ile z tego kompilator robi
instrukcji asemblera?:O) jak sprawdzisz to przynajmniej dędziesz
wiedział ile tam jest śmiecia

No wiem. Tak sie sklada, ze np. gcc robi petle tak optymalnie jak w
assemblerze.

Quote:
Jaka niewiedza? Co mnie obchodzi jak dziala jakas funkcja. Mam funkcje
biblioteczna, ktora realizuje np. x+y i nie ma dla mnie znaczenia jak
ona to robi, byle to robila.

no włąśnie, co ciebie obchhodzi, tak samo co ciebie obchodzi ze
oprogramowanie jest niestabilne i z masą śmieci skoro jest poprawnie
napisane:O(

Pokasz jakies zrodla na potwierdzenie tej tezy.

Quote:
Pisales procedury do takiego programu 3D i nie pamietasz jego nazwy?
Wez nie sciemniaj.

nic do tego programu nie pisałem, pisałem włąsny program w C o
funkcjonalności podobnej do tamtego programu w asemblerze, dlatego wiem
jaka byłą między nimi róznica w wydajnosci

Gratuluje, napisac program o funkcjonalnosci kilku MB w assemblerze i
nie pamietac jak sie nazywal... Moze czas zaczac brac Nootropil.

Quote:
Wez sie nie osmieszaj. Masz np. funcje realizujaca np. pomniejszenie
fragmentu obrazu z antyaliasingiem. Realizowana jest ona sprzetowo
przez GPU, jaka bedzie roznica czasu wykonania jesli wywolam ja
programujac bezposrednio GPU, albo wywolujac przez funkcje GDI?
Podpowiem, zadna.

jeśli coś można zrobić sprzętowo to lepiej to będzie działąć sprzętowo,

Tak, bo w sprzecie nie ma bledow. Czy ty wiesz, ze np. w takim Pentium
instrukcje sa tlumaczone na mikrokod, a nie sa realizowane sprzetowo?

Quote:
ale czy ty myślisz ze grafika 3D to tylko gry PC? nie każda grafika ma
zwiazek z przetwarzaniem obrazu, często są to czasochłonne filtracje,
sploty, operacje na wielkich macierzach i tym poodbne, pod które nikt
sprzętu masowo nie produkuje

Nie? A widziales np. C.U.D.A. dla NVidii? Widze, ze zahibernowales
jakies 20 lat temu i sie jeszcze nie obudziles. GPU to juz od lat nie
jest po prostu bufor ramki, tylko zestaw rownoleglych procesorow
realizujacych obliczenia matematyczne tysiace razy czybciej niz CPU.
BTW, NVidia masowo produkuje sprzet.

Madz
Guest

Sun Feb 15, 2009 5:43 pm   



Dnia Wed, 11 Feb 2009 14:11:31 +0100, gargamel napisał(a):

Quote:
Użytkownik "Madz" napisał:
Dlaczego?

bo on chce sterować centralką wentylacyjną a wiec wymaganba jest
niezawodnosć, nice chcesz chyba żeby chłop w nocy sie zadusił bo linux się
zawiesił, albo spuchły kondensatorki na płycie głównej:O)


Kolega pisal, ze szuka jakiejs przystawki - wiec uP + iles przekaznikow +

podpiecie tego przez RS232 do komputera. Dodatkowo, jesli zastosuje RS485
to moze miec iles takich ukladow.
Testuje obecnie PC na mini-ITX - chodzi nieprzerwanie na windowsie xp od
polowy listopada. W tym czasie mial jeden restart (nie bylo pradu), a nie
ma jeszcze upsa . Docelowo mozna zoptymalizowac windowsa wykorzystujac jego
wersje embedded - zabezpieczyc glowna czesc przed zapisem (sa takie
mozliwosci, nawet m$ je udostepnia). Mozna tez sie bawic na linuxie jak kto
woli. Jesli sterujemy czyms niekrytycznym, to na pewno przez zawieszenie PC
tragedia sie nie stanie. A jak plyte sz.. trafi, to tak samo moze mi w
mikroprocesorowym sterowniku poleciec procek.


Quote:
stanowczo przesadziłeś, stabilność PC jest praktycznie żadna, bo tam nie
masz żadnej kontroli nad oprogramowaniem i sprzętem i nawet restart nie
zawsze pomoże


praktycznie zadna stabilnosc PC - to gruba przesada z Twojej strony.
Zreszta wiele kwestii poruszyl juz w oddzielnej galezi tego watku kolega
T.M.F.

Quote:
sterowniki na mikrokontrolerach programujesz w asemblerze (całkowita
kontrola nad kodem), masz rozdzielenie pamięci programu i danych i takei tam
(całkowita odpornosć na wirusy i błędy)

calkowita z dokladnoscia do bledu programisty. Jak mamy juz np komunikacje
po TCP, to sie zaczynaja schody - w jezykach wyzszego poziomu jest mnostwo
gotowego, przetestowanego kodu.


Quote:

uP ma licznik wachdog który kontroluje awarie, a restart trwa pojedyńcze
sekundy, a nie minuty jak w PC, no i żre pojedyńcze waty energii (a nie
setki W jak PC) i kosztuje pojedyńcze setki złotych (a nie tysiace jak PC)

Poczytaj o zuzyciu energii przez konstrukcje na ITX. Oprocz mini-itx, jest
jeszcze chocby pico-itx. Zuzycie pradu jest i tak wieksze od uP, ale nie
mowimy tutaj o systemach zasilanych z baterii i jesli taki uklad steruje
szeregiem stycznikow/przekaznikow/elektrozaworow - to pobor pradu przez nie
bedzie o rzad wielkosci wiekszy anizeli komputera ITX (u mnie sredni pobor
to ok 9 wat, a korzystam z dysku 2.5 cala) - jesli skorzystac z pamieci
flash - to zyskamy kolejne 3waty.
Jak wspomnialem wczesniej, jedynym problemem jest brak watchdoga - mozliwe
ze producenci ITX o tym wkrotce pomysla. Tymczasem trzeba sobie cos
wlasnego wymyslic.


m.

Madz
Guest

Sun Feb 15, 2009 5:51 pm   



Dnia Fri, 13 Feb 2009 18:09:09 +0100, gargamel napisał(a):

Quote:
... ale ceną tej łatwości
jest to że potem taki windows, czy linux sie zawiesza, programy sie
zawieszają nie wiedzieć dlaczego, a nawet telefony komurkowe się zawieszają
(i reset nie pomaga) dawniej gdy sprzęt był programowany w asemblerach coś
takiego się w głowie nie mieściło żeby telefon mógł się zawiesić, a mam w
domu taką starą dwóekranową gierkę (donkey kong) i w życiu sie nie
zawiesiła, cuda jakeiś czy co?:O)


Zawieszaja sie nie dlatego, ze sa pisane w jezyksach wysokiego problemu,
ale dlatego ze producenci sie spiesza - kiedys nowy model komorki wychodzil
raz na rok, dzisiaj w miesiacu mamy parenascie nowych modeli albo i wiecej
- a testy tego co napisali programisci sa przeprowadzane na uzytkownikach.
Liczy sie kasa - zeby cos szybko sprzedac, a nie stabilnosc. Gdyby jezyki
wysokopoziomowe byly takie zle jak mowisz, to przy zlozonosci dzisiejszych
systemow z jakich dzis korzystamy mielibysmy restart co minute.


m.

gargamel
Guest

Sun Feb 15, 2009 9:51 pm   



Użytkownik "T.M.F." napisał:
Quote:
No wiem. Tak sie sklada, ze np. gcc robi petle tak optymalnie jak w
assemblerze.

no więc na ile komend asemblera kompilator gcc kompiluje pętlę for?
bo w asemblerze wystarczą dwie, trzy instrukcje


Quote:
Gratuluje, napisac program o funkcjonalnosci kilku MB w assemblerze i nie
pamietac jak sie nazywal... Moze czas zaczac brac Nootropil.

ojej, czytaj za zrozumieniem, nie pisałem w asemblerze, pisałem w C i mój
program w C miałem okazję porównać z programem w asemblerze (jego nazwa ani
kto go napisał wsale mnie nie interesowało)

gargamel
Guest

Sun Feb 15, 2009 10:01 pm   



Użytkownik "Mario" napisał:
Quote:
Załóżmy, że jesteś w stanie napisać krótszą pętlę niż wygenerowana z C
przez kompilator. Ale musisz napisać znacznie więcej kodu, we którym masz
znacznie większe szanse pomylić sie. A pętla w C jest prosta jak
konstrukcja cepa.

tak, wiem że kod w C jest piękny, te wszystki odstępy, tabulatory,
komentarze, wszystko tak piękne że tylko podziwaić i takie proste, dlatego
stosuje sie języki wysokopoziomowe, ale jest dróga strona, kosztem łątwizny
jest niestabilnosć, bnłęduy io brak kontroli, to są fakty a nie moje
widzimisie, acha a co do błędów w kompilatoraach to każdy kto sie świeżo
uczy jakiegoś języka to takie błędy znajduje w ilościach huirtowych na
porządku dziennym:O(
acha, no i cały brak kontroli polega na tyum że nasz funkcję jako czarne
pudełeczka, a wiec nie masz kontroli nad tym co w środku a włąsnie te
nieprzewidywalnme błędy biorą się gównie z niewiedzy a nie z
nieumiejętnosciu programowania


Quote:
Przecież ty pisząc w asemblerze też nie interesujesz się jak to jest
realizowane na poziomie mikrokodu.

przecież instrukcje w asemblerze to jest wąłśnie mikrokod (jedna instrukcja
jest zamieniana na ciąg zer i jedynek (i dokłądnie wiesz na jaki a jak znasz
arhitekturę to i wiesz jak te instrukcje są wykonywane)


p.s. zboczyło sie trochę z tematu a wiec do sterowania wentylatorem mo zna
kupić sobie taki mały sterowniczek mieszczący się w puszce eleltrycznej
9mozliwy do programowania z PC, kupujesz, programuijesz, podłączasz i
zapominasz:O)

gargamel
Guest

Sun Feb 15, 2009 10:09 pm   



Użytkownik "Madz" napisał:
Quote:
A jak plyte sz.. trafi, to tak samo moze mi w mikroprocesorowym
sterowniku poleciec procek.

to teraz policz ile w tym procku PC jest milionów tranzystorów, dodaj do
tego resztę milionów tranzystorów w płycie głównej i podzespołąch i porównaj
to z liczbą tranzystorów w całym sterowniczku opartym na procku
jednoukładowym, to ci popkaże skalę prawdopodobieństwa awarii sprzętu:O)


Quote:
Jak wspomnialem wczesniej, jedynym problemem jest brak watchdoga - mozliwe
ze producenci ITX o tym wkrotce pomysla. Tymczasem trzeba sobie cos
wlasnego wymyslic.

wątpię, bo w PC sam restart nie musi rozwiazać problemu, wiec i sensu
stosowania brak:O(

T.M.F.
Guest

Sun Feb 15, 2009 11:11 pm   



gargamel pisze:
Quote:
Użytkownik "Mario" napisał:
Załóżmy, że jesteś w stanie napisać krótszą pętlę niż wygenerowana z C
przez kompilator. Ale musisz napisać znacznie więcej kodu, we którym
masz znacznie większe szanse pomylić sie. A pętla w C jest prosta jak
konstrukcja cepa.

tak, wiem że kod w C jest piękny, te wszystki odstępy, tabulatory,
komentarze, wszystko tak piękne że tylko podziwaić i takie proste,
dlatego stosuje sie języki wysokopoziomowe, ale jest dróga strona,
kosztem łątwizny jest niestabilnosć, bnłęduy io brak kontroli, to są
fakty a nie moje widzimisie, acha a co do błędów w kompilatoraach to

Skoro to sa fakty to z latwoscia podasz przyklady w literaturze, ktore
je potwierdzaja.

Quote:
każdy kto sie świeżo uczy jakiegoś języka to takie błędy znajduje w
ilościach huirtowych na porządku dziennym:O(

Jasne. Bredzisz.

Quote:
przecież instrukcje w asemblerze to jest wąłśnie mikrokod (jedna
instrukcja jest zamieniana na ciąg zer i jedynek (i dokłądnie wiesz na
jaki a jak znasz arhitekturę to i wiesz jak te instrukcje są wykonywane)

Znowu palnales. Poczytaj czym jest mikrokod.

T.M.F.
Guest

Sun Feb 15, 2009 11:12 pm   



Quote:
no więc na ile komend asemblera kompilator gcc kompiluje pętlę for?
bo w asemblerze wystarczą dwie, trzy instrukcje

I dokladnie tyle samo w gcc.
I o czym to ma swiadczyc?

T.M.F.
Guest

Sun Feb 15, 2009 11:19 pm   



Quote:
A jak plyte sz.. trafi, to tak samo moze mi w mikroprocesorowym
sterowniku poleciec procek.

to teraz policz ile w tym procku PC jest milionów tranzystorów, dodaj do
tego resztę milionów tranzystorów w płycie głównej i podzespołąch i
porównaj to z liczbą tranzystorów w całym sterowniczku opartym na procku
jednoukładowym, to ci popkaże skalę prawdopodobieństwa awarii sprzętu:O)

Czlowieku, na kazdy temat na ktory sie wypowiadasz pokazujesz swoja
ignorancje. Prawdopodobienstwo awarii zalezy od procesu technologicznego
a nie ilosci tranzystorow. Taki AVR32 ma zblizone prawdopodobienstwo
awarii jak malutki 8-bitowy AVR. A kazdy z tych procesorow ma
wielokrotnie nizsze prawdopodobienstwo awarii niz np. kondensator czy
dyskretny tranzystor.

Quote:
Jak wspomnialem wczesniej, jedynym problemem jest brak watchdoga -
mozliwe
ze producenci ITX o tym wkrotce pomysla. Tymczasem trzeba sobie cos
wlasnego wymyslic.

wątpię, bo w PC sam restart nie musi rozwiazać problemu, wiec i sensu
stosowania brak:O(

Jasne, dlatego np. sprzedawane w setkach milonow egzemplarzy routerki/AP
z linuxem na pokladzie wg ciebie nie maja prawa dzialac.
Jak dla mnie EOT.

zbyszek
Guest

Sun Feb 15, 2009 11:55 pm   



Quote:
rozumiesz aktu że im język jest wyższego poziomu tym programista ma
mniejszą kontrolę nad kodem?:O)
np: taka zwykłą pętla for w C, wiesz ile z tego kompilator robi instrukcji
asemblera?:O) jak sprawdzisz to przynajmniej dędziesz wiedział ile tam
jest śmiecia

Programowanie to nie tylko zadanie napisania kodu który raz zadziała,
przejdzie 2 proste testy i już. Kod często ma też sprawdzać zakresy
oczekiwanych
danych i wyników aby wyłapywać ewentualne inne mniej oczywiste błędy
przetwarzania.
Samo dodawanie czy pomnożenie to nie wszystko. Sprawdzanie zakresu wyniku,
przekroczenie tabeli
itd jest ważnym elementem prawie każdego programu. Jesli tego nie robisz w
swoich programach to
są one marne. Nawet nikt nie wie, że występują błędy i wychodzą bzdurne
wyniki.
Stąd takie proste x+y może być obudowane większym sprawdzonym kodem
kompilatora czy biblioteki.


Quote:
Jaka niewiedza? Co mnie obchodzi jak dziala jakas funkcja. Mam funkcje
biblioteczna, ktora realizuje np. x+y i nie ma dla mnie znaczenia jak ona
to robi, byle to robila.

no włąśnie, co ciebie obchhodzi, tak samo co ciebie obchodzi ze
oprogramowanie jest niestabilne i z masą śmieci skoro jest poprawnie
napisane:O(

Czepiasz się niesłusznie. Nie musi go obchodzić efektywność kodu
który wykonuje się sporadycznie, ważniejsza jest wtedy jego pewność
poprawności działania. A poprawność kodu na pewno jest wyższa z kompilatora
C
niż wklepanego ręcznie w asm. Ilość błędów jest związana z ilością linijek
kodu,
im prostrzy i czytelniejszy zapis tym mniej pomyłek.

Także optymalizacja kodu to inne zadanie kiedy piszesz prosty program dla
prostego 8 bitowca
i możesz to zrobic ręcznie niż kiepski C, a inne kiedy tworzysz kod dla
robudowanych
procków mających mnóstwo schematów adresowania i dla których kompilator
szuka optymalnego kodu, wykorzystania banków rejestrów , analizuje i
eliminuje martwy kod,
itd

Quote:
nic do tego programu nie pisałem, pisałem włąsny program w C o
funkcjonalności podobnej do tamtego programu w asemblerze, dlatego wiem
jaka byłą między nimi róznica w wydajnosci
...
jeśli coś można zrobić sprzętowo to lepiej to będzie działąć sprzętowo,
ale czy ty myślisz ze grafika 3D to tylko gry PC? nie każda grafika ma
zwiazek z przetwarzaniem obrazu, często są to czasochłonne filtracje,
sploty, operacje na wielkich macierzach i tym poodbne, pod które nikt
sprzętu masowo nie produkuje

Pisałem kiedyś program w C - implementując prosto dla próby własne FFT a
następnie
skorzystałem z gotowej biblioteki intela - była ona ponad 10 x szybsza od
mojego kodu,
ale to nie zasługa języka programowania tylko wykorzystania wbudowanych
zaawansowanych
instrukcji sygnałowych procka!. Jest ich teraz tak dużo i są związane
ściśle z konkretnymi
prockami, w kazdym są inne zestawy, że sami ani w asm ani w C tego nie
oprogramujemy -
biblioteki tworzy producent procków i ma popisane różne kawałki dla różnych
procków..

Takie filtry i inne o których piszesz właśnie mają piękne wsparcie sprzętowe
(SIMD) w procesorach.


zbyszek

Mario
Guest

Sun Feb 15, 2009 11:58 pm   



gargamel pisze:
Quote:
Użytkownik "Mario" napisał:
Załóżmy, że jesteś w stanie napisać krótszą pętlę niż wygenerowana z C
przez kompilator. Ale musisz napisać znacznie więcej kodu, we którym
masz znacznie większe szanse pomylić sie. A pętla w C jest prosta jak
konstrukcja cepa.

tak, wiem że kod w C jest piękny, te wszystki odstępy, tabulatory,
komentarze, wszystko tak piękne że tylko podziwaić i takie proste,
dlatego stosuje sie języki wysokopoziomowe, ale jest dróga strona,
kosztem łątwizny jest niestabilnosć, bnłęduy io brak kontroli,

Ja widzę u ciebie błędy io Smile
Kod w asemblerze też może być piękny z tabulatorami i komentarzami.
Kod w języku wysokopoziomowym jest przede wszystkim zwięzły. Fakt
pisania w C (i automatycznej generacji kodu wynikowego) nie jest
przyczyną niestabilności i błędów io. Systemy operacyjne pisze się w C i
to jest najlepszym przykładem na to że jest to najlepsze rozwiązanie.
Nie sądzę żeby napisany w asemblerze system był stabilny i dawał się
rozwijać.

to są
Quote:
fakty a nie moje widzimisie, acha a co do błędów w kompilatoraach to
każdy kto sie świeżo uczy jakiegoś języka to takie błędy znajduje w
ilościach huirtowych na porządku dziennym:O(

Z reguły to nie są błędy kompilatora tylko brak wiedzy programisty. Jak
się przerzucisz z jednego kompilatora asm na inny to też będzie ci się
kompilacja sypać.

Quote:
acha, no i cały brak kontroli polega na tyum że nasz funkcję jako czarne
pudełeczka, a wiec nie masz kontroli nad tym co w środku a włąsnie te
nieprzewidywalnme błędy biorą się gównie z niewiedzy a nie z
nieumiejętnosciu programowania

Czytasz opis funkcji i wiesz jak ona działa. Jak masz wątpliwości to
przeglądasz kod. Jeśli chcesz w c wysłać przez UART liczbę typu int to
użyjesz np printf("%d",a) - najpierw inicjując port
rprintfInit(uartSendByte). Nie musisz znać architektury. Aby to zrobić
w asm musisz napisać sobie konwersję bin > dec > ascii potem załadować
do bufora i dopiero potem uruchomić procedurę wysyłania przez UART. W
każdej z tych procedur musisz pilnować jakie wartości odłożyć na stos
jakie rejestry użyć itp. Jednym słowem nawet do trywialnych operacji
matematycznych musisz znać dokładnie architekturę. Trudno jest ci
dołączyć kod z biblioteki - zwłaszcza pisany przez kogoś innego a w
dodatku gdy przechodzisz na inny procek to trzeba wszystko przepisywać
od nowa.
Quote:

Przecież ty pisząc w asemblerze też nie interesujesz się jak to jest
realizowane na poziomie mikrokodu.

przecież instrukcje w asemblerze to jest wąłśnie mikrokod (jedna
instrukcja jest zamieniana na ciąg zer i jedynek

Jedna instrukcja już jest ciągiem zer i jedynek :)

(i dokłądnie wiesz na
Quote:
jaki a jak znasz arhitekturę to i wiesz jak te instrukcje są wykonywane)

Doczytaj o mikrokodzie i zastanów się czemu np. w prockach typu CISC
cykl maszynowy składa się z kilku cykli zegarowych.

Quote:


p.s. zboczyło sie trochę z tematu a wiec do sterowania wentylatorem mo
zna kupić sobie taki mały sterowniczek mieszczący się w puszce
eleltrycznej 9mozliwy do programowania z PC, kupujesz, programuijesz,
podłączasz i zapominasz:O)

Można też kupić mieszczące się w puszce sterowanie światłem czy roletami
a to wszystko na pilota radiowego.


--
Pozdrawiam
MD

Mario
Guest

Mon Feb 16, 2009 12:04 am   



gargamel pisze:
Quote:
Użytkownik "T.M.F." napisał:
No wiem. Tak sie sklada, ze np. gcc robi petle tak optymalnie jak w
assemblerze.

no więc na ile komend asemblera kompilator gcc kompiluje pętlę for?
bo w asemblerze wystarczą dwie, trzy instrukcje

Pod warunkiem, że w pętli będzie inkrementacja/dekrementacja o 1 a
licznik ma wielkość równą długości słowa danych.

Quote:

Gratuluje, napisac program o funkcjonalnosci kilku MB w assemblerze i
nie pamietac jak sie nazywal... Moze czas zaczac brac Nootropil.

ojej, czytaj za zrozumieniem, nie pisałem w asemblerze, pisałem w C i
mój program w C miałem okazję porównać z programem w asemblerze (jego
nazwa ani kto go napisał wsale mnie nie interesowało)

Może nie potrafiłeś wydajnie pisać?

--
Pozdrawiam
MD

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

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonfigurować wentylację i oświetlenie domu przez USB z PC?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map