Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C na linuxie

Ostatnio zmodyfikowano 2015-03-17 15:28
Autor Wiadomość
pekfos
» 2015-03-14 12:54:34
lepiej zacząć od czegoś prostszego od C++, np. Batch, żeby zrozumieć sam zamysł programowania.
Czyli choćby same zobaczenie hello worlda nie pozwala zrozumieć, do czego to zmierza? Programy konsolowe na poziomie kilku pierwszych lekcji kursu mają możliwości zbliżone do batcha - efekt osiągnięty w podobnym czasie i minimalnie większym nakładem pracy. Więc po co..? Jak ktoś nie ma wyobraźni i nie rozumie pisania aplikacji konsolowych, skoro wszędzie widzi się okienka, to batch na pewno nie pomoże.

No i po raz drugi; po co tyle sarkazmu? ;) Poinformowałem wszystkich o mało znaczącej zmianie dotyczącej samego mnie (a dokładniej mojego "podpisu")
Tak mało znaczącej, że aż nic nie znaczącej. Temat toczy się jak widać, ale nie znaczy, że można tu dorzucać bezużyteczny offtop. "Właśnie mi się przypomniało, że mam taki nick, więc zmienię podpis". I tak w następnym poście podpisałeś się po staremu.. Podpisy i sygnaturki pod postami to niepotrzebna strata czasu i miejsca.
P-128339
Brunon3
» 2015-03-14 13:19:25
@pekfos:
A jaki sens ma dalsze dyskutowanie o tej mało znaczącej części mojego posta? Jeżeli to aż tak bardzo przeszkadza to część tą usunąłem.

Czyli choćby same zobaczenie hello worlda nie pozwala zrozumieć, do czego to zmierza?

No na przykład u mnie w szkole uczymy się "programować" w tzw. Logomocji; sterowanie żółwikiem, który zostawia na dwuwymiarowej planszy za sobą ślad, polskimi komendami i pisanie "procedur", czyli "zbioru komend dla żółwia, który można wywołać jedną komendą".
;D

-B3.
P-128341
akwes
» 2015-03-14 15:05:10

Jeżeli się niczym nie różnią, to po czym poznałeś, że zostały zmieszane?
Jeżeli napisałem taki kod: [...] to napisałem go w pomieszanym C czy w C++?
Po czym poznać, że zostały zmieszane języki?
Pomieszany C++ z C:
W kodzie C++ pojawiają się elementy z C, które zostały uznane za nieprawidłowe, niebezpieczne lub nieczytelne.

Pomieszany C z C++:
Kod nie kompiluje się w kompilatorze C, natomiast kompiluje się w C++ ale pisany jest w stylu C.

Co więcej niektóre mechanizmy z języka C są niekompatybilne z C++ i powodują poważne błędy niewykrywalne w czasie kompilacji.


Ale mówimy o poprawności językowej.
Tak, niepoprawnie napisany kod (niezgodny ze standardem języka) wynika niezdefiniowanymi zachowaniami, które można zobaczyć dzięki testom jednostkowym, programom do badania jakości kodu (np. coverity) czy badaniu odwołań do pamięci (valgrind).


Dlatego proszę o wyjaśnienie, a jak na razie inwektywy słyszę.
Ogólne informacje zostały Ci podane. Nikt nie będzie pisał całego elaboratu na ten temat tylko dlatego, że Tobie nie chce się poszukać informacji na własną rękę. Przeczytaj jakąś książkę o jakości kodu albo wytyczne do pisania bezpiecznego kodu będziesz miał tam to dużo lepiej wyjaśnione niż w poście pisanym na bieżąco. W książkach będą również odpowiednie przykłady.


However, due to minor semantic differences, most non-trivial C programs will not compile as C++ code without modification — C++ is not a superset of C.
Compatibility of C and C++
What prevents C++ from being a strict superset of C?
“C subset of C++” -> Where not ? examples?


No właśnie dlatego korzystam z C++
Jeżeli piszesz w C++ to starasz się pisać zgodnie z ideą tego języka aby kod był czytelny dla wszystkich programistów oraz poprawny. Jeżeli piszesz w C to nie masz takich rzeczy jak
class
,
new
,
delete
, ponieważ kod się nie będzie kompilował. Wiele platform wymagania pisania w języku C, często z powodów wydajnościowych. Napisanie tak samo wydajnego kodu w C++ jak w C na platformy wbudowane wymaga bardzo dużej wiedzy o obu językach oraz o platformie docelowej, dlatego taniej pisać w C.

Wiele aplikacji jest napisanych w C (jądro Linuksa), których przepisanie na C++ jest niemożliwe (miliony linii kodu) i dlatego będą zawsze rozwijane w C. Nawet w przypadku mniejszych programów nie opłaca się ich przepisywać. Wiele platform na które się pisze programy posiadają kompilator C ale nie C++ albo wspierają go w bardzo ograniczony sposób.


No i widzisz, znów jedynie obrażasz, zamiast wyjaśnić. Na razie rzucasz sloganami.
Bo argumentacja w ogóle do Ciebie nie trafia, wciąż piszesz te same zdania i tezy, które zostały obalone we wcześniejszej dyskusji pokazując jedynie ignorancję na to co się do Ciebie pisze.

Wyjaśnij mi jakie zalety wynikają z mieszania języków skoro tak się przy tym upierasz?

W przypadku wplecenia kodu C++ do kodu C podczas nauki C otrzymujemy osobę, która nie potrafi programować w C, ponieważ jej kod nie kompiluje się w kompilatorze języka C. Efekt? Nie nauczyliśmy tej osoby programowania w C.

W przypadku wplecenia kodu C do kodu C++ podczas nauki C++ otrzymujemy osobę, która nie potrafi pisać w stylu C++, ponieważ jej kod używa mniej bezpiecznych technik programowania, które jak mówiłem wcześniej, trudniej testować, trudniej utrzymać, trudniej odczytać oraz są bardziej błędogenne.

Jeżeli uważamy, że C jest za trudne i trzeba uczyć go z elementami C++ to dlaczego nie zaczniemy od C++ tylko robimy krzywdę danej osobie?

Przede wszystkim nauka C++ nie jest trudna jeżeli jest wspierana przez osobny kompetentne. Jeżeli uczymy się języka C, to dlaczego mielibyśmy używać kompilatora C++ oraz elementów języka C++ skoro nie tego się uczymy? Wbrew pozorom języki te często się różnią (mimo częściowej kompatybilności) obfitując w trudne do wykrycia błędy. To tak jakby kogoś uczyć języka polskiego, ale korzystać z gramatyki angielskiej bo jest prostsza. Wyjdzie z tego nieużywalny bubel.
P-128354
tristan
» 2015-03-14 17:53:01
które zostały uznane za nieprawidłowe, niebezpieczne lub nieczytelne.

Czyli?

Co więcej niektóre mechanizmy z języka C są niekompatybilne z C++ i powodują poważne błędy niewykrywalne w czasie kompilacji.


Jakie?

Ogólne informacje zostały Ci podane.

Z mojego punktu widzenia same frazesy. Po prostu zupełnie nie rozumiem o czym piszesz. Dlaczego program napisany w C nagle staje się niebezpieczny dlatego, że wykorzystano w nim np. cout i cin. A jak zamienić go na bez coutów, cinów, new itp. staje się bezpieczny. Tego nie rozumiem. Chciałbym przykładów, bo nie umiem sobie wyobrazić po prostu takiego przypadku, gdyż nie jestem zawodowym programistą.

Przeczytaj jakąś książkę o jakości kodu albo wytyczne do pisania bezpiecznego kodu będziesz miał tam to dużo lepiej wyjaśnione niż w poście pisanym na bieżąco.

Ale jak ktoś się uczy podstaw i dopiero zaczyna i poznaje podstawowe rozwiązania algorytmiczne, to tego i tak nie ogarnie. A poza tym, wciąż nie rozumiem dlaczego ta jakość ma spadać z powodu użycia kompilatora C++. Nie ogarniam tego koncepcyjnie.


Wiele aplikacji jest napisanych w C (jądro Linuksa), których przepisanie na C++ jest niemożliwe (miliony linii kodu) i dlatego będą zawsze rozwijane w C. Nawet w przypadku mniejszych programów nie opłaca się ich przepisywać. Wiele platform na które się pisze programy posiadają kompilator C ale nie C++ albo wspierają go w bardzo ograniczony sposób.

Ale jaki to ma związek z tym, ze do nauczania podstaw programowania i algorytmiki wybiorę C++ zamiast C i z tego C++ wykorzystam bardzo niewiele, jak cout, cin, new i string? Tego właśnie nie ogarniam. I jak obserwuję różne kursy, książki itp. to nie jestem jedyny.

Bo argumentacja w ogóle do Ciebie nie trafia, wciąż piszesz te same zdania i tezy, które zostały obalone we wcześniejszej dyskusji pokazując jedynie ignorancję na to co się do Ciebie pisze.

Bo piszesz jakieś ogólne frazesy, a nie wiem jak to się ma do rzeczywistości.


Wyjaśnij mi jakie zalety wynikają z mieszania języków skoro tak się przy tym upierasz?

po pierwsze primo:   Już pisałem, ale powtórzę: Wybierając do nauki C, muszę od razu wskoczyć na poziom pcharów, malloców, różnych %d %c itp. w printfie.

po drugie primo: Nadal nie widzę pomieszania, zobacz mój list wyżej, jak rozpoznajesz, że to mieszane C z C++ a nie czyste C++?

W przypadku wplecenia kodu C++ do kodu C podczas nauki C otrzymujemy osobę, która nie potrafi programować w C, ponieważ jej kod nie kompiluje się w kompilatorze języka C. Efekt? Nie nauczyliśmy tej osoby programowania w C.

Ale nie o tym mówimy. Wyśmiewałeś korzystanie z C++ jako z C z klasami.

W przypadku wplecenia kodu C do kodu C++ podczas nauki C++ otrzymujemy osobę, która nie potrafi pisać w stylu C++, ponieważ jej kod używa mniej bezpiecznych technik programowania, które jak mówiłem wcześniej, trudniej testować, trudniej utrzymać, trudniej odczytać oraz są bardziej błędogenne.

No i tego nie ogarniam. Co to jest kod C w kodzie C++?

Jeżeli uważamy, że C jest za trudne i trzeba uczyć go z elementami C++ to dlaczego nie zaczniemy od C++ tylko robimy krzywdę danej osobie?

No właśnie od początku tej dyskusji to ja się Ciebie o to pytam, jak rozpoznać, że to coś to jest element C w C++ a nie prawdziwe C++... Jak wyobrażasz sobie naukę C++ w sposób taki, żeby nie było zarzutów, że to C wplecione w C++? A cały czas słyszę o trollach, o szkodliwych wykładowcach i inne argumenty ad personam, a nie ad meritum.

Przede wszystkim nauka C++ nie jest trudna jeżeli jest wspierana przez osobny kompetentne

Możliwe. Problem w tym, że osoby znające się dobrze na temacie znają się dobrze na temacie i zarabiają 10 tysięcy netto miesięcznie, a nie zajmują nauczaniem za 1000zł. Dlatego na razie pozostaje ci wyjaśnić mi co masz na myśli w szczególności, a nie ogólnymi truizmami.

P-128366
Monika90
» 2015-03-14 19:16:38
Ale jak mieszasz? C++ jest nakładką na C. Ify, Fory, While się czymś różną w C++? Po prostu używam C++, bo jest prościej mieć string, cout i new. Do tego struktury, wołanie funkcji. Bez templatów, wektorów i klas, bo nie o to chodzi. Można iść w ortodoksję i krzyczeć, że Będę Robił Czyste C, Żeby Forumowcy Nie Zarzucili, Że Mieszam C z C++. Tylko po co? Żeby na starcie walczyć z printfem, scanfem, pcharami, mallocami i reallocami?

Nie chcesz używać wektorów i klas? Dlaczego? Po to, żeby na starcie walczyć z new, delete i wskaźnikami?
P-128369
Brunon3
» 2015-03-14 19:46:50
@up:
To chyba taka nietypowa mieszanka sarkazmu z trollingiem; ja uważam że nie można wierzyć w prawie nic, co tutaj pisze @tristan.

:)

-BD.
P-128370
pekfos
» 2015-03-14 20:39:17
No właśnie od początku tej dyskusji to ja się Ciebie o to pytam, jak rozpoznać, że to coś to jest element C w C++ a nie prawdziwe C++... Jak wyobrażasz sobie naukę C++ w sposób taki, żeby nie było zarzutów, że to C wplecione w C++? A cały czas słyszę o trollach
Trochę mało dziwne, że słyszysz o trollach. Dostałeś linki do materiałów opisujących różnice, ale zamiast się zapoznać, trzymasz się przykładu ifa i pytania, czy to już prawdziwe C++, czy jeszcze C..

W przypadku wplecenia kodu C do kodu C++ podczas nauki C++ otrzymujemy osobę, która nie potrafi pisać w stylu C++, ponieważ jej kod używa mniej bezpiecznych technik programowania, które jak mówiłem wcześniej, trudniej testować, trudniej utrzymać, trudniej odczytać oraz są bardziej błędogenne.
No i tego nie ogarniam
Miałeś w C konstruktory, destruktory, enkapsulację, itp..? C++ to nie C ze zmienioną terminologią. Styl C++ to nie pozamienianie wszystkich malloc() na new, lecz używanie technik, które sprawiają, że nie trzeba oglądać ani jednego, ani drugiego, oraz nie trzeba martwić się o zwalnianie pamięci - niezależnie, czy program potoczy się mniej lub bardziej oczywistą ścieżką wykonania.
P-128375
Brunon3
» 2015-03-14 21:29:05
Jednakże co do jednego zdania osoby która nie nazywa się @tristan, nie mam całkowitej pewności; otóż wiem że funkcje/metody/nowości z C++, nie skompilują się w kompilatorze C, ale o tym że na odwrót też może tak być nie wiedziałem.

Co więcej niektóre mechanizmy z języka C są niekompatybilne z C++ i powodują poważne błędy niewykrywalne w czasie kompilacji.

Na przykład?

-BD.
P-128386
1 2 3 4 « 5 » 6 7 8 9
Poprzednia strona Strona 5 z 9 Następna strona