Portál AbcLinuxu, 26. dubna 2024 09:28


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

Vložit další komentář
25.2.2009 00:27 jos
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Odpovědět | Sbalit | Link | Blokovat | Admin

nějak se vám sem vloudil celej další článek ))

25.2.2009 00:55 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Oops... opraveno, dík.
dayvee avatar 25.2.2009 03:58 dayvee | skóre: 4 | Praha
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Odpovědět | Sbalit | Link | Blokovat | Admin
wow tak tohle vypada zajimave. diky :)
debian was first announced on my 3rd birthday :)
25.2.2009 08:48 digri | skóre: 12 | blog: digri
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Odpovědět | Sbalit | Link | Blokovat | Admin
Zajímavej článek, akorát v tom vzorovým případě s náhradou alloca lze použít úplně jednoduchej regexp.
sed 's/\<alloca\>/malloc/g' test.c
Pavel Vymetálek avatar 25.2.2009 10:38 Pavel Vymetálek | skóre: 15 | Náchod
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Ale už tam takhle jednoduše nepřïdáte ten test na výsledek volání funkce.
25.2.2009 12:35 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Odpovědět | Sbalit | Link | Blokovat | Admin

Já myslím, že Coccinelle je ukázka kam až může zajít opovrhování různými IDE.

Každé dobré IDE (než začnete argumentovat různými IDE ve stylu hračky pro děti přečtěte si ještě jednou to slovo dobré) má slušné nástroje refaktorizaci, což je v zásadě to, co programátor při změnách na 99,999% potřebuje.

Ale jinak dobře pojatý článek, autor má talent.

http://ponkrac.net
25.2.2009 14:02 b*d
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle

Refactoring je ale věcí OOP. Toto je pokus překonat jeden z problémů, které odstraňuje OO jazyk.

Jinak se nedá než nesouhlasit - dokonce bych založil hnutí osvěty na školách, kde studenty nutí psát v obyčejném textovém editoru. Výsledek je jenom ten, že jsou znechucení chybami jako jsou překlepy a složitostí vývoje. Člověk se totiž neučí celkovým počtem pokusů nýbrž jenom počtem těch, které jsou správně.

25.2.2009 14:50 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Refactoring je ale věcí OOP.
Proč? Nebo jsem zaspal, když se měnil význam slova refaktoring (automatizované zlepšování existujícího kódu)?
Ještě na tom nejsem tak špatně, abych četl Viewegha.
25.2.2009 19:37 b*d
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle

Můžete mi prosím uvést nějaký nástroj stejných nebo lepších kvalit, než Eclipse nebo RR pro ne OO jazyk a se 100% úspěšností pro "automatizované zlepšování existujícího kódu"?

25.2.2009 20:10 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Nemůžu, protože žádný takový jazyk nepoužívám a ty nástroje neznám. Nicméně přítomný článek dokazuje, že i pro Céčko se ty nástroje dají napsat. Jeho gramatika je sice odporný hnus, což je výrazná komplikace, ale lze to. Mimochodem pokud jde o Javu, nejlepší refaktoring má jednoznačně IDEA ;-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
25.2.2009 21:27 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
gramatika Cecka zase neni takovy hnus... resp. nevidim tam zadnou vetsi krpu.... horsi je to se semantikou...

prvni vec, ktera rapidne komplikuje refaktorizaci je preprocesor. dalsi veci, ktera refaktorizaci moc nepomaha je ,,mnohoznacnost'' hodnot... z toho, ze neco muze byt napr. soucasne pointer, cislo, pole... musi mit takovy nastroj urcite ohromnou radost...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
25.2.2009 22:48 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
No, to je právě to. Gramatika je tak hnusná, že pro parsování jsou potřeba sémantické informace. Klasický příklad s a*b :-) A navíc ten preprocesor, to je pravda. Ale před pár dny jsem trochu četl něco o Clangu a tam si udržují informace o původní podobě zdrojáku až do hodně pozdních fází překladu, takže něco takového asi taky jde.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
26.2.2009 11:33 Ivan
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle

Ten priklad a*b je jeste brnkacka. V C++ muzete videt i tohle:

v1 = a.b();

v2 = a->c();

A co ted? Je "a" instance tridy anebo pointer? Navic trida "a" nema zadnou metodu "c". Po tom co jsem prisel o nekolik hodin zivota jsem prisel na to, ze "a" ma vnorenou tridu "x", ktera je potomkem "y" a "y" ma metodu "c". Navic trida "a" ma pretizeny operator "->" ktery umoznuje "pretypovani" na y.

 

1.3.2009 21:15 9x0
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle

Java refactoring v Eclipse rozhodne nefunguje na 100 %. Eclipse som sice len skusal, ale uz pri operacii Extract method nastali problemy a bola zmenena semantiku kodu (ale aspon ma IDE o tom informovalo). Mozno sa to uz zmenilo, no nie je to az tak davno, co som to skusal.

Gilhad avatar 26.2.2009 21:58 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
IMHO je Refaktoring zlepsovani existujiciho kodu (aspon to tak tvrdi Martin Fowler ve sve knize), takze refaktorovat lze v podstate jakykoli kod v tarka jakemkoli jazyce. Samozrejme nektere veci se daji refaktorizovat snaz, nektere hur. Pro nektere jazyky existuji klikaci udelatka, pro jine nikoli. Ale rict ze refaktorovani = automatizovana oprava ciste OO jazyka je podle me naproste nepochopeni podstaty :)
26.2.2009 22:04 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
Myslím, že v této debatě se refaktoringem myslí refaktorign s výraznou podporou nějakého nástroje. Upravit existující kód ručně je samozřejmě možné vždy a v jakémkoli jazyce, ale důvodů, proč se tomu chce každý programátor vyhnout, je v samotném článku popsáno dost.

PS: ostřílení programátoři by refaktoring asi popsali spíš jako nahrazování starých chyb novými chybami.
Gilhad avatar 27.2.2009 18:49 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: Sémantické patchování pomocí nástroje Coccinelle
To zni jako z praxe :)

Spravne by refaktoring mel zachovat vsechny stavajici chyby, nepridat zadne nove a jenom zmenit vzhled zapisu zdrojaku na neco, co se bude udrzovat ponekud snaz a v cem ty chyby budou opravitelnejsi :)
25.2.2009 14:06 Ivan
Rozbalit Rozbalit vše OT: Re: Sémantické patchování pomocí nástroje Coccinelle

Rozhodne nechci hajit Javu, napsal jsem v ni vsehovsudy pouze jeden program, ale prave refactioring v Eclipse me utvrdil v tom, ze gcc zaostava. Eclipse ma integrovany kompilator a ten do prostredi dodava vsechny potrebne informace pro pochopeni kodu a nasledny refactoring. Takovy refactoring je uspesny ve 100% pripadu. Vubec se to neda srovnat s nastroji jako cscope nebo ctags. Nikde nenarazite na milion maker, ktera jsou do sebe zanorena do sebe takovym zpusobem ze nikdo nedokaze odhadnout co z nich vlastne vypadne - viz treba mozilla nebo alokace pameti v openldapu.

 

25.2.2009 17:13 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: OT: Re: Sémantické patchování pomocí nástroje Coccinelle
Jenom doplním, že k refaktoringu nepotřebujete celý kompilátor, stačí analyzátor kódu. V tomhle má Java velkou výhodu, protože je to tak jednoduchý jazyk. Není problém analyzovat k, zjistit co se kde jak volá atd., ale pořád si pamatovat, kde přesně je to ve zdrojovém kódu. U těch 100 % bych také nějakou tu setinku ubral -- on ten eclipsí kompilátor taky není úplně v pořádku (resp. třeba nepřeloží kód, který Sunovský kompilátor přeloží nebo opačně -- a podle mne správně bylo chování Sunovského kompilátoru).

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.