Java...
-
In Java die Fibonaccizahlen ausgeben, sollte mit 10 Zeilen leicht gehen. In C++ brauchen erfahrene Programmierer schon mal 40 oder mehr Zeilen
http://www.c-plusplus.net/forum/311250
-
allweare schrieb:
In Java die Fibonaccizahlen ausgeben, sollte mit 10 Zeilen leicht gehen. In C++ brauchen erfahrene Programmierer schon mal 40 oder mehr Zeilen
http://www.c-plusplus.net/forum/311250
-
volkard schrieb:
Nebenbei, wir wissen doch beide, daß Java längst tot ist. *hihi*
ich bin kein riesen java-fan, aber: schwachsinn!
mach mal lieber hin, ich will meine fragen an dich von oben beantwortet sehen (mit der DI).
-
dto-depp schrieb:
mach mal lieber hin, ich will meine fragen an dich von oben beantwortet sehen (mit der DI).
Ich merke schon, daß Du die Anforderungen um DI herumgestrickt hast, am Ende also fragst, wie macht man DI ohne DI?
Ich verzettele mich ungern in eine ernsthafte Diskussion mit Unregistrierten. Erst recht nicht in einem so klaren Trollthread.
-
ein getrenntes Schichtenmodell ist also eine um DI herumgestrickte Anforderung... ok ich denke damit können wir die Diskussion bereits beenden, da nun klar ist, wie deine obigen Postings zu bewerten sind.
danke.
-
Beispiel 1: Gegeben eine Zeile aus einer CSV-Datei, "a;b;c;d;e;5;g", was ist der Zahlenwert der 7. Spalte?
1 Zeile Java, >4 Zeilen C++.Beispiel 2: Gib einen Integer i in Binärformat aus. 1 Zeile Java, >40 Zeilen C++.
Wenn ich in der Schule bin, also in circa einer Stunde, mach ich dir die Hölle heiß.
-
Sone schrieb:
Wenn ich in der Schule bin, also in circa einer Stunde, mach ich dir die Hölle heiß.
LOL, Alter! Lern lieber was, damit was aus dir wird.
-
cooky451 schrieb:
Eine Zeile? Kein Ding.
#include <iostream> template <typename T> void print_binary(std::ostream& stream, T i) { i && (print_binary(stream, i / 2), stream << i % 2 ? '1' : '0'); } int main() { print_binary(std::cout, 77); }
template <typename T> void print_binary(std::ostream& stream, T i) { i && (print_binary(stream, i >> 1), stream << ('0' + i & 1)); }
Also wennschon, dann ohne trinären operator. (Annahme: '0' + 1 == '1')
-
Beispiel 1: Gegeben eine Zeile aus einer CSV-Datei, "a;b;c;d;e;5;g", was ist der Zahlenwert der 7. Spalte?
1 Zeile Java, >4 Zeilen C++.k.
#include <iostream> #include <cstdio> int main() { int v; std::cout << (std::sscanf("a;b;c;d;e;5;g", "%*[^;];%*[^;];%*[^;];%*[^;];%*[^;];%d", &v), v) << std::endl; }
-
Nehmen wir doch ein einfaches Beispiel: das allseits bekannte Hello World. In Java:
class foo { public static void main(String [] args) { System.out.println("Hello world!"); } }
und in C++:
#include <iostream> int main(int argc, char* argv[]) { std::cout << "Hello world!" << std::endl; }
Effektiv sind das 6 Zeilen in C++ und 7 Zeilen in Java. Habe ich damit bewiesen, dass C++ um 15% besser ist? Ich denke nicht.
Betrachten wir mal die Laufzeit. Ich messe einfach mal mit time unter Unix. C++ benötigt 0,004 Sekunden und das Java-Programm 0,272 Sekunden. Also ist C++ um den Faktor 68 schneller!!!
Das sind Aussagen auf dem Niveau von "Java... 4 mal kürzerer Code". Für das Marketing gut aber fernab der Realität.
-
LOLAlter schrieb:
Sone schrieb:
Wenn ich in der Schule bin, also in circa einer Stunde, mach ich dir die Hölle heiß.
LOL, Alter! Lern lieber was, damit was aus dir wird.
Wechselstrom kann warten.
allweare schrieb:
In Java die Fibonaccizahlen ausgeben, sollte mit 10 Zeilen leicht gehen. In C++ brauchen erfahrene Programmierer schon mal 40 oder mehr Zeilen
http://www.c-plusplus.net/forum/311250
LOL! Das waren Spaß-Versionen!
#include <iostream> int main() { for( int a = 0, b = 1, o = a; a < 50 ; b += o ) { std::cout << (o = a) << ' '; a = b; } }
-
Beispiel 2: Gib einen Integer i in Binärformat aus. 1 Zeile Java, >40 Zeilen C++.
Eine, bzw. zwei Zeilen inklusive Deklaration:
#include <iostream> #include <bitset> int main() { std::cout << std::bitset<sizeof(int) * CHAR_BIT>(54); }
-
#include <iostream> #include <iterator> #include <fstream> #include <vector> int main() { std::ifstream f("txt.txt"); std::cout << std::vector<char>(std::istream_iterator<char>(f), std::istream_iterator<char>())[10]; }
Und zwei Zeilen für deine Spalte.
-
Was sollen denn die Spielyeugbeispiele? Ist Datenbank mit drin, oder Monitore, oder Netzwerk ...?
-
Sone schrieb:
#include <iostream> #include <iterator> #include <fstream> #include <vector> int main() { std::ifstream f("txt.txt"); std::cout << std::vector<char>(std::istream_iterator<char>(f), std::istream_iterator<char>())[10]; }
Und zwei Zeilen für deine Spalte.
Ich denke dass a b c d ... Platzhalter sind. Von daher ist die Lösung ungenügend. (Und mit scanf wäre's immer noch schöner !)
-
Sone schrieb:
Beispiel 2: Gib einen Integer i in Binärformat aus. 1 Zeile Java, >40 Zeilen C++.
Eine, bzw. zwei Zeilen inklusive Deklaration:
#include <iostream> #include <bitset> int main() { std::cout << std::bitset<sizeof(int) * CHAR_BIT>(54); }
Und jetzt bitte ohne die führenden Nullen.
Sone schrieb:
#include <iostream> #include <iterator> #include <fstream> #include <vector> int main() { std::ifstream f("txt.txt"); std::cout << std::vector<char>(std::istream_iterator<char>(f), std::istream_iterator<char>())[10]; }
Und zwei Zeilen für deine Spalte.
Und jetzt bitte ohne die Annahme, dass eine Spalte 1 Zeichen gross ist.
Ja, das sind Spielzeugbeispiele. Aber der Code von Sone zeigt, wie unflexibel und unallgemein C++ doch ist. Die Ironie will, dass in solchen Fällen auf scanf zurückgegriffen werden muss.
-
Darf ich Boost benutzen?
Edit :Wahrscheinlich nicht, oder?
-
Die Ironie will, dass in solchen Fällen auf scanf zurückgegriffen werden muss.
Na und? scanf ist auch C++. Ich benutze scanf gerne und oft in meinen sonst recht idiomatischen C++ Programmen.
Ansonsten könnte man sicher auch einen Einzeiler mit den C++11 Regexfunktionen bauen ... von denen habe ich nur absolut keine Ahnung, weil der GCC-Support bei meinem Versuch nicht existent war, keine Ahnung wie es jetzt aussieht.
Wie sieht eigentlich der Java-Einzeiler aus?
-
dto-depp schrieb:
ein getrenntes Schichtenmodell ist also eine um DI herumgestrickte Anforderung... ok ich denke damit können wir die Diskussion bereits beenden, da nun klar ist, wie deine obigen Postings zu bewerten sind.
danke.
Du hast viel mehr Anforderungen gebastelt, die alle zusammengenommen erst DI nahelegen. Aber auch nur auf den ersten Blick. Ich denke, wer sich schon im Nick schon als Depp vorstellt, wie groß icht die Wahrscheinlichkeit, daß er kein Troll ist?
-
Sone schrieb:
Darf ich Boost benutzen?
Edit :Wahrscheinlich nicht, oder?Du darfst alles.
Aber denke darüber nach, was es bedeutet, wenn man in C++ für triviale Aufgaben externe Bibliotheken benötigt.
Die Einzeiler in Java sind übrigens
System.out.println(Integer.toBinaryString(1234)); System.out.println(Integer.parseInt("a;b;c;d;e;f;5;g;h".split(";")[6]));
Die idiomatische Binary-Lösung für C++ habe ich schonmal hier gepostet (http://ideone.com/E5Fvnf), wie viele C++-Programmierer verstehen die wohl?