logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Czy Bascom nadaje się do szybkich i stabilnych zastosowań profesjonalnych?

krzysztof1 20 Mar 2003 08:31 6283 38
Najlepsze odpowiedzi LABEL_AI_GENERATED

Czy Bascom sprawdzi się w profesjonalnych projektach wymagających dużej szybkości, małego kodu i pełnej kontroli nad mikrokontrolerem?

Bascom może się nadać do prostych lub małych projektów, ale do zastosowań profesjonalnych wymagających dużej szybkości, małego kodu i pełnej kontroli nad mikrokontrolerem raczej się nie nadaje [#140896][#152089][#154329] Użytkownicy wskazują na słabą optymalizację i duży kod wynikowy, a także na ograniczoną kontrolę nad układem [#140896][#142958][#154329] Jeśli zależy Ci na profesjonalnym podejściu, wątek najczęściej poleca C albo ASM; C jest tu uznawane za praktyczniejsze w większych projektach, a ASM za najlepszy wybór tam, gdzie liczy się każda instrukcja [#140247][#143208][#154330] Pojawia się też sensowna propozycja hybrydy: ASM do procedur bezpośrednio sprzętowych, a C do menu, obliczeń i innych fragmentów mniej zależnych od sprzętu [#164055]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA
  • #1 140206
    krzysztof1
    Poziom 12  
    Posty: 86
    Ocena: 5
    Nie znam prawie w ogóle pakietu Bascom. Widzę, że cieszy się on bardzo dużą popularnością.
    Jak uważacie, czy nadaje się on do zastosowań gdzie wymagana jest duża szybkość i stabilność?
  • REKLAMA
  • #2 140247
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Ja też go nie znam, ale jeżeli się czegoś chcesz nauczyć to zdecydowanie polecam naukę C. Wtedy z astosowaniami profesjonalnymi nie ma problemów;-)
  • #3 140896
    midas78
    Poziom 19  
    Posty: 360
    Pomógł: 12
    Ocena: 12
    Co do stabilnosci to jako tako. Ale jezeli chodzi o wielkosc generowanego kodu to tragedia. Jesli na prawde chcesz miec kontrole nad kodem, to asm albo C.
  • #4 141852
    krzysztof1
    Poziom 12  
    Posty: 86
    Ocena: 5
    Jeśli chodzi o wielkość kodu to z "c" może też być różnie... Wszystko zależy od kompilatora. Np. w Keil uVision, którego używam, wykorzystując zaimplementowane tam procedury otrzymujemy bardzo duże rozmiary kodu wynikowego. Przykładowo wysłanie napisu do wyświetlacza LCD przy pomocy funkcji "printf" to zwiększenie kodu o około 300b. To wcale nie tak mało...
  • #5 141868
    Sind
    Poziom 16  
    Posty: 182
    Pomógł: 9
    Ocena: 3
    Bascom w pelnej wersji oferuje wiele ciekawosteck i nowinek jest bardzo prosty w obsludze, a jezeli znasz troche asm to nie ma problemu zeby ob;uzyc nim niestety narazie tylko almelki
    pozdrawiam ;-)
  • REKLAMA
  • #6 141904
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    krzysztof1: No to weż sobie w Keilu napisz swoje procedury do LCD, a nie używaj bibliotek, bo to one są kompilowane i dołączane do kodu wynikowego i tyle zajmują...
    Z praktyki to często zdażało mi się, że kod napisany a C po kompilacji zajmował mniej niż napiasany w asm.
    A jeżeli ktoś się chce zajmować tym profesjonalnie to moim zdaniem C jest bezkonkurencyjne.
  • #7 142142
    krzysztof1
    Poziom 12  
    Posty: 86
    Ocena: 5
    Sind: Czy bobrze zrozumiałem? W Bascom można robić wstawki asemblerowe?
  • #8 142148
    Sind
    Poziom 16  
    Posty: 182
    Pomógł: 9
    Ocena: 3
    Tak dokladnie deklaruje sie je dyrektywa $ASM
  • #9 142159
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Tak dla ścisłości C też można robić wstawki asemblerowe...
  • #10 142377
    mutombo
    Poziom 11  
    Posty: 41
    Owszem można jedank ostatnio wstawiając "wstawkę asemblerową" napotkałem się z dziwną rzeczą (cąły czas mowie o bascomie" otórz wstawka asemblerowa nie kompilowala się gdzu uzywałem w niej procedur (sub....itd). Z tego co wiem to robilem to na wersji pełnej wię nie jest to chyba ograniczenie dema
  • REKLAMA
  • #11 142802
    Sind
    Poziom 16  
    Posty: 182
    Pomógł: 9
    Ocena: 3
    mutombo napisał:
    Owszem można jedank ostatnio wstawiając "wstawkę asemblerową" napotkałem się z dziwną rzeczą (cąły czas mowie o bascomie" otórz wstawka asemblerowa nie kompilowala się gdzu uzywałem w niej procedur (sub....itd). Z tego co wiem to robilem to na wersji pełnej wię nie jest to chyba ograniczenie dema


    Nie mozesz wstawic asemblerowej komendy SUB gdyz w baskomie jet ona deklaracja procerury uzytkownika i jest zastrzezona, trzeba o tym pamietac
    pozdrawiam
  • #12 142958
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Co do języka C to czy zastanawialiście się jakie ma możliwości procedure printf?. Urzycie jej w procesorze x86 to dodatkowe 20kB kodu. Przy programach w C zaleca się korzystanie z procedury iprintf (nie wiem czy na mikrokontrolery jest odpowiednik) która jest pozbawiona obsługi liczb zmiennoprzecinkowych.
    A co do BASCOMa to ja osobiście nie widze go w zastosowaniach profesjonalnych z powodu wspomnianej słabej optymalizacji.
  • REKLAMA
  • #13 143208
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    No wlasnie o to mi chodzlo - w zastosowaniach profesjonalnych C nie ma w zasadzie zadnej konkurencji.
  • #14 143282
    mutombo
    Poziom 11  
    Posty: 41
    Sind napisał:

    Nie mozesz wstawic asemblerowej komendy SUB gdyz w baskomie jet ona deklaracja procerury uzytkownika i jest zastrzezona, trzeba o tym pamietac
    pozdrawiam


    Czzyli w jaki sposob moge wstawic procedure jak mam ja zrobiona w asm ???
  • #15 143606
    Jaco18
    Poziom 26  
    Posty: 1122
    Pomógł: 7
    Ocena: 15
    Trzeba zrobić procedure:

    sub (...)
    ......
    .....
    $ASM
    ........... (kod w asm)
    ........... (kod w asm)
    END ASM
    end sub
  • #17 144089
    1004kw
    Poziom 15  
    Posty: 142
    Pomógł: 6
    Ocena: 11
    W zasadzie temat jest zamkniety, ale jesli mozna jeszcze slowko. Nie zgadzam sie z tym, ze program napisamy w C jest bardziej optymalny niz ten napisany w asemblerze. Wszystko zalezy od umiejetnosci programisty.
    Jesli natomiast chodzi o Bascom - polecam tylko do malych projektow - ale tyklko wtedy, gdy ktos zupelnie nie zna asemblera lub C.
  • #18 152089
    Eagle
    Poziom 24  
    Posty: 536
    Pomógł: 57
    Ocena: 31
    Ludzie !!!

    Co wy bredzicie :

    Tdv napisał:
    No wlasnie o to mi chodzlo - w zastosowaniach profesjonalnych C nie ma w zasadzie zadnej konkurencji.


    Taką konkurencją jest ASM każdy język wyższego poziomu a takim jest C narzuca ograniczenia i zwiększa kod i z tym nie można dyskutować !!!
    Przy idealnym kompilatorze C ( a takiego niema i nigdy nie będzie) kod C będzie równy z kodem ASM.

    Tdv napisał:
    krzysztof1: Z praktyki to często zdażało mi się, że kod napisany a C po kompilacji zajmował mniej niż napiasany w asm.
    A jeżeli ktoś się chce zajmować tym profesjonalnie to moim zdaniem C jest bezkonkurencyjne.

    To kiepska ta twoja praktyka, poprostu jesteś lepszy w C

    A jeszcze jedno, asm nie jest aż taki trudny :)
    a poszczególe uC mają bardzo podobne instrukcje więc znając jeden prawie znasz wszystkie, co nie znaczy żeby nie uczyć się C, a do Bascoma to porównał bym do jazdy szybkim ferrari z zamkniętymi oczami, C do takiej jazdy z zamkniętym jednym okiem a asm ... no wiecie pełny gaz, bo niema nic szybszego niż ASM gdzie dla AVR cykl przy f 16MHz = 125 ns

    Pozdrawiam
  • #19 152108
    krzysztof1
    Poziom 12  
    Posty: 86
    Ocena: 5
    Trudno się nie zgodzić z Eagle. Jeśli chodzi o c i ASM to podposuję się pod jego opinią dwoma rękoma.
    Ale dziwi mnie, że aż takim dużym powodzeniem cieszy się Bascom 8O . Przecież oprócz łatwości pisania programów niema on żadnych zalet!
    Czyż nie lepiej raz napisać samemu w ASM procedury do obsługi LCD, RC5, I2C itp. i później korzystać z nich w nieskończoność! Można też skorzystać z gotowych procedur zaczerpniętych z internetu! Można na nich poeksperymentować ucząc się jednocześnie asemblera! Niema przecież bardziej efektywnego języka!
  • #20 152694
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    A zastanowiliście się nad optymalizacją kodu? W C wybiera się czy chcemy kod krótki czy szybki, a w asemblerze trzeba przerobić kilka linijek. Nadal jestem jednak zwolennikiem asm`a , C do dla mnie języka dla pokręconych ludzi.
  • #21 153279
    tiim
    Poziom 12  
    Posty: 4
    Bascoma nakrecily czasopisma elektroniczne.
    Pamietacie jak P.G. chwalil sie ze autor Bascoma to jego "kumpel" ?
    Moim zdaniem Bascom jest raczej do zabawy i szkolnych eksperymentow.
  • #22 153437
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    popieram Elektryka zawsze najmniejszy kod uzyska się stosując najbliższy danemu prockowi kod bo wtedy utrzymujesz całą kontrolę nad systemem i nie martwisz się o to co się dzieje poza twoją kontrolą. Ale nie zawsze jest to dobre bo nie można korzystać z gotowych procedur do danego typu urządzeń (bo ich nie ma ogólnie dostępnych). A Z tym C to przesada jego chwalenia bo też nie jest za dobry. To może jeszcze wklejmy Delphi do procków i dla wszystkich będzie po równo. Gdzie się nie rozglądać to zawsze istnieje wojna między zwolennikami jakiegoś programu. A jak każdy program ma swoje "zady i walety" i walety więc nie ma co ciągnąć tej wojny na kolejnym temacie. Niech każdy stosuje to co chce a nie odrazu krzyczeć że dany program jest najlepszy a inny do niczego. Bascom tak jak inny się rozwija i dobrze że taki się pojawił nie narzekajcie na niego bo nie ma poco. A jak ktoś chce to niech wymyśli własny kompilator i tak wróci do asm bo procek tylko to umie a nie jakieś c ,basic ....
  • #23 154144
    painkiller
    Poziom 13  
    Posty: 52
    asm spox ale niech ktos sproboje napisac cos powaznego idzie sie pociac chodzi o to ze w jezykach wyzszych poziomow wszystko robi sie prosciej tak wlasciwie to ja niewidze zadnej roznicy miedzy c a delphi poprostu bieze sie i sie pisze nawet kod niewiele rozni sie pod wzgledem szybkosci czy objetosci te kompilatory po przelozeniu na asm generuja praktycznie tosamo asembler stosowalem tylko do fragmentow z ktore musialy byc szybkie albo kompilator robile je bardzo duuze ale gdybym chcial wszystko pisac w asm to pewnie juz dawno niebylo by mnie na tym swiecie a tak mam przynajmniej tych kilka miesiecy a bascom jest jak narazie tylko zabawka marnujaca pamiec moze kiedys to sie zmieni
  • #24 154207
    Eagle
    Poziom 24  
    Posty: 536
    Pomógł: 57
    Ocena: 31
    A co Ty piszesz bazy danych czy windowsa na uC, że pociąć się chcesz ?

    Oglądałem nie raz kod wynikowy z C i to dopiero pociąć się można !!! istne marnotractwo rejestrów i ramu, stosu i cykli !!!


    Teraz piszę w sumie pod AVR ale były czasy gdzie pod 89c2051 w asm program zają 2kb + 14 baytów , po przeglądnięciu programu udało się skrócić program o 14 baytów z ramem było też krucho aż do tego stopnia, że liczyłem dokładnie ile zajmie stos, wykorzystując podwójne czy wielokrotnie do różnych celów komórki ramu, w sumie wielki program w 2k, jeśli osiągną byś to w C to chylę pokłony, ALE TO NIE MOŻLIWE !!!

    Jeśli natomiast używasz uC do mrugania ledem i wydawania odgłosów buzerkiem to pisz sobie to w C bo pewnie szybciej i mniej błędów można popełnić, co najwyżej powielić cudze.

    Jako, że nie pisałem w C opisz jak wygląda sprawa np. taka :

    LCD zainicjowany wysyłam znak ASCI do LCD ( LCD standard :) )

    czy C sprawdza stan bitu BUSY LCD ?

    Jeśli tak to marnotractwo czasu gdy wysyłasz tylko 1 znak ( bo kolejny wyślesz np za jakiś czas ;) )

    jeśli nie sprawdza, to co będzie gdy wyślemy od razu kolejny znak ? ( LCD go nie odbierze!!! )

    Gdy piszesz to pod ASM wiesz co chcesz aby prog. robił

    Więc może kompilator C od wróżki aby domyślał się co autor miał na myśli :)
  • #25 154306
    painkiller
    Poziom 13  
    Posty: 52
    tak uzywam c do migania ledami czasem nawet dwoma ale to juz wyzsza szkola (trzema w c juz sie nie da bo taki jest standard c maksymalnie 2 diody do jednego kontrolera) a raz wydalem z buzzera odglos kota skladanego w ofierze (glos psa byl tez zablokowany przez standard) naprawde byla to wyborna zabawa a jaki szpan w dodatku wszystko bylo w c najsmieszniejsze w tym wszystkim bylo to ze gdy skonczlem program niewiedzialem co chcialem zeby robil pisalem to na chybil trafil ... powiedz mi co to jest 2k ? to jest nic raptem kilka godzin pisania no zalezy czego bo mozna krocej ale do asm jak znalazl mozna tez powalczyc o kilka bajtow jesli sie nie miesci a pisales kiedykolwiek cos co zajmowalo wiecej niz 8k pamieci tak swoja droga to ciekawe kto napisal ten kod w c ze az tak strasznie marnowal rejestry i stos ktos madry kiedys tu gdzies napisal ze uzywanie jezyka wysokiego poziomu nie zwalnia z obowiazku myslenia wiec jak ktos nie umie to niech sie nie bieze bo bedzie z tego powodu wiecej problemow niz pozytku jesli chodzi o obsluge lcd w c to pisalem sobie sam i niema zadnego problemu zeby sprawdzac zawartosc bitow pozatym jesli kod ma byc optymalny to nieda sie nic zrobic bez znajomosci sprzetu i asma pisalem i czasem pisze w tym jezyku zeby niebylo ale skoro ktos nigdy nie napisal ani linijki w c to niepowinien sie na ten temat wypowiadac mam na koniec jedno pytanie czy ma moze ktos kompilator w ktorym mozna migac 3 diodkami ? mile widziana obsluga glosowa lub telepatyczna
  • #26 154313
    Nemo
    Poziom 31  
    Posty: 2078
    Pomógł: 9
    Ocena: 72
    Zastanawiam się o co ta dyskusja. C dla Windows, Basic na Atari 65XE, a Asembler na mikrokontrolery i sterowniki. To moje preferencje. Poza tym jeśli chcę najkrótszy program, to piszę go w asemblerze. Jeśli czyjś program w C jest krótszy od asemblerowego, to znaczy że nie zna on asemblera. Niestety, taka jest prawda.
    Pozdrawiam wszystkich i tych od asm i od bascoma, a przede wszystkim od asemblera.
  • #27 154326
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Nemo skończmy dyskusje c dla linux c++ dla windows ;)
    Basic na Atari to już troche za dużo powiedziane, moim zdaniem basic jest dla początkujących programistów (sorki jak kogoś uraziłem), niby wszystko da się napisać ale zawsze pozostaje ten niedosyt że to że się łatwo pisze to znaczy że można napewno to zrobić żeby lepiej pracowało od strony procesora.
  • #28 154329
    Nemo
    Poziom 31  
    Posty: 2078
    Pomógł: 9
    Ocena: 72
    Oki. Odpowiadam zatem na pytanie forum: Bascom nadaje się do profesjonalnych zastosowań, pod warunkiem, że owy profesjonalizm nie wymaga absolutnej kontroli nad mikrokontrolerem. Do tego Bascom nie nadaje się.
    Pozdrawiam.
  • #29 154330
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Hehehehehe, to panowie proponuję stworzyć jakiś średnioo zaawansowany projekt i dla prównania napisać oprogramowanie w asm i w C.
    Co do długości kodu to bywa różnie i nie praktyka w asm ma największe znaczenie, a dobry kompilator. Fakt, że czasami mi też się zdażało dłubać w asm z C wygenerowanym;-).
    Ale jedno jest niepodważalne - czas pisania tego programu... Jak mi ktoś powie, że szybciej je napisze w asm niż w C i jeszcze to udowodni to zjem swoje trampki...
    Więc dochodzimy do profesjonalizmu, a tu zazwyczaj spore znaczenie ma efektywność, czyli podtrzymuję swoje twierdzenie, że C nie ma konkurencji.
    No i jeszcze jeden argument. Widział kto LINUX'a? Calusieńkie jądro pisane w C. Niech to ktoś napisze w asm (ponoć Winzgroza częściowo pisana była w asm, efekty powszechnie znane, choć bynajmniej nie z winy asemblera...) ;-)

    Swoją drogą niezła rozgorzła dyskusja.
  • #30 154468
    Eagle
    Poziom 24  
    Posty: 536
    Pomógł: 57
    Ocena: 31
    tdv napisał :

    „Ale jedno jest niepodważalne - czas pisania tego programu... Jak mi ktoś powie, że szybciej napisze w asm niż w C i jeszcze to udowodni to zjem swoje trampki... „

    Jeśli chodzi Ci o ilość (=czas) a nie jakość , to nie pisz programów np. do sterownika ABS w aucie bo będę się bał jeździć :). Jednak niepodważalnie trampki zostają na nogach

    „No i jeszcze jeden argument. Widział kto LINUX'a? Calusieńkie jądro pisane w C. Niech to ktoś napisze w asm ...”

    Rozumiem, że 100% twoich autorskich programów przyppomina zaawansowane środowiska takie jak linux czy windows bo tylko do takich zastosowań nadaje się uC ???

    Ale, żeby nie podpaść ludziom z C nasuwa się taka konkluzja wg mnie:

    BASCOM : ( nigdy nie pisałem ale domyślam się )
    Zalety :

    dobry na początek, programy mało zaawansowane, prostota pisania, łatwość znalezienia błędu ( swojego ;) , szybkość pisania programu, dobry do zabawy, nie wymaga od programisty specjalistycznej wiedzy

    Wady:
    Ograniczona kontrola nad uC, duży kod wynikowy, stosunkowo mała prędkość kodu wynikowego, szukanie bibliotek funkcji, cena ( to dla uczciwych ;) )


    ---------------------------------
    C ( piszę ale chyba nie wiele ;) )

    Zalety :

    Duża kontrola nad uC, duża szybkość pisania programów, łatwość znalezienia błędu w pouwaniu do ASM , programy zaawansowana i b. zaawansowane

    Wady : ( cokolwiek tu napiszę już mam krechę J )

    Kod wynikowy >= od kodu asm, przy programach w których liczy się każdy cykl konieczność wstawek ASM, ( tej pozycji nie wiem na 100% ale poszukiwanie bibliotek do nietypowych zastosowań ewentualnie znowu wstawka asm), wymaga od programisty specjalistycznej wiedzy, konieczność posiadania wiedzy o uC ale nie do końca ;)

    ---------------------
    ASM

    Zalety :
    Całkowita kontrola nad uC, zastosowania dla programów o krytycznych parametrach czasowych i objętościowych, nie ograniczona satysfakcja ;)

    Wady:
    wymaga 100% wiedzy o uC, napisanie skomplikowanego programu zajmuje stosunkowo dużo czasu, potrzebna praktyka i sposoby na wykrywanie trudnych błędów, potrzebna praktyka przy pisaniu programów

    A jeszcze jedna szpila ;)

    Każdy program napisany pod C da się napisać pod ASM, natomiast nie każdy prog. ASM da napisać się w C chyba że będzie wyglądał tak

    main()

    {

    Tu wstawka ASM

    }
    end

    ;)


    bo jeśli tak to w bascom to też jest do tego dobry ;) gdzie cały prog. Bascoma będzie jedną wielką wstawką ASM

    Pozdrawiam wszystkich co pukają w klawiaturkę nie ważna pod czym piszecie, piszcie z głową J

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy przydatności pakietu Bascom do szybkich i stabilnych zastosowań profesjonalnych. Uczestnicy podkreślają, że Bascom jest prosty w obsłudze i popularny wśród początkujących, ale ma ograniczenia w optymalizacji kodu, generując często większe rozmiary niż C czy asembler. Wstawki asemblerowe w Bascomie są możliwe, jednak z pewnymi ograniczeniami, np. nie można używać instrukcji SUB jako nazwy procedury. W porównaniu do Bascoma, język C jest wskazywany jako bardziej profesjonalny i efektywny, zwłaszcza przy odpowiednim kompilatorze i umiejętnościach programisty. Asembler zapewnia największą kontrolę i optymalizację, ale jest trudniejszy i czasochłonny w pisaniu. W praktyce często stosuje się połączenie C i asemblera, gdzie asembler obsługuje krytyczne fragmenty sprzętowe, a C resztę programu, co pozwala na kompromis między szybkością, rozmiarem kodu i łatwością programowania. Bascom jest oceniany jako narzędzie do małych projektów i nauki, a nie do zaawansowanych zastosowań wymagających pełnej kontroli nad mikrokontrolerem. W dyskusji pojawiły się także uwagi o optymalizacji kodu, znaczeniu doświadczenia programisty oraz specyfice mikrokontrolerów AVR, które dobrze współpracują z językami wysokiego poziomu dzięki dużej liczbie rejestrów. Przykładowe zastosowania obejmują obsługę LCD, protokoły komunikacyjne (Modbus RTU, IDEC), I2C, a także zarządzanie pamięcią i rejestrami wewnętrznymi. Wspomniano o narzędziach takich jak Keil uVision oraz o procesorach Atmel AVR i M161 Atmela.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA