🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4669

Re: Prawda o C++

#4669
From: Sektor van Skijlen
Date: Mon, 25 Jan 1999 16:17
65 lines
3873 bytes
W ostatnim odcinku, Adam Szeliga naskrobal:


: Andrzej Lewandowski wrote:

:> siosion@meil.pw.edu.pl (Adam Szeliga) wrote:
:>
:> >Andrzej Lewandowski wrote:
:>
:> >> >programy numeryczne.
:> >>
:> >> Nie umniejszajac zaslugi Sztostrupa, jezyk w ktorym do zmiennej typu
:> >> "character" mozna dodac "1" mogl wymyslec tylko idiota. Oczywiscie,
:> >> Sztostrup jest to polwinny; dodac nalezy nazwiska K&R.

[ CIACH ]

:> Jakis czas temu ludzie wymyslili cos takiego jak "typy". Typy
:> okreslaja nie tylko ilosc bajtow potzrebnych na reprezentacje danych,
:> ale i dopuszczalne operacje na tych danych. Zauwazyli tez dosyc dawno,
:> ze dopuszczalne operacje na znakach powinny byc inne niz dopuszczalne
:> operacje np. na liczbach calkowitych. Oczywiscie, w ramach ogolnej
:> dowolnosci ktos moze sobie uznac ze np. ma sens wyciaganie pierwiastka
:> kwadrarowego z obiektu 'A'. Zyjemy w wolnym swiecie. Co pozwale
:> rowniez mnie wyrazic swoj stosunek do podobnych pomyslow, co wyrazilem
:> w poprzednim postingu.

: Oczywiscie zgadzam sie z opinia iz definicja typu to takze okreslenie
: dopuszczalnych na nich operacji. Nigdzie nie znalazlem jednak, informacji aby
: w zmiennych typu char maja byc przechowywane wylacznie znaki.  Jak juz wiele
: razy tutaj napisano C to taki przenosny assembler. W assemblerze (zapewe w
: kazdym) na danych jedno bajtowych mozna wykonywac operacje artmetyczne. Z
: reszta istnieje takze typ unsigned char. Byc moze nieszczesliwa jest tu nazwa
: typu char, ktora sugeruje szczegolne zastosowanie.

Niestety jest to zly sposob myslenia. Nie po raz pierwszy mowie, ze operacja
'a' + 1 to nie jest dodanie 1 do znaku 'a', tylko dodanie 1 do liczby 97, a
liczba 97 jest to niejawnie przekonwertowany znak 'a' na odpowiadajacy mu kod
ASCII. Czy to jest naprawde takie trudne do zrozumienia ? Zostalo to w C
dopuszczone, aby mozna bylo wykorzystac typ char jako liczbe calkowita
dlugosci jednego bajtu (aby zaoszczedzic miejsca). Z tych samych powodow
istnieje rowniez typ unsigned char, ktory rozni sie tym od char, ze nie jest
domyslnie konwertowany na int, tylko na unsigned int. Tak samo przeciez
operacja 'a' + 'b' nie jest dodawaniem 'a' i 'b', tylko dodawaniem liczb 97 i
98 (nie w sensie asemblera, lecz w sensie _jezyka_ - prosze sprawdzic sobie w
C++, ktora metoda ostream::operator<<() zostanie wybrana dla wyniku tej
operacji!). W Pascalu mozemy zrobic dokladnie to samo, tylko ze musimy jeszcze
uzyc funkcji ord() dla tych znakow, a C tego nie wymaga i konwertuje
automatycznie. I to jest JEDYNA roznica.

Prosze wiec nie mowic wiecej takich idiotyzmow, ze dla typu char zostaly
zdefiniowane operacje dodawania i odejmowania (tak i jeszcze pewnie wyciaganie
pierwiastkow)! Dla typow char istnieja najwyzej operatory porownywania (znak
jest "ten sam", "wczesniejszy", lub "pozniejszy"). A co ze zdefiniowaniem
operatora || dla typu float ? Tez takowe istnieje ?

Obawiam sie, ze lepiej by Pan zrobil, poswiecajac troche czasu na poznanie
roznych kruczkow w jezyku C, kiedy ja jeszcze siusialem w majtki.


Pozdrawiam,
-- 
[- Ben a dar van dijn vijt -]
Michal 'Sektor' Malecki <sektor@spam.org> - zartowalem, @beer.com :*)
Politechnika Lodzka, Elektrotechnika/Informatyka st.
Technical Details
Message-ID: <78i5eo$f$6@polonez.man.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mail
References: <36AA1255.E592B09D@meil.pw.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <sektor@spam.org>
Newsgroups: pl.comp.objects
Subject: Re: Prawda o C++
Date: 25 Jan 1999 16:17:28 GMT
Lines: 65
Message-ID: <78i5eo$f$6@polonez.man.lodz.pl>
References: <36AA1255.E592B09D@meil.pw.edu.pl>
NNTP-Posting-Host: zly.kis.p.lodz.pl
User-Agent: tin/pre-1.4-981225 ("Volcane") (UNIX) (SunOS/5.5.1 (i86pc))
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit