-
61. Data: 2014-01-28 18:10:04
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: "J.F" <j...@p...onet.pl>
Użytkownik "Zbych" napisał w wiadomości
W dniu 2014-01-27 23:45, J.F pisze:
>>> Ale w C jest de facto standard
>>> pozwalający zrobić sporo niskopoziomowych rzeczy. Np:
>> /* Diable watchdog timer */
>> WDTCTL = WDTPW | WDTHOLD;
>> Akurat tu .. Pascala latwo rozszerzyc o operacje bitowe, zas C nie
>> gwarantuje jednolitej kompilacji powyzszego.
>> W obliczu roznych mozliwosci procesora i sprzetowych rejestrow nie
>> wiadomo jak C to skompiluje.
>Akurat w tym przykładzie kompilator nie ma zbyt dużego wyboru i poza
>zmianą sposobu adresacji rejestru nie może nic fikuśnego wygenerować.
>Gorzej z konstrukcjami typu:
>rejestr |= stała
>rejestr &= stała
>rejestr ^= stała
>rejestr.bit = stała
>Bo może się okazać że taka modyfikacja rejestru wcale nie jest
>atomowa.
Atomowe to jedno, ale to bodajze w '51 bylo ze dwa rejestry byly pod
tym samym adresem,
jeden do odczytu, drugi tylko do zapisu, ale instrukcje typu
OR/AND/XOR stala
odczytywaly ten do do zapisu.
A jak to C skompiluje - nie wiadomo.
Nie wiadomo tez w jakiej kolejnosci bedzie wyrazenie obliczac i
rejestry czytac, a to moze byc istotne.
J.
-
62. Data: 2014-01-29 02:22:21
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: A.L. <a...@a...com>
On Tue, 28 Jan 2014 18:01:30 +0100, "J.F"
<j...@p...onet.pl> wrote:
>Użytkownik "Piotr Gałka" napisał w wiadomości
>>Użytkownik "A.L." <a...@a...com> napisał w wiadomości
>>> Do tego wlasnei sluzy C. C jest strukturalizowanym asemblerem
>>Czasem brakuje mi w C dostępu do bitu przeniesienia.
>>A może jest tylko ja nie wiem ?
>
>Nie ma, bo to wbrew pozorom nie assembler.
>
>No, sa wstawki assemblerowe, da sie to zrobic, ale to juz trzeba
>wiecej instrukcji napisac, bo inaczej nie wiadomo jak sie wczesniejsze
>skompilowalo.
>
>
Wstawi asemblerowe to sie robilo 30 lat temu. Dzisiaj praktyka mowi
aby napisac procedure w asemblezre i wolac jja z C
A.L.
-
63. Data: 2014-01-29 09:42:23
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Marek <f...@f...com>
On Tue, 28 Jan 2014 19:22:21 -0600, A.L. <a...@a...com> wrote:
> Wstawi asemblerowe to sie robilo 30 lat temu. Dzisiaj praktyka mowi
> aby napisac procedure w asemblezre i wolac jja z C
Przecież procedura w asm to właśnie wstawka... czy chodzi o gołą
procedurę asm w pliku zew. (.S ) i później linkowaną z funkcjami w
C?
Wstawka asm w funkcji C jest chyba bezpieczniejsza bo kompilator wm
zadba prolog i epilog funkcji...
--
Marek
-
64. Data: 2014-01-29 17:50:02
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Sebastian Biały <h...@p...onet.pl>
On 2014-01-27 00:36, s...@g...com wrote:
> A ileż się nasłuchałem, że w C da się zrobić to, czego w Pascalu się nie da.
Na uC w C da się zrobić wszystko a w Pascalu nic. Głównie dlatego że
wybór języka programowania przez rynek dawno został zrobiony i nie ma tu
żadnego sensownego argumentu. Po prostu *NIE* ma kompilatorów Pascala na
uC poza jakimś żałosnym hobbystycznym szumem, więc rozmowa na ten temat
jest czysto akademicka i nie ma praktycznego zastosowania jak również
wykazuje ukryte skłonności samobójcze kierownika potencjalnego projektu.
-
65. Data: 2014-01-29 18:39:09
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: h...@m...uni.wroc.pl
W dniu poniedziałek, 27 stycznia 2014 17:45:17 UTC-5 użytkownik J.F napisał:
> Użytkownik napisał w wiadomości grup
>
> dyskusyjnych:3a3cc0cf-7519-4efc-b7a1-c307d18b9f33@go
oglegroups.com...
>
> >Pytasz się dlaczego wymyślono C. Proste, był potrzebny język
>
> >z nastepującymi własnościami:
>
> >- ma się dać kompilować głupim kompiltorem (pierwsza maszyna na
> >której
> > chodziło C mała w porównaniu z innymi uwczesnymi maszynami)
>
> No, C i Pascal to mniej wiecej te same lata, a tych kombinacji w C
> tyle, ze kompilator Pascala chyba znacznie prostszy.
>
C i Pascal to duze uproszczenie w porównaniu z wcześnieszymi
PL/I czy Algolem 68. Ale nawet Pascal Wirtha zawiera parę
"ciekawych" konstrukcji:
- zwracanie wartosci przez przypizanie do nazwy funkcji (trzeba
rozróżniać zwracanie wwartości od wywołania rekursywnego)
- parametry przekazywane przez wartość i przez zmienną,
trzeba je rozróżniać, a przekazywanie przez zmienną wymaga
w praktyce żeby kompilator w środu miał operator adresu
- rekordy z wariantami, mają część stałą i zmienną, przy tym
pozwalają na dowolne zagnieżdżanie (co daje podobny efekt
jak anonimowe unie wprowadzone w latach 90 do niektórych
kompilatorów C)
- rekordy spakowane, użyteczność podobna do pół bitowych, ale
można napisać całą masę bezużytecznych deklaracji które
kompilator ma poprawnie obsłużyć.
- funkcje lokalne (mają dostęp do zmiennych otaczającej je
funkcji)
- skoki nielokalne (trzeba zwinąć stos wywołań)
- tablice konforemne, mają specjalną regułę przekazywania
jako parameter i wymagają wsparcia dla tablic zmiennej
wielkości
Wiele implementacji Pascala pomijało ważne własności
ale pełna implementacja byłaby bar
>
> >- ma pozwalać na zwięzły i czytelny zapis programu
>
>
>
> Juz chyba nie bylo co oszczedzac pojedynczych znakow, a i tak
> najwiecej sie na wciecia tracilo :-)
> Brak instrukcji "with" w C troche utrudnia zwiezlosc.
Nietrywialne użycia "with" zastępuje operator adresu i wskaźniki.
Tak źe w sumie zysk dla Pascala raczej niewielki. Ja pisałem
sporo w Pascalu, a nie pamiętam czy kiedyś uzyłem "with".
>
>
>
> >- pozwalać na otrzymanie w miarę wydajnego kodu wynikowego
>
> Tego i Pascal nie wyklucza, no moze z wyjatkiem sprawdzania zakresow
> tablic.
>
Pascal pozwala na wydajny kod jak masz optymalizator. Ale bez
optymalizatora kod wynikowy będzie gorszy niż z C,
-
66. Data: 2014-01-29 21:14:08
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: h...@m...uni.wroc.pl
W dniu środa, 29 stycznia 2014 11:50:02 UTC-5 użytkownik Sebastian Biały napisał:
> On 2014-01-27 00:36, s...@g...com wrote:
>
> > A ileż się nasłuchałem, że w C da się zrobić to, czego w Pascalu się nie da.
>
> Na uC w C da się zrobić wszystko a w Pascalu nic. Głównie dlatego że
> wybór języka programowania przez rynek dawno został zrobiony i nie ma tu
> żadnego sensownego argumentu. Po prostu *NIE* ma kompilatorów Pascala na
> uC poza jakimś żałosnym hobbystycznym szumem, więc rozmowa na ten temat
> jest czysto akademicka i nie ma praktycznego zastosowania jak również
> wykazuje ukryte skłonności samobójcze kierownika potencjalnego projektu.
Obrazek nie jest tak zero-jedynkowy jak go przedstawiasz. Jest GNU Pascal
i na procki wspierarane przez odpowiednia wersje GNU C możesz zrobić
to co w C. Od paru lat nie jest rozwijany (zajęłem się czym innym)
ale wersje bazowane na GCC 3.x będą działać przez wiele lat.
Ty pewnie nie bierzesz GNU Pascala pod uwagę, ale ZCW był
(i prawdopodbnie jest) używany przez całkiem poważne projekty.
Jest też Free Pascal, nie wiem jak ze wsparciem mniejszych prockow,
ale większych ARM-ach da się podziałać.
Ja dziś uC programuję w C, ale nie robię jakiś super
poważnych projektów. W poważnym projekcie Pascal może
mieć zalety. Oczywiście trzeba brać pod uwagę wiele
czynników i szanasa że Pascal będzie najlepszy jest
mała. Ale jak ktoś używa Pascal to nie rzucaj epitetów:
jest szansa że wie co robi.
-
67. Data: 2014-01-29 21:40:44
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Luke <l...@l...net>
Dnia 2014-01-27 23:45, Użytkownik J.F napisał:
> Trzeba przyznac ze skladnia C jest "bledogenna" - nawet doswiadczony
> programista moze sie latwo pomylic.
95% takich pomyłek wykrywa nawet gcc z włączonym odpowiednią opcją i
wyświetla warning ("upewnij się, czy na pewno tak chciałeś").
L.
-
68. Data: 2014-01-29 23:08:58
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: "J.F." <j...@p...onet.pl>
Dnia Mon, 27 Jan 2014 18:36:28 -0600, A.L. napisał(a):
> On Mon, 27 Jan 2014 13:44:15 -0800 (PST), h...@m...uni.wroc.pl
>>Dziś kompilatory optymalizujące dla C są łatwo dostępne, więc można
>>nie doceniać możliwici użycia prostego kompilatora. Ale w pierwszych
>>latach C kompilatory dla mini i mikrokomuterów były badziewiate.
>
> Nie byly badziewne. Pierwsze kompilatory C byly doskonale, na dlugo
> zanim pojawily sie pecety.
No nie, spodziewam sie ze pierwsze byly kiepskie. Ale sie udoskonalily
... jak piszesz - na dlugo przed pecetami.
> W C byl i jest pisany UNIX. Gdy Pecety sie
> pojawily, kompilatory C bazowaly na technice kompilacji kompilatorow
> Unixowych i byly naprawde doskonale. Zas kompilatory Pascala bazowaly
> na p-kodzie i maszynie wirtualnej
No nie - to tylko jedna z mozliwosci, dla tych co chca szybko pascala
posadzic na nowej maszynie. Byly i normalne kompilatory.
> Jak idzie o optymalizacje, to optymalizacja nei jest specjalnie
> krytyczna
Zalezy. Programista mowi ze C jest dwa razy szybsze i Pascal przestaje
byc uzywany.
>> Kompilator Pascala wie kiedy ma do czynienia
>>z tablią i zwykle (z wyjątkiem niekiedy dodawanyc konstrukcji
>>w stylu C) zna rozmiar tablicy więc może automatycznie wstawić
>>instrukcje sprawdzające czy indeks mieści się w granicach.
> No i wlasnei dlatego program w Pascalu jest wolniejszy niz w C
Ale niespecjalnie krytycznie :-)
>>W sumie: jak masz dobry kompilator Pascala to może on
>>mieć zalety w porównaniu z C. Ale jest spora szansa
>>że C wygra ze względu na większą dostępność narzędzi
>>i bibliotek.
> Nei nalezy porownywac pomarancz z jablkami. Pascal to silnie typowany
> jezyk wysokiego poziomu, C to "strukturalizowany asembler" dla
> zastosowan gdzie neisbedny jest bliski kontakt z "metalem"
Spojrz na produkty Borlanda ... i nie masz racji.
Pare rozszerzen do standardu i oba jezyki sa prawie identyczne.
> NA dodatek, Pascal ma pewne cechy ktore powoduja ze musi wykonywac sie
> wolniej niz C. Oprocz indeksow tablic (patzr wyzej) sa "zanurzone
> procedury" (nested procedures) ktore wymahaja aby dostep do pewnych
> elementow byl okreslany w czasie wykonania programu.
A potem zrobili C++
> Optymalizacja zas nei zawsze jest pozadana. Wiadomo ze a + (b+c) nei
> rowna sie czasami (a+b)+c, a optymalizujacy kompilator usunie nawiasy
> jako pierwsza czynnosc. No, chyba ze to jest kompilator Fortranu...
No ale C tez moze je usunac.
> P.S> A przyczyna zwiezlosci C jest prosta: gdy uzywa sie {} zamiast
> begion/end, krazek tasmy papierowej jest znacznie mniejszy...
Mowisz ze tak to bylo ? Czy to juz jednak czasy wciec ?
J.
-
69. Data: 2014-01-29 23:38:36
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Jarosław Sokołowski <j...@l...waw.pl>
Pan J.F. napisał:
>> P.S> A przyczyna zwiezlosci C jest prosta: gdy uzywa sie {} zamiast
>> begion/end, krazek tasmy papierowej jest znacznie mniejszy...
>
> Mowisz ze tak to bylo ? Czy to juz jednak czasy wciec ?
Wcięcia robione tabulatorami nie wydłużają tasiemki dramatycznie.
--
Jarek
-
70. Data: 2014-01-30 01:07:35
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: A.L. <a...@a...com>
On Wed, 29 Jan 2014 23:08:58 +0100, "J.F."
<j...@p...onet.pl> wrote:
>
>No nie, spodziewam sie ze pierwsze byly kiepskie. Ale sie udoskonalily
>... jak piszesz - na dlugo przed pecetami.
>
Historia jezyka C
http://cm.bell-labs.com/who/dmr/chist.pdf
>
>No nie - to tylko jedna z mozliwosci, dla tych co chca szybko pascala
>posadzic na nowej maszynie. Byly i normalne kompilatory.
>
Byly. Ale te ktore znam (Na Odre na prztklad, czy Turbo Pascal)
benerowaly kod maszynowy "on the fly" zamiast generacji p-codu. Ale
bazujaca na kompilatorze Ammana. Struktura kompilatora byla taka sama
i narzucona pzrez strukture jezyjk poniekad
A.L.