Skocz do zawartości
Zaloguj się, aby obserwować  
PACIK19

C++ czy C# i od czego zacząć? (kursy, itp.)

Polecane posty

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

 

Chociaz i tak dalem ciala z maks. wartoscia... Poniekad pewnie przez slabe obycie z systemem 16 - dotychczas maks co potrzebowalem to 0xffff i tylko na programowaniu mikrokontrolerow xD

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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.

Edytowano przez <account_deleted>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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 ten post


Link to postu
Udostępnij na innych stronach

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. Edytowano przez <account_deleted>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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.

Edytowano przez kemsai

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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 ten post


Link to postu
Udostępnij na innych stronach

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.

Edytowano przez <account_deleted>
  • Downvote 2

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@<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ć.

Edytowano przez fazzeerr

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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.

  • Downvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Temat

 

C++ CZY C# I OD CZEGO ZACZĄĆ? (KURSY, ITP.)

Kolejny post przepychanek poza tematem i ZPP.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Edytowano przez Małpożer
  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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.

Edytowano przez <account_deleted>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.
Zaloguj się, aby obserwować  

Aktualności

Artykuły



×

Ważne informacje

Umieściliśmy pliki cookie na Twoim urządzeniu, aby pomóc Ci ulepszyć tę witrynę. Możesz dostosować ustawienia plików cookie, w przeciwnym razie zakładamy, że możesz kontynuować.