C++ vagy C#?

Az (ANSI) C és a Java megismerése után szeretnék specializálódni egy nyelvre. Nem tudok választani a C++ és a C# között, így szeretném a segítségeteket kérni.
Melyik nyelvet válasszam?
Melyik könyvet ajánljátok a megtanulásához?
Melyik IDE-t ajánljátok hozzá?

Hozzászólások

Mért nem maradsz java-nál?

Apple MacBook C2D 2.2Ghz 2x1G Intel X3100

"minimum c#"

Hogyhogy minimum? Mi a maximum?

"linuxra c++ qt"

Mármint Linuxra, Windowsra stb. Általában amit Qt-ben írnak (kivéve KDE progrik, vagy talán valamikor azokat is) nem csak Linuxra írják.

Amúgy nehezen tudom megérteni, hogy még ha rövid távon nincs is szükség Windowson kívül másra, mi értelme van új programot nem cross-platform eszközökkel kezdeni el írni. (Aki irtózik a C++-tól, használhat QtJambi-t.)

"gtk-t nem vesszuk komolyan jelenlegi allapotaban"

Ahhoz képest elég sok kereskedelmi app használja Linuxon, pl. Adobe Reader, Chrome.

adobe reader olyan is (szar). chrome-ot nem probaltam. gnome, meg ugy altalaban a gtk azonban gui kepessegekben (most szakadjunk el az alkalmazasoktol) jelentosen elmarad a kde/qt vonaltol, ugy altalaban. most nem egyik/masik DE mellett foglalok allast, kizarolag toolkitekrol beszelek.

Amugy a minimum arra vonatkozott, hogy mivel a .net olyan nepszeru manapsag, ezert az uj alkalmazasokat mar gyakran nem c++-szal irjak meg, mert felesleges; ami alacsonyszintu hivas kell, azt P/Invoke-kal meg tudjak oldani, viszont c#-ban sokkal kenyelmesebb fejleszteni, tehat gyorsabban meg is van.

a maximum a c++, az akkor kerul elo, hogyha az igenyeket abszolut nem tudja kielegiteni a .net/c#. persze lehet kiscsillio nyelven programozni.

>> Amúgy nehezen tudom megérteni, hogy még ha rövid távon nincs is szükség
>> Windowson kívül másra, mi értelme van új programot nem cross-platform
>> eszközökkel kezdeni el írni. (Aki irtózik a C++-tól, használhat QtJambi-t.)

Erre sok ok lehet, pl. aki windowst hasznal, es windowson fejleszt evek ota windowsra, annak konnyebb lesz a .netre raallni, mint a java-ra. Masreszt a .net nyujt olyan lehetosegeket ootb, amiket a java nem (inline sql keresek, mondjuk), illetve mashogy nyujt dolgokat (neha jobban, neha rosszabbul), ami lehet, hogy valakinek tetszik, lehet, hogy valakinek nem. ez egyreszt vallasi kerdes, masreszt merlegeles kerdese, megfelelo eszkoz megfelelo celra. ha valami jobban kezreall, es belathato idon belul nem lesz arra szukseg, hogy a termek majd egyszer platformfuggetlen legyen, akkor egyertelmuen a szamomra kenyelmesebb modot valasztom, annak ellenere, hogy tudom, hogy megvan ez a hatulutoje, es ha majd szukseg lesz ra, akkor felkerul a szopoalarc.

Nem tudnek allast foglalni a qtjambi mellett vagy ellen, mert meg nem csinaltam benne semmit, azonban azt kell mondanom, hogy a .net egy egeszen jo platform, es ha az ember elsodlegesen windowsra fejleszt, akkor erdemesebb azzal foglalkozni, mint a javaval, marcsak a jobb integracio miatt is. WPF vs. Swing eseteben pedig egyszeruen nem kerdes, melyikkel lehet kenyelmesebben jobb interface-eket csinalni.

termeszetesen desktoprol beszelek.

Erősen függ attól, hogy mit akarsz. Maga a szintaktika az max fél óra, inkább a körítés a lényeg.

Néhány tipp:
Ha Windowsra akarsz fejleszteni, akkor C#.
Ha cross-platform dolog érdekel, akkor kipróbálhatod a Qt+C++ kombót, a QtCreator egész kellemes IDE lett.
C++-hoz több a library (a boost még nagyon jó cucc), viszont C# alatt van garbage collector, így nem lesz memleakes a programod.

1) Ha Windowsra nativat akar fejleszteni, azt csak C++-ba lehet normalisan, mivel ahhoz van support.
2) C++ alatt is van hasonlo, csak azt nem garbage collectornak hivjak, es egy kicsit oda kell figyelni (az automata destruktorhivasra gondolok, amikor mar senki nem hivatkozik a cuccra). En mostanaba kezdtem el C++ -ozni, es eleg keves memleakos progit sikerult eddig meg gyartani (gyak. csak a pointerekre kell odafigyelni, oszt annyi)
3) C# alatt nehez memleakes progit fejleszteni, de nem lehetetlen. A gc se mindenhato, ott is eleg sokmindenre kell odafigyelni. Mondjuk a Java felol jovoknek kellemesebb, mert kabe hasonlo listat kell figyelembe venni, mint annal.

--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Miert nem C -re vagy Java -ra specializalodsz, he nem akkarsz meg joneheny nyelvet megismerni ?

Ha meg komolyan akarsz tolni egy nyelvet es hozza kapcsolodo dologokat, akkor gondolom IDE nelkul is kepesnek kell lenned jol hasznalni, tehat kezdetben valami egyszeru szovegszerkesztot hasznalj.

C++ ajanlott:
Cím: A C++ Programozási nyelv
"A könyv, amelyből több mint félmillió programozó tanul..."
Szerző: Bjarne Stroustrup

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

En epp forditva szoktam, eloszor megtanulom az IDE segitsegevel, es utana megyek szovegszerkesztore. Hihetetlen sokmindenben tud segiteni egy jo IDE, foleg ami a dokumentaciot illeti (mondjuk azert a VIM inkabb erossen IDE jellegu, szoval igazabol nem is hasznalok rendes szovegszerkeszot :-).

Stroustrup konyve eleg alap (bar en anelkul jottem ra nagyon sok mindenre, foleg forrasokat bongeszve), azonban erdemes beszerezni hozza a Hatekony C++ cimu konyvet Scott Meyers-tol.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Miert nem C -re vagy Java -ra specializalodsz, he nem akkarsz meg joneheny nyelvet megismerni ?
Ki mondta, h nem akarok új nyelvet megismerni? :) Azért gondolkodok C++ és C# között, mert ezek eléggé lefedik a piacot.
________________________________________________
Attól, hogy más hülye, te még lehetnél normális.

Sajnos mindkettő eléggé piacképes nyelv szóval ezalapján nem lehet ajánlani egyiket vagy másikat. Talán a c++ kicsit elterjedtebb, de a c# is jön felfelé.

A leglényegibb különbség ugye hogy c++ -al elég széleskörűek a lehetőségek (cross-platform, és natív kód az eredmény, rengeteg compiler és IDE mindenféle platformra), jó teljesítménnyel, míg c# -al tulajdonképpen csak Windowsra (esetleg ha támogatott cuccokat használsz akkor Mono alá). Teljesítményigényes cuccokat viszont nem fogsz c#-al programozni, mert ugye az eredmény .net bytecode és nem natív executable lesz.
Viszont a c# kicsit "modernebb" nyelv, talán hamarabb érsz el vele jutalomhormonokat generáló eredményeket. Ha eddig csináltál c-t, akkor c++, ha nem, akkor c#, szerintem. Mindkettővel jól jársz végeredményben.

********************
"...ha nem tévedek!" (Sam Hawkens)
http://holo-media.hu

Mar miert ne lehetne teljesitmenyigenyes cuccot irni C#-ban? Letezik olyyn, hogy ngen, ami elo tudja forditani a teljesitmenyigenyes cuccokat tartalmazo dll-eket _nativ_ kodra.
Mono meg elvben fut Windowson is, tehat ha Mono ala tanul meg programozni, akkor crossplatform tudasra tesz szert. A masik meg, hogy ASP.NET-t platformfuggetlen lehet csinalni benne, hiszen a System.Web nevter eleg jo tamogatasnak orvend.

Mondjuk az is igaz, hogy C++ utan elvben konnyebb a C#-ot megtanulni.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

C#, visual studio. de maradj a javanal, ott a j2ee, nemhiszem h pro lennel minden tekintetben (soa/roa/esb?).. vagy ha igen, akkor meg nem ertem miert valtanal :)

C# könnyen tanulhato, de az objektum-orientalt dolgokat tudni kell hozza. Ezen kivul viszonylag nagy piaca van. Java utan viszont konnyu, .NET FW is jol rakja alad a dolgokat.

C++ is egy kurvajo nyelv, csak mas szempontbol. Megtanulni mindenkepp erdemes, de lenyegesen tobb idot es energiat igenyel, mert sokkal-sokkal tobb mindenre kell figyelni. Masreszt szerintem nehezebb igazan platformfuggetlen kodot irni hozza, foleg, ha csak nativ C++-t hasznalsz es semmi egyeb lib-t hozza.

Windowson mindkettohoz Visual Studio, van ingyenes, Express Edition valtozata (regebben a VC++EE -hez le kellett tolteni kulon a Win32 SDK-t, ha nativ es nem menedzselt C++.NET -t akartal (szvsz az undorito), most nem tudom hogy van).

Linuxon fogalmam sincs, hogy mivel erdemes, amit eddig kellett irnom ugy, hogy linuxon is menjen, az is alt. windowson indult, aztan GCC-vel le forditva linuxra. Ami minimalis bugfix kellett, azt meg egy mcedit-l is meg lehetett csinalni (eleve ugy lett irva, hogy portolhato legyen, semmi win32 specifikus, ha megis #ifdef WIN32, stb.)

----------------
Lvl86 Troll

Mas oldalrol kozelitsd meg a kerdest:
Milyen cegnel szeretnel dolgozni?
Ha outsourcing a celterulet, akkor erosen J2EE, Java EE, C++, SQL, mert valoszinuleg nagy cegek webes heterogen rendszereiben kell majd matatni, amit meg valami osregi nyelven osregi technologiakkal kezdtek el fejleszteni az indianok (azaz indiaiak, bocsi), de elvart a leheto legmagasabb minosegu fejlesztes...
Ha sajat termeket fejleszto ceghez akarsz menni, akkor ott a webes es desktop technologiak kellenek valoszinuleg, kisebb a valoszinusege a legacy kodnak, nagyobb az uj technologiaknak, mint pl. WPF.
Ez utobbi irany c# es php vagy asp.net, elobbi Java EE, amihez jol jon, ha svajcibicskakent ott van a tobbi terulet. Mindenesetre vannak olyan technologiak, amik mindenhol szuksegesek lesznek (pl. SQL, XHTML, JS, stb.) es olyan elmeleti paradigmak, mint az OOP, a funkcionalis programozas, modularitas, ajax, failover, security, stb...
---
Ubuntu 8.10
HP nx6110