Co jest nie tak z kodem?

0

Chodzi o przykładowy kod BSD sockets na stronie http://staff.ii.pw.edu.pl/~gjb/tin.html
No to lecimy:

  1. Formatowanie kodu (wymienne stosowanie spacji i tabów, niestandardowy tab width równy 2) - autor chyba nie odkrył jeszcze astyle(1).
  2. Nagminny brak dołączania odpowiednich plików nagłówkowych (zauważyłem brak: <stdlib.h>, <string.h>, <sys/select.h>, <unistd.h>, ale pewnie coś jeszcze by się znalazło).
  3. Brak deklaracji wołanych funkcji (wynika głównie z punktu 2).
  4. Jest za to prototyp gethostbyname(3) :) Nie wiadomo po co, bo autor wcześniej dołączył <netdb.h>
  5. Używa funkcji gethostbyname(3) - jakby nie było getaddrinfo(3).
  6. Nieużywane zmienne w kodzie.
  7. Obsługa błędów przez fprintf(3) i exit(3) - autor chyba jeszcze nie odkrył np. funkcji err(3), która pojawiła się w 4.4BSD, czyli gdzieś tak w okolicach 1993 :)
  8. Odwołanie do argv[1] bez sprawdzania, czy argument istnieje.
  9. Brak podziału na funkcje, wszystko w funkcji main.
  10. I tak dalej...
6

W kodzie edukacyjnym czasem celowo pomija się pewne rzeczy, bo to nie produkcja. Inna sprawa, że wydaje mi się że czepiasz się zwyczajnie pierdół, które nie mają większego znaczenia w projekcie, i które wyłapałby linter. Jedyny poważny zarzut to punkt 8.

Zgłosiłeś to prowadzącemu przedmiot?

0
Krolik napisał(a):

W kodzie edukacyjnym czasem celowo pomija się pewne rzeczy, bo to nie produkcja.

No np. pomija się coś takiego, jak np. system kontroli wersji i wymaga się oddawania kodu napisanego odręcznie na kartkach, a w wersji mniej drastycznej przesyłania w mailach :)

Inna sprawa, że wydaje mi się że czepiasz się zwyczajnie pierdół, które nie mają większego znaczenia w projekcie, i które wyłapałby linter.

Dobrze napisałeś: wydaje Ci się.

Weźmy np. brakujące #include i w konsekwencji brak deklaracji funkcji...

Jedyny poważny zarzut to punkt 8.

Nie, cały kod to jeden wielki gniot (wszystkie cztery pliki). Piszę to z perspektywy programisty programującego zawodowo w języku C od około 20 lat :)

Nie jakiś tam zwykły gniot, ale mający służyć za wzór przyszłym programistom.

8

A tak naprawdę to co się wydarzyło? Pan Doktor się na Ciebie krzywo spojrzał? Nie zaliczył Ci jakiegoś zadania? Nie odpowiedział "dzień dobry"?

0
Krolik napisał(a):

Zgłosiłeś to prowadzącemu przedmiot?

Chciałem, ale nie zostałem do tego zobowiązany :)

To nie ja mam uczyć wykładowcę, to wykładowca ma uczyć swoich studentów.

twoj_stary_pijany napisał(a):

A tak naprawdę to co się wydarzyło? Pan Doktor się na Ciebie krzywo spojrzał? Nie zaliczył Ci jakiegoś zadania? Nie odpowiedział "dzień dobry"?

Masz napisane w pierwszym poście co się wydarzyło - apeluję zatem o czytanie ze zrozumieniem i zachęcam do powstrzymania się od insynuacji oraz manipulacji.

0
pifko napisał(a):

To nie ja mam uczyć wykładowcę, to wykładowca ma uczyć swoich studentów.

To jeszcze dla jasności powiedz jakiego przedmiotu uczy ten wykładowca ;)

1

Chciałem, ale nie zostałem do tego zobowiązany :) co to znaczy, że nie zostałeś zobowiązany? Co stoi dokładnie na przeszkodzie, żeby zgłosić te uwagi prowadzącemu?

0
some_ONE napisał(a):

To jeszcze dla jasności powiedz jakiego przedmiotu uczy ten wykładowca ;)

TIN, UXP1A, PSI - kolega dostał bana na Google? ;)

twoj_stary_pijany napisał(a):

Chciałem, ale nie zostałem do tego zobowiązany :) co to znaczy, że nie zostałeś zobowiązany?

Normalnie nie zostałem zobowiązany, czego nie rozumiesz?

Co stoi dokładnie na przeszkodzie, żeby zgłosić te uwagi prowadzącemu?

Napisałem: nie zostałem zobowiązany.

Czasu by mi nie starczyło, gdybym miał angażować się za każdym razem i kruszyć beton, tłumaczyć, przekonywać, itd.

3
pifko napisał(a):

TIN, UXP1A, PSI - kolega dostał bana na Google? ;)

Myślałem, że to pytanie może skłoni cię do choć krótkiego przemyślenia, czy kawałek kodu który widzisz to największa wartość jaką powinien dostarczać ten przedmiot czy jednak kod tutaj to tylko narzędzie do zobrazowania konkretnego problemu/zagadnienia.

Ale widzę, że kolega nie został zobowiązany do myślenia ;)

0
some_ONE napisał(a):
pifko napisał(a):

TIN, UXP1A, PSI - kolega dostał bana na Google? ;)

Myślałem, że to pytanie może skłoni cię do choć krótkiego przemyślenia, czy kawałek kodu który widzisz to największa wartość jaką powinien dostarczać ten przedmiot

Co powinny dostarczać polskie uczelnie, a co faktycznie dostarczają to są dwa odrębne zagadnienia.
Kod zaś jest odbiciem kompetencji jego autora, taki papierek lakmusowy.

Żeby jednak nie ograniczać do kodu, bo to tylko wierzchołek góry lodowej: uważam, że wykłady były i są podobnie beznadziejne jak ten kod.

Publicznie dostępny kod jest trochę jak pomarszczona skórka zgniłego owocu: niby nie widać, co jest w środku, ale każdy wie.

czy jednak kod tutaj to tylko narzędzie do zobrazowania konkretnego problemu/zagadnienia.

Myślę, że owszem, kod stał się narzędziem obrazującym konkretny problem lub zagadnienie, ale inne niż zakładałby wykładowca :)

Ale widzę, że kolega nie został zobowiązany do myślenia ;)

Widzę, że kolega nie był na wykładach, bo prawdopodobnie miałby inne zdanie ;)

2
pifko napisał(a):

Poprzedni wątek niestety poleciał do kosza: https://4programmers.net/Forum/Kosz/364527-kod_sie_nie_kompiluje, dlatego napiszę tutaj.
W sumie nie dziwię się, bo wartość merytoryczna była nikła, ale musiałem trochę odreagować po tym co zobaczyłem :)

Wnioskuję z Twojej postawy, że jesteś już ogarniętym programistą zarówno jeśli chodzi o kwestie programowania jak i biznesowe.
Bardzo proszę pokaż jakieś swoje dzieło - wykaż się swoimi kompetencjami.

Tego się jednak nie spodziewałem: jakby było mało wrażeń, to Pan dr inż. nie tylko uczy studentów jak mają programować, ale jeszcze zarządza firmą zajmującą się między innymi wytwarzaniem oprogramowania: https://www.cc.com.pl/pl/info/info_zarzad.php (jest CEO).

Osoby, które nie piszą pięknego czystego kodu wcale nie muszą być złymi programistami, którzy doskonale sprawdzają się w biznesie. Jak sam zauważyłeś on jest tam jako CEO a nie szeregowym programistą.

Ciekawy jestem tylko jakości kodu wytwarzanego przez spółkę pod zarządem Pana dra inżyniera :)

A ja jestem Ciekawy Twoich osiągnięć i tego jak byś "podskakiwaczu" sprawdził się w starciu z rzeczywistym klientem.

2
  1. Założyłeś wątek o 21:37 w święto niepodległości.
  2. To normalne, że na uczelniach każdy ma wywalone, tym bardziej jak ktoś zarabia n razy tyle na stanowisku CEO za godzinę. Też jak uczyłem programowania to szkoda mi było każdej dodatkowej sekundy poświęconej na zrobienie czegoś lepiej, bo nikt by tego nie docenił a ja straciłbym swój cenny czas.
  3. Jak dorośniesz to zaczniesz bardziej szanować swój czas, nie wyobrażam sobie, że poświęcasz swój wolny czas na takiego wysrywa w internecie, chyba ktoś Ci nadepnął na odcisk.
0
katakrowa napisał(a):

Wnioskuję z Twojej postawy, że jesteś już ogarniętym programistą zarówno jeśli chodzi o kwestie programowania jak i biznesowe.
Bardzo proszę pokaż jakieś swoje dzieło - wykaż się swoimi kompetencjami.

Nie zostałem do tego zobowiązany, nie mnie dotyczy ten wątek :)

Osoby, które nie piszą pięknego czystego kodu wcale nie muszą być złymi programistami, którzy doskonale sprawdzają się w biznesie. Jak sam zauważyłeś on jest tam jako CEO a nie szeregowym programistą.

Pisałem na ten temat w jednym z komentarzy: jak dla mnie to ma po pierwsze znać się na swojej robocie, a po drugie jako CEO szczególnie powstrzymywać się od zachowań mogących wpłynąć negatywnie na wizerunek firmy.

Co do pierwszego, to rozumuję na zasadzie "a minore ad maius" oraz biorę pod uwagę zasady doświadczenia życiowego: nie za specjalnie prezentuje się nawet jako wykładowca lub programista, to tym bardziej nie spodziewałbym się, że będzie dobrym CEO, a to już może świadczyć o zarządzanej firmie.

A ja jestem Ciekawy Twoich osiągnięć i tego jak byś "podskakiwaczu" sprawdził się w starciu z rzeczywistym klientem.

Ja się z klientami nie ścieram, ja współpracuję :)

1
pifko napisał(a):
katakrowa napisał(a):

Wnioskuję z Twojej postawy, że jesteś już ogarniętym programistą zarówno jeśli chodzi o kwestie programowania jak i biznesowe.
Bardzo proszę pokaż jakieś swoje dzieło - wykaż się swoimi kompetencjami.

Nie zostałem do tego zobowiązany, nie mnie dotyczy ten wątek :)

No to właśnie Cię zobowiązuję. Skoro podważasz czyjeś kompetencje to także powinieneś wykazać się swoimi chociażby tylko po to aby wyglądało to poważnie a nie jak szczeniackie pyskowanie.

0
froziu napisał(a):

Założyłeś wątek o 21:37 w święto niepodległości.

Faktycznie, ale czy to jakieś przestępstwo?

To normalne, że na uczelniach każdy ma wywalone, tym bardziej jak ktoś zarabia n razy tyle na stanowisku CEO za godzinę. Też jak uczyłem programowania to szkoda mi było każdej dodatkowej sekundy poświęconej na zrobienie czegoś lepiej, bo nikt by tego nie docenił a ja straciłbym swój cenny czas.

Jak ktoś ma "wywalone" na swoją pracę, to może powinien się zwolnić, bo jest obowiązek sumiennego i starannego wykonywania pracy, aby nie marnować pieniędzy podatnika i nie blokować stanowiska zdolniejszym i sumienniejszym.

Jak dorośniesz to zaczniesz bardziej szanować swój czas,

Argumentacja ad personam: https://pl.wikipedia.org/wiki/Argumentum_ad_personam

nie wyobrażam sobie, że poświęcasz swój wolny czas na takiego wysrywa w internecie, chyba ktoś Ci nadepnął na odcisk.

Płytka wyobraźnia ;)

katakrowa napisał(a):

No to właśnie Cię zobowiązuję.

Nie, nie zobowiązujesz mnie, bo z jakiego niby tytułu?

Skoro podważasz czyjeś kompetencje to także powinieneś wykazać się swoimi chociażby tylko po to aby wyglądało to poważnie a nie jak szczeniackie pyskowanie.

Znowu ad personam :(

Z całym szacunkiem, narzucanie mi co powinienem nie leży w Twojej gestii.

0

Co musiałoby się wydarzyć, żebys został zobowiazany?

0
twoj_stary_pijany napisał(a):

Co musiałoby się wydarzyć, żebys został zobowiazany?

Źródła zobowiązań według Wikipedii: https://tinyurl.com/2rdy65am

0

Czy to jest multi konto osobnika, który jakiś czas temu pokazywał brzydką stronę jakiegoś prowadzącego zajęcia na uczelni i kwestionował zabezpieczenia, za którymi były ukryte pdfy z materiałami?

0
kixe52 napisał(a):

Czy to jest multi konto osobnika, który jakiś czas temu pokazywał brzydką stronę jakiegoś prowadzącego zajęcia na uczelni i kwestionował zabezpieczenia, za którymi były ukryte pdfy z materiałami?

Dawaj linka :)

1

@kixe52:

Pytasz a wiesz :D

1
katakrowa napisał(a):
pifko napisał(a):
katakrowa napisał(a):

Wnioskuję z Twojej postawy, że jesteś już ogarniętym programistą zarówno jeśli chodzi o kwestie programowania jak i biznesowe.
Bardzo proszę pokaż jakieś swoje dzieło - wykaż się swoimi kompetencjami.

Nie zostałem do tego zobowiązany, nie mnie dotyczy ten wątek :)

No to właśnie Cię zobowiązuję. Skoro podważasz czyjeś kompetencje to także powinieneś wykazać się swoimi chociażby tylko po to aby wyglądało to poważnie a nie jak szczeniackie pyskowanie.

Nie można skrytykować czyjegoś dzieła bez wcześniejszego pochwalenia się własnym kodem? Gdyby tak było, to nie moglibyśmy krytykować polityków :D Słaby argument. A autor wykazał się swoimi kompetencjami, chociażby poprzez analizę kodu i wskazując jego braki.

Trzeba przyznać, że kod jest kijowy i nie powinien nigdy służyć jako przykład na uczelni, ale @pifko trochę przesadza z rantem na jego autora. Niepotrzebnie to ekstrapoluje na jego firmę, w której jest "CEO" (dlaczego nie po prostu "Prezesem Zarządu"?), a nie (mam nadzieję) programistą. Zwłaszcza że ta firma istnieje jakiś czas i przynosi dochód, a ten post może narazić ją na poważne straty wizerunkowe.

0

@ly000

a ten post może narazić ją na poważne straty wizerunkowe.

i może to i dobrze, bo może ktoś pozwie OPa i może w końcu zniknie z 4p :)

3

Swoją drogą co jeśli ktoś by teraz zaczął wywlekać jakiś kod napisany kiedyś przez Muska, Zuckerberga czy innego osiągającego sukcesy CEO. Też mogłoby się okazać, że nie spełnia on norm jakości.

W sensie nie sugeruję, jakoby Musk czy Zuckerberg byli słabi jako programiści, bo może byli bardzo dobrymi, kto wie. Po prostu nie oczekiwałbym po nich tego. No z jakichś powodów niektórzy programiści zostają CEO, i to raczej niekoniecznie dlatego, że umieją dobrze programować (chociaż to nie musi się wykluczać). Raczej Zuckerberga czy Muska należy już oceniać pod kątem tego, jak prowadzą swoje firmy (i tutaj można się już faktycznie pośmiać: https://www.swyx.io/no-smarter/ ).

0
ly000 napisał(a):

Nie można skrytykować czyjegoś dzieła bez wcześniejszego pochwalenia się własnym kodem? Gdyby tak było, to nie moglibyśmy krytykować polityków :D Słaby argument. A autor wykazał się swoimi kompetencjami, chociażby poprzez analizę kodu i wskazując jego braki.

+1

Trzeba przyznać, że kod jest kijowy i nie powinien nigdy służyć jako przykład na uczelni, ale @pifko trochę przesadza z rantem na jego autora. Niepotrzebnie to ekstrapoluje na jego firmę, w której jest "CEO" (dlaczego nie po prostu "Prezesem Zarządu"?)

Przecież sam chwali się, na LinkedIn że jest CEO: https://pl.linkedin.com/in/grzegorz-blinowski-56a721

a nie (mam nadzieję) programistą. Zwłaszcza że ta firma istnieje jakiś czas i przynosi dochód, a ten post może narazić ją na poważne straty wizerunkowe.

Ten post? Straty wizerunkowe?

Straty wizerunkowe to może wywołać działalność zawodowa CEO poza firmą, zwłaszcza jeżeli pokrywa się z obszarem działalności firmy, a przecież rozmawiamy o jakości kodu i firmie wytwarzającej oprogramowanie, o działalności wykładowcy i firmie zajmującej się szkoleniami.

Straty wizerunkowe może wywołać też jakość strony internetowej firmy:

  1. Ortografia - zdarzające się gdzieniegdzie literówki, interpunkcja.

  2. Chwaląc się swoimi kompetencjami wymieniają Windows Server 2008/2013:

    a) po pierwsze nigdy nie było Windows Server 2013, był natomiast 2012 (tacy kompetentni, a nawet tego nie wiedzą? czy może to kolejne typo?)
    b) po drugie już jest Windows Server 2022, a oni wciąż na etapie Windows Server 2012 (tacy zasiedziali?)
    c) po trzecie po drodze do 2022 było jeszcze kilka głównych wydań (2012 R2, 2016, 2019) - też przegapili?
    d) jeśli chodzi o 2013, to był Microsoft Exchange Server 2013, ale to nie jest nawet system operacyjny tylko pocztowy - pomylili pocztę z systemem?
    e) powyższe okoliczności razem wzięte sprawiają wrażenie nieznajomości technologii, w której twierdzą, że mają kompetencje

  3. Wśród kompetencji wymieniają też Sun Solaris, Linux, IBM AIX, FreeBSD, inne Unix, nie podając konkretów - czyżby było jak z Windows Server?

  4. Oferta pracy "Inżynier wsparcia systemów bezpieczeństwa i systemów sieciowych":

    a) wymagają zdjęcia w CV od kandydatów na to stanowisko (na jakiej podstawie? czy aby zgodnie z prawem? https://tinyurl.com/yc83n8wr)
    b) oferują "atrakcyjne wynagrodzenie" :)

  5. Adresy mailowe na stronie mają wstawione spacje i nie są w postaci linków "mailto:":

    a) nie można zaadresować maila kliknięciem, trzeba uruchamiać program pocztowy, kopiować i wklejać
    b) spacje sprawiają, że nie można jedynie skopiować i wkleić do programu pocztowego, ale trzeba jeszcze poprawiać
    c) po co tak kombinują, są przecież gotowe rozwiązania chroniące przed harvesterami adresów (np. darmowy Cloudflare) - zajmują się bezpieczeństwem, a nie wiedzą?

3
ly000 napisał(a):

Nie można skrytykować czyjegoś dzieła bez wcześniejszego pochwalenia się własnym kodem? Gdyby tak było, to nie moglibyśmy krytykować polityków :D Słaby argument. A autor wykazał się swoimi kompetencjami, chociażby poprzez analizę kodu i wskazując jego braki.

"Krytyk i eunuch z jednej są parafii
Obaj wiedzą jak, żaden nie potrafi."

0

+1 za aluzję niestety bardzo trafnie oddającą bieżący stan szkolnictwa w Polsce :(

7

Czytając ten wątek przypomina mi się historia pewnego Stefka (imię zmienione) w pewnej poprzedniej firmie gdzie kiedyś pracowałem. Stefek był zagorzałym fanem clean code. Miał też na świeżo bazy danych gdzie nauczyli go normalizacji do 5 NF. Otóż ów Stefek dołączył do naszego projektu jako nty programista i już w pierwszym tygodniu nie mógł powstrzymać się od komentarzy jaki to ten kod popieprzony jest i że tak się nie pisze i w ogóle, że nasza baza nie trzyma nawet 3 NF a przecież powinno być 5 NF i w ogóle co to za jełop projektował. No i któregoś razu stefek siedział przy kompie i rzucił bluzga w swoim stylu

  • Kto to k*a zaprojektował ten komponent, jeeezu jakie to jest pop**ne"!
  • Ja zaprojektowałem - odezwał się prezes stojący w drzwiach do pokoju. - Stefan, zapraszam do mojego gabinetu.

Wracając do tematu - nie patrzyłem na ten kod, bo nie byłem przy kompie - ale czy w tym kodzie są nieprawidłowo użyte sockety albo inna fundamentalna rzecz którą ten kod miał ilustrować?

Należy wziąć pod uwagę, że wykładowcy zwykle nie są i nie muszą być programistami pracującymi z kodem na co dzień i nie muszą znać absolutnie wszystkich trendów z ostatniego miesiąca. Oni są od tłumaczenia rzeczy ponadczasowych. A Ty @pifko przyczepiles się do tego że gostek używa exit a nie err, co w sumie nie jest żadnym błędem.

Co do brakujących include, to jest to akurat jedna z głupich rzeczy w C - mianowicie headery mogą robić include innych headerow i bardzo łatwo stworzyć kod w którym brakuje include, a który będzie się kompilował i działał przez przypadek. Możliwe, że na jego wersji kompilatora i systemu kiedyś działało, ale potem nie zaktualizował. Możliwe też że przykłady są obcięte i nie są w ogóle kompletnym kodem a od studenta wymaga się że include doda sobie sam. Ja personalnie na takie rzeczy bardzo zwracam uwagę, ale realia pracy na uczelni są takie jakie są i nie dziwię się że dla wielu wykładowców takie rzeczy są kwestią o znikomej wadze, na poziomie literówki.

Btw: dokumentacja BSD stwierdza:

 The err() and warn() families of functions	are BSD	extensions.  As	such
 they should not be	used in	truly portable code.  

Więc nie dość że się czepiasz pierdół to jeszcze nie masz racji.

2
Krolik napisał(a):
  • Ja zaprojektowałem - odezwał się prezes stojący w drzwiach do pokoju. - Stefan, zapraszam do mojego gabinetu.

Nie ma dalszego ciągu.

Widzę kilka różnych scenariuszy:

  • wersja pesymistyczna: prezes daje się ponieść ego i zwalnia pracownika albo go mobbinguje (to chyba jest zasugerowane w tym żarcie, że zaprosił go do gabinetu, więc pewnie go pognębi)
  • wersja optymistyczna: prezes ma tyle dojrzałości, że potrafi odbyć merytoryczną rozmowę z pracownikiem, czemu uważa, że jego kod jest spier... i ogólnie podejście win-win. Bo może pracownik ma rację, a mądry techniczny prezes jest w stanie przyjąć krytykę oraz uargumentować swoje wybory techniczne?
  • wersja realistyczna (dążąca do utrzymania statusu quo): prezes odbędzie "miękką gadkę" z pracownikiem typu "wiem, że komponent jest nieidealny, ale prosiłbym, żebyś pohamował się w formie krytyki, bo swoimi przekleństwami nic nie poprawisz, a tylko demotywujesz zespół"
0
Krolik napisał(a):

Czytając ten wątek przypomina mi się historia pewnego Stefka (imię zmienione) w pewnej poprzedniej firmie gdzie kiedyś pracowałem. Stefek był zagorzałym fanem clean code. Miał też na świeżo bazy danych gdzie nauczyli go normalizacji do 5 NF. Otóż ów Stefek dołączył do naszego projektu jako nty programista i już w pierwszym tygodniu nie mógł powstrzymać się od komentarzy jaki to ten kod popieprzony jest i że tak się nie pisze i w ogóle, że nasza baza nie trzyma nawet 3 NF a przecież powinno być 5 NF i w ogóle co to za jełop projektował. No i któregoś razu stefek siedział przy kompie i rzucił bluzga w swoim stylu

  • Kto to k*a zaprojektował ten komponent, jeeezu jakie to jest pop**ne"!
  • Ja zaprojektowałem - odezwał się prezes stojący w drzwiach do pokoju. - Stefan, zapraszam do mojego gabinetu.

Dobra pasta, szacun :)

Wracając do tematu - nie patrzyłem na ten kod

To widać po całym Twoim poście :)

ale czy w tym kodzie są nieprawidłowo użyte sockety albo inna fundamentalna rzecz którą ten kod miał ilustrować?

Tak i dotyczy to praktycznie całego kodu.

Należy wziąć pod uwagę, że wykładowcy zwykle nie są i nie muszą być programistami pracującymi z kodem na co dzień

Podstawy wypadałoby znać, zwłaszcza gdy uczy się programowania innych.

i nie muszą znać absolutnie wszystkich trendów z ostatniego miesiąca.

Kolega zdaje sobie sprawę z tego, że #include to nie jest ostatni krzyk mody, tylko jest prawie tak stare jak Unix, około 1973 :)

<string.h> - chyba 1985, trend z ostatniego miesiąca, jak nic!

<unistd.h> - okolice 1991, nie za krótki ten ostatni miesiąc, taki 31-letni :)

Oni są od tłumaczenia rzeczy ponadczasowych.

Wołanie funkcji bez deklaracji ponadczasowe? Chyba jednak nie.

gethostbyname(3) ponadczasowa? XD

A Ty @pifko przyczepiles się do tego że gostek używa exit a nie err, co w sumie nie jest żadnym błędem.

Zachęcam Cię do przeczytania całego posta (ze zrozumieniem).

Co do brakujących include, to jest to akurat jedna z głupich rzeczy w C - mianowicie headery mogą robić include innych headerow i bardzo łatwo stworzyć kod w którym brakuje include, a który będzie się kompilował i działał przez przypadek.

Jak się nie wie, że jest coś takiego jak choćby -Wall i -Werror to rzeczywiście łatwo jest stworzyć kod działający przez przypadek.

Tyle, że od wykładowcy nie oczekuje się działania przez przypadek. Od wykładowcy oczekiwałbym jednak działania na podstawie posiadanej solidnej wiedzy oraz umiejętności przekazania tej wiedzy studentom.

A tym bardziej CEO poważnej firmy nie powinien działać przez przypadek, tylko opierać się na wiedzy i doświadczeniu, choćby z uwagi na ogromną władzę nad firmą i wynikającą odpowiedzialność.

Możliwe, że na jego wersji kompilatora i systemu kiedyś działało, ale potem nie zaktualizował.

Coś tam pewnie działało.

Sztuka w tym, żeby wiedzieć co może pójść nie tak, jak napisać dobrze i jak dobrze przetestować.

Możliwe też że przykłady są obcięte i nie są w ogóle kompletnym kodem a od studenta wymaga się że include doda sobie sam.

Wymyślasz okoliczności pod tezę :)

Ja personalnie na takie rzeczy bardzo zwracam uwagę, ale realia pracy na uczelni są takie jakie są i nie dziwię się że dla wielu wykładowców takie rzeczy są kwestią o znikomej wadze, na poziomie literówki.

A później absolwenci tak samo piszą produkcyjnie lub przynajmniej przychodzą na rozmowy i chcą na seniora bo ukończyli informatykę na prestiżowej uczelni technicznej, najlepszej w Polsce :)

Btw: dokumentacja BSD stwierdza:

 The err() and warn() families of functions	are BSD	extensions.  As	such
 they should not be	used in	truly portable code.  

Kolega słyszał o czymś takim jak standard de facto?

Funkcje z rodziny err(3) i warn(3) są obecnie właśnie jednym z takich standardów w branży.

Więc nie dość że się czepiasz pierdół

Kolega wie, że w deklaracji funkcji nie bez powodu podajemy informację o typach parametrów i zwracanej wartości?

Dobrze, że w starszych standardach jest jakiś implicit int, ale nawet to Cię nie uratuje, gdy przypadkiem zawołasz funkcję zwracającą wskaźnik na typowym 64-bitowym systemie i klops, wynik zostanie obcięty do 32 bitów i będzie crash na produkcji :(

Jeszcze "ciekawiej" będzie, gdy w ten sposób zawołasz funkcję zwracającą strukturę przez wartość :(

Więc nie, nie uważam, żeby dbałość o odpowiednie #includy była "pierdołą", zwłaszcza dla kogoś, kto na swoje nieszczęście będzie później ten kod utrzymywał :(

to jeszcze nie masz racji.

Mam rację, co potwierdza jakieś 25 lat w branży, takim jestem starym dinozaurem :)

1

Czytając ten wątek odnoszę wrażenie, że niektórzy za wszelką cenę chcą obronić honor naszych polskich wykładowców, przymykając oczy na obiektywne fakty jakie tu padły (kijowy kod). Być może wynika z faktu posiadania wyższego wykształcenia i niechęci przyznania się, ile to wykształcenie jest tak naprawdę warte (sam mam mgr. inż., żeby nie było). Może warto zacząć mówić o tym głośno, żeby to się poprawiło? Politechnika ma na celu kształcenia inżynierów przygotowanych do pracy, a nie teoretyków. Dlaczego więc na naszych uczelniach technicznych poziom umiejętności praktycznych jest tak niski, że często nawet studenci programują lepiej niż wykładowcy z wieloletnim stażem? Czy wyobrażacie sobie, żeby np. na studiach architektonicznych studenci lepiej projektowali budynki niż ich nauczyciele? Albo na studiach medycznych uczniowe lepiej badali pacjentów od swoich opiekunów? Kto powiedział, że wykładowcy na informatyce są tylko od przekazywania wiedzy "teoretycznej"? Wykładowca powinien być tym, który najgłośniej mówi o dobrych praktykach pisania kodu. To właśnie jego kod powinien być formalnie nieskazitelny, zgody ze specyfikacją języka, dokumentacją itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1