Linux Programmierung - Welche Programmiersprache?

Rotfuchs

New member
Themenstarter
Registriert
7 Apr. 2011
Beiträge
577
Hallo,

Ich in meinem Leben bis jetzt mit einigen Programmiersprachen in Kontakt gekommen. Da ich im Sommer einen Studiengang beginne, welcher sich auch mit Softwareprogrammierung auseinandersetzt, möchte ich eine neue Programmiersprache erlenen und/oder eine bereits bekannte weiter vertiefen. Die Bewertung erfolgt auf einer Skala von 1-10 - wobei 10 professionelle Kenntnisse und 1 eher Einstiegskenntnisse sind) Folgende Kenntnisse besitze ich bereits:

Privat "erlent":
- PHP & MySQL (4)
- HTML (3)

Während des Abiturs:
- Delphi 5 (4)

Während meiner Ausbildung:
- Python (2)
- C# (6)

Bis auf Python wird sicherlich keiner dieser Sprachen für eine Anwendungsprogrammierung unter Linux interessant sein. Python ist eine gute und mächtige Programmiersprache - gefällt mir aber vom Aufbau her nur bedingt. Mit C# möchte ich mich nicht weiter beschäftigen, da das Environment nur unter Windows vernünftig läuft und ich künftig kleinere Anwendungen für Linux programmieren möchte. Nach meiner Einschätzung wäre C++ eine gute Wahl, jedoch habe ich hier bedenken, da ich bis jetzt noch nie die Speicherverwaltung selbst übernehmen musste. Der QT-Designer gefällt mir allerdings ganz gut und auch die Plattformübergreifende Programmierung mit Qt.

Ich hoffe ihr habt ein paar Tipps für mich - evt. auch eine Sprache die ich selbst nicht bedacht habe - und könnt mir da etwas helfen und habt evt. auch Literaturtipps für den Einstieg in die jeweilige Programmiersprache. Mein erstes "Etappenziel" wäre ein Musikplayer der Mp3's mit Lame abspielen kann und ggf. über eine Datenbank die IDv3-Tags speichert und verwaltet. (Ohne editierung).

Grüße
Rotfuchs
 
Hallo Rotfuchs,

ich denke als Grundprogrammiersprache sollte heutzutage Java erlernt sein. Ist C# auch sehr ähnlich (bin auch von C# im dotNet zu Java migriert). Lässt sich dank der JRE Plattformübergreifend nutzen, es gibt eine große Community und falls Du bspw. Deine Webkenntnisse auch weiter nutzen möchtest nützliche Dinge wie das GWT.

Viele Grüße
noise
 
Mit C++ und der Standard Template Library musst Du keine Speicherverwaltung selbst machen. Das erkauft man sich aber mit einem großen Overhead. Für performancekritische Sachen daher lieber mit reinem C arbeiten.

Ansonsten halt Python, Perl, Bash Skripten, Java, je nach Anwendungsfall hat alles seine Stärken uns Schwächen. Mit Python werde ich aber auch nicht wirklich warm, damit kann man aber z.B. auch recht einfach mit MySQL Datenbanken arbeiten.

Spiel einfach 'rum, wenn Du mit Linux programmieren willst kommst Du sowieso mit allem mal irgendwie in Kontakt. Und freu' Dich auf die regulären Ausdrücke. ;)
 
Zuletzt bearbeitet:
Perl / Bash / Python sind ja alles nur Scriptsprachen und daher super Simple wenn man schon C++ / Java etc pp kann.

ICh selber hab mit C++ auf Linux angefangen und mach nun ein bischele Java.

Bei Java hast du den Vorteil das du jedes Tutorial nehmen kannst da java unter Windows/Linux identisch sind.

Bei C++ hatte ich das Problem das in den Turorials oft Windowslibs genommen worden sind mit denen ich nichts anfangen konnte, dann gings gesuche los.

Ich denke aber C++ ist trotzdem Sinniger auch wenn fieser (mit den Pointern etc pp) hast dann aber den Vorteil das du auch super schnell in Java reinkommst, da java von der Syntax recht ähnlich ist und einfacher als C++.

Grüße
 
Die Frage ist, was Du machen willst.
Lingua Franca unter Linux sind C, Bash, Perl. Für Perl/Ruby/Python kriegst Du brauchbare Bindings zu allem was Du Dir nur vorstellen kannst.
C++ und Java sind 2nd Class citizens, gtk z.b. ist C, lediglich qt und wxkacke ist c++ und pyside ist tausendmal angenehmer als qt in c++ imho.
Auch für Lua findest Du Bindings für jedes Toolkit und jede Lib und gerade Linux ist auch nodejs ganz nice.
mfg demonicmaniac
 
Ich selbst habe im Studium mit Java angefangen und zu einem späteren Zeitpunkt den Einstieg in C++ gemacht. Hat halt den Vorteil, dass man direkt in das - gerade moderne - Objektorientierte Denken reingeschoben wird. C++ kann man ja auch recht prozedural programmieren und hässlich wird es, wenn man beide Ansätze vermischt. Ich will hier keine Grundsatzdiskussion lostreten und OOP ist sicher nicht der Heiland (grade, wenn ich mir Bildverarbeitung anschaue...), aber die Mikration von Java auf C++ ist imho deutlich einfacher: mal von den Feinheiten in C++ abgesehen...

Kannst Du irgendwann eine Sprache und die allgemeinen Konzepte, dann ist eine Mikration egal wohin relativ einfach...
 
Hey,

was ich als Problem sehe ist, dass ich durch Delphi und C# sehr "bequem" bin was die Positionierung und Erstellung von grafischen Anwendungen bin. Für eine Scriptprogrammierung würde mich auch Python oder PHP ausreichen, jedoch wäre es von Vorteil wenn die gewählte Programmiersprache eine Entwicklungsumgebung besitzt mit der Möglichkeit die Positionierung von Buttons und Fenstern über einen grafischen Editor zu gestalten. Java wäre eine weitere Möglichkeit für Anwendungsprogrammierung - würde da ein solcher Editor mit Eclipse zu finden sein?
Das Erlernen der jeweiligen Sprache sehe ich nicht als so großes Problem an, da die OOP-Srachen meißt ähnlich aufgebaut sind. Nur die "Qual der Wahl" des richtigen Einstieges möchte ich mir etwas erleichtern, da die bis jetzt erlernten Programmiersprachen (C# und Delphi) meiner Meinung nur den Nutzen erfüllen das ich damit gelernt habe wie ein OOP aussieht.
 
Wie ich schon mal in einem früheren Thread geschrieben habe, lern irgendeine halbwegs moderne Sprache, der Rest ist Syntax.

Damit dürftest Du relativ schnell in jeder Sprache auf Deiner Skala 6+ erreichen. Jenseits von Syntax müsstest Du nur gehen wenn Du 8++ erreichen wolltest.
 
Also ich hab mir nur selber C beigebracht. Aber bin ja auch nun Arzt und kann mit dem Rest im Alltag nicht wirklich anfangen. :eek:
 
Ich bin momentan relativ viel mit C++/Qt unterwegs (auch Erfahrung mit Pascal/Delphi, Java, Python, C).

Auf Grund der von Dir als bekannt angegebenen Sprachen, müsstest Du Dich für C/C++ wahrscheinlich nochmal mehr mit dem ganzen "Urschleim" (Pointer, Speicherarchitektur und -verwaltung etc.) beschäftigen. C ist relativ überschaubar, man muss aber relativ viel von Hand machen, und machmal vermisst man da wirklich die Objektorientierung (kommt natürlich auch drauf an was man programmieren will). C++ ist da teilweise deutlich komfortabler, aber auch um eine Größenordung komplexer (höherer Einarbeitungsaufwand). Wenn C++ würde ich auch zu Qt raten. Vorteile sind: cross-platform, umfangreiche Bibliothek, gute Dokumentation, mit QtCreator gibt es eine (cross-platform) IDE die sehr gut an die Sprache angepasst ist.
 
Ich selbst mag Python auch nicht, aber sehe hier durchaus eine Eignung gegeben, da es eben sehr mächtig ist und es viel Krams auch quelloffen gibt.

Java sehe ich auf meinem Rechner nur als notwendiges übel an, da ich aus Bequemlichkeit Sachen verwende, die intern auf Java basieren. Zusätzlich sind zu JDownloader und TVBrowser keine wirklichen Alternativen verfügbar, zumindest war das Übel Java noch nicht so groß, als das ich mir hätte die Mühe gemacht, Alternativen zu suchen... Allerdings stelle ich auch in SSD-Zeiten fest, das Java Sachen per se langsamer sind, als Programme, die auf C/C++ setzen. Aus dem Grund hab ich meine Java 1.3 oder 1.4 Kenntnisse nicht sonderlich in Richtung Java 6 getrieben.

PHP/Perl trifft man sehr häufig als Sprache im Web-Bereich an, aber auch hier gibt es durchaus Alternativen oder Aufsätze, womit man sich dann nicht mehr so sehr mit den Grundlagen rumärgern muss und schneller zu Ergebnissen kommt. OOP und prozedural lässt sich sicherlich nirgends so gut mischen wie mit PHP, das ist sehr toll, wenn man richtig miesen Code schreiben will, oder zur richtigen Zeit das richtige Mittel wählen kann. ;)

Bei Anwendungen unter Linux 'muss' man sich eigentlich nur zwischen QT und GTK entscheiden, oder schaut auf seine Kenntnisse. C = GTK, C++ = QT. Mit dem QTCreator und QML tut sich auch eine Menge in Richtung Einfachheit, allerdings habe ich persönlich nicht den erhofften einfachen Einstieg in die Symbian/QML/QT-Programmierung gefunden und es sein gelassen.

Egal wofür man sich entscheidet, aber für manche kleine Sache bietet es sich an, sowohl die Bash (oder alternative Shells) zu beherrschen und auch C zu kennen. Gerade mit der Bash und diversen Linux-Standardprogrammen lassen sich zum Beispiel Dateiverarbeitungen sehr schnell lösen. Dazu sollte man sich dann mit Regexen zumindest etwas auskennen. Ein Anwendungsfall, den ich mal hatte: Simulationsprogramm erzeugt Projekte bestehend aus einer Datei und einem sehr ähnlich benamstem Verzeichnis mit den Ergebnissen. Für eine Reihe von Simulationen sollten diese Projekte gepackt werden und auf einen anderen Server geschoben werden. War mit der Bash ein, zugegeben etwas längerer, Einzeiler. Oder passend für das gesetzte Etappenziel "MP3-Player": Playlisten je Verzeichnis erstellen geht auch sehr einfach mit der Bash, muss man sich nicht erst ein passendes Programm suchen. Ist ja im einfachsten Fall durch alle Verzeichnisse iterieren und die Dateiliste in eine Datei schreiben.

Wenn man allerdings erst mal ein paar Sprachen kennengelernt hat, wird man feststellen, dass es für verschiedene Aufgaben unterschiedliche Werkzeuge gibt, die man verwenden kann. Um einen Nagel in die Wand zu bekommen, kann man auch einen Schraubendreher, Schraubenschlüssel, eine Zange oder eine Feile nehmen. Oder man nimmt einen Hammer, wenn man einen da hat. Es sind halt je nach Werkzeug unterschiedliche Verrenkungen nötig, um das gewünschte Ziel zu erreichen. Genau so verhält es sich mit den Programmiersprachen. Von daher, leg dich nicht nur auf eine fest...
 
Ich mag Python :) Aber nur für kleinere Projekte. Wenn man schnell was zusammenhacken muss, ist das ideal und IMHO oft Bash+Standardtools überlegen. Man kann halt bei Bedarf einfach in sehr viele Richtungen erweitern (kleines GUI, Übergang von prozedural zu OOP etc.) und die Syntax ist viel schöner :). Für größere Sachen könnte ich mich da im Moment nicht mit anfreunden, vielleicht fehlt mir da aber auch nur die richtige IDE für. Und natürlich sollte es nicht zu performance-kritisch sein.
 
Ich bin ja der Meinung, dass C / C++ zum erstellen von GUI-Anwendungen heutzutage keine Daseinsberechtigung mehr haben. Es gibt einfach viel "moderne" Sprachen die den ganzen Pointer / Speicherverwaltungskram entweder kapseln oder im Hintergrund von selbst erledigen. In Spezialanwendungen haben C und C++ sicherlich ihre Vorteile, aber sonst...wozu soll man sich im Jahr 2012 das noch antun. Daher würde ich dir auch zu Java raten. Unter Windows würde ich C# mit WPF nehmen ;)
 
Python.
Für die meisten Hobby-Projekte ist's leistungsfähig genug, mit Qt und PySide lassen sich plattformunabhängige Desktopanwendungen erstellen, mit Django steht ein erstkassiges Framework für Webanwendungen zur Verfügung und Skripten lässt sich damit auch sehr gut. Außerdem kennst Du Dich schon etwas damit aus.
Als IDE würde ich Netbeans empfehlen.
 
Hallo,

wenn man für Linux programmieren möchte, ist C nicht falsch (der Kernel ist fast komplett in C erstellt).
Ich nutze auch für WINDOWS nur C (da muss man aber quasi alles selbst "zu Fuß" machen :cool:).
Dabei ist die Lernkurve bei C flacher, als bei C++, C# oder Java.
Im Webumfeld verwende ich gerne PHP (Serverbasiert) mit JavaScript (auf dem Client).

Ansonsten gilt:
Auf die Sprache kommt es eigentlich nicht an.
Man muss in Algorithmen und Lösungen denken lernen ;-)

Tschau
Uwe
 
Wenn du die Java-Richtung einschlagen solltest, was sicherlich nicht ganz verkehrt ist, würde ich dir anstelle von Java aber gleich zu Scala raten. Scala ist zwar im Hobbybereich (noch) relativ unpopulär, wird aber durchaus bereits "ernsthaft" eingesetzt (z.B. ist Twitters Nachrichtenqueue in Scala implementiert). Scala wird auch in JVM-Bytecode kompiliert, aber die Sprache ist einfach mal deutlich moderner als Java und man bekommt einiges, worauf man in Java noch lange warten werden muss. Auch ist es was die Paradigmen angeht schon etwas anders, sodass du hier weit mehr als nur eine neue Syntax lernen kannst (aber nicht musst, da man auch Java-like programmieren kann). Um nur mal zwei kleine Beispiele zu geben (denke mal darüber nach wie viel unschönen Code du dafür in Sprache XY schreiben müsstest ;) ):

Code:
val people = List(...)
val (minors, adults) = people partition (_.age < 18)
Code:
val a = spawn {
    Thread.sleep(10000)
    return 3
}

val b = spawn {
    Thread.sleep(5000)
    return 3
}

val result = a() + b() // ja, das ganze läuft nur 10 Sekunden lang
Type Inference, Semikolon Inference, Futures, Implizites Threading, ein ordentliches Collectionprotokoll, funktionale und objektorientierte Möglichkeiten... wo bekommt man das schon alles in einer Sprache ;) ?
 
Auch wenn es nicht zu deiner Frage im engeren Sinne (Anwendungsprogrammierung) passt würde ich mich mit Javascript (auch Serverseitig! z.B. node.js) beschäftigen und Ruby (on Rails).
Und Java ist nie verkehrt. Java ist da und bleibt erstmal. ;)
Was gefällt dir an Python nicht?
PHP würde ich meiden und für garnichts verwenden. Dort wo du PHP verwenden würdest würde ich eher über Ruby on Rails, JS mit node.js oder zur Not auch Python nachdenken.
Klassische Anwendungsprogrammierungstechnologien/GUI-Technologien sind eigentlich eher im Rückzug begriffen.
 
Danke schonmal für alle Antworten!
Ich werde mir das ganze mal durch den Kopf gehen lassen. An Java selbst habe ich noch garnicht gedacht, würde aber tatsächlich Sinn machen, auch in Hinblick auf Webprogrammierung. Python ist für mich zu unstrukturiert mir fehlen da z.B. die Klammern, stattdessen wird ja eingerückt. Es ist einfach irgendwie "Zu anders".
Grüße
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben