Portál AbcLinuxu, 1. května 2024 00:39


Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
23.8.2006 22:59 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Odpovědět | Sbalit | Link | Blokovat | Admin
Omezovat se na jednu syntaxi nebo jeden druh jazyka a prováděcí model je hřích a tunelové vidění. Kolik mindsetů ovládneš, tolikrát jsi programátorem. :-)

Dovolím si vzhedem k únavě rukou a hlavy v tuhle hodinu jen jeden link:

http://www.cfcl.com/~eryk/weblog/archives/000129.html

Tak, jako existují překvapivé souvislosti v různých oborech matematiky (Wilesův důkaz Fermatovy věty), existují zřejmě i mezi jazyky. I tak architektonicky a koncepčně odlišná prostředí, jaká popisuje odkazovaná stránka, dospěla v mnoha směrech k pozoruhodné podobnosti. Mně to přijde jako pěkný jev. :-)
Jak moc jsou ábíčkáři inteligentní? ;-)
23.8.2006 23:28 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Což, zápis mi nepřijde jako problém (on opravdu v podstatě žádný není :-)), ale skutečně třeba ve Forthu něco naprogramovat, to už ano. Snažím se o to, výsledky nevalné.
Copak toho není dost?
24.8.2006 02:48 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Leo Brodie praví:

"In fact, you shouldn't write any serious application in Forth; as a language it's simply not powerful enough. What you should do is write your own language in Forth (lexicons) to model your understanding of the problem, in which you can elegantly describe its solution."

Přičemž vzhledem k tomu, co je to za jazyk, jde opravdu o vytvoření DSLka a ne jen sady funkcí. Základní problém je, že jak Pavel Tišnovský píše, že Forth je po Lispu a Algolu třetí (ovšem minoritní) jazyková větev. Granularita jeho konstrukcí je dost jiná a já teprv začal vychytávat ty slepé uličky, co včechno se v něm psát nemá. :-D Na rozdíl od některých jiných jazyků je to ale aspoň zábava a kus originálního přemýšlení. :-) Ti lidé, kteří ho nepochopili, jsou pak většinou autoři těch nečitelných kusů kódu, které od něj nováčky odrazují. Funkce na osm řádků v něm fakt není dobrý nápad... :-D

Jako kdyby ho navrhli mimozemšťani. Hmm, když o tom tak přemýšlím...nejprve infikoval nějakou tu hvězdárnu, že jo? Že by? :-D

Našel jsem třeba pěknou věc jménem PatternForth - pattern matching engine pro realtimové aplikace. Zajímavá věc, se spoustou znovupoužitelných myšlenek a podknihoven...
24.8.2006 08:32 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Co jsem četl rozhovory s GvR, tak jeho samotného překvapilo, proč lidé srovnávají Python s Lispem, když on Lisp nezná.

Ten článek jsem už četl, v podstatě se s ním dá souhlasit. Ale stejně se mi víc líbí S-výrazy, než Smalltalk (možná za to může Squeak) :-D
When your hammer is C++, everything begins to look like a thumb.
24.8.2006 08:46 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
„Co jsem četl rozhovory s GvR, tak jeho samotného překvapilo, proč lidé srovnávají Python s Lispem, když on Lisp nezná.“
No, hádám, že Guido se už stihl v Googlu rozkoukat a že už si popovídal i s Peterem Norvigem... :-D
24.8.2006 08:57 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
No, myslím, že mu o Lispu někdo pověděl o něco dřív :-). Vzhledem k tomu, jak vehementně se do Pythonu přidává kdeco z okolních jazyků, budou je lidé kolem GvR asi znát.
When your hammer is C++, everything begins to look like a thumb.
23.8.2006 23:32 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Odpovědět | Sbalit | Link | Blokovat | Admin
Mimochodem, hodně mě zaujaly některé prvky Selfu, takže ho přidávám k Michalovo výčtu jazyků, o kterých bych si rád nechal něco povědět ;-)
Copak toho není dost?
24.8.2006 08:23 ajikdpoe | skóre: 23 | blog: dvh
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Self:

(desktop activeWindow) draw: (labelWidget copy label: 'Hello, World!').

Delphi:

desktop.activeWindow.labelWidget.label := 'Hello, World!';

Tak neviem ale to druhe sa mi zda trochu lepsie na pouzivanie !?
24.8.2006 08:34 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Vzhledem k tomu, že self (aspoň co jsem slyšel) dovádí Smalltalk k dokonalosti, určitě bych jej nesrovnával s Delphi :-D
When your hammer is C++, everything begins to look like a thumb.
24.8.2006 18:26 Stanislav Bohm
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Nektere myslenky Selfu pouziva Io (http://iolanguage.com/about/ ) Myslim ze stoji za zhlednuti.
23.8.2006 23:49 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Odpovědět | Sbalit | Link | Blokovat | Admin
cfengine :-)
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
David Watzke avatar 24.8.2006 02:58 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Odpovědět | Sbalit | Link | Blokovat | Admin
V C++ jsem furt zapomínal na středníky, ale už se to lepší :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
24.8.2006 03:08 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Patchnul sis kompilátor? :-D
David Watzke avatar 24.8.2006 04:30 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe;
Ne, pro změnu je píšu všude :-D;
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
24.8.2006 04:40 disorder | blog: weblog
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Odpovědět | Sbalit | Link | Blokovat | Admin
brainfuck

:D
24.8.2006 08:28 trancelius | skóre: 22
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Souhlas, je to správně exotickej assembler-like :))
mkoubik avatar 24.8.2006 19:08 mkoubik | skóre: 5 | blog: lorem_ipsum | Praha 8 - Bohnice
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
assembler-like
Programování v assembleru je proti brainfucku procházka růžovou zahradou (viz můj oblíbený "brainfuck hello world!"...)
14.9.2006 21:53 Harvie
Rozbalit Rozbalit vše Re: Esoterické jazyky a různé syntaxe
Pokud ti jde o hello world, pak bys měl sáhnout spíše po jazyce HQ9+ http://cs.wikipedia.org/wiki/Hello_world#HQ9.2B (Satira na omezené možnosti BrainFucku = nesmysl - BrainFuck ye "turing complete"),

Ale myslím, že snáze lze pochopit BrainFuck, než AssEmBleR, jednak proto, že má asi desetkrát méně instrukcí než assembleru a neřeší přerušení a adresaci paměti a gdesicosi...

---------------------------------------------------------------------

Pokud jde o program hello world, kód vypadá sice vražedně, ale není na něm nic nevysvětlitelného:

1 ++++++++++

2 [

3 >+++++++

4 >++++++++++

5 >+++

6 >+

7 <<<<-

8 ] inicializačí cyklus nastaví potřebné hodnoty buněk

9 >++. výpis 'H'

10 >+. výpis 'e'

11 +++++++. 'l'

12 . 'l'

13 +++. 'o'

14 >++. mezera

15 <<+++++++++++++++. 'W'

16 >. 'o'

17 +++. 'r'

18 ------. 'l'

19 --------. 'd'

20 >+. '!'

21 >. nová řádka

---------------------------------------------------------------------

Příkazy:

> posun ukazatele o jednu buňku doprava

< posun ukazatele o jednu buňku doleva

+ zvýšení hodnoty aktivní buňky o 1 (buňky, nad kterou je ukazatel)

- snížení hodnoty aktivní buňky o 1

. výpis hodnoty aktivní buňky na standardní výstup (v drtivé většině případů na obrazovku). Pro výpis se používá hodnota aktivní buňky převedená dle kódování ASCII na znak.

, uložení hodnoty ze vstupu do aktivní buňky

[ pokud je hodnota aktivní buňky rovna nule, provede přesun ukazatele doprava za odpovídající ]

] pokud je hodnota aktivní buňky různá od nuly, provede přesun ukazatele doleva před odpovídající [

---------------------------------------------------------------------

Pozn. 1: Zmíněné ekvivalenty příkazů Brainfucku v jazyce C jsou vycházejí z předpokladu, že proměnná ptr je deklarována jako unsigned char*.

Pozn. 2: Zmíněné ekvivalenty příkazů Brainfucku v Delphi vycházejí z předpokladu, že proměnná ptr je deklarována jako pointer a aplikace je překládána jako konzolová (pro funkce write a read).
24.8.2006 08:23 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Exotické jazyky a různé syntaxe
Odpovědět | Sbalit | Link | Blokovat | Admin
ad prechazeni: mam spis problem se znalosti knihoven - zivim se Javou a obcas potrebuju neco maleho v Pythonu - syntax neni problem, ale stravim hodiny nad hledanim trid/funkci/...
never use rm after eight
24.8.2006 09:00 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše Něco málo k Lispu
Odpovědět | Sbalit | Link | Blokovat | Admin
Pár poznámek k Lispu a jeho kompilaci - asi obecně známo, ale stejně

- obecné označení pro skupinu jazyků stejného původu a podobné syntaxe - Common Lisp, Scheme, ... (dál popisuji Common Lisp)

- Common Lisp je definován ANSI normou, řada implementací kompilujících do kdečeho (instrukce procesoru - binárka, vlastní bytekód, JVM), povoleny jsou myslím i nekompilující implementace, ač žádnou neznám

- z hlediska prvního parsování zdrojového kódu - jednoduchá základní syntaxe (sexpy), plus reader makra (typu ' -> quote), která stejně dávají jako mezisyntaxy sexpy, takže nakonec vyleze sada sexpů. Reader makra jsou psána v Lispu.

- definována fáze kompilace, při které jsou expandována makra a výsledný expandovaný kód je přeložen danou implementací. Makra lze psát vlastní a tudíž definovat, co se má jak překládat. Makra jsou psána v Lispu a převádí sexp na sexp (transformace kódu)

- kompilaci lze ovlivňovat tím, že se definují parametry optimalizace (s granularitou jemnější než celý soubor), specifikují činnosti, které se mají dělat už při kompilaci (eval-when), inlinování a podobně

- lze definovat compiler-makra, která se použijí místo funkce při překladu - dojde k expanzi např. do efektivnější formy (rozpoznání konstantních parametrů, speciálních případů a pod) - lze psát vlastní

- deklarace např. typů jsou nepovinné, ale některé kompilátory je dokáží efektivně využít (sbcl) a naznačují uživateli, co by rádi

- je možné stínovat funkce standardu, takže v nějakém balíku může defun být nikoliv standardní defun, ale moje upravené defun

- asi jsem něco vynechal - zmátl, formální specifikace na http://www.lisp.org/HyperSpec/Body/sec_3-2.html

- optimalizace tail callu není povinná, ale skoro všichni jí provádí (i když třeba interpretovaný clisp ne)
24.8.2006 09:50 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Něco málo k Lispu
Kdyby šly bodovat příspěvky, dostal bys plný počet bodů :-)
When your hammer is C++, everything begins to look like a thumb.
24.8.2006 13:56 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše Re: Něco málo k Lispu
s odstupem ještě pár dalších:

- pro kompilaci může být zajímavé jak se nakládá s closures a (teď skáču ke Scheme) s continuations

- existuje spousta věcí ohledně toho jak se co dá kompilovat, starou klasikou (1977?) je série Lambda the Ultimate (goto, declaration, a pár dalších)

- implementace stavového automatu popisovaného tuším ve druhém díle vašeho seriálu by se pravděpodobně "nejlispovatějš" tvořila jako jedna funkce pro každý stav, která by podle přijatého písmena volala další z těchto funkcí - celkový výsledek po efektivním překladu při použití tail call optimalizace odpovídá špagetti kódu s goto, jen to je přehlednější - viz zmiňované Lambda the Ultimate Goto. Případně by se dal automat (tabulka přechodů) reprezentovat v nějaké formě a vytvořilo by se makro, které by tuto formu překládalo přímo do onoho špagetti goto kódu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.