Da in den Tags "Programmieren" steht, geh ich mal davon aus, dass du Zugriff auf irgendeine unixoide Shell hast, in die du Folgendes eintippst:

seq -w 0 999999 >nums.txt

Als Ausgabe erhältst du eine Textdatei, welche hiermit anfängt ...

000000
000001
000002
000003
000004
000005
000006
000007
000008
000009

... und hiermit aufhört:

999990
999991
999992
999993
999994
999995
999996
999997
999998
999999

Aber natürlich geht das auch mit jeder anderen Skript- bzw. Programmiersprache, meist mit einer einzigen Zeile Code.

Naja, viel Spaß! :)

PS: Die resultierende Datei ist knapp 7MB groß. Bist du dir sicher, dass es sinnvoll ist, was du vor hast? ;)

...zur Antwort

Wenn du nur die ungeraden negativen Zahlen haben willst, dann starte bei -1 und zähle einfach in Zweier-Schritten runter:

int sumfoo(const int k) {
	int result = 0;

	for (int i = -1; i >= k; i -= 2) {
		result += i;
	}

	return result;
}

Das erschlägt dir auch die Behandlung des Sonderfalls bei " >= 0", weil dann immer automatisch "0" zurück gegeben wird. Falls du allerdings wirklich eine Fehlermeldung ausgeben willst, weißt du ja schon, wie man das macht.

Außerdem solltest du die Variablen Funktionslokal deklarieren, und auf Globals verzichten. :)

...zur Antwort

Dir ist schon klar, dass die Begriffe "Lehrer" und "Lehrende" eine völlig unterschiedliche Bedeutung haben?

Im Deutschen gibt es so gut wie keine Wörter, die exakt die selbe Bedeutung haben und beliebig ausgetauscht werden können, ohne dass sich die Bedeutung ändert.

Gerade bei diesen Gender-Ersatz-Wörtern ist es faktisch IMMER so, dass eine Änderung der eigentlichen Aussage billigend in Kauf genommen wird. (Z. B. auch bei "Studenten" vs. "Studierende", was etwas völlig anderes ist.)

Man KANN "Lehrer" nicht beliebig durch "Lehrende" austauschen. Auch der Vorschlag aus der anderen Antwort mit "Lehrkräfte" bedeutet nicht unbedingt das selbe wie "Lehrer".

Merke: Man kann durchaus "Lehrer" sein, ohne eine "Lehrkraft" zu sein und dabei kein "Lehrender" zu sein. Genauso können "Lehrende" weder "Lehrer" noch "Lehrkraft" sein. Mach dir die Bedeutung dieser Wörter bitte mal klar!

...zur Antwort

Das ist realistisch betrachtet mit Python nicht möglich.

Du musst davon ausgehen, dass Nutzer dein VST-Plugin bei zwei Kanälen (also Stereo) und 192kHz nutzen.

Intern werden Audiodaten i. d. R. als Gleitpunktwerte behandelt, und wenn du für jeden Sampleframe mit nur 10 Operationen rechnest, wird es mit Python performancetechnisch sehr eng werden, gerade bei solchen Echtzeitanforderungen.

C++ ist hierbei über 100 mal schneller und kann dementsprechend mehr als 100 mal so viele Sampleframes pro Sekunde verarbeiten. (Hab das eben mal ausprobiert!)

Von daher: Mit Python zwar sicherlich irgendwie möglich, aber sollte man vermeiden, vor allem in solchen Bereichen, wo es auf präzises Timing ankommt.

Aus technischer Sicht könntest du ein VST in C++ schreiben, und einen Python-Interpreter einbinden, der dir ein Skripting erlaubt. Alles keine große Sache, aber der Nutzen ist eben wirklich fragwürdig.

...zur Antwort
Könnte man moderne Spiele in Java programmieren?

Soweit ich weiß werden die meisten der brandneuen Spiele, vor Allem die, die aufwendige Grafiken beinhalten, meistens in reinen "Compiler-Sprachen" (ich kenne den Fachbegriff leider nicht, aber ich glaube man weiß, was gemeint ist?) programmiert. Also Sprachen wie z.b. C++. Das macht aufgrund der besseren Performance ja auch, soweit ich das beurteilen kann, Sinn.

Wenn man die Sinnhaftigkeit aber mal außer Acht lässt und sich rein auf die Realisierbarkeit fokussiert, wäre es dann möglich, Titel wie Black Ops 4 Oder Battlefield 5 von Grund auf und einzige in Java zu schreiben? Wie sähe es mit CAD-Anwendungen aus? Könnte Software, die mit Blender oder Photoshop verglichen werden kann, in Sprachen wie Java geschrieben werden?

Könnte man solche Projekte auch ohne größere Performanceeinbußen realisieren? - Oder anders gefragt: Ein "perfekter" Code, jeweils in Java und einer Sprache wie C++ werden zum Vergleich gezogen. Wenn die selbe Arbeit verrichtet werden soll, in welcher Größenordnung liegen die Einbußen von Java? Sind das gegenüber C++. Kann man das noch einigermaßen in Kauf nehmen?

Mir geht es bei der Frage im Grunde genommen darum, mich endlich zu entscheiden welche Programmiersprache ich lernen möchte. Aus zeitlichen Gründen und auch deshalb, weil es mich hinsichtlich meines Berufes überhaupt nicht tangiert möchte ich mich auf eine einzige Sprache beschränken und das dafür richtig machen. Dabei wollte ich wenn möglich eine Sprach die Alles erlaubt. Da kam mir als erstes Java in den Sinn. Läuft überall, ist der Hit, wenn es um Android geht, und für Anfänger wohl besser geeignet als z.B. C++. Mir ist klar, dass Java Grenzen kennt, wenn es um hardwarenahe Programmierung geht. - Ein Treiber in Java, wäre das überhaupt möglich?

Hier haben Sprachen wie C++ tatsächlich die Nase vorne, aber auch da hat man, in den Bereichen wo Assembler eingesetzt wird, Grenzen.

Im Grund genommen ist das, wonach ich suche wahrscheinlich genau C++, man kann sich ja, soweit ich weiß, auch selbst Laufzeitumgebungen basteln oder mit virtuellen Maschinen arbeiten, so dass der Großteil vom Code auch systemübergreifend funktioniert. Ich finde an C++ einfach nichts schlechtes. Allerdings hat mich schon der erste Blick in ein C++ Buch vollständig demotiviert. Es scheint mir so, als sei es um einiges schwieriger als Java, alleine schon was die Syntax angeht... Man könnte meine Frage also auch so formulieren: Lohnt es sich, wenn man sich den Weg zu aufwendigen Anwendungen offen halten möchte, C++ zu lernen, oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Ich entschuldige mich, wenn ich irgendwo fachliche Fehler eingebaut habe und freue mich natürlich, wenn ich korrigiert werde, ich eben alles andere als ein IT-Spezialist.

Es wäre nett, wenn ihr eure Meinung mit mir teilt.

...zur Frage
Soweit ich weiß werden die meisten der brandneuen Spiele, vor Allem die, die aufwendige Grafiken beinhalten, ...

Ich gehe aufgrund dieses Halbsatzes in meinen folgenden Ausführungen mal davon aus, dass es dir hauptsächlich um grafiklastige AAA-Titel geht.

Kurze Antwort: Nein, das ist mit Java nicht möglich. Deshalb gibt es solche Java-Spiele auch nicht. Vom Spielprinzip her interessante Spiele wie Minecraft gehen natürlich, aber Minecraft sieht nicht ohne Grund wie Minecraft aus. :)

Lange Antwort: Java ist und bleibt merklich langsamer als C++, vor allem wenn es um ganze Programme, und nicht nur um kurze Demo-Algorithmen mit ein paar Zeilen geht.

Allein schon die Tatsache, dass Javacode in einer "gemanageten Umgebung" ausgeführt wird und auf einen GC (Garbage Collector) angewiesen ist, der dir zu nicht-vorhersebahren Zeiten in den Fluss deines Programms eingreifen wird, verhindert, dass ein Spiel flüssig und ohne merkliche Ruckler laufen wird.

Du kannst den GC zwar auf einen eigenen CPU-Kern auslagern, aber selbst dann muss er in Echtzeit (!) mit den anderen Threads / Prozessen kommunizieren, und so eine IPC (Interprozesskommunikation) frisst enorm viele Ressourcen.

Dazu zählt auch der erhöhte Speicherverbrauch. Im Schnitt verbrät der GC bei Java ca. anderthalb mal so viel Speicher für das aufzuräumende Objekt, als dieses in Wirklichkeit an Speicher belegt. Und "Speicher reservieren" ist so ziemlich die aufwändigste Operation, die intern in einem Programm ablaufen kann und gerne mal einige tausend CPU-Takte andauert.

Deshalb gibt es bei solchen Java-Programmen oft Peaks, bei denen sich CPU-Auslastung und Speicherverbrauch gegenseitig hochschaukeln, und SO ETWAS will man gerade bei Spielen überhaupt nicht haben.

Frag dich einfach mal selbst, warum es keinen einzigen Triple-A-Titel mit Java gibt. Die werden alle mit C++ oder evtl. noch mit C# geschrieben.

Wobei bei C# ein ähnliches Problem wie bei Java existiert. Wenn ein C#-Spiel aber gerade mal noch so flüssig auf einem High-End-PC läuft, dann kannst du im Umkehrschluss davon ausgehen, dass das selbe Spiel mit C++ nochmal deutlich flüssiger und mit wesentlich mehr Freiraum nach oben laufen würde.

Anders herum wird ein Spiel, welches schon mit C++ hart an der Grenze ist, mit C# - und erst Recht mit Java - schlicht und ergreifend unspielbar sein, es sei denn, du stehst auf Dia-Shows. :)

Java ist zwar eine wunderbare Sprache, aber - schon allein vom Konzept und Sprachdesign her - für Spiele leider völlig ungeeignet. Klar, du wirst so etwas wie Supermario darin bauen, und auch einfache 3D-Szenen erstellen können, aber mach dir nichts vor: Früher oder später MUSST du zu C++ wechseln, falls du grafisch aufwändige Spiele entwickeln willst. (Oder auch C#, allerdings mit Abstrichen!)

Wenn du jetzt, mit dem Hauptziel "Spieleprogrammierung" Java lernst, dann garantiere ich dir, dass du dir später selbst in den Hintern beißen wirst, wegen der verschwendeten Zeit.

Du kannst zwar irgendwelche Engines nehmen, und deren API-Aufrufe mit Java (oder sogar Python) zusammen kleben, aber du wirst damit immer auf relativ niedrigem Niveau rumfrickeln und Programmiertechnisch nie richtig "Erwachsen" werden.

Wenn man die Sinnhaftigkeit aber mal außer Acht lässt und sich rein auf die Realisierbarkeit fokussiert, wäre es dann möglich, Titel wie Black Ops 4 Oder Battlefield 5 von Grund auf und einzige in Java zu schreiben?

Nein, völlig unmöglich. An so etwas wird auch den nächsten zich Jahren kein Weg an C++ vorbei führen.

Wie gesagt, du kannst einfache Spiele mit Java schreiben, aber vergleiche mal die Demos der gängigen Java-3D-Engines mit den von dir genannten Titeln. Da liegen Welten dazwischen!

Wie sähe es mit CAD-Anwendungen aus? Könnte Software, die mit Blender oder Photoshop verglichen werden kann, in Sprachen wie Java geschrieben werden?

Wenn die Software am Ende auch angenehm benutzbar sein soll, dann nicht. Falls du als Anwender ewig lange Wartezeiten und extremen RAM-Verbrauch gewöhnt bist, dann ja, allerdings mit Ausnahme von Blender, wofür Java wieder einfach zu ungeeignet ist.

Könnte man solche Projekte auch ohne größere Performanceeinbußen realisieren?

Nein, wie oben beschrieben, wird der RAM-Verbrauch durch die Decke gehen, und die CPU dein Arbeitszimmer auch im Winter schön warm halten. :)

Kann man das noch einigermaßen in Kauf nehmen?

Nein, bei den von dir genannten "Softwaren" ist die Grenze zum Zumutbaren bei weitem überschritten. So etwas schreibt man einfach nicht mit Java.

Mir geht es bei der Frage im Grunde genommen darum, mich endlich zu entscheiden welche Programmiersprache ich lernen möchte. 

Im Idealfall beide, Java UND C++, denn nur so kannst du dir ein Bild machen. Außerdem steht in allen Java-Büchern und -Tutorials gleich in der Einleitung immer wie toll performant Java doch ist und dass alle anderen Behauptungen nicht wirklich zutreffend sind. Als reiner Java-Entwickler gewöhnt man sich dann tatsächlich daran, und empfindet Java-Programme oft nicht mehr als sooooo langsam, wie sie in Wirklichkeit sind.

Irgendwann wirst du dann tolle "Tricks" lernen, mit denen man die Geschwidigkeit erhöhen kann, evtl. Dinge wie "Excelsior Jet" nutzen, und dir ständig selber einreden, dass es ja "alles nicht so schlimm" und eigentlich immer noch "ganz gut" ist.

Am Ende sitzt du dann da mit einer fetten Laufzeitumgebung, verglichen mit C++-Programmen exorbitant hohem RAM-Verbrauch, schmutzigen Hacks um die Geschwndigkeitsprobleme doch noch irgendwie in den Griff zu bekommen und machst dir selbst vor, dass die tagelangen Suchen nach Workarounds bei Performance-Problemen die Symptome "ausreichend gelindert" (aber eben nicht "behoben") haben.

Relativ schnell wirst du dann nicht mehr weiter kommen, weil nach oben hin eben keine Luft mehr zum atmen ist, und deine Software bei 95% RAM-Verbrauch auf 100% CPU läuft. Und das ist dann der Moment, an dem du dir denken wirst: "Hätte ich bei der Spieleprogrammierung doch lieber gleich auf etwas Richtiges gesetzt". Und dann wirst du höchstwahrscheinlich aufgeben oder - auch wenn die Wahrscheinlichkeit dazu sehr gering ist - dich nochmal zusammen reißen, und C++ von Anfang an richtig lernen.

Wie gesagt, Java ist ne super Sprache und damit kann man verdammt viele Dinge tun. Aber Spiele, Photoshop, CAD, Blender, etc. gehören eindeutig nicht dazu. Und nur weil "es geht" und es den ein oder anderen Proof-of-Concept dazu gibt, heißt es noch lange nicht, dass es so ordentlich oder vernünftig ist.

Java hat VIEL mehr Overhead als C++, und zwar in einem Maße, dass sich nicht kleinreden lässt. Dummerweise kommt es aber genau DARAUF an, bei Spielen oder grafisch aufwändiger Software.

Fazit: Du willst ganz eindeutig C++ lernen und Java NICHT nutzen, für das, was du vor hast! ;)

Und lass dich nicht von Pseudo-Benchmarks beeindrucken, welche die tausendste Fibonacci-Folge in Java und in C++ vergleichen, wobei Java "fast so gut" wie C++ sein wird. Solche Tests sind völlig unrealistisch und verzerren die Realität. Am Ende wird Java - realistisch betrachtet bei "echten" Herausforderungen - immer um den Faktor 10 bis 100 langsamer sein als C++. Da beißt die Maus keinen Faden ab. :)

Oh, dein Fragetext war ja noch gar nicht zu Ende ... dann mal weiter im Text ...

Aus zeitlichen Gründen und auch deshalb, weil es mich hinsichtlich meines Berufes überhaupt nicht tangiert möchte ich mich auf eine einzige Sprache beschränken und das dafür richtig machen.

Dann verschwende deine Zeit nicht mit Java, und fang mit C++ an, auch wenn C++ verglichen mit Java für Einsteiger merklich "fordernder" sein wird, aber es lohnt sich.

Dabei wollte ich wenn möglich eine Sprach die Alles erlaubt. Da kam mir als erstes Java in den Sinn.

Genau genommen ist C++ die Sprache, die alles erlaubt. Die Einsatzbereiche für Java liegen sehr sehr weit darunter!

Da kam mir als erstes Java in den Sinn. Läuft überall, ist der Hit, wenn es um Android geht, ...

Rein theoretisch läuft Java überall, praktisch betrachtet kannst du die gut unterstützen Plattformen an einer einzigen Hand ablesen. Denn Java läuft nur dort, wo es auch ein JRE gibt, und das sind - anders als in der Theorie - nur sehr wenige Plattformen.

Von gescheiterten Experimenten wie "Java auf Mikrocontrollern" reden wir jetzt mal nicht, denn dort gilt das bekannte "Compile once, run anywhere" überhaupt nicht mehr, weil solche Plattformen einfach zu speziell sind.

Und da du gerade von Android redest ... Spiele-Engines werden für Android in C++ geschrieben, wenn sie grafisch aufwändiger sind, weil es mit Java einfach gar nicht möglich wäre. Diese C++-Teile werden dann kompiliert, und in relativ dünnschichtige Java-Wrapper eingebettet, sodass du dein Spiel am Smartphone nutzen kannst. Für eines der gefühlt vielen millionen Memory-Spiele oder einen Poker-Klon brauchst du natürlich keine C++ Engine auf deinem Android gerät, aber bei allem was darüber hinaus geht schon ... vorausgesetzt, dich kümmert die Akkulaufzeit der Geräte deiner Nutzer und deren Temperatur. (Also die Temperatur der Geräte, nicht der Nutzer!) :)

Ein Treiber in Java, wäre das überhaupt möglich?

Ohne da jetzt auf technische Details einzugehen: Realistisch betrachtet, Nein. :)

Hier haben Sprachen wie C++ tatsächlich die Nase vorne, aber auch da hat man, in den Bereichen wo Assembler eingesetzt wird, Grenzen.

In den 90ern habe ich meinen C++ Code noch hin und wieder mit Inline-Assembler "aufgehübscht", aber das ist heutzutage (fast) nicht mehr nötig.

Im Grund genommen ist das, wonach ich suche wahrscheinlich genau C++, ...

Das hast du richtig erkannt. In deinem Fall führt kein Weg an C++ vorbei.

... man kann sich ja, soweit ich weiß, auch selbst Laufzeitumgebungen basteln oder mit virtuellen Maschinen arbeiten, so dass der Großteil vom Code auch systemübergreifend funktioniert.

C++ Compiler gibt es für VIEL mehr Plattformen, als es JREs für Java gibt. Da mach dir um die Portabilität mal keine Gedanken.

Und das mit den "virtuellen Maschinen" hast du evtl. etwas falsch verstanden. Damit sind in erster Linie keine Dinge wie VMware oder VirtualBox gemeint, sondern ein Entwurfsmuster. Eine VM in C++ zu schreiben geht auf unter 100 Zeilen Code, vorausgesetzt es ist eine recht einfache.

Je nach Anforderung sind VMs in C++ höchst performant und werden gerade bei Spielen gern eingesetzt, um Dinge zu automatisieren, die in einer "geschlossenen Umgebung" lauffähig sein sollen.

Nebenbei bemerkt kannst du genauso gut in Java eine VM bauen, was ich auch schon oft getan habe. Wie gesagt, da ist nichts magisches dran. Es ist einfach nur eine Herangehensweise, ein Problem zu lösen. :)

Ich finde an C++ einfach nichts schlechtes. Allerdings hat mich schon der erste Blick in ein C++ Buch vollständig demotiviert.

Wenn du als Anfänger ein Fachbuch in der Mitte oder weiter hinten aufschlägst, wirst du grundsätzlich nichts verstehen, völlig unabhängig vom Thema (auch über die Programmierung hinaus).

Aber dafür sind Lehrbücher ja da: Dass sie dir Dinge von Anfang an, Schritt für Schritt, erklären.

Deshalb lass dich nicht von den hinteren Kapiteln schockieren, sondern fang beim Vorwort an, und arbeite dich dann Seite für Seite voran. Irgendwann bist du mit dem Buch durch, und wunderst dich, warum du vorher so große Angst davor hattest. :)

Es scheint mir so, als sei es um einiges schwieriger als Java, alleine schon was die Syntax angeht...

Die Syntax bei C++ bietet viel mehr Optimierungspotential als bei Java, und legt dir damit ein sehr mächtiges Werkzeug in die Hand.

Aber das tolle ist: Du musst dieses Werkzeug nicht nutzen, wenn es dich - zumindest am Anfang noch - überfordert.

Und was noch toller ist: Viele syntaktische Konstrukte sind einfacher und kürzer als bei Java! Allein die Mögilchkeit, Operatoren zu überladen, erlaubt dir, wesentlich lesbareren Code zu schreiben. :)

Außerdem ist weder Java, noch C++, für Anfänger entwickelt worden, sondern für Leute, die diese Sprachen größtenteils im Blut haben und damit gut umgehen können.

Und jemand der gut C++ kann, wird C++ Code auch lesen können. Genauso wie jemand, der gut Java kann, auch Java-Code lesen kann.

Du lernst die Sprachen ja nicht, um dein Leben lang Anfänger zu bleiben, sondern um damit "professionell arbeiten" zu können. Und so jemand hat auch keine Probleme mit der Syntax, auch wenn es für ihn als Anfänger früher mal alles furchtbar kompliziert erschien. :)

Lohnt es sich, wenn man sich den Weg zu aufwendigen Anwendungen offen halten möchte, C++ zu lernen, oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Für das, was du unter "aufwendigen Anwendungen" verstehst, hast du gar keine andere Wahl als C++, von daher stellt sich die Frage gar nicht.

Falls du wirklich versuchen solltest, so etwas mit Java zu realisieren, wirst du am Ende mit einer aufgeblasenen, von Abhängigkeiten strotzenden, langsamen, Speicher fressenden, im besten Falle "mittelmäßigen" Anwendung stehen.

Wenn du natürlich nur ein einfaches ERP-System mit Datenbankanbindung für ein mittelständisches Unternehmen bauen willst, kannste gerne Java nehmen. Dabei machen sich die Nachteile dieser Sprache / Laufzeitumgebung kaum bemerkbar, aber AAA-Titel? Das wird nix werden! ;)

... oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Wie gesagt, Java lernen lohnt sich in jedem Falle! Aber da du ja angibst wenig Zeit zu haben und nur eine Sprache wählen kannst, fällt Java leider weg, auch wenn es leichter als C++ sein wird, aber für dein Vorhaben eben alles andere als geeignet ist. :)

So, das war mein Roman zu dem Thema! ;)

Du musst jetzt selbst entscheiden, wofür du dich entscheidest.

Viel Spaß damit, was auch immer du tun wirst! ;)

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.