Názor k článku Programovací jazyk TCL od anonym - Ano, pochopil jsem, že Vám jde o čitelnost...

  • Článek je starý, nové názory již nelze přidávat.
  • 24. 7. 2005 10:17

    anonymní
    Ano, pochopil jsem, že Vám jde o čitelnost (což minimálně na druhém řešení určitě vidět není ;-). Formálně nejsrozumitelnější by mělo být první řešení, protože popisuje spíš získaná data a ne způsob, jak je získat.

    Nemyslím si, že podobná srovnání by měla význam a je těžké najít objektivní zadání. Tak bychom se mohli donekonečna přetahovat třeba na úkolech, jak zjistit datum odedneška za týden (Date today + 7 days) apod. Už jsem viděl třeba srovnání programovacích jazyků, jejichž úkolem bylo zpracovat XML soubor, které bylo uděláno tak, aby s přehledem vyhrálo PHP.

    Naráží tady na sebe dvě naprosto odlišné koncepce při genezi programovacích jazyků. Python na sebe nabaluje postupně nové a nové vlastnosti a čerpá při tom z mnohota i nepříbuzných zdrojů. Naproti tomu jazyky jako Lisp, Self a Smalltalk se snaží dosáhnout maximální jednoduchosti s vědomím, že jednoduchost je matka komplexnosti.

    Například jmenovaný Self je přímý potomek Smalltalku. Doplnil jej o násobnou dědičnost, mixins, dynamickou dědičnost, vylepšené jmenné prostory apod. A dosáhl toho, věřte nebo ne, jeho ZJEDODUŠENÍM. A to i bez toho, aby mu cokoliv ubral z jeho vyjadřovacích schopností. Je mnohem těžší skutečně důkladně analyzovat problémy stávajícího jazyka než prostě přidat pár dalších hezkých pravidel do gramatiky. Správná cesta vývoje programovacích jazyků vede směrem k Lispu.

    Celkem chápu, že ve Vás smalltalkovský rozsypaný čaj respekt rozhodně nevyvolává. Můžete si ho ale upravit dle libosti, třeba takhle (skutečný funkční příklad):
    výsledkyAB := UspořádanáKolekce nová.
    výsledkyAb:= UspořádanáKolekce nová.
    výsledkyaB := UspořádanáKolekce nová.
    výsledkyab := UspořádanáKolekce nová.
    
    výsledky zpracuj: [ :výsledek |
    	(výsledek první a: výsledek druhý) kdyžJePravda: [ výsledkyAB přidej: výsledek třetí ].
    	(výsledek první a: výsledek druhý ne) kdyžJePravda: [ výsledkyAb přidej: výsledek třetí  ].
    	(výsledek první ne a: výsledek druhý) kdyžJePravda: [ výsledkyaB přidej: výsledek třetí ].
    	(výsledek první ne a: výsledek druhý ne) kdyžJePravda: [ výsledkyab přidej:výsledek třetí  ] ].
    Můžete si to porovnat s předchozím příkladem a vydedukovat, co je ve Smalltalku dáno syntaxí jazyka a co je prachobyčejné volání zpráv, které si můžete modifikovat a dotvářet jak se Vám zlíbí :-)