🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: W której wersji standardu C lub C++ pracujecie?

#309896
From: Maciek Godek
Date: Fri, 16 Aug 2019 14:02
41 lines
3710 bytes
W dniu piątek, 16 sierpnia 2019 15:04:18 UTC+2 użytkownik Queequeg napisał:

> > Od C++ wolę się trzymać z daleka.
> 
> Dlaczego?

Bo z mojego doświadczenia tworzy więcej problemów, niż rozwiązuje.
Ma tak skomplikowaną składnię, że sami twórcy sobie z nią nie radzą, a mechanizmy abstrakcji są w nim tak skopane, że nie da się w nim tworzyć generycznych rozwiązań.

Żeby nie być gołosłownym, oto przykłady:

W definicji szablonu zapis

s.foo<T>();

może w pewnych okolicznościach spowodować błąd składni, bo symbol "<" zostanie zinterpretowany jako znak mniejszości, i trzeba pisać

s.template foo<T>();

https://en.cppreference.com/w/cpp/language/dependent_name#The_template_disambiguator_for_dependent_names

Klasa std::initializer_list nie ma zdefiniowanego operatora indeksowania. Dlaczego? Bo nikt nie wpadł na to, żeby go dodać.

Inny przykład, z prezentacji Scotta Meyersa na DConfie w 2014 roku
https://www.youtube.com/watch?v=KAWA1DuvCnQ&feature=youtu.be
(fragment między 16:40 a 22:00)

Albo wykwity w rodzaju xvalue reference.

Co do generycznych rozwiązań, napisałem kiedyś na Quorze taką odpowiedź:
https://www.quora.com/What-are-some-examples-of-bad-code/answer/Panicz-Godek

Co prawda tylko przypadkowo dotyczyła C++a, ale początkowo próbowałem stworzyć dobre rozwiązanie w C++. Ostatecznie się poddałem, właśnie ze względu na to, że nie było dla mnie oczywiste, w jaki sposób zaprojektować w C++ generyczny interfejs do algorytmu A*.

(Dla kontrastu, w Haskellu i Schemie było to całkiem oczywiste).

Zadałem do tej pory kilku C++owym fanbojom wyzwanie, żeby spróbowali dostarczyć generyczne rozwiązanie w C++, i do tej pory nikt mu nie podołał.

Generyczność w C również jest ułomna, ale przynajmniej dla tej ułomności można znaleźć jakieś uzasadnienie.

Natomiast pracując w C++ zawsze miałem wrażenie, jakbym - oprócz zmagania się z problemem - musiał dodatkowo ładować energię w zmaganie się z językiem.
Technical Details
Message-ID: <b5f4eb95-eaf8-42e5-8335-8ca1e576adfc@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!feeds.phibee-telecom.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!f14no6188464qtq.0!news-out.google.com!d29ni1725qtg.1!nntp.google.com!f14no6188452qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <a1fbe21b-aed9-4b32-9691-a824c4e31a21@trust.no1> <3f1215b5-3c16-4248-a74f-1b57d21d4c98@googlegroups.com> <87bc6801-f62d-410e-831c-0e92d68705a5@trust.no1>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:6392:: with SMTP id x140mr8981139qkb.114.1565964135169;        Fri, 16 Aug 2019 07:02:15 -0700 (PDT)
X-Received: by 2002:a81:3313:: with SMTP id z19mr6820013ywz.188.1565964134942; Fri, 16 Aug 2019 07:02:14 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!feeds.phibee-telecom.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!f14no6188464qtq.0!news-out.google.com!d29ni1725qtg.1!nntp.google.com!f14no6188452qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Fri, 16 Aug 2019 07:02:14 -0700 (PDT)
In-Reply-To: <87bc6801-f62d-410e-831c-0e92d68705a5@trust.no1>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.192.68.153; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 213.192.68.153
References: <a1fbe21b-aed9-4b32-9691-a824c4e31a21@trust.no1> <3f1215b5-3c16-4248-a74f-1b57d21d4c98@googlegroups.com> <87bc6801-f62d-410e-831c-0e92d68705a5@trust.no1>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b5f4eb95-eaf8-42e5-8335-8ca1e576adfc@googlegroups.com>
Subject: Re: W której wersji standardu C lub C++ pracujecie?
From: Maciek Godek <godek.maciek@gmail.com>
Injection-Date: Fri, 16 Aug 2019 14:02:15 +0000
X-Received-Bytes: 3970
X-Received-Body-CRC: 1448925481
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit