-
Data: 2011-10-10 18:08:00
Temat: [OT] Re: Dlaczego w branży rozrywkowej najsłabiej płacą?
Od: Edek <e...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 10/10/2011 05:57 AM, Andrzej Jarzabek wrote:
> On 09/10/2011 19:52, Wojciech Jaczewski wrote:
>> Andrzej Jarzabek wrote:
>>
>>> Nie omówić. Wypytać. Oczywiście będzie to obarczone jakimś tam błędem,
>>> ale raczej niewielkim.
>>
>> Zaintrygowała mnie ta odpowiedź.
>>
>> Uważam, że mi od jakiegoś czasu udaje się tworzyć nie-wywalające się
>> programy - oczywiście przy pierwszych uruchomieniach czasem się i wywalą,
>> ale po poprawieniu działają już dobrze. Dużo trudniej jest doprowadzić do
>> tego, aby każdy szczegół działał zgodnie z wymaganiami, niż do tego aby
>> program się nie wywalał.
>
> Zgodzę się, że to jest trudniejszy problem, ale to nie jest tylko
> kwestia umiejętności programisty. Zresztą samo "wywalanie się" to był
> skrót myślowy, możemy sobie rozszerzyć czy dodefionować pojęcie na
> nieprawidłowe działanie programu wynikające z błędu programistycznego, w
> przeciwieństwie do błędnego czy niedostatecznego sformułowania lub nie
> do końca zrozumienia wymagań.
Skrajne podejście do sprawy: pisanie kodu to spełnienie wszystkich
ograniczeń, z czego jednym z ograniczeń są wymagania. To eksperyment
myślowy, ale też prawda.
>
>> Jednak jedyne co mógłbym powiedzieć o "technice", jak to robię jest:
>> robić
>> najprościej jak się da i realizować wyłącznie tę funkcjonalność, która
>> jest
>> wymagana. Taka odpowiedź miałaby jednak taką wadę, że do takiej
>> odpowiedzi
>> każdy, niezależnie od doświadczenia i umiejętności, mógłby przygotować
>> się w
>> minutę, a jednocześnie: to co jeden uważa za program prosty, dla drugiego
>> może być programem bałaganiarskim.
>
> No ale jeśli kandydat powie coś takiego na rozmowie, to oczywistym jest
> kolejne pytanie, co konkretnie robi, żeby jego kod był prosty. Zeby
> podał jakieś konkretne przykłady ze swojej praktyki na przykład, albo
> odpowiedział na pytanie - jeśli funkcja ma realizować skomplikowaną
> działalność, jak ją napisać, żeby była prosta. Dwie do pięciu minut na
> odpowiedź dużo ci powie.
Dodam:
Podziwiam ludzi, którzy mówią o prostocie i zawsze się zastanawiam,
czy rozumieją. Każdy problem ma wiele błędnych ale prostych rozwiązań,
w wielu dziedzinach przybliżony wynik nie spełnia wymagań. W zasadzie
zgodnie z zasadą prostoty nie powinien istnieć skomplikowany kod,
a z empirycznych, moich przynajmniej, doświadczeń ze światem kod
skomplikowany istnieje i ma się dobrze, a co najważniejsze działa
i swięcie wierzę w to, że autorzy co jak co ale uprościli go ile
się da i dalej się nie da.
Dla mnie każdy, kto zaczyna od tekstu keep it simple jest lekko
podejrzany. Co nie znaczy, że do wielu zadań się nie nadaje i że
ja sam komplikuję sprawy bez powodu.
>
>> Jeśli możesz, to przedstaw, jakie wg Ciebie techniki się wykorzystuje
>> podczas robienia nie-wywalających się programów (wystarczy mi odnośnik do
>> jakiegoś tekstu). Powinny spełniać następujące kryteria:
>> - pomagać w osiągnięciu celu
>> - być czasochłonne w nauczeniu się (bo gdyby dało się jej nauczyć w
>> dzień-
>> dwa, to nie byłoby sensu selekcjonować kandydatów wg kryterium znajomości
>> tej techniki).
>> - ma być trudno o nich opowiadać, jeśli samemu nie umie się ich
>> wykorzystać.
>
> Jest sporo takich technik, i o ile jest kilka w miarę uniwersalnych
> (abstrakcja, czytelność, w tym ograniczenie długości funkcji, code
> reuse, unit testing), to sporo jest zależnych od technologii (MT, OO,
> exception safety, konkretny język programowania). Co do tekstu, no to
> jest sporo książek traktujących o tych tematach, od ogólnych typu "Code
> Complete" Steve'a McConnella, "Refactoring" Martina Fowlera et al. Jeśli
> chodzi o C++ to np. "Effective C++" Scotta Meyersa itd.
...ale i tak wszystkie to gówno, jeżeli ktoś tylko przeczytał te
książki. Znam sporo osób, które przynajmniej jedną z powyższych
zasad dość świadomie olewają, a to co piszą jest łatwe w rozszerzaniu,
debugowaniu, utrzymaniu itd. Jest coś ze słowa "Art" w Programming,
chyba nie chodzi o kreatywność.
Techiniki, jest ich dużo: exception safety,
w tym nie zostawianie otwartych plików, sprawdzanie różnych
rzeczy w kodzie (inwarianty, proste null checki), jeżeli nie
ma garbage collection to unikanie leaków, jeżeli jest też,
testy, czytelność kodu, enkapsulacja, dzielenie problemu na mniejsze,
dbałość o odpowiednie sygnalizowanie błędów (nie BSOD ani "Exception:
Error Occured"), złożoność algorytmiczna (żeby test z 10 elementami
nie zajął 1/1000 tego co ze 100 elementami), komentowanie kodu,
nie robienie różnego rodzaju głupot (wbrew pozorom pewien problem
czasami, nie mówię o błędach), wzorce projektowe, o ile ktoś wie
jak ich używać (swoją drogą w C++ mówi się raczej o idioms),
RTFM jeżeli używa się funkcji systemowych i/lub bibliotek,
jak ktoś się bierze się za wątki, to musi mieć wyobraźnię
i znać zasady, umiejętność korzystania z języka w tym
z kompilatora i innych narzędzi, również
w celu unikania błędów - każdy język ma swoją specyfikę, na
przykład jeżeli chodzi o nie zainicjalizowane zmienne, type
safety, ostrzeżenia kompilatora, na czym można polegać,
a na czym nie itd. itp., nie wiem czy cześciej nie jest problemem
to, że ludzie padają na sprawach banalnych, niż na braku znajomości
wyrafinowanych reguł, a o drobiazgi "wolno" pytać.
Do tego każda dziedzina, w tym język, ma swoją specyfikę,
o którą można zapytać.
>
> W ogóle to można jeszcze zwrócić uwagę na istotny aspekt całej sprawy: w
> pisaniu programów, które się nie wywalają, samo to, że napiszesz program
> i on się nie wywala to jest tylko wierzchołek góry lodowej. Bardzo
> istotne jest również to, żeby program napisany przez ciebie nie wywalił
> się jak inny programista zacznie wprowadzać w nim zmiany, być może długo
> po tym i być może nie mając do ciebie dostępu i nie mogąc cię spytać
> dlaczego jest tak a nie inaczej. Oczywiście nie da się napisać programu
> tak, żeby inny programista nie mógł wprowadzić do niego błędów, ale też
> prawdopodobieństwo wprowadzenia później błędów jest mocno uzależnione od
> jakości pierwotnego kodu. Niby jest to oczywiste, ale myślę, że niejeden
> profesor kenobi by się przejechał na tym punkcie jak nic.
W konkursach nie to jest najważniejsze ;)
Edek
Następne wpisy z tego wątku
- 10.10.11 19:59 Waldek M.
- 10.10.11 20:42 Edek
- 10.10.11 20:52 Edek
- 11.10.11 03:13 Andrzej Jarzabek
- 11.10.11 03:31 Andrzej Jarzabek
- 11.10.11 11:44 Wojciech Jaczewski
- 11.10.11 15:15 Andrzej Jarzabek
- 11.10.11 19:30 Wojciech Jaczewski
- 11.10.11 19:51 Waldek M.
- 11.10.11 21:48 Edek
- 11.10.11 22:50 Edek
- 12.10.11 07:21 Andrzej Jarzabek
- 12.10.11 12:55 Andrzej Jarzabek
- 12.10.11 22:51 Wojciech Jaczewski
- 12.10.11 23:03 Wojciech Jaczewski
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-03 Tymoteusz Sz.
- 2024-12-03 Re: Prezydent ułaskawia: Prezydent USA Biden (D) ułaskawia syna własnego
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=
- 2024-12-02 Poznań => Dyspozytor Międzynarodowy <=
- 2024-12-02 Szczecin => Key Account Manager (ERP) <=