ďťż
 
 
   Perl czy C++
 
 

Tematy

 
    
 

 

 

 

Perl czy C++





sojkin - 08-01-2010 11:30
Chciałbym zgłębić mroczną wiedzę z dziedziny programowania. Jakiś czas temu poznałem Delphi (pod windowsem) można powiedzieć ze podstawy ale mam już jakieś ogólne pojęcie o co w tym chodzi. Jako że nie pracuje już na Windowsie lecz staram się poznawać dogłębnie linuxa (mam debiana i ubuntu) chciałbym się nauczyć programować w jednym z języków wymienionych w temacie. Który z nich polecilibyście mi jako przystępniejszy dla żółtodzioba i wygodniejszy do pracy w tym systemie? Przejrzałem już parę kursów w internecie dość pobieżnie by móc ocenić różnice pomiędzy nimi i za bardzo nie wiem jakie wnioski wyciągnąć oraz ku któremu z nich się skierować. Może macie jakieś swoje kursy lub książki, które polecilibyście mi by móc zrobić jakiś pierwszy krok w poznaniu tych nowych terenów wiedzy ;)



tomek. - 08-01-2010 15:17
Ja polecam C/C++. Znam oba, ale wole C/c++. Dlaczego? Nie wiem. Co do książek - na początek Symfonia c++ pana Grębosza, później Thinking in c++ - nie pamiętam autora. Po tych dwóch pozycjach czytaj wszystkie kody źródłowe jakie Ci wpadną w rękę, czytaj też inną literaturę - coś o algorytmach itp.



sojkin - 08-01-2010 17:26
Które wydanie polecasz Symfonii polecasz? Jak zauważyłem dostępne są wersje trzy, dwu i chyba jedno tomowa.



jasiekmarc - 08-01-2010 18:15
To może i ja pozwolę sobie wyrazić opinię dotyczącą języków. Jest takie powiedzenie: „Potrzeba matką wynalazków”. Można je zastosować również w odniesieniu do programowania. Gdy chcesz pisać programy użytkowe albo rozwiązywać zadania z algorytmiki, niewątpliwie C/C++ jest wygodniejszy. Perl służy głównie do operowania tekstem, regexami i takimi rzeczami.

Chyba najlepiej poznać składnię C, poużywać trochę C++. Zacząć programować obiektowo, potem może trochę Javy. I jak już dobrze zrozumiesz, jak działają imperatywne języki programowania, to nawet Perl Ci będzie niestraszny.



sojkin - 08-01-2010 21:06
Dobra, wybrałem C++ zapoznam się z nim dokładniej i później zabiorę się za coś co będzie mi wtedy odpowiadało. Zdobyłem wspomniana wcześniej Symfonie C++ ale mam niestety problem juz na samym początku. Założyłem ze będę pisał w gVim + cvim i w Geany Pierwszy kod poruszony w książce to

#include <iostream.h>
main()
{
  cout << "Witamy na pokladzie";
} niestety po kompilacji w obu przypadkach otrzymuje błąd:

witamy.cpp:2:22: error: iostream.h: No such file or directory
witamy.cpp: In function 'int main()':
witamy.cpp: 6: error: 'cout' was not declared in this scope co robię źle?



jasiekmarc - 08-01-2010 21:20
Nie znam zestawu gvim + cvim, ale polecam proste rozwiązania. Musisz mieć zainstalowany kompilator g++. W edytorze (vim, gvim, kate, whatever) tworzysz plik cpp, a potem w konsoli włazisz do jego folderu i piszesz make nazwa_pliku_bez_rozszerzenia Make już sam dobierze niezłe parametry kompilatora (-o nazwa_pliku_bez_rozszerzenia) i skompiluje odgadnąwszy po rozszerzeniu, który kompilator ma dobrać.



sojkin - 08-01-2010 21:28
dokładnie ten sam błąd mi wyskoczył przy make a g++ mam już zainstalowane

W czym Ty programujesz?



jasiekmarc - 08-01-2010 21:34
Mhh. Mam dziwne wrażenie, że kompilując w gcc powinno się pisać
#include<iostream> a nie
#include<iostream.h> To drugie to jakieś takie borlandowe rozwiązanie.

Pytanie, w czym ja programuję dotyczy języka, czy edytora?

EDIT: Ach i jeśli używasz funkcji z biblioteki iostream, to musisz przed int main napisać using namespace std;



sojkin - 08-01-2010 21:39
ja przepisałem kod na żywo z książki bez żadnych przeróbek :/ moje pytanie tyczyło się edytora.

chyba poszukam jakiegoś innego wydania tej książki bo wydaje mi się ze może te jest jakieś stare bo co tu dużo mówić nie jest to książka z księgarni...



jasiekmarc - 08-01-2010 21:51
Moim zdaniem to nie jest najlepsza książka do uczenia się podstaw C++. Prawdę powiedziawszy nie wiem, czy jest jakaś dobra. Widziałem kiedyś taką fajną, małą, żółtą z Helionu ale nie pomnę autora i tytułu. Jak znajdę coś ciekawego w sieci, to dam znać. Najlepiej chyba, jeśli już wiesz, co to pętla, czym jest warunek itp. zobaczyć jak się pisze te rzeczy w C i próbować stawiać sobie samemu zadania (albo wyszukiwać już istniejące, na przykład na SPOJ-u ), a następnie robić kolejne kroki ku doskonałości rozwiązując je. Zawsze możesz dorwać jakiegoś znajomego i zarzucać go pytaniami (nie za wieloma jednak - trzymaj się zasady 'use google, luke'). A ewentualnie możesz pisać do takich ludzi, jak ja. Zawsze chętnie pomagam adeptom programowania na ile potrafię.

Używam głównie VIM-a i Kate'a. Vim jest świetny do programów opartych na pojedynczych plikach. Doskonale wcina, a jak coś się rozsypie, to zawsze można: ESC gg=G i vim naprawi.

Do projektów opartych na wielu plikach lepszy jest Kate, a czasem także używam QT-Creatora, który zna nazwy obiektów z bibliotek QT (do budowania okien między innymi).



sojkin - 08-01-2010 21:55
dzięki za pomoc, jutro skocze do księgarni i zobaczę co tam jest ciekawego. Po zakupie jakieś lektury "na czasie" zacznę od początku tymczasem trzeba spać ;)



lessmian2 - 08-01-2010 22:00
Programistą (zwłaszcza C++) nie jestem, ale:
#include<iostream>

a nie Kod:
#include<iostream.h>

To drugie to jakieś takie borlandowe rozwiązanie.
Pierwsze to składnia typowa dla C++, drugie dla C (niekoniecznie wynalazek Borlanda).


W edytorze (vim, gvim, kate, whatever) tworzysz plik cpp, a potem w konsoli włazisz do jego folderu i piszesz Kod:
make nazwa_pliku_bez_rozszerzenia

Make już sam dobierze niezłe parametry kompilatora (-o nazwa_pliku_bez_rozszerzenia) i skompiluje odgadnąwszy po rozszerzeniu, który kompilator ma dobrać.
Hę? ÂŻeby używać make, trzeba najpierw stworzyć plik Makefile. Bez tego to tak średnio zadziała.

Przykładowy kod: #include <iostream>

int main(){
        std::cout <<"Hello world!\n";
} Sposób kompilacji:
g++ -o test test.cpp
./test
Hello world! Tyle wiem i tym mogę się podzielić. Koniec OT :->



simonnam - 08-01-2010 22:10
A które wydanie Symfonii kolega kupił?



jasiekmarc - 08-01-2010 22:26
Szanowny lessmian'ie 2
Primo, W przypadku plików nagłówkowych rodem z STL-a (jak iostream) nie można mówić o składni C, gdyż są one narzędziem dostępnym jedynie w C++. Mam jednak wrażenie, że kompilator Borlanda (którego nigdy wszak nie używałem i znam tylko z książek) za poprawny uważa zapis #include<iostream.h> podczas, gdy gcc (czy tam g++) tego nie zaakceptuje.
Secundo, mam świadomość, że make jest potężnym narzędziem, które dzięki stworzeniu porządnego pliku Makefile pozwala wygodnie kompilować całe projekty. Nadaje się on jednak do kompilowania prostych jednoplikowych programów w wielu językach bez zastanawiania się nad rozszerzeniami, argumentami dla kompilatora (choć nigdy nie nakaże kompilatorowi optymalizacji ani nie pozwoli używać gdb - w takich przypadkach już wygodniej kompilować bezpośrednio) i bez tworzenia plików Makefile. Po prostu pełna automatyka. Jest to niewątpliwie nieco strzelanie z armaty do wróbla, ale jak akurat dysponujemy niezłą, szybkostrzelną armatą z darmowymi pociskami, to po co przeładowywać flintę za każdym razem?



piter - 08-01-2010 23:04
Jeśli piszesz w C++ pod Linuksem to kod programu i sposób kompilacji powinien wyglądać dokładnie tak jak napisał jak napisał lessmian2 . Ewentualnie możesz wpisać kod programu w ten sposób:
#include <iostream>
using namespace std;
int main()
{
  cout << "Witamy na pokladzie";
} A ja polecę Ci kurs dostępny w internecie: "Od zera do gier kodera" (znajdziesz go bez problemu w google).



lessmian2 - 08-01-2010 23:27
Kolego jasiekmarc,

nie unoś się tak, gdyż moim celem nie było wytykanie czyichś błędów (nie uważam się za osobę kompetentną w tym temacie), lecz podzielenie się moimi uwagami. Jak napisałem na samym początku, nie jestem programistą, więc mogę nie wiedzieć wszystkiego, lub czasem wręcz się mylić. Co do make, przyznaję, nie wiedziałem że tak można - po prostu nigdy nie było mi to potrzebne.

Co do składni include, nie miałem na myśli konkretnie iostream, a ogólnie zapis nazwy pliku nagłówkowego, który jednak różni się między C a C++ (upraszczając: z '.h' i bez).



AdeBe - 08-01-2010 23:32

jasiekmarc napisał/a:
#include<iostream>

a nie Kod:
#include<iostream.h>

To drugie to jakieś takie borlandowe rozwiązanie.

Pierwsze to składnia typowa dla C++, drugie dla C (niekoniecznie wynalazek Borlanda).

Mam jednak wrażenie, że kompilator Borlanda (którego nigdy wszak nie używałem i znam tylko z książek) za poprawny uważa zapis
Kod:
#include<iostream.h>
podczas, gdy gcc (czy tam g++) tego nie zaakceptuje.
Tu nie chodzi o kompilator, tylko o standard języka.
Wersja <iostream.h> to starszy standard, obecnie odradzany.
Wersja <iostream> to standard ISO z 2003 roku i należy programować według zasad tam zawartych.

Jeśli już ktoś chce się uczyć / polecamy mu Symfonię, to trzeba pamiętać, że ma to być wydanie z napisem ISO C++ na okładce. Uwaga praktyczna: ogólnodostępna na warezach wersja książki NIE jest zgodna z nowym standardem.
Oprócz sposobu włączania nagłówków, zmian jest wiele, a te na które najszybciej się natkniemy to różne operatory rzutowania: już nie (int *)zmienna, ale static_cast<int *>zmienna. Samych operatorów też jest więcej: static_cast<>, dynamic_cast<>, const_cast<>, reinterpret_cast<>. To tylko kilka różnic.

Przez odpowiednie parametry wywołania można gcc narzucić, której wersji standardu ma się trzymać.



jasiekmarc - 08-01-2010 23:39
Nie unoszę się absolutnie. Po prostu chcę zaznaczyć, że użycie make do kompilacji nie jest błędem, a, moim skromnym zdaniem, wręcz udogodnieniem. Robię tak zawsze i działa. W ten sposób, na przykład, pierwsza część wypowiedzi pitera, w której to czytamy: nie podoba mi się w tym sensie, że nazywa niektóre rozwiązania jedynymi słusznymi. W Co do kwestii nazywania include z .h i bez borlandowym albo c-style - jest to tylko kwestia kosmetyki i nomenklatury, nie zaś merytoryczna. Fakt faktem, że skądś w Symfonii się ta deklaracja wzięła i śmiem podejrzewać (na podstawie pewnych retrospekcji z książek) że jest to maniera borlandowa (albo nawet visualowa).

Edycja: W związku z fachową wypowiedzią AdeBe część o borlandzie itd. się zdezaktualizowała. Choć takie chamskie rzutowanie w starym stylu ciągle działa i nie sypie warningami, a jednak ,,include'' z .h nie kompilowało.



piter - 09-01-2010 01:23
jasiekmarc napisał:
No tak. Faktycznie tak to zabrzmiało, Już poprawiam:




sojkin - 09-01-2010 10:45
AdeBe ma racje. Przeszukałem inne fora i okazuje się ze mam po prostu stara książke, nie zgodną z obecnymi standardami. Zatem muszę znaleźć nowe wydanie symfonii "Symfonia C++ Standard" wydanie od 2006 roku, wtedy moje problemy powinny być unicestwione ;) tymczasem poczytam sobie wydane, które już mam by ogólnie dowiedzieć się jak wygląda C.

serdecznie dziękuję wszystkim za pomoc!



tomek. - 09-01-2010 20:17
Oczywiście polecam najnowsze wydanie Symfonii. Co do starszego wydania - na stronie pana Grębosza są zmodyfikowane według nowych standardów kody źródłowe zawarte w książce.

http://www.ifj.edu.pl/~grebosz/symfonia2004.zip
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis