C, c# czy c++?

Widziałem w internecie dużo takich pytań ale na każdym forum odpowiedź brzmiała gubiąco i była całkiem odwrotna od poprzedniej odpowiedzi.

Miałem uczyć się c# ale po tym jak przeczytałem że na linuxie on prawie nie działa, to mocno się zniechęciłem.

Czy możecie mi jakoś objaśnić jaki z tych 3 języków współpracuje z linuxem i windowsem a jest zarazem nie tak trudny i dość popularny ?

Teoretycznie każdy, w praktyce jedne lepiej inne mniej, a poza tym, to twórca Linuksa stwierdził, że C++ jest do kitu.

Zadaj sobie pytanie co chcesz zrobić, a potem zastanawiaj się nad wyborem języka.

Język to tylko narzędzie, tak jak np. młotek. Są różne rodzaje młotków, a to który wybierzesz zależy od rodzaju gwoździa:D Tak na marginesie, jak chcesz np. C# ale żeby i z linuksem problemów nie było to bierz JAVA’e :slight_smile:

Zdecydowanie wybrałbym C#, który w dobie Mono 2.10 (implementacji .NET Framework w *nixach), jest praktycznie w całości zgodny. Posiada wygodną składnię i jest wbrew pozorom o wiele prostszy i nowocześniejszy od C++ czy C, które były tworzone wiele lat temu.

a w czym są pisane programy na linuxa ? (jak dotąd myślałem że w którymś z c)

Bo w pythonie te standardowe programy na pewno nie, bo nie każdy linux ma od razu interpreter.

Pod linuksa możesz pisać w C oraz C++, po dodatkowym zainstalowaniu oprogramowania od M$ możesz odpalać programy napisane również w C#.

Mono (implementacja C# i .NET) kuleje. Nie warto.

@somekind: twórca Linuksa nic takiego nie powiedział. po prostu C lepiej spełnia swoje zadanie.

C++, potem Java. Javove programy przynajmniej na wszystkich systemach działają (bez kompilacji na daną platformę!).

Ogólnie:

Java - proste programy okienkowe

C/C++ - algorytmika, zabawy i skomplikowane programy.

Pewnie dlatego Banshee - jedna z popularniejszych plajerek na Linuksa - jest w C#. :wink:

Mocne słowa. Może nie jest na równi z wersją Windowsową, niektóre rzeczy nie są w ogóle wspierane, ale duża część działa. W zależności od tego, co chce się osiągnąć można i tego użyć.

Owszem, moje stwierdzenie “jest do kitu”, jest tylko skrótem myślowym. Dokładnie, to ujął to tak:

C++ is a horrible language. It’s made more horrible by the fact that a lot

of substandard programmers use it, to the point where it’s much much

easier to generate total and utter crap with it.

Pewno dlatego 2/3 czy może i 3/4 aplikacji biznesowych jest pisana w Javie. I, o dziwo, bardzo często bez żadnych okienek. ;]

Kuleje w sensie daje tylko lekką warstwę kompatybilności. Podobnie jak Wine - nikt używający na co dzień Linuksa i programujący pod swój system nie używa WinAPI, bo w pewnym momencie wyskoczy “unsupported”, albo inna dolegliwość.

Linus był po prostu przyzwyczajony do stylu C i C++ mu trochę miesza. Nie mniej jednak C++ daje sporo ułatwiających narzędzi (m.in. klasy). Ale bardziej Linusowi chodziło raczej o to że każdy debil może napisać jakiś syf w C++.

No to dostałem bardzo różniące się wypowiedzi,czyli

c jest najlepszym rozwiązaniem ale najtrudniejszym,i nie jest dalej rozwijany,mniej do niego kursów itp.

c# to tylko jak na windowsa bo wymaga frameworka,

c++ według twórcy linuxa “jest do kitu”

To który wybrać ?

Chciałbym pisać zarówno programy na linuxa jak i na windowsa…

Ja bym się na Twoim miejscu nauczył C, a potem przeszedł do C++. C niby nie jest niezbędny, ale dzięki niemu zrozumiesz czemu coś w C++ się zachowuje tak, a nie inaczej. Poza tym, łatwiej Ci będzie używać bibliotek pisanych pod C (np. ncurses), bo tam nie zawsze możesz użyć takich dobrodziejstw jak STL z C++.

Ja jednak niemal nie siedziałem w C#. Mono teoretycznie działa, ale nigdy nie wiadomo co wykręci MS. Ja bym się trzymał z daleka.

Normalnie raciczki opadają…

Jakie programy chcesz pisać?

Wiesz w ogóle co to jest program? Wiesz, że nie wszystkie programy uruchamiane są na komputerach użytkownika? Wiesz, że nie wszystkie mają okienka? Wiesz, że coraz bardziej odchodzi się od programów tego typu? Wiesz, że prawdopodobnie większości programów powstałych na świecie nie zobaczysz nigdy na oczy, bo są wewnętrznym oprogramowaniem firm?

Języki występują w pewnych grupach (paradygmatach), w ramach których są pewnym stopniu podobne na poziomie koncepcyjnym, ponadto często składnia jednego języka wzoruje się na innym, więc są podobne na poziomie kodu. Nauczenie się pierwszego języka to nauczenie się pewnych wspólnych koncepcji takich jak: zmienne, stałe, instrukcje warunkowe, pętle, struktury danych, rekurencja i inne… Znając to na przykładzie jednego języka, innych języków uczy się na zasadzie podobieństw bądź różnic, jak kto woli. Innych języków uczy się albo z własnej woli albo z musu, bo w pracy tego wymagają. Ponadto język sam z siebie rzadko cokolwiek użytecznego oferuje. Poza nim musisz wiedzieć jak używać plików, obsługiwać bazy danych, znać wiele różne biblioteki mających różne zastosowania, musisz znać różne zastosowania.

Jednym z ważniejszych zagadnień w programowaniu jest obsługa pamięci. W C czy C++ pamięć musisz sobie rezerwować i zwalniać ręcznie, nowoczesne języki takie jak Java czy C# zwalniają Cię z tego obowiązku. Dzięki czemu w tych językach możesz napisać program po pierwsze szybciej, po drugie będzie miał mniej błędów. Każdy język ma swoje określone zastosowania, bo do pewnych rzeczy nadaje się lepiej niż inne. Obecnie np. nie opłaca się tworzyć oprogramowania dla biznesu w C czy C++, bo byłoby to zbyt mało wydajne i zbyt drogie. Ale sterowniki to głównie C, systemy operacyjne to w dużej mierze C, zaś programy narzędziowe, edycja grafiki, gry - to w większości chyba C++.

Widzisz, a to co ja napiszę w C# działa pod Windowsami, Linuksami, Uniksami, MacOSami, i większością obecnych telefonów komórkowych. I użytkownikowi nie potrzeba żadnego MS, Windowsa ani frameworków. Magia, nie?

Rany somekind, nie tak ostro.

@rosiak112: Ucz się czegokolwiek. Ale ucz się. Zobacz, od Twojej pierwszej wiadomości minęło 9 dni. Co przez ten czas zrobiłeś? Po co w ogóle się pytasz “co wybrać”, skoro odpowiedzi uzyskasz tyle, ile osób zechce napisać w wątku? Wybierz jeden język, zacznij w nim pisać. Na tym etapie wiesz tak mało, że Twoim problemem nie będzie wybrany język, a faktoryzacja, panowanie nad przepływem kodu, dostęp do danych i parsowanie ich, debugowanie. Masa rzeczy, które są niezależne od wybranego języka i których jeszcze długo nie opanujesz. Zacznij pisać kod - nie zastąpi Ci tego pytanie o słuszną drogę na forach. :slight_smile:

Ostro? Starałem się w miarę rzetelnie przedstawić jak sytuacja wygląda tylko. Chyba wyjątkowo obyłem się bez sarkazmu i złośliwości…

najlepiej uczyć się kolejno tak:

  1. język C - współcześnie do pisania sterowników

  2. język C++ - znając język C równocześnie znasz podstawy C++. Język C++ ogólnie do wszystkiego, aplikacje, grafika, gry, obliczenia naukowe etc.

  3. język C# - głównie do zastosowań internetowych, dedykowany dla pisania aplikacji na platformę .NET. Znasz C++, Delphi lub Java (chodzi o programowanie orientowane obiektowo) -> znasz również podstawy C#