Hej Bracia
Mam paroletnie doświadczenie w C++ i Qt oraz z IDE Visual Studio 6.0,2003 i 2008.
Jak trudne dla kogoś takiego jak ja będzie nauczenie się od podstaw C#?
Hej Bracia
Mam paroletnie doświadczenie w C++ i Qt oraz z IDE Visual Studio 6.0,2003 i 2008.
Jak trudne dla kogoś takiego jak ja będzie nauczenie się od podstaw C#?
A czy C++ było dla Ciebie do nauki trudne? Pewnie z początku tak, ale skoro umiesz programowac w C++, to zrozumienie C# nie będzie stanowiło problemu, tyle, że może Ci się z początku mylić, ale potem załapiesz co gdzie. C# działa troszkę inaczej więc będziesz musiał się przestawić na tą inność.
A czemu uciekasz od c++ ?:D
Nie uciekam bynajmniej,jednak Unity Engine C++ nie wspiera,ino C#,Javę albo Pythona.Mi zaś najbliżej chyba do C#
Nie pytaj się, tylko sam spróbuj :) od godziny 16:15 miałeś duuużo czasu na przetestowanie swoich możliwości. Ja mogę dodać, że C# jest bardzo dobrze zaprojektowany, z równie dobrą dokumentacją na MSDN i świetnym IDE - co czyni go jednym z najbardziej przyjaznych języków dla programisty :)
Akurat jestem zajęty game developmentem przy użyciu Unreal Development Kit,ale że tam co rusz coś w poprzek musi być,a dokumentacja w lesie,stąd razem z kolegą dumamy o zmianie enginu na Unity-i tylko do tego C# byłby mi potrzebny.Jednak decyzja o zmianie jeszcze nie zapadła,stąd i mój zapał do C# jest mocno umiarkowany.
Niemniej dobrze wiedzieć,że ów C# okazuje się być koszerny ;)
Jeżeli już cie interesuje game Dev to do C# polecam Xna i DirectX jakoś w C# dużo łatwiej było wszystko mi ogarnąć.
Co do samego C# język jak język każdy ma jakieś różnice,ale nie od razu chyba chcesz robić jakieś super rzeczy :). Samo to ze znasz już coś tam C++ ułatwia ci start.
Ja swego czasu się przesiadałem na C# po paroletniej praktyce w C++. Nie było z tym żadnego problemu. Na początku się człowiek trochę gubi przez brak wskaźników (w trybie zarządzanym ;)), ale to szybko mija. Ja jak nie muszę, to nie wracam już do C++.
No nic,dzięki Bracia za podzielenie się doświadczeniem.Zamierzam dziś jakąś księgę o C# sobie sprawić i nawet jeśli na Unity się nie przesiądę,to coś nowego poznam.
Brak wskaźników brzmi wprawdzie odstęczająco,a wręcz bluźnierczo,no ale obaczę jak to się sprawuje w praniu ;]
Czy mnie wzrok myli,czy w C# nie ma plików nagłówkowych i źródłowych jak w C++?
Nie ma bo po co? Są prawdziwe moduły jak we wszystkich nowych językach programowania.
winerfresh napisał(a)
Są prawdziwe moduły jak we wszystkich nowych językach programowania.
O ile COBOL, Fortran, ADA i LISP są nowoczesne. Pliki nagłówkowe posiadają tylko assemblery i pokręcone ośmiornice próbujące udawać, że są przenośnymi assemblerami. Programowanie w C++ jest równie zdrowe co seks analny z taboretem.
Czyli że co,w C# deklaracje funkcji składowych muszą znaleźć się w tym samym pliku co definicje?Bez sensu...
I moje 2 pytanie,czy to każdego składnika klasy muszę dawać określenie dostępu?Czy mogę sobie po bożemu definiować sekcje public: itd?
Czyli że co,w C# deklaracje funkcji składowych muszą znaleźć się w tym samym pliku co definicje?Bez sensu...
A po co dublować deklaracje???????
W C++ przy kompilacji każdego pliku trzeba parsować pliki nagłówkowe.
W C#/ Javie importuje się ze skompilowanych plików, więc parsowanie jest dużo szybsze, a co za tym idzie, kompilacja jest dużo szybsza.
Głównie dla uporządkowania wyglądu klasy-trafi się kilka funkcji po 20 i więcej linni,i już to słabo wygląda :/
Pewnie,Visual Studio będzie umiało zwinąć definicję do samej deklaracji,niemniej niesmak pozostaje.
No ale,skoro taka już uroda C# to cóż poradzić...
MasterBLB napisał(a)
Głównie dla uporządkowania wyglądu klasy-trafi się kilka funkcji po 20 i więcej linni,i już to słabo wygląda :/
Pewnie,Visual Studio będzie umiało zwinąć definicję do samej deklaracji,niemniej niesmak pozostaje.
No ale,skoro taka już uroda C# to cóż poradzić...
Dla porządku można grupować sekcje między #region i #endregion. Dalej można dzielić jedną klasę między plikami za pomocą słowa kluczowego partial. Poza tym ja daaaawno nie przeglądałem definicji, zazwyczaj wystarcza intelisense...
Poza tym ja daaaawno nie przeglądałem definicji, zazwyczaj wystarcza intelisense...
Dokładnie. Dwa kliki na klawiaturze i już mamy listę publicznych pól i metod. Pisząc w Javie/ C# przez większość czasu nie ma potrzeby przeglądania plików źródłowych z wykorzystywanych klas, a gdy jest potrzeba to właśnie po to, aby przejrzeć kod źródłowy.
Pośrednio przyłączam się do tematu, bo też chciałbym zacząć się uczyć programować w C#. Jakie środowisko polecacie? VS 2010 czy może starszy, a może to darmowe? Z resztą sobie poradzę tzn. nauką.
Hmmm a czy muszę u licha przy każdym składniku który chcę mieć publiczny walić to słowo kluczowe 'public'?Toż to fioła idzie dostać...
Nie ma jakiegoś sposobu,żeby zrobić po bożemu jako to w C++ jest,czyli wszystko poniżej 'public:' taki właśnie ma dostęp?
Nie ma sposobu, żeby zrobić to po "bożemu". Wg mnie właśnie w C++ jest gorsze rozwiązanie - widoczność składnika klasy zależy od tego w której części klasy jest umieszczony. To ma być w dobre? W C# definiujesz jawnie (explicte) i nie ma problemów. Możesz sobie uporządkować składniki klasy wg tego co robią, wg przeznaczenia, możesz umieścić je w sekcji #region
/#endregion
, możesz nawet je uporządkować alfabetycznie. Zauważ, że w tym ostatnim przypadku, nawet w C++ będziesz musiał umieszczać public:
/private:
przed nazwą składnika klasy , etc. etc.
MasterBLB: Widać, że znasz bardzo mało języków programowania, skoro czepiasz się o takie pierdoły. ATSD tak jak kubARek zauważył, ludzie piszący w językach innych niż C++ nie dzielą (sortują) funkcji na public/ private (tzn w sensie kolejności w pliku źródłowym) tylko względem wykorzystania. Funkcje prywatne są wykorzystywane przez funkcje publiczne z tej samej klasy i najlepiej, aby leżały sobie właśnie tuż obok tych publicznych funkcji, które z nich korzystają.
Czyli same plusy dla c# nad c++ ?:D
E, nie. C# ma swoje zastosowania, C++ ma swoje zastosowania. Nie ma tak, że same plusy czy minusy. Jak to mawiał tow. Wałęsa, są plusy dodatnie, są także plusy ujemne...
Oczywiście, że są minusy, np:
Porównanie wydajności Sun JVM i Mono: http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=all
Wiem, że Mono jest kulawe, ale tak czy siak C# na Windowsie jest wyraźnie wolniejszy od JVM na Linuksie.
Ta różnica wydajności jest na prawdę taka wielka, że wolicie c++?
Ta różnice zastępuje łatwość i szybkość tworzenia programów czyż nie?
kubARek napisał(a)
Nie ma sposobu, żeby zrobić to po "bożemu". Wg mnie właśnie w C++ jest gorsze rozwiązanie - widoczność składnika klasy zależy od tego w której części klasy jest umieszczony. To ma być w dobre? W C# definiujesz jawnie (explicte) i nie ma problemów. Możesz sobie uporządkować składniki klasy wg tego co robią, wg przeznaczenia, możesz umieścić je w sekcji
#region
/#endregion
, możesz nawet je uporządkować alfabetycznie. Zauważ, że w tym ostatnim przypadku, nawet w C++ będziesz musiał umieszczaćpublic:
/private:
przed nazwą składnika klasy , etc. etc.
Dla mnie takie coś lepsze,ale cóż,parę lat w C++ pisząc to ma się pewne nawyki i konieczność pisania wciąż public drażni.
Jeśli zaś o porządkowanie alfabetyczne idzie,to raczej działka IDE i podglądu klasy imo.
No nic,mówisz Bracie że się nie da,to pozostaje tylko westchnąć i zaakceptować ów standard.
Zależy od zadania. Np nie słyszałem o jakimś szeroko stosowanym programie do kompresji danych napisanym w C# czy Javie. W większości przypadków, ta kilkukrotna różnica w wydajności (2 - 5x) względem C++ jednak nie jest wielkim problemem. Sprzęt rozwija się szybciej niż oprogramowanie, często koszt wytworzenia oprogramowania jest wielokrotnie wyższy niż sprzęt.
No własnie więc 60 czy 55 fpsów w grach typu wow itd... nie robi wielkiej różnicy a za to pisze się o wiele przyjemniej i szybciej.
Po 30 minutach w c# spodobały mi się metody DateTime i SetCursorPosittion :P
Co do updaku Microsoftu to raczej się nie stanie a jeśli nawet to ktoś firmę a windows i tak będzie dalej.
Do tego c# na inne systemy np. linux - http://programmers.net16.net/2011/05/c-na-linuksie/ .
Gdy już zdobędę określoną wiedzę to będę szukać ofert pracy w kierunku gamedevu a nie do oprogramowywania statków kosmicznych gdzie zapewne liczy się każda setna sekundy i operacje bezpośrednio na procesorze.
ace4ur napisał(a)
No własnie więc 60 czy 55 fpsów w grach typu wow itd... nie robi wielkiej różnicy a za to pisze się o wiele przyjemniej i szybciej.
Po 30 minutach w c# spodobały mi się metody DateTime i SetCursorPosittion :P
Co do updaku Microsoftu to raczej się nie stanie a jeśli nawet to ktoś firmę a windows i tak będzie dalej.
Do tego c# na inne systemy np. linux - http://programmers.net16.net/2011/05/c-na-linuksie/ .Gdy już zdobędę określoną wiedzę to będę szukać ofert pracy w kierunku gamedevu a nie do oprogramowywania statków kosmicznych gdzie zapewne liczy się każda setna sekundy i operacje bezpośrednio na procesorze.
Uwierz, że nie są to różnice miedzy 60 a 55 fps... Poza tym prędzej ty zakończysz swój żywot niż MS upadnie :P
Cholera, rozpisałem się i mi wcięło posta :(
To jeszcze raz:
Nie chodziło mi o to, że MS upadnie, ale że upadną jego poszczególne produkty, co zmniejszy uniwersalność innych jego rozwiązań. Dla przykładu ichniejszy system na komórki/ tablety jest mało popularny i bardzo możliwe, że w ogóle zostanie wyparty. W takim wypadku C# w ogóle byłby na komórkę nieprzydatny. Już teraz chyba MS zarabia 2x więcej na licencjach swoich patentów użytych w Androidzie, niż na własnym systemie na komórki.
.NET działa dobrze tylko na Windowsie, jest dobrym wyborem, gdy chcesz właśnie pisać tylko pod Windowsa. Mono jest mocno do tyłu w stosunku do .NET.
Różnice w grach są na poziomie co najmniej kilkadziesiąt procent. Zatrudnienie dodatkowych kilku(nastu) programistów do zespołu (aby móc napisać grę w C++, zamiast C#) jest jedynym wyjściem, jako że gracze zwracają dużą uwagę na wydajność gry oraz zespół tworzący grę składa się i tak w zdecydowanej większości z nie-programistów. Tzn jeżeli chodzi o duże produkcje.
Jeżeli chodzi o gamedev to stosowany język zależy od skali gry:
A w przypadku statków kosmicznych nie liczy się tyle wydajność co bezbłędność. Ktoś tu podał na forum linka do historii typa, który wszystko pisał w Lispie, chyba nawet oprogramowanie do łazików czy podobnego typu urządzeń, ale w Googlu w końcu mu pokazali, że istnieją inne, równie (albo nawet bardziej) produktywne, bardziej nowoczesne języki.