-
1. Data: 2011-08-13 19:09:15
Temat: jaki wybrac jezyk?
Od: "Marszalkowski" <m...@t...pl>
Hey
Mam kilka dużych projektów napisanych w C/C++.
Projekty są duże i zoptymalizowane na szybkość
działania. Jednym słowem bagno i być może bagno z
błędami.
Myślę sobie aby przepisać te projekty w innym
języku. Teoretycznie powinienem dostać dla takich
samych danych wejściowych takie same dane wyjściowe.
Chcę zrobić rodzaj walidacji krzyżowej.
Moje pytanie brzmi: jaki język byście polecili do
takiego zadania i jakie narzędzia? Czy jakiś język
mógłby się okazać bardziej przydatny od innych?
Jeśli chodzi o rodzaj aplikacji, to oczywiście są
bez GUI, mają jedynie proste tekstowe wejście/wyjście.
Nie chcę testować interfejsów, ale część obliczeniową.
Pozdrawiam
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
2. Data: 2011-08-13 19:26:28
Temat: Re: jaki wybrac jezyk?
Od: "slawek" <s...@h...pl>
Użytkownik "Marszalkowski" <m...@t...pl> napisał w wiadomości grup
dyskusyjnych:5...@n...onet.pl
...
> Mam kilka dużych projektów napisanych w C/C++.
>[...]
> Myślę sobie aby przepisać te projekty w innym
> języku. Teoretycznie powinienem dostać dla takich
> samych danych wejściowych takie same dane wyjściowe.
Proponowałbym Prolog. Dlaczego? Jest zupełnie inny niż C/C++ .
Ale... ale pewnie wymagane są cechy, jakich Prolog nie ma.
Widzę tylko jedno rozwiązanie - zrobić tak, jak zrobiła firma Phoenix z
BIOS-em - siadasz i mówisz drugiemu programiście, co ma być zrobione, ale
nie pokazujesz ani kawałka kodu źródłowego. Ten drugi robi w czym chce -
jeżeli lubi C++ to C++, a jeżeli np. Javę itd.
Im ogólniej powiesz, tym mniejsza szansa że go zahipnotyzujesz i
przetransferujesz także np. błędne założenia u podstaw.
-
3. Data: 2011-08-13 19:40:22
Temat: Re: jaki wybrac jezyk?
Od: m...@t...pl
> Proponowałbym Prolog. Dlaczego? Jest zupełnie inny niż C/C++ .
A Python? Słynie z tego ze się w nim popełnia mało błędów.
Prologa nie znam (pythona zresztą też nie), czy prolog nadaje
się w ogóle do rzeczy typu: sortowanie tablicy, mnożenia macierzy?
Pozdrawiam
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
4. Data: 2011-08-13 19:46:55
Temat: Re: jaki wybrac jezyk?
Od: Maciej Sobczak <s...@g...com>
On Aug 13, 9:09 pm, "Marszalkowski" <m...@t...pl> wrote:
> Moje pytanie brzmi: jaki język byście polecili do
> takiego zadania
Ale jakiego zadania? Przecież nic nie opisałeś - wiadomo tylko, że dla
danych wejściowych program ma wyprodukować wartości wyjściowe. I że
jest text I/O.
Wszystkie języki się do tego nadają.
Natomiast od tego, co *konkretnie* ten program ma robić, będzie
zależało, który język się do tego lepiej nadaje.
Kilka pytań pomocniczych: czy to jest przetwarzanie typu batch czy
ciągły on-the-fly (inaczej: czy program się kończy?) czy może real-
time, czy to jest przetwarzanie tekstu, obliczenia przybliżone czy
księgowość, czy nadal ma to być zoptymalizowane na szybkość, czy
problem daje się zrównoleglać, czy dana dziedzina ma już gotowe
biblioteki, ...
Ale są też pytania "menadżerskie":
Jeżeli problem jest ogólny, to pewnie przyda się jakiś ogólny język. A
skoro wcześniej wykorzystano C++ i działało, to się pewnie nadawał.
Dlaczego wtedy wybrano C++? Były na to jakieś konkretne powody? Czy te
powody są nadal aktualne, czy może wręcz przeciwnie?
Dlaczego w obecnym projekcie jest bagno? Co można było zrobić, żeby
nie było bagna? Czy ponowny wybór C++ na pewno ponownie doprowadzi do
tego samego bagna, czy wybór innego języka na pewno pozwoli tego bagna
uniknąć? Skąd wiadomo, że jedno bagno nie zostanie zastąpione innym?
Itd.
Czyli nic nie wiemy i taka też jest odpowiedź. :-)
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
5. Data: 2011-08-13 19:56:50
Temat: Re: jaki wybrac jezyk?
Od: A.L. <l...@a...com>
On Sat, 13 Aug 2011 21:09:15 +0200, "Marszalkowski" <m...@t...pl>
wrote:
>Hey
>
>Mam kilka dużych projektów napisanych w C/C++.
>Projekty są duże i zoptymalizowane na szybkość
>działania. Jednym słowem bagno i być może bagno z
>błędami.
>
>Myślę sobie aby przepisać te projekty w innym
>języku. Teoretycznie powinienem dostać dla takich
>samych danych wejściowych takie same dane wyjściowe.
>Chcę zrobić rodzaj walidacji krzyżowej.
>
>Moje pytanie brzmi: jaki język byście polecili do
>takiego zadania
Jakiego zadania?... I czemu C++ jest niedobry?...
Jest taka ksaizka od tytulem "In Search of Stupidity". O prawdziwych
projektach programistycznych ktorych realizacja spowodowala ze firmy
padly. Jedna z przycyn padniecia jest "pzrepisywanie na inny jezyk".
Stara maksyma mowi: "Don't fix it if it is not broken". Jak sa bledy w
C++, to sa to bledy spowodowane pzrez programiste/projektanta a nie
jezyk.
legenda o tym ze w Pythonie sie pisze bez bledow to jest totalny
nonsens. Robi sie takei same bledy jak wszedzie indziej.
No i jak Kolega ma takie procedury gedzie nawias zamykajacy jest 1000
linii pozniej niz otwierajacy, to zaden jezyk nie pomoze. Moze trzeba
sie nauczyc tego i owego?...
A.L.
-
6. Data: 2011-08-13 20:07:47
Temat: Re: jaki wybrac jezyk?
Od: Szyk <s...@o...pl>
Po pierwsze: moim zdaniem nie ma obecnie jezyka ktory byl by bliski
idealowi.
Po drugie: biorac pod uwage ze sa to programy CLI ja bym sprubowal
przynajmniej jeden z tyh programow napisac w D Digital Mars. To powinno
dac odpowiedz na pyt.: Czy do takih spraw sie on nadaje? Bo wg mnie D w
CLI powinien pokazac lwi pazur. Bo teraz glownym ograniczeniem D jest
rak pozadnej, natywnej biblioteki GUI, brak aktualnej wersji GNU i brak
wieloplatformowosci.
-
7. Data: 2011-08-13 20:09:32
Temat: Re: jaki wybrac jezyk?
Od: "R. P." <r...@w...to.wp.pl>
A.L. wrote:
> No i jak Kolega ma takie procedury gedzie nawias zamykajacy jest 1000
> linii pozniej niz otwierajacy, to zaden jezyk nie pomoze. Moze trzeba
> sie nauczyc tego i owego?...
Czlowieku, a skad wiesz, ze to on pisal ten projekt, ze jemu kazesz sie
uczyc, co??
-
8. Data: 2011-08-13 20:15:25
Temat: Re: jaki wybrac jezyk?
Od: Sebastian Biały <h...@p...onet.pl>
On 2011-08-13 21:09, Marszalkowski wrote:
> Projekty są duże i zoptymalizowane na szybkość
> działania. Jednym słowem bagno i być może bagno z
> błędami.
Obawiam się że łatwiej będzie je poprawiać wspomagając się testami
regresyjnymi niż przepisywać. Zacznij nie od wyboru języka ale od
stworzenia środowiska zapewniającego kontrolę jakości podczas dalszych
kroków.
-
9. Data: 2011-08-13 20:52:13
Temat: Re: jaki wybrac jezyk?
Od: Edek <e...@g...com>
On 08/13/2011 09:40 PM, m...@t...pl wrote:
>
>> Proponowałbym Prolog. Dlaczego? Jest zupełnie inny niż C/C++ .
> A Python? Słynie z tego ze się w nim popełnia mało błędów.
> Prologa nie znam (pythona zresztą też nie), czy prolog nadaje
> się w ogóle do rzeczy typu: sortowanie tablicy, mnożenia macierzy?
> Pozdrawiam
>
Słyszałem, że programiści z Tajlandii takie rzeczy potrafią. Nie
byłem w Tajlandii, w Ugandzie zresztą też nie. Ale ciekawi mnie
bardzo, wypowiedzcie się, czy sortowanie macierzy jest specjalnością
Ugandy ;) Z całym szacunkiem dla Ugandy i Tajlandii rzecz jasna :)
Edek
-
10. Data: 2011-08-13 20:56:12
Temat: Re: jaki wybrac jezyk?
Od: m...@t...pl
> On Aug 13, 9:09 pm, "Marszalkowski" <m...@t...pl> wrote:
> Ale jakiego zadania? Przecież nic nie opisałeś - wiadomo tylko, że dla
> danych wejściowych program ma wyprodukować wartości wyjściowe. I że
> jest text I/O.
> Wszystkie języki się do tego nadają.
Nie znam takich języków jak Prolog, Lisp, Python, Perl. Zastanawiam
się czy warto któregoś się pouczyć. Czy można tak ogólnie o którymś
z nich powiedzieć, że zapis typowych algorytmów niesie mniejsze ryzyko
pomyłki?
Kiedyś Java była reklamowana w ten sposób, że pisząc w Javie
popełnia się mniej błędów, że Java ma np. kontrolę zakresów
tablic, itd. Czy obecnie jakieś języki uznaje się za jeszcze
bardziej pomocne w pisaniu bezbłędnego kodu?
Często słyszę opinię że Python mocno chroni programistę przed
popełnianiem błędów. Mówi się że programy w Pythonie mają
najmniej linii kodu i że Python to jest język w którym się
myśli a nie koduje. W jakim stopniu to jest prawda? Jakie
Python ma odpowiedniki javowej kontroli zakresów tablic?
> Natomiast od tego, co *konkretnie* ten program ma robić, będzie
> zależało, który język się do tego lepiej nadaje.
Trochę algorytmów kombinatorycznych, trochę zmiennoprzecinkowych.
Trochę przeszukiwania grafów, trochę symulacji monte carlo, trochę
sortowania, trochę wyszukiwania k-tej statystyki, rozwiązywanie
układów równań... Problem w tym że w jednym programie jest tego
bardzo dużo i na dodatek zostało zoptymalizowane. Pełno jakiś
sztuczek z ujemnymi indeksami w tablicach, celowe przekraczanie
zakresów struktur, itd. Błędów obawiam się wszędzie. Myślę sobie,
żeby to samo napisać od nowa, ale użyć bezpieczniejszego algorytmu i
bezpieczniejszego języka programowania.
> Kilka pytań pomocniczych: czy to jest przetwarzanie typu batch
> czy to jest przetwarzanie tekstu,
> czy nadal ma to być zoptymalizowane na szybkość,
Może być batch, mogę zrzucić dane do pliku tekstowego i może
być przetwarzanie po jednym wierszu. Może działać bardzo wolno.
Nie musi mieć wątków. Przetwarzania tekstowego nie ma w ogóle,
poza... wczytaniem wiersza danych :)
> Jeżeli problem jest ogólny, to pewnie przyda się jakiś ogólny język.
Raczej tak, raczej język ogólny. Intryguje mnie Python.
> A skoro wcześniej wykorzystano C++ i działało, to się pewnie nadawał.
Oryginał nadal ma pozostać w C++, padła idea, aby napisać coś co np.
na wyrywki zrzuci dane do pliku tekstowego i sprawdzi bezpieczniejszą
wersją algorytmu. Oryginalna wersja działa i wydaje się że działa
bardzo dobrze, ale... chciałbym się jeszcze bardziej upewnić.
Pozdrawiam
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl