[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [elmo-users] core i uwagi
From: |
Szymon |
Subject: |
Re: [elmo-users] core i uwagi |
Date: |
Wed, 08 Oct 2003 18:09:30 +0200 |
User-agent: |
elmo/0.8.3 |
Hi.
> > -- jest zbyt ,,pretensjonalnie'' napisany, coż to jest mój punkt
> > widzenia i pewnie się mylę.
>
> Wszysto zależy od tego jak rozumiesz słowo ,,pretensjonalnie''.
postaram się to jakoś rozsądnie sformułować(*) (ale w przyszłym
tygodniu).
(*) tzn. napisać o co mi chodzi z tym ,,pretensjonalnie''
> > -- deklarujesz coś jako '*' a potem dajesz to na wejście
> > funkcji która oczekuje '**'
>
> Nie przypuszczam, żebym popełnił tego typu błąd. Napisałem kilka
> kompilatorów i wiem jak należy się odwoływać do obszarów pamięci
> adresowanych przez wskaźniki różnego poziomu.
ja nie twierdzę że tam jest błąd(*), tylko że lamerom takie rzeczy się
ciężko czyta. Pisząc kod ,,profesjonlnie'' zamykasz go przed
użytkownikami, którzy przecież niekoniecznie mają coś wpólnego z
,,informatyką''.
> Ale wszystko jest możliwe: podaj lokalizację błędnego fragmentu kodu,
> żebym mógł go poprawić.
(*) to są spostrzeżenia sprzed 2 tygodni(wcześniej nie miałe czasu
napisać, zresztą teraz też nie mam), a dałem głos bo mi się core
zrobiło. Teraz sobie zerkłem do kodu, błędu tam nie ma, po prostu zdarza
mi się to czego nie powinienem robić -- nie czytam dokładnie bo się
spieszę -- nie zauważyłem `&' -- zwracam honor.
> [.....]
> Prześlij proszę lokalizację tego fragmentu kodu. Jeśli jest
> nieczytelny, to wymaga refaktoryzacji.
> [.....]
> >...pamiętam że chodziło o regexpy,
>
> Zwalnianie tego samego dwa razy jest karygodne i kończy się
> segfaultem.
Dokładnie nie pamiętam co to było, ale teraz coś na szybko(*) znalazłem
w rchtype.c, elmo083:
[(*) nie przanalizowałem teraz pętli bo naprawdę nie mam kiedy(mogę
obiecać że zrobię to za tydzień -- dwa), prawdopodobnie błędu nie ma ale
konstrukcja jest tego typu że jest on prawdopodobny.]
funkcja `rchtype_split_lines' (u mnie jest to linia 341) w linii 398
wywołuje funkcję `add_line' która może wywoływać `regfree' (i ja się
domyślam że {2,} razy `regfree' nie powinno się na ,,tym samym''
wywoływać). `add_line' znajduje się w pętli for, a poza ową pętlą
zwalnia się ,,wszystko'' czyli to co mogło być zwalniane wewnątrz
`add_line' oczywiście wewnąrz pętli znajdują się `return'-y więc pewno
błędu nie ma -- ale może być -- moja sugestia jest taka coby dla wygody
i pewności takich konstrukcji w miarę możliwości unikać -- niekonicznie
w tym miejscu -- może ,,lepiej'' się nie da -- ,,kiedy indziej''
spróbuję się nad tym zastanowić.
> > tak przy okazji dlaczego je tak cząsto stosujesz ?)
>
> To takie przyzwyczajenie z emacs lispa.
Oki. Osobiście wolałbym cobyś (skoro znasz lispa) wykazywał większe
przezwyczajenie do programowania funkcyjnego (czy jak wolisz --
odwiedziłem Twoją stronkę -- funkcjonalnego) -- to oczywiście tylko taka
luźna uwaga jako że chwalić czy ganić można tylko up-bottom.
Niedawno trafiłem (na necie) na gościa który ,,zrobił'' rfc2882 (mam
nadzieję że dobrze pamiętam numer, chodzi o pocztę) w lispie i został
zjechany przez innych sieciarzy za używanie regexpów. Ponieważ stałkę
mam od pojutrza, to gdzieś za tydzień -- dwa postaram się znaleźć to
miejce i poznać argumenty ,,przeciw'' regexpom przy parsowaniu na
przykład. Ja sobie zdaję sprawę że odradzanie regexpowania przy
parsowaniu to jakby proponować jazdę samochodem bez kół -- pewnie
istnieje jakiś złoty środek -- ja np. odniosłem wrażenie że w elmo rx-y
są nadużywane.
pozdrawiam, sb