String auf Zahlen überprüfen. Wie geht das?

Plattformunabhängig ist die andere Variante doch auch nicht, mit der ganzen Endiangeschichte.
Und wie mit Strukturen umgegangen wird, kann man einstellen.

Mir wäre es den Code-Mehraufwand jedenfalls nicht wert, nur damit man sich ein Compilerflag spart.

Oder denk ich jetzt verkehrt?
 
Ne, keineswegs. ich programmieren normalerweise auch Java und habe mir vor kurzem C/C++ angeeignet. Aber die Sache ist, dass man dafür eben all die Compilerflags kennen muss. Da kommt man in Java in den meisten Fällen ohne aus.
Was das mit den Pointern betrifft, natürlich sind Pointer eine sinnvolle Sache, aber wenn man aus der Java-Welt kommt nunmal auch etwas völlig neues. In Java hat man entweder die Referenz aufein Objekt, oder einen primitven Datentyp, das ist alles. Java ist generell auf einer höheren Abstraktionsebene, insbesondere als C. Dafür allerdings auch viel weiter von der Maschine selbst entfernt. Da kann es einem bei dem Umstieg durchaus so vorkommen als mache man eine kleine Zeitreise zurück wo man noch alles selber machen muss, was eben in Java die VM für einen erledigt.
ich weiß, das das hier gar nicht das ursprüngliche Thema ist, wollte nur doch mal meinen Senf dazugeben.
Mein Fazit ist, dass sowohl C/C++ als auch Java ihre Vorteile haben und man je nach den Umständen zu entscheiden hat. (Beispiel GUI-Programmierung, in Java traumhaft bequem im Vergleich zu C wie ich letztens herausgefunden habe)
 
Dem kann ich mich nur anschließen!!
Hinzuzufügen wäre da noch, dass Java erst nach der Entwicklung von C++, siehe Standart C98 bzw.c99, Züge und Konzepte, wie den Klassen und Methoden, übernommen haben. Nur, und da muss ich sheel recht geben, kommt keine Programmiersprache ohne Zeiger aus! Der Vorteil bei Java allerdings ist, das der Entwickler James Gosling bei der Erstellung von Java sich einpaar Gedanken gemacht hat, die lässtigen Pointer/Zeiger dem Programmierer im Verborgenen zu halten, weil diese zu Zeiten von C herhebliche Schwierigkeiten verursacht haben und der Compiler mehr Fehlerflags angezeigt hat. Da hat mann schnell den Überblick verloren. Ich meine... ist es nicht besser etwas einer Funktion oder Methoden/Klassen, sprich Objekte in Java, mit Hilfe eines new-Operators zuerstellen & zu übergeben 'node neu = new node();' anstatt 'node* neu = malloc(sizeof(node));' und dann anschließend mit einer free-Funktion alle alokierten Speicherblock eigenhändig zu freeen? Ich meine dann giebt es noch das Kaufmannsund '&' und den referenzierungspfeil 'x -> y', welches wiederum die Schreibweise für *(x).y ist. Ich hatte da so meine Probleme in der letzten Woche. Das ist bei Java komfortabler gelößt, weil das der Carbage Collector der VM (Virtuall Machine) in Java erledigt. Das finde ich für meine Begriffe ein erheblicher Fortschritt im Gegensatz zu C/C++. Und die Fehler die man bei der Programmierung machen könnte, halten sich bei weiten in Grenzen - ebend, weil Zeiger kein Problem mehr in Java darstellen!!

Gruß.
 
Zuletzt bearbeitet:
Zeiger stellen weder ein Problem dar noch sind sie in irgendeiner Weise lästig oder verursachen Schwierigkeiten. Im Gegenteil, sie eröffnen eine Fülle an Möglichkeiten die in Java schlicht nicht möglich sind. Zudem kannst du auch in C++ eine Garbage Collection verwenden, siehe Boost's Smartpointers.
 
Das sind Ansichtsweisen über Programmiersprachen!! So wie Du über C/C++ redest, merke ich. das Du nichts über Java weißt bzw. nicht viel Erfahrungen damit gesammelt hast!! Jeder das Seine. Ich möchte auch nicht sagen, das C/C++ überhaupt keine Verwendung mehr findet. Ich denke nur, das Jede Sprache seine Vorteile hat. Java ist zwar keine maschinennahe Sprache... aber damals hat mann Java durchaus für Haushaltsgeräte verwendet und erst im Zuge des Internet's (1992/-3) hat Java den Sprung ins Internet gemacht, ebend weil Java-Programme durch die VM auf allen Maschinen läuft (Mac, IBM-PC's, Unix und vorallem Handy's ) ohne das mann vorher das Programm neu kompellieren muss, oder gar Sorgen haben musste, das das Programm überhaupt kompatibel ist. Das ist auch überhaut der große Vorteil Java ist nähmlich in 2 Segmenten aufgeteilt worden die VM in Java ist ja auf den unterschiedlichsten Maschinen installiert und jedes geschriebene J_Prog. wird zur Laufzeit von der VM übersetzt und läuft halt auf jeder Maschine wohingegen bei C/C++ du immer erst den passenden Kompiler brauchst und erstmal neu kompellieren musst, befor es läuft. Hast DU Dich mal gefragt warum alle Apps auf heutigen Handys in Java erstellt worden sind, oder das Internet zum größten Teil beherscht? Mit C/C++ hast Du da weniger Chancen, weil diese keine Absturzsicherheit bietet. Aber ich will halt C/C++ nicht schlecht reden. Ich denke schon, dass für Treibergeschichten oder für die Industriemaschinen eine Hardwareprogrammiersprache benötigt wird wie C/C++. Es ist aber auch nicht so, dass java dafür ungeeigneter wäre - wie ich oben schon beschrieben habe, kommt Java aus der Maschinenprogrammierung!!

Aslo take it easy! Gruß.
 
Zuletzt bearbeitet:
Möglicherweise habe ich ja das Thema im Thema verfehlt, aber es geht mir eigentlich nicht um einen Vergleich zwischen Java und C++, sondern was ich sagen wollte ist dass es mir auf deutsch gesagt tierisch auf den Senkel geht, wenn man pauschale Aussagen über eine Sprache macht die entweder auf Unwissen (Stichwort "Absturzsicherheit" oder "Garbage Collection") oder auf eigenem Unvermögen (Stichwort "Zeiger") basieren und Teile oder die ganze Sprache als rückständig, lästig und unnütz bezeichnet.
 
Ich mal wieder...

C++ hat keine Absturzsicherheit: Java doch auch nicht. Und wenn man ordentlich programmiert, dann schon.

Java und VM: Gleichzeitig auch ein großer Nachteil. Vor einem Java-Hello-World-programm braucht man eine passende VM.
Bei C braucht man einen passenden Compiler, gut (aber eigentlich nur der Entwickler)
Für Java braucht jeder eine VM, zugeschnitten auf sein Gerät.
(Und worin ist die VM übrigens geschrieben? Richtig: C)

Java und "Maschinenprogrammierung": ist mir neu. Hab noch keine JavaVM für ein Industriegerät gesehen.
Hab zwar schon mit einem Elektronenmikroskop mit Windows 2000 gearbeitet (kein Scherz :D), aber da war auch kein Java.

Java und Internet: Java hat im Gegensatz zu C ziemlich viel Sicherheits-/Rechte-sachen eingebaut und ist zB deshalb besser geeignet. Wer will schon Angst haben müssen, dass die nächste Website seine Festplatte formatiert?

Pointer: Wenn man sich damit nicht gut genug auskennt, um absturzfreien Code zu schreiben, sind sie deswegen nicht gleich schlecht.
Es bleibt eine Tatsache, dass C Dinge machen kann, die mit Java einfach unmöglich sind.

C nur für Treiber etc: Hab keine Statistik, aber C/C++ ist nicht am Aussterben.
Passendes Beispiel: Wer entwickelt die JavaVM weiter, wenn es keine C-Programmierer mehr gibt?
Welche Leute erstellen die nächste Windowsversion? Linux?

jm2c...
 
Ich hab ja auch nicht bestritten was C ausmacht Ihr versteht mich da völlig falsch. Ich meine nur wenn mann mit Java vorher programmiert hat und mann dann auf C umsteigen muss, nur weil mann das im Studium lernen muss, merkt man erstmal was mann da für einen Rückschritt erlebt. Und aus Sicht der Entwicklung der verschiedenen Sprachen, ist C nun nicht mehr neu und im Vergleich zu Java ein Rückschritt. Mag sein das C/C++ auch zu etwas zugebrauchen ist... dennoch wird auch diese Sprache langsam aussterben. Ich meine ich hab es ja auch an Assembler gesehen... das musste ich früher auch machen. Diese Sprache ist auch tot.
Aber egal!! bevor ich hier noch mein Kopf verliere und mich in heftige Diskussionen verstricke, hier ein paar Argumente die meine Meinungen unterstreichen!!
Da könnt ihr Euch selber überzeugen. Immer erst ein paar Programme in einer Sprache selber schreiben um selbst Kretik an anderen Sparachen abzugeben!

Ich verbleibe weiterhin mit freundlichen Grüßen.

http://de.wikipedia.org/wiki/Java_(Programmiersprache)

Die Laufzeitumgebung macht Java-Programme plattformunabhängig, das heißt, sie laufen ohne weitere Anpassungen auf verschiedenen Rechnerarchitekturen und Betriebssystemen mit entsprechender Laufzeitumgebung. Sun selbst bietet Laufzeitumgebungen für die Betriebssysteme Linux, Solaris und Windows an. Andere Hersteller lassen eigene Java-Laufzeitumgebungen für ihre Plattform zertifizieren.

Robustheit
Viele der Designentscheidungen bei der Definition von Java reduzieren die Wahrscheinlichkeit ungewollter Systemfehler: Zu nennen sind die starke Typisierung, Garbage Collection, Ausnahmebehandlung sowie Verzicht auf Zeigerarithmetik.

Architekturneutralität
Java wurde so entwickelt, dass dieselbe Version eines Programms prinzipiell auf jeder beliebigen Computerhardware läuft, unabhängig von ihrem Prozessor oder anderen Hardwarebestandteilen.
-> und die passende Version der VM kommt sowieso immer durch die updates die mann eh machen muss, wenn man java-packagees von "sun" auf dem Rechner installiert hat. Ihr wollt mir doch nicht weiß machen, das ihr kein Javapaket installiert habt, um java apps aus dem internet im browser nutzen zu können****** ^^. Denn das keufe ich euch nicht ab!!

Leistungsfähigkeit
Java ist insbesondere auf Grund der dynamischen Optimierungen der Virtual Machine eine der effizientesten Programmiersprachen und liefert ähnliche Geschwindigkeiten wie C++- oder C#-Programme.[6][7]

Parallelisierbarkeit
Java unterstützt Multithreading, also den parallelen Ablauf von eigenständigen Programmmabschnitten... Moderne JVMs bilden einen Java-Thread auf Betriebssystem-Threads ab und profitieren somit von Prozessoren mit mehreren Rechenkernen.
-> ich glaube kaum das C/C++ dazu überhaupt geeignet wäre!

Vergleich mid C++

Java lehnt seine Syntax an die der Programmiersprache C++ an. Im Gegensatz zu C++ fanden jedoch komplexe Konstrukte wie Mehrfachvererbung oder die fehleranfällige Zeigerarithmetik keinen Einzug...Die interne Speicherverwaltung wird dem Java-Entwickler weitgehend abgenommen; dies erledigt die automatische Speicherbereinigung. Deshalb ist Java in vielen Fällen leichter zu handhaben als C++******..wobei es dem Garbage Collector (GC) obliegt, wann und ob überhaupt diese Objekte freigegeben werden.

Neben Mehrfachvererbung und Speicherarithmetik wurden bei der Entwicklung von Java noch weitere Konstrukte der Sprache C++ bewusst weggelassen:

Im Gegensatz zu C++ ist es in Java nicht möglich, Operatoren (zum Beispiel arithmetische Operatoren wie + und -, logische Operatoren wie && und ||, oder den Index-Operator []) zu überladen, das heißt in einem bestimmten Kontext mit neuer Bedeutung zu versehen. Dies sorgt einerseits für eine Vereinfachung der Sprache an sich und verhindert, dass Quellcodes mit Operatoren, die mit schwer nachvollziehbarer Semantik überladen werden, unleserlich gemacht werden. Andererseits würden benutzerdefinierte Typen mit überladenen Operatoren in C++ eher wie eingebaute Typen erscheinen können – vor allem numerischer Code wäre so mitunter einfacher nachzuvollziehen.
 
Zuletzt bearbeitet:
Ich glaub, wir verstehen dich schon ganz gut...
Und ich hab mehr als genug Erfahrung mit Java, um mir ein Urteil bilden zu können.
6 Jahre dürften für die "paar Programme" schon reichen, die man für Kritik haben muss.
Achte im Übrigen bitte ein wenig auf deine Rechtschreibung.

Zum...
C=Rückschritt: Gut, ist deine Meinung. Hab nichts dagegen, denk selbst aber anders.

C wird Aussterben: Irgendwann wird jede Sprache aussterben.
C hat aber in bestimmten Bereichen noch immer keinen würdigen Ersatz gefunden und wird sich deshalb noch eine Zeit halten müssen.
In nächster Zeit wird übrigens eine neue Version des Standards rauskommen, also dürfte es schon noch einige Leute interessieren.

Assembler: Im Bereich OS/Compiler auch weiterhin unverzichtbar. Daher nicht tot.
Auf exotischeren Maschinen als WinPCs/Linux muss man übrigens auch programmieren können.
Falls man Lust hat, einen C-Compiler schreiben: Assembler. Falls nicht: Jedes Programm in Assembler.
Und bevor man sowas macht, schadet x86-Erfahrung nicht.

Hersteller, die JavaVMs zertifizieren lassen: Da wären wir wieder beim Punkt.
Für ein eigenes Gerät muss man zuerst einmal eine plattformabhängige VM herstellen, die in C oder Assembler geschrieben wird.
Auch bei Handys und und und...
Man kann natürlich auch spezialisierte Hardware herstellen lassen, aber das Geld hat nicht jeder...

GC: Warum reduziert ein Garbage Collector Systemfehler? Da fehlt jede Logik.
Und bei einen resourcenintensiven Projekt ist man froh, die Möglichkeit für eine ans Projekt angepasste Speicherverwaltung zu haben. Wenn man das nicht braucht, gibts wie schon erwähnt GCs auch für C/C++.

Exceptions gibts in C++ auch.

Strenge Typisierung und Pointerverlust kann man als Vor- oder Nachteil sehen...

Zum Javapacket auf meinem Rechner: Doch, hab ich schon. Zwei. Plus einen Compiler und eine LinuxVM, die nur für Java gedacht ist.
Aber tut das irgendwas zur Sache?
Ich hab auch 3 C/C++-Compiler (VS6, VS2008, gcc) und 2 VMs (XP/suse) dafür ....

Leistung: Probiers aus. C ist nach wie vor an der Spitze.
Es ist prinzipiell gar nicht möglich, das bei gleicher Optimierung eine Runtime-abhängige Sprache wie Java/C# eine native jemals überholt.

Threads: Du behauptest allen Ernstes, mit C keine Multithreadprogramme machen zu können, weil die Sprache dafür nicht geeignet ist? :D
Wer kennt die andere Sprache zu wenig?

Mehrfachvererbung und Ops: Ich vermisse es jedes mal, wenn ich was mit Java/C# mache...

PS: Verlegen wir unsere Diskussion doch in den Smalltalkbereich, bevor sich ein Mod beschwert.
 
Zuletzt bearbeitet:
Ich habe mir leider genug von Dir angehört, das es da keinerlei Worte mehr bedarf****** Lassen wir das einfach sein! Du hast Deine verborte Meinung und ich meine! Ich habe lediglich mit Zitaten von dieser Seite hier:
http://de.wikipedia.org/wiki/Java_%2...miersprache) meine Ansichten dargelegt. Das hab ich mir nicht ausgedacht. 2. In den Vorlesungen haben das selber unsere Programierprofessoren erklärt, was Vor- und Nachteile bei den einzelnen Sprachen sind. Ich hab schon einige Sprachen in meinem Leben durch um sehr gut einzuschätzen was aus heutiger Sicht ein Rückschritt ist und was nicht..sorry****** Wenn für Dich grün gleich rot bedeutet und rot gleich grün, kann ich das nicht ändern. Viel Spaß damit!

Gruß
 
Zuletzt bearbeitet:
Zurück