tristan |
» 2015-03-14 21:38:46 Trochę mało dziwne, że słyszysz o trollach. Dostałeś linki do materiałów opisujących różnice, ale zamiast się zapoznać, |
Zapoznałem się i jakoś nie widzę tych straszliwych różnic, które powodują, że program się kompiluje, ale źle działa. Pod podanymi linkami odczytałem głównie to, że w C można stosować tablice o wielkości zależnej od zmiennej (nota bene w g++ też można), a w C++ nie. Albo że w C++ można użyć typu struct bez struct i inne podobne... Ale to wszystko są różnice składniowe, a mój hejter był łaskaw o coś innego się czepiać. Nie chcesz używać wektorów i klas? Dlaczego? Po to, żeby na starcie walczyć z new, delete i wskaźnikami? |
Wektory na początek wydają mi się za skomplikowane[1]. A znów klasy... Hm... Nie bardzo widzę wykorzystanie klas wprost przy przykładach prostych algorytmów typu bublesort czy szyfr cezara. Do tego, raczej o klasy hejterom nie chodziło, bo nazywali z przekąsem to edukacyjne C++ jako C z klasami, więc użycie klas zapewne nie jest tym, co "uzdrowiło by sytuację". [1] Zauważ, ze Ty jesteś Monika90 - Ekspert C++, a mówimy o uczeniu początkujących w tym wątku. Miałeś w C konstruktory, destruktory, enkapsulację, itp..? |
Nie miałem, ale jaki to ma związek ze zdaniem o wplataniu C w C++? Raczej powinieneś pokazać coś, co miałem w C, a nie mam w C++. Jak na razie z takich rzeczy, które by można ewentualnie wykorzystać w nauce podstaw programowania i algorytmiki to jest int t[n]. Ale i to jest coś, co wyjdzie na etapie kompilacji, a cały czas był zarzut, że taki biedny, oszukany uczeń napisze pełen błędów program, który się skompiluje a będzie generował problemy w działaniu. Styl C++ to nie pozamienianie wszystkich malloc() na new |
Oczywiście. Ja tylko pytam, co złego jest w nauczaniu podstaw programowania i algorytmiki poprzez stosowanie języka C++ na poziomie zbliżonym do C? Myślisz, że te wszystkie rzeczy, o których piszesz, są do strawienia przez kogoś, kto nigdy nie programował? Właśnie po to się stosuje taki okrojony C++, żeby od razu nie zabić kogoś zawiłościami C, więc zabijanie go zawiłościami C++ dalej do niczego nie prowadzi. |
|
Brunon3 |
» 2015-03-14 21:46:12 Wektory na początek wydają mi się za skomplikowane[1] |
Według mnie wektory są prostsze do opanowania niż tablice dynamiczne. Masz automatycznie zwalnianą pamięć w destruktorze, .size(), itd. a mówimy o uczeniu początkujących w tym wątku. |
Tak, ale C++ jest w większości przypadków prostszy od C, bo przecież nikt Ci nie narzuca pisania programów obiektowo. Miałeś w C konstruktory, destruktory, enkapsulację, itp..? |
Nie miałem, ale jaki to ma związek ze zdaniem o wplataniu C w C++? |
Ma, bo to różnica pomiędzy tymi dwoma językami. Ktoś kto był uczony że w C znajdzie powyżej wymienione elementy składni C++, potem pisze program w C z użyciem tych elementów, i się dziwi czemu się nie kompiluje. -BD. ;) |
|
akwes |
» 2015-03-14 22:03:11 Dostałeś linki. 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. |
Wtedy to nawet nie jest pogram w C. A jak zamienić go na bez coutów, cinów, new itp. staje się bezpieczny.
|
Wtedy dopiero zaczyna się kompilować w C. Tego nie rozumiem. Chciałbym przykładów, bo nie umiem sobie wyobrazić po prostu takiego przypadku, gdyż nie jestem zawodowym programistą.
|
Wszystko jest w linkach, nawet nie zajrzałeś. Ale jak ktoś się uczy podstaw i dopiero zaczyna i poznaje podstawowe rozwiązania algorytmiczne, to tego i tak nie ogarnie.
|
Pisania w czystym języku? Uważasz, że lepiej ogarnie temat jak mu je wymieszasz a potem powiesz, że to czego się nauczył to nie jest prawda? A poza tym, wciąż nie rozumiem dlaczego ta jakość ma spadać z powodu użycia kompilatora C++. Nie ogarniam tego koncepcyjnie.
|
C to nie C++ i C++ to nie C. W językach jest kilka ważnych różnic. Opisane są w linkach. 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.
|
Skoro używasz kompilatora C++ to po jaką cholerę uczysz się C? Ucz się C++. Nie alokujesz pamięci dynamicznie tylko używasz std::vector, nie zarządzasz pamięcią samemu tylko używasz inteligentnych wskaźników. Użycie tego jest naprawdę prostsze i bezpieczniejsze tylko profesorowie mają braki w tej wiedzy, bo C++ znają tak dobrze jak dobrze był przeprowadzony dwudniowy kurs na delegacji. Oczywiście generalizuje ale taki stan rzeczy jest strasznie powszechny. 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.
|
Nie musisz, ucz się C++. 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++?
|
Czego oczekujesz? Kod jest poprawnym kodem C++ i nie jest kodem C? Jeżeli sądzisz, że if jest z języka C to się mylisz. Bo składania if i wielu innych instrukcji jest taka sama w C, C++, C#, PHP, Javie i kilku innych językach. Instrukcje tego typu różnią między językami większe lub mniejsze detale. Jakie - musisz poszukać. Ale nie o tym mówimy. Wyśmiewałeś korzystanie z C++ jako z C z klasami.
|
Ponieważ C++ nie jest C. Różnice znajdziesz w linkach. No i tego nie ogarniam. Co to jest kod C w kodzie C++?
|
Kod C w kodzie C++ to jest np. kiedy zamiast bezpiecznych narzędzi (system wyjątków, inteligentne wskaźniki, kontenery) używasz rozwiązań analogicznych z C. 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.
|
Dostałeś linki. 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.
|
Tak samo dobrzy matematycy, inżynierzy, chemicy i biolodzy, jednak w przeciwieństwie do profesorów uczących programowania nie robią tylu przekłamań jeżeli w ogóle jakieś robią. Z mojego punktu widzenia same frazesy. Bo piszesz jakieś ogólne frazesy, a nie wiem jak to się ma do rzeczywistości.
|
Ponieważ nie starasz się nic zrozumieć. Dostałeś linki, dostałeś argumenty, nikt nie będzie w poście streszczał Ci kilkuset stron książek. Kiedy zrozumiesz, że łączenie języków jest złe to będzie za późno, będziesz musiał uczyć się wszystkiego od nowa. Pytasz o nie najprostszy temat, kłócisz się że masz rację a samemu potrafisz powiedzieć tyle, że nie widzisz problemu. Nie widzisz bo znasz za słabo oba języki a właściwie z tego co mówisz to nie znasz żadnego z nich bo nie potrafisz napisać kod poprawnego w C (bo potrafisz go używać tylko w połączeniu z C++). A jeżeli chciałbyś pisać program w C++ to używałbyś podejścia z C (brak obiektów, bo w C ich nie ma, brak STLa bo go nie ma). A dlaczego to jest złe? W linkach. że program się kompiluje, ale źle działa.
| C++: Safe to use longjmp and setjmp? Wektory na początek wydają mi się za skomplikowane[1].
|
Bo ktoś Ci tak powiedział i uwierzyłeś. Wektory zachowują się bezpiecznie w przypadku rzucenia wyjątku, uwalniają od ręcznej alokacji pamięci, ciężej popełnić błąd oraz oferują prosty i intuicyjny interfejs. edukacyjne C++ jako C z klasami
|
Ponieważ C++ to dużo, dużo więcej niż C z klasami. Ja tylko pytam, co złego jest w nauczaniu podstaw programowania i algorytmiki poprzez stosowanie języka C++ na poziomie zbliżonym do C?
|
Nie. Język ma swój styl. C ma swój styl a C++ ma swój styl. Możesz stosować C++ bez gadżetów, które oferuje ale w stylu języka C++ a nie C. żeby od razu nie zabić kogoś zawiłościami C, więc zabijanie go zawiłościami C++ dalej do niczego nie prowadzi.
|
To nauczymy go języka, który nie istnieje i nauczmy go złych nawyków. To do czegoś prowadzi! Rozbijasz się na tysiące różnych tematów i wątków, zadaj jedno konkretne i dobrze sprecyzowane pytanie w nowym wątku a otrzymasz satysfakcjonującą odpowiedź. |
|
pekfos |
» 2015-03-14 22:10:56 Miałeś w C konstruktory, destruktory, enkapsulację, itp..? | Nie miałem, ale jaki to ma związek ze zdaniem o wplataniu C w C++? |
Do czegoś to prowadzi..? Znowu zadajesz te same pytania. Pytać 'dlaczego?' można w nieskończoność.. int t[n]. Ale i to jest coś, co wyjdzie na etapie kompilacji, a cały czas był zarzut, że taki biedny, oszukany uczeń napisze pełen błędów program, który się skompiluje a będzie generował problemy w działaniu. |
Nie wyjdzie na etapie kompilacji, bo to zależy od kompilatora. 'Biedny, oszukany student' nauczy się na takim GCC, a jak będzie musiał zaliczać pod innym kompilatorem, to nagle nic nie będzie mógł zrobić, bo nauczył się niepoprawnie, na łasce niestandardowych rozszerzeń. |
|
tristan |
» 2015-03-14 22:19:44 Skoro używasz kompilatora C++ to po jaką cholerę uczysz się C? |
Po pierwsze, nie uczę się C. Po drugie, uczenie się C też ma sens, sam pokazywałeś zastosowania. Nie alokujesz pamięci dynamicznie tylko używasz std::vector, nie zarządzasz pamięcią samemu tylko używasz inteligentnych wskaźników. |
Po co w takim razie new i inne takie? Nie są zaszłością z C, bo ich w C nie ma. Nie widzisz bo znasz za słabo oba języki a właściwie z tego co mówisz to nie znasz żadnego z nich bo nie potrafisz napisać kod poprawnego w C |
Zależy jak bardzo zaawansowany. Nie jestem zawodowym programistą, umiem trochę, tyle ile potrzebne do bublesorta, szyfru cezara i jeszcze kilku innych tego typu ciekawostek. Ot tak na poziomie kursu Mirosława Zelenta. (bo potrafisz go używać tylko w połączeniu z C++). |
A to już sobie dopowiadasz sam. Nie wyjdzie na etapie kompilacji, bo to zależy od kompilatora. 'Biedny, oszukany student' nauczy się na takim GCC, a jak będzie musiał zaliczać pod innym kompilatorem, to nagle nic nie będzie mógł zrobić, bo nauczył się niepoprawnie, na łasce niestandardowych rozszerzeń. |
Witaj w realnym świecie. Ostatnio natknąłem się na kogoś, kto pomstował na MS Visual C++, które nie implementuje części standardu. Więc nawet jak się standardu naumiesz dokładnie, to możesz nagle się na takie coś natknąć |
|
Brunon3 |
» 2015-03-14 22:22:08 Eh... Jeżeli tak ostra argumentacja tak wielu doświadczonych w temacie osób do Ciebie nie trafia to ja już nie wiem co tu trzeba byłoby napisać... tyle ile potrzebne do bublesorta, szyfru cezara i jeszcze kilku innych tego typu ciekawostek. Ot tak na poziomie kursu Mirosława Zelenta. |
Czyli na niewielkim poziomie. Odpowiedź na Twoje wszystkie pytania, @tristan. :P (Niech nikt inny nie otwiera). -BD. |
|
pekfos |
» 2015-03-14 22:29:40 Po co w takim razie new i inne takie? Nie są zaszłością z C, bo ich w C nie ma. |
A jak w takim razie te gotowe funkcjonalności miały by być zaimplementowane..? umiem trochę, tyle ile potrzebne do bublesorta, szyfru cezara i jeszcze kilku innych tego typu ciekawostek |
A znasz cokolwiek poza tym..? Jak bierzesz początkującego osobnika, chcesz go uczyć podstaw, masz na to 30 godzin i masz nauczyć myślenia algorytmicznego i paru prostych algorytmów typu bublesort czy szyfr cezara, to bierzesz jakiś język, który się do tego nadaje. |
No różnią, ale C jest podzbiorem C++, jak celem jest zrobienie bublesorta, szyfru cezara i kilku innych |
Niech ci będzie. Nauczmy wszystkich studentów twojej prawdy - nauczą się pisać bubblesorta i szyfru cezara, oraz może da im to jakieś myślenie. O to chodzi w nauce programowania? By dać podstawy, które sprawdzają się tylko do tak prymitywnych zastosowań, bo przez 30h nauki nie dojdzie się do momentu, w którym zacznie się to sypać? Ot tak na poziomie kursu Mirosława Zelenta. |
Podobno niezbyt wysokim. |
|
Brunon3 |
» 2015-03-14 22:31:49 Umghm... Mam smutne wrażenie że nikt na tym forum (a dokładniej w tym temacie) nie zauważa moich postów... Przecież ja część tego co napisał w powyższym poście napisał @pekfos ja napisałem dwa posty temu, a @pekfos i tak to powtórzył, jakby mój post w ogóle nie istniał...
:(
-BD. |
|
1 2 3 4 5 « 6 » 7 8 9 |