Re: Edukacja informatyczna (Bylo: Generator dzwieku)

Autor: Jarek Lis (lis_at_ict.pwr.wroc.pl)
Data: Thu 09 Jan 1997 - 13:04:27 MET


In pl.comp.pecet Gregorio Kus <Grego_at_RMnet.IT> wrote:
: >: Juz na pierwszy rzut oka widac ze autorzy C (Kerningham, Ritchie)
: >: nigdy tego jezyka nie zaprojektowali. Oni zwyczajnie usiedli
: >: i zaczeli pisac kompilator. W miare jak im rosl pod rekami -
: >: dodawali nowe funkcje i zawsze poswiecali skladnie na rzecz mocy
: >: jezyka.
: >Jakies konkretne przyklady moze?

: prosze bardzo:
: 1. typowo assemblerowe przyjecie ze pierwszy index tablicy
: jest zawsze rowny 0.

No tak, to jest pewien argument. Ale to chyba lepsze niz znane z innych
jezykow podejscie, ze indeks zaczyna sie 1. Oczywiscie tu Pascal to ideal.

No i to jest wlasnie wymuszone konsekwetna skladnia!..
 a[b] to ex definitione *(a+b). Glupio byloby gdyby a+1=a.

: 2. inkrementacje/dekrementacja przed i po obliczeniu wyrazenia
: (swietnie poprawia efektywnosc w pewnych przypadkach, ale
: "jeszcze swietniej" utrudnia zrozumienie nawet autorowi
: kodu [po tygodniu czy po miesiacu])

Ale czasem oszczedzajaca programiscie ladna minute w czasie klepania,
a potem znacznie wiecej w czasie poprawiania, bo dzieki zwartosci nie musi
PgDn/Up naciskac.
No i czasem skraca petle kilkakrotnie, bo w Pascalu nie dalo by sie czegos
tam elegancko zrobic.

A z tym, ze potem trudno cos poprawic - to prawda, ale to tylko wina
programisty. Ja juz nie stosuje bardziej ambitnych konstrukcji C, jak nie
musze.

: 4. nieodroznianie instrukcji od wyrazen tzn. wyrazenia
: ktore sie wykonuja i instrukcje ktore maja wartosc.

I ty narzekasz na kiepska skladnie :-)!

Instrukcja to
1) deklaracja
2) if,for,while,do-while,switch, return
3) wyrazenie ;

Wlasnie po tym ';' rozpoznaje sie ze wyrazenie to instrukcja...

: i=j=k to po prostu piekne, to puszka pandory z ktorej
: wysypuja sie miliony efektow ubocznych

    Odpowiednia opcja kompilatora ANSI powoduje wykrywanie co najmniej 99%
tych efektow ubocznych.

: 5. nieodroznianie liczb o wartosci boolowskich i znakow
: while (s[k++]) typowa "elegancka" w rozumieniu
: programistow C konstrukcja - dla mnie jedynie krotka
: w zapisie i latwa do kompilacji, ale beznadziejna
: w sensie czytelnosci kodu tzn, zwiazku syntaktyki
: z semantyka.

Jak Ci sie nie podoba to dlaczego nie piszesz
while (s[k] != '\0') k++ ; k++;

Wolno Ci. Ale czy odpowiedni kod w Pascalu jest bardziej czytelny?
Tylko akurat nie wiem dlaczego na syntaktyke narzekasz - ona po prostu jest
bogata, i dobrze ze zezwala na takie cude, tylko nie trzeba z nich korzystac
bez potrzeby.

: 6. o wszystkich swinstwach z rachunkami na wskaznikach
: nawet tam gdzie jest to zupelnie niepotrzebne szkoda nawet
: gadac - tu miesci sie 90% bezsennych nocy spedzonych
: przez C-programmers na poszukiwaniu burakow we wlasnych
: programach

To nie swinstwa, tylko wyjatkowa konsekwencja i kiepscy nauczyciele.
Po porzadnym kursie i wlaczeniu opcji sprawdzania typow przez kompilator,
nie ma klopotow ze wskaznikami.

A ile zajmuje nauczenie co to sa pointers pod pascalem...

Ale dam Ci jeden przyklad na bledna syntaktyke.
Jest sobie funkcja, np z parametrem int, ktora zwraca adres funkcji,
najczesciej samej siebie, albo analogicznej funkcji.

Sproboj zdefiniowac prawidlowa deklaracje owej funkcji, z pelnym
typem wg ANSI....

: o jakosci jezyka C swiadczy chociazby to, ze gdy lata temu
: uczylem sie go z ksiazki Robina Jonesa i Iana Stewarta
: pt. "The Art of C Programming" znalazlem z cyba 10 bledow
: w prezentowanych tam przykladach (ktore wszystkie byly
: naprawde krociutkie).

No tak, uczys sie z ksiazek z bledami, a potem narzekasz na obled
ze wskaznikami....

: >Zadajesz wyjatkowo zle postawiony problem. Raczej sie zapytaj kiedy
: >bedzie MFC na Sun'a czy na Mac'a, ale dla rownowagi odpowiedz
: >ile mniej pracy by to zabralo, gdyby twoj program lub MFC
: >byly napisane w assemblerze czy Pascalu :-).

: to po prsotu swiadczy o tym ze oprogramowanie moze byc przenosne
: jedynie wtedy gdy narzedzia sa adekwatne do srodowiska. W srodowisku
: termianali znakowych, ze scisle okreslonym input'em i output'em
: mozna bylo pisac programy w C, ktore bez wiekszych zmian chodza
: pod Unixami, OSem i DOSem. W swiecie obiektow, okien, ikon i myszy
: potrzebne sa nam inne narzedzia - przede wszystkim niezalezna
: od systemu definicja obiektow i dokumentow.

Alez mozesz od dawna kupic kilka bibliotek graficznych, ktore sa
sprzedawane w wersji na MS Win, OS2, Mac, X, etc..
i zapewniaja 99% przenosnosc Twojego programu.
No ale jak sie uprzesz na MFC czy OWL...

: >A tu mam obiekcje. Na pewno nie w C, Pascalu czy w Javie.
: >Ale jakies programowanie (shell unixa, makra excela, wordbasic?)
: >to by sie przydalo.

: komu? po co? mowimy przeciez o masowym uzytkowniku ...

A i ten ma czesto jakies potrzeby. Czy to kiepski backup odpalic
raz na tydzien z inna opcja, czy to ambitniej filtrujac newsy wyciac,
czy amibitniejsze vaccation odpalic, czy wlasnie makro do excela wpisac.

J.



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:51:21 MET DST