Artur Kęska

Artur Kęska Senior Software
Developer, XNet
Communications

Temat: Kurs programowania C++

Szymon Kubisiak:
Ja widzę rzesze ludzi wpychających procedury i zmienne do klas na siłę. Opakowują je staticami i się cieszą że mają piękny obiektowy kod, bo użyli "class".
Chamski global pozostaje chamskim globalem, obiektowy zapis służy większości tylko do ukrycia problemu. Wobec tego nawet myślenie proceduralne to już krok naprzód.

Od czego zaczynali???

: po co zaprzęgać skomplikowane technologie, skoro prostsze dają radę?

Hmm, OK, wszystko można przecież w assemblerze pisać ;-)
Nawet znam jedną dużą firmę, gdzie cały system gospodarki towarowej był napisany w HLASM - co rzecz jasna dowodzi Twojej teorii. Ale chłopcy z IBM po 50 latach wytłumaczyli im w końcu, że w Java będzie łatwiej :-)
Rzeczy czasem pozornie wydają się prostsze tylko dla tego, że już je znamy.

Co do przykładu z operatorami - tu się zgadzam w całej rozciągłości. Dla tego sugeruję naukę programowania przy użyciu języków obiektowych zaczynać od Java - co zresztą napisałem.
Ludzie którzy przechodzą z C do C++ na ogół doznają neofickiego zauroczenia wspaniałością dobrobytu składni, co oczywiście rodzi demony.

Co do MFC - święta racja. Dla tego polecam naukę na Qt. Prawdę mówiąc nawet Wx'y odradzam.
Szymon Kubisiak

Szymon Kubisiak Developer aplikacji
mobilnych Android

Temat: Kurs programowania C++

Artur Kęska:

Od czego zaczynali???

Biorąc pod uwagę fakt że nikt nigdzie nie uczy już C - na pewno nie od tego :)

Nie zrozum mnie źle, nie chodzi mi o pisanie w asemblerze skomplikowanego systemu rozproszonego. Chodzi mi raczej o Hello worlda zaczynającego się od "interface IWorld;" :)

http://www.ariel.com.au/jokes/The_Evolution_of_a_Progr...

To wbrew pozorom nie jest abstrakcyjny żart, w wielu firmach istnieje ogromna presja na używanie jakiejś technologii tylko dlatego że istnieje. W przypadku C++ wiele osób sądzi że C++ zastąpił C. Jest to równie błędna opinia jak to że C# zastąpił C++.

Ja po prostu uważam że naukę programowania obiektowego należy zacząć od wyjaśnienia że obiektowość nie jest cechą języka tylko sposobem myślenia. Kiedy się wie jak, wybór języka jest drugorzędny.Szymon Kubisiak edytował(a) ten post dnia 26.05.09 o godzinie 14:08

konto usunięte

Temat: Kurs programowania C++

Łukasz Cepowski:
Artur Kęska:
nie zaczynaj od C - okropne nawyki ludziom po tym zostają.

np jakie? ja bym powiedzial ze jest odwrotnie, naumie sie taki c++ a pozniej ciezko naklepac prosty szybki program w C, bo tu ani boosta ani nawet stl a o wskaznikach i alokacji pamieci pojecie blade :P
albo kluci sie ze w C nie da sie pisac obiektowo i dziedziczenia sie nie da zrobic :SŁukasz Cepowski edytował(a) ten post dnia 26.05.09 o godzinie 09:52


Na szczęście znam już podstawy języka C bo własnie w tym języku zrobiłem już troche programów choć nie były one zbyt złożone.
Myśle więc że nie będe miał większych problemów z zapoznawaniem się z językiem C++. Całe moje zainteresowanie programowaniem skłania się w kierunku pisania jakiś ciekawych programów inżynierskich z wykorzystaniem grafiki. Wydaje mi się że język C++ jest do tego najodpowiedniejszy, choć zdaję sobie sprawę że przydałaby się też mi chyba znajomość Fortrana. Głównym argumentem przemawiającym za tym jest to , że niektóre funkcje programu np. rysowanie wykresów jest znacznie łatwiej napisać w języku Fortrana niż w C++.W tym widze sens nauki innych jeszcze języków niż C++. Jezyk C++ jest za to ponoć dobry przy programowaniu grafiki :) Skłaniam się bardziej ku środowisku Eclipse CDT bo z tego co wiem łatwo kompiluje język Fortrana no i jest na bieżaco rozwijany.

Mam jeszcze jedno pytanie : czy wie ktos może czy Eclipse umie kompilowac kod źródłowy Matlaba tak jak Fortrana ?? Bardzo mnie to interesuje bo już pisałem troche na studiach w tym języku.

Co do książek typu "Symfonia C++" itp. to są one dobre do usystematyzownia wiedzy niż do początkowej nauki. Kolega mój twierdzi ze za dużo jest tam teoretycznych rozważan i wg niego pogubiłybym się w tym wszystkim a niestety nie moge zbyt wiele czasu poswiecic wyłacznie programowaniu. A sami wiecie : co nagle to po diable :) Doradza mi za to manuale a książki to już wtedy gdy bede chciał sobie usystematyzowac wiedze i ją pogłebic - wniosek : Te książki sa dobre gdy sie ma juz dośc duze doswiadczenie w pisaniu programów C++.

Co Wy o tym sądzicie ?? Prosze o podawanie argumentów za i przeciw. Chetnie poczytam sobie :)
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Kurs programowania C++

sciagnij kompilator, do tego jakis edytor, uruchom google i zacznij poprostu kodzic :P:)
Szymon Kubisiak

Szymon Kubisiak Developer aplikacji
mobilnych Android

Temat: Kurs programowania C++

No to wiesz już o składni prawie wszystko, teraz tylko się dowiedz jak "class" działa :)

Sądzę że lepiej poczytać sobie Grębosza, choćby do poduszki czy w tramwaju, niż manuale.

Środowisko (IDE) składa się z edytora, kompilatora i paru innych rzeczy. Jak chcesz możesz edytować choćby i notepadem, podobnie do prawie każdego IDE możesz "podpiąć" różne języki. Eclipse sam z siebie nic nie kompiluje ani nie obsługuje C(++) - to załatwia plugin CDT.

konto usunięte

Temat: Kurs programowania C++

Piotr Likus:
Paweł Bochacik:
Witam Was :)

Czy nie wie ktoś przypadkiem o jakichś w miare tanich kursach programowania w C++ lub w Fortranie na terenie Krakowa lub zna książki do nauki tych języków, które są godne polecenia dla mało zaawansowanych programistów ??

Jakie wg Was języki programowania są przydatne do opanowania i od czego zacząć naukę, by móc pisać samodzielnie proste programy inżynierskie ?

Coś na początek:
http://www.cplusplus.com/
http://www.developerfusion.com/tag/cpp/
http://www.cprogramming.com/
http://www.codeproject.com/ (zorientowane na Microsoft)
http://oreilly.com/pub/topic/cprog

Generalnie najłatwiej Ci będzie zacząć od Visual C++ 2008 Express.
Tylko jeśli użyjesz ich biblioteki GUI (MFC czy coś) to program nie będzie przenaszalny do innego systemu. Do GUI polecam biblioteki wxWidgets lub Qt.

Najlżejsze środowisko do ściągnięcia to Borland C++ 5.5 + jakiś edytor tekstowy. W sumie zamknie się w kilku MB.

Możesz też spróbować z Dev-C++, Eclipse CDT lub Netbeans C++, tylko że to duże pakiety.

Do zadań naukowych zwykle stosuje się Fortran, ale go nie znam, więc piszę o C++. Można jeszcze spróbować zabawę z Pythonem. Jest wiele narzędzi do szybkiego i łatwego złożenia rozwiązań naukowych w tym języku, ale nie wiem jak z jego wydajnością. Na pewno mniejsza od C++. W C++ za to będzie problem z wykresami (można się posiłkować biblioteką GD lub pakietem GnuPlot).

Zobacz:
http://www.scipy.org/Piotr Likus edytował(a) ten post dnia 23.05.09 o godzinie 10:05


Ciekawi mnie w jaki sposob mozna skorzystac np. w środowisku Eclipse z pakietu GnuPlot. Z tego co wiem to w GnuPlocie nie trzeba pisac kodu źródłowego tylko zadaje sie odpowiednimi poleceniami rysowanie wykresów o zadanym wzorze funkcji. W jaki sposób zatem można skorzystac z tej pomocy przy robieniu wykresów jaka daje GnuPlot przy pisaniu załóżmy jakiegos bardziej złożonego programu w C++?
Bede wdzieczny za wytłumaczenie bo ja niezbyt sie w tym orientuję.

Pozdrawiam Pana Piotrka
Artur Kęska

Artur Kęska Senior Software
Developer, XNet
Communications

Temat: Kurs programowania C++

Paweł Bochacik:
Mam jeszcze jedno pytanie : czy wie ktos może czy Eclipse umie kompilowac kod źródłowy Matlaba tak jak Fortrana ?? Bardzo mnie to interesuje bo już pisałem troche na studiach w tym języku.

Coś tam google wypluło: http://swik.net/matlab+eclipse

Co do Fortrana - parę lat temu jako student brałem udział w dużym projekcie inżynierskim gdzie pisano solver obliczeniowy właśnie w fortranie. Jeden z moich kolegów, po jakimś czasie się wnerwił i przepisał wszystko do C++. Dowiódł w ten sposób, że język jest marginalną sprawą w stosunku do rozumienia problemu (dla czego nas ten Formrtan denerwował to już inna sprawa).
Z resztą w tej chwili jest cała masa różnego rodzaju gotowców w C++, chociażby do obliczeń metodą elementów skończonych, czy tworzenia symulatorów automatyki. Niestety nie doradzę co, bo nie jestem w branży od lat, ale jeżeli masz poważne plany tworzenia czegoś w tym rodzaju, myślę, że wykorzystanie C/C++ to dobry kierunek.
Artur Kęska

Artur Kęska Senior Software
Developer, XNet
Communications

Temat: Kurs programowania C++

Paweł Bochacik:
Piotr Likus:
Paweł Bochacik:
Witam Was :)

Czy nie wie ktoś przypadkiem o jakichś w miare tanich kursach programowania w C++ lub w Fortranie na terenie Krakowa lub zna książki do nauki tych języków, które są godne polecenia dla mało zaawansowanych programistów ??

Jakie wg Was języki programowania są przydatne do opanowania i od czego zacząć naukę, by móc pisać samodzielnie proste programy inżynierskie ?

Coś na początek:
http://www.cplusplus.com/
http://www.developerfusion.com/tag/cpp/
http://www.cprogramming.com/
http://www.codeproject.com/ (zorientowane na Microsoft)
http://oreilly.com/pub/topic/cprog

Generalnie najłatwiej Ci będzie zacząć od Visual C++ 2008 Express.
Tylko jeśli użyjesz ich biblioteki GUI (MFC czy coś) to program nie będzie przenaszalny do innego systemu. Do GUI polecam biblioteki wxWidgets lub Qt.

Najlżejsze środowisko do ściągnięcia to Borland C++ 5.5 + jakiś edytor tekstowy. W sumie zamknie się w kilku MB.

Możesz też spróbować z Dev-C++, Eclipse CDT lub Netbeans C++, tylko że to duże pakiety.

Do zadań naukowych zwykle stosuje się Fortran, ale go nie znam, więc piszę o C++. Można jeszcze spróbować zabawę z Pythonem. Jest wiele narzędzi do szybkiego i łatwego złożenia rozwiązań naukowych w tym języku, ale nie wiem jak z jego wydajnością. Na pewno mniejsza od C++. W C++ za to będzie problem z wykresami (można się posiłkować biblioteką GD lub pakietem GnuPlot).

Zobacz:
http://www.scipy.org/Piotr Likus edytował(a) ten post dnia 23.05.09 o godzinie 10:05


Ciekawi mnie w jaki sposob mozna skorzystac np. w środowisku Eclipse z pakietu GnuPlot. Z tego co wiem to w GnuPlocie nie trzeba pisac kodu źródłowego tylko zadaje sie odpowiednimi poleceniami rysowanie wykresów o zadanym wzorze funkcji. W jaki sposób zatem można skorzystac z tej pomocy przy robieniu wykresów jaka daje GnuPlot przy pisaniu załóżmy jakiegos bardziej złożonego programu w C++?
Bede wdzieczny za wytłumaczenie bo ja niezbyt sie w tym orientuję.

Pozdrawiam Pana Piotrka

Jeżeli chodzi o proste wykresy, to może SVG Cie zainteresuje. Taki Eclispe + SVG Plugin może dać całkiem ciekawe efekty.
Artur Kęska

Artur Kęska Senior Software
Developer, XNet
Communications

Temat: Kurs programowania C++

Szymon Kubisiak:
>
Ja po prostu uważam że naukę programowania obiektowego należy zacząć od wyjaśnienia że obiektowość nie jest cechą języka tylko sposobem myślenia. Kiedy się wie jak, wybór języka jest drugorzędny.

O! I co do tego oczywiście pełna zgoda.

konto usunięte

Temat: Kurs programowania C++

Artur Kęska:
Paweł Bochacik:
Mam jeszcze jedno pytanie : czy wie ktos może czy Eclipse umie kompilowac kod źródłowy Matlaba tak jak Fortrana ?? Bardzo mnie to interesuje bo już pisałem troche na studiach w tym języku.

Coś tam google wypluło: http://swik.net/matlab+eclipse

Co do Fortrana - parę lat temu jako student brałem udział w dużym projekcie inżynierskim gdzie pisano solver obliczeniowy właśnie w fortranie. Jeden z moich kolegów, po jakimś czasie się wnerwił i przepisał wszystko do C++. Dowiódł w ten sposób, że język jest marginalną sprawą w stosunku do rozumienia problemu (dla czego nas ten Formrtan denerwował to już inna sprawa).
Z resztą w tej chwili jest cała masa różnego rodzaju gotowców w C++, chociażby do obliczeń metodą elementów skończonych, czy tworzenia symulatorów automatyki. Niestety nie doradzę co, bo nie jestem w branży od lat, ale jeżeli masz poważne plany tworzenia czegoś w tym rodzaju, myślę, że wykorzystanie C/C++ to dobry kierunek.

Z Twojej wypowiedzi wnioskuję że niezbyt dobrze wsponinasz Fortrana
W sumie to słusznie... jak ktos rozumie dobrze rozwiazywany problem to własciwie wszystko mozna napisac w języku C++ . Nasuwa mi sie tylko pytanie po co tworzyc setki linijek kodu rozwiazujac jakis problem jak mozna to zrobic w innym jezyku przystosowanym do rozwiazywania konkretnych problemów znacznie prościej i wygodniej.W tym tkwi przewaga znajomości kilku jęzków.
Obecnie raczej nie ma problemów z kompilowaniem kodu pochodzacego z róznych jezyków.
Wydaje mi się ze warto zatem nauczyc sie w moim przypadku Fortrana :) Choć przyznam ze moze byc z tym na razie problem ze wzgledu na zbyt ograniczony czas jaki moge temu poswiecic :\
Szymon Kubisiak

Szymon Kubisiak Developer aplikacji
mobilnych Android

Temat: Kurs programowania C++

Nie, nie warto. Fortran to archeologia. Niektórzy muszą konserwować napisane w nim programy - a Ty musisz?

Setki linii kodu tworzysz do wyważania otwartych drzwi. Znajomość wielu języków to jedno, a trzymanie w głowie słownika wszystkich funkcji z wszystkich bibliotek to drugie i tu żadna nauka nie pomoże, tylko lata praktyki.

Jak potrzebujesz czegoś stricte do wykresów, to excel i jaki tam język makr ma - niewątpliwie jest najbardziej przystosowany do tego zadania.Szymon Kubisiak edytował(a) ten post dnia 26.05.09 o godzinie 15:46
Artur Kęska

Artur Kęska Senior Software
Developer, XNet
Communications

Temat: Kurs programowania C++

Paweł Bochacik:
>
Z Twojej wypowiedzi wnioskuję że niezbyt dobrze wsponinasz Fortrana
W sumie to słusznie... jak ktos rozumie dobrze rozwiazywany problem to własciwie wszystko mozna napisac w języku C++ . Nasuwa mi sie tylko pytanie po co tworzyc setki linijek kodu rozwiazujac jakis problem jak mozna to zrobic w innym jezyku przystosowanym do rozwiazywania konkretnych problemów znacznie prościej i wygodniej.W tym tkwi przewaga znajomości kilku jęzków.
Obecnie raczej nie ma problemów z kompilowaniem kodu pochodzacego z róznych jezyków.
Wydaje mi się ze warto zatem nauczyc sie w moim przypadku Fortrana :) Choć przyznam ze moze byc z tym na razie problem ze wzgledu na zbyt ograniczony czas jaki moge temu poswiecic :\


To nie tak. Fajnie jest znać kilka języków programowania. Ktoś nawet powiedział, że trzeba się przynajmniej jednego rocznie uczyć, żeby nie zgłupieć - ale autor książki zarabiał na tym, że ludzie uczą się języków, więc trochę mam do tego dystans :-)

Z tymi językami specyficznymi dla domeny(zagadnienia) to jest trochę dziwnie. Niektórzy twierdzą, że zastosowanie odpowiedniego języka powinno w znacznym stopniu skrócić czas uzyskania rozwiązania. Kryje się tu jednak poważna pułapka. Otóż, nauczenie się każdego z tych języków zajmuje sporo czasu. Ponadto, często jest tak, że dobra znajomość jednego narzędzia pozwala na szybsze rozwiązanie problemu niż znajomość pobieżna dziesięciu.

Poza tym, akurat w twoim przypadku, skoro chcesz zacząć i chcesz budować coś konkretnego, zastosowanie Fortrana może mieć tylko charakter edukacyjny.

konto usunięte

Temat: Kurs programowania C++

Paweł Bochacik:
Ciekawi mnie w jaki sposob mozna skorzystac np. w środowisku Eclipse z pakietu GnuPlot. Z tego co wiem to w GnuPlocie nie trzeba pisac kodu źródłowego tylko zadaje sie odpowiednimi poleceniami rysowanie wykresów o zadanym wzorze funkcji. W jaki sposób zatem można skorzystac z tej pomocy przy robieniu wykresów jaka daje GnuPlot przy pisaniu załóżmy jakiegos bardziej złożonego programu w C++?
Bede wdzieczny za wytłumaczenie bo ja niezbyt sie w tym orientuję.

Mnie też to ciekawi, aktualnie robię w C++ pliki CSV które obrabiam potem w Open Office Calc. Niestety dobrych wykresów 3D w tym chyba nie zrobie. Co do GNUplot to znalazłem to:

http://ndevilla.free.fr/gnuplot/
http://code.google.com/p/gnuplot-cpp/

Przyjrzyj się jeszcze PLplot:
http://plplot.sourceforge.net/
Jakub L.

Jakub L. Programista

Temat: Kurs programowania C++

Szymon Kubisiak:
Nie, nie warto. Fortran to archeologia. Niektórzy muszą konserwować napisane w nim programy - a Ty musisz?

Podobno akurat do obliczeń numerycznych Fortran jest najlepszy, tak przynajmniej twierdzili znajomi którzy tego dotykali.

konto usunięte

Temat: Kurs programowania C++

Jakub L.:
Podobno akurat do obliczeń numerycznych Fortran jest najlepszy, tak przynajmniej twierdzili znajomi którzy tego dotykali.
W końcu powstał do obliczeń inżynierskich,
baaa... nawet widziałem program w visual fortranie co pozwalał anteny drutowe pojektować. :-)

konto usunięte

Temat: Kurs programowania C++

Kamil K.:
Jakub L.:
Podobno akurat do obliczeń numerycznych Fortran jest najlepszy, tak przynajmniej twierdzili znajomi którzy tego dotykali.
W końcu powstał do obliczeń inżynierskich,
baaa... nawet widziałem program w visual fortranie co pozwalał anteny drutowe pojektować. :-)

Coś w tym jest. Ale w obecnej formie C++ dogania Fortrana pod wzglęm wydajności (szablony, obliczenia w czasie kompilacji).
AMD do dzisiaj wypuszcza równolegle biblioteki dla Fortrana i C/C++.

W necie widzę że dyskusje na ten temat toczą się od dekad.
Pewnie jak nie spróbujesz sam to się nigdy na pewno nie dowiesz.

W Fortranie pewnie będzie zrobić ciężko poza obliczeniowe aspekty - grafika, GUI (to tylko gdybanie).

Przy okazji znalazłem coś takiego jak Fortress.
http://projectfortress.sun.com/Projects/CommunityPiotr Likus edytował(a) ten post dnia 27.05.09 o godzinie 09:34
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Kurs programowania C++

ktos mi ostatnio mowil ze do obliczeniowych rzeczy warto uzyc lispa / haskella ale nie moja dzialka i nie mam jak tego zweryfikowac :p
Piotr Likus:
W Fortranie pewnie będzie zrobić ciężko poza obliczeniowe aspekty - grafika, GUI (to tylko gdybanie).

a poco pisac gui w fortranie? zwykle ipc powinno wystarczyc :PŁukasz Cepowski edytował(a) ten post dnia 27.05.09 o godzinie 11:33

Temat: Kurs programowania C++

Do obliczen:

http://trilinos.sandia.gov/
http://www.mcs.anl.gov/petsc/petsc-as/

w C/C++ ze wsparciem MPI

konto usunięte

Temat: Kurs programowania C++

Łukasz Cepowski:
ktos mi ostatnio mowil ze do obliczeniowych rzeczy warto uzyc lispa / haskella ale nie moja dzialka i nie mam jak tego zweryfikowac :p

Języki funkcyjne (np. Haskell, F#) są dobre do oprogramowania maszyn wielordzeniowych/wieloprocesorowych. Po prostu filozofia języka funkcyjnego pasuje dobrze do równoległego przetwarzania. Ale C/C++ jeszcze nie umarły na tym polu (vide: CUDA).

Temat: Kurs programowania C++

Języki funkcyjne (np. Haskell, F#) są dobre do oprogramowania maszyn wielordzeniowych/wieloprocesorowych. Po prostu filozofia języka funkcyjnego pasuje dobrze do równoległego przetwarzania.
To nie do konca tak, ze kazdy jezyk funkcyjny dobrze pasuje, one tez sa "kierunkowane". Nie mowiac o tym, ze akurat Haskell i F# maja stosunkowo wolne implementacje. Typowym jezykiem ktory jest nastawiony konkretnie na srodowiska wielowatkowe jest Erlang.

Następna dyskusja:

Kurs języka C++




Wyślij zaproszenie do