Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Webdesign neben C++ machen
- Ersteller 1337hAx'
- Erstellt am
- Registriert
- Juli 2012
- Beiträge
- 338
Ich verbring meine Zeit doch eh nur mit Bücher lesen, zocken oder im Internet rumhängen
(stimmt, real lifen gibts auch noch..)
Bin auch gern immer ein bisschen voraus, hab ich's später nicht so schwer. Und jetzt hab ich ja noch ne Menge Freizeit ^^
Bin auch gern immer ein bisschen voraus, hab ich's später nicht so schwer. Und jetzt hab ich ja noch ne Menge Freizeit ^^
daemon777
Lt. Commander
- Registriert
- Dez. 2003
- Beiträge
- 1.371
Wenn du mit "Körper" so etwas wie 3D-Modelle meinst, dann solltest du dich vor dem Begriff "Körper" hüten, denn der bedeutet in der Mathematik etwas Anderes. Das was du meinst schimpft sich lineare Algebra 
Zum Primzahlalgorithmus: hihi bei dem Thema kann man ziemlich viel Zeit damit verbringen einen noch cooleren Algorithmus zu finden oder den Algorithmus zu optimieren
Und zum real-life: es schadet nicht, wenn man sich damit auch noch beschäftigt
Zum Primzahlalgorithmus: hihi bei dem Thema kann man ziemlich viel Zeit damit verbringen einen noch cooleren Algorithmus zu finden oder den Algorithmus zu optimieren
Und zum real-life: es schadet nicht, wenn man sich damit auch noch beschäftigt
@daemon77
Bitte erinnere mich nicht daran. Mich gruselt es immer noch bei diesem Thema. Gruppen, Ringe und Körper haben mich echt fertig gemacht. Wer sich das ausgedacht hat, muss was genommen haben.
@1337hAx'
Wenn dich Mathe interessiert, dann schau dir bei Youtube mal die Videos von Numberphile an. Die erklären auf einfache Art, warum zB 1+2+... (unendlich) = -1/12 ist. Da ist man manchmal sehr verblüfft, welche Blüten die Mathematik so treibt.
Bitte erinnere mich nicht daran. Mich gruselt es immer noch bei diesem Thema. Gruppen, Ringe und Körper haben mich echt fertig gemacht. Wer sich das ausgedacht hat, muss was genommen haben.
@1337hAx'
Wenn dich Mathe interessiert, dann schau dir bei Youtube mal die Videos von Numberphile an. Die erklären auf einfache Art, warum zB 1+2+... (unendlich) = -1/12 ist. Da ist man manchmal sehr verblüfft, welche Blüten die Mathematik so treibt.
- Registriert
- Juli 2012
- Beiträge
- 338
@e-Laurin schon laengst abonniert 
und das video mit unendlich = -1/12 hab ich auch vor ner weile gesehen. Dabei haben sie aber sozusagen den Durchschnitt einer Summe genommen, dann wieder den durchschnitt von ner anderen Summe drauf und batz, -1/12 (wie auch immer das geht, weil unendlich keine rationale Zahl ist). Was sind nochmal Gruppen, Ringe und Koerper? Ich hab sowas mal in nem buch gesehen...
EDIT: Ach ich seh schon, habe ich mir vor ner weile mal gegeben, das war wirklich ermuedend..
und das video mit unendlich = -1/12 hab ich auch vor ner weile gesehen. Dabei haben sie aber sozusagen den Durchschnitt einer Summe genommen, dann wieder den durchschnitt von ner anderen Summe drauf und batz, -1/12 (wie auch immer das geht, weil unendlich keine rationale Zahl ist). Was sind nochmal Gruppen, Ringe und Koerper? Ich hab sowas mal in nem buch gesehen...
EDIT: Ach ich seh schon, habe ich mir vor ner weile mal gegeben, das war wirklich ermuedend..
Zuletzt bearbeitet:
Eigentlich ist es ja ganz interessant, zu verstehen, wie unsere alltäglich verwendeten Zahlstrukturen im Inneren funktionieren. Für viele Dinge ist das Wissen darum auch sehr nützlich. Die Kryptologen werden wohl im Kreis getanzt haben, als der große fermatsche Satz (Es gibt kein n > 2, für das gilt: xn + yn = zn) bewiesen wurde. Gleichzeitig erlaubt einem dieser Satz, die Struktur von Gruppen, Ringen und Körpern weiter zu untersuchen.
Und da du gefragt hast:
Eine Gruppe G ist eine Struktur, bestehend aus einer Menge von Elementen und einer Operation ●, die
a) abgeschlossen sind (a ● b = c, für a, b, c ∈ G),
b) ein neutrales Element ε ∈ G haben (a ● ε = a und ε ● a = a) und
c) jedes Element eine Inverse in der Gruppe hat. (a ● a-1 = ε)
Achtung! Die Reihenfolge der Rechnung ist entscheidend! a ● b muss nicht dasselbe wie b ● a sein. Es sei denn das Kommutativgesetz gilt, dann kann man die Elemente beliebig vertauschen. So eine Gruppe nennt man dann abelsch.
Ein Ring R ist sozusagen eine erweiterte Gruppe. Hier hat man auch eine Menge von Elementen allerdings jetzt zwei Operationen ● und ⊕. Hier gilt:
a) Der Ring ist abgeschlossen. (a ● b = c und a ⊕ b = d, für a, b, c, d ∈ R)
b) Es gibt bei beiden Operationen ein neutrales Element ε●, ε⊕ ∈ R. (a ● ε● = a, ε● ● a = a und a ⊕ ε⊕ = a, ε⊕ ⊕ a = a)
c) Jedes Element außer 0 hat ein Inverses. (a ● a●-1 = ε● und a ⊕ a⊕-1 = ε⊕)
Körper sind speziellere Ringe, für die gilt:
a) Das Kommutativgesetz gilt. (a ● b = b ● a)
b) Jedes Element a ≠ 0 hat ein multiplikatives Inverses.
(c) Wenn die Elemente aus der Menge der Zahlen ℤm kommen und m eine Primzahl ist, dann ist das auch ein Ring.)
● und ⊕ sind Platzhalter für Operationen. Meist verwendet man die Addition und die Multiplikation. Durch die Betrachtung der Strukturen wird dann klar, dass die Subtraktion und die Division eigentlich nur die Addition und die Multiplikation mit den Inversen sind. Zack, und schon bemerkt man, dass die vier Grundrechenarten eigentlich nur zwei Rechenarten sind. Man kann aber auch noch andere Dinge da rausziehen.
Ein Beispiel für Ringe ist ℤ. Beispiele für Körper sind ℚ, ℝ und ℂ. Für RSA konstruiert man mit zwei Primzahlen im Grunde einen Körper mit besonderen Eigenschaften, die man dann für die Ver- und Entschlüsselung ausnutzt. Es ist schon echt genial, was man mit den Dingern so anfangen kann.
Und da du gefragt hast:
Eine Gruppe G ist eine Struktur, bestehend aus einer Menge von Elementen und einer Operation ●, die
a) abgeschlossen sind (a ● b = c, für a, b, c ∈ G),
b) ein neutrales Element ε ∈ G haben (a ● ε = a und ε ● a = a) und
c) jedes Element eine Inverse in der Gruppe hat. (a ● a-1 = ε)
Achtung! Die Reihenfolge der Rechnung ist entscheidend! a ● b muss nicht dasselbe wie b ● a sein. Es sei denn das Kommutativgesetz gilt, dann kann man die Elemente beliebig vertauschen. So eine Gruppe nennt man dann abelsch.
Ein Ring R ist sozusagen eine erweiterte Gruppe. Hier hat man auch eine Menge von Elementen allerdings jetzt zwei Operationen ● und ⊕. Hier gilt:
a) Der Ring ist abgeschlossen. (a ● b = c und a ⊕ b = d, für a, b, c, d ∈ R)
b) Es gibt bei beiden Operationen ein neutrales Element ε●, ε⊕ ∈ R. (a ● ε● = a, ε● ● a = a und a ⊕ ε⊕ = a, ε⊕ ⊕ a = a)
c) Jedes Element außer 0 hat ein Inverses. (a ● a●-1 = ε● und a ⊕ a⊕-1 = ε⊕)
Körper sind speziellere Ringe, für die gilt:
a) Das Kommutativgesetz gilt. (a ● b = b ● a)
b) Jedes Element a ≠ 0 hat ein multiplikatives Inverses.
(c) Wenn die Elemente aus der Menge der Zahlen ℤm kommen und m eine Primzahl ist, dann ist das auch ein Ring.)
● und ⊕ sind Platzhalter für Operationen. Meist verwendet man die Addition und die Multiplikation. Durch die Betrachtung der Strukturen wird dann klar, dass die Subtraktion und die Division eigentlich nur die Addition und die Multiplikation mit den Inversen sind. Zack, und schon bemerkt man, dass die vier Grundrechenarten eigentlich nur zwei Rechenarten sind. Man kann aber auch noch andere Dinge da rausziehen.
Ein Beispiel für Ringe ist ℤ. Beispiele für Körper sind ℚ, ℝ und ℂ. Für RSA konstruiert man mit zwei Primzahlen im Grunde einen Körper mit besonderen Eigenschaften, die man dann für die Ver- und Entschlüsselung ausnutzt. Es ist schon echt genial, was man mit den Dingern so anfangen kann.
Zuletzt bearbeitet:
B
black90
Gast
asdfman schrieb:Möchte hier einwerfen, dass das Konstrukt "C/C++" etwa so sinnvoll ist, als würde man "Apfel/Toaster" schreiben.
Dann noch zu "ist eh alles objektorientiert": C gibt dem Benutzer keine sofort einsetzbare Lösung für objektorientierte Programmierung mit. Zum Beispiel gibt es keine Klassen. Ein Objektsystem müsste man sich erst selbst basteln und wenn das auch manchmal sinnvoll sein mag (siehe z.B. das Objektsystem in Linux, das in C geschrieben ist), ist OOP nicht das Werkzeug der ersten Wahl beim Programmieren im C.
? C ist zu 100% C++ kompatibel ! Darum soll man auch erst C lernen bevor man C++ anfängt, da hast du keine unnötige Verwirrung drin und kommst relativ schnell voran da C mit der Standard library recht überschaubar ist. C ist praktisch die Basis Sprache, C++ ein objektorierntierter Aufsatz. Dennoch wird man für gescheite Programme beides brauchen, grad in C++ !
Und selbst für Java braucht man C um überhaupt zu verstehen wie Strings und Arrays etc. wirklich funktionieren. Selbst die Java JVM ist in C geschrieben
Darum finde ich es für Anfänger recht Sinnbefreit C++ zu starten. OOP wird unnötig verkompliziert, da lernt man mit Java wesentlich schneller (bessere Compiler mit Fehlerangabe) und kann es dann ohne große Probleme auf jede andere OO Sprache ummünzen. Objektorientierung wird von Anfängern meist nicht mal wirklich verstanden
Eine noch leichtere Alternative als Java ist C#, aber dafür mehr oder weniger Mircrosoft abhängig.
Zuletzt bearbeitet:
asdfman
Commander
- Registriert
- März 2008
- Beiträge
- 2.315
Nein.black90 schrieb:? C ist zu 100% C++ kompatibel !
Nein, nein, nein, nein. Bitte, bitte nicht!Darum soll man auch erst C lernen bevor man C++ anfängt
Hier fehlt ein ganz dickes "meiner Meinung nach" und deine Meinung deckt sich leider nicht mit der Realität.da hast du keine unnötige Verwirrung drin und kommst relativ schnell voran da C mit der Standard library recht überschaubar ist.
Nein.C ist praktisch die Basis Sprache, C++ ein objektorierntierter Aufsatz.
Nein.Dennoch wird man für gescheite Programme beides brauchen, auch in C++ !
€: Langfassung zum langweilen:
1. Kompatibilität von C und C++
Zwei Dinge sind entweder kompatibel oder nicht. Das mit einer spektakulären Prozentangabe zu quantifizieren zeigt, dass dir der Effekt deiner Aussage wichtiger ist, als ihr Sinn.
Während Penis und Vagina kompatibel sind, wird deine Frau niemals zu 78% schwanger sein.
- Ist jedes C++-Programm ein gültiges C-Programm?
Die Antwort ist offensichtlich.
- Ist jedes C-Programm ein gültiges C++-Programm?
Wie tausendmal durchgekaut nein. Beispiel? char *peter = malloc(sizeof(franz));
- Kann man von einem C-Programm auf C++-Interfaces zugreifen?
Wenn die Antwort nicht offensichtlich sein sollte: Gib mir ein einfaches, Compiler- und Plattformunabhängiges Beispiel, eine Klasse aus einer C++-Bibliothek in vollem Umfang in C zu verwenden.
- Kann man von einem C++-Programm auf C-Interfaces zugreifen?
Ja, aber ist das eine besondere Leistung, die C++ hervorhebt, oder kann man das nicht eigentlich doch mit fast jeder Sprache? Dann darf man natürlich nicht vergessen, dass sich der Zugriff unterschiedlich gestaltet, je nachdem, ob der C-Code mit einem C- oder C++-Compiler übersetzt wurde (falls letzteres denn im speziellen Fall möglich ist).
2. Erst C, dann C++?
Wem nützt das? Es sind zwei völlig unterschiedliche Sprachen, die gemeinsame Wurzeln haben. Das ist, als würde man einem Spanier sagen, wenn er Englisch lernen will, soll er vorher Deutsch lernen.
Wenn man C++ lernen möchte, sollte man C++ lernen. Es klingt so trivial, trotzdem wird immer wieder eine völlig unsinnige gegenteilige Empfehlung gegeben.
3. Schnelles Vorankommen mit C
Ich gebe dir teilweise recht, dass man es mit einem überschaubaren Umfang an Features leichter hat, den Überblick nicht zu verlieren. Aber während das bei einer Sprache wie Lisp absolut richtig ist, ist es bei C völlig daneben. Denn während der Umfang der Sprache selbst sehr gering ist, fehlen auch Features die in modernen Sprachen Standard sind, wie unser allerliebstes Beispiel der automatisches Speicherverwaltung. Lisp nimmt einem das vollständig ab, C++ ersetzt das anfängerunfreundliche Speichermanagement von C durch eine andere Art, sich am Ende auf die selbe Weise selbst in den Fuß zu schießen. Also warum lernen, wie man es auf zwei Arten falsch machen kann, wenn man die eine von vornherein gar nicht wissen will?
C++ objektorientierter Aufsatz für C?
Hättest du vielleicht mein Post mal lesen sollen. Dann hättest du vielleicht gemerkt, dass mit der Aussage etwas nicht stimmen kann. Objektorientierte Programmierung ist eine allgemeine Methode, die man in beliebigen Sprachen anwenden kann. Es geht in C genauso wie in bspw. Lisp. C++ bietet einem als Werkzeug zur Anwendung der Methode die Klasse an, während Lisp eine eigene Art der Datenabstraktion zur Verfügung stellt und man sich in C das Werkzeug komplett selbst bauen muss.
Was die Behauptung angeht, C++ sei einfach allgemein ein "Aufsatz" für C, klingt mir das mehr nach einer Floskel als nach einer sinnhaltigen Aussage. Was ist denn ein "Aufsatz"? Meinst du, C++ sei eine Erweiterung für C? Ist es nicht. Wenn du etwas anderes meintest, sag. Aber ich glaube, du meintest eigentlich gar nichts, sondern hast nur so dahergetippt.
4. ????
Hier scheinst du das Tippen vollständig an das unwillkürliche Nervensystem übergeben zu haben. Was braucht man beides? C und C++? Braucht man beides auch für C++? Oder wie jetzt? Hä?
Zuletzt bearbeitet:
Man muss kein C können, um C++ zu lernen. Oder muss man Turbo Pascal können, um Delphi zu lernen?black90 schrieb:Darum soll man auch erst C lernen bevor man C++ anfängt... C ist praktisch die Basis Sprache, C++ ein objektorierntierter Aufsatz.
Und der objektorientierte Ansatz zu C ist nicht C++, sondern Objective-C.
Der PHP Parser ist auch in C geschrieben... und? Denkst du, jetzt muss man C können, um PHP zu schreiben?Und selbst für Java braucht man C um überhaupt zu verstehen wie Strings und Arrays etc. wirklich funktionieren. Selbst die Java JVM ist in C geschrieben![]()
Und wie blöde... ich hab Java gemacht, lange bevor ich mit C in Berührung gekommen bin... und ob du's glaubst oder nicht: Ich hab Strings und Arrays da wunderbar verstanden. Tatsächlich braucht man KEINE der C-Kaspereien in Java, da Java eine viel modernere Sprache ist und ein gänzlich anderes Speichermanagement hat. Nie wieder malloc().... und STRINGS als Datentyp gibts in C eh nicht, es gibt nur Char Arrays.
Es ist deine eigene Schuld, wenn du mit den Compiler-Fehlermeldungen in C++ nicht klar kommst. Die Dinger unterscheiden sich eigentlich kaum von denen in anderen Sprachen....da lernt man mit Java wesentlich schneller (bessere Compiler mit Fehlerangabe) und kann es dann ohne große Probleme auf jede andere OO Sprache ummünzen
Und wenn es nur darum geht, OO-Konzepte zu verstehen, da kannste genauso gut mit PHP anfangen, mit Delphi, mit JavaScript,...
B
black90
Gast
Dein Beispiel musst du nur casten, dann hast keinen Ärger und 100% kompatibel.
Lass raten, du hast es in Visual Studio > 2010 versucht?
Und Strings verstehst du erst wirklich wenn du es in C machst. Denn genau das macht Java auch hinter der Tür für dich. Und genau deswegen sind Strings in Java immutable und es gibt keine einzige Methode mit der du Strings kürzen oder erweitern kannst, ohne umzukopieren. Von dem Umkopieren weißt du allerdings erst wenn du es mal in C manuell gemacht hast ! Ach ja, Chars sind auch nur Zahlen im Speicher die auf Zeichentabellen gemappt werden... gibt also auch keine Chars. Ist nützlich wenn man sowas auch in Java weiß, bevor man sich wundert warum das Eclipse Projekt aus Windows in Linux auf einmal keine Umlaute zeigt
Auch sowas erfährt man in C.
Und das ist nur eines von vielen Dingen warum C absolut für jeden nötig ist, der irgendwie Verständnis für irgendeine Programmiersprache haben will. Spätestens im Studium mit embedded systems usw. wirst du zwangsläufig C brauchen und nicht C++. Das reine Programmieren machen eh die Inder, in Deutschland erwarten sie mehr Verständnis als die reine Benutzung der Java API.
Wie gesagt, für den Anfang Java oder C, oder beides gleichzeitig.
Lass raten, du hast es in Visual Studio > 2010 versucht?
Und Strings verstehst du erst wirklich wenn du es in C machst. Denn genau das macht Java auch hinter der Tür für dich. Und genau deswegen sind Strings in Java immutable und es gibt keine einzige Methode mit der du Strings kürzen oder erweitern kannst, ohne umzukopieren. Von dem Umkopieren weißt du allerdings erst wenn du es mal in C manuell gemacht hast ! Ach ja, Chars sind auch nur Zahlen im Speicher die auf Zeichentabellen gemappt werden... gibt also auch keine Chars. Ist nützlich wenn man sowas auch in Java weiß, bevor man sich wundert warum das Eclipse Projekt aus Windows in Linux auf einmal keine Umlaute zeigt
Und das ist nur eines von vielen Dingen warum C absolut für jeden nötig ist, der irgendwie Verständnis für irgendeine Programmiersprache haben will. Spätestens im Studium mit embedded systems usw. wirst du zwangsläufig C brauchen und nicht C++. Das reine Programmieren machen eh die Inder, in Deutschland erwarten sie mehr Verständnis als die reine Benutzung der Java API.
Wie gesagt, für den Anfang Java oder C, oder beides gleichzeitig.
Zuletzt bearbeitet:
daemon777
Lt. Commander
- Registriert
- Dez. 2003
- Beiträge
- 1.371
Also für Embedded Systems verwenden wir VHDL oder Assembler. Letzteres vermittelt übrigens ein viel tieferes Verständnis dafür, was im PC vor sich geht, da ich hier keine Abstraktionsschicht mehr dazwischen habe. Wenn ich nie in ASM programmiert habe, dann habe ich doch keinerlei Ahnung davon, was intern hier alles für mich abgenommen wird. Wie kann man denn behaupten, dass man programmieren kann, wenn man sich nur auf solche high-level-Konstrukte wie C verlässt?
C
carom
Gast
black90, dein Post ist ein schönes Beispiel dafür, warum man das Wissen aus C lieber beiseite legen sollte.
Nein, der Umkehrschluss ist der Fall.
Strings in Java immutable zu machen war eine Designentscheidung, weil Immutabilität bei Datenstrukturen viele Vorteile bringt (Sicherheit, Skalierbarkeit, Ermöglichung der Nutzung eines String-Pools). Einige Java Devs ärgern sich heute, dass man damals nicht gleich viel mehr Datenstrukturen als immutable designed hat (z.B. das schreckliche Date), wie es heute bei vielen neueren Sprachen der Fall ist. Und WEIL die Entscheidung auf Immutabilität fiel, verwendet man intern aus Praktikabilitätsgründen nicht modifizierbare Char-Arrays, warum das Rad auch neu erfinden? Das wäre technisch aber nicht notwendig gewesen, wenn man sich damals gegen Immutabilität entschieden hätte (was man zum glück nicht tat).
Und schon wieder führt dich das C-Wissen in die Irre. Ja, bei so ziemlich jeder Operation auf Strings erhälst du aus offensichtlichen Gründen einen neuen String, der an für sich aber total billig zu Erzeugen ist - auf die interne Repräsentation kommt es an. Über die interne Repräsentation kannst du damit aber per se keine Aussage treffen. Bei String-Konkatenation ohne buffer wird umkopiert, richtig, ja. Bei Substring hingegen wird lediglich ein neues, leichtgewichtiges String-Objekt erzeugt, das intern aber nach wie vor unter der Verwendung von Offsets auf das char-Array des Original-Strings zeigt. Umkopiert wurde da rein gar nichts. So einfach ist es also nicht.
Na was denn sonst, Zauberei?
Und was heißt "es gibt keine Chars"?
Wo ist da der Zusammenhang zur vorherigen Aussage? Zeichentabelle bleibt Zeichentabelle, fertig. Wenn beim encoding was schief läuft, dann habe ich Mist gebaut, wo genau hilft mir hier C weiter? Da lerne ich doch lieber von Anfang an, dass Chars in Java ganze 2 Byte haben und Unicode-basiert sind und wie man die richtige Enkodierung bei Ein-/Ausgabe sicherstellt.
Kurz: möchte man über Internas bescheid wissen, dann muss man sowieso Spezifikation oder spezielle Bücher lesen, Vorwissen aus C bringt da nichts. Und die einfacheren Dinge (Begriff Immutabilität und Folgen, Chars als Abbildung von 16bit Zahlen auf Zeichen) findet man in jedem Java-buch, da muss man nicht erst C lernen.
Verstehe mich nicht falsch, mit C lernt man sehr viel über die Funktionsweise eines Computers, C zu können schaden definitiv nie. Aber als Grundlage zum Lernen moderner Sprachen dient es kaum, vor allem bei eleganten Sprachen mit hohem Abstraktionsniveau wie Scala, bei denen eine Menge unter der Haube abläuft. Da kann man mithilfe von C-Wissen Mutmaßungen anstellen, wie dies und das implementiert sein könnte, und am Ende ist es dann doch ganz anders.
black90 schrieb:Und genau deswegen sind Strings in Java immutable [...]
Nein, der Umkehrschluss ist der Fall.
Strings in Java immutable zu machen war eine Designentscheidung, weil Immutabilität bei Datenstrukturen viele Vorteile bringt (Sicherheit, Skalierbarkeit, Ermöglichung der Nutzung eines String-Pools). Einige Java Devs ärgern sich heute, dass man damals nicht gleich viel mehr Datenstrukturen als immutable designed hat (z.B. das schreckliche Date), wie es heute bei vielen neueren Sprachen der Fall ist. Und WEIL die Entscheidung auf Immutabilität fiel, verwendet man intern aus Praktikabilitätsgründen nicht modifizierbare Char-Arrays, warum das Rad auch neu erfinden? Das wäre technisch aber nicht notwendig gewesen, wenn man sich damals gegen Immutabilität entschieden hätte (was man zum glück nicht tat).
black90 schrieb:und es gibt keine einzige Methode mit der du Strings kürzen oder erweitern kannst, ohne umzukopieren.
Und schon wieder führt dich das C-Wissen in die Irre. Ja, bei so ziemlich jeder Operation auf Strings erhälst du aus offensichtlichen Gründen einen neuen String, der an für sich aber total billig zu Erzeugen ist - auf die interne Repräsentation kommt es an. Über die interne Repräsentation kannst du damit aber per se keine Aussage treffen. Bei String-Konkatenation ohne buffer wird umkopiert, richtig, ja. Bei Substring hingegen wird lediglich ein neues, leichtgewichtiges String-Objekt erzeugt, das intern aber nach wie vor unter der Verwendung von Offsets auf das char-Array des Original-Strings zeigt. Umkopiert wurde da rein gar nichts. So einfach ist es also nicht.
black90 schrieb:Ach ja, Chars sind auch nur Zahlen im Speicher die auf Zeichentabellen gemappt werden... gibt also auch keine Chars.
Na was denn sonst, Zauberei?
Und was heißt "es gibt keine Chars"?
black90 schrieb:Ist nützlich wenn man sowas auch in Java weiß, bevor man sich wundert warum das Eclipse Projekt aus Windows in Linux auf einmal keine Umlaute zeigtAuch sowas erfährt man in C.
Wo ist da der Zusammenhang zur vorherigen Aussage? Zeichentabelle bleibt Zeichentabelle, fertig. Wenn beim encoding was schief läuft, dann habe ich Mist gebaut, wo genau hilft mir hier C weiter? Da lerne ich doch lieber von Anfang an, dass Chars in Java ganze 2 Byte haben und Unicode-basiert sind und wie man die richtige Enkodierung bei Ein-/Ausgabe sicherstellt.
Kurz: möchte man über Internas bescheid wissen, dann muss man sowieso Spezifikation oder spezielle Bücher lesen, Vorwissen aus C bringt da nichts. Und die einfacheren Dinge (Begriff Immutabilität und Folgen, Chars als Abbildung von 16bit Zahlen auf Zeichen) findet man in jedem Java-buch, da muss man nicht erst C lernen.
Verstehe mich nicht falsch, mit C lernt man sehr viel über die Funktionsweise eines Computers, C zu können schaden definitiv nie. Aber als Grundlage zum Lernen moderner Sprachen dient es kaum, vor allem bei eleganten Sprachen mit hohem Abstraktionsniveau wie Scala, bei denen eine Menge unter der Haube abläuft. Da kann man mithilfe von C-Wissen Mutmaßungen anstellen, wie dies und das implementiert sein könnte, und am Ende ist es dann doch ganz anders.
Zuletzt bearbeitet:
antred
Lt. Commander
- Registriert
- Juni 2010
- Beiträge
- 1.288
black90 schrieb:Dein Beispiel musst du nur casten, dann hast keinen Ärger und 100% kompatibel.
Lass raten, du hast es in Visual Studio > 2010 versucht?![]()
1.) Das wäre dann weder idiomatisches C noch idiomatisches C++.
2.) Machst du den cast via old stype C-cast (und das mußt du ja, wenn es auch in C funktionieren soll), ist es noch weniger idiomatisches C++.
3.) typedef struct class { int template; char typename[ 10 ]; double private; } classTag; .... und nu??
Zuletzt bearbeitet:
asdfman
Commander
- Registriert
- März 2008
- Beiträge
- 2.315
Also bitte! Du musst nur jedes reservierte Wort von C++ ständig im Kopf haben und krampfhaft vermeiden. 107% kompatibel!antred schrieb:typedef struct class { int template; char typename[ 10 ]; double private; } classTag; .... und nu??
- Registriert
- Juli 2012
- Beiträge
- 338
Henrikkk schrieb:Ich kann dir das Buch "C++ lernen und professionell anwenden" von Peter und Ulla-Kirch Prinz empfehlen!
Das Buch habe ich mir gezogen. Ich finde es viel zu akademisch geschrieben, Hauptsache alles in 3 Seiten zusammenfassen. Viel zu wenige Beispiele/Aufgaben bzw. Anwendung und Erläuterung. Das ist eher was für Leute, die irgendwie entweder Info studieren, oder schon 3 Sprachen können..
Könnte mal bitte der C++/C Krieg hier aufhören?! Danke
Da ich jetzt auch im Praktikum eher mit Mathematik, als mit C++ wirklich zutun habe, möchte ich mich entweder in Matlab oder Mathematica einarbeiten. 2 Fragen, was ist (für mich) besser geeignet, kennt jemand gute (d.h. mit Anwendungsaufgaben, einfach verständlich, gut geschrieben/didaktisch aufgebaut) Bücher zu einem der beiden Programme? Habe mir jetzt einfach mal beide geladen, wenn mir wirklich eins gefällt, kauf ichs auch. Versprochen
Bzw. dazu eigentlich noch ein passendes Buch für höhere Mathematik, wenn nicht zuviel verlangt.
@ysbär vll.?
Zuletzt bearbeitet:
asdfman
Commander
- Registriert
- März 2008
- Beiträge
- 2.315
Die Antwort ist doch völlig klar. Für dich ist das besser geeignet, was für dich besser geeignet ist. Wir sind nicht du. Probier es also aus und dann bekommst du die Antwort, ohne dass jemand in seine Kristallkugel gucken muss.1337hAx' schrieb:was ist (für mich) besser geeignet,
- Registriert
- Juli 2012
- Beiträge
- 338
Im Praktikum ist das Ziel nun, eine Art "Börsen-Simulation" zu entwickeln. Dabei möchte ich mich für den heavy-math-shit nicht auf C++ beschränken, sondern da schon ein externes Mathe-Programm benutzen.
Sorry wenn ich jetzt so blöd frage, aber kennt jemand eine gute Möglichkeit, auf C# umzusteigen? Also nicht komplett, nur dass ich nicht nochmal von 0 anfangen muss.
Sorry wenn ich jetzt so blöd frage, aber kennt jemand eine gute Möglichkeit, auf C# umzusteigen? Also nicht komplett, nur dass ich nicht nochmal von 0 anfangen muss.
Zuletzt bearbeitet:
- Registriert
- Juli 2012
- Beiträge
- 338
Habs mal ausprobiert in ner Windows Form, funzt ganz gut ^^ Zum Glück gibt es sowas wie Auto Korrektur. Erinnert mich an Qt oder VB 
Kann man sich hier eigentlich irgendwo noch ins Thema Virus/Keylogger o.ä. einlesen? Sowohl vermeiden als auch selbst proggen. Tigerass 2.0 hat mir da schon einen Link geschickt, bezüglich reverse engineering..
Kann man sich hier eigentlich irgendwo noch ins Thema Virus/Keylogger o.ä. einlesen? Sowohl vermeiden als auch selbst proggen. Tigerass 2.0 hat mir da schon einen Link geschickt, bezüglich reverse engineering..
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 5
- Aufrufe
- 1.675
- Antworten
- 13
- Aufrufe
- 1.950
- Antworten
- 4
- Aufrufe
- 1.087
- Antworten
- 6
- Aufrufe
- 1.418