Nauczenie się C#

0

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#?

0

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ść.

0

A czemu uciekasz od c++ ?:D

0

Nie uciekam bynajmniej,jednak Unity Engine C++ nie wspiera,ino C#,Javę albo Pythona.Mi zaś najbliżej chyba do C#

0

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 :)

0

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 ;)

0

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.

0

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++.

0

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 ;]

0

Czy mnie wzrok myli,czy w C# nie ma plików nagłówkowych i źródłowych jak w C++?

2

Nie ma bo po co? Są prawdziwe moduły jak we wszystkich nowych językach programowania.

1
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.

0

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?

0

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.

0

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ć...

1
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...

2

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.

0

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ą.

0

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?

2

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.

2

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ą.

0

Czyli same plusy dla c# nad c++ ?:D

1

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...

0

Oczywiście, że są minusy, np:

  • szybkość: .NET jest wolniejszy od C++, wolniejszy nawet od typowych JVMów, w niektórych sytuacjach dość mocno,
  • pisząc w C# jesteś skazany na MS - jeśli MS odstawi jakąś chałę to niestety tobie też to zaszkodzi,

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.

1

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?

0
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.

0

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.

1

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.

0
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

2

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:

  • minigierki: Java ME (powoli wymiera), Java na Androida, Objective-C na iPhone, C++ (na chyba wszystkie smartfony), C# na Windows Phone (ale tu jest mały rynek), Flash
  • duże, kasowe gry (czyli przede wszystkim konsolowe/ porty z konsol): tylko i wyłącznie C++ (jak już wcześniej napisałem), nawet Xbox exclusive,

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1