🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4690

Re: Prawda o C++

#4690
From: Adam Szeliga
Date: Mon, 25 Jan 1999 01:22
143 lines
5975 bytes

Andrzej Lewandowski wrote:

> Sektor van Skijlen <sektor@spam.org> wrote:
>
> >
>
> >A wiec dodanie 1 do 'a', to jest dla Pana operacja na znakach ? To prosze
> >spojrzec na ponizszy przyklad:
>
> >$> cat znak.cc
> >#include <iostream.h>
> >
> >int main() { cout << 'a'+1 << endl; return 0; }
> >$> make znak
> >g++     znak.cc   -o znak
> >$> ./znak
> >98
> >$>
>
> >Chyba nie musze tego komentowac. Bardzo jestem teraz ciekaw, co Pan sadzi, "o
> >czym to swiadczy".
>

Ogolnie:
O ile sie orientuje C zostalo zrobione do robienia "programow systemowych".
Przez to blizsze jest sposobie "myslenia komputera" niz "myslenia czlowieka".
Chcac nie chcac nalezy sie z tym pogodzic na wstepie. Jezeli sie nie wyczuje
jak dziala komputer to szansa na napisanie poprawnego programu sa znikome.
C ma przy tym ma jedna wielka zalete, iz po wielu latach dorobilo sie standartu
i chodzi na wszystkich znanych mi komputerach, w przeciwienstwie do wymienionego
tutaj Pascala.
Pare razy znalazlem sie w systuacje, iz program napisany w jezyku wysokiego
poziomu padal w pewnych sytuacjach, przewaznie przy niedoborze zasobow
i nic nie dalo sie z tym zrobic. Po paru miesiacach swiecenia oczami i szukaniu
bledow ukazywal sie kolejny patch producenta jezyka i wszytko zaczynalo znow
dzialac.
W C tez miewalem takie nieprzyjemne sytuacje, przewaznie z winy roznych
driverow czasami hardwaru, ale zawsze bylem wstanie zidentyfikowac przyczyne
i temu jakos zaradzic.
Oczywiscie nie twierdze, ze C latwym jezykiem i dobrym do wszelakich zastosowan.
Od wielu lat odradzam nauki tego jezyka mojej siostrze, ktora chce go uzywaz
do swoich obliczen numerycznych i symulacji.

>
> To swiadczy o nastepujacym:
>
> Jezeli poslugujemy sie jezykiem C to:
>
> 1. Zawartosc dowolnego kawalka pamieci moze byc w C interpretowana na
> rozne sposoby,
>

A czy to jest wada. Czasami tak trzeba, szczegolnie piszac "programy systemowe".
Nawet pascal ma jakies tajemnicze funkcje do konwersji miedzy roznymi typami.
A czasami trzeba robic jakies tajemnicze sztuczki aby tego dokonac.
W C mam jawne przeksztalacanie typow lub dostane warning przy kompilacji.

>
> 2. Operacje dopuszczalne na zawartosci tego kawalka okreslone sa przez
> zbior instrukcji procesora, a nie znaczenie informacji przechowywanej
> na tym kawalku.

O ile dobrze pamietam to w Pascalu istnieje typ wyliczeniowy, ktory okresla
zakres dopuszczlnych wartosci i typ string do napisow.
To rzecz gustu, ale wole obslugiwac napisy po C-owemu ( tablice char)
To pierwsze moge czesiowo zastapic define-ami.
Pascal sprawdza zakresy ideksow tablic i pozwala je roznie indeksowac.
Ale czy to takie wielkie udogodnienie ?

A tak wogole o czyms takim mozemy mowic dopiero w jezykach obiektowych.

>
> 3. "typy" w jezyku C nie sa typami jak sie je rozumie w jezykach
> wysokiego poziomu. Sluza tylko i wylacznie do rezerwacji kawalka
> pamieci.

Tak sa raczej typami w "rozumieniu komputera". C to jezyk strukturalny.
W Pascalu tez nie moge zdefiniwac nowego typu zmiennej i dozwolonych
na nich operacji. Jedynie zakresy wartosci.

>
> 4. Jako taki, C nie jest ani silnie typowany, ani wysokiego poziomu.
> Jest to asembler wyposazony w instrukcje do programowania
> strukturalnego.

Az tak tragiczne nie jest nie ma zupelnej dowolnosci, sa warningi, bledy
kompilacji,


>
> Zadziwiajace jest ze K&R udalo sie gawiedzi wmowic ze to jest
> "ulepszony Pascal".

Nie wiem jestem za mlody aby slyszec te namowy. Za moich czasow
C po prostu juz byl, przy czym byl mniej popularny od Pascala. Oba
w wydaniu Borlanda. Jezeli mozna mowic o ulepszeniu, to rzeczywiscie
C mial lepsze biblioteki, bardziej czytelne. Mial tez duza wade, znacznie
wolniej sie kompilowal, co przy uwczesnych komputerach mialo ogromne
znaczenie. Z reszta na poczatku bylem goracym zwolennikiem Pascala, lecz
wszystkie prace jakie moglem dostac byly w C. Wiec chcac nie chcac
musialem sie go nauczyc.

Czy unixsa napisano w Pascalu ?

>
> Zadziwiajace jest rowniez to, ze spora czesc ludzkosci dala sie
> namowic do programowania w asemblerze rzeczy ktore prosciej i szybciej
> daloby sie zaprogramowac w dowolnym jezyku wysokiego poziomu.

Nie bardzo wyobrazam sobie co moge zrobic lepiej lub szybciej w Pascalu
niz w C. Ale moja wyobraznia jest pewnie ograniczona, poniewaz Pascala
od bardzo dawna nie uzywalem.


Szkoda jest rowniez ze od dlugiego juz czasu na uczelniech zaprzestano

> nauczania jezykow wysokiego poziomu, koncentrujac sie na strukturalnym
> asemblerze zwanym C czy "obiektawym" asemblerze zwanym C++. Gdyby
> takich jezykow nauczano, mniej byloby przypadkow mylenia badz tez
> nieznajomosci podstawowych pojec z dziedziny informatyki...

Ale jest i druga strona medalu. Wezsze byloby grono osob wiedzacych
jak naprawde dziala komputer. Wiecej zas byloby wierzacych w inteligencje
komputera w doslownym tego slowa znaczeniu.

>
> A.L.

Podsumowujac: uwazam iz C jest swietny: zwiezly precyzyjny, konsekwentny, ma
dobrze zdefiniowane biblioteki, pozwala na bliski kontakt z komputerem i systemem
operacyjnym.
Wymaga co prawda sporego wysilku aby sie go naprawde nauczyc i wydajnie w nim
dzialac, ale trud ten z nawiazka sie oplaca. Jest jednym z leprzch jezykow
strukturalnych.

Szkoda iz C++ nie jest tak bardzo przemyslany i konsekwentny jak C i zastawia tyle
roznych pulapek.


Z powazaniem
Adam Szeliga
Technical Details
Message-ID: <36ABB280.CE9615C0@meil.pw.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!ict.pwr.wroc.pl!m2n-gate.okapi.usenet.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.nask.pl!ict.pwr.wroc.pl!m2n-gate.okapi.usenet.pl
From: siosion@meil.pw.edu.pl (Adam Szeliga)
Newsgroups: pl.comp.objects
Subject: Re: Prawda o C++
Message-ID: <36ABB280.CE9615C0@meil.pw.edu.pl>
Date: 25 Jan 99 01:22:01 GMT
Sender: objects@sprocket.ict.pwr.wroc.pl
Organization: Lista dyskusyjna objects@sprocket.ict.pwr.wroc.pl
Lines: 144
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit