-
11. Data: 2011-08-13 21:03:21
Temat: Re: jaki wybrac jezyk?
Od: A.L. <l...@a...com>
On Sat, 13 Aug 2011 22:56:12 +0200, m...@t...pl wrote:
>> 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?
>
TO JEST NONSENS!
Kzdy zwolennik jezyka X mozie ze w jezyku X sie nie robi bledow. Robi
sie.
>> 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.
>
No wlasnei pisalem w innym poscie: proponuje nauczyc sie programowania
A.L.
-
12. Data: 2011-08-13 21:04:23
Temat: Re: jaki wybrac jezyk?
Od: m...@t...pl
> 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?...
C++ jest dobry, optymalizacja była zła, ale konieczna.
> 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".
Tu nic nie padadnie... 2-3 miesiące pracy dla jednej osoby.
> 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.
Dobrze znam tą zasadę, tyle że teraz nie wiem czy to działa czy nie.
Robi wrażenie że działa, ale może jest błąd i po poprawieniu zacznie
działać lepiej. Muszę sprawdzić.
> legenda o tym ze w Pythonie sie pisze bez bledow to jest totalny
> nonsens. Robi sie takei same bledy jak wszedzie indziej.
No właśnie, między innymi takich opinii potrzebuję. Dziękuję.
> 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?...
Nie, to nie ten kod. Do tamtego co ma procedury po 1-2tys linii właśnie
stosuje się zasada: "nie dotykaj jeśli działa".
Pozdrawiam!
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
13. Data: 2011-08-13 21:11:59
Temat: Re: jaki wybrac jezyk?
Od: Edek <e...@g...com>
On 08/13/2011 10:56 PM, m...@t...pl wrote:
>> 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?
Z powyższych, poprawnie używane C++. Z powodu pełnej kontroli typów
podczas kompilacji.
>
> 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?
>
Użycie stardardowych bibliotek, opcjonalnie z dodaną kontrolą
zakresów np. tablic. Żaden problem.
> 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?
>
Prawda o tyle, że w Pythonie się szybko pisze. Natomiast co do
robienia błędów, to wiele z nich pojawia się bardzo późno, a prawie
wszystkie podczas wykonania a nie kompilacji. Z powodu szybkości
działania, Python nie nadaje się do obliczeń.
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.
>
Te struktury, to coś jak { int a; char array[1]; } ? To jest C++ czy C?
Z ciekawości, jak w C++ wygląda przekraczanie rozmiarów struktur?
>> 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ć.
>
Można dodać w kodzie wszelkiego rodzaju sprawdzenia, zakresów,
inwariantów itd.
Edek
-
14. Data: 2011-08-13 21:14:52
Temat: Re: jaki wybrac jezyk?
Od: m...@t...pl
> A.L. wrote:
> Czlowieku, a skad wiesz, ze to on pisal ten projekt, ze jemu kazesz sie
> uczyc, co??
Pisałem go ja, ale zmuszono mnie do przyspieszania programu. W innym razie
bym napisał "porządnie" :)
Pozdrawiam
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
15. Data: 2011-08-13 21:26:18
Temat: Re: jaki wybrac jezyk?
Od: Michoo <m...@v...pl>
W dniu 13.08.2011 21:40, m...@t...pl pisze:
>
>> 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.
Naprawdę? Wszystkie języki dynamicznie typowane mają już na starcie
dodatek w całej kategorii błędów wykrywalnych tylko w runtime.
Btw: Debugguję aplikację w pythonie w której nie dość że się sypie
serializacja to jeszcze wycieka jakieś 3GB na tydzień. Nie jest to zbyt
proste ani miłe.
--
Pozdrawiam
Michoo
-
16. Data: 2011-08-13 21:27:18
Temat: Re: jaki wybrac jezyk?
Od: m...@t...pl
> On 08/13/2011 10:56 PM, m...@t...pl wrote:
> Z powyższych, poprawnie używane C++. Z powodu pełnej kontroli typów
> podczas kompilacji.
Znasz dobrze Pythona, Perla, Lispa, itd? Masz dobre porównanie?
Ja bym użył albo Javy, albo bezpiecznego C++, ale nie znam np. Pythona i
Perla, może warto się nauczyć?
> Prawda o tyle, że w Pythonie się szybko pisze. Natomiast co do
> robienia błędów, to wiele z nich pojawia się bardzo późno, a prawie
> wszystkie podczas wykonania a nie kompilacji.
Ciekawa opinia.
> Z ciekawości, jak w C++ wygląda przekraczanie rozmiarów struktur?
Tak jak napisałeś, tablica wewnątrz struktury i przekraczanie
zakresów.
> Można dodać w kodzie wszelkiego rodzaju sprawdzenia, zakresów,
> inwariantów itd.
To już w pewnym stopniu zostało zrobione. Zastanawiam się co by
zrobić więcej.
Pozdrawiam
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
17. Data: 2011-08-13 21:47:26
Temat: Re: jaki wybrac jezyk?
Od: Edek <e...@g...com>
On 08/13/2011 11:27 PM, m...@t...pl wrote:
>> On 08/13/2011 10:56 PM, m...@t...pl wrote:
>
>> Z powyższych, poprawnie używane C++. Z powodu pełnej kontroli typów
>> podczas kompilacji.
> Znasz dobrze Pythona, Perla, Lispa, itd? Masz dobre porównanie?
Liaspa od dawna nie używam, Pythona znam, Perla słabo. Perl do obliczeń?
Fortran, owszem (też od dawna nie używam).
> Ja bym użył albo Javy, albo bezpiecznego C++, ale nie znam np. Pythona i
> Perla, może warto się nauczyć?
Warto się nauczyć. Javy można użyć, tyle, że tam też trzeba wiedzieć,
jak pisać kod, który się szybko wykona. Javę polecam komuś, kogo użycie
C++ przerasta, nic na siłę.
>
>> Prawda o tyle, że w Pythonie się szybko pisze. Natomiast co do
>> robienia błędów, to wiele z nich pojawia się bardzo późno, a prawie
>> wszystkie podczas wykonania a nie kompilacji.
> Ciekawa opinia.
Opinia? Podstawy: w pythonie może być zła a) składnia b) definicja
class i def-ów (uznajmy, że to nie runtime). Dopiero potem objawia
się wiele typo. Jeżeli nawet typo wychodzi w runtime...
>
>> Z ciekawości, jak w C++ wygląda przekraczanie rozmiarów struktur?
> Tak jak napisałeś, tablica wewnątrz struktury i przekraczanie
> zakresów.
To jest C, a nie C++, chyba że to ma swoje alokatory.
>
>> Można dodać w kodzie wszelkiego rodzaju sprawdzenia, zakresów,
>> inwariantów itd.
> To już w pewnym stopniu zostało zrobione. Zastanawiam się co by
> zrobić więcej.
Gdzieś mi szklana kula zginęła. Może nie w pewnym stopniu, a tak od
początku do końca?
Edek
-
18. Data: 2011-08-14 02:52:27
Temat: Re: jaki wybrac jezyk?
Od: p...@p...onet.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
a jak duze sa te programy (w tysiacach lini?) 50 tys?
mniej? wiecej?
mz python raczej odpada bo pewnie byloby niesamowicie
wolno - slabo znam pythona ale cos tak mi sie wydaje
jesli juz to mz predzej moze mozna by sprobowac jakichs
jezyow pascalopodobnych (aczkolwiek takie rzeczy jak
przepisywanie sa ryzykowne bo mz moze ci sie odechciec
w trakcie roboty;-) jak juz to lepiej sprobowac
na poczatek na czyms mniejszym
fir (obywatel inspektor(*))
--
(*) na pochybel debilnym sedziom, urzednikom i lekarzom! bo juz nie
zdzierże
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
19. Data: 2011-08-14 07:05:13
Temat: Re: jaki wybrac jezyk?
Od: "Marszalkowski" <m...@t...pl>
> a jak duze sa te programy (w tysiacach lini?) 50 tys?
> mniej? wiecej?
Nie są zabójczo duże, są skomplikowane. Algorytmy są
trudne i zapis jest popaprany w celu przyspieszenia.
> mz python raczej odpada bo pewnie byloby niesamowicie
> wolno - slabo znam pythona ale cos tak mi sie wydaje
Aplikacja testowa może działać wolno. Aplikacja pierwotna
na wyrywki zrzuci dane wejściowe i wyniki obliczeń do pliku.
Aplikacja testowa wczyta wiersz danych, może sobie długo
liczyć bezpiecznym algorytmem i sprawdzić czy wyjście jest
takie samo.
No ale widzę że nikt nie przychyla się do opinii że w
niektórych językach robi się mniej błędów :)
Pozdrawiam
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
20. Data: 2011-08-14 07:21:05
Temat: Re: jaki wybrac jezyk?
Od: "slawek" <s...@h...pl>
Użytkownik "A.L." <l...@a...com> napisał w wiadomości grup
dyskusyjnych:fgpd47hqpvsik80o6dnldgr1pcv4vhuc97@4ax.
com...
> Kzdy zwolennik jezyka X mozie ze w jezyku X sie nie robi bledow. Robi
> sie.
True
> No wlasnei pisalem w innym poscie: proponuje nauczyc sie programowania
I matematyki.