Welche Programmiersprache könnt ihr empfehlen?

...komplette Frage anzeigen

5 Antworten

-Gamedevelopment

Da ich mal ganz stark davon ausgehe, dass du das nicht professionell machen möchtest: nimm doch einfach dafür auch Python.

-Anwendungsentwicklung in Linux und evt. Windows

Nochmal Python. Übrigens kann ein guter Programmierer nicht drölfzig Programmiersprachen, sondern ist bei Bedarf in der Lage, schnell eine neue Sprache zu lernen, wenn es nötig ist. Stattdessen solltest du dir vielleicht mal sprachunabhängige Dinge wie Architektur- und Entwurfsmuster, Software Lifetime Cycle, Unit-Testing und sowas angucken...

-Sicherheitsprogrammierung in beide Richtungen also sichere Software programmieren und sie mit selbstentwickelter Schadware testen

Test-Frameworks (für alle Arten von Tests) findest du heutzutage für alle gängigen Programmiersprachen. Ein kluger Programmierer nimmt fertige Lösungen und versucht nicht, das Rad neu zu erfinden.

-Systemprogrammierung: das System mit einer Cd starten und beispielsweise Daten retten, weil man das Passwort vergessen hat bis hin zu eigenen "Betriebssystemen" die vorallem sicher sein sollen

Da programmiert man gar nichts selbst. Zur Datenrettung nimmt man bereits existierende Lösungen von Leuten, die sich u.a. mit Virenprogrammierung auseinandergesetzt haben und für ein eigenes Betriebssystem nimmt man heutzutage klassischerweise einen bestehenden Kernel und lernt, wie man den konfiguriert bzw. den Compiler steuert.

mAin0x 08.11.2015, 11:39

So, Python klingt gut, danke, das du mehrfach meine kompetenz, mein Wissen und meine Persönlichkeit beleidigst und versuchst, mir deine Philosophien aufzuzwingen, ich persönlich kenne mehrere Leute, die vom Beruf her programmieren und diese haben mir geraten, mehrere Sprachen zu lernen, weil man effizienter und um ein vielfaches sauberer also besser arbeiten kann, wenn man eine Sprache spricht bevor "man in ein anderes Land zieht", des weiteren ist dein letzter Kommentar ziemlich sinnfrei, nur weil du dir nicht die arbeit machen willst heißt das nicht, das ich das nicht will, in der heutigen Zeit muss man eben so viel wie möglich selbst programmieren um wirklich sicher zu sein, wobei ich mich am meisten auf Sicherheit GEGEN "Sicherheit" spezialisieren will also Sicherheit vor Vorratsdatenspeicherung und einigen anderen Hochveräten, mit denen sich Regierungen die Hände schmutzig machen!

0
spaghetticode 08.11.2015, 11:44
@mAin0x

Komm runter. Niemand will dir deine Träume nehmen. Java, PHP, C++ sind wohl die wichtigsten. Viel Spaß.

1
ceevee 08.11.2015, 12:46
@spaghetticode

Java, PHP, C++ sind wohl die wichtigsten. Viel Spaß.

So sieht's aus. Und mit der Einstellung wird mAIn0x eh nicht weit kommen. Ich bin raus, wenn ich noch mehr dazu sage, dann greife ich nur wieder seine Kompetenz und sein Wissen an.

0

Kurze Antwort: C++

Auch wenn dir viele C# oder anderes empfehlen werden, ist C++ in der Summe deiner Anforderungen die mit GROSSEM Abstand beste Wahl.

Beachte bitte, dass gerade Einsteiger dazu neigen, für alles und jeden Zweck, ausschließlich ihre Lieblingssprache zu empfehlen, also hör lieber auf die Leute, die mehr Überblick haben. :)

Zum Beispiel ist es mit IL/VM-Sprachen wie C# oder Java nicht möglich, eine effiziente Game-Engine zu entwickeln. Das wollen viele Freunde dieser beiden Sprachen - die natürlich wirklich ihre Daseinsberechtigung haben und durchaus auch ihre Stärken ggü. C++ haben - nicht wahr haben, aber allein der GC oder die erzwungene Prüfung auf Indexzugriffe (zumindest bei Java) machen dieses Vorhaben unmöglich.

Dazu muss man zwar sagen, dass es natürlich Spieleengines in diesen Sprachen gibt, aber - egal wie man es dreht oder wendet - eine Implementierung in C++ muss zwangsweise effizienter sein. Trotzdem gibt es natürlich Bindings in vielen Sprach-/Engine-Kombinationen, und sogar Python ist z. B. mit PyGame als SDL-Wrapper sehr effizient nutzbar, aaaaber: Für alles was über Klebstoff hinausgeht, und eine echte Eigenentwicklung von kritischem Code verlangt, kommt man um C++ nun mal nicht drum herum.

Die Plattformübergreifende Anwendungsentwicklung ist ebenfalls ein C#-Ausschlusskriterium, obwohl ich selbst auch viel mit Mono rumfummel, aber im Vergleich zu allen anderen Sprachen ist und bleibt das ganze eine Notlösung. Zudem sind moderne C#-Features oft nicht in Mono Verfügbar ... ungefähr so, als wolle man mit der alten Win32 und MinGW entwickeln, und ständig auf irgendwelche Definitionen in der "windows.h" stößt, die vergessen wurden zu implementieren. So etwas nervt auf dauer!

Zum Thema Sicherheitsprogrammierung: Ich teste beruflich selber Software auf Sicherheitslücken, und dafür verwende ich sehr oft C++ oder gar reines C, und sei es nur um eigene Funktionen in fremde Programme einzuschleusen.

Allerdings muss ich ehrlich zugeben, dass der größte Teil meiner automatisierten Tool-Chain für eigene Projekte aus Bash, Perl, Ruby oder Python Skripten besteht (je nachdem welche Anforderungen primär überwiegen) ... hier verwende ich selten kompilierte Sprachen, und setze meist auf Interpretierte.

Allein, dass z. B. Java keine Vorzeichenlosen Typen kennt, ist ein massivst großer Nachteil, wenn man mit Binärformaten arbeitet! Und das kommt sowohl beim letzten Punkt, und beim nächsten Punkt ständig vor.

Systemprogrammierung: Ich schreibe oft Treiber für eigene Hardware, und außer Spielereien habe ich dafür noch nie etwas anderes als C oder C++ gemischt mit Assembler verwendet. Bis ich mich hierbei intensiver mit Rust oder D beschäftige, müssen diese sich erst noch ein bisschen mehr durchsetzen. Wobei D auch genial ist, aber dieser Sprache haftet gefühlt immer noch dar "Beta-Status" an ... ganz zu schweigen von "Rust", die sich sehr "Alpha" anfühlt. Also für Hardware-Nahe Sachen wie Treiber, oder gleich embedded Systemchen kommst du um C oder C++ nicht drum herum ... Kenntnisse in Assembler sind in diesem Punkt ebenfalls sehr zu empfehlen!

Ach so, und die meisten Leute, die sich ein eigenes Betriebssystem schreiben, dürften Assembler oder C verwenden ... C++ wohl auch, aber irgendwann ist man an dem Punkt angelangt, an dem man sich seinen eigenen Compiler schreiben möchte, um von anderen (Cross-)Compiliern unabhängig zu sein, und C ist WESENTLICH einfacher zu implementieren als C++. :)

Fazit: Du möchtest vermutlich C++ lernen, wenn man all deine Punkte abwägt! Außerdem dürfte das die Sprache mit den meisten verfügbaren Bindings und Bibliotheken sein. Außerdem kannst du Funktionen aus eigenen C/C++ Bibliotheken i. d. R. direkt aus fast allen anderen Skriptsprachen aufrufen, da diese dafür ein spezielles Interface, Modul, Library besitzen.

Was ich für deinen Fall als absolut ungeeignet empfinden würde, wären Sprachen basierend auf .Net, Java und interpretierte Sprachen.

Wobei du Python unbedingt weiter machen solltest! Es ist oft einfacher ein kleines Tool in 3 Zeilen Python zu hacken, als den Compiler anzuwerfen, und 100 Zeilen C++ zu übersetzen.

Noch ein Disclaimer an alle Mitleser: Versteht mich nicht falsch, .Net und die JVM sind tolle Systeme, aber man sollte wissen, WANN man WAS einzusetzen hat, und im vorliegenden Falle ist das wohl eindeutig klar, oder? :)

Schönen Abend noch an alle! :)

TeeTier 09.11.2015, 02:07

PS: Ich habe mir gerade noch mal die anderen Antworten durchgelesen, und gerade die von "grtgrt" und "ceevee" finde ich absolut nachvollziehbar.

Vermutlich wirst du zu dem Thema von jedem eine andere Empfehlung bekommen. :)

Achte einfach darauf, dass die Leute, die dir etwas empfehlen über genügend Background verfügen, und lass dir Zeit beim Abwägen.

Letzendlich kannst nur du wissen, worauf du deine pesönlichen Anforderungen fokussierst und du hast bis jetzt viele sehr gute Antworten erhalten.

Ich denke, die Antworten von "ceevee", "grtgrt" und mir geben dir zumindest erst mal einen Anstoß in die richtige Richtung. :)

0

Ich bin Linux-Fan (ArchLinux). Kleinere Administratoren-Hilfswerkzeuge schreibe ich mit per Bash Shell Script auch awk. Ich habe seit 1972 mit Cobol, Assembler, C und 4GL beruflich ERP-Anwendungen programmiert. Ich habe mir auch Python angeeignet, mich stört hier ganz stark, dass Python 3 z.B. nicht abwärtskompatibel mit Python2 ist, das ist für mich mit nichts zu entschuldigen. Wenn die nächste Python Version kommt, wird es wieder ein Schnitt sein und die Syntax wird wieder unterschiedlich sein. 

Ich habe festgestellt C ist für mich nach wie vor Nummer 1. Inzwischen bin ich im Ruhestand, vielleicht ziehe ich mir im Winter noch c++ rein, das sollte ja machbar sein, überhaupt wenn man von c kommt. 

Alle Programmiersprachen haben Vor- und Nachteile, das ist schon immer so gewesen, die erste Programmiersprache die man beherrscht, ist wahrscheinlich auch die persönlich favorisierte Programmiersprache.

TeeTier 09.11.2015, 01:58

Ich bin Linux-Fan (ArchLinux).

Das hätte man bei deinem Profilbild gar nicht gedacht. :)

0

Natürlich wird die Menge von Code, die du schreiben musst, ein gegebenes Problem zu lösen, stark von der jeweils gewählten Programmiersprache abhängen (um das einzusehen muss man nur mal C mit Assembler vergleichen).

Heute viel wichtiger aber ist, welche Menge schon fertig implementierter Hilfsfunktionen dir diese oder jene Sprachumgebung zur Verfügung stellt, d.h., welche Standardbibliotheken du noch nutzen kannst, nachdem du dich auf eine bestimmte Programmiersprache festgelegt hast.

Erlaubt die gewählte Programmiersprache dem Programmierer z.B. die Nutzung der .NET Bibliothek, so wird das seinen Code viel dramatischer verkürzen als die Wahl dieser oder jener Sprache.

Ähnlich umfangreich und nützlich wie die .NET Bibliothek sind heute nur die Standardbibliotheken, die mit dem Java Compiler von Oracle (vormals Sun) kommen. Sie werden sogar noch ergänzt durch eine große Zahl in Java geschriebener Open Source Bibliotheken.

grtgrt 08.11.2015, 11:46

Java und C# sind Sprachen, die vor allem die Implementierung großer Enterprise Anwendungen unterstützen wollen.

Wenn du andere, vor allem recht spezifische Anforderungen hast, also z.B. graphisch ansprechende, nicht allzu triviale Spiele entwickeln möchtest, wird dir das nur gelingen, wenn du ganz speziell für dieses Anwendungsgebiet entworfene Bibliotheken wiederverwendbaren Codes und eine zu ihnen passende Entwicklungsumgebung findest. 

Als Programmiersprache wirst du dann zu verwenden haben, was diese Umgebung dir aufzwingt.

1

Ich lern gerade C# und C++. Ich kann dir C++ sehr empfehlen. Ich find sie leichter als C# und praktischer.

mAin0x 08.11.2015, 11:11

leichter :o hä, ich habe gaaaanz am anfang mal c++ angeschnitten und fands genau so schwehr wie c nur das man bei c näher am system ist und z.b. auf einzelnen bits programmieren kann, deshalb c, ich bin aus der c familie sowieso draußen, durch die vielen klammern und weil man alle funktionen selber machen muss wird alles viel komplexer als nötig

0
spaghetticode 08.11.2015, 11:45
@mAin0x

C++ kann genauso nah am System sein wie C und Bitoperationen bietet C++ auch.

0
mAin0x 08.11.2015, 11:14

also nicht böse gemeint, danke für deine antwort und ich habe auch viel gutes über c++ gelernt aber ich bräuchte eine etwas leichtere

0
spaghetticode 08.11.2015, 11:46
@mAin0x

Wenn dir C++ zu schwer ist, solltest du dein "Losgehen" auf ceevee oben nochmal stark überdenken...

0
mAin0x 08.11.2015, 11:47
@spaghetticode

wie gesagt, ich kann schon c und c++ lernen lohnt sich nicht, weil ich entweder SYSTEMNAH oder für ANWENDUNGSENTWICKLUNG programmieren will

0
spaghetticode 08.11.2015, 12:07
@mAin0x

Beides bietet dir C++. Mit einer Aussage wie "ich kann schon C" wäre ich übrigens eher vorsichtig.

2
Mikkey 08.11.2015, 12:11
@mAin0x

Also zum Verständnis (auf die Gefahr hin, Dir auf den Schlips zu treten)

C++ enthält C, es gibt keine Sprachbestandteile von C, die in C++ nicht enthalten sind. Deshalb kannst Du mit C++ genauso systemnah programmieren wie in C.

Da C++ aber sowohl .NET als auch MFC als auch andere OOP-Bibliotheken ist es wesentlich variabler einsetzbar.

3
Hairgott 09.11.2015, 19:58
@Mikkey

In C++ gibt es nicht jeden Sprachbestand teil von C. Mikkey

0

Was möchtest Du wissen?