haael

Reputacja

286

Głosów ogółem

użytkownik głosował za tyle razy
10
Użytkownik głosował przeciw tyle razy
2
  • Roczniak
  • Uczony
  • Komentator
  • Redaktor
  • Krytyk
  • Nauczyciel
  • Student
  • Wsparcie
Prawdziwe imię
Bartuś
Członek od
2 lata, 4 miesiące
Ostatnio widziany
3 miesiące, 2 tygodnie temu
Miejscowość
51°06'36″N 17°01'20″E
Wiek
30

O mnie

Ręce mam w kieszeniach a kieszenie jak ocean. Powoli chodzę i rozglądam się.

Pytania: 3

Odpowiedzi: 30

  • 2010-01-20 19:02:44 Dwa łamiące pytania.

    Najpierw był kod maszynowy, potem w kodzie maszynowym ktoś napisał assembler, potem w assemblerze powstał kompilator Algola i Fortrana a w nich z biegiem czasu napisano wszystko inne. Stworzenie własnego języka/kompilatora to nietrywialne zadanie, trzeba mieć sporą wiedzę z różnych dziedzin.

    Obie klasy umieść w tym samym pliku, kompilator wygeneruje z niego co trzeba.

  • 2010-01-21 16:30:17 Wykonywalny plik pythona [zamknięte]

    Na Linuxie to wystarczy, że na początku dopiszesz:

    #!/usr/bin/python
    

    i nadasz plikowi prawa wykonywania.

  • 2010-01-24 21:34:49 Zapisywanie znaku poza tablicą (C++)

    Zawieszeniem komputera takie coś kończy się chyba tylko pod MS-DOSem. Już nawet Windows ma ochronę pamięci, a pod Linuxem wyrzuci segfaulta jak nic. A jeśli masz jakiś stack protector, to nawet sam program wykryje ten błąd.

    Dobra, dokładniej: "Tablica" w C i C++ to po prostu adres w pamięci (i rozmiar komórki). Odwołanie do n-tego elementu tablicy to odwołanie do adresu: rozmiar komórki razy n plus adres bazowy. Długość tablicy w C i C++ określa tylko to, ile pamięci ma zarezerwować program podczas wchodzenia do danego bloku. Jeżeli odwołasz się do komórki poza rozmiarem tablicy, to wejdziesz do jakiegoś niezdefiniowanego rozmiaru pamięci. Mogą się teraz stać 3 rzeczy: 1. Trafisz na obszar, którego program szczęśliwie nie używa. Nic się wtedy nie stanie. 2. Trafisz na jakąś zmienną, którą nadpiszesz. Powstanie bardzo trudny do zdebuggowania błąd. 3. Wyjdziesz poza obszar pamięci przydzielony programowi przez system. DOS może się wtedy zawiesić lub działać dziwnie, systemy z ochroną pamięci zakończą program z segfaultem. Jeżeli masz dostatecznie cwany kompilator, to może on wykryć takie odwołanie jeszcze na stadium kompilacji. W czasie działania programu do zabezpieczenia się przed tym będzie konieczny stack-protector, który wymaga wsparcia systemu operacyjnego oraz odpowiedniego procesora.

    Najprostsza odpowiedź: rezultat odwołania się poza długością tablicy jest niezdefiniowany, zarówno w C jak i w C++. Chociaż pewnie parę programów na takim zachowaniu polega :).

  • 2010-01-24 16:04:17 Zastosowania matematyki w programowaniu

    Kryptografia jest w całości oparta na algebrze. Tak samo kompresja danych. Uczyłem się też metod matematycznych do przyspieszania rozwiązań problemów mających z pozoru niewiele wspólnego z matematyką.

  • 2010-01-23 10:32:47 Jak wyglądają Wasze stereotypy dotyczące języków programowania?

    Podobno w Perlu można napisać dowolny program biorąc losowy ciąg znaków alfanumerycznych a następnie wstawiając pomiędzy nie formatowanie i operatory.

    Ale to nie stereotyp, to rzeczywistość.

  • 2010-01-20 13:44:53 Co lepsze - IF-RETURN czy IF obejmujący kod całej funkcji?

    No właśnie. IF-RETURN dla warunków brzegowych, IF dla "zwykłego" warunku, który funkcja obsługuje w odpowiedni sposób.

    Kiedy zaczniecie programować w bardziej cywilizowanych językach, to na początku będziecie wyrzucać w ten sposób wyjątki i konstrukcja zamieni się w IF-RAISE.

  • 2010-01-21 06:43:38 Jak zamienić iterację na rekurencję?

    Generalnie każdą iterację można przerobić na rekurencję (i w drugą stronę) według schematu:

    iteracja

    x = x_start;
    while(x < x_end)
    {
       costam(x);
       x++;
    }
    

    rekurencja

    void rec(x)
    {
        if(x < x_end)
        {
            costam(x);
            rec(x + 1);
        }
    }
    rec(x_start);
    

    Czasami oczywiście można to zrobić sprytniej.

    Iteracja jest na ogół bardziej wydajna, za to rekurencja nadaje się do automatycznej optymalizacji, zrównoleglania, przekształceń do innej postaci itp.

  • 2010-01-21 18:34:14 Co wie programista czego nie rozumie zwykły człowiek?

    Czasami zdarza mi się "programować" różne rzeczy w świecie realnym, w tym nawet ludzi. Najpierw trzeba zaobserwować jakieś zależności, np. gasisz komuś światło w pokoju, ten ktoś krzyczy. Potem z wielu takich zależności można zbudować program.

    Lubię myśleć o pracownikach jako o procesorach przetwarzających jakiś algorytm. Kiedy ma się kilku pracowników, ciekawym problemem jest tak rozłożyć pracę między nich, żeby algorytm się dobrze zrównoleglał :).

  • 2010-01-22 03:56:36 Python + GUI, licencja

    W jaki sposób chcesz rozprowadzać program w Pythonie bez udostępniania źródeł?

  • 2010-01-22 14:19:20 Wpadki informatyczne

    Siedziałem kiedyś w autobusie i popatrzyłem się na taki monitor z ruchomym rozkładem jazdy a tam... kernel panic.

Tagi: 1