🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: ile czasu trzeba aby sie nauczyc c++?

#247159
From: godek.maciek
Date: Fri, 21 Apr 2017 21:29
43 lines
2977 bytes
W dniu piątek, 21 kwietnia 2017 23:10:00 UTC+2 użytkownik (fir) napisał:

> to jak puscis to w petli by to dzialalo jak najlepiej?
> (ciekawe pytanie, ktos ma chec odpowiedziec?)

Jeden pomysł to zrobić interpreter dla odwrotnej notacji polskiej,
tzn. jak masz wyrażenie zapisane jako

2 3 + 4 5 * /

to ono jest interpretowane jako

((2 + 3) / (4 * 5))

W przypadku wyrażeń Lispa byłoby to szczególnie banalne, bo konwersja
miałaby jakąś taką postać

(define (rpn expression)
  (match expression
    ((operator . operands)
     `(,@(append-map rpn operands) ,operator))
    (_
     `(,expression))))

np.

(rpn '(/ (+ 2 3) (* 4 5)))

daje w wyniku

(2 3 + 4 5 * /)

Interpreter działa w ten sposób, że wczytanie liczby odkłada na stos,
a wczytanie operatora zdejmuje odpowiednią liczbę argumentów 
ze stosu i wykonuje na nich operacje

(w jakimś sensie można patrzeć na to jako na swego rodzaju
asembler, i na tym pomyśle opiera się język Forth)

Ja swoją konwersję do CPSów robię rekurencyjnie (i to nieogonowo),
więc jeżeli chceć to zastąpić pętlą, to raczej taką ze stosem:

https://gist.github.com/panicz/4b61cb44ffdbe19613e19f4f2579245f
Technical Details
Message-ID: <0dd3c685-151a-4cea-b4c5-33131f9af96a@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!e132no1062459ite.0!news-out.google.com!v196ni310ita.0!nntp.google.com!e132no1062451ite.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <451e90e7$0$17965$f69f905@mamut2.aster.pl> <b1e91861-9e4f-4b2e-be9f-b9a47ca8d719@googlegroups.com> <58e14e55$0$5152$65785112@news.neostrada.pl> <50630553-5585-4c79-b204-10decc20648f@googlegroups.com> <93ccf1ff-6c50-4308-ba33-d7e593ffaeb0@googlegroups.com> <almarsoft.2018019733568017445@news.v.pl> <16c707cc-51c1-49fe-8d99-28670469a954@googlegroups.com> <780c3784-e9ed-44e6-b983-ba04d778a9c4@googlegroups.com> <6eb4f9c1-4016-43fc-8003-1484e904aa9b@googlegroups.com> <5af86780-9446-45cd-8776-b83b3f14296e@googlegroups.com> <64803b60-0828-4ab8-b089-d136c85e7b97@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.157.59.246 with SMTP id k109mr2242140otc.97.1492810163078;        Fri, 21 Apr 2017 14:29:23 -0700 (PDT)
X-Received: by 10.157.8.17 with SMTP id 17mr334102oty.20.1492810163041; Fri, 21 Apr 2017 14:29:23 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!e132no1062459ite.0!news-out.google.com!v196ni310ita.0!nntp.google.com!e132no1062451ite.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Fri, 21 Apr 2017 14:29:22 -0700 (PDT)
In-Reply-To: <64803b60-0828-4ab8-b089-d136c85e7b97@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.186.72.252; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 46.186.72.252
References: <451e90e7$0$17965$f69f905@mamut2.aster.pl> <b1e91861-9e4f-4b2e-be9f-b9a47ca8d719@googlegroups.com> <58e14e55$0$5152$65785112@news.neostrada.pl> <50630553-5585-4c79-b204-10decc20648f@googlegroups.com> <93ccf1ff-6c50-4308-ba33-d7e593ffaeb0@googlegroups.com> <almarsoft.2018019733568017445@news.v.pl> <16c707cc-51c1-49fe-8d99-28670469a954@googlegroups.com> <780c3784-e9ed-44e6-b983-ba04d778a9c4@googlegroups.com> <6eb4f9c1-4016-43fc-8003-1484e904aa9b@googlegroups.com> <5af86780-9446-45cd-8776-b83b3f14296e@googlegroups.com> <64803b60-0828-4ab8-b089-d136c85e7b97@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0dd3c685-151a-4cea-b4c5-33131f9af96a@googlegroups.com>
Subject: Re: ile czasu trzeba aby sie nauczyc c++?
From: godek.maciek@gmail.com
Injection-Date: Fri, 21 Apr 2017 21:29:23 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit