Po co język C?

pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Kraków
  • Postów:1055
0

Z C nie miałem wiele styczności, o kilku lat programuję w C++, jednak co jakiś czas spotyka się ludzi, ktorzy uczą się C, a nie C++. Czym jest to podyktowane? C++ posiada wszystkie ficzery, które daje nam C a w dodatku wiele innych, lepszych. Dlaczego ludzie uczą się C, skoro jest jego nowa, lepsza wersja?
Może jestem jakimś ignorantem i tego nie rozumiem, ale oświećcie mnie.


do not code, write prose
Rekman
Do czegoś trzeba zacząć a od C jest łatwiej; chyba, że w C++ ograniczyć się na początku do tego co oferuje C.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
3

Istnieje trzy podstawowe przyczyny które znam z autopsji:

  1. Mam chorą ambicje (aczkolwiek w tym się nie przyznaję) i jestem super szybkim koderem w C, za nic nie uznam wyższości C++;
  2. Z trudem nauczono mnie C, za C++ nawet brać się nie będę, więc uczyć studentów będę wyłacznie C;
  3. Uczę się u gościa z punktu wyżej.

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Kraków
  • Postów:1055
0

Dla mnie to troche jak mając C++11 nie używać

Kopiuj
int T[size] {};

Tylko z uporem pisac pętle zerującą tablice. Bo... właśnie.


do not code, write prose
Zobacz pozostałe 7 komentarzy
Endrju
Przecież takie coś jest też w C. :-| W C można nawet tak: int arr[3] = {[1] = 1}; // 0 1 0 w C++ nie.
pingwindyktator
Nie pisałem, ze nie ma tego w C, nie wiem, nie znam sie na C, skąd cały ten temat.
n0name_l
@pingwindyktator, zrozumiales moj pierwszy komentarz?
pingwindyktator
Nie czytałem po edycji. Nie mieszaj, bo poźniej są takie niejasności.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 3 godziny
0

Może planują naukę Objective-C, bo więcej na tym zarobią?

Objective-C też jest nadzbiorem C (nawet bardziej kompatybilnym niż C++) i też daje dużo dodatkowych możliwości :]

Ja jestem Javowcem, ale hobbystycznie koduję sobie część programów w C (lub czasami z niewielkimi dodatkami z C++). Uczyć się jakoś mocno C++ nie zamierzam (choć trochę go umiem, ale niewiele), bo i po co? Jak chcę zakodzić coś obiektowo to kodzę w Javie lub Scali.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
0
Kopiuj
int arr[1000] = {0};

albo memset.
Sama tak zrobiłam i nie z powodów, które wymienił @_13th_Dragon. Próbowałam coś ładnie (obiektowo) napisać w C++ , do tego bawiłam się Qt, ale marnie mi to wychodziło. Postanowiłam uczyć się podstaw bez OOP a C wydawał mi się prostszy, przyjemny i odpowiedni dla małych konsolowych aplikacji pod Linuxa. Ostatecznie wymyśliłam, że przeskoczę na coś wysokiego tj. Java/Skala i OOP. Zresztą język to tylko narzędzie, są w miarę podobne a przeglądając oferty pracy widziałam wymagania typu C/C++ C++/JAVA :) I taka ciekawostka: http://adambard.com/blog/top-github-languages-for-2013-so-far/


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
pingwindyktator
Podałem tylko jeden przykład, moglbym wymyślic ich jeszcze tysiące.
Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
8

Szafowanie językami uberwysokiego poziomu z ogromnymi wymaganiami sprzętowymi kończy się w momencie, kiedy trzeba napisać sterownik do pralki i jednocześnie zmieścić się w 2kB RAMu na mikrokontrolerze :F


Women were the reason I became a monk - and, ah, the reason I switched back...
satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
0
pingwindyktator napisał(a):

Dla mnie to troche jak mając C++11 nie używać

Kopiuj
int T[size] {};

Tylko z uporem pisac pętle zerującą tablice. Bo... właśnie.

Ten sam kod w C:

Kopiuj
 
int T[size] = { 0 };

Idąc Twoim tokiem rozumowania, dlaczego piszesz w języku, w którym musisz myśleć o zarządzaniu pamięcią? Dlaczego wybierasz język, który z każdym kolejnym standardem wprowadza coraz to dziwniejsze (trudniejsze) konstrukcje, by rozwiązać problemy takie, jak np. perfect forwarding?
Tym co wyróżnia C jest prostota. Ten język przede wszystkim uczy, co to znaczy programować.
Sięgnij po książkę "The C Programming Language" autorstwa K&R.

...
Anyway, żeby nie było, że Cię zrażam do C++...sam programuję w tym języku (przynajmniej próbuję) i uważam go za jeden z najokropniejszych języków z jakimi dane mi było mieć styczność. Jednocześnie nie wyobrażam sobie żebym przestał w nim pisać, bo uwielbiam tego potwora ;)

Zobacz pozostałe 15 komentarzy
satirev
@Azarien zastanów się nad tym, co tak naprawdę trafia do bar... chapeau bas za trafną odpowiedź w 2 ;) Dodatkowe pytanko, wiesz dlaczego tam jest wołany forwarding constructor i w jakiej postaci? (jaki argument przyjmuje?)
Azarien
yy pomyliłem linki. dobrze zgadłem z foo() i bar(), a nie rozumiem tego forwardingu.
dampe
@Satirev, pierwszy przykład bardzo - że tak powiem - "nieprzewidywalny". Przyznać muszę, że dosyć zagiąłeś mnie nim :] Drugi już bardziej oczywisty - forwarding na uniwersalnej referencji (no chyba że nie powinien być tak oczywisty a ja mam tzw misconception, albo czegoś nie wiem) W każdym razie pierwszy przykład zostawię sobie na weekend by bardziej to ogarnąć, może coś z tego będzie ;]
Azarien
problem z forwardingiem polega na użyciu && do czegokolwiek innego niż move-constructor i move-assignment operator. wszędzie indziej to bardzo grząski grunt - nie dotykać nawet kijem. a co do lambdy - to jedyny możliwy wynik, biorąc pod uwagę że foo wewnatrz foo nie jest tymże foo, tylko pochodzi z domknięcia [&foo] — to & jest tu kluczowe.
pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Kraków
  • Postów:1055
2

Pewnie dlatego, ze zarządzanie pamięcią i perfect forwarding to nowe możliwości. Nie musze z tego korzystac, nie musze sie tego uczyć, ale jeśli zechce, to nie będe musiał najpierw uczyc sie innego języka programowania, bo w moim już to wszystko jest.


do not code, write prose
msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 miesięcy
4

To co pan powyżej Demonical Monk (ale szybko piszecie) oraz:

  1. C jest bardziej przenośny (są konwertery C++->C z tego co wiem, ale z wydajnością u nich dość strasznie)

  2. W sumie to samo co wyżej - wydajność. Z tym bywa różnie, ale to w C a nie w C++ masz nad wszystkim (prawie) całkowitą kontrolę.

C++ posiada wszystkie ficzery, które daje nam C a w dodatku wiele innych

  1. Pytanie czy to zawsze zaleta? Ficzery C++ (rozumiem, obiektowość i szablony) są przydatne, ale wprowadzają też olbrzymią dawkę złożoności (polecam poszukać o C++ pitfalls - w C++ można się tak naciąć, że tworzone są o tym całe strony ;]).
    Cytując:

C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
Bjarne Stroustrup

Z innych rzeczy które mi przychodzą do głowy:

  • masz narzędzia (np. do analizy kodu, albo chociażby IDE) z których chcesz skorzystać, i są napisane pod C a nie pod C++.
  • piszesz soft dla NASA (i chcesz mieć formalnie udowodnioną każdą linijkę kodu, bo jeden drobny błąd może spowodować ośmiocyfrowe straty) ;]
  • z banałów - utrzymujesz soft w C, modyfikujesz czyjś kod w C, u Ciebie w pracy piszą w C.
  • możesz po prostu lubić elegancję C (to ja), i/lub nie chcesz do krótkich (<100 linijek) programów wyciągać niepotrzebnie kombajny
  • podobnie do powyższego - prostota, C jest znacznie prostszy (i moim zdaniem lepszy, ale to kontrowersyjna opinia) do nauki.

Dlaczego ludzie uczą się C, skoro jest jego nowa, lepsza wersja?

Biorąc pod uwagę powyższe, C++ to nie nowsza wersja C, tylko inny język, z innym targetem i założeniami.

edit:

Idąc Twoim tokiem rozumowania, dlaczego piszesz w języku, w którym musisz myśleć o zarządzaniu pamięcią? Dlaczego wybierasz język, który z każdym kolejnym standardem wprowadza coraz to dziwniejsze (trudniejsze) konstrukcje, by rozwiązać problemy takie, jak np. perfect forwarding?

Pewnie dlatego, ze zarządzanie pamięcią i perfect forwarding to nowe możliwości. Nie musze z tego korzystac, nie musze sie tego uczyć, ale jeśli zechce, to nie będe musiał najpierw uczyc sie innego języka programowania, bo w moim już to wszystko jest.

Może Cię krzywdząco ocenię (przepraszam jeśli tak), ale wydaje mi się że przechodzisz (prawie każdy kiedyś to miał) przez fazę mój język jest najlepszy, po co ktoś miałby używać innego ;). Każdy (z tych choć trochę popularnych to znaczy) język się do czegoś innego nadaje, każdy ma specyficzne dla siebie wady i zalety.

edytowany 4x, ostatnio: msm
02
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 8 lat
  • Postów:1176
0

Dlaczego ludzie uczą się C, skoro jest jego nowa, lepsza wersja?

Jeden ważny powód:

  1. Bo C++ ma sporo ficzerów, które wydają się spoko ale w praktyce powodują problemy
Zobacz pozostałe 4 komentarze
AP
Zaiste wymienione przez Ciebie ficzery to bajery nie z tej ziemi, przez nikogo nie używane...
02
Właśnie w tym problem, że są używane...
_13th_Dragon
@ArekPastuszka, wygląda na to że jesteś jedynie początkującym.
AP
@_13th_Dragon i ty mnie nie zrozumiałeś?
pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Kraków
  • Postów:1055
0

Może Cię krzywdząco ocenię (przepraszam jeśli tak), ale wydaje mi się że przechodzisz (prawie każdy kiedyś to miał) przez fazę mój język jest najlepszy, po co ktoś miałby używać innego ;). Każdy (z tych choć trochę popularnych to znaczy) język się do czegoś innego nadaje, każdy ma specyficzne dla siebie wady i zalety.

Zupełnie nie o to chodzi. Do tego tematu zainspirowały mnie dwa inne, w ktorych problem został rozwiązany w języku C++, natomiast autor tematu chciał w C i teraz problem, bo w C nie ma kilku rzeczy, ktore są w C++. Uważam C++ za lepszy od C, jednak nie porównuje go np do javy bo bez jej znajomości bałbym sie powiedziec, ktory język jest lepszy.


do not code, write prose
edytowany 1x, ostatnio: pingwindyktator
msm
Rozumiem, czyli nie o to chodzi. W przypadku podanym zachodzi w takim razie (prawie na pewno) opcja 3) podana przez Dragona, czyli mój nauczyciel każe mi pisać w C. W tym przypadku zalety języków nie mają znaczenia, bo po prostu wykłądowca każe więc musi być w C :P
KA
@pingwindyktator czy masz na myśli jeden z moich wątków?
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
3

Nie istnieje (na calym swiecie) pojecie lepsze narzedzie. Narzedzia sa wybierane do rozwiazywanego problemu.

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 dni
  • Lokalizacja:Szczecin
2

wydajność. Z tym bywa różnie, ale to w C a nie w C++ masz nad wszystkim (prawie) całkowitą kontrolę.

Nie rozumiem argumentów tego typu. C++ jest prawie w pełni kompatybilny z C; pisanie, że coś da się zrobić w C, a nie da w C++ jest dla mnie mocno podejrzane (ok, nie nazwę zmiennej class, nie podam typu parametru funkcji po jego deklaracji i nie ma VLA, ale zakładam, że nie o tym mówimy), zejście do bebechów i bezpośrednie kontrolowanie zachowania kodu co do instrukcji jest jak najbardziej możliwe - aż do poziomu deklaracji asm - a czasem wysokopoziomowość C++ pozwala nie tylko uczynić kod czytelniejszym, ale też znacznie szybszym (znany przykład, qsort vs. std::sort: https://stackoverflow.com/questions/4708105/performance-of-qsort-vs-stdsort ).


msm
Dlatego napisałem z tym bywa różnie. Zdaję sobie sprawę z wszystkich Twoich argumentów i masz rację, dlatego sprecyzowałem że chodzi o kontrolę. W C nic się nie dzieje za Twoimi plecami (globalne inicjalizery chociażby, copy constructory). Większość kosztów da się faktycznie wyeliminować (kosztem dodatkowego kodu), ale trzeba je /zauważyć/, podczas gdy w C nie ma takiego zagrożenia bo wszystkie koszty są jawne. No i weź pod uwagę np. narzut (np. pamięciowy) runtimu (w C++ większy).
msm
Dla sprecyzowania, mówimy tutaj o miejscach gdzie faktycznie taka wydajność ma znaczenie. Seealso post Demonical Monka (programował ekspres do kawy po WiFi więc ma doświadczenie ;) )
kq
Wciąż uważam, że to wszystko jest możliwe do osiągnięcia w C++ (jeśli kontrolujesz całość kodu), chociaż faktycznie odbędzie się to większym nakładem sił (i taki argument bym jak najbardziej rozumiał - w porównaniu do C++, C jest tak prosty, że momentami można go aż nazwać ubogim) i właściwie temu się sprzeciwiam. To nie jest tak, że w C++ się nie da, tylko, tak, że w C++ jest to (znacznie?) ciężej osiągnąć. Trzeba też pamiętać, że teraz nawet karty microSD mają wbudowanego ARMa o taktowaniu w okolicach 100MHz, więc ilość miejsc gdzie trzeba aż tak uważać na wydajność spada
Azarien
ale to nie jest tak, że C++ jest wolniejszy – ficzery są celowo tak zaprojektowane, by nic się nie działo kosztem wydajności. wszystkie te lambdy i template'y są i tak kompilowane do kodu natywnego, z zerowym bądź pomijalnym narzutem obliczeniowym (zależnie też od optymalizacji). jednak jest pewien narzut ze strony biblioteki standardowej, bo jest po prostu większa.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 17 godzin
0

Dlaczego ludzie uczą się C, skoro jest jego nowa, lepsza wersja?
C++ nie jest nową, lepszą wersją C, choć oczywiście można debatować czy jest lepszy czy nie ;-)

Nauka C siłą rzeczy musi kłaść większy nacisk na algorytmy, bo mniej masz gotowców w standardowej bibliotece.
Dlatego C ma pewne walory edukacyjne, przynajmniej na początku.

Uważam że znać trzeba oba (czyli uczyć się C++ ale w C też się odnaleźć), przede wszystkim dlatego, że pracodawcy często nie rozróżniają tych języków, zatrudniając programistów nieistniejącego języka „C/C++”, albo zatrudniają cię jako programistę C++ a projekt dostajesz w C.
Co też to ostatnie mi się kiedyś przydarzyło.

MA
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 3 lata
  • Postów:166
1

Języki/narzędzia wyższego poziomu są często budowane z wykorzystaniem niskopoziomowych języków typu C. Ktoś to musi rozwijać :p

spartanPAGE
A jak ktoś marudzi na wysoki poziom zostaje C-- :P
TK
  • Rejestracja:ponad 13 lat
  • Ostatnio:17 dni
  • Postów:342
1

Wydaje mi sie, ze jezyk C jest standardem w pewnym obszarze zastosowan. Mam tutaj na mysli glownie zastosowania w elektronice w tym rzeczy typu programowanie sterownikow do pralek czy czego tam jeszcze, ale i nie tylko.

Mozesz zapytac na forach powiazanych z elektronika w czym programuja swoje zabawki - jezeli dostaniesz odpowiedzi, ze w C to pewnie dlatego ludzie ucza sie C, bo to w C przyjdzie im sie bawic jak trafia do zespolu elektronikow.

Co wiecej: jezyk C jest troche bardziej popularny na Linuxach. Jezeli wiec jakas firma produkuje urzadzenia (wszystko jedno czy to jakies routery, telewizory czy nie wiadomo co jeszcze) opartych na linuxie to osoby pracujace nad takimi urzadzeniami z pewnoscia zetkna sie z jezykiem C.

Kolejnym powodem sa uczelnie: studenci ucza sie C zamiast C++ bo moga miec akurat wykladany jezyk C, lub oba z tym, ze C w pierwszej kolejnosci.

To co napisalem to oczywiscie moje domysly i niekoniecznie musi to miec przelozenie na rzeczywistosc. Napisalem to, poniewaz uwazam, ze warto byloby popytac rowniez elektronikow - mialbys zapewne szerszy punkt widzenia na te sprawe.

edytowany 1x, ostatnio: tk
TK
  • Rejestracja:ponad 13 lat
  • Ostatnio:17 dni
  • Postów:342
1
Wibowit napisał(a):

Może planują naukę Objective-C, bo więcej na tym zarobią?

Objective-C też jest nadzbiorem C (nawet bardziej kompatybilnym niż C++) i też daje dużo dodatkowych możliwości :]

Troche watpie w to, ze ktos kto chce sie uczyc Objective-C zaczyna nauke od C. Mialem (nie)przyjemnosc pisac w tym calym Objective-C i prawde mowiac to nie zauwazylem tam jakiegos szczegolnego podobienstwa do C. Niby jest to jakis tam nadzbior jezyka C, ale w praktyce to sie tego az tak bardzo nie czuje. Przynajmniej ja nie czulem - dla mnie to byl calkowicie inny jezyk.

ML
Zgadza się, największe podobieństwo Objective-C do C to właśnie litera C w nazwie :)
EM
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:271
2

Dla mnie C++ jest dosłownie "językiem ogólnego przeznaczenia". Fajnie jest mieć możliwość użycia pewnych mechanizmów a już to czy z tego korzystamy czy nie to sprawa indywidualna.
W C++ możemy pisać niskopoziomowo, proceduralnie, obiektowo, funkcyjnie. Nie można już też narzekać na bibliotekę standardową czy brak porządnej biblioteki do GUI.
Jeżeli uważamy jakiś element C++ za niebezpieczny i mogący powodować sporo problemów to na etapie projektu tworzymy "dedykowany podzbiór" C++ pod ten nasz konkretny projekt - wyrzucamy wskaźniki, wyjątki, wielokrotne dziedziczenie - wszystko w naszych rękach.

Ucząc się od podstaw C++ uczymy się także języka C bo często na studiach czy nawet w książkach mechanizmy z C które mają lepsze odpowiedniki w bibliotece standardowej STL są mimo to używane w C++.
Ciężko mi znaleźć argument za tym aby zostawić C++ i uczyć się C. Tak jak mówię możemy napisać program w C++ który praktycznie niczym nie będzie różnił się od C poza rozszerzeniem pliku źródłowego.

edytowany 1x, ostatnio: emacs
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 3 godziny
1

Ciężko mi znaleźć argument za tym aby zostawić C++ i uczyć się C. Tak jak mówię możemy napisać program w C++ który praktycznie niczym nie będzie różnił się od C poza rozszerzeniem pliku źródłowego.

Idąc tym tokiem rozumowania, można powiedzieć, że każdy klepiący w C jest jednocześnie koderem C++. Po prostu używa specyficznego "dedykowanego podzbioru" :)

Co więcej, ktoś kto klepie w czystym C jest jednocześnie koderem C, C++, Objective-C, a może i wielu innych. Win!1!oneoneeleven


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit
Demonical Monk
Przy odrobinie szczęścia jest też koderem brainfucka.
kq
Nie do końca, ale imho całkiem blisko. Pomijając keywordy, VLA i name mangling, zostają tylko wyjątki, ale jeśli ich nie używasz to zostajesz praktycznie z tym samym. Widziałem sporo bibliotek, które można było kompilować zarówno w C++ jak i w C, gdzie jedynym "dopasowaniem" było #ifdef __cplusplus \nextern &quot;C&quot;\n{
EM
"możemy napisać program w C++ który praktycznie niczym nie będzie różnił się od C poza rozszerzeniem pliku źródłowego."
Azarien
@kq: I tak powinny być pisane wszystkie nagłówki, które nie wymagają koniecznie C++.
EM
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:271
0

Wibowit nie zrozumiałeś mnie... W momencie gdy dostaniesz ode mnie plik źródłowy z rozszerzeniem .cpp może się zdarzyć że powiesz o mnie "dobry programista C" bo pisze sterownik i użyje tylko mechanizmów z biblioteki języka C, ja dostając od Ciebie plik z rozszerzeniem .c nie będę mógł powiedzieć o Tobie "programista C++" więc idziesz złym tokiem rozumowania. To są 2 osobne języki - C i C++. A to że C++ jest tak mocno kompatybilny z C że jest swego rodzaju "nadzbiorem" tego języka to już nie mój pomysł.

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:29 minut
1

http://cppquiz.org/ - w bardzo przystępny sposób potrafi wytłumaczyć dlaczego nie C++.

Osobiście głównie piszę w Rubym, ale czasem zdarza się potrzeba napisania czegoś w C, C++ czy czymś innym (na studia). Ja mam tak, jeśli ma być przenośnie i wydajnie to C, jeśli jednak potrzebuję wyższy poziom to biorę następcę C, czyli D. Może w tym 2 nie za wiele jest bibliotek, ale w zastosowaniach, które potrzebuję najczęściej mi to zupełnie nie zawadza.


edytowany 1x, ostatnio: hauleth
kq
Akurat to jest jedno z bardziej oczywistych pytań, ja bym raczej narzekał na coś w stylu "opisz i i j dla: int i(), j(1);" lub zestaw pytań 37 i 38. edit: co w sumie wspiera tezę, że to dość​ trudny język do opanowania w 100%
Endrju
Teraz jestem z siebie dumny, odpowiedziałem prawidłowo (na 37 i 38 też). Dzięki za możliwość dowartościowania się! ;-)
Azarien
"Correct!" za piewszym razem na 32, 37 i 38. ale zgadzam się, że C++ jest cholernie trudnym językiem.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)