-
X-Received: by 10.49.4.231 with SMTP id n7mr725037qen.34.1360435991864; Sat, 09 Feb
2013 10:53:11 -0800 (PST)
X-Received: by 10.49.4.231 with SMTP id n7mr725037qen.34.1360435991864; Sat, 09 Feb
2013 10:53:11 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net
!eu.feeder.erje.net!newsfeed.tele2net.at!newsfeed.utanet.at!feeder1.cambriumuse
net.nl!feed.tweaknews.nl!209.85.212.215.MISMATCH!yu2no2885245wib.0!news-out.goo
gle.com!bp2ni25927wib.1!nntp.google.com!19no1870543wij.1!postnews.google.com!gl
egroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Sat, 9 Feb 2013 10:53:11 -0800 (PST)
In-Reply-To: <kf61vl$fh0$1@somewhere.invalid>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.229.34.123;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 89.229.34.123
References: <f...@g...com>
<5...@g...com>
<s...@j...net>
<b...@g...com>
<s...@j...net>
<1...@g...com>
<3...@b...softax.pl>
<b...@g...com>
<k...@b...softax.pl>
<4...@g...com>
<keun5d$lsh$1@somewhere.invalid>
<f...@g...com>
<keuri4$nje$1@somewhere.invalid>
<1...@g...com>
<keuusd$ovj$1@somewhere.invalid>
<7...@g...com>
<kf1b5r$cvj$1@somewhere.invalid>
<51152b96$0$1306$65785112@news.neostrada.pl>
<3...@x...googlegroups.com>
<4...@g...com>
<kf61vl$fh0$1@somewhere.invalid>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <c...@g...com>
Subject: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
From: "M.M." <m...@g...com>
Injection-Date: Sat, 09 Feb 2013 18:53:12 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:201979
[ ukryj nagłówki ]W dniu sobota, 9 lutego 2013 18:45:20 UTC+1 użytkownik Andrzej Jarzabek napisał:
> Przecież nie mówimy o przerabianiu programu do wyceny instrumentów
> fianasowych na program do sterowania samolotem.
No więc jeśli rozmawiamy o przerabianiu tego typu, to z całym
szacunkiem, ale nie rozumiem dlaczego w Java/C++ jest znacznie
trudniej.
> Można przewidzieć, że
> przerabianie programu do wyceny instrumentów finansowych może np.
> uwzględnić inne rodzaje instrumentów finansowych i inne metody wyceny
> niż oryginalnie przewidywano.
Zbliżamy się do konkretnych przykładów - fajnie.
> Problem jest taki, że jeśli spróbujesz zaprojektować swoją hierarchię
> typów tak, żeby uwzględnić wszelkie możliwe rodzaje instrumentów
> finansowych, to wykonasz gigantyczny kawał nikomu nie potrzebnej roboty,
> ale też stworzysz gorszy program, bo bardziej skomplikowany, trudniejszy
> do zrozumienia, a zatem łatwiej będzie popełnić w nim błąd, i trudniej
> go zmienić np. uwględniając instrument finansowy, którego nie
> uwzględniłeś w pierwotnym projekcie (bo, powiedzmy, jeszcze nie istniał).
Nie musi być tak, że program bardziej ogólny jest trudniejszy w
analizie, zaprojektowaniu i implementacji niż program wyspecjalizowany.
Powiedziałbym wręcz, że zwykle proście się pisze, jeśli od razu,
nawet w wyspecjalizowanym programie, robi się dobre abstrakcje. Owszem,
w prostym/wyspecjalizowanym programie, jest trochę szybciej jeśli
niechlujnie sobie wrzucimy dane do kilku struktur/tablic. Zdarza mi
się samemu tak niechlujnie pisać. Jednak takie programowanie naraża
nas na straty czasu w trakcie debugowania. Narzut czasu na kilka
definicji abstrakcyjnych klas zwróci się w postaci mniejszej ilości
błędów.
> Natomiast jeśli chodzi o przerabianie programu do wyceny instrumentów
> tak, żeby wyceniał nowe instrumenty, żeby stosował nowe metody wyceny,
> czy żeby cośtam jeszcze robił z tymi instrumentami czy wycenami, czego
> pierwotnie nie przewidziałeś, to refaktoryzacja w celu uwzględnienia
> danej funkcjonalności nie musi być koszmarem, pod warunkiem, że się
> stosuje odpowiednie praktyki.
Zgadzam się że nie musi. Dużo zależy od dobrego projektu, ale od
szczęścia też nie mało. Skoro od szczęścia niemało to może dobrze
się składa, mamy dzięki temu grunt na którym języki programowania mogą
pomagać.
> No i oczywiście może tak być, że ta refaktoryzacja jest dużo prostsza,
> przyjemniejsza i mniej podatna na błędy jeśli stosujesz dynamiczny
> system typów.
Wiem od początku do czego zmierzasz, problem w tym, że nie wiem dlaczego
masz rację.
> PIeczołowice zaprojektowałeś system typów opierając się na założeniu, że
> dinozaur to rodzaj gada, a tu nagle się okazuje, że niektóre dinozaury,
> które musisz obsłużyć w swoim systemie, w myśl twojego systemu typów
> wcale nie są gadami tylko ptakami. W statycznym systemie typów musisz
> wszystko teraz przerabiać, przy dynamicznym typowaniu nie przejmujesz
> się - jeśli masz funkcję obsługującą dinozaura, to możesz tam wrzucić
> dinozaura, niezależnie od tgo, czy jest gadem czy nie.
Zgadza się poza najważniejszym: "wszystko przerabiać". Zresztą
nie wiem... może piszesz o jakimś przypadku w którym naprawdę wszystko
trzeba przerabiać. Tak czy inaczej nie widzę tego że trzeba wszystko
przerabiać. O jakie dokładnie przeróbki chodzi z tymi dinozaurami?
Mam nadzieję że nie piszesz tego w nawiązaniu do naszych dawnych
rozmów, kiedy to ja pisałem wręcz o całkowitym przepianiu programu od
nowa. Wtedy pisałem tak w zupełnie innym kontekście, a mianowicie w
kontekście ekstremalnej optymalizacji.
Wracając do Twojego przykładu z dinozaurami. Przykład jest dobry, ale
jeszcze za mało konkretny. Dlaczego w Java/C++ nie można takiego
Dinozaura przerobić na klasę bazową, a następnie z niej wyprowadzić klas
Gad i Ptak? Stare algorytmy przecież zadziałają tak samo jak działały do
tej pory. Algorytmy na nowych cechach Ptaka trzeba dopisać bez względu na
użyty język.
> Zwłaszcza jeśli wymaganą logikę możesz zaimplementować w tydzień, a
> przez kolejne trzy tygodnie będziesz uciszał krzyki kompilatora.
Mój przykład z łodzią, samochodem i amfibią zamieniłeś na prosty
program do instrumentów finansowych i skomplikowany program do instrumentów
finansowych. Więc ja Twoje trzy tygodnie krzyków zamieniam na kilka
godzin w stosunku tygodnia roboty, a przy okazji tych kilku godzin
kompilator wychwyci błędy, które wyszłyby dopiero w trakcie uruchamiania.
W sumie może być większy zysk czasu z powodu mniejszego nakładu pracy
w trakcie uruchamiania.
Pozdrawiam
Następne wpisy z tego wątku
- 09.02.13 23:21 Andrzej Jarzabek
- 10.02.13 08:20 firr kenobi
- 10.02.13 11:09 Roman W
- 10.02.13 11:16 Roman W
- 10.02.13 12:12 Maciej Sobczak
- 10.02.13 15:25 Andrzej Jarzabek
- 10.02.13 18:53 Andrzej Jarzabek
- 10.02.13 22:30 M.M.
- 10.02.13 22:36 Maciej Sobczak
- 11.02.13 00:58 Andrzej Jarzabek
- 11.02.13 01:31 Roman W
- 11.02.13 06:04 M.M.
- 11.02.13 09:07 Andrzej Jarzabek
- 11.02.13 10:49 Maciej Sobczak
- 11.02.13 17:24 M.M.
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-24 Czy Sejm RP zahamuje proceder zabijania dla organów?
- 2024-11-24 Aby WKOOOORWIĆ ekofaszystów ;-)
- 2024-11-22 OC - podwyżka
- 2024-11-22 wyszedł z domu bez buta
- 2024-11-22 Bieda hud.
- 2024-11-24 DS1813-10 się psuje
- 2024-11-23 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-11-23 Szczecin => QA Engineer <=
- 2024-11-23 Warszawa => SEO Specialist (15-20h tygodniowo) <=
- 2024-11-22 Warszawa => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-22 Warszawa => Senior Account Manager <=
- 2024-11-22 Warszawa => Key Account Manager <=
- 2024-11-22 Warszawa => DevOps Specialist <=
- 2024-11-22 Kraków => IT Expert (Network Systems area) <=
- 2024-11-22 Warszawa => Infrastructure Automation Engineer <=