Welche Programmiersprache ist für meine Zwecke die richtige?
-
Hallo Leute,
Ich habe eine gewisse Neigung zum Programmieren (bisher: Basic, VBA). Ich möchte aus diesem eher heimwerker-mäßigen Hobby mehr machen. Stellt sich nur die Frage, welche Programmiersprache sich für meine Zwecke am besten eignet:
Wenn man allgmein vom Programmieren spricht, propagiert alle Welt C++ oder Java. Hm, sagen wir mal, ich habe schon ein Projekt im Hinterkopf (quasi als Gesellenstück):
Ich möchte Lernsoftware für Musik-Schüler schreiben (i. d. R. Kids ab 8 Jahre aufwärts). D. h. die Programme müssen Noten darstellen können (Grafik) und polyphone Musik abspielen (Sound), natürlich interaktiv. Gegen Java habe ich wegen der Performance gewisse Vorbehalte.
Was ist nun Euer Rat? Wie gesagt: Ich möchte Grafik darstellen und mehrstimmige Musik abspielen, und das ganze in einer Windows-Umgebung mit Dialogen und alles was dazugehört. Ist C++ da das richtige? Oder eine andere Programmiersprache? Oder brauche ich noch andere Werkzeuge außer einer Programmiersprache?
Danke im Voraus für Eure Hilfe.
Gruß
Stefan
-
StefanVIII schrieb:
Ich möchte Grafik darstellen und mehrstimmige Musik abspielen, und das ganze in einer Windows-Umgebung mit Dialogen und alles was dazugehört.
Da ist wohl Visual Basic, Delphi, C# oder Java am vernuenftigsten.
Fuer deine Zwecke spielt Geschwindigkeit keine besondere Rolle.
Ich weiss leider nicht ob es eine freie Delphi IDE gibt, aber fuer C# und Java findet man einige Sachen im Netz (so dass du kein Geld ausgeben musst). Wobei ich denke, dass C# einfacher fuer dich waere (es passt besser in die gewohnte windows welt).
-
Wenn du schon Erfahrung in VBA hast, solltest du dein Projekt auch darin realisieren.
So Performancefressend ist es ja nun auch nicht.C++ ist einfach keine Sprache, die man lernt um ein bestimmtes Projekt realisieren zu können.
Dafür ist die Einarbeitungszeit einfach viel zu lang.
Das loht sich für dich nicht.
-
Python nicht vergessen!
-
SeppSchrot schrieb:
Wenn du schon Erfahrung in VBA hast, solltest du dein Projekt auch darin realisieren.
So Performancefressend ist es ja nun auch nicht.Naja, dann sollte er in VB schreiben, nicht in VBA. *klugscheiß*
-
C++ ist eine gute Programmiersprache. Aber nicht geeignet, wenn man mal eben ein Projekt realisieren will!
SeppSchrot schrieb:
Wenn du schon Erfahrung in VBA hast, solltest du dein Projekt auch darin realisieren.
Ich denke nicht, dass Excel und co dafür geeignet sind :p
-
Verdammt, ja klar.
Ich meinte ja auch VBa{sic}
-
Dazu kommt, fuer den Fall man will durch c++ gehen, dass man allein mit der sprache, das project nicht realisieren kann, sondern noch vor der wahl steht was man nutzten und lernen will: winapi,Mfc, .NET, *-Framework, Sound mit ?? dx, wdm, framrework etc...
Und es ist ohne Vorwissen schwer abzuschaetzten was die beste wahl fuer den Zweck ist.
-
Na na, er koennt sich hoechstens im BCB das Grundgeruest zusammenklicken, wenn er den noch irgendwo herkriegt, aber stimmt, C++ ist wohl zu aufwaendig.... ich wuerd auch Python vorschlagen
-
Shade Of Mine schrieb:
Ich weiss leider nicht ob es eine freie Delphi IDE gibt...
Delphi gehört Borland, und Borland ist meines wissens die einzige Firma, die Compiler nebst IDE anbietet. Gab mal ne kostenlose nicht-kommerzielle Version auf borland.com. Weiß aber nicht, ob's die immer noch gibt.
Wie gesagt würde sich Delphi auch gut eignen.
-
Danke für Eure zahlreichen Antworten. In einem Punkt habe ich mich etwas falsch ausgedrückt: Nur mal schnell für ein Projekt eine Programmiersprache lernen, ist auch für meine Begriffe etwas übertrieben. Selbstverständlich geht es mir auch grundsätzlich darum, mir Kenntnisse zur Entwicklung eigener Software anzueignen - allein schon aus einem Forscher-Trieb heraus und aus der Lust etwas von Grund auf selbst zu entwickeln.
Ich habe bei meinem ganzen Rumfragen so das Gefühl, dass C++ auch ein guter Ausgangspunkt ist, um darauf aufzubauen (z. B. Java Script). Mir sind auch einige Begriffe untergekommen, die ihr auch oben erwähnt habt. Dazu möchte ich Euch nochmal kurz strapazieren:
Was ist - aus der Praxis heraus gesprochen - der Unterschied zwischen C++ und C# (außer dass C# eine Weiterentwicklung ist). Und was hat es mit diesen .NET-Framework auf sich?
Gruß
Stefan
-
nun, also C++ ist eigentlich kein sehr toller Ausgangspunkt, da es eine sehr, sehr komplexe Sprache ist, und es lange dauern wird, bis du Erfolge (im Sinne von "so tolle Programme mit grafischer Oberflaeche") erzielen wirst.
C# bietet neben einigen neuen Programmiersprachkonstrukten vor allem eben das .NET Framework. Das ist - ganz vereinfacht ausgedrueckt - ein Haufen von bereits geschriebenen Code, der haeufig vorkommende Probleme loest. z. B. ists mit dem .NET Framework wesentlich einfacher, grafische Oberflaechen zu erstellen... Das .NET Framework kann man aber auch mit C++ verwenden!
C# ist auch mehr "high level", d.h. du brauchst dir um "hardware-naehere" PRobleme, z. B. die Speicherverwaltung keine Gedanken mehr machen, bei C++ schon noch...
ich persoenlich rate jedenfalls von C++ ab, lieber die Grundlagen der Programmierung anderweitig (Python, Java, etc.) lernen. Dann bei Interesse C++ lernen
-
Was ist denn an C++ _komplex_??? Komplex heißt doch das etwas undurchschaubar oder schwer durchschaubar ist. Ist es das? Meiner Meinung nach nein! Es ist lädiglich umfangreich und somit _mächtig_. Verwendet doch nicht einfach falsche Begrifflichkeiten.
Und was heißt, das es bei C++ dauert, bis man Erfolge hat? In Java oder C# hat man keine schnelleren Erfolge. Es kommt einem nur so vor, weil in jedem Einsteiger-Tutorial zu diesen Sprachen nach den ersten 10 Seiten das erste GUI-Beispiel kommt. Was hindert einen in C++ ebenfalls so vorzugehen? Warum muß man erst Templates können, um eine GUI zaubern zu dürfen? Braucht man dafür doch garnicht. Und nur weil man vielleicht weiß, was Templates sind, heißt das nicht das man programmieren kann.
Man kann eine Sprache auch schlecht reden. Das ist aber typisch menschlich...
-
Hallo,
ich persoenlich rate jedenfalls von C++ ab, lieber die Grundlagen der Programmierung anderweitig (Python, etc.) lernen
Ich bin ebenfalls dafür.
Komplex heißt doch das etwas undurchschaubar oder schwer durchschaubar ist.
der Kom|plex; komplex(umfassend)
Verwendet doch nicht einfach falsche Begrifflichkeiten.
Man kann eine Sprache auch schlecht reden.
Tut er doch gar nicht. Mit Python ist es ganz einfach eine Oberfläche zu erstellen. Python installieren, Code abtippen, schon kann man was sehen:
import Tkinter from Tkinter import * root = Tkinter.Tk() Leinwand = Canvas(root) Leinwand.pack() Bild = PhotoImage(file="..//ocean2.gif") Leinwand.create_image(0,0,anchor = NW, image = Bild) root.mainloop()
Mit bereits 8 Zeilen Code und ohne nötiges Vorwissen ist es möglich eine graphische Oberfläche zu erstellen. Ich finde Python ganz toll und für (Programmier-) Anfänger sehr gut geeignet.
Um das Ganze mit MFC oder Java Swing zum Laufen zu bringen ist wesentlich mehr Wissen/Installationsaufwand notwenig.
MfG
-
Also mit Java Swing ist das aber auch nicht schwieriger.
import javax.swing.*; public class Bild { public static void main(String[] args) { JFrame frame=new JFrame(); ImageIcon picture=new ImageIcon("..//ocean2.gif"); frame.getContentPane().add(new JLabel(picture)); frame.pack(); frame.setVisible(true); } }
-
DrZoidberg schrieb:
Also mit Java Swing ist das aber auch nicht schwieriger.
import javax.swing.*; public class Bild { public static void main(String[] args) { JFrame frame=new JFrame(); ImageIcon picture=new ImageIcon("..//ocean2.gif"); frame.getContentPane().add(new JLabel(picture)); frame.pack(); frame.setVisible(true); } }
Dafür, dass das so einfach sein soll, hast du aber schon einen ziemlich großen Bug eingebaut: Dein Programm läßt sich nicht auf dem üblichen Weg beenden.
-
Achja, in C++ ist es viel schwieriger:
C++ mit gtkmm-Library:
#include <gtkmm.h> int main(int argc, char *argv[]) { Gtk::Main kit(argc, argv); Gtk::Window window; Gtk::Main::run(window); return 0; }
Man, ist das schwer und komplex um ein Fenster darzustellen!
C++ mit Qt-Library:
#include <qapplication.h> #include <qpushbutton.h> int main( int argc, char **argv ) { QApplication a( argc, argv ); QPushButton hello( "Hello world!", 0 ); hello.resize( 100, 30 ); a.setMainWidget( &hello ); hello.show(); return a.exec(); }
Man, ist das schwer in C++ ein Fenster mit einem Button auf dem "Hello World!" drauf steht darzustellen!
C++/CLI mit .NET-Library:
#using <mscorlib.dll> #using <System.dll> #using <System.Windows.Forms.dll> using namespace System::Windows::Forms; void __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, long lpCmdLine, int nCmdShow) { Application::Run(new Form); }
Man, eine Zeile ist schon viel! Wo doch den Rest die IDE für einen autom. generiert.
Alles klar! C++ muß man vieeeel mehr lernen als in den anderen Sprachen. Wenn man Phyton anfängt, kann man autom. alles. Nur in C++ muß man lernen wie das geht.
-
Artchi, c++ ist vom designstandpunkt unglaublich komplex, da es für jedes problem zich lösungsmöglichkeiten gibt, die _nicht_ gleichwertig sind. Deshalb ist c++ keine sprache für anfänger, da der anfänger nicht wissen kann, welcher lösungsansatz nun der erfolgversprechendste ist.
-
Artchi schrieb:
Alles klar! C++ muß man vieeeel mehr lernen als in den anderen Sprachen. Wenn man Phyton anfängt, kann man autom. alles. Nur in C++ muß man lernen wie das geht.
Das hat niemand gesagt.
Im Vergleich zu Sprachen wie C# und Java ist C++ nun mal um einiges komplexer und schwieriger. Weil für Dich als Profi alles kinderleicht ist, heißt es nicht, dass ein Anfänger auch spielend mit C++ zu recht kommt.@StefanVIII
Ich denke auch, dass .NET oder Java für Dich was wären. Kannst Dir ja mal VB.NET anschauen. Da Du ja schon Kenntnisse in Basic und VBA hast, wirst Du bestimmt schnell damit zu recht kommen.
-
Artchi schrieb:
Was ist denn an C++ _komplex_??? Komplex heißt doch das etwas undurchschaubar oder schwer durchschaubar ist. Ist es das? Meiner Meinung nach nein! Es ist lädiglich umfangreich und somit _mächtig_. Verwendet doch nicht einfach falsche Begrifflichkeiten.
Schwer durchschaubar: ja, ich halte C++ fuer einen Anfaenger fuer schwer durchschaubar. Getrennte Header und Implementierungsfiles, Eigenverantwortung fuer Heapspeicherverwaltung, tausende Tutorials die sich nicht an den Standard halten, Compiler & Linker... oder auch schon ganz simple Sachen wie Funktionsprototypen, Pointer usw.... Komisch, ich finde meine Begrifflichkeit nicht so falsch, aber vielleicht bin ich ja auch schwer von Begriff
Achja, in C++ ist es viel schwieriger:
[ code ....]
Man, ist das schwer und komplex um ein Fenster darzustellen
Den Anfaenger, der mit der gtkmm-Installation unter Windows (und das tut der normale Anfaenger) zurecht kommt, den will ich sehen... WinAPI & MFC sind dicke & veralterte Brocken, die Anfaengern nicht ans Herz gelegt werden koennen, Qt ist aussen vor wenn man nicht grad ein Buch kauft oder den MSVC6 verwendet (korrigiert mich, wenn ich fehlinformiert bin)... bleibt wxWidgets (ebenfalls nichttrivial bei der Installation) und managed C++ (schau dir deinen eigenen Code an: welcher Anfaenger soll den denn bitte verstehen?)... Nein, ich glaub, GUI Erfolgserlebnisse in C++ dauern eine kleine Weile. Aber ich will C++ gar nicht totreden. Ich waer nicht hier im Forum, wenn ich C++ nicht als eine meiner Lieblingssprachen betrachten wuerd. Aber fuer Anfaenger halt ich sie nunmal fuer ungeeignet...
BTW gings im Java- und Pythoncode darum, ein Bild darzustellen!
:p SCNR
-
Artchi schrieb:
Was ist denn an C++ _komplex_???
Gerade der Anfang ist sehr schwer, weil viele viele Sachen zusammenhängen. Du legst ne Klasse an, macht man ja schließlich so. Streng genommen mußt Du Dich jetzt schon mit Operatorüberladung auseinandersetzen, weil Du nämlich vom Compiler gratis nen op= geschenkt kriegst, den Du aber vielleicht nicht haben willst... aber das mußte erstmal wissen. Haste auch noch nen Konstruktor mit nur einem Parameter mußte Dir auch noch über implizite Konvertierung gedanken machen und ggf. mit explicit gegenwirken. Wenn jetzt noch const-Correctness dazukommt, dann ist das ein Berg den ein Anfänger nicht so ohne weiteres erklimmt. Fakt ist: Diese ganzen Probleme hat man in anderen Sprachen viel weniger, weil's das dort einfach nicht gibt. Und zum Einstieg um da mal ein paar Schleifen zu bauen und ein Fenster in dem man rumklicken kann sind die damit wahrscheinlich besser geeignet.
MfG Jester