Gość <account_deleted> Opublikowano 30 Listopada 2016 Zgłoś Opublikowano 30 Listopada 2016 (edytowane) Czyli to co pisalem poniekad jest prawda, bo: 1° operator < lub > sa szybsze od <= lub >= na niektorych platformach 2° porownanie z zerem szybsze niz ze stala Niestety Nie - "poniekąd" to jest mitologia... 1. Instrukcje asm sprawdzające relacje miedzy wartościami sprawdzają rejestr statusowy - i zawsze ich wykonanie zajmuje tyle samo cyki zegara - bo operacja sprowadza się do porównania masek bitowych. 2. Nie, zero też jest stałą - "porównanie z zerem" zajmuje tyle samo czasu co porównanie z jakąkolwiek inną stałą - różnica polega na tym, że większość architektur/platform oferuje funkcję zerowania rejestru, która często (nie zawsze) jest szybsza od załadowania stałej wartości z RAM. Większość architektur oferuje również "natychmiastowe stałe" <immediate costants> - czyli stałe zawarte w samej instrukicji CPU (z reguły 3-4 bity) -> porównanie z liczbami z zakresu 0..7 jest tak samo szybkie jak z zerem. Nie mam czasu ani ochoty tego dłużej ciągnąć, bo poziom jest zerowy... - co było do przewidzenia. Rozwiązanie: 1. wersja portowalna: /* returns non-zero in case of int32 overflow */ int chk_mult_overflow(int32_t aval, int32_t bval) { int64_t chk64; chk64 = aval; chk64 *= bval; aval = (chk64 <= 0x7FFFFFFF) ? 0 : 1; return aval; } Wyjaśnienie:Oczywiście można wykonywać obliczenia na liczbach 64bit na platformie 32bit - jak? - trzeba znać ASM żeby wiedzieć jak kompilator "to robi"... Dlaczego ten kod jest najbardziej optymalny: - najmniej skoków warunkowych, najmniej operacji porównywania liczb, a przy okazji najmniej instrukcji ASM. 2. Wersja nie-portowalna (nie-przenośna jak kto woli) *NIC - nie potrzeba pisać żadnego kodu* ;) To jest najlepsze w całym tym wątku: Ludzie bez znajomości zasad działania komputera od lat wypisują bzdury i tworzą wątki na temat jak sprawdzić przepełnienie zmiennej typu <int> - chociaż każdy istniejący na świecie procesor robi to sprzętowo w jednostce ALU, z zerowym kosztem w sencie opóźnienia wykonywania kodu - wystarczy tylko sprawdzić czy ALU wystawiło flagę "overflow" w rejestrze statusowym. Myślę że sprawa jest już jasna - znajomość assemblera i zasad działania komputera jest podstawą do świadomego tworzenia oprogramowania - bez tego, powstają "gnioty" - niskiej jakości i o niskiej wydajności... Pozdrawiam. Edytowane 30 Listopada 2016 przez <account_deleted> Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Małpożer Opublikowano 30 Listopada 2016 Zgłoś Opublikowano 30 Listopada 2016 Ale sam sobie zaprzeczyles... Jesli procesor ma instrukcje z prownaniem do zera, to odchodzi czas odczytu danej z pamieci. Czyli juz jest przyspieszenie. Nie kazdy potrzebuje asm, co juz pisalem, tym bardziej jak zaczyna przygode z programowaniem. Po za tym samemu asm liznalem tylko na uczelni, a tam poziom byl zalosny i polegal na zabawie "znajdz pkt, gdzie program sprawdza licencje i wydumaj sposob jak go obejsc". Instrukcji razem to moze ze 4 szt. podano, a zeby samemu sie uczyc to nie znalazlem zadnego sensownego kursu na necie. Po za tym wole sie najpierw na samym cpp sie skupic, pozniej opengl lub qt, a pozniej moze asm. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 30 Listopada 2016 Zgłoś Opublikowano 30 Listopada 2016 (edytowane) Ale sam sobie zaprzeczyles... Jesli procesor ma instrukcje z prownaniem do zera, to odchodzi czas odczytu danej z pamieci. Czyli juz jest przyspieszenie.Nie prawda: (powtarzam): *niektóre* architektury oferują przyspieszenie przy porównaniach ze stałymi mieszczącymi się w zakresie zdefiniowanym dla "stałych natychmiastowych", który to zakres co prawda obejmuje zero ale też nie tylko zero - w związku z tym, stwierdzenie że "porównanie z zerem jest szybsze niż ze stałą" jest fałszywe. Edytowane 1 Grudnia 2016 przez <account_deleted> Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kemsai Opublikowano 26 Stycznia 2017 Zgłoś Opublikowano 26 Stycznia 2017 (edytowane) Jak chcesz się zacząć uczyć programować to ja bym zaczął od C++. nauczysz się różnicy między programowaniem strukturalnym i obiektowym i dodatkowo zrozumiesz podstawy "wskaźników". Składania jest potem podobna i w C# i w Javie i w wielu innych językach. Jeżeli chodzi natomiast o pracę to zależy. Na wyższym poziomie zaawansowania C++ jest trudniejszy. Jak masz być słabym programistą C++, lub średnim C# to lepiej wybrać to drugie. W korpo pełno pracy dla takich programistów w ASP .Net. Edytowane 26 Stycznia 2017 przez kemsai Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Małpożer Opublikowano 26 Stycznia 2017 Zgłoś Opublikowano 26 Stycznia 2017 C++ patrzac na kolejne drafty idzie w strone Javy/c#, tyle, ze niskopoziomowo. W c++17 wejdzie filesystem, pozniej w c++20 network, a jeszcze pozniej biblioteka do grafiki 2d :) Swoja droga zmiany jakie proponuja np. dla inicjacji zmiennych w ifach... kod bedzie nieczytelny tylko przez to. Ale na pewno c++ zapowiada sie coraz lepiej ;) Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 2 Kwietnia 2017 Zgłoś Opublikowano 2 Kwietnia 2017 (edytowane) Jak chcesz się zacząć uczyć programować to ja bym zaczął od C++. nauczysz się różnicy między programowaniem strukturalnym i obiektowym i dodatkowo zrozumiesz podstawy "wskaźników". Składania jest potem podobna i w C# i w Javie i w wielu innych językach. Jeżeli chodzi natomiast o pracę to zależy. Na wyższym poziomie zaawansowania C++ jest trudniejszy. Jak masz być słabym programistą C++, lub średnim C# to lepiej wybrać to drugie. W korpo pełno pracy dla takich programistów w ASP .Net. kretyn? - nic innego nie przychodzi mi na myśl... @Małpożer: Może być to dla Ciebie szokujące, ale sytuacja wygląda następująco: "The Open Group", czyli instytucja stojąca za specyfikacjami dla języka c/c++ "zaklepuje" wszystko za co im płacą - bo czują "bat na tyłku" w postaci nowszych specyfikacji dla OpenCL (Kronos) Poza tym: istnieją przynajmniej 2 podstawowe specyfikacje dla C++ : oficjalna i GNU C++ GNU ma "w d.u.p.i.e" corporacyjne specyfikacje: it just works. Pozdrawiam. Edytowane 2 Kwietnia 2017 przez <account_deleted> Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
fazzeerr Opublikowano 3 Kwietnia 2017 Zgłoś Opublikowano 3 Kwietnia 2017 (edytowane) @<account_deleted> Tobie chyba mocno się nudzi, zajrzałem do wątku a połowa postów to Twoje przechwalanie się i randomowa trivia. Nie każdy jest taki genialny jak Ty. Po co to wszystko, skoro autor tematu dopiero zaczyna? Programowanie dorobiło się przez lata swojego istnienia warstw abstrakcji, i jeśli ktoś chce zostać programistą JavaScript, to nic mu po tym jak działają rejestry procesora. Na początku tak jak mówili przedmówcy trzeba się obyć z podstawami, tym jak można sterować programem, jak można zapisywać problem i jak można go rozwiązywać. Potem można zagłębiać się w konkretną dziedzinę. Jeśli autor zostanie programistą sterowników albo uC, to będzie wtedy się musiał na tym znać. No ale jeśli nie, bo przecież trzeba od podstaw, to może zaczniemy od projektowania i produkcji układów scalonych? Umiesz zaprojektować swój procesor? Nie? To idź pracować na zmywak. No chyba nie tędy droga.btw: Skoro jesteś taki genialny to idź albo zarabiaj górę hajsu, albo napisz coś przydatnego dla społeczności open source a nie marudź na forum, dla nas plebsu nie ma już ratunku jak widać. Edytowane 3 Kwietnia 2017 przez fazzeerr Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 3 Kwietnia 2017 Zgłoś Opublikowano 3 Kwietnia 2017 Tobie chyba mocno się nudzi, zajrzałem do wątku a połowa postów to Twoje przechwalanie się i randomowa trivia (...) Programowanie dorobiło się przez lata swojego istnienia warstw abstrakcji, i jeśli ktoś chce zostać programistą JavaScript, to nic mu po tym jak działają rejestry procesora. (...) Wow! "warstwy abstrakcji": to pojęcie zarezerwowane dla "kumających" - Ty nie kumasz....nudzi misie... Pozdrawiam. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Klaus Opublikowano 3 Kwietnia 2017 Zgłoś Opublikowano 3 Kwietnia 2017 Temat C++ CZY C# I OD CZEGO ZACZĄĆ? (KURSY, ITP.) Kolejny post przepychanek poza tematem i ZPP. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Małpożer Opublikowano 3 Kwietnia 2017 Zgłoś Opublikowano 3 Kwietnia 2017 (edytowane) klaus przepychanki to zaczely sie po zaczepkach pana 'wiem najlepiej', ktory lubi wyzywac sie na innych :) i sam nie kuma o co pytal autor, ale swoje 3gr wcisnal Edytowane 3 Kwietnia 2017 przez Małpożer 1 Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 15 Kwietnia 2017 Zgłoś Opublikowano 15 Kwietnia 2017 (edytowane) Uważam, że użytkownicy tego forum staną się bardziej szczęśliwi, gdy to pseudo-programiści będą im "wciskać kit"... Zauważyłem tą tendencję już dawno, dlatego poprosiłem ULLISSES'a o skasowanie/usunięcie mojego konta parę lat temu, gdy zmieniłem nazwę użytkownika na "account_deleted". Jako że debile mają na tym forum przewagę, a moja obecność tutaj wydaje się być wysoce nieporządana - proszę o usunięcie mojego konta - prosiłem o to wcześniej ULLISESS'a (parę lat temu)- ale zignororwał moją prośbę... W związku z powyższym, ZPP mnie nie "przeraża" - oczekuję raczej spełnienia mojej prośby - w przeciwnym razie nie będę w stanie powstrzymać się od dementowania debilnych pseudo-porad pisanych przez ludzi z zerowym doświadczeniem, wspieranych przez wikipedię... Best Regards. Edytowane 15 Kwietnia 2017 przez <account_deleted> Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...