Początkujący... Wybór języka.

0

Witam was bardzo serdecznie.
Przeglądam różne fora,portale o programowaniu czy też inne strony na których pojawiają się podobne problemy jednak każdy przypadek jest inny ;p

Tak więc chciałbym się was PORADZIĆ w sprawię wyboru języka.
__
Na wstęp powiem, że mam dopiero 17 lat(Po wakacjach II kl. Technikum Inf.) czyli jeszcze 3lata TI + po tym studia (4(?) lata) ta więc czasu na naukę i pogłębienia wiedzy, napisania czegoś fajnego będzie sporo.

Na oku mam takie języki jak C++,C#,JAVA.
Rozumiem, że każdy język jest do "czegoś" jednak ja nie chcę wyspecjalizować się np. w gamedevie tylko chciałbym też np. poza gierkami pisać aplikacje które łączą się ze stronami internetowymi,komunikatory,programy biurowe ogólnie wszystko.
Oczekuję od języka żeby był rozwijany... Miał mocne plecy i wielofunkcyjność jak też jakąś prostotę.
_
Jakieś tam pojęcie o programowaniu mam co i jak oraz po trochu z każdego języka głównie składnia ale też co wnosi itd...

Jak ja to widzę:
C++: Bardzo często polecany,mocne plecy, pełno dokumentacji,silników,bibliotek graficznych, wieloplatformowość.

C#: Plecy(M$), przede wszystkim nowszy(lepsze rozwiązania,technologie?) plusy jak linq,ASP,ADO. Niestety na linuxa podobno mono niezbyt funkcjonalne. Ale za to możliwość XBOXa i Windows Mobile.

JAVA: Poza wieloplatformowością nie mogę dużo powiedzieć ponieważ znam tylko składnie.
_
Wyczytałem gdzieś, że c++ wprowadzał do obiektywności a c# jest już na niej zbudowany.
Ale też pojawiły się ciekawe informacje głównie od forumowiczów że c# nie jest w ogóle potrzebny w końcu to samo można osiągnać w c++ z lepszą wydajnością i dokładnością a c# jest takim sobie nie potrzebnym, nic nowego nie wprowadzającym wytworem marketingowym microsoftu.

0

@O_o - nie przesadzasz lekko? Nauczenie się składni pierwszego języka w stopniu umożliwiającym napisanie kalkulatora bez patrzenia do książki zajmie (spokojnym tempem) jakieś IMO 2 tygodnie.

Wyczytałem gdzieś, że c++ wprowadzał do obiektywności a c# jest już na niej zbudowany.

C++ jest bardzo obiektywny, za to jego fanboye niekoniecznie (chodziło Ci o obiektowość która w C++ jest zresztą dość umowna). C++ dzisiaj coraz bardziej przestaje być językiem ogólnego przeznaczenia (a co tam, już przestał) i staje się językiem niszowym do sytuacji wymagających wysokiej wydajności albo niskiego zużycia pamięci.

C# i Java są dość podobne w zastosowaniach. Ja osobiście wolę i używam głównie C# ale Javie trzeba przyznać że jest bardziej otwarta. Z drugiej strony Java ma kilka cech które są po prostu pomyłką, np. boxing prymitywów w kolekcjach czy type erasure. Java jest też starsza co znaczy że z jednej strony ma większy support ale z drugiej strony ciągnie większy bagaż wstecznej zgodności.

Rozumiem, że każdy język jest do "czegoś" jednak ja nie chcę wyspecjalizować się np. w gamedevie tylko chciałbym też np. poza gierkami pisać aplikacje które łączą się ze stronami internetowymi,komunikatory,programy biurowe ogólnie wszystko.

C# z Javą się nadają do aplikacji desktopowych i mobilnych. Podobno C# z ASP.NET jest bardzo dobry do tworzenia aplikacji internetowych (sam nie piszę takowych). C++ jest obecnie praktycznie jedynym językiem używanym do komercyjnego tworzenia gier ale jak będzie za 10 lat - nie wiadomo. Pisanie sterowników i innych niskopoziomowych rzeczy zostanie prawdopodobnie domeną C/C++ chyba że Microsoft opanuje świat swoim Singularity (system tworzony w czystym .NET, omijający fakt że system musi być bootowany z kodu natywnego dla procesora (a nie pośredniego jak Java i C#)).

Jedynego słusznego wyboru Ci nie podam, zdecyduj sam co chcesz robić. Zawsze możesz też nauczyć się kolejnego języka jeśli stwierdzisz że warto.

2

W większości postów ludzie będą polecać ten język, w którym sami programują. Aktualnie na studiach zaczyna się od C++. Myślę, że w tym przypadku (C++, C#, Java) bez względu na wybór powinieneś być zadowolony. Jednak jeżeli zależy Ci na wieloplatformowości to C# wydaje się być średnim wyborem, Java najlepszym, a C++ pośrednim.

2

A ja będę powtarzał żeby uczyć się programować w ogóle a nie tylko języków programowania.
To tak gdyby ktoś zadał pytanie: Chcę być cieślą, który młotek mam używać? I kupi sobie młotek, będzie walił w gwoździe ale żaden dach z tego nie powstanie.

1

A ja zaproponuję coś innego. Rozumiem, że wątkotwórca nigdy nie programował, zatem na początek polecam jakiś język wyższego poziomu, aby zapoznać się ogólnie z pisaniem programów i algorytmami. Do tego bardzo dobrze nadaje się Python - liźnie się idei programowania obiektowego, można się nauczyć trzymania porządku w kodzie, a sam język i "baterie" pozwolą skupić się na rozwiązywaniu problemów przy użyciu programów, a nie na walce z zarządzaniem pamięcią, wskaźnikami, referencjami, czy z pozoru niezrozumiałymi komunikatami błędów kompilatora. Po tym można wejść w C++, Javę i/lub C#. Będzie znacznie łatwiej, mniej stresująco i zniechęcająco. Problemem tutaj jest czas potrzebny na naukę, który przy rozpoczynaniu od języka wyższego poziomu może się znacznie wydłużyć. Efekty za to mogą być znacznie lepsze.

1

Napisałem, że już trochę pojmuje programowanie. Nie jestem totalnie początkujący rozumiem mniej więcej działają wskaźniki,klasy jak to jest z pamięcią przy typach danych.

Konsolowy kalkulator w c++ bym napisał.

Wieloplatformowość odgrywa duża role jednak sama platforma jaką jest windows i xbox zadowala.

Oczywiście dobrym rozwiązaniem jak mówicie jest nauczenie się tych 3 języków i pisać w tym który lepiej pasuje do zadania tak ale chyba najpierw lepiej nauczyć się jakiegoś bardzo porządnie a reszta kiedyś tak dla siebie.

Wybór pada na c#.

1
Steven napisał(a)

Napisałem, że już trochę pojmuje programowanie. Nie jestem totalnie początkujący rozumiem mniej więcej działają wskaźniki,klasy jak to jest z pamięcią przy typach danych.

"Trochę pojmuję programowanie" != "Umiem pisać programy"
Jak już na Forum pisałem wcześniej - znajomość semantyki języka i zasady działania pamięci/procesora nie oznacza jeszcze umiętności programowania. Potrzebne jest np. myślenie algorytmiczne, umiejętność rozwiązywania problemów przy użyciu kodu, czy praktyczne doświadczenie dające Ci "podskórną" wiedzę o tym w jakim przypadku jakie wyjście będzie najodpowiedniejsze :)

0

Jeśli będę znał język to będzie też łatwiej rozwiązać jakiś problem "jak to zrobić".

Jednak brakuje tej wieloplatformowości c#... Brak mi linuxa ;p

Żeby nie robić nowego tematu ma ktoś do sprzedania: książkę:

  • C# i .NET Stephen C. Perry ?
0
Steven napisał(a)

Jeśli będę znał język to będzie też łatwiej rozwiązać jakiś problem "jak to zrobić".

Nie zrozumiałeś przesłania ;)

Steven napisał(a)

Jednak brakuje tej wieloplatformowości c#... Brak mi linuxa ;p

Jest Mono. O ile nie będziesz używał czegoś Windows-specific, różnice implementacyjne nie powinny Ci przeszkadzać w nauce samego języka (nie wiem jak z aktualnością Mono co do najnowszej wersji standardu).

1
Steven napisał(a)

Jeśli będę znał język to będzie też łatwiej rozwiązać jakiś problem "jak to zrobić".

No co za bzdura. To, że znasz język nie oznacza, że z miejsca będziesz umiał rozwiązywać problemy algorytmiczne czy wykonywać jakieś zadania. Gdyby programiści umieli rozwiązywać wszystko znając tylko język to fora takie, jak to nie byłyby nikomu potrzebne. Rozwiązywanie problemu odbywa się w Twojej głowie, polega na umiejętności logicznego myślenia i znajdowaniu najlepszych rozwiązań dla zadanego pytania. Język jest tylko narzędziem, które Ci pomaga napisać to co sobie wymyśliłeś.
To, że z teorii znasz jakiś jeżyk nie oznacza, że umiesz w nim programować. Trzeba wiedzieć, co się chce napisać. Inaczej możesz znać język po przeczytaniu książki i nie umieć tego wykorzystać.

0

Chodziło mi o to, że jak będę znał dobrze język to będę wstanie przedstawić lepsze rozwiązanie problemu/programu ponieważ będę mógł powiedzieć dlaczego użyć tego a nie tego.
To samo z kombinowaniem... Najpierw to potem to potem to. Bez znajomości możliwości języka tego nie widzę.

0

No co za bzdura. To, że znasz język nie oznacza, że z miejsca będziesz umiał rozwiązywać problemy algorytmiczne czy wykonywać jakieś zadania.

Tak, tylko że jeden język wymusza wymyślanie koła na nowo (czyli algorytmów podstawowych, jak sortowanie czy szukanie) a w drugim masz na to gotowce i można się skupić nad problemami wyższego rzędu (np. "jak zrobić żeby mi posortowało po kliknięciu buttona").

0

Uwierz nam Bracie na słowo,że bardziej niż znajomość języka programowania przyda ci się umiejętność logicznego myślenia,rozbijania zadanego problemu na mniejsze części oraz wymyślania algorytmów do implementacji tych części.
Ot mały przykład dla Ciebie-podaj rozwiązanie krok po kroku,jak narysować strzałkę dowolnie skierowaną w przestrzeni 2wymiarowej mając jako dane:
1.Punkty początku i końca strzałki
2.Grot ma się dać wpisać w kwadrat o boku ARROWHEAD wynoszącym ileś tam,i ma być zawsze taki sam niezależnie od kierunku strzałki
3.Grot strzałki składa się z 5 punktów a ogon z 1
I żadna znajomość języka programowania nie jest wymagana do tego zadania,tylko czysta matematyka

0
Steven napisał(a)

Ale też pojawiły się ciekawe informacje głównie od forumowiczów że c# nie jest w ogóle potrzebny w końcu to samo można osiągnać w c++ z lepszą wydajnością i dokładnością a c# jest takim sobie nie potrzebnym, nic nowego nie wprowadzającym wytworem marketingowym microsoftu.

Również C++ też nie jest w ogóle potrzebny, to samo można osiągnąć w ASM, z lepszą wydajnością i dokładnością.
Chętnie bym zobaczył jakieś aplikacje WWW napisane przez autorów tych słów w C++. [rotfl]

W C# (podobnie jak w Javie) alokowanie i zwalnianie pamięci odbywa się automatycznie, a w C++ jakieś 90% błędów jest spowodowane koniecznością ręcznego zarządzania pamięcią, na dodatek nie zawsze są to łatwe w wykryciu błędy. Wniosek jest prosty - pisząc w C# powstaje mniej błędów, są łatwiejsze do wykrycia, więc czas wytworzenia oprogramowania tej samej jakości będzie krótszy. A, że czas to pieniądz, to koszt również jest mniejszy. Mniejszą wydajność można nadrobić szybszym sprzętem, bo cena sprzętu jest niższa niż koszt pracy programisty. Tam, gdzie wydajność jest krytyczna, jest dopiero sens użyć C czy C++.

Edit: Zgodnie z uwagą z komentarza, to co napisałem dotyczy środowisk biznesowych i tworzenia oprogramowania na zamówienie i dostosowanego do potrzeb firm. Czyli jakiegoś 80-90% rynku.

0

Proponuje zacząć od języka w którym łatwo będzie coś zaprezentować:

  • konsola - Python
  • GUI/desktop - C#, Lazarus Pascal
  • WWW - PHP
  • Android - Java

Wszystko zależy od tego które środowisko systemowe Ci najlepiej pasuje.

C++ w każdym razie nie należy do najłatwiejszych i na początek NIE polecam (chociaż sam teraz przede wszystkim tego używam), bo:

  • składnia od której więdną ręce
  • co najmniej 3 sposoby programowania, każdy inny (strukturalne, obiektowe, meta-programowanie)
  • niełatwe GUI (wxWidgets, przynajmniej w porównaniu do Delphi / Lazarus Pascal)
0

Qt to nienajlepszy pomysł. Uczy złych praktyk, ustawiania flag błędów zamiast korzystania z wyjątków.

0

Ja tam zaczynałem od basica na Atari 65XE+nauczenie się odpowiedniego,programistycznego myślenia,potem bawiłem się Logo.Kolejnym etapem było już na PC asembler,potem C i C++,następnie WinAPI po przestudiowaniu "Programowania Windows" Petzolda.Kolejnym krokiem rozwojowym było Qt 4.3.1,którym zajmuję się do dzisiaj.Ostatnio programowałem trochę w C# za sprawą używania enginu Unity.Z tego wszystkiego za najbardziej przyjemne w pisaniu oraz dające największe możliwości uważam C++ wspomagane biblioteką Qt.
I z perspektywy czasu tych kilkunastu lat programowania mogę tylko podkreślić to,o czym pisałem w moim poprzednim poście-mniej istotny jest język programowania,a ważniejsze nauczenie się odpowiedniego myślenia i rozbijania problemu na części składowe.

0

A moja lista wygląda tak:

  • Ruby
  • C++
  • D
  • Java/C#

A PHP się nadaje do czegokolwiek jak armata do pieczenia ciast.

0

Ja zacząłem się ostatnio poznawać Objective C i niesamowicie mi się w nim model "półautomatycznego" zarządzania pamięcią. Przede wszystkim mamy ręczne zarządzanie pamięcią z prostym mechanizmem liczenia referencji - jeżeli potrzebujemy użyć jakiegoś obiektu, używamy na nim "retain", jeżeli już go nie potrzebujemy, "release". Tworząc obiekt, to my jesteśmy odpowiedzialni za jego zniszczenie. Jeżeli nie jesteśmy w stanie zwolnić go ręcznie, oddajemy go w ręce GC. Do tego kilka sztywnych zasad dotyczących np. nazewnictwa: [[NSString alloc] initWithFormat: @"..."]] i [NSString stringWithFormat: @"..."] - w pierwszym przypadku sami alokujemy pamięć i używamy jednego z "konstruktorów" oraz jesteśmy odpowiedzialni za jego zwolnienie, w drugim przypadku nie alokujemy pamięci i wiemy, że obiektem zajmuje się GC. I w ten sposób mamy kompromis pomiędzy łatwością zarządzania pamięcią, a niemarnowaniem jej.

0

Eh... Ostatecznie waham się nad c++ a c#:D

0
Steven napisał(a)

Eh... Ostatecznie waham się nad c++ a c#:D

To spróbuj coś zrobić w obu (kursy masz na internecie), następnie wybierzesz w czym się lepiej czujesz. Innej drogi nie ma, jak metoda prób i błędów.

0

Ostatecznie dalej ciężko wybrać za co się zabrać c#/c++...

0

Ostatecznie zastanawiam się nad c++ a c# :D

0

Też się nie dawno zastanawiałem jaki język wybrać za swojego maina. Wybór padł na c# ze względu na szerokie możliwości jak asp,ado,linq...
Minusem jest to że głównie dla windowsa bo to mono coś "nie idzie" oraz trochę dziwnie się w tym piszę wszystko public,static ;d

C++ fajny,praktycznie na wszystko i do wszystkiego(?) ale trudny i już stary;d Był to język od którego zaczynałem pewnie dla tego nadal do niego mnie ciągnie i miło wspominam składnie;p

Ale to pewnie dla tego, że ciężko mi się odzwyczaić;p

Ale żeś jebnął 3x podobnego posta;d

0

Hmm... Ace zachęcasz z somekidem do c#. Jednak kusi mnie c++ bo jest ten linux który coraz bardziej zyskuje na popularności.
A z innej piszą że jeśli chce się żyć z programowania i bić ładną kasę już od studiów to c# bo nawet po studiach ciężko znaleŹć prace jako programista c++...

2

Mówisz, że Linux coraz bardziej zyskuje na popularności - ok, zyskuje, ale niewiele i nawet pomimo wzrostu jest to bardzo mała ilość użytkowników.

Opierając się na polskich statystykach wychodzi na to, że jest to raptem niecałe 0.7%. Już większy udział ma Mac OS X, który jest w Polsce niesamowicie niepopularny i hejtowany - 0.9%. Windows - 97.5%. Przez ostatnie 4 miesiące udział Linuksów wzrósł o 0.02%.

Gdy spojrzymy na zagraniczne statystyki portalu, który głównie odwiedzają webmasterzy, Windowsów używa 84.2%, ale wciąż Linuksy są za Makami. Ciekawie swoją drogą wyglądają statystyki systemów mobilnych - pomimo setek milionów sprzedanych Androidów i tak ludzie nie korzystają na nich z internetu. Zdecydowany prym w tej dziedzinie należy do urządzeń z iOS.

Wniosek jest taki, że.. nie ma co o Linuksach myśleć. Jeżeli nie będziesz pisał serwerowego softu to w zasadzie możesz zupełnie o nim zapomnieć. Korzystają z niego właściwie tylko i wyłącznie informatycy. I wcale nie uważam, żeby się to w przeciągu następnych 10 lat zmieniło. Jak chcesz postawić na oprogramowanie użytkowe i web - C# będzie na początek dobrym wyborem. Coraz mniejsze znaczenie będzie miał fakt konieczności instalowania dużych frameworków, z miesiąca na miesiąc udział Visty/XP zmniejsza się na rzecz 7. C i C++ też oczywiście warto poznać, ale mimo wszystko nie byłbym tak aż podniecony QT :>.

0
Rev napisał(a)

Mówisz, że Linux coraz bardziej zyskuje na popularności - ok, zyskuje, ale niewiele i nawet pomimo wzrostu jest to bardzo mała ilość użytkowników.

Uściślijmy, że mówisz o desktopie :)

0

Widzę że temat typu o wszystkim i o niczym: Robicie straszny offtop, każdy poleca język w którym teraz kodzi i jest super. Tylko wydaje mi się że nie o to tutaj chodzi.

0
payl napisał(a)

Widzę że temat typu o wszystkim i o niczym: Robicie straszny offtop, każdy poleca język w którym teraz kodzi i jest super. Tylko wydaje mi się że nie o to tutaj chodzi.

wchodząc tutaj łudziłeś się, że będzie inaczej?

0
payl napisał(a)

Widzę że temat typu o wszystkim i o niczym: Robicie straszny offtop, każdy poleca język w którym teraz kodzi i jest super. Tylko wydaje mi się że nie o to tutaj chodzi.

Nie narzekaj. Sezon ogórkowy jest. Przynajmniej Forum się rozruszało i można poznać wiele ciekawych opinii.
Ponoć ogólna obiektywność dyskusji wzrasta proporcjonalnie do ilości dyskutantów o odmiennych zdaniach ;)

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