DirectPlay?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

DAK

BeitragDi, Jun 02, 2015 3:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Thunder hat Folgendes geschrieben:
Und gegen Java sag ich jetzt lieber nichts, sonst kommt gleich DAK nochmal Very Happy


Danke für die Vorlage, da bin ich wieder Wink Sagt bescheid, wenn ich zu sehr Java fanboye Wink

Noch mal zur Syntax:

C++ wurde entwickelt als eine Art Erweiterung zu C. C-Code sollte (und ist) ohne Änderungen in C++ kompilierbar sein. Dazu wollte man viele tolle neue Features in diese alte Sprache packen. Das ist auch gut gelungen und das Resultat ist eine Sprache, die einem einen unheimlichen Grad an Kontrolle erlaubt. Man kann in C++ fast so detailliert programmieren wie in Assembler (ok, nicht ganz, aber doch ziemlich detailliert). Das heißt, wenn du genau weißt, was du machen willst, und genau weißt, wie das am besten geht, dann kannst du theoretisch auf ein ziemlich perfektes Ergebnis kommen.
Das heißt, du hast die Möglichkeit, z.B. extrem flotte Programme zu schreiben, wenn du das Können dazu hast.
Allerdings hat es durch die C-Kompatibilität viele Altlasten (z.B. Headerfiles) und einige Konzepte konnten nicht ganz so schön umgesetzt werden, wie es eine neu entwickelte Sprache könnte.

Java auf der anderen Seite ist nicht kompatibel zu C oder C++. Das Entwicklungsziel war eine saubere Sprache ohne unnötigen Features. So wurden C++ und noch ein paar andere Sprachen als Basis genommen und alles, was den Java-Entwicklern unnötig vorgekommen ist, wurde weggetrimmt. Dem sind leider, wie erwähnt auch ein paar nützliche Features (wie z.B. vorzeichenlose Integer-Variablen und Operatorenüberladung) zum Opfer gefallen. Die detaillierte Speicherverwaltung in C++ wurde zu Gunsten eines guten Garbage Collectors aufgegeben.
Der Code wird nicht mehr komplett in Maschinensprache sondern in Bytecode übersetzt, der dann Just-In-Time direkt vor der Ausführung kompiliert wird. Der Just-In-Time-Compiler braucht hierbei beinahe keine Zeit, merkt man üblicherweise gar nicht. Java war in den Anfangstagen ziemlich langsam, braucht sich allerdings inzwischen kaum mehr hinter C++ verstecken, was Tempo angeht. Ganz an C++ kommt es nicht ran.
Allerdings schluckt BB doch kräftig Staub, wenn es gegen Java antreten muss.

Python ist die dritte große Alternative. Ich muss es in der Arbeit andauernd verwenden, es ist im letzten halben Jahr wohl die Sprache, mit der ich am meisten gemacht habe. Es hat schon seine Vorteile, vor allem die kompakte Syntax, die sich gut zum Schreiben in VIM eignet, und als Ersatz für Bash-Scripts ist es grandios. Allerdings ist die Syntax echt schmerzhaft und debuggen ist in Python auch eher schwer, da nichts zur Compile-Zeit geprüft wird / es gar keine Compile-Zeit gibt.

Um es also simpel aufzustellen:

Geschwindigkeit:
BB < Python < Java < C++ < C

Mächtigkeit:
BB < Python = Java < C < C++

Schwierigkeit:
BB < Python = Java < C < C++

Code-Längen:
Python < BB < Java = C++ < C

Mit Ausnahme von BB sind alle die oben genannten Sprachen fähig, GUIs und quasi alles, was man mit 2D machen kann, spielend einfach schnell darzustellen (auf einem PC aus diesem Jahrzehnt).
Einzig, wenn du wirklich ein Triple-A-Game machen willst (= ganz modernes, wirklich hoch poliertes 3D-Spiel mit echt toller Grafik), dann würdest du eventuell schneller bei Python oder Java an ein Limit stoßen als bei C++/C. Realistischerweise würde aber fast jedes Limit, auf das du als Hobbyprogrammierer stoßen kannst, aufgrund von schlechter Programmierung sein, wovor dich aber auch keine dieser Sprachen wirklich schützen kann.

So, war euch das diesmal objektiv genug? Wink
Gewinner der 6. und der 68. BlitzCodeCompo
  • Zuletzt bearbeitet von DAK am Di, Jun 02, 2015 12:47, insgesamt einmal bearbeitet

Thunder

BeitragDi, Jun 02, 2015 9:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir hats gefallen, bis auf zwei Sachen:

1. DAK hat Folgendes geschrieben:
Schwierigkeit
BB < Python = Java < C++ < C


Ich würde eher sagen:
BB < Python = Java < C < C++

Einfach weil C++ so viel umfangreicher ist und man viel mehr Erfahrung braucht, um gut C++ zu programmieren, als gut C zu programmieren.

2. Scheint mir, dass du C++ immer auf Performance und Lowlevel reduzierst Razz dabei kann die Sprache mit neu designeten durchaus mithalten (dank C++11 und C++14).

zum Beispiel for-each (das hier kann Java übrigens nicht mit Strings):
Code: [AUSKLAPPEN]
string s = "Hallo Welt";
// touppercase:
for(auto& x : s){
        if(islower(x))
                x += 32
}


Aber man muss in C++ natürlich genauer ausdrücken, was man will ^^

Noch an den Fragesteller: Wahrscheinlich ist es sinnvoller erstmal C, Python oder Java ins Auge zu fassen. C++ von Anfang an lernen ist schwer, und wenn du dir die falschen Quellen hernimmst, dann gewöhnst du dir Sachen an, die komplett falsch/fehlerhaft sind.

Wenns doch C++ werden soll. Soweit ich weiß ist das ein gutes Buch: http://www.amazon.de/C-Primer-...amp;sr=8-1
Weil es direkt mit dem neuen Standard C++11 einsteigt und nicht erst die alten Codestile zeigt (die heutzutage schon fast verpönt sind).
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

DAK

BeitragDi, Jun 02, 2015 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast recht, mit der Schwierigkeit. Sowas passiert, wenn man um 2 in der Nacht was schreibt^^

@Lowlevel und Performance:
Das ist hald (zumindest für mich) der Hauptgrund, C++ zu verwenden. Klar kann man auch normale Sachen in C++ schreiben, kann man aber auch in Assembler. Ist hald in anderen Sprachen etwas leichter. Wenn es z.B. nur um Strings, GUI oder kleine Spiele geht, dann würde ich auf jeden Fall Java über C++ nehmen. Wenn es um was echt Performancekritisches geht, oder darum geht, Hardware anzusprechen, dann auf jeden Fall C/C++. So würde ich z.B. einen Microcontroller nie in Java programmieren wollen, selbst wenn das ginge. Auf der anderen Seite würde ich in (fast) jedem normalen Projekt eher zu Java greifen als zu C++.
Gewinner der 6. und der 68. BlitzCodeCompo

KnorxThieus

BeitragMi, Jun 03, 2015 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
So, da bin ich wieder …

@Thunder: Wirklich ein Scherz? Och nö … :/

@DAK: Wow, dass C++ tatsächlich langsamer ist als sein Vorgänger, hätte ich nie gedacht! Surprised
Den Rest hatte ich mir so oder so vorgestellt, wenngleich ich Java/Python ≟ Python/BB noch nicht einschätzen kann (= Welcher Abstand ist größer?)

@Thunder: Ein Einsteigerbuch habe ich, wie bereits erwähnt, bereits gelesen: https://www.c-plusplus.net/forum/309612-full Deutsch ist besser Laughing

Ich habe jetzt mal Python gegooglet, die Syntax hat mich echt erschrocken … Ich rücke ja mittlerweile Code auch (relativ?) vernünftig ein, aber wegen eines falschen Leerzeichens einen Fehler zu erhalten, ist ja schon heftig … ich glaube, das wäre für mich höchstens eine Scriptsprache, sonst sieht das unangenehm aus.

Was ist eigentlich mit anderen Sprachen, die man schon mal gehört hat: Python, C#, F#, …? Allesamt geschwindigkeitsmäßig weg vom Fenster?
Bisher sieht es für mich nach Java aus … Smile
Version: BlitzPlus / Blitz+

Thunder

BeitragMi, Jun 03, 2015 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
KnorxThieus hat Folgendes geschrieben:
@Thunder: Ein Einsteigerbuch habe ich, wie bereits erwähnt, bereits gelesen: https://www.c-plusplus.net/forum/309612-full Deutsch ist besser

Oh sorry, hab ich nicht mitbekommen.

KnorxThieus hat Folgendes geschrieben:
@DAK: Wow, dass C++ tatsächlich langsamer ist als sein Vorgänger, hätte ich nie gedacht! Surprised

Ist auch nur bedingt richtig. Wenn du gut C++ programmierst (wie schon erwähnt ist das schwierig für jemanden, der von C oder Java kommt), kann der Compiler um einiges besser optimieren als der C Compiler es könnte.
Dazu gibt es nen echt guten Talk, wenn du mal ne Stunde Zeit hast: https://www.youtube.com/watch?v=AKtHxKJRwp4
Du kannst oft wirklich ohne Performance-Einbußen C++ statt C nehmen. Der Performance-Unterschied zwischen Java und C++ ist größer.

KnorxThieus hat Folgendes geschrieben:
Ich rücke ja mittlerweile Code auch (relativ?) vernünftig ein, aber wegen eines falschen Leerzeichens einen Fehler zu erhalten, ist ja schon heftig …

Du meintest wohl Tabs Wink
es ist zwar offiziell empfohlen in Python mit Leerzeichen zu einzurücken, aber gerade bei Python sieht man da einfach den Code Verlauf zu schlecht, finde ich. Außerdem fällt dir bei Tabulatoren leichter auf, wenn einer fehlt oder zu viel ist.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

feider

ehemals "Decelion"

BeitragMi, Jun 03, 2015 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Das ist hald (zumindest für mich) der Hauptgrund, C++ zu verwenden. Klar kann man auch normale Sachen in C++ schreiben, kann man aber auch in Assembler.


Nein! Es ging explizit darum, dass C++ typische High-Level-Konstrukte unterstützt und du C++-Code schreiben kannst wie Java-Code. Zeige mir auch nur einen Java-Code, den ich nicht mit solchen High-Level-Konstrukten wie in Java (oder einfacher) umsetzen kann. Mit Assembler kannst du das nicht. Dort gibt es diese High-Level-Konstrukte nicht.

Die Tatsache, dass du in C++ direkt im Speicher herumpfuschen kannst, heißt nicht, dass du es musst. Du kannst auch gemütlich High-Level-Programmierung betreiben ohne eine Ahnung zu haben, was dahinter passiert.
Mit Assembler oder anderen Low-Level-Sprachen ist dies nicht möglich, hier hast du keine High-Level-Konstrukte.
  • Zuletzt bearbeitet von feider am Do, Jun 04, 2015 16:52, insgesamt einmal bearbeitet

KnorxThieus

BeitragDo, Jun 04, 2015 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Thunder hat Folgendes geschrieben:
Dazu gibt es nen echt guten Talk, wenn du mal ne Stunde Zeit hast: https://www.youtube.com/watch?v=AKtHxKJRwp4

Sorry, aber das lassen weder meine Englisch-, noch meine C++-Kenntnisse zu. Wie gesagt, bin noch Anfänger.

Thunder hat Folgendes geschrieben:
KnorxThieus hat Folgendes geschrieben:
Ich rücke ja mittlerweile Code auch (relativ?) vernünftig ein, aber wegen eines falschen Leerzeichens einen Fehler zu erhalten, ist ja schon heftig …

Du meintest wohl Tabs Wink

Tatsache ist, mit sowas kann ich mich wohl schwerlichst anfreunden. Und auch diese Doppelpunkte … sieht sehr gewöhnungsbedürftig aus.
Version: BlitzPlus / Blitz+
 

feider

ehemals "Decelion"

BeitragDo, Jun 04, 2015 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ich rücke ja mittlerweile Code auch (relativ?) vernünftig ein, aber wegen eines falschen Leerzeichens einen Fehler zu erhalten, ist ja schon heftig …


Einrückungen sind dort eben die Begrenzungen für die Scopes. Das ist ungefähr so, als würdest du bei Java und C++ sagen:

Zitat:
(...) aber wegen einer falschen Klammer einen Fehler zu erhalten, ist ja schon heftig …

KnorxThieus

BeitragDo, Jun 04, 2015 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Eben deshalb schrieb ich, dass mir das sehr gewöhnungsbedürftig scheint … ich denk noch mal drüber nach Mr. Green
Version: BlitzPlus / Blitz+

KnorxThieus

BeitragFr, Jun 12, 2015 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Spam?
XERES!!! Surprised


Zur Sache:
Was Java betrifft, steht dem heutzutage technisch noch irgendetwas zu einem Profi-Programm wie MS Word oder Firefox entgegen?
Version: BlitzPlus / Blitz+

DAK

BeitragSa, Jun 13, 2015 8:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du damit, ob man sowas in Java machen kann?

Soweit ich weiß ist LibreOffice (das bekannteste Open-Source-Office) in Java geschrieben.
Die meisten Browser unter Android sind auch in Java geschrieben.

Also ja, geht.
Gewinner der 6. und der 68. BlitzCodeCompo

Thunder

BeitragSa, Jun 13, 2015 9:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja...

LibreOffice ist großteils C++ und sie arbeiten daran, die Abhängigkeiten von Java zu entfernen.

Die Android Browser (oder eher: ihre Oberflächen) sind vielleicht in Java geschrieben, aber die Rendering-Engine und der HTML-Parser (das Herz des Browsers) sind doch meistens ein großes Stück nativer Code (C oder C++).
Firefox for Android: http://hg.mozilla.org/mozilla-...htmlparser

Auf Smartphones und embedded Hardware ist es sinnvoll, Overhead zu reduzieren, indem man Teile des Codes in C/C++ schreibt. Java konnte sich auf dem PC nur durchsetzen, weil die Hardware dermaßen schneller geworden ist (und weil man es offenbar an jeder Uni lernt...)
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

KnorxThieus

BeitragSa, Jun 13, 2015 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist das kompliziert! Java ist also auch nichts für die Ewigkeit.

Was ist eigentlich mit C# und F#? Sind die noch modern?
Version: BlitzPlus / Blitz+

Thunder

BeitragSa, Jun 13, 2015 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann zu den zweien ned viel sagen. C# ist gefragt, also dazu gibts fast so viele Jobangebote wie für Java.
Du musst bei C# und F# bedenken, dass beide von Microsoft für .net konzipiert wurden und wenns mono nicht gäbe, könntest du auf Linux oder MacOS nix damit anfangen (was die Flexibilität einschränkt).

Wenn du was modernes suchst, dann sieh dir Mal Go, Rust oder Swift an.
Da sitzen zwar jeweils auch wieder Firmen dahinter (Google, Mozilla bzw. Apple), aber gerade die letzten zwei sind momentan im Kommen.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

DAK

BeitragSo, Jun 14, 2015 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Nichts ist für ewig. Und keine Programmiersprache ist allein ausreichend für alle Projekte. Die meisten größeren Projekte benötigen mehrere Sprachen und wenn du als Programmierer wo arbeitest, dann kannst du damit rechnen, das du (zumindest am Anfang) für jedes neue Projekt mindestens eine neue Sprache lernen musst.

Du musst allerdings bedenken, das was die Zeit braucht beim Lernen ist das Konzepte-Lernen. Wenn du z.B. behirnt hast, was eine Funktion ist, dann ist es ziemlich einfach, sich von

Code: [AUSKLAPPEN]
Function foo%(x)
...
End Function


auf

Code: [AUSKLAPPEN]
int foo(int x) {
...
}


umzugewöhnen.
Um BB zu lernen hab ich mehr als ein halbes Jahr gebraucht. BMax ging in einem Monat. Java waren zwei oder drei Wochen. Python waren ein paar Tage. C++ waren zwei Stunden. JavaScript hatte gar keine Lernzeit mehr. Die anderen Sprachen die ich verwende waren zum Lernen auch nicht der Rede wert. (Also jeweils bis zu dem Punkt, wo ich in der Sprache sinnvoll programmieren hab können, nicht bis ich darin perfekt war)
Also mach dir nicht so viel Kopf darum die perfekte Sprache zu finden. Alle haben Vor- und Nachteile, und keine davon ist ausreichend für Alles. Und Sprachen wechseln ist kaum ein Aufwand.

Noch mal zu "für ewig":
Unterstützt und verwendbar wird Java noch lange sein. Java hat eine irrsinnige Marktdurchdringung und wird aktiv und von großen Firmen weiterentwickelt. Es wird noch mindestens 10-20 Jahre so weiter gehen, und danach wird man es noch eine gute Zeit danach verwenden können.
Es gibt ja immer noch genügend Leute, die so Sachen wie Pascal verwenden.
Ewig halten wird es aber nicht, genauso wie keine andere Sprache.
Gewinner der 6. und der 68. BlitzCodeCompo

KnorxThieus

BeitragSo, Jun 14, 2015 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, so habe ich das nie gesehen! Shocked

Dann mache ich mir wohl eh zu viele Gedanken darum ich schätze, ich werde mir als Nächstes dann doch mal Python vornehmen.
Hab mir noch mal ein paar Beispiele (http://www.wspiegel.de/pykurs/beispiel.htm) angesehen, sieht so aus, als wenn man da schnelle Ergebnisse liefern kann! Very Happy

Danke für die ganzen Ratschläge, jetzt kommt es nur noch auf meine Aufraffungsfähigkeit an Wink
Version: BlitzPlus / Blitz+

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group