Zaloguj się, aby obserwować  
Bartuc

Język C / C++ / C# / Java - pytania, problemy...

1979 postów w tym temacie

Mam pytanko, czy programowanie (c++) w Windzie różni się od programowania w Linuxie (Ubuntu konkretnie) , czy też bez oporów można programować na obu systemach bez zmiany nawyków pisania itd. ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Różnice są, ale dotyczą one głównie innego zapisu ścieżek w obu systemach. Sposób obsługi kompilatora też może być odmienny.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 18.09.2008 o 22:11, Treant napisał:

Różnice są, ale dotyczą one głównie innego zapisu ścieżek w obu systemach. Sposób obsługi
kompilatora też może być odmienny.


Nic poza tym, pisownia się nie zmienia ? np. korzystam teraz z darmowego Dev-C++ , i nie wiem czy korzystając z innego kompilatora w Ubuntu nie będę mieć problemów.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 18.09.2008 o 22:43, Logan10 napisał:

Nic poza tym, pisownia się nie zmienia ? np. korzystam teraz z darmowego Dev-C++ , i
nie wiem czy korzystając z innego kompilatora w Ubuntu nie będę mieć problemów.

Przecież to jest ten sam język. A obsługi innego kompilatora będziesz musiał się nauczyć.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 18.09.2008 o 22:43, Logan10 napisał:

Nic poza tym, pisownia się nie zmienia ? np. korzystam teraz z darmowego Dev-C++ , i
nie wiem czy korzystając z innego kompilatora w Ubuntu nie będę mieć problemów.

O ile będziesz się trzymał standardowych elementów języka (ANSI/ISO), to jedynym problemem może być tylko zapis ścieżek, jak napisał Treant.
Jeżeli pisałbyś niskopoziomowo (na przykład sterowniki), to używasz praktycznie zupełnie innych bibliotek.
Co do kompilatora, a raczej środowiska IDE (bo to nie to samo), to zawsze musisz nauczyć się obsługi. Prawdopodobnie jednym z lepszych wyborów jest wrzucenie sobie IDE Eclipse z pluginami do C++ i odpowiedni do niego kompilator (obsługiwana jest większość). Pozostaje jeszcze kwestia linkera. W części systemów jest jednym z poleceń w innych jest częścią pakietu kompilatora, a w zintegrowanych IDE jest jednym z jego elementów.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zaczynam uczyć się C++ i już na początku mam problem, mianowicie, jak wstawić do programu znak | ? Po normalnym wpisaniu pojawia się jakby dwukropek. Problem pewnie banalnie prosty do rozwiązania, ale ja naprawdę tego nie umiem zrobić ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.09.2008 o 17:17, tomas92 napisał:

znak | ? Po normalnym wpisaniu pojawia się jakby dwukropek. Problem pewnie banalnie prosty do rozwiązania, ale ja naprawdę tego nie umiem zrobić ;)

- Nic nie trzeba rozwiazywac, on tak po prostu wyglada :) Zamiast jednej, jednolitej kreski | czesto wyswietlany jest jako dwie rozdzielone, podejrzewam, ze wszystko zalezy od uzywanej czcionki, choc nigdy sie w to nie wglebialem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zastanawiam się jak szybko, przeciętny programista pisze dany program :-) Powiedzmy że taki informatyk wymyślił sobie jakiś przeciętnie trudny program i chce go teraz napisać. Siada więc przy klawiaturze i zaczyna pisać: A) Nie widać nawet na jakie klawisze naciska, a na monitorze pojawiają się kolejne wersy programu; B) Pisze kilka wersów ze średnią prędkością, po czym chwile myśli, znowu pisze kilka wersów, sprawdza swoje zapiski na monitorze, znowu kilka wersów i znowu sprawdza swój program. I tak kilkadziesiąt razy (albo i więcej - nie wiem :-). C) Pisze z dużą prędkością (tak jak by przepisywał dobrze znany list od babci), po kilkudziesięciu sekundach sprawdza, znowu pisze z dużą prędkością, sprawdza, znowu pisze i tak kilka razy po czym program gotowy.
Które z powyższych odpowiedzi jest najbardziej prawidłowa? Wiem że to zależy głównie od informatyka [ale napisałem - przeciętnego, nie kiepskiego i nie super-maniaka], ale nie wiem czy nie jest tak jak w pkt. A i C, czego w odniesieniu do mnie raczej sobie nie wyobrażam. Myślę że jakbym nauczył się danego języka (chodzi o Java, C++) to mimo to dalej musiałbym sporo myśleć co napisać [każdy musi pomyśleć, tylko chodzi mi o to czy będzie myślał w 0,1 sekundy czy zajmie mu to trochę więcej] i czy to będzie dobrze, potem coś wstukać, i sprawdzić - to zajmuje trochę czasu. Na kilku filmach [pewnie sporo przesadzonych, ale to się okaże] widziałem jak niektórzy maniacy nie nadążali za wystukiwaniem kolejnych wersów, a programy robili -wydaje mi się - dobre... (a może to wcale nie były programy? no nie wiem - to jest tylko przykład). Pytam z ciekawości, nurtuje mnie to od jakiegoś czasu bo widząc moich znajomych którzy też uczą się różnych języków (akurat są to: flash i c++), programy idą bardzo opornie, nie są co prawda informatykami, ale informatycy to też ludzie (więc ile razy szybciej mogą tworzyć swoje dzieła? pewnie różnica nie jest aż taka wielka). Ponadto trzeba czasem zaglądnąć do podręcznika, sprawdzić "jak to się robiło", i kontynuować tworzenie wersów. Czy "zawodowi" programiści mają tak samo? Dzięki za odpowiedzi.

PS Trochę się rozpisałem, myślałem że sformułuje pytanie trochę krócej, ale ostatecznie to wyraża wszystkie moje wątpliwości :-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak ja pracowałem jako taki raczej początkujący programista, to wyglądało to tak, że najpierw zastanowiłem się co chcę osiągnąć, potem w jaki sposób (znaczy najpierw stworzyłem schemat blokowy programu) a potem realizowałem poszczególne bloki, w sposób, ze myślisz jak (jeśli bardziej skomplikowany to myślisz dłużej) a potem piszesz to, kompilujesz i sprawdzasz dlaczego nie działa (jest takie powiedzenie, że jeśli program się kompiluje za pierwszym razem to albo nie działa a jak działa to daje na pewno złe wyniki). Jak program jest bardziej rozbudowany, to dzieli się go na kilka mniejszych programów, które osobno stanowią zamkniętą całość, testuje się je a potem składa w jeden duży. Ogólnie to wygląda tak, że pisanie zajmuje moim zdaniem mniej jak 50% czasu tworzenia programu, w pozostałym szukasz błędów i obmyślasz rozwiązania, albo ulepszenia, żeby działało szybciej.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.09.2008 o 20:57, Nufiko napisał:

/.../


No to nie jest tak źle :-) A jeśli chodzi o wiedzę matematyczną i takie tam zagadnienia, to czy powinno się być niezłym matematykiem żeby pisać w miarę szybko i dobrze programy? Czy po prostu wystarczy kreatywność i dobra znajomość danego programu, którym się posługujemy? Nie do końca wiem jak jest z tą matematyką, jak jest ktoś z niej średni, to czy poradzi sobie z pisaniem zaawansowanych (jak można wywnioskować z twojej odpowiedzi - "wieloblokowych") programów? Czy ta wiedza jest raczej "miłym dodatkiem"?
Jak teraz radzisz sobie z takimi "wieloblokowymi" programami? Odniosłeś się do przeszłości, więc teraz pewnie piszesz o wiele szybciej, i zapewne lepiej? :-)
Ile zajmowało ci napisanie takiego kilkunasto-blokowego programu (a la takiego jak opisałeś)? Chodzi mi raczej o godziny, bo dni często "kłamią", w końcu zależy o której się wstało, jak długo pisało się sam program, kiedy poszło się spać itd.
Co to jest dokładniej „schemat blokowy programu”? Jak się go robi?
Dzięki za odpowiedź :-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.09.2008 o 20:41, marcin1930 napisał:

Ponadto trzeba czasem zaglądnąć do podręcznika, sprawdzić "jak
to się robiło", i kontynuować tworzenie wersów. Czy "zawodowi" programiści mają tak samo?


Zawodowy programista stuka zwykle juz w jednym jezyku ciagle podobne rzeczy, wiec rzadziej spoglada do ksiazki ;) Szybkosc pisania zalezy od wielkosci projektu i sposobu zabrania sie do niego (a takze tego co aktualnie sie pisze). Duze programy najpierw sie projektuje. Jak klasy sa juz utworzone (w duzym stopniu jest to realizowane przez programy projektowe) to programiscie pozostaje wklepanie kodu bez szczegolnego myslenia (co jest szybkie ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.09.2008 o 21:48, Volvox napisał:

/.../


A jak jest z zapominaniem komend itp. podczas odstępu czasowego w programowaniu? To może być uciążliwe...

@Nufiko
Mimo tego posta nadal czekam na twoją odpowiedź :-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zapytam się jeszcze tutaj.
OK, myślę, że już pora zająć się poważniejszym językiem niż Basic (no co, każdy o czegoś zaczynał:) ). Wybór padł na język z rodziny C. Tylko co polecacie dla początkującego (załóżmy, że ma to być dobre nawet dla osoby, która w życiu nie programowała)? C, C++, C#? Docelowo chcę pisać w C++. Jakaś propozycja literatury do kupienia byłaby mile widziana.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

znajomość matematyki wystarcza na poziomie w miarę podstawowym. Najtrudniejsze działania ocierają się o mnożenie i dzielenie, ale to trzeba umieć rozpisać inne działania np logarytmy.
Ja pisałem program w sumie nie tak dawno na mikroprocesor ARM. Był to dla mnie zupełnie nowy procesor i trzeba było poznać rejestry i jak użyć jakąś składową tego mikroprocesora. Program pisałem ok miesiąc, używając czasem już dostępnego kodu np do obsługi karty Flash razem z systemem plików. Sporo czasu poświęciłem na czytanie dokumentacji urządzeń które były dołączane do mikroprocesora (np przetwornik AC) aby móc poprawnie zinterpretować odczytane wyniki. pracowałem 8 godzin dziennie i nikt nie kontrolował co w danym czasie robiłem ale szacuję, że na projekt poświęcałem ok 6 godzin dziennie pozostały czas to przerwy np na śniadanie). Ciężko mi powiedzieć czy teraz pisze szybciej bo ta praca była na wakacje.
Schemat blokowy to zamykasz program w bloczki w których piszesz np że tu robisz odczyt z klawiatury a tu wysyłasz dane przez sieć, a tu masz program który zarządza co się w danej chwili dzieje. Każdy taki bloczek można rozpisać na mniejsze, np orzy klawiaturze: czekasz na pojawienie się znaku odczytujesz go i interpretujesz, wynik wysyłasz do programu głównego. I można to rozpisać jż niemalże na komendy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.09.2008 o 22:50, Nufiko napisał:

/.../


Aha, dzięki. Teraz już wiem wszystko co chciałem wiedzieć o pisaniu programów :-).

Zastanawia mnie również jaką pracę ma administrator sieci? Niektórzy mówią że siedzą powiedzmy po 12 godzin, i cały czas mają zajęcie. No dobra, ale co właściwie robią? Rozumiem że jak się coś zepsuje, to trzeba naprawić, ale na ogół niewiele się psuje w ciągu 12 godzin... Wiem że napisałem to trochę ironicznie, bo pewnie administrator robi o wiele, wiele więcej. Chciałbym dowiedzieć się co taki "admin" robi? Ponoć czasem musi nawet programować :-).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.09.2008 o 22:17, marcin1930 napisał:

A jak jest z zapominaniem komend itp. podczas odstępu czasowego w programowaniu? To może
być uciążliwe...


To jak z nauka jezyka obcego. Na poczatku wydaje sie, ze tych slow tak duzo i ciezko je zapamietac, a po pewnym czasie wiele rzeczy wydaje sie takich latwych ze hej. Oczywiscie czasem sie cos zapomni, ale zwykle jest ksiazka, interent albo help ;)
Dodatkowo obecne edytory maja duzo opcji ulatwiajacych pisanie kodu. Podpowiadaja komendy czy nazwy zmiennych, oraz argumenty do funkcji (no i jeszcze latwo dostepny help ;)

Dnia 24.09.2008 o 22:17, marcin1930 napisał:

A jeśli chodzi o wiedzę matematyczną i takie tam zagadnienia, to czy powinno się być niezłym matematykiem
żeby pisać w miarę szybko i dobrze programy?


Zalezy co programujesz. Prorgamy biurowe raczej nie wymagaja trudnej matematyki (no te rachunkowe troche, ale bez przesady). Gorzej jest z grafika (zwlaszcza 3D) oraz roznego rodzaju symulacjami. Tu bez matmy ani rusz (ale matma jest potrzebna w fazie projektowania, bo pozniej to juz samo klepanie kodu).

Dnia 24.09.2008 o 22:17, marcin1930 napisał:

Zastanawia mnie również jaką pracę ma administrator sieci? Niektórzy mówią że siedzą powiedzmy po 12
godzin, i cały czas mają zajęcie.


Pewnie wliczaja siedznienie na Onecie do tych zajec ;)
A powaznie to roznie bywa - zalezy na jakim stanowisku sie pracuje. Czasem trzeba prze/zaprojektowac siec, wykonac pomiary obciazenia sieci, zainstalowac nowe uslugi, ustawic firewalle, updatowac oprogramowanie, dodawac konta dla uzytkownikow.
Jak wszedzei takze i tu mozesz trafic do firmy gdzie bedziesz latal przez caly czas, ale sa tez firmy gdzie bedziesz grac w WoW i czekac na awarie ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.09.2008 o 22:32, Łowca Gier napisał:

Docelowo chcę pisać w C++. Jakaś propozycja literatury do kupienia byłaby mile widziana.


No to w sumie juz wybrales w czym chcesz programowac ;) A lektura? Hmm... Moze Symfonia C++? Najbardziej populrana, obszerna i niedroga ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.09.2008 o 23:03, marcin1930 napisał:

Zastanawia mnie również jaką pracę ma administrator sieci?

Nierówną. Często są to rutynowe działania i pomoc użytkownikom, gdy trafią na coś, co wykracza poza ich zdolności lub coś sknocą, ale zdarzają się takie okropne dni, gdy padnie jakiś ważny serwer i firma stoi, dopóki się go nie naprawi.
Miałem ciekawą sytuację w sierpniu: wszystko działało jak trzeba, zadbałem aby żadne problemy nie pozostały bez rozwiązania, zanim pójdę na urlop, a tu pierwszego dnia, gdy jechałem pociągiem telefon z pracy, że jeden z komputerów "się popsuł". Po niedługim czasie (ze dwa dni) problemy z serwerem - już prawie mnie chcieli znad morza ściągać. Tydzień później byłem już w pracy i potrzebowałem jednego dnia na usunięcie obu awarii (w tym jedna reinstalacja systemu, bo "użyszkodnicy" próbowali naprawić komputer na własną rękę). Od tamtej pory nie ma większych turbulencji - co poniektórzy twierdzą, że komputery się mnie boją i działają poprawnie, gdy jestem w pracy, a gdy mam wolne - harcują.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

> Tylko co polecacie dla początkującego (załóżmy, że ma to być dobre nawet dla osoby, która w życiu nie programowała)? C, C++, C#?
C#, albo Java. Można też ruszyć Ruby''ego. Jak ścigać się z czasem to na skróty. C nie bardzo bo jaka jest szansa, że będziesz pisał sterowniki lub grzebał w jądrze systemu operacyjnego? Niemal żadna. C++ - dzisiaj standard, ale oznacza to dokładnie język przestarzały. C++ nie ma wielu oczywistych konstrukcji semantycznych jak na język w 21. wieku i bije go każdy nieco nowszy język. Jedynym co obecnie może się pochwalić C++, to olbrzymia biblioteka oprogramowania oraz wciąż jedna z najlepszych wydajności kodu wynikająca z wieloletnich optymalizacji kompilatorów. Ale na wydajność programisty nie działa już tak zbawiennie.
C++ ma kilka zasadniczych wad, które się ignoruje, ale które kosztują.
- Po pierwsze legendarnie nieczytelny zapis kodu C został pogłębiony jeszcze bardziej przez redefiniowanie operatorów, typy szablonowe i kompletnie nieczytelny zapis kodu mający w założeniu być przenośnym.
- Po drugie fatalna obsługa takich rzeczy jak tablice. Najprościej w ogóle zapomnieć o konstruowaniu za ich pomocą bardziej skomplikowanych obiektów niż jednowymiarowe proste kontenery. Po prostu nie warto tracić czasu.
- Po trzecie niesamowicie prymitywna jak na obecne czasy koncepcja plików z kodem i deklaracjami nagłówkowymi. Praktycznie wszystkie nowsze języki odeszły od tej koncepcji bo jej realizacja jest męcząca do utrzymywania kodu jako spójną całość.
- Preprocesor, który 20/30 lat temu był innowacją obecnie jest w takiej postaci raczej garbem. Ma on mnóstwo ograniczeń, które skutecznie utrudniają budowę dużych projektów.

Języki, które postały w ostatnich latach nie mają tego typu wad. Wydajność kodu jest zaledwie o 30-50% niższa, a wydajność programisty lepsza o 200-500%.
Prawda jest taka, że nawet dzisiaj można programować w Moduli7, Fortranie, Algolu czy Adzie. Podobnie będzie niedługo z C++. Są już lepsze języki, które mają więcej zalet niż wad w stosunku do niego.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 25.09.2008 o 00:44, Treant napisał:

/.../


Aha, no to wygląda na to że praca programisty jest trudniejsza, a zarobki są podobne - jak to jest naprawdę? Czytałem kilka artykułów, stąd ta [mylna/prawidłowa - niepotrzebne skreślić] wiedza :-) Zastanawiam się też co taki admin musi umieć? Przecież języki a la C++/Java nie są mu za bardzo potrzebne, więc tutaj wiedza powinna iść w innym kierunku. Pytanie jeszcze w jakim, bo wiedzę "Co zrobić gdy komputer się zbuntuje?" nabywa się poprzez praktykę...

Dnia 25.09.2008 o 00:44, Treant napisał:

co poniektórzy twierdzą, że komputery
się mnie boją i działają poprawnie, gdy jestem w pracy, a gdy mam wolne - harcują.


Skąd jak to znam? ^^ Z drugiej strony czasem jest tak że komputer policzy 2+2=5 i nikt nie jest winny.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować