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

Odpowiedz Nowy wątek
2011-08-01 01:26
Steven
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.

Naucz się składni wszystkich trzech, zajmie Ci to gdzieś z jedeń dzień, potem wymyśl sobie co byś chciał napisać i to napisz w każdym z nich. Wtedy się dowiesz który Ci bardziej pasuje. - O_o 2011-08-01 01:38

Pozostało 580 znaków

2011-08-01 04:16
msm
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.

edytowany 1x, ostatnio: msm, 2011-08-01 04:17
Oj tam, ja C# i Jave w stopniu wystarczająćym do napisania kalkulatora bez zaglądania w bok nauczyłem się po dniu na jedną maszkarę, no ale początkującemu może być gorzej z tym ;) - O_o 2011-08-01 14:11
Zależy co znałeś wcześniej. :) - somekind 2011-08-01 14:43
Najpierw Basic z Commodorca, potem ASM z tej samej maszyny a potem skakałem jak pszczółka z jednego na drugi ;) - O_o 2011-08-01 14:49
Ja z małym zerkaniem na google zrobiłem tetrisa w 3d (klon blockout) w 2 dni od przesiadki na Javę. Prawie 2 lata w Cpp + Qt + OpenGL zrobiło swoje :) nawet JOGLa umiałem sam sobie zainstalowałem w NetBeansie:p Przede wszystkim próbować, a nie opierać się tylko o książki. - Razi91 2011-08-01 18:12

Pozostało 580 znaków

2011-08-01 09:07
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.

Pokaż pozostałe 7 komentarzy
O_o no co ty, ja miałem szoka jak coś chciałem w Androidzie napisać przez pierwsze 2 dni, później już czaiłem bazę. Ale nauka tego popiepszonego API może przyprawiać o lekki ból głowy. Ogólnie składnia łatwa i i bardzo javova. +1 za to ode mnie :) - szypxx 2011-08-01 15:58
C++ to jego wieloplatformowość zależy od jakich bibliotek się użyje: przykładowo 100% kodu w C++ i Qt skompiluje się na całej trójce + nawet i Symbian, a jak w X11, albo WinAPI to wiadomo że tylko na linuksie/windowsie da się skompilować. ale Java jest aktualnie chyba najbardziej uniwersalna. - Razi91 2011-08-01 18:14
Razi91 - dlatego też moim zdaniem C++ jest multiplatformowe, ale nie do końca, właśnie przez te biblioteki. Jave skompilujesz raz i uruchamiasz wszędzie, poza tym mottem javy jest Compile once, run everywhere (czy coś takiego, nie wiem, jak na razie znam jedynie C++ a i to nie w całości jeszcze). somekind - możliwe, że masz racje, na wielu forach spotkałem się z tym, że zaczynali naukę programowania właśnie od C++, sam jeszcze nie jestem na studiach :P - tomepaw 2011-08-01 19:35
Java jest teraz do tyły, dobrze by było gdyby to było chwilowe, bo na droidku ciężko odpalić normalną dżabę. - O_o 2011-08-01 19:38
@Razi: X11 to nie tylko Linux :-) - Azarien 2011-08-02 01:04

Pozostało 580 znaków

2011-08-01 11:30
MiL
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.

To też prawda, coraz więcej debili mniema, że programowanie w kultowym języku == { rock & roll, sex, narkotyki } - absent 2011-08-01 12:10
W kultowym, czyli w C++. - somekind 2011-08-01 14:40

Pozostało 580 znaków

2011-08-01 12:22
Kumashiro
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.

Pokaż pozostałe 6 komentarzy
Ja to najwięcej się nauczyłem przy asmie na C64. :) - O_o 2011-08-05 01:52
To wiele wyjaśnia. :P - somekind 2011-08-05 02:06
Przez to nie lubię komplikacji. Tam to miałem dwa rejestry i akumulator i wszystko dało się zrobić, a dziś to ludziom parudziesięciu rejestrów się zachciało... - O_o 2011-08-05 02:12
Ja tam mam jeden rejestr i jakoś daję radę. - somekind 2011-08-05 03:00
Dłużników? - O_o 2011-08-05 03:38

Pozostało 580 znaków

2011-08-01 13:22
Steven
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#.

Pozostało 580 znaków

2011-08-01 14:01
Kumashiro
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 :)

Pozostało 580 znaków

2011-08-01 14:05
Steven
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 ?

Pozostało 580 znaków

2011-08-01 14:10
Kumashiro
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).

Pokaż pozostałe 4 komentarze
Jest kijowe, generyki się sypią, linq byebye, nawet operacje na konsoli są bleee. - O_o 2011-08-01 20:13
@O_o: oświadczam oficjalnie, że wczoraj zaktualizowałem sobie Mono i teraz Console.ReadLine już działa :-D - Azarien 2011-08-01 21:49
WOW! Mają się czym pochwalić teraz ;) - O_o 2011-08-01 21:51
Mogą się też pochwalić tym, że działa też na Linuksie i Mac OSie (a zarazem iOSie i Androidzie), a .NET dalej tylko Windows i Windows Phone i nic nie wskazuje na poszerzenie tych horyzontów. A Console.ReadLine niezbyt potrzebne przy okienkach. - Razi91 2011-08-01 22:01
Jeszcze na Windows Mobile i na niektóre ARMy. Ale jakie to ma znaczenie? Przecież M$ nie zatrudni ludzi specjalnie po to, żeby zwiększyć dostępność swojej platformy o 1% urządzeń, zwłaszcza że i tak wśród nich pewno 1% użytkowników chciałoby tego używać. .NET jest przede wszystkim dla biznesu, który stoi na Windach i tyle. - somekind 2011-08-01 22:13

Pozostało 580 znaków

2011-08-01 14:18
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ć.


Idiots, idiots everywhere.
edytowany 1x, ostatnio: allocer, 2011-08-01 14:19
"Lubię to" - krwq 2011-08-04 23:58

Pozostało 580 znaków

2011-08-01 14:35
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").

Niby tak, ale najlepiej się nauczysz wymyślając koło na nowo - krwq 2011-08-04 23:59

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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