Wpis z mikrobloga

@mikuslaw: bzdurą jest, że "wywołanie main jest wywołaniem jak każde inne" (konkretny fragment, który zacytowałem) - main jest traktowany magicznie przez język, a jego wywołanie jest explicite zakazane. Co do reszty się zgadzam, a samo ograniczenie uważam, za zbyteczne. Ale ono jest.
  • Odpowiedz
@TheMoonTheMoon: sprytne rozwiązanie. Uśmiałbym się i zaliczył na maxa, wykładowca ma po prostu kija w dupie.

No chyba, że z treści wynikało, że masz użyć jakiejś pętli, albo uprzedzał, że estetyka rozwiązania ma pierwszorzędne znaczenie.
  • Odpowiedz
@mikuslaw: Tak w sumie to może być podyktowane tym, że loader skacze bezpośrednio w funkcję, i na jakiejś platformie może to oznaczać, że taka funkcja main ma inne calling convention (brak function prelude, czy coś)
  • Odpowiedz
@TheMoonTheMoon: Nauka jest po to, żeby nauczyć się dobrych praktyk, tutaj ich brakuje. Funkcja int nie zwracająca inta to kolosalny błąd, którego nie puściłby żaden nowoczesny kompilator. Zwykle główna funkcje chcesz mieć jak najczystszą jak tylko można, więc wyeksportuj logikę do innej funkcji rekurencyjnej i wywołaj ja w mainie. Poza tym, program po prostu nie działa jak powinien. Jak wywolam go z argumentem 2 to zacznie wyświetlać od 2 a
  • Odpowiedz
@TheMoonTheMoon:

- Brak warunku przerwania rekurencji
- Wywoływanie rekurencyjnie funkcji main (niby nie jest nie dozwolone, ale tak się nie robi kumplu, to w zamyśle funkcja która wolana ma być tylko przy uruchomieniu aplikacji przez system, poza tym nie pełna sygnatura funkcji main)
- Niewydajne rozwiązanie (rekurencja < rozwiązanie w pętli, plus w rekurencji narażasz się na stackoverflow)

Ogółem #programisty15k z tego by nie było ( ͡°
  • Odpowiedz
@TheMoonTheMoon: kompiluje się bo to główny main, jeśli napiszesz inną funkcję w ten sposób to już się nie skompiluje. W JS też możesz zwrócić inny typ niż zadeklarowany, ale to nie znaczy że to jest dobra praktyka. Jeszcze raz, nauka jest po to żeby nauczyć się dobrych praktyk a nie żeby działało. Na to żeby działało jako tako jeszcze będziesz miał czas jak będziesz pracował w korpo za parę lat
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@KrzaQ2: pomysł w sumie niezły (w sensie że jestem w stanie sobie wyobrazic mogłoby tak byc - np parametry maina zamiast na stosie czy w rejestrach mogłyby być pod określonym adresem w pamięci wirtualnej). Trochę się to rozsypuje o to że w C funkcja main może być wolana z programu, co by oznaczało inna obsługę przez loader dla tych dwóch języków. W sumie chyba musiałbym w wolnej chwili doczytać czy
  • Odpowiedz
@TheMoonTheMoon: bardzo interesujące rozwiązanie, a jeszcze bardziej interesujące, że to działa. Zrobiłeś co najmniej dwie rzeczy, których zabrania standard (wywołanie main i tylko jeden argument), a program i tak działa.

Nie wiem, co ci wykładowca dokładnie powiedział. Jeśli zrobiłeś to świadomie, to ja bym pogratulował kreatywności, ale poprosiłbym też o zaprezentowanie bardziej standardowego rozwiązania, choćby ustnie.
  • Odpowiedz
@TheMoonTheMoon: Beka z typów co tu HURR DURR readability, standardy, tak się nie pisze produkcyjnie etc. ( ͡° ͜ʖ ͡°) jest zadanie, są wymagania podane, tyle. Działa? Działa.

Na pewno jest na zaliczenie.
  • Odpowiedz