Programiści go nienawidzą! Jednym prostym trikiem obrzydził ludziom programowanie [ZOBACZ MEMY]

Jak to zrobić? Wystarczy dawać takie zadania egzaminacyjne:

#include<stdlib.h> //1
int *bb, aa[2][3], cc, dd, ee; //2
main(){ //3
long int aa, *hh[2],*cc; //4
for(aa=1;aa<=4;aa++){ //5 M0
long int *dd=&aa; //6
hh[aa%2]=(int*)malloc(3*sizeof(int)); //7 M1
switch(*dd){ //8
case 1: bb=hh[1]; //9 M2
case 2: cc=hh[0]; //10
} //11
} //12
if(1){ //13
char bb=’a’, cc[2]={bb++}; //14
dd=(bb+cc[1])/(*cc); //15 M3
while(0){ //16
static int bb=1, cc, dd; //17
double ff=aa; //18
cc=(int)ff; //19 M4
} //20
} //21
//22 M5
} //23

Egzaminujący postarał się zastosować wszystkie możliwe złe praktyki o jakich słyszał. Ciężko będzie się dziwić, jeśli widząc taki kod nowicjusz stwierdzi, że on tu nic nie rozumie i programowanie musi być trudne.

Hehe

Zanim zostanę oskarżony o kłamliwy clickbait, tutaj są obiecane memy:

Mem
Mem
Mem

8 thoughts on “Programiści go nienawidzą! Jednym prostym trikiem obrzydził ludziom programowanie [ZOBACZ MEMY]

  1. Czy umieszczanie na końcu linii komentarza z numerem linii to jeszcze zła praktyka? Czy już zwyczajny idiotyzm? 😉

    1. Akurat to może mieć sensowne wytłumaczenie:

      1) mogło być dodane aby nie było wątpliwości która linia jest która na kartce,
      2) mogło być dodane przez pytającego na forum z tego samego powodu

      Chociaż fakt faktem, wystarczyło zaznaczyć linię 22., bo tylko do niej tyczyło się pytanie.

    2. a co wolisz w jednej lini ?
      i tak musisz to przeformatować więc ja bym ci dał w jedej lini

  2. bardziej zastabawia przypisywanie do cc który może, ale nie musi być zgdonego rozmiaru by daleko nie szukać na x86_64 sizeof(int)=4, a sizeof(int*)=8 więc pomijawszy implicit casty i to, że kompilator powinien pacnąć w łeb za ten kod to, wasz ziutek powinien dostać karnego ku**sa bo jak zwolnicie cc to będziecie zwalniać likly nie zmapowany adres i SEG FAULT na klatę macie

    1. Po za tym to dobry przykład i nie marudźcie to nie c# gdzie kompilator krzyczy jak jest przysłanianie zmiennych lokalnych. To zadanie ma was nauczyć oczywistej oczywistości formatowanie kodu ma znaczenie, a przysłanianie może komuś uprzykrzyć życie, nie znaczy iż nie należy go używać. To jak z goto które jest najlepszym sposobem by gdzieś iść w C w C++ uwaga na scope i auto variables bo mogą być nie zaincializowane przy nader-śmiałym jump’ie.
      Przykład z C – cleanup i if (messed_state) goto cleanup; … cleanup: if(resource1) // clean resource1

      1. jak ktoś widzi
        do {

        if (…) break;
        while(0);
        to to jednoznazczne z prostszym (które w dodatku może być opisane labelką)

        if (…) goto somewhere;
        somewhere:
        ….

  3. konceptualnie proponuje w dowolnym języku pilnować zasobów, bo to pic na wodę, że ktoś zrobi to za was. Nie zrobi tego lepiej, ale raczej się nie pomyli i nie zapomni w C++ macie do tego RAII, a w C# macie IDisposable
    Resource to nie tylko pamięć, plik, ale i obiekt zdalny (względem waszej aplikacji / wątku – jak np. thread, inny proces, inne urządzenie jak np. GPU, …)

  4. co do aplikacji użytkowych o krótkim etapie życia, lub jednorazowym przebiegu zwalnianie większości zasobów to strata czasu bo system sam wie co zaalokował chyba że teo jakiś bardzo prosty system jak embeded, lub windows 9x

Leave a Reply

Your email address will not be published.