🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #268098

Re: Ciemna strona C++

#268098
From: Marcin ‘Qrczak’ Kowalczyk
Date: Fri, 14 Dec 2007 21:43
33 lines
3126 bytes
Dnia 14-12-2007, Pt o godzinie 20:48 +0100, Marcin ‘Qrczak’ Kowalczyk
pisze:

> Chyba jedynym językiem poza C++, którego nie da się parsować bez
> napisania połowy kompilatora, a więc którego trudność w parsowaniu
> jest tej klasy co C++, jest Common Lisp z reader macros (program może
> w pewnym sensie zawierać implementację fragmentów parsera, więc parser
> musi zawierać interpreter Lispa).

Przy czym w Lispie to ma swoje uzasadnienie. Piszemy kawałki parsera,
żeby używać zwięzłej składni dla specjalizowanych sytuacji (np. dla
wyrażeń regularnych) - chodzi tu o poziom leksykalny.

Natomiast w C++ wyszło tak niechcący, przez zaszłość historyczną.

Kiedy język C wprowadzał składnię "typ zmienna;" dla zmiennej typu
prostego, "typ zmienna[];" dla wskaźnika (kiedyś to była składnia
wskaźnika) i "typ zmienna();" dla funkcji (kiedyś nie określało się
typów parametrów), to nie miał jeszcze typedefów. Każdy typ bazowy
zaczynał się od charakterystycznego dla typów słowa kluczowego
(np. "int" albo "struct"). Wtedy język C parsował się łatwo.

Potem zachowując konwencje składni dodano typedefy, typy funkcyjne
z określeniem parametrów, C++ dodał swoje rzeczy - też stopniowo
(np. w pewnym momencie zadecydowano, że należy dokładniej analizować
treść szablonu przed jego konkretyzacją, sprawdzać typy tam gdzie
się da, a nie tylko znajdować klamrę kończącą i zapamiętywać ciąg
leksemów) i wszystko się pokomplikowało.

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
Technical Details
Message-ID: <1197668581.25382.43.camel@qrnik>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgv318$hl7$1@bozon2.softax.pl> <fgv82j$htn$1@news.vectranet.pl> <fjncjm$ov6$1@inews.gazeta.pl> <fjpc4l$6ei$2@news.vectranet.pl> <fjrerb$8su$1@bozon2.softax.pl> <fjsa5u$qi$3@news.vectranet.pl> <fjtojr$qo1$1@bozon2.softax.pl> <fjtvs5$ke4$1@news.vectranet.pl> <1197640480.22171.5.camel@qrnik> <fjul2r$90u$1@news.vectranet.pl> <1197661684.25382.27.camel@qrnik>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: Marcin ‘Qrczak’ Kowalczyk
 <qrczak@knm.org.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Fri, 14 Dec 2007 22:43:01 +0100
Organization: tp.internet - http://www.tpi.pl/
Lines: 52
Message-ID: <1197668581.25382.43.camel@qrnik>
References: <fghgeo$spf$1@nemesis.news.tpi.pl>  <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl>  <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl>  <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl>  <fgv318$hl7$1@bozon2.softax.pl> <fgv82j$htn$1@news.vectranet.pl>  <fjncjm$ov6$1@inews.gazeta.pl> <fjpc4l$6ei$2@news.vectranet.pl>  <fjrerb$8su$1@bozon2.softax.pl> <fjsa5u$qi$3@news.vectranet.pl>  <fjtojr$qo1$1@bozon2.softax.pl> <fjtvs5$ke4$1@news.vectranet.pl>  <1197640480.22171.5.camel@qrnik>  <fjul2r$90u$1@news.vectranet.pl>  <1197661684.25382.27.camel@qrnik>
NNTP-Posting-Host: hjd150.internetdsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1197668933 7189 79.187.237.150 (14 Dec 2007 21:48:53 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Fri, 14 Dec 2007 21:48:53 +0000 (UTC)
In-Reply-To: <1197661684.25382.27.camel@qrnik>
X-Mailer: Evolution 2.12.1 PLD Linux
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit