eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjaki wybrac jezyk?Re: jaki wybrac jezyk?
  • Data: 2011-08-14 09:13:48
    Temat: Re: jaki wybrac jezyk?
    Od: Piotr Chamera <p...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2011-08-13 22:56, m...@t...pl pisze:
    >> 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ć.

    MZ warto - to zawsze rozszerza zakres poznanych technik programowania,
    nawet jeśli potem się danego języka nie wykorzystuje na co dzień.
    Z tego punktu widzenia wybrałbym do nauki Lisp, Prolog i może Haskell.
    Z podanych wyżej pominąłem Perla z tego względu, że uważam go za język
    specjalizowany, a nie ogólnego przeznaczenia, oraz Pythona z powodów
    podanych niżej.

    Akurat jestem na etapie uczenia się Lispa (Common Lisp) po
    wcześniejszych doświadczeniach z Pythonem i Lisp coraz bardziej mi się
    podoba - odpowiada mi model pracy pozwalający na bieżące pisanie
    i natychmiastowe testowanie pojedynczych funkcji, czy wyrażeń
    w działającym programie. Jest też bardzo elastyczny i doskonały do
    szybkiego pisania programów prototypowych, gdzie nie bardzo wiadomo jaki
    będzie ostateczny kształt rozwiązania. Łatwo jest pisać
    rozszerzenia języka (makra) i można w szerokich granicach regulować
    szybkość działania programu (możemy mieć program napisany bardzo ogólnie
    i powolny jak w Pythonie, a kluczowe procedury opatrzyć deklaracjami
    pozwalającymi im zbliżyć się szybkością wykonania do C [w granicach 2 do
    10x]). Jeśli chodzi o wady, to tu jest ciekawy artykuł:
    http://www.winestockwebdesign.com/Essays/Lisp_Curse.
    html

    Jeśli chodzi o Pythona - jego zalety to prosta, zwięzła składnia,
    obszerna biblioteka standardowa i mocna społeczność (dokumentacja itp.),
    natomiast w porównaniu z Lispem wypada blado pod względem elastyczności
    - został zaprojektowany tak, żeby był jeden oczywisty sposób zapisania
    każdej konstrukcji - ale jest dzięki temu bardzo czytelny.

    > Czy można tak ogólnie o którymś
    > z nich powiedzieć, że zapis typowych algorytmów niesie mniejsze ryzyko
    > pomyłki?

    Myślę, że długość zapisu programu, czytelność składni, wbudowane w
    runtime kontrole zakresów itp. zmniejszają liczbę popełnianych błędów
    lub umożliwiają ich łatwiejsze wyłapanie, ale jak zauważyli przedpiścy
    żaden język nie eliminuje tego ryzyka całkowicie.

    > 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?

    Rzuci wyjątkiem podczas wykonania programu i można jakoś zareagować
    (to chyba dokładnie tak samo jak w Javie).

    >> 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.
    (...)
    >> 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.

    Ja bym spróbował CommonLispa [ale to tak trochę na fali mojego obecnego
    entuzjazmu dla tego języka] - powinien pozwolić na napisanie szybko
    prototypu i na łatwe dopracowywanie szczegółów w miarę potrzeby.

    Z drugiej strony jest to w stosunku do C++ całkowicie odmienne
    środowisko i styl pracy z programem. Python byłby tu bardziej ,,podobny".

    Problemem może być IDE (dla darmowych implementacji CommonLispa chyba
    jedynym dobrym wyborem jest Emacs + SLIME, dla komercyjnych jest lepiej,
    ale te są stosunkowo drogie). Z implementacji języka polecam SBCL, CCL
    (szczególnie na Mac-u), Clisp - jest ich wiele, każda ma
    zalety i wady, ale dzięki standardowi języka programy są stosunkowo
    dobrze przenośne.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: