Du bist nicht angemeldet.

Werbeanzeige

koin

Frischling

  • »koin« ist der Autor dieses Themas
  • Private Nachricht senden

1

17.02.2015, 03:48

Programmiersprache die 1000ste

Hallo Community,

ich weiß diese Frage gibt es echt oft, vorallam weil ich bestimmt 1000 Threads gelesen habe. Aber jeder Fall ist ja ein wenig Individuell, deswegen hier Nr. 1001 :)

Persönlich habe ich meine ersten Schritte mit den Tutorials in Unity3d gemacht. Begann mich aber schnell dafür zu Interessieren wie das ganze hinter der Fassade aussieht und hab ein wenig mit Java, der LWJGL und Slick rumgespielt. Danach noch etwas mit Monogame und C#.

Bin dabei geblieben das ich erstmal ohne eine große Engine ein paar 2D Spiele erstellen möchte. Hab mir tagelang etliche Threads zu Programmiersprachen, Frameworks, Wrappern etc. durchgelesen und Videos auf Youtube gesehen und da ich in meinem Studium zum Elektroingenieur bald an C und wenig Assembler ran muss, mich für folgende Sprachen entschieden:

C#, C++, Java

C# finde ich ist eine sehr schöne Sprache und Visual Studio die beste IDE soweit. Neben XNA/ Monodevelop soll es ja noch OpenTK und andere OpenGL Wrapper, ähnlich wie die LWJGL geben! Später könnte man durch die gewonnene Erfahrung auch Super auf Unity umsteigen. Persönlich denke ich das C# noch stärker kommen wird, jetzt da es Open-Source ist.

C++ steht halt am engsten zu C und ist meiner Meinung nach eine Sprache die man irgendwann mal lernen sollte. Entdeckt hab ich hier das Cocos2d-X Framework, welches schon ziemlich gut sein soll.

Java scheint mir am meisten Verbreitet zu sein und da ich die meiste Zeit mit dem LWJGL Wrapper verbracht habe, kenne ich die möglichkeiten am besten, was ein wenig meine Freie-Entscheidung beeinflusst. (Neben paar Wochen Unity, und ~1 Woche LWJGL und paar Stunden Monogame eigentlich keine Referenzen)


Soviel zu meinem Eindruck der Sache. Nun stellt sich aber folgendes Problem:
ich würde gerne für die Plattformen: Windows, Mac OSX und Android entwicklen. (XBox oder iOS ist mir egal)
Dabei lässt es das Leben leider nicht anders zu als das ich quasi 50% meiner Zeit an meinem Windows 8.1 Desktop Rechner entwicklen kann, und die anderen 50% muss ich auf mein Macbook zugreifen. (Windows installieren ist keine Option, da die Akkulaufzeit und das Touchpad handling Grausaum ist).
Also sollte man auf 2 Plattformen entwickeln können. Mit Java scheint dies ja kein Problem zu sein, Cocos2d-X anscheinend auch nicht. Aber wie sieht das mit OpenGL und Android aus? Habe etwas von OpenGL ES gelesen, allerdings scheint es bessere Lösungen zu geben.

C++ wird ja sogut wie von jedem System unterstützt, allerdings wurd mir nicht auf den ersten Blick klar, ob man damit auch Windows und OSX Anwendungen erstellen kann. Sieht irgendwie nur nach den Mobilen-Plattformen aus.

C# hab ich persönlich das Gefühl es ist mein Wunschkind. Wegen der Sprache an sich, der IDE, dem späteren Übergang zu Unity und auch durch Mono plattformunabhängig. Allerdings ist da das blöde Macbook. Mit Monodevelop-Unity hab ich mich angefreundet, sogar mit Xamarin Studio. Allerdings hatte ich bei Monogame Probleme mit der Main-Funktion, welche mit Objective-C ergänzt werden wollte und den Contents. Als das alles lief wollte ich spriteFonts adden und dafür gab es keine Unterstützung, allerdings bin ich im Nachhinein auf ein Plugin gestoßen, welches dies ermöglicht, habe es allerdings noch nicht ausprobiert.

Hoffe man versteht das Problem :) Manchmal liebäugele ich dann wieder mit Java um später auch mal Android Apps zu schreiben. Ist bestimmt auch in anderen Sprachen möglich, auch C#?


Zum Schluss: Also ich denke ich werde eh alle 3 Lernen mit der Zeit, es gibt soviel zum Rumspielen und ausprobieren mit verschiedenen Engines, etc.
Allerdings finde ich es Wichtig die erste Programmiersprache bewusst zu wählen. Programmieren möchte ich bestimmt schon seit ~10Jahren+, allerdings bin ich eine richtige Sprach-hure und wechsel die ganze Zeit hin und her bis ich frustriert aufgebe. Denke die Sprache die man am besten kann hat schon große Auswirkungen auf einen als Programmierer, ähnlich wie die Muttersprache.

Mir geht es darum eine Sprache zu haben mit der ich meine Ziele für den Anfang schön umsetzen kann, ohne allzu neidisch ins andere Lager zu schauen.
Auf Windows und OSX für Windows und OSX (und Android) entwickeln. 2D Spiele (2.5D und 3D wären natürlich auch Super wenn es direkt machbar ist).

So setze hier jetzt mal Zwangsweise einen Schlussstrich und bedanke mich bei jedem der es bis hier hin geschafft hat und Zeit findet zum Antworten :)

BlueCobold

Community-Fossil

Beiträge: 10 884

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

17.02.2015, 06:41

Ich gehe mal nur auf die tatsächlichen Fragen ein:
1) Mobile Geräte bieten als Hardwarebeschleunigung ausschließlich OpenGL ES an. Das ist aber keinesfalls schlechter als OpenGL, es kann teilweise sogar etwas mehr. Bessere Lösungen wird es nicht geben. Jede existierende Engine *muss* für mobile Geräte auf OpenGL ES aufsetzen.

2) C++ geht auf allen Systemen. Es war schon viele Jahrzehnte im Umlauf bevor es überhaupt mobile Plattformen gab. Allerdings macht jedes System gewisse Dinge natürlich etwas anders, was z.B. Fenster-Erzeugung und Events angeht.
Java ist sicherlich die Sprache der Wahl, wenn es um GUI-Apps für Android geht, genau wie Swift für iOS-GUI-Apps.

3) Du kannst Apps in C# schreiben, dann allerdings entweder in Xamarin oder in Unity. Empfehlen würde ich das nur bedingt.

4) Ich sehe nichts in diesem Topic, was nicht in all den anderen Sprach-Topics schon mal gesagt wurde :rolleyes:
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Tobiking

1x Rätselkönig

  • Private Nachricht senden

3

17.02.2015, 06:56

Grundsätzlich gibt es für jede von dir erwähnte Sprache einen Weg diese auf deine gewünschten Zielsysteme zu bringen. Die Frage beschränkt sich also auf die vorhandenen Frameworks und Bibliotheken.

Wenn du auf LWJGL, OpenTK etc. aufbaust wirst du mit hoher Wahrscheinlichkeit auf die Eigenheiten der verschiedenen Zielsysteme stoßen und im schlimmsten Fall Teile des Codes speziell für jedes System schreiben müssen. Wenn du eigentlich Spiele entwickeln möchtest würde ich dir schon zu einem Framework raten, damit du zumindest Grafiken anzeigen lassen kannst und Eingaben bekommst, ohne das für jedes System separat zu implementieren. Für Java fällt üblicherweise libGDX, bei C# Monogame und bei C++ SFML als Framework. Da ich außer SFML noch keines verwendet habe, kann ich dir dazu nicht viel sagen. Würde dir allerdings sowieso empfehlen dir alle drei mal anzuschauen und einfach mal auszuprobieren wenn dich nicht etwas direkt abschreckt.

Ich sehe es übrigens nicht als Problem viele Sprachen zu können. Nach den ersten 1-2 Sprachen sind weitere Sprachen aus der gleichen Kategorie eh nur das gleiche Prinzip nur anders umgesetzt. Dann kommt es hauptsächlich auf die best practices der Sprache an.

LukasBanana

Alter Hase

Beiträge: 1 096

Beruf: Student

  • Private Nachricht senden

4

17.02.2015, 10:14

[...] Jede existierende Engine *muss* für mobile Geräte auf OpenGL ES aufsetzen.

Für iOS gibt es zumindest noch Metal und für Windows Phone gibt es Direct3D.

Ich sehe nichts in diesem Topic, was nicht in all den anderen Sprach-Topics schon mal gesagt wurde :rolleyes:

Vielleicht wollte koin auch einfach eine Bestätigung seiner Zusammenfassung bzgl. Programmiersprachen.
Seine bisherige Erfahrung hat er ja hier in gewisser Weise zusammengefasst, daher kann ich die Intention für solche Threads durchaus nachvollziehen.

dot

Supermoderator

Beiträge: 9 850

Wohnort: Graz

  • Private Nachricht senden

5

17.02.2015, 10:33

Mein Rat:

1) vergiss Crossplattform fürs Erste, such dir eine Plattform aus und fokussiere dich erstmal aufs Programmieren Lernen an sich
2) lern C++, das ist die mit Abstand mächtigste und portabelste Sprache in deiner Liste und läuft auf allen von dir genannten Plattformen
3) hab Geduld
4) schnapp dir SFML oder libcinder und bastel deine ersten Spiele

koin

Frischling

  • »koin« ist der Autor dieses Themas
  • Private Nachricht senden

6

17.02.2015, 11:46

Hey danke euch allen für die Zeit zum lesen und Antworten :)
Was genau meine Intention für diesen Thread war weiß ich nicht, denke Verzweiflung und Bestätigung/Negierung meiner Aussagen.
Werde mir aufjedenfall nochmal libGDX für java und SFML, libcinder für C++ angucken!
Die Meinung von dot hat mir schon sehr gut gefallen, denke das Problem für mich sind die vielen Meinungen die man im Netz findet. Ziemlich verwirrend als Anfänger.

Über einen "Eigene-Erfahrungs"-Bericht würde ich mich sehr freuen.

Programmieren an sich, würde ich behaupten verstanden zu haben über die Jahre, zumindest weiß ich über die Datentypen bescheid, Klassen, Objekte, Methoden kann mit Schleifen mehr oder minder komplizierte Zeichen-Bilder zeichnen :P Hab allerdings noch nie etwas Fertiggestellt. Dies würde ich gerne Schritt für Schritt mit einem Spiel erledigen, dabei lernen und Spaß haben. Bei meinen ersten C-Bastelaufgaben hatte ich schon etwas Probleme bekommen, da mir das mit der Speicherverwaltung (fflush()) etwas schwerfiel. Muss man sich um die Speicherentleerung dann wahrscheinlich auch bei SFML und etc kümmern?

BlueCobold

Community-Fossil

Beiträge: 10 884

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

17.02.2015, 12:42

C++11 macht Speicherbereinigung für Dich völlig von allein, wenn Du es richtig einsetzt. SFML ebenfalls. fflush() ist eine C-Funktion, genau wie FILE ein C-Konstruktur ist. Das ist kein sauberes C++, sondern ein C/C++ Mischmasch. Sollte man vermeiden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige