-
Data: 2011-08-03 01:01:21
Temat: Odp: Re: Odp: Re: Prosty preprocesor wielojęzykowy
Od: "godek.maciek" <g...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
Następne wpisy z tego wątku
- 03.08.11 02:00 A.L.
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO