Article View: pl.comp.objects
Article #4658Re: Prawda o C++
From: Michal Mosiewicz
Date: Sat, 23 Jan 1999 18:03
Date: Sat, 23 Jan 1999 18:03
58 lines
4537 bytes
4537 bytes
Jarek Kucypera wrote: > [...] > To jest akurat kwestia gustu: czy ktoś lubi języki niskopoziomowe, czy nie. > Zauważ > że za tę wydajność trzeba zapłacić cenę związaną np. wyciekaniem pamięci, > niepoprawnymi wskaźnikami co generuje czasem bardzo trudne do wykrycia > błędy, zawiłą i nieczytelną składnią itp. Niskopoziomowość niskopoziomowością, ale bardzo duża nadmiarowość kodu daje w efekcie również sporą ilość obiektów, o których trzeba jednocześnie pamiętać przy pisaniu kodu. Sama wielorakość dostępu do obiektów powoduje, że z każdym z nich skojarzona jest już całkiem spora ilość informacji, jak na przykład to, czy leksykalnie obiekt identyfikowany jest wskaźnikiem, referencją, czy też poprzez wartość. Czy jest obiektem stertowym, a jeśli tak to jak określony jest jego czasokres trwania i kto jest odpowiedzialny za jego zwalnianie itp. Owszem, teoretycznie daje to duże możliwości. Problem jest tylko taki, że ilość rzeczy, o których trzeba pamiętać przewyższa możliwości postrzegania programisty. Gdzie to było?.. Chyba był to gość nazwiskiem Miller, który w połowie lat 50 zajmował się badaniem pamięci krótkoterminowej człowieka. Wtedy sformułował zasadę "7 plus minus 2". Według jego obserwacji pamięć krótkoterminowa człowieka mogła pomieścić tylko 7 obiektów naraz z dokładnością do dwóch elementów. Bodajże w 75 roku uściślił swoje obserwacje jako zasadę - proszę się nie śmiać - "trzy po trzy", czyli mamy zdolność krótkoterminowego kontrolowania trzech grup po trzy rzeczy. Jako, że - jak słusznie zauważył Pan Lewandowski - nie jestem specjalistą z zakresu genealogii języków, to głowy za to nie dam, ale myślę, że wnioski Dr. Millera były na tyle ważne, że stały się istotnym fundamentem do tworzenia logiki późniejszych narzędzi programistycznych. A jaki to ma związek z C++ - wydaje mi się, że ta wielorakość traktowania różnych rzeczy przez C++ powoduje, że nawet przy dość silnej dekompozycji projektu i nawet we względnie krótkich fragmentach kodu znajduje się tyle rzeczy o których programista musi pamiętać, że efektywność realizacji projektów jest dość niska. Generalnie, z punktu widzenia obserwacji Millera, optymalny język to taki język, którego zwartość jest na tyle wysoka, że czas przerzucenia go do pamięci długoterminowej jest krótki, podobnie rzecz się ma do podzbioru wyrażeń stosowanych w projekcie - jeśli jest on bardzo duży, to trzeba poświęcić dużo czasu na jego opanowanie. A na dodatek, jeśli głupi zapis a = b +c może znaczyć tysiąc różnych rzeczy w zależności od miejsca w programie i projektu, to wtedy wszystkie te informacje będzie trzeba szukać w dokumentacji i przechowywać w krótkoterminowym "cache-u". Wtedy po prostu nie ma możliwości, żeby zapamiętać coś długoterminowo, bo rzadziej stosowane warianty zapisu są z pamięci wypierane przez jego najpospolitsze znaczenie. To jest właśnie w C++ złe, że daje możliwości tworzenia własnych zapisów nie wskazując, ani nawet nie sugerując ujednoliconego rozwiązania. I moim zdaniem nie jest to kwestia gustu, ale kwestia skali problemów z jakimi ma się do czynienia. I to one kształtują gust. Michał -- WWW: http://www.lodz.pdi.net/~mimo tel: Int. Acc. Code + 48 42 2148340 add: Michal Mosiewicz * Bugaj 66 m.54 * 95-200 Pabianice * POLAND
Technical Details
Message-ID:
<36AA0F0D.782D50E5@interdata.com.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.task.gda.pl!mimo.lodz.pdi.net!not-for-mailReferences:
<36A623E1.A4AF7B72@zeus.polsl.gliwice.pl> <36a6d8c3.0@news.vogel.pl> <36a7cf5f@news3.ibm.net> <01be45e6$00d4e720$3e01a8c0@darek.vemco.pl> <78cli9$d02@gate-inet.insert.igo.wroc.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.task.gda.pl!mimo.lodz.pdi.net!not-for-mail From: Michal Mosiewicz <mimo@interdata.com.pl> Newsgroups: pl.comp.lang.c,pl.comp.objects Subject: Re: Prawda o C++ Date: Sat, 23 Jan 1999 19:03:57 +0100 Organization: Interdata s.c., http://www.interdata.com.pl Lines: 58 Message-ID: <36AA0F0D.782D50E5@interdata.com.pl> References: <36A623E1.A4AF7B72@zeus.polsl.gliwice.pl> <36a6d8c3.0@news.vogel.pl> <36a7cf5f@news3.ibm.net> <01be45e6$00d4e720$3e01a8c0@darek.vemco.pl> <78cli9$d02@gate-inet.insert.igo.wroc.pl> NNTP-Posting-Host: mimo.lodz.pdi.net Mime-Version: 1.0 X-Trace: korweta.task.gda.pl 917115831 14063 195.116.162.218 (23 Jan 1999 18:23:51 GMT) X-Complaints-To: abuse@task.gda.pl NNTP-Posting-Date: 23 Jan 1999 18:23:51 GMT X-Mailer: Mozilla 4.5 [en] (X11; I; Linux 2.2.0-pre4 i586) X-Accept-Language: pl,en-US,en Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit