Einen schönen guten Abend,
ich bin absoluter C Neuling und versuche mich gerade mit dem Buch
"C programmieren lernen für dummies" von Dan Gookin einzuarbeiten. Daher
bitte ich um Nachsicht für meine sicherlich triviale Frage.
Ich habe folgendes kleines Programm, unter Nutzung von CodeBlocks,
erstellt:
--------------------
#include <stdio.h>
main()
{
char txtstr[5];
strcpy(txtstr, "100°C");
printf (txtstr);
return(0);
}
--------------------
Das funktioniert soweit auch bis auf die Tatsache, das das ° Zeichen
nicht als solches ausgegeben wird sondern ersatzweise zwei Sonderzeichen
auf der Konsole abgebildet werden (siehe Screenshoot). Nun habe ich
gelesen, das es zum einen daran liegen kann, dass die Codepages nicht
übereinstimmen, aber daß man eine Ausgabe unter Zuhilfenahme des
Hexcodes der Codepage erreichen kann. Beispiel unter der Codepage 437
wäre das "°" Zeichen als 0xF8 zu erreichen.
Nehmen wir mal an, das Programm sollte unter verschiedenen Codepages
laufen. Wie bekommt man es hin, dass der notwendige Hexcode in den
auszugebenden Textstring "integriert" wird.
Wäre schön wenn mir da jemand die Augen öffnen könnte.
Danke
Torsten
Torsten K. schrieb:> Daher> bitte ich um Nachsicht für meine sicherlich triviale Frage.
Leider ist diese Frage alles andere als trivial und hat schon
Generationen von Softwareentwicklern zur Verzweiflung getrieben.
Wahrscheinlich geht ein Anfängerbuch gar nicht so weit, daß das Thema
irgendwann geklärt wird.
Tipp für den Anfang: Das Problem zurückstellen. Tipp für später (unter
Windows: Stichwort "wchar".
Viele Grüße
W.T.
. . schrieb im Beitrag
#5704378:
> Zusätzlich ist "char txtstr[5]" zu klein für den String.
Warum ist "char txtstr[5]" zu klein ? 100°C sind 5 Zeichen oder irre
ich?
txtstr hat Platz für 5 Bytes, deine Stringkonstante ist aber länger, je
nach nach Codepage 5 oder mehr Bytes für die Zeichen an sich plus 1 Byte
für den 0-Terminator. Der strcpy schreibt also über das Ende des
txtstr-Arrays hinaus. Dass es keinen Programmabsturz gibt, ist mehr oder
weniger Zufall ...
Danke Yalu...
das mit dem String und Deiner Erklärung ist schon mal Klasse... dann
macht auch der Satz des vorherigen Posts Sinn.
Denn Link schaue ich mir mal an...
Also die Stichworte wären u.a.
Escape-Sequenzen
Hexcode
Tabellen ( wie https://de.wikipedia.org/wiki/Codepage_850 )
Steuerzeichen und Schriftzeichen
Alte Assemblerbücher (mit guten Nachschlagetabellen)
(und weiter oben "Stack Overflow" (oder so..)
(https://stackoverflow.com)
> Übrigens kann man mit strncpy statt strcpy die Anzahl der kopierten> Bytes begrenzen, womit der Überlauf vermieden und ein möglicher Fehler> leichter erkannt wird.
Kein guter Rat. Der Nutzen von strncpy ist ziemlich zweifelhaft[1], da
er den Zielbuffer nicht immer mit einer 0 terminiert - das Ergebnis ist
kein gülter C-String und andere Routinen, die einen solchen erwarten
(wie z.B. der printf), lesen über den Buffer hinaus, was ebenfalls
falsch ist. Außerdem füllt strncpy den nichtgenutzen Bereich des Buffers
unnötigerweise mit Nullen.
[1] war ursprünglich designed, um Festbreitenfelder in Datei-Records zu
füllen.
Vor main gehört meiner Meinung nach noch ein int, immerhin lieferst du
mit return 0 einen Rückgabetyp zurück. Die klammern um die 0 kannst du
hier weglassen.
Yalu X. schrieb:> Strings in C haben immer ein NUL-Zeichen als Endekennung, was bei der> Dimensionierung von char[]-Variablen berücksichtigt werden muss.
@Torsten, wenn dies nicht in dem Buch behandelt wird, ist es Mist.
Außerdem würde ich in der printf Anweisung noch ein "\n" einbauen.
Die IDE mag zwar ihren eigenen Text in eine neue Zeile setzen, aber in
der Kommandozeile ist das nicht mehr der Fall.
foobar schrieb:>> Übrigens kann man mit strncpy statt strcpy die Anzahl der kopierten>> Bytes begrenzen, womit der Überlauf vermieden und ein möglicher Fehler>> leichter erkannt wird.>> Kein guter Rat. Der Nutzen von strncpy ist ziemlich zweifelhaft[1], da> er den Zielbuffer nicht immer mit einer 0 terminiert
Du hast recht, und ich ziehe hiermit meinen Tipp zurück.
strncpy verhindert zwar einen Überlauf beim Schreiben, aber danach
entstehen neue Probleme. Das war mir nicht (mehr) bewusst als ich den
obigen Beitrag schrieb.
PS: Wenn ich ahne, dass ich in einem Programm eine der Funktionen
strcpy, strncpy, strcat oder strncat benötigen werde, wechsle ich meist
schon vorher die Programmiersprache ;-)
Der Eindruck verfestigt sich: Es ist für eine einzelne Person unmöglich,
ein funktionierendes C-Programm zu schreiben. Zu viele Fallstricke und
Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt
werden könnten.
Fazit schrieb:> Der Eindruck verfestigt sich: Es ist für eine einzelne Person unmöglich,> ein funktionierendes C-Programm zu schreiben. Zu viele Fallstricke und> Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt> werden könnten.
Es gibt auch Personen, die deutlich weniger als C brauchen, um den
Überblick zu verlieren.
Fazit schrieb:> Zu viele Fallstricke und> Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt> werden könnten.
So viele sind das nicht. Das ist das schöne an C.
Und man kann sich auch eigene Stringfunktionen schreiben, die mehr
Sicherheit bieten.
Dann tauscht man Schnelligkeit gegen Sicherheit.
In C hat man die Wahl.
vn nn schrieb:> ImZweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und> Geschwindigkeit.
Im Zweifel nimmt man Rust.
Wer sich mit C ins Knie schießt, der wird das auch mit C++ tun.
Nano schrieb:> Im Zweifel nimmt man Rust.>> Wer sich mit C ins Knie schießt, der wird das auch mit C++ tun.
Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht
wegschießt.
Jetzt wird Rust alle Probleme lösen? Irgendwie schießen jetzt neue
Programmiersprachen wie die Pilze aus dem Boden.
zitter_ned_aso schrieb:> Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht> wegschießt.
Java war nie für die Systemprogrammierung gedacht und kann das auf
normaler Hardware auch gar nicht.
Daher konnte es C und C++ auch nie ersetzen und das war auch nie
geplant.
Bei Rust sieht das komplett anders aus, damit könntest du auch einen
Betriebssystemkernel programmieren.
Damit ist Rust eine theoretisch ernstzunehmende Alternative zu C und
C++. Theoretisch deswegen, weil noch einiges vom Drumherum fehlt und es
auch von der Marktakzeptanz abhängig ist, und wie sich das entwickelt
kann nur die Zeit zeigen. Von der Sprache selbst aber steht dem nichts
im Weg.
Yalu X. schrieb:
[...]
> PS: Wenn ich ahne, dass ich in einem Programm eine der Funktionen> strcpy, strncpy, strcat oder strncat benötigen werde, wechsle ich meist> schon vorher die Programmiersprache ;-)
Das wüsste ich ja zu gerne, welche das ist. :-)
zitter_ned_aso schrieb:> Jetzt wird Rust alle Probleme lösen? Irgendwie schießen jetzt neue> Programmiersprachen wie die Pilze aus dem Boden.
Das gab's doch eigentlich immer schon. Es gibt Modesprachen, die
plötzlich "aus dem Boden" schießen und alle Probleme lösen wollen, und
es gibt die bewährten Sprachen, die sich über Jahrzehnte halten und auch
noch da sind, wenn die neueste Modesprache schon wieder verwelkt ist.
Es gibt seit C11 (also seit ca, 8 Jahren) die Funktion strcpy_s im
Standard. Oder noch besser strncpy_s
Achtung: strcpy_s ergibt einen Leerstring, wenn die Quelle nicht ins
Ziel passt
strncpy_s kopiert noch eine '\0' ans Ende vom Ziel, wenn Platz ist.
Da gibt es noch mehr Funktionen, die einen Pufferüberlauf verhindern
können.
Wenn man weiß was man tut, ist C in Ordnung.
Aber wer weiß das schon.
Nano schrieb:> Wer sich mit C ins Knie schießt, der wird das auch mit C++ tun.
Kannst du dies näher erläutern? Um beim Beispiel des Threads zu bleiben,
klassische Probleme mit zu kurzen Strings oder Array-off-by-one sind in
modernem C++ so ziemlich komplett eliminiert, weshalb die Sprache gerade
für Anfänger ja auch viel einfacher ist. Man muss nicht erst kapieren,
wie ein String intern aufgebaut ist, um ihn zu verwenden, hat aber im
Hintergrund trotzdem auch sämtliche Möglichkeiten offen.
Wer natürlich bloß einen C++-Compiler verwendet, aber trotzdem weiterhin
C programmiert, wird sich auch weiterhin ins Knie schießen.
Aber ja, Rust könnte sich durchaus zu einer ernstzunehmenden Alternative
entwickeln.
Zumindest für den eingangs beschriebenen Fall
kann die Länge des Strings auch vom Compiler bestimmt werden:
1
chartxtstr[]="100°C\n\0";
Meine ich zumindest, hab es grad nicht getestet.
Dies unterliegt aber natürlich weiterhin den Einschränkungen,
die in diesem Thread schon angemerkt wurden.
Torsten K. schrieb:> Leider ist da nicht wirklich das Problem gelöst worden.
Welches Problem genau? Von einem mit Code::Blocks geschriebenen
C-Programm auf einer Konsole mit Codepage 437 ein "°" auszugeben?
Eine – wenn auch nicht besonders schöne – Möglichkeit besteht darin,
direkt den Zeichencode (hier F8) zu verwenden. Statt "100°C" schreibst
du dann entweder
"100\370C" (oktal)
oder
"100\xF8""C" (hexadezimal)
Die beiden "" im zweiten Beispiel verhindern, dass das "C" als dritte
Hexadezimalziffer interpretiert wird.
Um den Quellcode leserlicher zu halten, kannst du den Compiler mit der
Option
-fexec-charset=cp437
anweisen, im Quellcode enthaltene String- und Char-Literale automatisch
nach Codepage 437 zu konvertieren. Dann darfst du den String wie gewohnt
als "100°C" schreiben.
Hallo Yalu,
lieben Dank... das probiere ich gleich mal aus. Etwas ähnliches hatte
ich heute Nacht in einem alten C Buch von Kernighan/Ritchie gelesen. Mir
war nicht klar das Strings in der von Dir beschriebenen zweiten Weise
zusammen gesetzt werden können.
Danke
Christoph O. schrieb:> Zumindest für den eingangs beschriebenen Fall> kann die Länge des Strings auch vom Compiler bestimmt werden:> char txtstr[] = "100°C\n\0";> Meine ich zumindest, hab es grad nicht getestet.
Die \0 am Ende kannst du dir in dem Fall sparen, die hängt der Compiler
automatisch an. Großer Vorteil dieser Deklaration :)
MfG, Arno
Arno schrieb:> Die \0 am Ende kannst du dir in dem Fall sparen, die hängt der Compiler> automatisch an. Großer Vorteil dieser Deklaration :)
Danke für den Hinweis,
wieder was gelernt :-)
Meiner Meinung nach wäre es aber dennoch besser, gleich den Umgang mit
UTF-8 zu lernen.
Die alten Codepages sind eigentlich nicht mehr zeitgemäß und werden nie
besonders schön aussehen, wenn eine andere Codepage verwendet wird, als
die, für die das Programm compiliert wurde.
rbx schrieb:> Alte Assemblerbücher (mit guten Nachschlagetabellen)
Muss gar kein Assemblerbuch sein, das bekommt man u.U. auch gar nicht so
schnell.
(gemeint war auch konkret "Programmiersprache Assembler. Eine
strukturierte Einführung" von Reiner Backer mit seinen nützlichen
Tabellen.)
In dem C-Buch vom Erlenkötter sind die entsprechenden Tabellen für die
Frage oben auch im Anhang.
> Java war nie für die Systemprogrammierung gedacht und kann das auf> normaler Hardware auch gar nicht.> Daher konnte es C und C++ auch nie ersetzen und das war auch nie> geplant.
Java war als systemübergreifende bzw. plattformübergreifende
Programmiersprache konzipiert, um C oder C++ Programme eben nicht auf
einem anderen System neu schreiben zu müssen.
> ImZweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und> Geschwindigkeit.
totaler Blödsinn; C++ ist eine Obermenge von C und deshalb gleich
schnell oder eben langsamer - das merkt man aber erst auf alten Rechnern
und bei größeren Programmen.
Auch in Puncto Sicherheit gibt es bessere Alternativen, nämlich ADA, das
im u.a. im Militärbereich verwandt wird.
C++ hat sich wegen u.a. wegen bunter Windows-Fenster, der besseren IDE,
etc. durchgesetzt; insbesondere Fenstertechnik und graphische
Oberflächen funktionierte mit C zur damaligen Zeit praktisch nicht.
statt 100°C schreibst Du notfalls 100 Grad Celsius und schon ist das
Problem gelöst - primitiv, aber auch primitive Lösungen sind am Ende
Lösungen; es geht um Improvisation und das können/wollen die meisten
heute leider nicht mehr, weil jeder unbedingt mit dem Kopf durch die
Wand will.
> der Hinweis von Yalu funktioniert... mehr wollte ich ja erstmal> nicht.
Nicht wirklich. Dein Wunsch war: "das Programm sollte unter
verschiedenen Codepages laufen." Schalt doch mal auf z.B. russisch um
(CP878), da bekommst du dann statt des ° nun ein Ь - das ° liegt dort
auf 0x9c.
Wie die erste Antwort schon sagte: "Leider ist diese Frage alles andere
als trivial und hat schon Generationen von Softwareentwicklern zur
Verzweiflung getrieben." Mit UTF-8 wurde es dann einfacher und die
meisten Betriebssysteme haben darauf umgestellt - Microsoft ist immer
noch am flicken und hat dabei ziemliches Chaos angerichtet (richtig
lustig wird's, wenn du es mit Dateinamen zu tun bekommst) ...
> Nicht wirklich. Dein Wunsch war: "das Programm sollte unter> verschiedenen Codepages laufen." Schalt doch mal auf z.B. russisch um> (CP878), da bekommst du dann statt des ° nun ein Ь - das ° liegt dort> auf 0x9c.>> Wie die erste Antwort schon sagte: "Leider ist diese Frage alles andere> als trivial und hat schon Generationen von Softwareentwicklern zur> Verzweiflung getrieben."
das Problem ist, daß CodeBlocks unter Windows nicht ganz ANSI-conform zu
sein scheint - ich bekomme sofort eine Fehlermeldung, weil die
Headerdatei string.h fehlt, usw.
Hier meine Lösung:
#include <stdio.h>
#include <string.h>
int main(void)
{
char txtstr[10];
strcpy(txtstr, "100°C");
printf("\n%s\n",txtstr);
}
S. B. schrieb:>> Java war nie für die Systemprogrammierung gedacht und kann das auf>> normaler Hardware auch gar nicht.>> Daher konnte es C und C++ auch nie ersetzen und das war auch nie>> geplant.> Java war als systemübergreifende bzw. plattformübergreifende> Programmiersprache konzipiert, um C oder C++ Programme eben nicht auf> einem anderen System neu schreiben zu müssen.
Java ist keine Sprache für die Systemprogrammierung. Punkt.
Guck nach was Systemprogrammierung bedeutet. Anwendungsprogrammierung
ist keine Systemprogrammierung.
Es hat einen Garbage Collector, eine Runtimeumgebung und Bytecode und
ist auch nicht Echtzeitfähig, das sind alles Dinge, die es nicht für
einen Kernel geeignet machen.
Mit C, C++ und Rust kannt du einen Kernel aber sehr wohl programmieren.
> Java ist keine Sprache für die Systemprogrammierung. Punkt.> Guck nach was Systemprogrammierung bedeutet. Anwendungsprogrammierung> ist keine Systemprogrammierung.
Hast Du meinen obigen Post nicht gelesen oder nicht verstanden ?!
Nochmal als Wiederholung:
Java ist eingeführt worden, um unabhängig von der Plattform bzw. dem
jeweiligen Betriebssystem des Rechners programmieren zu können. Punkt!
foobar schrieb:> Mit UTF-8 wurde es dann einfacher und die> meisten Betriebssysteme haben darauf umgestellt - Microsoft ist immer> noch am flicken und hat dabei ziemliches Chaos angerichtet (richtig> lustig wird's, wenn du es mit Dateinamen zu tun bekommst) ...
Man kann das jetzt allerdings nicht Microsoft vorwerfen.
Viele wollen in der Eingabeaufforderung "cmd.exe" noch ihre alten
Textgui Anwendungen laufen lassen, wie man sie von edit.exe oder Turbo
Pascal 6 her kannte.
Die ganzen Rahmen und Rahmenzeichen liegen in den länderspezifischen
Codepages alle in der höheren 128 Bit Ebene so eines 1 Byte großen
Zeichens und bei UTF-8 sind die ganz woanders.
Man denke da bspw. an das UTF-8 Zeichen U+2566, welches in Codepage 850
unter 0xCB zu finden ist.
https://de.wikipedia.org/wiki/Codepage_850https://de.wikipedia.org/wiki/Rahmenzeichen
Würde man die Eingabeaufforderung auf UTF-8 umstellen, dann würde dieses
Rahmenzeichen als solches nicht mehr dargestellt werden und die
Abwärtskompatibilität flöten gehen.
Das gleiche gilt für länderspezifische Buchstaben.
Da Microsoft aber schlecht die Software von Drittsoftwareherstellern
ändern kann, bleibt es bei den üblichen Codepages zwecks
Abwärtskompatibilität.
Ein Vorwurf an Microsoft ist daher nicht gerechtfertigt.
Fairer wäre, wenn man in der Powershell nachschauen würde, wie es da
gelöst ist.
S. B. schrieb:>> Java ist keine Sprache für die Systemprogrammierung. Punkt.>> Guck nach was Systemprogrammierung bedeutet. Anwendungsprogrammierung>> ist keine Systemprogrammierung.> Hast Du meinen obigen Post nicht gelesen oder nicht verstanden ?!> Nochmal als Wiederholung:> Java ist eingeführt worden, um unabhängig von der Plattform bzw. dem> jeweiligen Betriebssystem des Rechners programmieren zu können. Punkt!
Entscheidend ist doch folgendes, widersprichst du mir jetzt oder
widerspricht du mir nicht?
Wenn du mir nicht widersprichst, was willst du mir dann sagen?
Wofür Java gemacht wurde, weiß ich nämlich selber, aber der Kontext ist
das was zitter_ned_so oben gesagt hat.
Siehe nochmal mein Kommentar auf seine Aussage:
Beitrag "Re: C Neuling benötigt Schubs in die richtige Richtung"
Sowie hier seine Aussage:
Beitrag "Re: C Neuling benötigt Schubs in die richtige Richtung"
S. B. schrieb:> das Problem ist, daß CodeBlocks unter Windows nicht ganz ANSI-conform zu> sein scheint - ich bekomme sofort eine Fehlermeldung, weil die> Headerdatei string.h fehlt, usw.
Das hängt auch von den Compileroptionen ab.
Oder waren es "nur" Warnungen?
S. B. schrieb:> das Problem ist, daß CodeBlocks unter Windows nicht ganz ANSI-conform zu> sein scheint - ich bekomme sofort eine Fehlermeldung, weil die> Headerdatei string.h fehlt, usw.> Hier meine Lösung:>> #include <stdio.h>> #include <string.h>>> int main(void)> {> char txtstr[10];> strcpy(txtstr, "100°C");> printf("\n%s\n",txtstr);> }
Also folgender Code läuft bei mir unter Nutzung des GNU GCC Compilers in
CodeBlocks jetzt ohne Probleme
#include <stdio.h>
int main()
{
char txtstr[7];
strcpy(txtstr, "100\xF8""C");
printf (txtstr);
return(0);
}
Nano schrieb:> zitter_ned_aso schrieb:>> Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht>> wegschießt.>> Java war nie für die Systemprogrammierung gedacht und kann das auf> normaler Hardware auch gar nicht.
Falsch. Java hieß ursprünglich Oak und war genau dafür gedacht, als
Alternative zu C++ [1] [2]
Sowohl der Fokuswechsel - zunächst auf Applets im Web, später für
diverse andere Verwendungen - kam erst später, weil sich der
ursprüngliche Projektplan zerschlagen hatte. Der Namenswechsel von Oak
zu Java war i.W. durch markenrechtliche Problem begründet. [3]
> Daher konnte es C und C++ auch nie ersetzen und das war auch nie> geplant.
Doch, genau dafür war die Sprache und anfängliche Implementierung
explizit vorgesehen und wurde auch genau dafür benutzt.
> Bei Rust sieht das komplett anders aus, damit könntest du auch einen> Betriebssystemkernel programmieren.
Das geht mit Sprachen, die wie Oak oder Java zunächst eine Übersetzung
in Bytecode vorsehen, ebenfalls, das Verfahren ist lediglich anders als
man es üblicherweise mit C/C++ tut. Ein einschlägiges Verfahren besteht
darin, den Bytecodeiinterpreter bzw Compiler in der jeweiligen Sprache
selber zu implementieren. Ich habe so etwas auch schon mal gemacht,
laange bevor Java - oder Oak - überhaupt existierte.
Im übrigen ist es ein gängiger Irrtum, Systemprogrammierung auf die
Programmierung von Betriebssystemkernen zu reduzieren.
> Damit ist Rust eine theoretisch ernstzunehmende Alternative zu C und> C++.
Klar. Aber nicht die einzige auch praktisch ernstzunehmende Alternative
und auch nicht aus diesem Grund.
> Theoretisch deswegen, weil noch einiges vom Drumherum fehlt und es> auch von der Marktakzeptanz abhängig ist, und wie sich das entwickelt> kann nur die Zeit zeigen. Von der Sprache selbst aber steht dem nichts> im Weg.
Und exakt das gilt auch für Oak, Java, C#, Lisp und viele andere mehr.
[1] "he Java platform and language began as an internal project at Sun
Microsystems in December 1990, providing an alternative to the C++/C
programming languages."
[2] "Because they were developing an embedded system with limited
resources, they decided that C++ needed too much memory and that its
complexity led to developer errors"
[3] "In 1994, Sun renamed the Oak language to Java after a trademark
search revealed that Oak Technology used the name Oak"
Ich schrieb "und kann das auf normaler Hardware auch gar nicht".
Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist
mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche
Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86
verstehen.
Und zum Thema:
"[1] "he Java platform and language began as an internal project at Sun
Microsystems in December 1990, providing an alternative to the C++/C
programming languages."
Das sagt gar nichts aus, denn C++ und C wurde selbstverständlich damals
auch für die Anwendungsentwicklung eingesetzt.
Entscheident ist also der Kontext.
Es bleibt aber das Problem mit den genannten Schwächen, siehe oben,
warum Java für die Systemprogramierung nicht geeignet ist.
Und selbst wenn etwas irgendwie geht, z.b. weil du ne Laufzeitumgebung
in den Kernel einbaust und dann prebootest, dann bedeutet das nicht,
dass sich etwas dafür auch eignet.
> Im übrigen ist es ein gängiger Irrtum, Systemprogrammierung auf die> Programmierung von Betriebssystemkernen zu reduzieren.
Das habe ich nicht getan, der Kernel ist ein Beispiel der dafür zu
Veranschaulichung steht.
> Wenn du mir nicht widersprichst, was willst du mir dann sagen?
Vielleicht verstehe ich ja was falsch - für mich ist das Problem des TO
ein Problem der Anwendungsprogrammierung.
Systemprogrammierung sind für mich eher Treiber für Schnittstellen, etc.
- was hat das jetzt mit der Frage des TO zu tun?
> Das hängt auch von den Compileroptionen ab.> Oder waren es "nur" Warnungen?
GNU C Compiler unter Linux, jede Menge Warnungen; bei Ausführung der
Objektdatei gibt's dann einen 'core dumped'.
Es wird u.a. eine Deklaration von strcpy verlangt oder Einbindung der
Headerdatei string.h
Letztendlich ist das Problem des TO gelöst.
> Ich schrieb "und kann das auf normaler Hardware auch gar nicht".> Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist> mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche> Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86> verstehen.
Bei C, C++, usw. ist alles mehr oder weniger abhängig vom Betriebsystem.
Bei Macintosh, Linux, usw. würde das C oder C++ Windows-Programm unter
Umständen nicht mehr laufen (mein Compiler unter Linux quittiert ja
schon das obige simple Windows-Programm mit Warnungen - wenn es
komplexer wäre, dann sähe es düster aus).
Das Theater gibt es bei Java nicht, da reicht eine Laufzeitumgebung und
es läuft dann auf jedem Betriebsystem ohne Änderung.
S. B. schrieb:>> Wenn du mir nicht widersprichst, was willst du mir dann sagen?> Vielleicht verstehe ich ja was falsch - für mich ist das Problem des TO> ein Problem der Anwendungsprogrammierung.> Systemprogrammierung sind für mich eher Treiber für Schnittstellen, etc.> - was hat das jetzt mit der Frage des TO zu tun?
Ja, das wird wohl der Grund sein.
Wir führen hier ein Nebenthema um die Programmiersprachen allgemein, das
sich daraus entwickelt hat.
Zitter_ned_aso Posting, welches lautete:
> Darum kam doch Java raus oder? Damit man sich das Bein mit C++ nicht> wegschießt.
als Antwort auf meine Erwähnung von Rust, mag zwar für die
Anwendungsprogrammierung stimmen, suggeriert aber auch bzw. kann man es
so interpretieren, dass Java rauskam um C++ vollständig zu ersetzen oder
dies tun könnte.
Und das geht halt bei der Systemprogrammierung nicht mehr, mit Rust
allerdings schon.
Deswegen habe ich erwähnt, das Java C++ nicht ersetzen kann mit Hinweis
auf die Systemprogrammierung.
S. B. schrieb:>> Ich schrieb "und kann das auf normaler Hardware auch gar nicht".>> Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist>> mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche>> Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86>> verstehen.> Bei C, C++, usw. ist alles mehr oder weniger abhängig vom Betriebsystem.> Bei Macintosh, Linux, usw. würde das C oder C++ Windows-Programm unter> Umständen nicht mehr laufen (mein Compiler unter Linux quittiert ja> schon das obige simple Windows-Programm mit Warnungen - wenn es> komplexer wäre, dann sähe es düster aus).> Das Theater gibt es bei Java nicht, da reicht eine Laufzeitumgebung und> es läuft dann auf jedem Betriebsystem ohne Änderung.
Ja, wenn du für ein spezifisches Betriebssystem in C oder C++ Programme
schreiben willst und du die Systemlibs nicht selbst implementieren
willst, dann ist das für gewöhnlich so, aber mit C oder C++ kannst du
auch ein Betriebssystem, Teile davon oder die Treiber dafür oder eine
Firmware für die Hardware schreiben.
Java kann ohne Laufzeitumgebung oder spezieller Java CPU die Java
Bytecode direkt versteht nichts mehr.
Die Sprachen sind somit einfach grundverschieden um sagen zu können,
dass Java entwickelt wurde um C++ vollständig zu verdrängen oder es
wenigstens zu können.
Rust könnte C++ dagegen sehr wohl vollständig verdrängen wenn man
wollte, die Sprache gibt das von den Features her her.
> Die Sprachen sind somit einfach grundverschieden um sagen zu können,> dass Java entwickelt wurde um C++ vollständig zu verdrängen oder es> wenigstens zu können.
Mit dem Aufkommen der Android Smartphones hat sich die Frage des
Fortbestandes von Java bzw. dem Nutzen gegenüber C++ geklärt :-)
> Rust könnte C++ dagegen sehr wohl vollständig verdrängen wenn man> wollte, die Sprache gibt das von den Features her her.
Rust kenne ich noch nicht - ich Laufe der IT Geschichte ist so manche
hochgepriesene Sprache schnell wieder in der Versenkung verschwunden
(z.B. Ruby on rails wollte ich mal starten, habe es dann aber sein
gelassen);
alles sehr unbeständig bzw. Nischenmarkt.
S. B. schrieb:> Auch in Puncto Sicherheit gibt es bessere Alternativen, nämlich ADA, das> im u.a. im Militärbereich verwandt wird.
Die Sicherheitsdenke ist vermutlich die gleiche wie beim Autofahren.
Allradantrieb, Antiblockersysteme, Sicherheitsgurt uvm. Technisch
sicherer, aber das wird oft so genutzt (rücksichtsloser fahren), dass am
Ende fast das selbe herauskommt.
Bei Haskell heißt es öfter: keine Tests.
Wenn sich das einbürgert, würden die guten Eigenschaften dieser
Programmiersprache missbraucht werden, vor allem, um Kosten zu sparen
o.a. Gründen.
Haskell zeigt noch etwas anderes: alles was irgendwie nicht C-verwandt
ist, erscheint unkoscher. Der Hintergrund ist aber eher, weil C so
einfach bzw. besser: pragmatisch gestrickt ist.
Oder Wörter-Psycho:
Java: Kaffee, Kuchen, Insel..
Haskell: Lambda Kalkül, List Komprehensions, Monaden.. (Hilfe..)
C: In den Fuß schießen -> hat mit dem Zeigen zu tun bzw. auf den Fuß
zeigen - und für den ein oder anderen (vermutl.) mit schneller ziehen?
Früher in Zeitschriften: Vitamin C
Basic: passt ganz gut, aber der Begriff verschleiert etwas zu unrecht
den großen Bruder..
C++ ..ganz offenbar eine Weiterentwicklung, die sich (versehentlich)
ständig wiederholt
S. B. schrieb:>> Die Sprachen sind somit einfach grundverschieden um sagen zu können,>> dass Java entwickelt wurde um C++ vollständig zu verdrängen oder es>> wenigstens zu können.> Mit dem Aufkommen der Android Smartphones hat sich die Frage des> Fortbestandes von Java bzw. dem Nutzen gegenüber C++ geklärt :-)
Android hat einen Kernel der in C geschrieben wurde. Die meisten dürften
den kennen. ;)
>> Rust könnte C++ dagegen sehr wohl vollständig verdrängen wenn man>> wollte, die Sprache gibt das von den Features her her.> Rust kenne ich noch nicht - ich Laufe der IT Geschichte ist so manche> hochgepriesene Sprache schnell wieder in der Versenkung verschwunden> (z.B. Ruby on rails wollte ich mal starten, habe es dann aber sein> gelassen);> alles sehr unbeständig bzw. Nischenmarkt.
Ja, diese Risiken gibt es bei neuen Sprachen leider immer.
S. B. schrieb:>> ImZweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und>> Geschwindigkeit.> totaler Blödsinn; C++ ist eine Obermenge von C und deshalb gleich> schnell oder eben langsamer - das merkt man aber erst auf alten Rechnern> und bei größeren Programmen.
Bullshit, in jedem größeren Programm kann der Compiler mit modernem C++
wesentlich besser optimieren, und das bei mehr Comfort und weniger
Fehleranfälligkeit, stichwort zero cost abstraction.
Und ja, ich schreibe beruflich Hauptsächlich in C.
S. B. schrieb:> C++ hat sich wegen u.a. wegen bunter Windows-Fenster, der besseren IDE,> etc. durchgesetzt; insbesondere Fenstertechnik und graphische> Oberflächen funktionierte mit C zur damaligen Zeit praktisch nicht.
Natürlich. Deswegen verwendet man es ja auch im Serverbereich. Nicht
etwa, weil es Dinge wie Objektorientierung, verünftige Typisierung,
generische Programmierung und Co. bietet. Und welche "bessere IDE" soll
das sein?
Bist du ein Satireprojekt?
Wolfgang S. schrieb:> "Because they were developing an embedded system with limited> resources, they decided that C++ needed too much memory and that its> complexity led to developer errors"
C++ braucht zuviele Resourcen und deswegen brauchen wir Java? Selten so
gelacht.
S. B. schrieb:> Es wird u.a. eine Deklaration von strcpy verlangt oder Einbindung der> Headerdatei string.h
Tja, hättest wohl string.h einbinden sollen.
Nano schrieb:> Deswegen habe ich erwähnt, das Java C++ nicht ersetzen kann mit Hinweis> auf die Systemprogrammierung.
Und weil die Performance einfach grottig ist.
S. B. schrieb:> Mit dem Aufkommen der Android Smartphones hat sich die Frage des> Fortbestandes von Java bzw. dem Nutzen gegenüber C++ geklärt :-)
Fortbestand? Ja. Nutzen? Nö.
rbx schrieb:> Die Sicherheitsdenke ist vermutlich die gleiche wie beim Autofahren.> Allradantrieb, Antiblockersysteme, Sicherheitsgurt uvm. Technisch> sicherer, aber das wird oft so genutzt (rücksichtsloser fahren), dass am> Ende fast das selbe herauskommt.>> Bei Haskell heißt es öfter: keine Tests.
Wer ADA einsetzen (muss) weil Military, Aerospace oder sonstwas, wird
sich Tests nicht sparen können...
vn n. schrieb:> Wer ADA einsetzen (muss) weil Military, Aerospace oder sonstwas, wird> sich Tests nicht sparen können...
Man beachte die rein begriffliche Verwandtschaft zwischen ADA und
Haskell.
Von Charles Babbage habe ich mal gelesen, dass er deswegen auf Computer
kam, weil er viele Rechenfehler in einer Nachschlagetabelle erkannt
hatte und so auf die Idee einer Automation kam.
Man sieht aber heute, bei guter Automation am Beispiel der
Rechtschreibkontrolle, dass sie ihre Grenzen hat (z.B.
Erkennungsschwächen) wie auch dass sie missbraucht wird
(Qualitätsnachlass bei Tageszeitungen, Mitarbeitereinsparungen z.B.)
Christoph O. schrieb:> Zumindest für den eingangs beschriebenen Fall> kann die Länge des Strings auch vom Compiler bestimmt werden:> char txtstr[] = "100°C\n\0";> Meine ich zumindest, hab es grad nicht getestet.
Ich habe nochmal die Variante von Christoph ausprobiert... und die ist
sehr schön da kurz:
---------------------
#include <stdio.h>
// #include <string.h>
char txtstr[] = "100\xF8""C\n";
int main()
{
printf (txtstr);
return(0);
}
---------------------
strcpy habe ich rausgeschmissen da unnütz an der Stelle
Danke nochmal für die Tipps... hab heute viel dazugelernt.
Nano schrieb:> Ich schrieb "und kann das auf normaler Hardware auch gar nicht".> Sun wollte für Java Chips bauen, die Java Bytecode verstehen, das ist> mir sehr wohl bekannt, deswegen sagte ich "normale Hardware", solche> Chips sind aber etwas ganz anderes, als das, was wir unter ARM und x86> verstehen.
In Irrtum wird nicht besser, wenn man ihn mehrfach wiederholt.
Man benötigt weder C noch eine andere Sprache, um Sprachen des Typs von
Oak, Java usw. auf "normaler Hardware", also den derzeit gebräuchlichen
CISC/RISC-Prozessoren verwenden zu können, lediglich für den initialen
Bootstrap wird es bequemer, wenn man für die Unterstützung einer neuen
ISA einen Compiler in einer beliebigen genügend brauchbaren
Programmiersprache zur Verfügung hat. Sobald der damit implementierte
Codegenerator/Interpreter seinen Zweck erfüllt hat, kann man ihn
wegwerfen.
https://en.wikipedia.org/wiki/Tombstone_diagram
Vorsorglich, dies ist nicht die Behauptung, diese seit der frühen
Steinzeit bekannte einschlägige Methode sei der einzige oder der beste
Weg. Wichtig ist mir aber der Hinweis, daß dies kein bloß theoretisches
Verfahren ist und daß es jedenfalls für eine Widerlegung der obigen
pauschalen Behauptung reicht.
Ich nehme an, daß dies dem OP genau so wenig hilft wie die Hinweise auf
Rust. Jedoch habe ich etwas dagegen, wenn man Anfängern in dieser Weise
einen Bären aufbindet.
Daß viele der besagten Sprachen samt ihrer Laufzeitumgebung einen
Anfänger, der bereits an dem eingangs skizzierten Problem scheitert, vor
den vielen Ideosynkrasien der Architektur der darunterliegenden
"normalen Hardware" abschirmt, wird genau so wenig bestritten wie der
Sachverhalt, daß beim praktischen Einsatz von C hilfreich ist, ein
gewisses Verständnis derselben zu haben.
Bevor man hier aber mit Ratschlägen um sich wirft, sollte man erst mal
herauszubringen versuchen, welchen Zweck der OP mit dem Einsatz bzw.
Erlernen von C verfolgt. Vielleicht wäre ein schlichtes "Ja" auf "Aber
vielleicht ist C dafür die falsche Programmiersprache" die richtige
Antwort gewesen. Eine Sammlung von Rezepten resp. die Suche nach
"allgemeingültigen Lösungen" als Ersatz eines ausreichenden
Sprachverständnisses - mit dem man sich solche Fragen dann weitgehend
selber beantworten kann oder wenigstens weiss, wo man die Antworten
findet -, das ist der falsche Weg.
>> Und zum Thema:> "[1] "he Java platform and language began as an internal project at Sun> Microsystems in December 1990, providing an alternative to the C++/C> programming languages.">> Das sagt gar nichts aus, denn C++ und C wurde selbstverständlich damals> auch für die Anwendungsentwicklung eingesetzt.
Das für sich genommen besagt, daß Oak/Java ursprünglich als Alternative
zu C++ gedacht war. Im Zusammenhang mit dem Projekt, für das die
Sprache spezifiziert wurde, läßt sich auch erkennen, daß der intendierte
Zweck die Systemprogrammierung von embedded systems, im Speziellen einer
konkreten Set-top-Box war.
Oak mag nach der Eiche vor Goslings Zimmer benannt sein, expandiert
wurde dies als Object Application Kernel. Ein Folgeprojekt war "LiveOak"
mit der expliziten Intention, mit Oak ein unspezialisiertes kleines OS
zu realisieren.
> Entscheident ist also der Kontext.
Eben. Wenn man den nicht kennt, neigt man zu Fehlschlüssen.
>> Es bleibt aber das Problem mit den genannten Schwächen, siehe oben,> warum Java für die Systemprogramierung nicht geeignet ist.
Auch diese Behauptung könnte man hinterfragen, ich bezweifle aber, daß
das dem OP sonderlich weiterhilft.
>> Und selbst wenn etwas irgendwie geht, z.b. weil du ne Laufzeitumgebung> in den Kernel einbaust und dann prebootest, dann bedeutet das nicht,> dass sich etwas dafür auch eignet.
Ex falso quodlibet.
>>> Im übrigen ist es ein gängiger Irrtum, Systemprogrammierung auf die>> Programmierung von Betriebssystemkernen zu reduzieren.>> Das habe ich nicht getan, der Kernel ist ein Beispiel der dafür zu> Veranschaulichung steht.
Auch in Oak ließe sich ein Kernel programmieren. Dies wurde seinerzeit
ja sogar begonnen. Als Veranschaulichung der Eigenschaften und Vorzüge
von Rust taugt das auch deswegen nicht.
vn n. schrieb:> Wolfgang S. schrieb:>> "Because they were developing an embedded system with limited>> resources, they decided that C++ needed too much memory and that its>> complexity led to developer errors">> C++ braucht zuviele Resourcen und deswegen brauchen wir Java? Selten so> gelacht.
Quark. Dies ist ein paraphrasiertes Zitat vom Anfang der 90er,
betreffend den direkten Vorläufer von Java, Oak.
Oak und damit Java hatte seine ersten Ursprünge übrigens bereits in den
70ern und war von Bill Joy damals spezifisch für die Programmierung
eines kleinen OS entworfen worden, basierend auf den Erfahrungen mit
Mesa und C. C++, das damals ein ziemlich grobschlächtig implementierter
Versuch war, das Konzept von Simula 67 (eine Erweiterung von Algol 60,
gedacht für discrete event simulation, die erste objektorientierte
Sprache überhaupt) auf C zu übertragen, erwies sich dafür zu der Zeit
als zu plump und unbrauchbar. Daß der Ansatz, sich auf Basis einer
wackeligeren Unterlage (C statt Algol) viel mehr vorzunehmen ("zero
abstraction"), nicht so einfach werden würde, wie Stroustrup sich das
vorstellte, hat damals kaum jemanden überrascht, der sich mit dem
Entwurf und der Implementierung von Programmiersprachen beschäftigte.
Daß man durch jahrzehntelanges Nachbessern von Sprache, Library und
Compiler und Benutzungseinschränkungen jede Sprache für die meisten
Anwendungsfälle brauchbar machen kann, irgendwie, ist unbestritten.
Eleganter wird eine Sprache dadurch nur selten. Und wie schlank oder
bloated C++ oder Java heute sind, spielt weder für die Betrachtung, wo
Java herkommt, eine Rolle noch für die Frage, welche Spracheigenschaften
für die OS-Entwicklung erforderlich und förderlich sind.
Im übrigen diente das obige Zitat lediglich dazu, eine Behauptung zu
widerlegen
Dirk B. schrieb:> So wie du printf gerade verwendest, geht das irgenwann schief. Nämlich> dann, wenn in dem String ein % enthalten ist.> printf("%s", txtstr);oderfputs(txtstr, stdout);oder wenn am Ende kein \n> ist (das hängt puts automatisch an)puts(txtstr);
Hallo Dirk,
das habe ich natürlich gleich ausprobiert und dabei bis auf die Tatsache
das bei der ersten Version noch eine Leerzeile folgt keinen Unterschied
oder Problem feststellen können. Kannst Du Deinen Hinweis bitte
präzisieren?
Anbei der Quellcode von obigem Bild mit dem Titel Run #1
----
#include <stdio.h>
// #include <string.h>
char txtstr[] = "100%\n";
int main()
{
printf ("%s", txtstr);
return(0);
}
----
und hier der Quellcode von obigem Bild mit dem Titel Run #2
----
#include <stdio.h>
// #include <string.h>
char txtstr[] = "100%";
int main()
{
printf ("%s", txtstr);
return(0);
}
----
zitter_ned_aso schrieb:> char str[]="ddd%ddd";>> printf(str);>> das hat er damit gemeint.
Ja habe ich eben ausprobiert und Du hast Recht...
siehe zweites Bild
KORREKTUR:
"ddd%ddd" ist wahrscheinlich kein gutes Beispiel ;-)
So ist es besser:
char str[]="Preisnachlas von 5% fuer ";
printf(str);
%f wird als Platzhalter für eine Fließkommazahl betrachtet. Und die
Ausgabe ist falsch.
char str[]="Preisnachlass von 5%% fuer alle IT-Buecher";
wäre richtig.
https://de.wikibooks.org/wiki/C-Programmierung:_Einfache_Ein-_und_Ausgabe
Ja... auch hier richtig. Aber ich denke, das kommt auch immer darauf an
WAS man gerade ausgeben will.
----
#include <stdio.h>
// #include <string.h>
char txtstr[] = "Preisnachlaß von 5% fuer ";
int main()
{
printf (txtstr);
return(0);
}
----
Für mein obiges Beispiel passt es zumindest und das war was ich wollte.
Deinen Hinweis greife ich trotzdem auf und werde ihn verfolgen. Danke
Torsten K. schrieb:> und Du hast Recht
Dirk war das. Ich kam nur mit einem Beispiel.
Fuer bestimmte Sonderzeichen gibt es unter C spezielle "Kodierungen",
wenn man sie in einem String darstellen will.
%% fuer %
\" fuer "
usw..
Das mit dem %% gilt aber nur für den Formatstring von printf.
Denn das % leitet einen Formatspecifier ein.
Einfache Strings können einfacher mit puts ausgegeben werden.
> Bullshit, in jedem größeren Programm kann der Compiler mit modernem C++> wesentlich besser optimieren, und das bei mehr Comfort und weniger> Fehleranfälligkeit, stichwort zero cost abstraction.
Mag schon sein, daß der C++ Compiler besser ist, weil der C Compiler
nicht mehr weiterentwickelt wird gibt's natürlich zeitliche Einbußen.
Deswegen ist das Endergebnis aber nicht unbedingt besser - das ist der
Irrtum, insbesondere der BWL-Personaler.
> Und ja, ich schreibe beruflich Hauptsächlich in C.
LOL, und dann kritisierst Du an C rum ???
Wir haben doch einen 'blühenden?' Arbeitsmarkt, such Dir doch einen
neuen Job, wo es nur um dieses f**k C++ geht - gibt doch genug
Arbeitgeber, die genau das und nichts anderes mehr suchen!
Bei soviel Mangel überall sollte das doch wirklich kein Problem sein?
Du bist also beruflich inkonsequent, zumal Du ja genug BE hast :-)
> Natürlich. Deswegen verwendet man es ja auch im Serverbereich. Nicht> etwa, weil es Dinge wie Objektorientierung, verünftige Typisierung,> generische Programmierung und Co. bietet. Und welche "bessere IDE" soll> das sein?> Bist du ein Satireprojekt?
bei C++ ist das logischerweise die Visual C++ Schiene und die dürfte
besser sein als irgendeine GNU C Variante oder was immer Du unter C
nutzt.
C++ ist nach C gekommen und damit ist die Weiterentwicklung von C
zugunsten von C++ mehr oder weniger zum Erliegen gekommen.
Was erwartest Du?
Wenn es nicht den Mikrocontroller-Bereich gäbe, wäre es vorbei mit C!
Ich bezweifle ja nicht, daß C++ seine Vorteile hat - aber die
Systemschiene ist mehr oder weniger gelaufen, wenn Du nicht gerade in
der Wartung als Sysadmin tätig bist.
Ansonsten ist Anwendungsprogrammierung gefragt und da schlägt sich Java
besser.
> C++ braucht zuviele Resourcen und deswegen brauchen wir Java? Selten so> gelacht.
im Vergleich zu C aber schon und das verschweigt der C++ Fan.
> Tja, hättest wohl string.h einbinden sollen.
siehe Programm, habe ich ja gemacht. Aber es ist ein Beispiel, welche
kleinen Programmiertücken ein anderes Betriebsystem, etc. mit sich
bringt.
Das wäre in Java nicht notwendig gewesen wegen JRE - und zum 100. Mal,
es geht hier nicht um Systemprogrammierung! Das ist nur eine schöne
Nische für wenige.
> Fortbestand? Ja. Nutzen? Nö.
Du kannst Anwendungsapps für Android programmieren - und damit wird u.a.
wenigstens noch Kleingeld gemacht.
Von Deiner Systemprogrammierung, wo nur einige wenige Experten vom
Kuchen profitieren, kann die Masse jedenfalls nicht leben, oder?
> Wer ADA einsetzen (muss) weil Military, Aerospace oder sonstwas, wird> sich Tests nicht sparen können...
braucht das jeweilige Unternehmen ja auch nicht, weil die
Endverkaufspreise entsprechend sind und diese Preise auch ohne zu zucken
gezahlt werden.
Der jeweilige Staat schwimmt ja im Geld, wenn es um Militär geht.
Sparen in diesem Bereich ist eine absolute Fehlanzeige, es lebe der
Snob-Effekt.
S. B. schrieb:> Mag schon sein, daß der C++ Compiler besser ist, weil der C Compiler> nicht mehr weiterentwickelt wird gibt's natürlich zeitliche Einbußen.> Deswegen ist das Endergebnis aber nicht unbedingt besser - das ist der> Irrtum, insbesondere der BWL-Personaler.
Du hast eine blühende Fantasie. Wäre neu, dass der GCC nicht mehr
weiterentwickelt wird...
S. B. schrieb:> LOL, und dann kritisierst Du an C rum ???> Wir haben doch einen 'blühenden?' Arbeitsmarkt, such Dir doch einen> neuen Job, wo es nur um dieses f**k C++ geht - gibt doch genug> Arbeitgeber, die genau das und nichts anderes mehr suchen!> Bei soviel Mangel überall sollte das doch wirklich kein Problem sein?> Du bist also beruflich inkonsequent, zumal Du ja genug BE hast :-)
Ja, wie kann man nur so realistisch sein, und sein tagtäglich
verwendetes Werkzeug kritisieren!
Keine Angst, die Sprache kann ich in meinem Job schon selbst aussuchen,
ich bin ja kein armer Programmiersklave der sich sowas vorschreiben
lassen muss. Aber nicht für jeden Prozessor gibt es einen (guten)
C++-Compiler, und dann ist da noch die Sache mit Legacycode...
S. B. schrieb:> bei C++ ist das logischerweise die Visual C++ Schiene und die dürfte> besser sein als irgendeine GNU C Variante oder was immer Du unter C> nutzt.
Ohoho, C++ ist also Visual C++. Verwendet das überhaupt noch irgendwer,
wo doch GCC oder CLANG viel besser sind?
S. B. schrieb:> C++ ist nach C gekommen und damit ist die Weiterentwicklung von C> zugunsten von C++ mehr oder weniger zum Erliegen gekommen.> Was erwartest Du?
Achso, C wird also nicht mehr weiterentwickelt. C11 sagt dir was? Aus
welchem Jahr stammt C11 nochmal? Tipp: es steckt im Namen.
S. B. schrieb:> Ich bezweifle ja nicht, daß C++ seine Vorteile hat - aber die> Systemschiene ist mehr oder weniger gelaufen, wenn Du nicht gerade in> der Wartung als Sysadmin tätig bist.> Ansonsten ist Anwendungsprogrammierung gefragt und da schlägt sich Java> besser.
Dieser Absatz ließt sich leicht wirr, kannst du ihn näher erläutern? Was
ist die "Systemschiene", warum ist die gelaufen, und welche konkreten
Vorzüge soll Java haben?
S. B. schrieb:> im Vergleich zu C aber schon und das verschweigt der C++ Fan.
Du kannst sicher erläutern, wo dieses mehr an Ressourcen deiner Meinung
nach herkommen soll.
Oder sind es doch nur leere Worte?
S. B. schrieb:> siehe Programm, habe ich ja gemacht. Aber es ist ein Beispiel, welche> kleinen Programmiertücken ein anderes Betriebsystem, etc. mit sich> bringt.
Was genau soll das mit dem Betriebssystem zu tun haben? Die
Standardbibliotheken sind Teil des Standards, aber das hilft natürlich
nicht, wenn man den Compiler nicht bedienen kann... leider schaffst du
es ja auch nicht zu beschreiben, was genau du gemacht hast, um dieses
Sonderbare Ergebnis zu bekommen... Welcher Code genau (Zeichen für
Zeichen), welcher Compiler, welche Einstellungen? Es ist in den
seltensten Fällen der Compiler Schuld, das Problem sitzt meist vor dem
Bildschirm.
S. B. schrieb:> Das wäre in Java nicht notwendig gewesen wegen JRE - und zum 100. Mal,> es geht hier nicht um Systemprogrammierung! Das ist nur eine schöne> Nische für wenige.
In welcher Realität braucht man eine fette JRE für ein bisschen
Stringspielerei, und was hast du immer mit deiner Systemprogrammiererei?
Allein welche Sicherheitsprobleme die JRE ständig hat, sagt schon
alles...
S. B. schrieb:> Du kannst Anwendungsapps für Android programmieren - und damit wird u.a.> wenigstens noch Kleingeld gemacht.
Oho, Appprogrammierung, ist das das was man macht, wenn man sonst
nirgends unterkommt? Aber ich kann dich trösten, man kann auch
Android-Apps ohne Java schreiben!
S. B. schrieb:> Von Deiner Systemprogrammierung, wo nur einige wenige Experten vom> Kuchen profitieren, kann die Masse jedenfalls nicht leben, oder?
Deine Fantasie wird immer blühender. Mit "Systemprogrammierung" meinst
du den ganzen Betriebssystemsektor? Einen Großteil der
Desktopanwendungen (nein, MS Office oder ein 3D-CAD-System wie CATIA ist
nicht in Java geschrieben)? Nicht mal ein bedeutender Webbrowser ist in
Java geschrieben, im Gegenteil, man hat nach massiver
Sicherheitsprobleme Java aus den Browsern verbannt...
S. B. schrieb:> braucht das jeweilige Unternehmen ja auch nicht, weil die> Endverkaufspreise entsprechend sind und diese Preise auch ohne zu zucken> gezahlt werden.> Der jeweilige Staat schwimmt ja im Geld, wenn es um Militär geht.> Sparen in diesem Bereich ist eine absolute Fehlanzeige, es lebe der> Snob-Effekt.
Tja, wenn man sich nicht als Java-App-Frickler prostituieren muss, liegt
das Geld halt auf der Straße, man muss es nur aufheben. Wenn man aber
ständig mit Billiglohn-Codemonkeys konkurrieren muss...
Mich würde ja echt interessieren, woher du deine ganzen Fantastereien
hernimmst... C wird nicht weiterentwickelt, C++ ist Visual C++,
Anwendungen werden nur in Java geschrieben...
> Ja, wie kann man nur so realistisch sein, und sein tagtäglich> verwendetes Werkzeug kritisieren!
Allerdings - wenn Dir C++ so gut gefällt und Du Dich im Job aber mit C
abgeben mußt, dann verstehe ich das nicht ganz?
> Keine Angst, die Sprache kann ich in meinem Job schon selbst aussuchen,> ich bin ja kein armer Programmiersklave der sich sowas vorschreiben> lassen muss. Aber nicht für jeden Prozessor gibt es einen (guten)> C++-Compiler, und dann ist da noch die Sache mit Legacycode...
Aha, jetzt auf einmal doch C++:
Deine Aussage oben lautete aber:
"Und ja, ich schreibe beruflich Hauptsächlich in C."
DAS war Deine Aussage.
Ja was denn jetzt?
Kann man Dich noch Ernst nehmen?
> Ohoho, C++ ist also Visual C++. Verwendet das überhaupt noch irgendwer,> wo doch GCC oder CLANG viel besser sind?
wenn es keine Frickelbude ist, wo Du arbeitest gibt es eben auch
Vorgaben von der Chefetage - vielleicht bist Du ja auch Freiberufler?
> Achso, C wird also nicht mehr weiterentwickelt. C11 sagt dir was? Aus> welchem Jahr stammt C11 nochmal? Tipp: es steckt im Namen.
Kennst Du Basic? Da wird ebenfalls ein Revival mit allerlei Neuauflagen
probiert, die so schlecht nicht sind - Fakt ist, daß das ein absoluter
Nischenmarkt ist und deswegen ist ja heute C++ oder C# angesagt - C11,
usw. interessiert dank C++, C# kein Schwein mehr.
> Was genau soll das mit dem Betriebssystem zu tun haben? Die> Standardbibliotheken sind Teil des Standards, aber das hilft natürlich> nicht, wenn man den Compiler nicht bedienen kann...
Was müßte ich denn bei meinen GNU C Compiler unter Linux einstellen,
damit das auch ohne die Headerdatei string.h wie beim TO funktioniert?
> Du kannst sicher erläutern, wo dieses mehr an Ressourcen deiner Meinung> nach herkommen soll.> Oder sind es doch nur leere Worte?
mehr Quellcode und Du siehst es auch bei der Laufzeit auf älteren
Rechnern und insbesondere bei größeren Programmen - KDE als Desktop
verwende ich deshalb nicht.
Deshalb werden Mikrocontroller ja auch primär in C statt in C++
programmiert, weil sich dort der mangelnde Speicherplatz noch bemerkbar
macht und last but not least c++ ist eine 'Obermenge' von c .... Du
kannst maximal die gleiche Laufzeit erreichen, aber nicht besser.
> Es ist in den seltensten Fällen der Compiler Schuld, das Problem sitzt> meist vor dem Bildschirm.
Bei dem TO funktioniert obiges Programm unter CodeBlocks Windows ohne
string.h und bei mir nicht.
Zeig mir doch bitte mal konkret was Du kannst!
Was müßte ich denn da an meinen GNU C Compiler unter Linux noch
einstellen, damit es so wie bei CodeBlocks ohne string.h funzt?
Na? Ist doch alles so easy?
Wie geht das in den Compiler-Einstellungen; ich weiß es nämlich nicht,
aber Du sicherlich?!
Ich wette, dieser Part wird umgangen und es gibt keine Antwort auf meine
Frage? Wie immer.
> Oho, Appprogrammierung, ist das das was man macht, wenn man sonst> nirgends unterkommt?
Genau, so einen großkotzigen Top-Job bekommt nämlich nicht jeder, weil
die Nachfrage gering ist. Sei froh, wenn Du das Glückslos gezogen hast -
offenbar bist Du Dir dessen gar nicht bewußt!
> Aber ich kann dich trösten, man kann auch Android-Apps ohne Java> schreiben!
kann man, aber warum sollte man vom Mainstream abweichen, wenn sich Java
diesbezüglich durchgesetzt hat?
Du kannst von mir aus auch in "Halligalli" programmieren und das
Ergebnis kann sehr gut oder sogar besser sein - nur ob das Dein Chefe so
will ist eine andere Frage - der macht nämlich Vorgaben.
Wie gesagt, vielleicht bist Du ja Freiberufler, da kannst Du Dein
eigenes Ding fahren, aber sonst eben nicht.
> Einen Großteil der Desktopanwendungen (nein, MS Office oder ein 3D-CAD-> System wie CATIA ist nicht in Java geschrieben)? Nicht mal ein> bedeutender Webbrowser ist in Java geschrieben, im Gegenteil, man hat> nach massiver> Sicherheitsprobleme Java aus den Browsern verbannt...
Du sagst es, Desktop - also Windows Rechner, denn die sind Marktführer
.... mit Aufkommen der Smartphones / Tablets hat sich das eben etwas
geändert.
Natürlich gibt's auch weiterhin C++ und wenn Dir so danach ist, dann
bewirb Dich doch bei diesen Firmen (möglichst dann noch ohne Visual C++
als Wunschkonzept); wirst ja dann merken, was 'die' so an Anforderungen
haben und ob Dir das dann schmeckt ?!
Dann hast Du wenigstens nichts mehr mit C zu tun, was Du ja angeblich
hauptberuflich machst ??!
Mach doch mal, mußt ja am Ende nicht zusagen.
> Allein welche Sicherheitsprobleme die JRE ständig hat, sagt schon> alles...
Dafür ist Java eben nicht ausgelegt, da gibt es dann bessere
Alternativen.
> Tja, wenn man sich nicht als Java-App-Frickler prostituieren muss, liegt> das Geld halt auf der Straße, man muss es nur aufheben. Wenn man aber> ständig mit Billiglohn-Codemonkeys konkurrieren muss...
Warum gibst Du Dich dann noch mit C ab, wenn das alles so easy ist ?!
Dann hätte ich den Laden doch schon längst verlassen?
Du weißt offenbar nicht wie gut es Dir geht und kotzt über vor Arroganz.
> Mich würde ja echt interessieren, woher du deine ganzen Fantastereien> hernimmst... C wird nicht weiterentwickelt, C++ ist Visual C++,> Anwendungen werden nur in Java geschrieben...
ich hab das so konkret erlebt: "Bei uns nur Visual C++", "nur Ruby on
Rails", usw., nur dies&das sonst nichts, interessiert uns nicht was Sie
in anderen Sprachen können und außerdem sind Sie zu alt (das wurde
natürlich wegen AntiDis nicht gesagt).
Also Meister-Prog, bewirb Dich mal und mach Dich mal schlau bezüglich
Deines eigenen Marktwertes - vielleicht hast Du dann auch Deine aha
Erlebnisse!
S. B. schrieb:> Allerdings - wenn Dir C++ so gut gefällt und Du Dich im Job aber mit C> abgeben mußt, dann verstehe ich das nicht ganz?
Du kannst halt nicht lesen. Macht nix. Aber dann schreib doch einfach
auch nix.
S. B. schrieb:> Aha, jetzt auf einmal doch C++:> Deine Aussage oben lautete aber:> "Und ja, ich schreibe beruflich Hauptsächlich in C."> DAS war Deine Aussage.> Ja was denn jetzt?> Kann man Dich noch Ernst nehmen?
Ich hab dir in dem von dir zitierten Absatz erklärt, warum man beruflich
manchmal C nutzen muss, auch wenn man C++ bevorzugen würde.
Offensichtlich hast du Probleme, diesen einfachen Absatz zu verstehen.
Macht nix. Aber dann schreib doch einfach auch nix.
S. B. schrieb:> wenn es keine Frickelbude ist, wo Du arbeitest gibt es eben auch> Vorgaben von der Chefetage - vielleicht bist Du ja auch Freiberufler?
Chefetage? Nö, die interessiert nur dass Termine eingehalten werden. Wär
ja noch schöner, wenn da irgendein fachfremder den Softwareentwicklern
reinquatscht. Wobei, das erklärt natürlich, warum so viele Java oder
.NET nutzen. Du hast halt keine Ahnung von Softwareentwicklung. Macht
nix. Aber dann schreib doch einfach auch nix.
S. B. schrieb:> Kennst Du Basic? Da wird ebenfalls ein Revival mit allerlei Neuauflagen> probiert, die so schlecht nicht sind - Fakt ist, daß das ein absoluter> Nischenmarkt ist und deswegen ist ja heute C++ oder C# angesagt - C11,> usw. interessiert dank C++, C# kein Schwein mehr.
Du schreibst, C wird nicht mehr verwendet weil es nicht mehr
weiterentwickelt wird.
Ich antworte, doch, sieh dir C11 an, es wird noch weiterentwickelt.
Du faselst daher, dass die Weiterentwicklungen eh keinen interessieren,
weil eh keiner mehr C verwendet.
Du widersprichst dir. Macht nix. Aber dann schreib doch einfach auch
nix.
S. B. schrieb:> Was müßte ich denn bei meinen GNU C Compiler unter Linux einstellen,> damit das auch ohne die Headerdatei string.h wie beim TO funktioniert?
Das Headerfile bringt der Compiler mit. Du musst gar nix einstellen. Du
kannst halt den Compiler nicht bedienen, schaffst es aber auf Nachfrage
auch nicht zu posten, was du falsch gemacht hast, damit man dir helfen
kann. Macht nix. Aber dann schreib doch einfach auch nix.
S. B. schrieb:> mehr Quellcode und Du siehst es auch bei der Laufzeit auf älteren> Rechnern und insbesondere bei größeren Programmen - KDE als Desktop> verwende ich deshalb nicht.> Deshalb werden Mikrocontroller ja auch primär in C statt in C++> programmiert, weil sich dort der mangelnde Speicherplatz noch bemerkbar> macht und last but not least c++ ist eine 'Obermenge' von c .... Du> kannst maximal die gleiche Laufzeit erreichen, aber nicht besser.
Du hast offensichtlich keine Ahnung von Zero Cost Abstraction. Du hast
offensichtlich keine Ahnung davon, was wirklich dafür verantwortlich
ist, warum eine Desktopumgebung mehr Resourcen braucht als die andere.
Du hast offensichtlich keine Ahnung davon, warum in der Praxis µC in C
und nicht in C++ programmiert werden, weil du offensichtlich fachfremd
bist.
Macht nix. Aber dann schreib doch einfach auch nix.
Und nein, C++ ist keine Obermenge von C.
Du behauptest erst wiederholt, C++ würde aus ominösen Gründen mehr
Ressourcen brauchen, schaffst es aber nicht, konkret zu erläutern, warum
das so sein soll. Du hast halt keine Ahnung von C, C++ oder
Softwareentwicklung. Macht nix. Aber dann schreib doch einfach auch
nix.
S. B. schrieb:> Bei dem TO funktioniert obiges Programm unter CodeBlocks Windows ohne> string.h und bei mir nicht.> Zeig mir doch bitte mal konkret was Du kannst!> Was müßte ich denn da an meinen GNU C Compiler unter Linux noch> einstellen, damit es so wie bei CodeBlocks ohne string.h funzt?> Na? Ist doch alles so easy?
Jeder standardkonforme C-Compiler (und das ist der GCC natürlich) bringt
die string.h mit. Das Problem muss also offensichtlich vom Bediener
ausgehen. Leider schaffst du es ja auch nicht, genau zu posten was du
gemacht hast.
Du hast keine Ahnung von C. Macht nix. Aber dann schreib doch einfach
auch nix.
S. B. schrieb:> Ich wette, dieser Part wird umgangen und es gibt keine Antwort auf meine> Frage? Wie immer.
Wie immer? Bitte, wo soll das denn bisher so der Fall sein? Du schaffst
es ja auch nach wie vor nicht, dein konkretes Problem verständlich zu
posten, schwafelst nur irgendwas von einer angeblich fehlenden
string.h...
S. B. schrieb:> Genau, so einen großkotzigen Top-Job bekommt nämlich nicht jeder, weil> die Nachfrage gering ist. Sei froh, wenn Du das Glückslos gezogen hast -> offenbar bist Du Dir dessen gar nicht bewußt!
Wenn man nicht über den Java-Tellerrand hinausblicken kann, bekommt man
halt keinen Topjob. Erklärt jetzt nur nicht, warum das für Java sprechen
soll...
S. B. schrieb:> Du kannst von mir aus auch in "Halligalli" programmieren und das> Ergebnis kann sehr gut oder sogar besser sein - nur ob das Dein Chefe so> will ist eine andere Frage - der macht nämlich Vorgaben.> Wie gesagt, vielleicht bist Du ja Freiberufler, da kannst Du Dein> eigenes Ding fahren, aber sonst eben nicht.
Wenn es deinem Chef egal ist, dass du mit einem anderen Werkzeug bessere
Ergebnisse produzieren kannst, würde ich mir schleunigst einen neuen Job
suchen! Aber nachdem du ja Java für die Erleuchtung schlechthin hälst...
S. B. schrieb:> Du sagst es, Desktop - also Windows Rechner, denn die sind Marktführer> .... mit Aufkommen der Smartphones / Tablets hat sich das eben etwas> geändert.
Was hat das mit Windows zu tun? Java ist ja so toll, warum sind
leistungsfähige Programme wie CAD-Suiten nicht in Java geschrieben?
S. B. schrieb:> Natürlich gibt's auch weiterhin C++ und wenn Dir so danach ist, dann> bewirb Dich doch bei diesen Firmen (möglichst dann noch ohne Visual C++> als Wunschkonzept); wirst ja dann merken, was 'die' so an Anforderungen> haben und ob Dir das dann schmeckt ?!
"weiterhin C++", na da ist ja einer Experte... rat mal, in was
CAD-Systeme, dein Webbrowser, dein Betriebssystem, dein Office, dein
Mailclient, ein Webserver, etc. pp. geschrieben sind...
S. B. schrieb:> Dann hast Du wenigstens nichts mehr mit C zu tun, was Du ja angeblich> hauptberuflich machst ??!
Ich mach embedded. Das wüsstest du auch, könntest du sinnerfassend
lesen. Ich will da auch nicht weg, keine Ahnung wie du darauf kommst.
S. B. schrieb:> Dafür ist Java eben nicht ausgelegt, da gibt es dann bessere> Alternativen.
Achso, Java ist nicht dafür ausgelegt, sicher zu sein. Tja, blöd, wofür
darf ich es dann verwenden, wenn es nicht mit externen Daten in
berührung kommen darf? Für ein Hello World?
S. B. schrieb:> Warum gibst Du Dich dann noch mit C ab, wenn das alles so easy ist ?!> Dann hätte ich den Laden doch schon längst verlassen?> Du weißt offenbar nicht wie gut es Dir geht und kotzt über vor Arroganz.
Dass du es öfter wiederholst, macht es nicht sinnvoller. Warum sollte
ich von meinem Job weg wollen? Dass es für manche Plattformen nur
C-Compiler gibt, und dass man sich auch mal mit Legacycode herumschlagen
muss, ist halt ein notwendiges übel.
Wenn man nur Java programmieren will und nicht mal ein simples
C-Programm kompiliert kriegt, konkurriert man halt mit Millionen Indern,
das ist Fakt, keine Arroganz.
S. B. schrieb:> ich hab das so konkret erlebt: "Bei uns nur Visual C++", "nur Ruby on> Rails", usw., nur dies&das sonst nichts, interessiert uns nicht was Sie> in anderen Sprachen können und außerdem sind Sie zu alt (das wurde> natürlich wegen AntiDis nicht gesagt).
Tja, du schreibst trotzdem nur Schwachsinn.
Aber wer nur Java kann, hat halt wenig Chancen. Wer dann auch noch keine
Ahnung hat, und so Dinge behauptet wie z.B. C++ wäre gleichzusetzen mit
Visual C++, oder Software würde eh nur in Java geschrieben, ist halt
aus.
S. B. schrieb:> Also Meister-Prog, bewirb Dich mal und mach Dich mal schlau bezüglich> Deines eigenen Marktwertes - vielleicht hast Du dann auch Deine aha> Erlebnisse!
Keine Angst, ich kenne meinen Marktwert. Gute Embeddedprogrammierer
findet man halt nicht an jeder Ecke, während Java-App-Coder frisch von
der Uni (wenn überhaupt) angeworben werden können.
> Ich hab dir in dem von dir zitierten Absatz erklärt, warum man beruflich> manchmal C nutzen muss, auch wenn man C++ bevorzugen würde.
ach jetzt auf einmal nur 'manchmal'? Vorher hieß es noch
'hauptsächlich'!
Macht nix, Dich kann man nicht Ernst nehmen, aber dann schreib doch
besser nix :-)
> Das Headerfile bringt der Compiler mit. Du musst gar nix einstellen.
Aber ich muß es im Programm für den Precompiler explizit angeben mit
#include <string.h> und der TO nicht!
Erklärung von Dir? Macht nix, geht alles ohne Einstellung; aber dann
schreib besser nix, wenn Du es nicht weißt :-)
> Du kannst halt den Compiler nicht bedienen, schaffst es aber auf Nachfrage> auch nicht zu posten, was du falsch gemacht hast, damit man dir helfen> kann. Macht nix. Aber dann schreib doch einfach auch nix.
Hab ich doch geschrieben: GNU C Compiler unter Linux.
Wenn ich ohne #include <string.h> arbeite, gibt es eine fette Warnung
vom Compiler und ich weiß nicht was ich beim Compiler 'einstellen' soll.
Ausführung mündet dann in einem Core dumped.
Bei CodeBlocks unter Windows brauche ich diese Programmzeile nicht; was
ist bei diesem Compiler denn anders?
Was mußt Du denn noch wissen, damit Du überhaupt eine Lösung bringen
kannst?
Macht nix, Du weißt es nicht, bringst keine konkrete Lösung, aber dann
schreib doch einfach auch nix.
> Was hat das mit Windows zu tun? Java ist ja so toll, warum sind> leistungsfähige Programme wie CAD-Suiten nicht in Java geschrieben?
weil Windows den Hauptmarktanteil hat und es auf Smartphones, Tablets,
etc. CAD-Suiten, etc. totaler Unsinn wären.
Ein stationärer Rechner ist nun einmal leistungsfähiger als jedes
Smartphone, etc. - schlimm, daß man Dir sowas erklären muß.
Java hat auch nicht den Anspruch auf irgendwelche Hyperdüper-Programme.
> "weiterhin C++", na da ist ja einer Experte... rat mal, in was> CAD-Systeme, dein Webbrowser, dein Betriebssystem, dein Office, dein> Mailclient, ein Webserver, etc. pp. geschrieben sind...
Tja, Linux basiert auf C und versuche C++ zu vermeiden, da ich keinen
Vorteil für mich darin erkennen kann - wenn es geht, möglichst C.
> Achso, Java ist nicht dafür ausgelegt, sicher zu sein. Tja, blöd, wofür> darf ich es dann verwenden, wenn es nicht mit externen Daten in> berührung kommen darf? Für ein Hello World?
Plattformunabhängige Programme - Du siehst es ja am obigen
Compiler-Debakel mit string.h ; und das ist ja nur eine Kleinigkeit,
wehe, wenn das Programm größer wäre.
> Warum sollte ich von meinem Job weg wollen?
weil Du lieber in C++ statt in C programmieren möchtest und C schlechter
als C++ einstuft, was definitiv nicht der Fall ist vor allen in Bezug
auf die Laufzeiten.
> Dass es für manche Plattformen nur> C-Compiler gibt, und dass man sich auch mal mit Legacycode herumschlagen> muss, ist halt ein notwendiges übel.
mit der Einstellung hast Du Glück, daß Du dort wo Du arbeitest überhaupt
noch arbeiten darfst.
> Wenn man nur Java programmieren will und nicht mal ein simples> C-Programm kompiliert kriegt, konkurriert man halt mit Millionen Indern,> das ist Fakt, keine Arroganz.
Will ich doch gar nicht (primär mache ich C) - aber Java hat klare
Vorteile außerhalb der Windows-Welt, die Du ignorierst.
Die Inder haben sich angepaßt und programmieren mit C++ .... das werde
ich mir ganz sicher nicht mehr antun, zumal ich Windows sowieso hasse.
C ist nur noch im embedded Bereich und ein paar anderen Nischen;
deswegen klappt's bei Dir auch nicht mehr dem C++ Job, vielleicht bist
Du auch schon zu alt - das weißt Du ganz genau - und Du kannst froh
sein, daß Du Deine sichere Stellung im Embedded Segment gefunden hast,
weil Du sonst nämlich nichts mehr bekommst, schon gar nicht C++, wenn Du
bisher haupt- oder nebensächlich C programmierst.
Macht nix, Du bist so von Dir überzeugt, daß Du nix mehr merkst -
deswegen auch gar kein Versuch mehr im geliebten C++ Segment zu landen!
> Wer dann auch noch keine Ahnung hat, und so Dinge behauptet wie z.B. C++ > wäre
gleichzusetzen mit Visual C++
wie gesagt, ich habe das bei mehreren Firmen so erlebt - da war Visual
C++ klare Vorgabe!
Macht nix, Du bewirbst Dich ja nicht. Aber wenn man das nicht macht,
sollte man besser nix sagen.
> Keine Angst, ich kenne meinen Marktwert. Gute Embeddedprogrammierer> findet man halt nicht an jeder Ecke
Warum nur ist im Embedded Bereich immer noch C angesagt, wenn C++ doch
so toll ist?! Warum nur?
Macht nix, C++ ist supi, C ist übel und Java ist s***e, so simpel ist
Deine Logik ... aber dann würde ich doch besser nichts schreiben :-)
Cola Borateur schrieb im Beitrag #5712317:
> Du bist keinen Pfifferling wert, Du häßliche Großschnauze.
Süß. Der andere bemüht sich zumindest Argumente zu bringen (auch wenn
seine Thesen reichlich an der Realität vorbeigehen), du schaffst
scheinbar nicht mal das.
> Der andere bemüht sich zumindest Argumente zu bringen
hoffentlich sind Deine Lösungen im embedded Bereich besser als Deine
pauschalen Hinweise wie Compiler 'richtig' einstellen, etc.
Blabla kann jeder.
S. B. schrieb:> ach jetzt auf einmal nur 'manchmal'? Vorher hieß es noch> 'hauptsächlich'!
Och nö, musst du dich jetzt schon auf Formulierungen stürzen, weil du
keine Argumente hast?
S. B. schrieb:> Aber ich muß es im Programm für den Precompiler explizit angeben mit> #include <string.h>
Tja, so wies halt gehört. Und trotzdem schwafelst du von "es
funktioniert nicht".
S. B. schrieb:> und der TO nicht!> Erklärung von Dir? Macht nix, geht alles ohne Einstellung; aber dann> schreib besser nix, wenn Du es nicht weißt :-)
Was schwafelst du von Einstellungen? Include string.h wies gehört und es
funktioniert, wo liegt das Problem?
Das Setup vom TS kennt keiner, wie soll man das kommentieren?
S. B. schrieb:> Hab ich doch geschrieben: GNU C Compiler unter Linux.> Wenn ich ohne #include <string.h> arbeite, gibt es eine fette Warnung> vom Compiler und ich weiß nicht was ich beim Compiler 'einstellen' soll.> Ausführung mündet dann in einem Core dumped.
Wenn ich mit mit dem Hammer auf den Daumen hau statt auf den Nagel wird
der Daumen blau und der Nagel geht nicht rein, blöder Hammer.
Genau so agierst du. Schriebt keinen korrekten Code und wundert sich,
dass es nicht geht.
S. B. schrieb:> Bei CodeBlocks unter Windows brauche ich diese Programmzeile nicht; was> ist bei diesem Compiler denn anders?
Braucht es die sicher nicht? Und wenn schon, dass etwas zufällig
funktioniert heißt nicht dass es immer so funktionieren muss.
S. B. schrieb:> Was mußt Du denn noch wissen, damit Du überhaupt eine Lösung bringen> kannst?> Macht nix, Du weißt es nicht, bringst keine konkrete Lösung, aber dann> schreib doch einfach auch nix.
Welche Lösung denn? Die hast du doch eh schon gefunden, "#include
<string.h>", so wies der Standard sagt.
Übrigens reichlich billig, meine Postings zu kopieren.
S. B. schrieb:> weil Windows den Hauptmarktanteil hat und es auf Smartphones, Tablets,> etc. CAD-Suiten, etc. totaler Unsinn wären.> Ein stationärer Rechner ist nun einmal leistungsfähiger als jedes> Smartphone, etc. - schlimm, daß man Dir sowas erklären muß.
Dein Geschwafel erklärt jetzt immer noch nicht, warum diese Programme
nicht in deinem tollen Java geschrieben sind. Was hat Windows damit zu
tun? Was hat die Leistungsfähigkeit von Desktoprechner damit zu tun?
Du redest dich um Kopf und Kragen, und kannst keine deiner abstrusen
Theorien untermauern.
S. B. schrieb:> Java hat auch nicht den Anspruch auf irgendwelche Hyperdüper-Programme.
Achso, Java ist nicht dafür gedacht, damit sinnvolle Programme zu
schreiben, sondern nur Smartphonespielereien und "Hello World"? Sag das
doch gleich.
S. B. schrieb:> Tja, Linux basiert auf C und versuche C++ zu vermeiden, da ich keinen> Vorteil für mich darin erkennen kann - wenn es geht, möglichst C.
Leider kann man auf diesen Satz nicht mal antworten, da er kein
sinnvoller Deutscher Satz ist, und ich absolut nicht verstehe, was du
damit ausdrücken willst.
Aber ganz großes Kino, ich frage dich warum du von "weiterhin C++"
schwafelst, wo doch ein Großteil der PC-Software geschrieben wird (und
nicht etwa Java, was du immer wieder zu erklären versuchst), und
fabulierst von C und Linux. Weißt du eigentlich, was du schreibst?
S. B. schrieb:> Plattformunabhängige Programme
Achso, deswegen wird ja auch so viel in Java geschrieben. Browser,
Mailclients, Webserver oder Officesuiten z.B.
Ironie Ende.
S. B. schrieb:> Du siehst es ja am obigen> Compiler-Debakel mit string.h ; und das ist ja nur eine Kleinigkeit,> wehe, wenn das Programm größer wäre.
Welches Compilerdebakel denn? Du versuchst fehlerhaften Code zu
kompilieren, es funktioniert nicht (der Compiler weißt dich sogar auf
deinen Fehler hin) und du nennst das Debakel?
S. B. schrieb:> weil Du lieber in C++ statt in C programmieren möchtest und C schlechter> als C++ einstuft
Tja, deswegen wird bei uns für neue Projekte ja auch nur noch C++
verwendet, wenn ein Compiler für die Plattform existiert.
S. B. schrieb:> was definitiv nicht der Fall ist vor allen in Bezug> auf die Laufzeiten.
Kannst du das jetzt endlich mit Argumenten belegen, anstatt es immer und
immer wieder zu wiederholen?
S. B. schrieb:>> Dass es für manche Plattformen nur>> C-Compiler gibt, und dass man sich auch mal mit Legacycode herumschlagen>> muss, ist halt ein notwendiges übel.> mit der Einstellung hast Du Glück, daß Du dort wo Du arbeitest überhaupt> noch arbeiten darfst.
Diese Behauptung kannst du sicher auch näher untermauern. Ich kann froh
sein dass ich noch wo arbeiten darf, weil es für manche Plattformen
keinen C++-Compiler gibt?
Aber immerhin, im Gegensatz zu dir nimmt mich ja noch jemand.
S. B. schrieb:> Will ich doch gar nicht (primär mache ich C) - aber Java hat klare> Vorteile außerhalb der Windows-Welt, die Du ignorierst.
Ich hab dich jetzt schon so oft gefragt, welche diese sein sollen, und
warum dann so viel Software (auch Plattformunabhängig) in C++
geschrieben ist, z.B. mit sehr hoher Wahrscheinlichkeit der Webbrowser
von dem aus du postest, oder auch der Webserver auf dem dieses Forum
läuft.
Bis jetzt konntest du das nicht beantworten.
S. B. schrieb:> Die Inder haben sich angepaßt und programmieren mit C++ .... das werde> ich mir ganz sicher nicht mehr antun, zumal ich Windows sowieso hasse.
Was hat C++ nun mit Windows zu tun? Windows-only wäre eher C#/.NET...
S. B. schrieb:> C ist nur noch im embedded Bereich und ein paar anderen Nischen;> deswegen klappt's bei Dir auch nicht mehr dem C++ Job
Was genau klappt nicht?
S. B. schrieb:> vielleicht bist> Du auch schon zu alt - das weißt Du ganz genau - und Du kannst froh> sein, daß Du Deine sichere Stellung im Embedded Segment gefunden hast,> weil Du sonst nämlich nichts mehr bekommst, schon gar nicht C++, wenn Du> bisher haupt- oder nebensächlich C programmierst.> Macht nix, Du bist so von Dir überzeugt, daß Du nix mehr merkst -> deswegen auch gar kein Versuch mehr im geliebten C++ Segment zu landen!
Du wirst immer lächerlicher.
Keine Angst, mit C++ kommst du überall unter, ist doch ein großer Teil
der verbreiteten Software im Desktop- und Serverbereich in dieser
Sprache geschrieben.
S. B. schrieb:> wie gesagt, ich habe das bei mehreren Firmen so erlebt - da war Visual> C++ klare Vorgabe!
C++ ist trotzdem nicht mit Visual C++ gleichzusetzen, dass du es noch so
oft wiederholst, macht es auch nicht wahrer, und zeugt nur von absoluter
Ahnungslosigkeit. Aber gut, die konnte man ja schon erkennen als du dich
gewundert hast, dass dein C-Programm nicht kompiliert, obwohl du doch
angeblich primät mit C arbeitest.
Und nur weil manche Firmen halt mit Visual C++ (möglicherweise auch noch
C++/CLI) arbeiten, heißt das immer noch nicht, dass C++ auch nur
ansatzweise irgenwas mit MS zu tun hat...
S. B. schrieb:> Warum nur ist im Embedded Bereich immer noch C angesagt, wenn C++ doch> so toll ist?! Warum nur?
Weil es nicht für alle Plattformen Compiler gibt und weil es oft
Legacycode gibt, aber das hab ich dir ja oben schon erklärt. Und
natürlich auch weil es ahnungslose Leute wie dich gibt die unbelegten
Bullshit von angeblich laufzeitintensivem C++ glauben. Gibt ja auch noch
genug Firmen die kein Test Driven Development machen, weil man das vor
30 Jahren auch nicht gemacht hat.
Aber keine Angst, im professionellen Embeddedbereich nutzen mehr C++ als
du vermutlich denkst.
S. B. schrieb:> Macht nix, C++ ist supi, C ist übel und Java ist s***e, so simpel ist> Deine Logik ...
Komisch, dabei hab ich doch genau das mit C und C++ so nie geschrieben,
lediglich, dass C++ besser als C ist, weder, dass das eine supi wäre,
noch, dass das andere übel wäre.
Aber mit einem hast du immerhin recht, Java ist tatsächlich Kacke.
S. B. schrieb:> aber dann würde ich doch besser nichts schreiben :-)
Wenn du schon meine Postings kopieren musst, solltest du zumindest keine
Lügen verbreiten. Oder halt einfach mal nix schreiben, lieber bewerben,
damit du wieder einen Job bekommst.
S. B. schrieb:>> Der andere bemüht sich zumindest Argumente zu bringen> hoffentlich sind Deine Lösungen im embedded Bereich besser als Deine> pauschalen Hinweise wie Compiler 'richtig' einstellen, etc.> Blabla kann jeder.
Nochmal: du wunderst dich ernsthaft dass dein Programm nicht
funktioniert, wenn du die nötigen Header nicht includest, und machst dem
Compiler und mir einen Vorwurf?
Dir ist halt einfach nicht zu helfen.
> Nochmal: du wunderst dich ernsthaft dass dein Programm nicht> funktioniert, wenn du die nötigen Header nicht includest, und machst dem> Compiler und mir einen Vorwurf?
schau Dir den Thread nochmal genau an!
Das ist nicht mein Programm, sondern das Programm des TO, das beim TO
unter Windows CodeBlocks ohne die Programmzeile #include <string.h>
auskommt.
Meine Programmverbesserung steht im Post Datum: 22.01.2019 13:05
Dort habe ich auch nix falsch gemacht, sondern was konkret richtiges in
Bezug auf das Problem des TO geschrieben, was Du ja nicht kannst - der
Thread ist ja schon sehr lang und das Problem des TO ist ja mittlerweile
gelöst.
Ich vermute, daß hat mit der ANSI-Konformität des CodeBlock-Compiler zu
tun, von dem der CodeBlock-Compiler abweicht.
Genau so etwas gibt es bei Java wegen der JRE nicht; also ein klarer
Vorteil insbesondere auf verschiedenen Plattformen.
Also leichte Compileräbänderungen und schon kann das ganze Programm
anders aussehen bzw. nicht mehr funktionieren.
Bei C++ Compilern wird es wohl nicht anders sein.
Und Du sagst es ja selbst, string.h gehört mit rein - die Einstellung
bei der es wie bei CodeBlocks ohne string.h. funktioniert möge man mir
doch bitte mal für GNU C zeigen!
Die Frage, warum das bei CodeBlocks anders ist, hast Du bis jetzt noch
nicht beantwortet und kannst es auch nicht; weil Dich die ganze Thematik
nicht wirklich interessiert, so habe ich jedenfalls den Eindruck.
Du postest sehr viel, aber eben nur viel blabla - da kann ich auch den
Fernseher einschalten und hab mehr davon :-)
> Aber keine Angst, im professionellen Embeddedbereich nutzen mehr C++ als> du vermutlich denkst.
richig, weil auch der Speicher im Embeddedbereich stetig zunimmt und
damit Leute wie Du, die von C bedingt Ahnung haben auch mit an Board
bleiben und sich nicht den C++ Job besorgen; selbst das machst Du ja
nicht.
Ist nicht schlimm, aber man sollte es wenigstens zugeben .... deswegen
überlasse ich ja auch den anderen C++. Alles geht eben nicht.
Jedem seine Lieblingssprache.
Ich habe irgendwie den Teil verpasst, wo ihr das mit den Zeichensätzen
erschöpfend geklärt habt, dass dieser Thread jetzt für andere
Fragestellungen offen ist.
S. B. schrieb:> schau Dir den Thread nochmal genau an!> Das ist nicht mein Programm, sondern das Programm des TO, das beim TO> unter Windows CodeBlocks ohne die Programmzeile #include <string.h>> auskommt.
Und trotzdem wunderst DU dich, dass es bei DIR nicht funktioniert.
S. B. schrieb:> sondern was konkret richtiges in> Bezug auf das Problem des TO geschrieben, was Du ja nicht kannst - der> Thread ist ja schon sehr lang und das Problem des TO ist ja mittlerweile> gelöst.
Achso, was ich also nicht kann. Liegt nicht etwa daran, dass sein
Problem schon gelöst ist.
S. B. schrieb:> Ich vermute, daß hat mit der ANSI-Konformität des CodeBlock-Compiler zu> tun, von dem der CodeBlock-Compiler abweicht.
Ach ne, sag bloß? C wird übrigens primär von der ISO standardisiert,
"ANSI-C" bezeichnet gang, ganz was altes... aber gut, du denkst ja auch
"C++" und "Visual C++" wäre das gleiche und C++ hätte was mit Windows zu
tun, also who cares.
S. B. schrieb:> Genau so etwas gibt es bei Java wegen der JRE nicht; also ein klarer> Vorteil insbesondere auf verschiedenen Plattformen.
Nochmal, was genau soll das nicht standardkonforme Verhalten eines
C-Compilers mit der JRE zu tun haben?
Wer hätte das gedacht, nicht standardkonformer Code produziert
fehlerhafte Ergebnisse, da ist die Sprache schuld!!11!1elf
Preisfrage, was passiert, wenn die JRE auf der Zielplattform nicht dem
Sprachstandard entspricht?
S. B. schrieb:> Also leichte Compileräbänderungen und schon kann das ganze Programm> anders aussehen bzw. nicht mehr funktionieren.
Falsch, so lange man nur im Sprachstandard definierte Dinge tut,
passiert nichts. Wenn du Dinge machst, die in der Sprache nicht
definiert sind, geht das auch in Java nach hinten los.
S. B. schrieb:> Bei C++ Compilern wird es wohl nicht anders sein.
Da C++ wesentlich strenger ist als C, ist das Problem eher kleiner denn
größer. Aber das wüsstest du, würdest du über Themen reden, bei denen du
dich auskennst.
S. B. schrieb:> Und Du sagst es ja selbst, string.h gehört mit rein - die Einstellung> bei der es wie bei CodeBlocks ohne string.h. funktioniert möge man mir> doch bitte mal für GNU C zeigen!
Welche Einstellung? Warum soll es eine Einstellung geben, mit der
fehlerhafter Code plötzlich kompiliert, nur weil es bei einem anderen
Compiler zufälligerweise funktioniert?
S. B. schrieb:> Die Frage, warum das bei CodeBlocks anders ist, hast Du bis jetzt noch> nicht beantwortet und kannst es auch nicht;
Doch: weil es halt zufällig so ist, denn "undefined behaviour" darf auch
zufällig funktionieren. Hab ich dir auch schon lang und breit erklärt,
dass du den Compiler halt falsch bedienst.
S. B. schrieb:> weil Dich die ganze Thematik> nicht wirklich interessiert, so habe ich jedenfalls den Eindruck.> Du postest sehr viel, aber eben nur viel blabla - da kann ich auch den> Fernseher einschalten und hab mehr davon
Ich frag dich schon zum hundertsten mal, ob du denn endlich deine
absurden Behauptungen (Performance und Verbreitung von
Programmiersprachen, etc. pp.) sachlich belegen kannst, was du nach wie
vor verweigerst, und unterstellst mir, mich nicht dafür zu
interessieren? Ganz großes Kino. Ja, setz dich vor den Fernseher und
schau das Dschungelcamp, ist besser.
S. B. schrieb:> richig, weil auch der Speicher im Embeddedbereich stetig zunimmt und> damit Leute wie Du, die von C bedingt Ahnung haben
Süß. Woher nimmst du die Behauptung, ich würde kein C können? Und kannst
du jetzt endlich, endlich die strunzdämliche Behauptung belegen, C++
würde so ganz doll viel Speicher benötigen?
S. B. schrieb:> und sich nicht den C++ Job besorgen; selbst das machst Du ja> nicht.
Was genau mach ich nicht? Kannst du eigentlich lesen, was ich schreibe?
Ist Deutsch eine Fremdsprache für dich, sollen wir lieber auf Englisch
wechseln?
S. B. schrieb:> Ist nicht schlimm, aber man sollte es wenigstens zugeben ...
Was genau soll man zugeben?
S. B. schrieb:> deswegen> überlasse ich ja auch den anderen C++. Alles geht eben nicht.> Jedem seine Lieblingssprache.
Wohl eher, weil deine abstrusen Behauptungen daran zweifeln lassen, dass
du IRGENDEINE Sprache vernünftig kannst. C kann jedenfalls nicht dein
Talent sein, wunderst du dich doch, dass fehlerhafter Code komische
Dinge macht. C++ kann es auch sein, denkst du doch, es würde auf
wundersame Weise ganz dolle viel Speicher brauchen, wofür auch immer.
Java? Vielleicht, aber daran wachsen die Zweifel auch, behauptest du
doch, unspezifizierte Dinge zu tun würde dort funktionieren.
Walter T. schrieb:> Ich habe irgendwie den Teil verpasst, wo ihr das mit den Zeichensätzen> erschöpfend geklärt habt, dass dieser Thread jetzt für andere> Fragestellungen offen ist.
Die Zeichensätze wurden im Nachbarthread, auf den verwiesen wurde, schon
ziemlich breit erklärt. Kompilierst du dein Programm für einen
Zeichensatz, verwendest aber dann einen anderen, kommt halt Unsinn raus.
Unschön, ist aber leider derzeit so.
> Wohl eher, weil deine abstrusen Behauptungen daran zweifeln lassen, dass> du IRGENDEINE Sprache vernünftig kannst.
vermutlich mehr wie Du :-)
> Woher nimmst du die Behauptung, ich würde kein C können?
An der nachfolgenden Bemerkung:
> Und kannst du jetzt endlich, endlich die strunzdämliche Behauptung> belegen, C++ würde so ganz doll viel Speicher benötigen?
Du siehst es am Quellcode von C++ und an Laufzeitmessungen (wohlgemerkt
nicht des Compilers, sondern des Objektcodes).
Speziell bei älteren Mikrocontroller funzt C++ wegen des Speicherbedarfs
nicht. Bei modernen Controller spielt es keine Rolle mehr und weil C++
in ist haben Dienstleister so wie Du einen ganz besonderen Augenmerk
drauf :->
> Doch: weil es halt zufällig so ist, denn "undefined behaviour" darf auch> zufällig funktionieren. Hab ich dir auch schon lang und breit erklärt,> dass du den Compiler halt falsch bedienst.
undedined behaviour, LOL, na klar.
Ich verwende nicht CodeBlocks unter Windows wie der TO, sondern GNU C
unter Linux und mein Programm läuft - wenn man nur lesen könnte :(
> Die Zeichensätze wurden im Nachbarthread, auf den verwiesen wurde, schon> ziemlich breit erklärt.
welcher denn?
> Kompilierst du dein Programm für einen> Zeichensatz, verwendest aber dann einen anderen, kommt halt Unsinn raus.> Unschön, ist aber leider derzeit so.
na ja, das hängt vom Quellcode ab und von der Zielsetzung des Programms.
> Ich habe irgendwie den Teil verpasst, wo ihr das mit den Zeichensätzen> erschöpfend geklärt habt, dass dieser Thread jetzt für andere> Fragestellungen offen ist.
In puncto C kann ich Dir einiges beantworten - am besten konkretes
Beispiel.
Bei C++ (und vielleicht auch C) kann Dir sicherlich vn nn(Gast)
weiterhelfen oder auch nicht :-)
Da wird sich dann zeigen, was er kann :-)
S. B. schrieb:> Du siehst es am Quellcode von C++
Ach, du kannst also am Quellcode ablesen, dass C++ doll viel Speicher
braucht, denn optimierende Compiler und zero cost abstraction wurden ja
noch nicht erfunden. Du bist ja ein richtiger Experte, schreibst
wahrscheinlich in C auch alles in eine riesige Funktion anstatt sauber
zu gliedern, weil du von inlining und Optimizer noch nie gehört hast...
S. B. schrieb:> an Laufzeitmessungen
Die du zwar ständig versprichst, aber nicht liefern kannst.
S. B. schrieb:> undedined behaviour, LOL, na klar.
Was ist es denn deiner Meinung nach, wenn du den passenden Header nicht
includest und dich dann Wunderer dass es nicht geht?
S. B. schrieb:> erwende nicht CodeBlocks unter Windows wie der TO, sondern GNU C unter> Linux und mein Programm läuft - wenn man nur lesen könnte
Na wenns doch eh geht, was beschwerst du dich dauernd dass C ganz böse
ist und bei dir nicht geht?
S. B. schrieb:> welcher denn?
Wurde oben verlinkt. Schau halt nach.
S. B. schrieb:> das hängt vom Quellcode ab und von der Zielsetzung des Programms.>>>
Ach ne, das Resultat hängt vom Quellcode ab. Sag bloß.
S. B. schrieb:> In puncto C kann ich Dir einiges beantworten - am besten konkretes> Beispiel.
Könntest du schon beantworten, warum der Aufruf einer nicht deklarierten
Funktion undefiniert ist, oder bereitet dir das immer noch
Kopfzerbrechen?
S. B. schrieb:> Bei C++ (und vielleicht auch C) kann Dir sicherlich vn nn(Gast)> weiterhelfen
Ich dachte, du bist C++-Experte und kannst am Quellcode schon den
Resourcenverbrauch ablesen?
> Ach, du kannst also am Quellcode ablesen, dass C++ doll viel Speicher> braucht, denn optimierende Compiler und zero cost abstraction wurden ja> noch nicht erfunden.
schau mal hier:
https://stackoverflow.com/questions/418914/why-is-c-so-fast-and-why-arent-other-languages-as-fast-or-faster
auch anderen fällt auf, daß C schneller ist - nur Assembler ist
schneller als C, da maschinennäher .... nur Dir fällt vor lauter C++
Hype nichts mehr auf.
C++ hat andere Vorteile gegenüber C, die Du gar nicht ansprichst!
Mach das doch, wenn C++ Deine Herzensangelegenheit ist!
> Die du zwar ständig versprichst, aber nicht liefern kannst.
Du kennst den Unterschied zwischen runtime und compile-time nicht und
deswegen eierst Du rum, weil bei C++ ja alles gut sein muß!
Schau mal hier, da wird der Unterschied erklärt:
https://www.quora.com/What-is-the-difference-between-runtime-and-compile-time> Was ist es denn deiner Meinung nach, wenn du den passenden Header nicht> includest und dich dann Wunderer dass es nicht geht?
OMG, ich hab den Header includiert! Mir ist aber aufgefallen, daß das
bei CodeBlocks gar nicht notwendig ist und das hat mich etwas gewundert
.... wie oft muß ich das hier noch posten bis Du es endlich kapierst?!
> Na wenns doch eh geht, was beschwerst du dich dauernd dass C ganz böse> ist und bei dir nicht geht?
Sag mal, kannst Du nicht lesen? Bei mir funktioniert es nur mit der
zusätzlichen include-Anweisung und beim TO geht es ohne diese!
Interessiert Dich vor lauter f**k C++ Geilheit natürlich nicht, warum
das so ist ?!
Und das sagt dann sehr vieles aus ):
> Ich dachte, du bist C++-Experte und kannst am Quellcode schon den> Resourcenverbrauch ablesen?
wenn Du mir nicht glaubst lies doch im Netz wie andere das sehen - wie
gesagt C++ hat Vorteile, aber sicher nicht runtime der fertigen
Programme; da bist Du auf dem Holzweg.
S. B. schrieb:> schau mal hier:> https://stackoverflow.com/questions/418914/why-is-c-so-fast-and-why-arent-other-languages-as-fast-or-faster> auch anderen fällt auf, daß C schneller ist
Uiuiuiui, na wenns auf Stackoverflow steht, muss es ja stimmen! Selbst
kannst du also nicht mehr argumentieren?
Aber bitte, dann zerlegen wir deine reichlich dünne Suppe halt mal (ich
beschränk mich mal aus Zeitgründen auf das "Top"-Posting):
> Newer languages which have support for garbage collection, dynamic typing > and
other facilities which make it easier for the programmer to write >
> programs.
Gegessen. C++ hat keinen Garbagcollector, auf Laufzeitdynamik kann man
komplett verzichten und alles zur Compilezeit machen. Ein Expere halt,
wie du.
> The catch is, there is additional processing overhead which will degrade> the performance of the application. C doesn't have any of that
Oh, eine leere Behauptung ohne Beleg, woher kennen wir das nur? Welcher
"additional processing overhead"? Oh großer "S. B. (piezokristall)",
kannst du diese Behauptung endlich, endlich Argumentieren, nachdem du
sie immer und immer wieder aufstellst?
> That said, many languages and platforms, such as Java (with its Java> Virtual Machine) and .NET (with its Common Language Runtime) have> improved performance over the years with advents such as just-in-time> compilation which produces native machine code from bytecode to achieve> higher performance.
Oh, achso, der redet nur von Java und .NET, na sag das doch gleich,
warum verlinkst du dann drauf?
Ach, dann nehmen wir halt das zweite Posting auch noch dran:
> C won't> Check array index bounds> Check for uninitialized variable values> Check for memory leaks> Check for null pointer dereference
Tja, und da ich das in C alles manuell machen muss, während es in C++
der Compiler für mich tut (und wunderbar optimieren kann, macht es den
Code blöderweise schneller und nicht langsamer. Defensive Programming
würde in C von mir verlangen, dass ich in der aufgerufenen Funktion die
Länge meines Arrays checke, auch wenn die aufrufende Funktion das schon
getan hat (sie könnte ja auch von einer anderen aufgerufen werden) - in
C++ erkennt der Compiler das und wirft einen raus wenn möglich.
Der Rest: Geschwafel über Java, und Designentscheidungen von C, die
selbst die Macher von C heute ganz anders sehen.
Schade, ich dachte jetzt kommt endlich die Umwerfende Argumentation
deiner Behauptung auf die ich schon so lange warte, stattdessen gehts
dort nur um Java und .NET.
S. B. schrieb:> nur Assembler ist> schneller als C, da maschinennäher
Ich muss dich enttäuschen, aber um an die Geschwindigkeit eines guten
C-Compilers heranzukommen müsstest du schon einer der absoluten
Top-Assembler-Programmierer sein, und selbst dann wäre es fraglich. Wie
so viele deiner Behauptungen.
S. B. schrieb:> nur Dir fällt vor lauter C++> Hype nichts mehr auf.
Äh, Hype, bitte wo?
S. B. schrieb:> C++ hat andere Vorteile gegenüber C, die Du gar nicht ansprichst!
Doch, genau das habe ich getan, seitdem drehst du am Rad und wirfst hier
mit Kot um dich. Falls du dich erinnerst: in meinem Ursprungsposting hab
ich kurz mal auf die Vorteile von C++ verwiesen.
S. B. schrieb:> Mach das doch, wenn C++ Deine Herzensangelegenheit ist!
Herzensangelegenheit? Nö. Ein Werkzeug halt. Keine Ahnung warum du so
durchdrehst, und ständig irgendwelche Behauptungen aufstellst, die dann
ja doch leer bleiben. Deine Behauptungen über mich sind ja ähnlich
fundiert wie die über diverse Programmiersprachen.
S. B. schrieb:> Du kennst den Unterschied zwischen runtime und compile-time nicht und> deswegen eierst Du rum, weil bei C++ ja alles gut sein muß!> Schau mal hier, da wird der Unterschied erklärt:> https://www.quora.com/What-is-the-difference-between-runtime-and-compile-time
Du wirst immer lustiger, warum genau soll ich den Unterschied nicht
kennen, wie kommst du zu der Behauptung? Und was hat das nun mit dem
Thema zu tun?
Ich frage dich nun schon unzählige Male nach einem Beleg für deine
Behauptung eines schlechteren Laufzeitverhaltens, und du rotzt diesen
unpassenden Link hier rein, anstatt deine Behauptung endlich zu
argumentieren?
S. B. schrieb:> OMG, ich hab den Header includiert! Mir ist aber aufgefallen, daß das> bei CodeBlocks gar nicht notwendig ist und das hat mich etwas gewundert> .... wie oft muß ich das hier noch posten bis Du es endlich kapierst?!
Und doch hast du unzählige Male herumgejammert dass C ganz pöse
unportabel ist, weil oh Gott, undefiniertes Verhalten nun mal
undefiniert ist.
S. B. schrieb:> Sag mal, kannst Du nicht lesen? Bei mir funktioniert es nur mit der> zusätzlichen include-Anweisung und beim TO geht es ohne diese!
Ja, und ich erklär dir schon zum hundertsten Mal, dass es völlig egal
ist, wenn bei jemandem fehlerhafter Code zufälligerweise das erwartete
verhalten zeigt, wichtig ist lediglich, dass richtiger Code
funktioniert.
S. B. schrieb:> Interessiert Dich vor lauter f**k C++ Geilheit natürlich nicht, warum> das so ist ?!
Ich hab dir schon oft genug warum es so ist, du ignorierst es nur
ständig.
Würde mich interessieren, wo du diese "f**k C++ Geilheit" verortest. Nur
weil du es nicht schaffst, Vor- und Nachteile von Programmiersprachen
sachlich und korrekt zu diskutieren? Nur weil du ständig Behauptungen
(über alle möglichen Programmiersprachen, nicht nur C++) in den Raum
wirfst, immer und immer wieder, die du bis jetzt nie, aber auch wirklich
nie belegen konntest? Das höchste der Gefühle waren bisher hingerotzte,
Themenverfehlende Links...
S. B. schrieb:> wenn Du mir nicht glaubst lies doch im Netz wie andere das sehen
Kannst du es nicht endlich, endlich selbst begründen? Ist es wirklich so
schwer, bist du wirklich so ahnungslos? Warum stellst du dann laufend
diese Behauptungen auf? Oder wenn du das schon nicht schaffst, stell
doch zumindest mal einen Link rein wo jemand das mit Argumenten erklärt
(wo du es schon nicht schaffst). Aber bitte nicht wieder irgendeinen
Stackoverflow-Link, der sich eigentlich auf Java und .NET bezieht.
S. B. schrieb:> wie> gesagt C++ hat Vorteile, aber sicher nicht runtime der fertigen> Programme; da bist Du auf dem Holzweg.
Ständiges wiederholen unbelegter Behauptungen macht diese auch nicht
besser. Beweis es endlich. Ach ja, hast du vorher nicht noch vom
immensen Speicherverbrauch geschrieben? Das bitte auch gleich.
Und dann bitte die restlichen Behauptungen: C++ wäre ein Superset von C,
C++ hat irgendwas mit Microsoft zu tun, C++ nimmt keiner weil Java ja
der Trend ist (doof nur, dass dein Webbrowser vermutlich in C++
geschrieben ist), C wird nicht weiterentwickelt (ach ne, haben wir ja eh
schon entkräftet), C++ hat sich wegen bunter Fenster durchgesetzt
(genau, deswegen nimmt man es ja auch im Serverbereich, du meinst wohl
eher Java und .NET?), C++ hat sich wegen der tollen IDE durchgesetzt
(welche soll das nochmal sein, gcc + vim?), etc. pp.
> Ständiges wiederholen unbelegter Behauptungen macht diese auch nicht> besser.
das machst Du leider:
"Und trotzdem wunderst DU dich, dass es bei DIR nicht funktioniert."
Immerhin scheinst Du es jetzt teilweise kapiert zu haben, weil ich das
100mal wiederholt habe - es funktioniert bei mir, weil ich string.h
inkludiert habe und nochmal: Beim TO funktioniert es unter CodeBlocks
eben auch ohne string.h - darum geht es HIER!
Deine Antwort darauf: Ja das ist dann Zufall, undefined behaviour,
fehlerhafter Code bei CodeBlocks eben.
Na, das ist ja mal eine tolle Antwort!
Mit anderen Worten: Du weißt es nicht (und ich leider auch nicht -
deswegen frage ich danach). Das ist der Unterschied.
> Ja, und ich erklär dir schon zum hundertsten Mal, dass es völlig egal> ist, wenn bei jemandem fehlerhafter Code zufälligerweise das erwartete> verhalten zeigt, wichtig ist lediglich, dass richtiger Code> funktioniert.
aha, es ist also fehlerhafter Code, wenn es bei CodeBlocks ohne string.h
funktioniert? Ist das jetzt Deine Aussage? Ja oder nein - oder was
jetzt?
> Selbst kannst du also nicht mehr argumentieren?
Du kapierst den Unterschied zwischen runtime und compile-time nicht und
machst deshalb immer wieder den gleichen Fehler, mindestens 100mal, dazu
kommen wir gleich noch.
> Tja, und da ich das in C alles manuell machen muss, während es in C++> der Compiler für mich tut (und wunderbar optimieren kann, macht es den> Code blöderweise schneller und nicht langsamer.
das kann schon, daß die compile-time aufgrund der Weiterentwicklung der
C++ Compiler besser ist als mit einem C Compiler mit C11 Standard - das
bezweifle ich nicht - es geht aber auch um die Runtime der Programme und
das ist was anderes.
Richtig und in C gibt es keine Weiterentwicklung seit 2011, C11 - und
heute schreiben wir 2019! Oha! So sieht also Weiterentwicklung bei Dir
aus?!
Fast 8 Jahre nix Neues!
Für mich ist das keine Weiterentwicklung und das geht auch nicht, weil
irgendwann die Optimierung eines Compilers abgeschlossen ist.
Weiterhin kann ich natürlich C++ verwenden, weil C++ bequemer und in der
Compilezeit heute besser ist als damals - aber nicht generell besser,
genau das ist Dein Irrglaube!
> Und doch hast du unzählige Male herumgejammert dass C ganz pöse> unportabel ist, weil oh Gott, undefiniertes Verhalten nun mal> undefiniert ist.
jo, alles Zufall, alles undefinierbar, weil das in C nun mal so ist -
sag doch besser 'ich weiß es leider nicht' anstelle dieses hochtrabenden
Geschwafels von Undefinierbarkeit, usw. - Tip: meld Dich mal in der
Politik an.
> Falls du dich erinnerst: in meinem Ursprungsposting hab> ich kurz mal auf die Vorteile von C++ verwiesen.
Ich weiß es jetzt nicht genau, ist irgendwo am Anfang des Threads - da
empfiehlst Du in Deinem ersten Post zu diesem Thread den TO:
Nimm C++, in C geht das nicht richtig, viel zu kompliziert.
Na, offenbar geht es schon! Du warst nicht in der Lage ihm zu helfen vor
lauter C++ Hype!
> Würde mich interessieren, wo du diese "f**k C++ Geilheit" verortest. Nur> weil du es nicht schaffst, Vor- und Nachteile von Programmiersprachen> sachlich und korrekt zu diskutieren?
das fängt schon mit Deiner Empfehlung an bei einem simplen
Programmierproblem die Sprache zu wechseln!
> Oh großer "S. B. (piezokristall)", ...
Ja, Deine Sachlichkeit läßt mindestens genauso zu wünschen übrig!
Richtig, an Sachlichkeit mußt Du auch noch arbeiten.
> Ein Expere halt, wie du.
siehst Du, ebenfalls jemand, der so seine Zweifel hat. Ich bezweifle,
daß die Runtime der vom C++ Compiler optimierten C++ Programme wirklich
besser als identische C Programme ist - bitte, wenn Du es besser weißt,
beweise es doch auch einmal mit Quellen!
> Beweis es endlich. Ach ja, hast du vorher nicht noch vom> immensen Speicherverbrauch geschrieben?
Hast Du Dir mal die CAD-Suiten, usw. angeschaut? Da spielt Speicher
keine Rolle - das war früher ganz anders, da gab es eben nur ein paar
Kilobyte an Speicher genauso wie bei Embedded teilweise noch heute!
Und die C++ Compiler waren in der Anfangszeit ebenfalls grottig.
Inbesondere bei größeren Programmen ist der Unterschied nun wirklich
spürbar zu merken, u.a. KDE - aufgrund von anderen Nachteilen hat sich C
nun mal nicht durchgesetzt bzw. versuchte durch C99, C11
Weiterentwicklung ein paar C++ Konzepte zu übernehmen.
> Und dann bitte die restlichen Behauptungen: C++ wäre ein Superset von C,
was soll es denn sonst sein? Eine Untermenge? LOL
> C++ hat irgendwas mit Microsoft zu tun,
Indirekt - C++ wurde vom Marktführer Microsoft dankbar aufgenommen.
Deine Software-Suiten, usw. die werden nun mal mit Visual C++ compiliert
und nicht mit GNU C++, Borland C++ oder weiß der Geier was - obwohl das
auch funktionieren würde .... vielleicht, wenn da nicht dieses zufällige
böse "undefined behaviour" der anderen Compiler wäre - warum soll man
das Risiko eingehen, wenn es Visual C++ kostenlos zum Download gibt,
alles reibungslos funktioniert und das zusammen mit Windows aus einem
Guß ist?
C++ nimmt keiner weil Java ja der Trend ist (doof nur, dass dein
Webbrowser vermutlich in C++ geschrieben ist), C wird nicht
weiterentwickelt (ach ne, haben wir ja eh schon entkräftet),
ja, ja, wir schreiben das Jahr 2019, letzte Weiterentwicklung 2011,
hust, röchel.
Dillo (https://www.dillo.org/) ist ein Browser, der teilweise in C
geschrieben ist. Das ist dann mal 'Geschwindigkeit'!
Oder Best of the best in Assembler:
https://kolibrios.org/en/
Das ist dann die hohe Kunst!
Nur leider kommen die an die Funktionalität der Standardprogramme gar
nicht heran, vieles geht noch nicht und wird nie funktionieren - wie
denn auch als One-Man-Show!
> C++ hat sich wegen bunter Fenster durchgesetzt> (genau, deswegen nimmt man es ja auch im Serverbereich, du meinst wohl> eher Java und .NET?),
Serverbereich weiß ich nicht, da hat Linux wohl etwas Boden gut gemacht?
- aber ansonsten gilt das Marktführerprinzip, also Android vor IOS,
Microsoft vor Apple, usw.
> C++ hat sich wegen der tollen IDE durchgesetzt> (welche soll das nochmal sein, gcc + vim?), etc. pp.
hab ich doch schon x-mal geschrieben: Visual C++
Microsoft ist Marktführer, warum soll man sich dann auf Experimente mit
anderen Compilern einlassen - nur, weil die 5% besser sind?
Okay, in Deinem Embedded Bereich kannst Du das natürlich gerne machen
und Du scheinst ja auch quasi Dein eigener Chefe zu sein.
Der Marktführer wird genommen, also Windows, IE oder Firefox, MS Office,
usw. - Punkt; so will es nun mal die Mehrheit!
Du kannst natürlich gern was anderes wählen, aber im Prinzip dann
berufliches Abseits, falls Du aus unerfindlichen Gründen doch nochmal
wechseln mußt.
Achso, Sicherheit ist ja in C++ ganz groß geschrieben (eines Deiner
TOP-Argumente zu Anfang des Threads);
gab's da nicht mal einen Ariane 5 Absturz?
Dein Englisch ist ja besser, welche Programmiersprache haben die da
verwendet? Hört sich stark nach C++ an, aber mein Englisch ist nicht so
gut, vielleicht täusche ich mich ja:
http://computer-programming-forum.com/44-ada/626c282aa05b4b23-15.htm
S. B. schrieb:> Immerhin scheinst Du es jetzt teilweise kapiert zu haben, weil ich das> 100mal wiederholt habe - es funktioniert bei mir, weil ich string.h> inkludiert habe und nochmal: Beim TO funktioniert es unter CodeBlocks> eben auch ohne string.h - darum geht es HIER!
Tja, und ich hab dich nun schon 100 Mal gefragt, wo dein Problem damit
ist, dass es bei ihm zufällig funktioniert?
CodeBlocks ist ja nicht mal ein Compiler sondern eine IDE, wir wissen
also genau gar nix über sein Setup, für dich ist aber C Schrott
deswegen.
S. B. schrieb:> Deine Antwort darauf: Ja das ist dann Zufall, undefined behaviour,> fehlerhafter Code bei CodeBlocks eben.> Na, das ist ja mal eine tolle Antwort!> Mit anderen Worten: Du weißt es nicht (und ich leider auch nicht -> deswegen frage ich danach). Das ist der Unterschied.
"undefined behaviour" ist ein Begriff aus dem C-Standard. Aber das weißt
du halt nicht, weil du kein C kannst. Und nein, nicht CodeBlocks (oder
der Compiler, den der TS unbekannterweise verwendet) ist fehlerhaft,
sondern sein Code, wie wir ja schon festgestellt haben.
S. B. schrieb:> aha, es ist also fehlerhafter Code, wenn es bei CodeBlocks ohne string.h> funktioniert? Ist das jetzt Deine Aussage? Ja oder nein - oder was> jetzt?
Natürlich ist sein Code fehlerhaft, dass es bei einzelnen Compilern
zufällig funktioniert, ist lt. Standard nun mal zulässig.
S. B. schrieb:> Du kapierst den Unterschied zwischen runtime und compile-time nicht und> machst deshalb immer wieder den gleichen Fehler, mindestens 100mal, dazu> kommen wir gleich noch.
Äh bitte was? Du kennst offensichtlich nicht mal den Unterschied
zwischen Compiletime, Compiletime-Optimization und Runtime Behaviour...
S. B. schrieb:> das kann schon, daß die compile-time aufgrund der Weiterentwicklung der> C++ Compiler besser ist als mit einem C Compiler mit C11 Standard - das> bezweifle ich nicht - es geht aber auch um die Runtime der Programme und> das ist was anderes.
Oh mein Gott, und wieder outest du dich als völlig ahnungslos.
Nein, die Zeit die der Compiler für C++ braucht ist sicher nicht
geringer, eher höher, eben weil er zur Compilezeit bereits stärker
optimieren kann, was wiederum die Laufzeit verringert. Du kannst aber
nichtmal diese simplen Begriffe auseinander halten.
S. B. schrieb:> Richtig und in C gibt es keine Weiterentwicklung seit 2011, C11 - und> heute schreiben wir 2019! Oha! So sieht also Weiterentwicklung bei Dir> aus?!
Nun, du hast ja so getan als hätte sich seit 1989 nichts mehr getan...
S. B. schrieb:> Weiterhin kann ich natürlich C++ verwenden, weil C++ bequemer und in der> Compilezeit heute besser ist als damals - aber nicht generell besser,> genau das ist Dein Irrglaube!
Komisch, nicht nur dass ich nie geschrieben habe, dass C++ in jeder
hinsicht besser wäre als C (wobei, ja, mir fällt da eigentlich kein Fall
ein wo dem nicht so wäre), compiliert C++ ganz sicher nicht schneller.
Aber du weißt halt nicht was Compiletimeoptimization ist (gibt es
übrigens auch bei C), und lässt dich deswegen durch solche Begriffe
verwirren.
S. B. schrieb:> jo, alles Zufall, alles undefinierbar, weil das in C nun mal so ist -> sag doch besser 'ich weiß es leider nicht' anstelle dieses hochtrabenden> Geschwafels von Undefinierbarkeit, usw. - Tip: meld Dich mal in der> Politik an.
Tipp: lern endlich C bevor du hier über diese Sprache fachsimpelst, dann
lernst du, dass "undefined" Teil des Standards ist!
S. B. schrieb:> Nimm C++, in C geht das nicht richtig, viel zu kompliziert.
Wo genau soll ich das geschrieben haben?
S. B. schrieb:> Na, offenbar geht es schon! Du warst nicht in der Lage ihm zu helfen vor> lauter C++ Hype!
Ach ja klar. Unternimm was gegen deinen Wahn.
S. B. schrieb:> das fängt schon mit Deiner Empfehlung an bei einem simplen> Programmierproblem die Sprache zu wechseln!
Wo soll ich das getan haben?
S. B. schrieb:> Ja, Deine Sachlichkeit läßt mindestens genauso zu wünschen übrig!> Richtig, an Sachlichkeit mußt Du auch noch arbeiten.
Wenn jemand tagelang unbelegten Müll behauptet und auch mehrfache
Nachfrage nix belegen kann, hört die Sachlichkeit halt irgendwann auf.
S. B. schrieb:> siehst Du, ebenfalls jemand, der so seine Zweifel hat.
Nochmal. Er redet von einem Garbage Collector. Einen solchen gibt es in
C++ nicht. Er redet offensichtlich von Java und .NET.
S. B. schrieb:> Ich bezweifle,> daß die Runtime der vom C++ Compiler optimierten C++ Programme wirklich> besser als identische C Programme ist
Und immer noch kannst du nicht mal im entferntesten Begründen, warum
dies so sein soll. Weil du halt weder die eine noch die andere Sprache
wirklich kennst.
S. B. schrieb:> bitte, wenn Du es besser weißt,> beweise es doch auch einmal mit Quellen!
Ach, jetzt soll ich noch Quellen für deinen Bullshit bringen? Aber
bitte, gerne, informier dich einfach mal über Zero Cost Abstraction wie
ich es dir schon lange nahelege, wenn du willst, kann ich dir auch ein
Beispielprogramm zusammenhacken.
Liefer doch endlich nur ein einziges Argument für deine abstrusen
Behauptungen.
S. B. schrieb:> Hast Du Dir mal die CAD-Suiten, usw. angeschaut? Da spielt Speicher> keine Rolle - das war früher ganz anders, da gab es eben nur ein paar> Kilobyte an Speicher genauso wie bei Embedded teilweise noch heute!
Ja ne ist, klar, gerade bei solchen High-Performancetools soll
Perfomance egal sein. Aber sonst gehts noch? Wäre dem so, wäre das Zeug
ja in Java oder .NET geschrieben...
S. B. schrieb:> Und die C++ Compiler waren in der Anfangszeit ebenfalls grottig
Bestreitet keiner.
S. B. schrieb:> Inbesondere bei größeren Programmen ist der Unterschied nun wirklich> spürbar zu merken, u.a. KDE
Achso, du spürst also, ob ein Programm in C oder C++ geschrieben ist?
Esoteriker, oder was? Und KDE ist nicht etwa aufgrund von mehr Eyecandy
langsamer?
S. B. schrieb:> Deine Software-Suiten, usw. die werden nun mal mit Visual C++ compiliert> und nicht mit GNU C++, Borland C++ oder weiß der Geier was - obwohl das> auch funktionieren würde
Ja ne klar, keiner verwendet GCC. Ist klar.
S. B. schrieb:> was soll es denn sonst sein? Eine Untermenge? LOL
Eine andere Sprache, die in Teilen kompatibel ist. Ein Superset wäre zu
100% kompatibel, aber dann müsste man auch diverse Altlasten von C
mitschleppen (die man dort eigentlich auch gern raus hätte, aber
Kompatibilität und so).
Aber du kennst die Sprachen, über die du dich lang und breit auslässt
halt nicht, weder die eine, noch die andere.
S. B. schrieb:> vielleicht, wenn da nicht dieses zufällige> böse "undefined behaviour" der anderen Compiler wäre
Nochmal, zum mitschreiben: Es gibt im Standard (insbesondere C, C++ ist
da wesentlich strenger) Dinge, die sind "undefined", andere
"implementation defined". Dort darf (!) der Compiler machen was er will,
deshalb vermeidet man diese Dinge halt. Das hat nix mit Zufall zu tun.
Wer fehlerhaften Input liefert, kriegt halt undefinierten Output, ganz
einfach.
S. B. schrieb:> warum soll man> das Risiko eingehen, wenn es Visual C++ kostenlos zum Download gibt,> alles reibungslos funktioniert und das zusammen mit Windows aus einem> Guß ist?
Reibungslos? MSVC unterstützt nicht mal C99 und C++98 richtig, 20 Jahre
nach deren Erscheinen, da hast du deinen Grund.
S. B. schrieb:> Serverbereich weiß ich nicht, da hat Linux wohl etwas Boden gut gemacht?> - aber ansonsten gilt das Marktführerprinzip, also Android vor IOS,> Microsoft vor Apple, usw.
Nochmal, was hat das mit Windows oder Linux zu tun?
S. B. schrieb:> hab ich doch schon x-mal geschrieben: Visual C++> Microsoft ist Marktführer, warum soll man sich dann auf Experimente mit> anderen Compilern einlassen - nur, weil die 5% besser sind?
MSVC ist kein toller Compiler, sondern der letzte Schrott, und wird
außerhalb vom Klickbuntbereich auch nicht verwendet.
S. B. schrieb:> Okay, in Deinem Embedded Bereich kannst Du das natürlich gerne machen
So ziemlich jeder, der vernünftig ist, verwendet GCC oder Clang, auch
Projekte die aus historischen Gründen bei MSVC hängen, wechslen immer
öfter, nicht nur bei C++, auch bei C. Das wüsstest du, wärst du vom
Fach.
S. B. schrieb:> und Du scheinst ja auch quasi Dein eigener Chefe zu sein.
Nö, lediglich kompetent genug die Werkzeuge vorzugeben.
S. B. schrieb:> Firefox
Firefox ist schon lang kein Marktführer mehr.
S. B. schrieb:> Du kannst natürlich gern was anderes wählen, aber im Prinzip dann> berufliches Abseits, falls Du aus unerfindlichen Gründen doch nochmal> wechseln mußt.
Du meinst so wie du? Nein, die Angst hab ich nicht. Man stellt sich ja
breit auf und entwickelt sich weiter, deswegen bleibt man ja nicht aus
purer Angst vor neuem bei C.
S. B. schrieb:> Achso, Sicherheit ist ja in C++ ganz groß geschrieben (eines Deiner> TOP-Argumente zu Anfang des Threads);> gab's da nicht mal einen Ariane 5 Absturz?> Dein Englisch ist ja besser, welche Programmiersprache haben die da> verwendet? Hört sich stark nach C++ an, aber mein Englisch ist nicht so> gut, vielleicht täusche ich mich ja:> http://computer-programming-forum.com/44-ada/626c282aa05b4b23-15.htm
Interessant, was genau willst du der Welt damit mitteilen? Dass du
ernsthaft denkst, irgendeine Sprache könnte Fehler zu 100% verhindern?
Und wieder beweist du durch deine Polemik völlige Ahnungslosigkeit.
Und wieder konntest du deine Behauptungen nicht untermauern. Nicht mal
konntest du erklären, warum C++ so doll viel Speicher brauchen soll.
> Tja, und ich hab dich nun schon 100 Mal gefragt, wo dein Problem damit> ist, dass es bei ihm zufällig funktioniert?
das klang vorher ganz anders; aber gut, falscher Code beim TO und der
Rest dann alles reiner Zufall - genau das bezweifle ich.
> CodeBlocks ist ja nicht mal ein Compiler sondern eine IDE, wir wissen> also genau gar nix über sein Setup, für dich ist aber C Schrott> deswegen.
Na, irgendeinen Compiler scheint bei CodeBlocks eingestellt gewesen zu
sein und das wäre ja mal interessant zu erfahren welcher?
GCC ist angeblich bei CodeBlocks sogar voreingestellt.
> für dich ist aber C Schrott deswegen.
wieder eine miese Unterstellung! Es geht mir hier lediglich um die
Frage, warum das beim TO ohne string.h läuft.
Für Dich ist im Zweifel 'alles' illegal code, undefined behaviour, etc.
- bißchen sehr einfach!
> Nochmal, zum mitschreiben: Es gibt im Standard (insbesondere C, C++ ist> da wesentlich strenger) Dinge, die sind "undefined", andere> "implementation defined". Dort darf (!) der Compiler machen was er will,> deshalb vermeidet man diese Dinge halt.
Genau deswegen wäre es ja mal sehr interessant zu wissen, welchen
Compiler der TO unter CodeBlocks überhaupt verwendet ?! Oder?
Vielleicht meldet er sich ja nochmal.
Bei mir: gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
> Wo genau soll ich das geschrieben haben?
Dein Zitat:
"Im Zweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und
Geschwindigkeit."
Also indirekt eine Aufforderung besser gleich in C++ zu programmieren,
obwohl das Miniprogramm in C nun wirklich nicht das Programmierproblem
war und ist.
Und an diesen Blödsinn hat sich der ganze Streit entbrannt - für nix!
Teilweise muß ich mich korrigieren - auch die Runtime der C++ Programme
scheint bei "guter" C++ Programmierung zu stimmen bzw. sogar noch besser
zu sein - das geht aber nur bei wirklich guter Optimierung, was der C++
Compiler wohl mittlerweile auch schafft!
https://www.quora.com/Is-C++-slower-than-C-If-yes-is-the-difference-significant
Den Link hättest Du ja bringen können, hast Du aber nicht!
Komischerweise kommt in diesem Endlos-Link dann auch noch jemand zu dem
Ergebnis, daß der Java-Compiler am Ende sogar noch besser ist was
Optimierung anbelangt im Vergleich zu C++ .... und dafür gibt's dann
:-):-):-) von mir.
Du siehst, so ganz eindeutig scheint das alles nicht zu sein!
> Dass du ernsthaft denkst, irgendeine Sprache könnte Fehler zu 100%> verhindern?
Für Dich scheint C++ das A&O für alles und nichts zu sein und das ist es
eben nicht - Sicherheit wohl eher mäßig, sonst hätte es den Absturz
nicht gegeben.
Was nicht sein kann, passiert auch schon mal - Zufall eben, der falsche
C++ Compiler bzw. Compilereinstellung war aber sicher nicht Schuld :-)
Du hast mit C++ weitaus mehr Möglichkeiten und kannst damit auch mehr
ruinieren, ohne daß es einer sofort merkt.
Wie gesagt, die Compilervariante des TO würde mich mal interessieren (so
er sich denn nochmal meldet) .... sonst führt das hier zu nix außer
blabla.
Troll around the clock schrieb:> Dein Zitat:> "Im Zweifel ist aber C++ dann doch die bessere Wahl. Sicherheit, und> Geschwindigkeit.">> Also indirekt eine Aufforderung besser gleich in C++ zu programmieren,> obwohl das Miniprogramm in C nun wirklich nicht das Programmierproblem> war und ist.
Dein Textverständnis ist ähnlich gut wie deine Programmierkünste.
Troll around the clock schrieb:> Und an diesen Blödsinn hat sich der ganze Streit entbrannt - für nix!
Nö, weil du ständig mit Kacke und unbelegten Behauptungen um dich
wirfst.
Troll around the clock schrieb:> Teilweise muß ich mich korrigieren - auch die Runtime der C++ Programme> scheint bei "guter" C++ Programmierung zu stimmen bzw. sogar noch besser> zu sein
Ach ne, jetzt auf einmal?
Troll around the clock schrieb:> https://www.quora.com/Is-C++-slower-than-C-If-yes-is-the-difference-significant> Den Link hättest Du ja bringen können, hast Du aber nicht!
Oh, ich bin aber ganz böse, ich hab den Link nicht gebracht!
Troll around the clock schrieb:> Komischerweise kommt in diesem Endlos-Link dann auch noch jemand zu dem> Ergebnis, daß der Java-Compiler am Ende sogar noch besser ist was> Optimierung anbelangt im Vergleich zu C++ .... und dafür gibt's dann> :-):-):-) von mir.> Du siehst, so ganz eindeutig scheint das alles nicht zu sein!
Man kann natürlich für jeden Compiler ein Programm schreiben, das
schlechter performt als auf einem anderen.
Troll around the clock schrieb:> Für Dich scheint C++ das A&O für alles und nichts zu sein
Dass du es noch 10 mal wiederholst, macht es auch nicht wahrer. Warum
verdammt nochmal versuchst du eigentlich, mir zu erklären was deiner
Ansicht nach meine Meinung sein soll?
Troll around the clock schrieb:> Sicherheit wohl eher mäßig, sonst hätte es den Absturz> nicht gegeben.
Blödheit und mangelnde Tests kann keine Programmiersprache verhindern.
Aber dass das für dich ein Zeichen mäßiger Sicherheit ist, sagt ja eh
schon wieder alles über deine Kompetenz.
Troll around the clock schrieb:> Was nicht sein kann, passiert auch schon mal - Zufall eben,
Richtig, deshalb gibts auch Tests, die kann keine Programmiersprache der
Welt ersetzen, auch wenn du das zu glauben scheinst.
Troll around the clock schrieb:> der falsche> C++ Compiler bzw. Compilereinstellung war aber sicher nicht Schuld :-)
Wäre auch absurd, das anzunehmen.
Troll around the clock schrieb:> Du hast mit C++ weitaus mehr Möglichkeiten und kannst damit auch mehr> ruinieren, ohne daß es einer sofort merkt.
Juhu, schon wieder eine unbelegte Behauptung mehr. Poste doch mal ein
Beispiel, vielleicht klappt es ja diesmal, ohne dass du wieder tagelang
mit Kacke um dich werfen musst, bevor du feststellst dass du doch
unrecht hattest.
Ich bin hier raus, deine Selbstüberschätzung gepaart mit absoluter
Fachunkenntnis wird mir zu blöd.
> Blödheit und mangelnde Tests kann keine Programmiersprache verhindern.> Aber dass das für dich ein Zeichen mäßiger Sicherheit ist, sagt ja eh> schon wieder alles über deine Kompetenz.
So gesehen ist natürlich alles sicher, wenn das übliche Prozedere
irgendwie absolviert wurde und Fragen unerwünscht sind :->
Aber so weit kannst Du vor lauter Kompetenz gar nicht mehr denken! Dafür
reicht es eben nicht, für Anglizismen, Nachhaltigkeit und Schlagwörter
dafür reicht es.
Glaubst Du wirklich ein Milliardenprogramm läuft ohne Software-Tests ab?
"Die Sicherheit" von C++ wird in dem Link angezweifelt! Da wird
tatsächlich behauptet, daß es mit einer anderen Programmiersprache gar
nicht erst passiert wäre - soviel zur C++ Sicherheit!
Aber das sind natürlich so wie meine Wenigkeit alles nur inkompetente
Idioten und wie IMMER hast nur DU recht, bist eben der Superguru!
> Wäre auch absurd, das anzunehmen.
LOL, aber bei CodeBlocks und dem dort eingebundenen C Compiler spielt
das auf einmal doch wieder eine entscheidende Rolle? Der produziert auf
einmal per Zufall fehlerhaften Code?
Fehlerhafter Code, Compilereinstellungen sind Schuld, welche genau
spielt keine Rolle, macht nix, alles nur reiner Zufall, 'undefined'
eben.
Das ist eine schöne Erklärung, wenn man nicht mehr weiter weiß.
> Richtig, deshalb gibts auch Tests, die kann keine Programmiersprache der> Welt ersetzen, auch wenn du das zu glauben scheinst.
eigentlich noch schlimmmer !!! - dann hätten die Software-Tests beim
Arianeprogramm genau diese Fehler zu Tage fördern müssen!
Natürlich alles Idioten die Programmierer und die Software-Tester
ebenfalls ?!
So muß es wohl gewesen sein?
Nur Gurus wie Dir kann sowas natürlich nie passieren.
Nur gut, daß Sie beim Militär ADA verwenden, ansonsten gute Nacht!
> Juhu, schon wieder eine unbelegte Behauptung mehr. Poste doch mal ein> Beispiel,...
mach das zur Abwechslung doch mal selber, Du bist doch der C++ Experte,
ich nicht.
Außerdem liest Du meine Links nur oberflächlich; Egal was ich bringen
würde, es wäre IMMER inkompetent, usw., Futter für den Oberguru, damit
es dann Anglizismen hagelt? Nein, Danke!
Weiterhin komme ich gar nicht mehr nach auf Deine ganzen zum Teil
falschen Darstellungen zu antworten! Es geht schon rein zeitlich nicht!
Auf den eigentlichen Sachverhalt gehst Du sowieso nicht ein bzw. mit
"undefined" hat sich die Frage für Dich erledigt.
> Ich bin hier raus
ich auch - jemand, der mit Anglizismen nur so um sich wirft, alles auf
'undefined behaviour',fehlerhaften Code und Zufälle aller Art
zurückführt, den das Compilerverhalten einen Dreck interessiert, der den
Ariane Absturz nur auf mangelnde Tests oder auch totale Doofheit der
dortigen Programmierer und Software-Tester zurückführt, der den Visual
C++ Compiler wesentlich schlechter als einen Freeware Compiler einstuft
- was soll man da noch sagen ???
Du hast IMMER recht, könnten wir doch alle Deinen göttlichen Status
erreichen! - jetzt zufrieden ?!
Aber es gibt auch Teilnehmer (nicht nur ich), die das anders sehen und
der Sache gern auf den Grund gehen möchten; ob Dir das nun paßt oder
nicht!
Dann mußt Du eben mal Beispiele und Argumente liefern, die das eindeutig
belegen - was Du ja nicht machst.
Zum Abschluß noch ein kleines Schmankele zur Deiner Lieblingssprache
JAVA, die ja so mies ist im Vergleich zu C++
https://www.heise.de/newsticker/meldung/SAP-setzt-auf-Java-51972.html
Na ja, SAP ist für Dich wahrscheinlich eine genauso inkompetente Firma
wie die Programmiersprache Java selbst ?!
Echt traurig solche Leute wie Du.
Überall nur Inkompetenz & Idioten, mal Dir weiter Deine Welt!
Wieder so viele Personalpronomen...
Darüber hinaus gilt im gesamten Forum, also auch hier die simple Regel:
Nur 1 Nutzername pro Thread!
Siehe die Nutzungsbedingungen