C Sharp,c#,c.net
#1
geschrieben 22. Juli 2004 - 10:44
es baut ja auf c++ auf und erweitert es um .net framework
meine frage ist jetzt ist ein c# kompieliertes programm genauso schnell wie ein
c++ projekt oder ist es langsamer
da ich vor allem kleine programme die jedoch sehr schnell und sehr optimiert auf prozessoren schreiben möchte ist jetzt die frage ob man das bei c# auch machen kann oder ob c++ in dem fall besser ist
jedoch könnte ich mir vorstellen dass das programmieren in c# leichter ist da man sehr viele biblioteken die ja bereits fertig sind zur verfügung hat was heißt dass man vieles sicher sehr schnell in ein programm integrieren kann
oder könnte ich das mit c++ besser und schneller machen
ist sicher ansichtssache ob es besser ist oder nicht
deshalb wären viele meinungen besser vor allem weil ich mir dann besser ein bild machen könnte
und da ich noch nicht wirklich in c++ eingestiegen bin könnt ich ja gleich und sehr schnell wechseln auf c# weil ich eh erst mit einführung angefangen hab
und c# nur ob die hauptvorteile der portierung für mich wichtig sind ist ne andere frage weil ich nur programme für windows schreibe die unter anderen systemen sowieso uninterresant sind
na dann schreibt mal eure meinungen
Anzeige
#2
geschrieben 22. Juli 2004 - 11:03
Zitat
Also C# ist von C++ weiter weg als von Java...
Durch die zentralisierten Bibliotheken kannste halt Projekte aus allen möglichen .Net Sprachen zusammenbasteln, und es läuft, und das garnet mal so schlecht.
Mit C# kommste an sehr schnelle Programme rein, bist allerdings offiziell auf die Windows-Plattform gebunden. Gibt zum Glück aber auch ein paar nette Leute dort draussen die das Framework auf andere OS portieren.
Was du nimmst bleibt deinem Geschmack überlassen, C# hat aber länger bestand, da C++ so langsam ausstirbt...
Beide Sprachen werden aber keine sehr lange Lebenserwartung mehr haben, da genügend andere in den Startlöchern stehen. Für deine Zwecke isset aber sicher viel besser als Java, welches noch zu langsam ist...
Dieser Beitrag wurde von Dante33 bearbeitet: 22. Juli 2004 - 11:05
#3
geschrieben 22. Juli 2004 - 12:16
also ich hab mal gegoogelt hab sowohl meinungen dafür als auch dagegen gehört
bzw was für teile von C# schnell als auch langsahmer als c++ sind
na ja alles ist das sicher nicht
also ich hab gelesen dass das programm erst am start kompiliert wird bzw auch so wie c++ mit irgendwelchen extras auch entgültig kompilert werden kann so wie c++ man kann so weit ich weiß auch c++.net und c#.net mischen
meine frage ist jetzt noch welche erfahrungen habt ihr so ,da diese meinung auch nur persönlich von den leuten ist von denen ich gelesen hab
#4
geschrieben 22. Juli 2004 - 12:25
Du kannst es ähnlich wie Java compilieren lassen, wo es Just-In-Time während der Ausführung kompiliert wird, und daher CPU-unabhängig ist, weil es erst im letzten Monat darauf zugeschnitten wird.
Du kannst aber auch vorher bis zum Ende kompilieren lassen (was bei Java auch geht). Dann isset auf eine bestimmte Plattform zugeschnitten, und sehr flott.
.net lässt sich übrigens Querbeet mischen
J# mit C# und VB etc.
Geht alles, dafür ist das Framework schliesslich da.
#5
geschrieben 22. Juli 2004 - 12:32
Zitat (Dante33: 22.07.2004, 12:03)
Leider.... aber denke, das ist ganz groß im Kommen, va. weil plattformübergreifend....
(und der eingebaute BufferOverflow-Schutz...)
Dieser Beitrag wurde von wiz bearbeitet: 22. Juli 2004 - 12:32
#6
geschrieben 22. Juli 2004 - 12:38
Zitat (wiz: 22.07.2004, 12:32)
Zitat (Dante33: 22.07.2004, 12:03)
Leider.... aber denke, das ist ganz groß im Kommen, va. weil plattformübergreifend....
(und der eingebaute BufferOverflow-Schutz...)
Plattformübergreifend auf die CPU bezogen, .Net bekommste wie gesagt seitens MS nit offiziell für anderes als Windows, aber gibt da ja ein paar fleissige...
Und wenn du in Java schreibst und das ganze voll durchkompilierst, also dich auf die Plattform festlegst, isset von der performance nicht zu unterschätzen...
Vor allem weil es OOP in Perfektion ist, meiner Meinung nach.
Find ich auch doll auf der Arbeit. Endkundensoftware besteht fast nur aus .Net, aber alles interne machen wir in Java ^^ Weil es besser ist. Da hat man wenigstens beides druff
#7
geschrieben 22. Juli 2004 - 18:58
also wenn es wirklich so ist wie ich mir das denke dann werd ich wirklich umsteigen denn wenns wirklich notwendig ist kann ich ja c++ immer noch
verwenden und c-sharp is halt sicher zukunftsorientierter
schnell solls auch sein und nachteile kenn ich eigentlich nicht wirlich welche mehr
na ja eine frage is derzeit noch
wenn ich das .net framework benutze dann müsste der benutzer des programms
dieses installieren gibt es ne möglichkeit dieses vieleicht in das programm zu integrieren
und ne kleine frage für mein erstes programm
gibt es da sowas wie ne netzwerk bibliotek wo ich alles vom netzwerk
dabei habe dass wär echt toll wenn mir das wer sagen könnte
wär ne tolle hilfe für das erste programm
ich will das gleich mal praktisch testen ob ich das proggi so hinbekomme
wie ich es mir vorstelle
#8
geschrieben 23. Juli 2004 - 08:04
also zuerst mal: weder c noch c++ sind in irgendeiner form am aussterben! nur die verwendung für kleinere windows-anwendungen lässt nach.
zur geschwindigkeit:
am schnellsten: c
mitten drin: c++ (je nach verwendung gewisser sprachlicher mittel)
am langsamsten: c#, und zwar um längen!
wenn du auf geschwindigkeit aus bist, darfst du auch keine visual-umgebung oder sowas hernehmen, sondern kommandozeile und am besten tc-compiler oder gcc, dann geht das ab.
zum lernen definitiv am besten geeignet: c
ich kenn genug leute, die gedacht haben: "wieso soll ich den alten krempel lernen, nimmt doch keiner mehr.." - total falsch. wenn du in c fit bist, hast du auch mit c++/c# keine probleme. wenn du nur c# kennst (klickibunti), heisst das noch lange nicht, dass du programmieren kannst.
am besten is echt, du befasst dich mal ein halbes oder ein jahr mit blankem c und steigst dann auf - das was dann rauskommt, kann man wahrscheinlich "anständig programmiert nennen" :-)
industrielle betrachtung: c# bzw. die ganzen .net sprachen setzen auch auf einer form von bytecode auf und können relativ leicht decompilert werden.. so als gedanke zur codesicherheit.
das soll hier kein votum gegen c# sein, ich benutz es auch. aber ne ganz neue oop-hochsprache in den himmel zu loben, und noch dazu für einsteiger find ich einfach falsch, da fehlen dann total die technischen grundlagen.
My $.02
#9
geschrieben 23. Juli 2004 - 09:17
Zitat (joedawson: 23.07.2004, 09:04)
Genau das dacht ich mir auch, aber dein Beitrag ist ja auch viel nicht besser
Also das C und C++ am Aussterben sind bezweifel ich stark, C und C++ werden noch ewig auf embedded Systems zu finden sein und im Pc Bereich vor allem da, wo man zeitkritisch auf die Hardware zugreifen muss(Treiber usw.).
Die .Net Sprachen sind dagegen RAD Sprachen die vor allem auf eins abzielen: Schnell und produktiv komplexe Windows und Web Anwendungen erstellen. Und in dem Gebiet kommt im Moment nichts an .Net ran. Wer sich schonmal ernsthaft damit beschäftigt hat weiß wie einfach es ist in C# komplexe Anwendungen zu schreiben.
Okay, dann will ich noch was zur Geschwindigkeit sagen. Was nützt dir ein C(++) Programm das ein wenig schneller ist als ein C# Programm, das aber sobald es länger als nen Paar Minuten läuft vielleicht deinen Speicher zumüllt? Genau das machen die meisten Programme(mehr oder weniger beabsichtigt). C(++) Programme sind im Normalfall schneller, aber nicht um Längen wie behauptet wurde. .Net Programme werden beim ersten Start kompiliert und liegen danach gecacht vor wodurch man beim nächsten Start kaum noch einen Unterschied zu nativen Programmen bemerkt. Hier findet sich ein interessanter Forumsartikel zu dem Thema. Die Stärke von .Net Programmen ist halt, das sie verwaltet sind, und man von Exception Handling und Garbage Collection ne Menge Arbeit abgenommen bekommt.
Zitat
Was hat den die Entwicklungsumgebung mit dem erzeugten Code zu tun? Die hängt ja wohl eher vom verwendeten Kompiler ab und in VS.Net z.B. kann man den optimizing Intel C++ Kompiler einbinden, und dagegen ist gcc doch langsamer.
Zitat
ich kenn genug leute, die gedacht haben: "wieso soll ich den alten krempel lernen, nimmt doch keiner mehr.." - total falsch
Sehr pauschale Antwort. Wenn man weiß, man schreibt Windows Anwendungen und vielleicht noch Webanwendungen dazu, dann wäre C lernen, zwar nicht sinnlos, aber doch nicht unbedingt nötig. Sprachen wie Java oder die .Net Sprachen oder auch die meisten die noch kommen werden sind verwaltete OO Sprachen und da kann man auch von Anfang an lernen vernünftig OO zu programmieren.
Zitat
Wenn du C kannst und Anwendungen für C# schreibst, wirst du dich eher fragen warum C so unproduktiv ist. Und Als C# Programmierer der sich mit C beschäftigt wirst du dich fragen wieso man so nen Dreck wie Garbage Collection selber machen muss, wenns doch die Runtime machen kann. Und genauso wie man nicht OO programmieren kann. Es ist viel komfortabler mit einer .Net Sprache zu programmieren.
Zitat
Das ist nunmal wirklich ne ... Antwort. Anscheinend hast du dich noch nie ernsthaft mit C# bzw. .Net beschäftigt weil dann würdest du sowas nicht sagen. Nur weil man in C(++) ewig sitzt um ein anständiges GUI hinzubekommen und man das mit C# viel viel schneller hinbekommt, heißt es gleich wieder alles wird zusammengeklickt. Das stimmt für das GUI, aber wenn deine Programme nur daraus bestehen ists schon schwach. Vernünftige Programme sind nen bisschen mehr als nur der Präsentationslayer.
Zitat
Einm Thema das bei Java schon breitgetreten wurde damals. Und Codesicherheit bedeutet übrigens nen bisschen was anderes als du grad meintest! Aber C(++) kennt so nen Sicherheitskomzept ja gar nicht wie .Net.
Zitat
Welche technischen Grundlagen? Es interessiert doch gar nicht mehr bei so nen Anwendungen auf was für ein System es läuft. Wenn du das denkst hast du den Umfang von .Net ein wenig unterschätzt.
@Dante33
Zitat
Kannst mir mal sagen was du damit meinst? Was ist an C# weniger OO als bei Java oder hab ich das falsch verstanden?
@merowinger_setstat
Guck dir mal den Namespace System.Net an, da solltest du ne Menge finden zu Netzwerkkommunikation.
Und da du noch ne persönliche Meinung haben wolltest: Wenn du nicht auf Hardware im großen Maßstab zugreifen musst und eher Windows und Web Anwendungen schreiben willst, dann ist C# IMO eindeutig besser geeignet. Und auch wenn du auf ein System optimieren willst ist .Net öfters die bessere Wahl weil es halt erst bei der ersten Ausführung kompiliert wird und auf das entsprechende System hin optimiert wird und das auch noch während des Betriebs!
mfg Talla
#10
geschrieben 23. Juli 2004 - 15:32
Insgesamt hat man in C/C++ fast die ganze Kontrolle (mit inline asm sogar nicht nur fast) über den Computer, mit C# dagegen nur die Möglichkeiten, die einem das .net Framework zur verfügung stellt.
Fazit:
Für Windows Anwendungen, oder generell Front-End-Applicationen ist C# z.Zt. die beste Sprache, will man allerdings tiefer im System wühlen(Hardware ansteuern, etc.) oder leistungsintensive Programme schreiben, sollte man zu C/C++ greifen(oder zu asm )
USB Stick Test 2014 - Stick-Tester.de
Oder eine externe Festplatte?
Externe Festplatte Test - der große Test zu externen Festplatten
#11
geschrieben 23. Juli 2004 - 17:10
also ich find das sehr interresant aber die nachteile sind ja eigentlich nicht soo schlimm oder wenn man die möglichkeit des mischens dann verwenden kann
sobald ich mal die programmiersprache kann, kann ich ja eigentlich c/c++....
mit c# mischen und dann gibts die meisten nachteile nimmer
und eins dachte ich funktioniert , dass ich aus dem sagen wir mal byte ähnlichem code auch bis zum ende kompilieren kann zumindest hab ich das schon mehrfach gelesen und wurde ja auch bestätigt soweit ich mich nicht verlesen hab
sollte ich je hardware oder andere extrem zeitkritische programme schreiben
dann kann ich immer noch c++ verwenden ich denk mal von c# auf c/c++ umzusteigen kann dann sicher auch net schwieriger sein als von c/c++ auf c#
und da mir c# meiner meinung mehr bietet wo ich mir denke dass es für mich einfacher ist programme zu schreiben werd ich mich für c# entscheiden
websachen und netzwerk abfragen werden ja fürn anfang sicher net das 100% zeitkritischste aber wenn ich dann mal ein paar schnittstellen zu hardware schreiben sonstige c/c++ apps dann werd ich darauf sicher noch immer zurückgreifen können finde dass es für meine derzeitigen ideen einfach nicht notwendig ist
mfg merowinger
#12
geschrieben 23. Juli 2004 - 17:34
Zitat (merowinger_setstat: 23.07.2004, 18:10)
Ein klares Jein
Der Byte Code( bei .Net einfach IL - Intermediate Language genannt ) wird immer! kompiliert vor der Ausführung. Aber normal findet das immer erst beim Starten auf dem Zielcomputer statt. Aber man kann eine .Net Anwendung auch manuell kompilieren indem man z.B. bei der Installation mit ngen.exe ein natives Image erstellt.
#13
geschrieben 23. Juli 2004 - 18:18
Von C# auf C++ umzusteigen ist wesentlich schwerer, als andersherum, da man in C++ eben noch mehr sehr abstrakte 'Sprachelemente' hat, wie Pointer, Templates, ...
USB Stick Test 2014 - Stick-Tester.de
Oder eine externe Festplatte?
Externe Festplatte Test - der große Test zu externen Festplatten
#14
geschrieben 23. Juli 2004 - 19:05
Zitat (Franz1299: 23.07.2004, 19:18)
Von C# auf C++ umzusteigen ist wesentlich schwerer, als andersherum, da man in C++ eben noch mehr sehr abstrakte 'Sprachelemente' hat, wie Pointer, Templates, ...
Das wollt ich vorhin schon bei deinem Beitrag anmerken. In C# kann man Pointer verwenden, aber nur im als unsafe gekennzeichneten Code.
#15
geschrieben 23. Juli 2004 - 19:09
Hast du vielleicht 'n Link zur Verwendung, dass wäre echt cool!
USB Stick Test 2014 - Stick-Tester.de
Oder eine externe Festplatte?
Externe Festplatte Test - der große Test zu externen Festplatten