eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjaki wybrac jezyk?Re: jaki wybrac jezyk?
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for
    -mail
    From: Piotr Chamera <p...@p...onet.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: jaki wybrac jezyk?
    Date: Sun, 14 Aug 2011 11:13:48 +0200
    Organization: http://onet.pl
    Lines: 88
    Message-ID: <j283lc$4d0$1@news.onet.pl>
    References: <2...@v...googlegroups.com>
    <5...@n...onet.pl>
    NNTP-Posting-Host: public37538.xdsl.centertel.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1313313260 4512 79.163.146.162 (14 Aug 2011 09:14:20 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Sun, 14 Aug 2011 09:14:20 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20110624 Thunderbird/5.0
    In-Reply-To: <5...@n...onet.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:191852
    [ ukryj 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: