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

C na linuxie

Ostatnio zmodyfikowano 2015-03-17 15:28
Autor Wiadomość
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.
P-128389
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. ;)
P-128390
akwes
» 2015-03-14 22:03:11

Czyli?

Jakie?
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ź.
P-128392
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ń.
P-128396
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ąć
P-128398
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.
P-128400
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.
P-128402
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.
P-128403
1 2 3 4 5 « 6 » 7 8 9
Poprzednia strona Strona 6 z 9 Następna strona