Re: Edukacja informatyczna (Bylo: Generator dzwieku)

Autor: Gregorio Kus (Grego_at_RMnet.IT)
Data: Sat 11 Jan 1997 - 03:58:37 MET


On Fri, 10 Jan 1997 23:51:57 +0100, Krzysztof Halasa wrote:

>Grego_at_RMnet.IT (Gregorio Kus) writes:
>
>> prosze bardzo:
>> 1. typowo assemblerowe przyjecie ze pierwszy index tablicy
>> jest zawsze rowny 0.
>
>To akurat bardzo zdrowe zalozenie, przy dodawaniu indeksow nie ma problemu,
>a w Pascalu niestety sa:
>
>for (a=0; a<10; a++)
> for (b=a; b<100; b+=100)
> t[a+b]=x[a]+y[b];

>W Pascalu trzeba robic t[a+b-1], co jest IMHO gorsze.

dodawanie indexow ( w takiej postaci ) jest bardzo rzadko porzebne
a klopot z t[a+b-1] to 1% klopotow z przeliczaniem wszystkich
indeksow w C, bo rzadko "naturalny" index jest od 0, juz czasciej
od 1 a w rzeczywistych problemach bardzo czesto beda to wogole
dwie dowolne liczby

>> 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.
>
>Ale jakie wygodne. W Pascalu za to trzeba robic CHR(10), ORD('A'),
>a przeciez takie funkcje nic nie robia (mam nadzieje, ze nie ma tam
>zadnego call'a).

i bardzo slusznie. konwersja typow zawsze powinna byc SWIADOMA

>
>> 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
>
>Podobnie jak w Pascalu, z tym ze w nim jest to IMHO trudniejsze.

nic podobnego. w pascalu na pointerach NIE WYKONUJE SIE RACHUNKOW.
w pascalu pointer jest konstrukcja abstrakcyjna, wiec jak kazde
pojecie abstrakcyjne - sprawia pewne klopoty kiedy jest NOWE.
Wskazniki w C jest prosciej wytlumaczyc poczatkujacemu,
bo mozna odwolywac sie do analogii z ponumerowanymi komorkami
pamieci itd.

>> moge tak tygodniami.
>> 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).
>
>Nie, to swiadczy o jakosci ksiazki :)

tak, bez watpienia, aczkolwiek jesli dwoch doswiadczonych
C-programmers wypuszcza buraki w przykladach tak oczywistych
ze widac nawet nie widzieli potrzeby ich testowac to tez o czyms
swiadczy. Byly to zreszta takie typowe C-buraki. Do dzis pamietam
jeden z nich, nie moglbym podac calego przykladu ale pamietam
na czym polegal blad - bylo tam wczytywanie kolejnych lancuchow
znakowych do duzego bufora. Oni moze nawet przetestowali ten
program, bo latwo przy testach nie zauwazyc jakiegos szczegolnego
rodzaju bledu, a ten pojawial sie tylko wtedy gdy ilosc wolnego
miejsca w buforze byla dokladnie rowna dlugosci aktualnie
wczytywanego bufora. Taka mala subtelnostka w/g dokladnie
zwiazana z operatorem ++ postfixowym, w jezyku w ktorym
nie ma takiej konstrukcji - ten sam algorytm dzialalby bez prob.

zreszta - raz jeszcze powtarzam: mnie ogolnie C sie podoba,
natomiast jestem jego zacieklym wrogiem jako jezyka publikacji
algorytmow, jezyka do nauczania programowania, jezyka ogolnego
zastosowania.

natomiast jako jezyk dla SLUSZNYCH zastosowan ma wady wynikajace
ze swoich zalozen projektowych, ktore dzis sa juz zupelnie
nieaktualne. Dzis koszt mocy obliczeniowa komputera ma zupelnie
inny stosunek do kosztu pracy programisty, a jak wiadomo
samo kodowanie to gdzies 10% nakladow - reszta wchodzi w usuwanie
burakow, modyfikacje, ogolnie - "konserwacja i utrzymanie w ruchu"
w zwiazku z czym jezyk programowania powinien byc PRZEDE WSZYSTKIM
DLA CZLOWIEKA a nie dla komputera. C jest jezykiem zdecydowanie
DLA KOMPUTERA.

ja WIEM jak potrafi byc wkurzajace Ord( 'A' ), brak i += 1 czy
wielu innych rzeczy, [jest co prawda Int( i ), ale to nie takie
ladne] zwlaszcza jak ktos jak ja pisze 2 palcami,
ale tez wiem, bo pisalem juz programy w ponad 20 jezykach
programowania, ze wszystko co na pierwszy rzut oka oszczedze
na "klepaniu" to dziesieciokrotnie strace na usuwaniu bledow
czy w czasie modyfikacji programow. Silna typizacja ma u mnie
goracego zwolennika zarowno od strony teoretycznej jak i praktycznej.

"dowod praktyczny" - od lat, jesli pisze program w Pascalu,
wogole nie uzywam debuggera. W C to jednak narzedzie niezbedne.

a co do strony teoretycznej, ktos sie tu wyrazil ze skladnia
C jest rownie czysta i elegancka co skladnia pascala.
to juz pozwole sobie wlozyc miedzy bajki, bo o ile mi wiadomo
dla C nie istnieje zadna gramatyka go opisujaca. skladnia C
jest semantycznie-zalezna.

Grego

p.s. i dajmy rowniez spokoj z argumentami ze kazdy za najlepszy
  uwaza jezyk na ktorym sie wychowal. ja pierwsze programy
  pisalem w FORTRAN'ie, potem COBOL'u i PLANie
  (wszystko na ODRZE 1305), potem dopiero poznalem Algol
  i rozwiniecie jego idei czyli Pascal. Niesamowicie podobal
  mi sie Algol68 ale nigdy nie mialem do czynienia z zadna
  jego efektywna implementacja. Pieknym jezykiem tez wydal
  mi sie Loglan (zwlaszcza na swoje czasy) - jestem pewny,
  ze gdyby nie powstal w Polsce tylko w USA, bylby dzis
  znany i uzywany.

--
/-----------------------------------------------------------------
Gregorio Kus    Grego_at_RMnet.it                Grego_at_cyberspace.org
ROMA, Italy     http://www.RMnet.it/~grego    Grego_at_FreeNet.hut.fi
Anonymous Mail Service - http://free.rmnet.it/~grego/AnonMail.html


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