-
51. Data: 2014-01-28 01:05:33
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: RoMan Mandziejewicz <r...@p...pl.invalid>
Hello J.F,
Tuesday, January 28, 2014, 12:51:19 AM, you wrote:
>>> - ma pozwalać na zwięzły i czytelny zapis programu
>> Oksymoron. W ogóle pisanie w kontekście C o czytelnym kodzie to
>> kpina.
> Alez skad. Sa konstrukcje ... ale nie musisz ich uzywac.
Jasne. Tylko czasem analizować działanie cudzego programu trzeba. I
zaczynają się wytryski fantazji programistycznej...
> Nie podoba sie Sum+=*Bufptr++, to napisz
> Sum=Sum+ Buf[i] ;
> i=i+1 ;
Ależ ja wiem, co to wskaźniki. Nawet w Pascalu dało się nimi operować
- trochę to kulawe było ale było. Tyle, że takie podejście uzależnia
od fizycznej struktury danych w pamięci. O ile w przypadku drobnych
programów w uC jeszcze to ujdzie, to już w dużych programach, z
założenia przenośnych, wiązanie się z fizyczną strukturą danych może
być kulą u nogi.
--
Best regards,
RoMan
Nowa strona: http://www.elektronika.squadack.com (w budowie!)
-
52. Data: 2014-01-28 01:36:28
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: A.L. <a...@a...com>
On Mon, 27 Jan 2014 13:44:15 -0800 (PST), h...@m...uni.wroc.pl
wrote:
>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. 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
Jak idzie o optymalizacje, to optymalizacja nei jest specjalnie
krytyczna
>
> 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
>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"
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.
Dodatkowe problemy sa historyczne. Pascal zrobil sie populatny gdy
pojawil sie kompilator Ammana bazuajcy na p-kodzie, ktory umozliwial
latwe przenoszenie na inne maszyny. Kopmilatory Pascala albo
poprzestawaly na p-kodzie i jego interpretacji, albo kompilowaly p-kod
do kodu maszyny. Niektore (kompilator dla ICL1900, czylo Odry 1305)
generowaly nierelokowalny kod maszynowy zamiast generacji p-kodu.
Oczywiscie, to wszystko plus prostota rekursywnych parserow LL(1)
powodowala ze generowany kod nei byl piorunujacej jakosci.
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...
A.L.
P.S> A przyczyna zwiezlosci C jest prosta: gdy uzywa sie {} zamiast
begion/end, krazek tasmy papierowej jest znacznie mniejszy...
-
53. Data: 2014-01-28 01:38:17
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: A.L. <a...@a...com>
On Tue, 28 Jan 2014 01:05:33 +0100, RoMan Mandziejewicz
<r...@p...pl.invalid> wrote:
>Hello J.F,
>
>Tuesday, January 28, 2014, 12:51:19 AM, you wrote:
>
>>>> - ma pozwalać na zwięzły i czytelny zapis programu
>>> Oksymoron. W ogóle pisanie w kontekście C o czytelnym kodzie to
>>> kpina.
>> Alez skad. Sa konstrukcje ... ale nie musisz ich uzywac.
>
>Jasne. Tylko czasem analizować działanie cudzego programu trzeba. I
>zaczynają się wytryski fantazji programistycznej...
>
>> Nie podoba sie Sum+=*Bufptr++, to napisz
>> Sum=Sum+ Buf[i] ;
>> i=i+1 ;
>
>Ależ ja wiem, co to wskaźniki. Nawet w Pascalu dało się nimi operować
>- trochę to kulawe było ale było. Tyle, że takie podejście uzależnia
>od fizycznej struktury danych w pamięci.
Do tego wlasnei sluzy C. C jest strukturalizowanym asemblerem
A.L.
-
54. Data: 2014-01-28 01:45:44
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: A.L. <a...@a...com>
On Tue, 28 Jan 2014 00:56:27 +0100, "J.F"
<j...@p...onet.pl> wrote:
>Użytkownik "A.L." napisał w wiadomości
>On Mon, 27 Jan 2014 21:00:00 +0100, Jaros?aw Soko?owski
>>>To mnie zawsze wprawiało w pewną zadumę. Fortran od dziecka rachował
>>>na liczbach zespolonych jak na każdych innych. Zaś jego bezpośredni
>>>następcy jeśli już, to dopiero po dopisaniu do nich jakichś
>>>bibliotek.
>>>Edisony jakieś te wszystkie języki pisały, czy co?
>
>>Fortran wie ze a + (b + c) != (a + b) + c, a inne jezyki nie wiedza
>
>My tu o liczbach zespolonych a nie zerowych :-)
>
>W C wprowadzili "unary plus"
>
>Piszesz a+ (+(b+c)) i liczy tak jak zapisane, a nie w dowolnej
>kolejnosci.
Nie jestem pewien. Link do standardu?...
A.L.
-
55. Data: 2014-01-28 08:42:10
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Zbych <a...@o...pl>
W dniu 2014-01-27 23:45, J.F pisze:
>> Pascal w zasadzie potrafi to samo co C, choć program może być
>> nieco dłuższy jeśli skróty w C trzeba wyekspandować (program
>> w Pascalu może też być krótszy). 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.
-
56. Data: 2014-01-28 08:54:25
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Zbych <a...@o...pl>
W dniu 2014-01-28 08:42, Zbych pisze:
> W dniu 2014-01-27 23:45, J.F pisze:
>>> Pascal w zasadzie potrafi to samo co C, choć program może być
>>> nieco dłuższy jeśli skróty w C trzeba wyekspandować (program
>>> w Pascalu może też być krótszy). 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ć.
Chociaż jak rejestr jest odpowiednio długi, to też jest miejsce na
fantazję kompilatora (i problemy).
-
57. Data: 2014-01-28 10:22:19
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Piotr Gałka <p...@c...pl>
Użytkownik "Grzegorz Niemirowski" <g...@p...onet.pl> napisał w
wiadomości news:lc6clu$eb3$1@node2.news.atman.pl...
> Irokez <n...@w...pl> napisał(a):
>> W dniu 2014-01-27 07:50, Grzegorz Kurczyk pisze:
>>> ale z czasem nie dziwi mnie zapis typu Sum+=*BuffPtr++ i jest dla mnie
>>> czytelny od pierwszego rzutu okiem.
>> o kurr.. co to robi?
>
> Sumuje elementy tablicy. Potwierdzam, to jest czytelne.
>
Programuję w C od dawna, ale tylko z tydzień w roku.
Widząc taki zapis mam wątpliwość, czy postinkremetacja dotyczy wskaźnika
(bardziej prawdopodobne), czy wskazywanej wartości (mniej prawdopodobne).
Wolę wstawić nawias, aby jak zajrzę tu za kilka lat nie zastanawiać się na
nowo.
P.G.
-
58. Data: 2014-01-28 10:38:23
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: Piotr Gałka <p...@c...pl>
Użytkownik "A.L." <a...@a...com> napisał w wiadomości
news:4uude9ps6nbgorfb7mqrknafrqkbi7b6no@4ax.com...
> 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 ?
P.G.
-
59. Data: 2014-01-28 10:40:04
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: JDX <j...@o...pl>
On 2014-01-28 10:22, Piotr Gałka wrote:
>
> Użytkownik "Grzegorz Niemirowski" <g...@p...onet.pl>
> napisał w wiadomości news:lc6clu$eb3$1@node2.news.atman.pl...
>> Irokez <n...@w...pl> napisał(a):
>>> W dniu 2014-01-27 07:50, Grzegorz Kurczyk pisze:
>>>> ale z czasem nie dziwi mnie zapis typu Sum+=*BuffPtr++ i jest
>>>> dla mnie czytelny od pierwszego rzutu okiem.
>>> o kurr.. co to robi?
>>
>> Sumuje elementy tablicy. Potwierdzam, to jest czytelne.
>>
> Programuję w C od dawna, ale tylko z tydzień w roku. Widząc taki
> zapis mam wątpliwość, czy postinkremetacja dotyczy wskaźnika
> (bardziej prawdopodobne), czy wskazywanej wartości (mniej
> prawdopodobne).
No właśnie, ten zapis jest przykład typowego, niechlujnie napisanego
kodu w imię tzw. "zwięzłości". :-D
> Wolę wstawić nawias, aby jak zajrzę tu za kilka lat nie zastanawiać
> się na nowo.
No pewnie. A w ramach czytelności warto też wstawić spacje po obu
stronach operatora +=. Nawet pomimo tego, że to takie rozrzutne. :-D
-
60. Data: 2014-01-28 18:01:30
Temat: Re: Programowanie uC - Pascal, czy C ?
Od: "J.F" <j...@p...onet.pl>
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.
J.