eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingProsty preprocesor wielojęzykowyOdp: Re: Odp: Re: Prosty preprocesor wielojęzykowy
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!ne
    ws.nask.org.pl!news.uni-stuttgart.de!news.stw-bonn.de!newsreader4.netcologne.de
    !news.netcologne.de!nx02.iad01.newshosting.com!newshosting.com!69.16.185.11.MIS
    MATCH!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwind
    s-media.com!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    From: "godek.maciek" <g...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Odp: Re: Odp: Re: Prosty preprocesor wielojęzykowy
    Date: Tue, 2 Aug 2011 18:01:21 -0700 (PDT)
    Organization: http://groups.google.com
    Lines: 67
    Message-ID: <e...@g...googlegroups.com>
    References: <2...@g...googlegroups.com>
    <3...@h...googlegroups.com>
    <f...@g...googlegroups.com>
    <c...@k...googlegroups.com>
    Reply-To: p...@g...com
    NNTP-Posting-Host: 89.79.28.27
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    X-Trace: posting.google.com 1312333282 26820 127.0.0.1 (3 Aug 2011 01:01:22 GMT)
    X-Complaints-To: g...@g...com
    NNTP-Posting-Date: Wed, 3 Aug 2011 01:01:22 +0000 (UTC)
    In-Reply-To: <c...@k...googlegroups.com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.79.28.27;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    User-Agent: G2/1.0
    X-Google-Web-Client: true
    Xref: news-archive.icm.edu.pl pl.comp.programming:191685
    [ ukryj nagłówki ]

    W dniu sobota, 30 lipca 2011, 14:52:25 UTC+2 użytkownik Spec napisał:
    > On 27 Lip, 18:03, "godek.maciek" <g...@g...com> wrote:
    > > W dniu środa, 27 lipca 2011, 15:39:27 UTC+2 użytkownik Mariusz Marszałkowski
    napisał:
    > >
    > > > Nie wiem co to ma na celu... Mnie czasami nie chcialo sie wpisywac
    > > > recznie
    > > > wiele podobnego/specyficznego kodu. Wtedy pisalem po prostu w C taki
    > > > generator.
    > >
    > > Moim zdaniem C nie jest najlepszym językiem do tworzenia generatora kodu, bo
    zazwyczaj nie wymaga się od takich programów wydajności, ale raczej tego, żeby dało
    się je szybko pisać i łatwo edytować, a nade wszystko -- żeby dobrze operowały na
    łańcuchach tekstu. Ale nawet gdyby ktoś chciał zrobić coś takiego, to mógłby napisać
    > >
    > > kod.c:
    > > ...
    > > @begin "cc -x c $< -o gen; ./gen > $>; rm gen"
    > > /* kod w C, który generuje inny kod w C */
    > > ...
    >
    > Przychylam się do opinii że C to kiepski język do pisania generatorów.
    > Proponowałbym coś wyższego poziomu, oszczędności na pewno byłyby
    > większe.
    >
    > >Czy może słyszał ktoś, żeby podobne narzędzie już wcześniej istniało, albo żeby
    realizowanie tego typu pomysłów było radykalnie odradzane przez jakieś
    >programistyczne autorytety?
    >
    > Takie narzędzie, wbudowane w język programowania istnieje od ponad 50
    > lat - a język to Lisp.
    > Kod programu w Lispie przypomina AST, możemy więc mieszać kod i dane
    > bez ograniczeń. Najprostszy przykład:
    > `(a b c ,@(loop for i to 3 collect i))
    > "," wymusza wykonanie w danym miejscu tak więc od razu powstaje nam
    > lista elementów: (a b c 0 1 2 3).
    > Bardziej skomplikowane rzeczy możemy tworzyć z użyciem lispowych makr,
    > szybkie pokazanie możliwości: http://www.gigamonkeys.com/book/macros-defining-your
    -own.html

    Osobiście jestem wielkim fanem lispa (choć jeżeli idzie o składnię makr, to preferuję
    higieniczne makra schema z R5RS, po mimo tego, że pisze się je trudniej) -- jednak
    one generują jedynie kod lispowy w lispie.

    Nota bene, rzeczony preprocesor odgrzebałem, gdy pisałem w schemie skrypt generujący
    kod w C, którego celem miało być udostępnienie funkcjonalności jakiejś biblioteki C++
    interpreterowi guile.

    Jeżeli idzie o maszynowe rzeczy niskopoziomowe w rodzaju sterowników, to chyba zawsze
    będzie lepiej pisać je w C, bo to język wręcz stworzony do adresowania pamięci ;]

    Ja na razie kombinuję, jak można by otrzymać kod w schemie, który po przetworzeniu
    nie odbiegałby wydajnością od C i mógłby korzystać ze wszystkich bibliotek, które są
    dostępne z poziomu C (przy zachowaniu takich dobrodziejstw lispa jak REPL)

    W każdym razie - wracając do tematu - omówiony przeze mnie preprocesor to jednak coś
    nieco innego niż defmacro, bo on jest poliglotą :)

    pzdr

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 03.08.11 02:00 A.L.

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: