Forum: PC-Programmierung C++, java oder Python?


von chris (Gast)


Lesenswert?

Kann es sein, dass an den Hochschulen immer mehr Python gelehrt wird?
Ich habe auch schon Stellenangebote gesehen, in denen explizit 
Python-Programmierer gesucht werden.

Wie läuft Python unter Windows? Soweit ich weiß, ist Python eher der 
Linux Welt entsprungen.

von Oliver K. (okraits)


Lesenswert?

Im Studium hatten wir keinen Kontakt damit. Ich habe im Praxissemester 
damit entwickelt (SPC-Applikation mit viel Mathematik - PyQt, numpy, R).

Den Python-Interpreter gibts auch für Windows. Bezüglich der Performance 
mußt Du mal googlen, wie es sich gegenüber C/C++ und Java schlägt. Bei 
performancekritischen Dingen kann aber noch optimiert werden oder C-Code 
eingebunden werden.

Praktisch ist in manchen Fällen py2exe, mit dem man aus Python-Code eine 
ausführbare Datei erstellen kann, welche dann keinen installierten 
Interpreter erfordert.

Über die Sprache an sich kann man geteilter Meinung sein - die 
dynamische Typisierung z.B. hat Vor- und Nachteile.

von oberon (Gast)


Lesenswert?

Ersetze das "oder" in deiner Frage einfach durch "und".

Je nach Studienfach sollte die Hochschule eh nicht als "Programmierkurs 
für Fortgeschrittene" angesehen werden. Du sollst ja eher "programmieren 
an sich" lernen, und welches Handwerkszeug (== Programmiersprache) du 
dafür benutzt ist eher zweitrangig.

Wichtiger wäre, aus jeder Sprachenfamilie einen Vertreter zu lernen, Der 
Umstieg auf eine andere Sprache innerhalb der Familie ist dann mehr oder 
weniger nur Fleissarbeit:

Also z.B:

- C++ oder Java oder C# oder ...
- C oder Modula oder ASM oder Pascal oder ...
- Haskel oder SML oder OCAML ...
- Prolog
- Ggfs, wem's Spass macht: LISP und FORTH

Und dazu noch ein paar nützliche Dinge, die man halt immer wieder 
braucht:

Perl, Python, Ruby, Bash, Javascript, SQL, usw, usf.

von chris (Gast)


Lesenswert?

> Du sollst ja eher "programmieren
> an sich" lernen, und welches Handwerkszeug (== Programmiersprache)
> du dafür benutzt ist eher zweitrangig.

Eben, und da vermute ich, dass es Java verdrängt. Zumindest das MIT 
macht es:
http://www.youtube.com/watch?v=k6U-i4gXkLM

Früher war an den Hochschulen Pascal angesagt, später Java und jetzt 
wohl Python.

Und es scheint mittlerweile Stellenangebote für Python-Entwickler zu 
geben, z.B.:
http://www.stepstone.de/stellenangebote--Software-Entwickler-Python-m-w-Schwerpunkt-Produktionsprozess-Freiburg-Haufe-Lexware-GmbH--Co-KG--1536832-inline.html?cid=backinjob_premium

BTW: wie ist eigentlich Python im Vergleich zu Ruby einzuordnen

von Oliver K. (okraits)


Lesenswert?

http://www.heise.de/developer/meldung/TIOBE-Index-Python-ist-Programmiersprache-2010-1166165.html

Python hat zwar stark zugelegt, Java ist aber auch nicht schwächer 
geworden ;-)

Und ich würde Technologien an Hochschulen nicht unbedingt als Zeichen 
dafür nehmen, was in der Industrie angesagt ist.

Außerdem hat oberon auch recht, es geht nicht um die einzelne Sprache, 
sondern um Methoden der SW-Entwicklung. Und die sind 
sprachenübergreifend. Außerdem ist nicht jede Sprache für jeden 
Einsatzzweck geeignet.

von chris (Gast)


Lesenswert?

>Außerdem hat oberon auch recht, es geht nicht um die einzelne Sprache,
>sondern um Methoden der SW-Entwicklung.

Nicht unbedingt. Ich habe jetzt schon einige Sprachen hinter mir und 
muss sagen, es ist jedes mal ein erheblicher Aufwand, sich so 
einzuarbeiten, dass man produktiv damit arbeiten kann.
Bei Java z.B. gibt es eine riesige Klassenbibliothek. Bis man damit 
umgehen kann, dauert es ewig.

von Mark B. (markbrandis)


Lesenswert?

oberon schrieb:
> Je nach Studienfach sollte die Hochschule eh nicht als "Programmierkurs
> für Fortgeschrittene" angesehen werden. Du sollst ja eher "programmieren
> an sich" lernen, und welches Handwerkszeug (== Programmiersprache) du
> dafür benutzt ist eher zweitrangig.

Im Prinzip hast Du ja Recht, nur sind viele Personaler in dem Punkt 
total beschränkt. Da werden 5 Jahre Java-Kenntnisse verlangt mit genau 
diesem-und-jenem-Framework, nein C++ Erfahrung im gleichen Umfang zählt 
nicht, oder mehrjährige Erfahrung in IEC61131 - wie, Sie können Pascal? 
Nein, Sie müssen Structured Text können! ... :-(
Wenn es nicht so traurig wäre, könnte man ja drüber lachen.

von Yalu X. (yalu) (Moderator)


Lesenswert?

chris schrieb:
> Kann es sein, dass an den Hochschulen immer mehr Python gelehrt wird?

Kann sein. Ich finde aber nicht, dass Python als erste gelernte
Programmiersprache so sehr geeignet ist: Es ist zwar leicht zu lernen
(kein Vergleich mit C++), es macht es einem aber auch leicht, schlampig
zu programmieren.

> Ich habe auch schon Stellenangebote gesehen, in denen explizit
> Python-Programmierer gesucht werden.

Vielleicht deswegen:

  "I'll call the Python paradox: if a company chooses to write its
  software in a comparatively esoteric language, they'll be able to hire
  better programmers, because they'll attract only those who cared
  enough to learn it."

(aus http://www.paulgraham.com/pypar.html)

Oliver K. schrieb:
> Im Studium hatten wir keinen Kontakt damit. Ich habe im Praxissemester
> damit entwickelt (SPC-Applikation mit viel Mathematik - PyQt, numpy, R).

Python + NumPy + SciPy scheint immer häufiger als kostenlose Matlab-
Alternative eingesetzt zu werden.

> Bezüglich der Performance mußt Du mal googlen, wie es sich gegenüber
> C/C++ und Java schlägt.

Performance des ausgeführten Programms:  deutlich schlechter
Performance bei der Programmierung:      besser
Spaßperformance:                         deutlich besser

chris schrieb:
> Eben, und da vermute ich, dass es Java verdrängt.

Das glaube ich nicht. Java und Python haben beide ihren festen Platz in
unterschiedlichen Anwendungsbereichen. Java steht eher mit C#, Python
eher mit Ruby in Konkurrenz.

> BTW: wie ist eigentlich Python im Vergleich zu Ruby einzuordnen

Beide sind recht ähnlich zueinander, sowohl die Sprachen an sich als
auch ihre Laufzeitsysteme. Wenn der Arbeitgeber oder Kunde keine
speziellen Ansprüche hat, reicht es, wenn man eine von beiden kann.
Welche, ist Geschmackssache.

von chris (Gast)


Lesenswert?

> "I'll call the Python paradox: ....

Ein wenig hat er vermutlich recht, auch wenn die Aussage ein wenig 
manipulativ und "Python-fördernd" ist. Zwei meiner Bekannten, die 
ziemlich gut sind, haben schon vor einiger Zeit angefangen, Python zu 
programmieren.

von Oliver K. (okraits)


Lesenswert?

chris schrieb:
>>Außerdem hat oberon auch recht, es geht nicht um die einzelne Sprache,
>>sondern um Methoden der SW-Entwicklung.
>
> Nicht unbedingt. Ich habe jetzt schon einige Sprachen hinter mir und
> muss sagen, es ist jedes mal ein erheblicher Aufwand, sich so
> einzuarbeiten, dass man produktiv damit arbeiten kann.
> Bei Java z.B. gibt es eine riesige Klassenbibliothek. Bis man damit
> umgehen kann, dauert es ewig.

Das ist schon klar, die Einarbeitung in neue Sprachen/Technologien wird 
Dir in der SW-Entwicklung allerdings immer wieder blühen - erstens 
kommen und gehen Sprachen im Laufe der Jahre und zweitens lernt man 
nicht eine einzige Sprache und setzt diese dann für alle Einsatzzwecke 
ein - jede Sprache hat ihre Stärken und Schwächen und ist nicht für alle 
Anwendungsfälle geeignet. Die Wahl der Sprache ist oft vom 
Anwendungsfall, vom Wunsch des Kunden oder von bestehender Software 
abhängig.

Und so unähnlich sind sich viele Sprachen auch nicht - z.B. Java/C# und 
Python/Ruby. Und bei der Klassenbibliothek hilft Dir ja die 
Dokumentation auch - oder ein Buch.

von Fer T. (fer_t)


Lesenswert?

Naja Hier machen die in der FH noch C und dann C++.
Ich bin der Meinung man macht es am besten mit C anfangen, hier lernt 
man die Grundsätze (fast) jeder Programmiersprache, und C braucht man 
immer mal wieder.
C++ ist schon Komplexer, Java ist evtl. besser, weil es 
Programmunabhängig ist (JAR geht überall), aber auch weil es etwas 
leichter ist.
Python finde ich ist nur wegen dem einfach QT Binding gut für GUIs zu 
gebrauchen.

von DirectX (Gast)


Lesenswert?

Fer T. schrieb:
> Python finde ich ist nur wegen dem einfach QT Binding gut für GUIs zu
> gebrauchen.

Wobei es die QT(-Bindings) auch für C++ (klar) und Java ("Jambi") gibt, 
und dort die QT auch nicht wesentlich kompizierter ist.

Aber für Rapid Prototyping ist Python ne feine Sache... Schnell 
zusammengestöpselt, und wenn es dann tatsächlich Stellen mit 
Performance-Problemen gibt, kann man die immernoch durch C++ Fragmente 
ersetzen.

von Pfennigfuchser (Gast)


Lesenswert?

Python ist eine gute Sprache, die unbedingt gelehrt werden sollte. 
Gerade so Konzepte wie Closures, Mehrfachvererbung usw. sind wichtig. 
Wie will man Studenten die Gefährlichkeit von Mehrfachvererbung lehren, 
wenn es die zu unrecht sehr populäre Sprache nicht hat? C++ unterstützt 
Mehrfachvererbung, aber C++ hält nur den Lehrbetrieb auf.

Python habe ich vor fünf, sechs Jahren gelehrnt und sehr umfangreiche 
Software damit geschrieben. Python 3 habe ich auch schon für ein 
privates Projekt benutzt.

Zur Performanz: Die Performanz ist auch abhängig von den Algorithmen, 
den Compilern und von der Architektur und nicht nur davon, ob es jetzt 
direkt in Maschinensprache übersetzt wird. "Echte" Zielplattformen wie 
ein Intelprozessor sind zu kompliziert, um gute Compiler zu schreiben, 
die effektiv optimieren können. Bei idialisierten Maschinen wie der JVM 
oder wie die Python-Laufzeitumgebung sind ganz andere Sachen möglich. 
Python ist definitiv langsamer als die JVM, was an der dynamischen 
Typisierung und Ducktyping liegt. Aber ein Java-Programm kann schneller 
ablaufen als das gleiche in C++. Ein JIT-Compiler tut ein übriges.

Dass man in Python viel schneller entwickeln kann als in Java und in 
Java viel schneller entwickeln kann als in C++, brauche ich hier nicht 
mehr erwähnen.

von Pfennigfuchser (Gast)


Lesenswert?

Fer T. schrieb:
> Ich bin der Meinung man macht es am besten mit C anfangen, hier lernt
> man die Grundsätze (fast) jeder Programmiersprache, und C braucht man
> immer mal wieder.

Das sehe ich ganz anders. Was sind denn die Grundsätze? Hängende Zeiger? 
Falscher Zugriff auf den Speicher? Meines Erachtens sind das Dinge, die 
das Lernen des Programmierens erschweren und vom eigentlichen Inhalt 
ablenken. Sollte man maschinennah bzw. betriebssystemnah etwas 
entwickeln, dann sind solche Dinge erst interessant.

Ich habe C/C++ noch als Schüler gelernt (nicht in der Schule, sondern 
privat). Es war ziemlich zäh und ich war ja für die obigen Themen nicht 
sensibilisiert. Viele Fehlermeldungen des Compilers waren nutzlos. Als 
Student dachte ich: C++ ist die(!) Sprache. Diesen Gedanken habe ich 
dann relativ schnell wieder aufgegeben. Die Zukunft liegt in 
funktionalen Konzepten kombiniert mit Objektorientierung. Sprachen wie 
Python und Scala gehen diesen Weg.

von Daniel -. (root)


Lesenswert?

ich habe Pascal/Delphi in der Schule gelernt, dennoch
nie was sinnvolles darin geschrieben. C und danach C++
habe ich neben Pascal für mich gelernt. Es waren noch
schöne schlanke DOS-Zeiten. Bis 2004 ist danach die Zeit
erstmal für mich stehengeblieben. Python war die Entdeckung
des Jahres 2004 für mich. Ich bin der festen Überzeugung, dass
jeder der einmal Python (mit Modulen wie re,pylab,matplotlib,
urllib,....) gelernt hat, sich in C und auch C++ wie eine
Schildkröte vorkommen wird. Aber C hat seine absolute
Vormachtsstellung in embedded, da kommt Python nie heran.
Ruby hat meinem Empfinden nach weniger Module, aber ich
kann mich da auch täuschen, da ich nur wenig damit gearbeitet habe.
Das wichtigste war jedoch, dass mir seit Python klar wurde, wie
konzeptionell unterschiedlich die Welt der Sprachen ist. Ich habe
mich sicherlich nicht von C abgewandt, aber mein Hauptinteresse
gilt seitdem den Skriptsprachen und anderen Exoten :)

BTW: ist jemand von euch gerade ohne Perl5-Kenntnisse an Perl6 dabei?

PS: Java hat einen riesigen (Trägheits)Moment und wird mit ziemlicher
Sicherheit nicht von Python abgelöst, zumindest nicht in den nächsten
5 Jahren. Langfristig werden, denke ich, C++ und Java in Popularität
etwas runtergehen.

PPS: Der Boom um R fängt wohl gerade erst an^^

von Pfennigfuchser (Gast)


Lesenswert?

Daniel -------- schrieb:
> PS: Java hat einen riesigen (Trägheits)Moment und wird mit ziemlicher
> Sicherheit nicht von Python abgelöst, zumindest nicht in den nächsten
> 5 Jahren. Langfristig werden, denke ich, C++ und Java in Popularität
> etwas runtergehen.

Ich denke, die JVM-Technik wird in jedem Falle bestehen bleiben. Das ist 
eine gute Sache, schnell und robust, auch wenn es Neunmalkluge gibt, die 
was anderes behaupten.

Ich hoffe innigst, dass Java zugrundegeht und durch Scala abgelöst wird. 
Scala ist eine tolle Sprache, mit der man nicht nur schnell entwickeln 
kann, sondern auch Code höherer Güte erstellt als es bei Java der Fall 
ist. Scala ist eine objektorientierte funktionale Programmiersprache, 
die den Typinferenzalgorithmus von Robin Milner benutzt. Man schreibt 
nicht

int a = 4;
final b = 5;

sondern

var a = 4
val b = 5

Der Scala-Compiler erkennt automatisch, dass rechts vom 
Zuweisungsoperator ein Integer steht. Der Compiler unterscheidet auch 
zwischen Variablen (var) und Werten (val). Er kann aufgrund dieser 
Informationen Optimierungen vornehmen, die Java nicht vornehmen kann.

Scala fügt sich nahtlos in die bestehende Java-Welt ein, was einen 
kommerziellen Erfolg verspricht.


Leider erzeugt Groovy einen viel größeren Hype, was mal wieder zeigt, 
dass nur wenige Leute wissen, wodrauf es wirklich ankommt. Das Problem 
bei Java ist doch nicht Unflexibilität, das Fehlen von Closures und die 
statische Typisierung. Wenn jemand statische Typisierung für ein Problem 
hält, ist er ein schlechter Architekt. Das Problem bei Java ist, dass 
man immer noch viel zu viele Fehler machen kann. Ob das jetzt 
parametrisierte Klassen sind, ob das nun NullPointerExceptions und 
ClassCastExceptions sind. Java kennt auch keine Mehrfacherbung und man 
produziert häufig doppelten Code, wenn ein Interface mehrmals 
implementiert werden muss. Scala verspricht dort Abhilfe.

von chris (Gast)


Lesenswert?

>Ich denke, die JVM-Technik wird in jedem Falle bestehen bleiben. Das ist
>eine gute Sache, schnell und robust, auch wenn es Neunmalkluge gibt, die
>was anderes behaupten.

JVM-Technik? Vielleicht verstehe ich Dich da falsch. JVM ist ja die Java 
Virtial Machine, also der virtuelle Prozessor der auf allen Systeme 
implementiert wird und auf dem Java dann läuft. So weit ich weiß, wurden 
mittlerweile schon viel mehr Sprachen auf die JVM portiert, z.B. auch 
Python.
(Lustig wäre in diesem Zusammenhang, C++ auf die JVM zu portieren)

Aus diesem Grunde ist es etwas seltsam von der JVM-Technik zu sprechen. 
Richtiger wäre eher, von der "Technik der virtuellen Maschinen" zu 
sprechen.

von roboter (Gast)


Lesenswert?

....Python ist eine gute Sprache, die unbedingt gelehrt werden sollte...


NEIN, nicht lernen. Ist verschwendete Zeit.
Python ist mal etwas für langweiler, aber kein ernstzumehmender 
Prog-Interpreter.

Gruss

von Arc N. (arc)


Lesenswert?

chris schrieb:
> JVM-Technik? Vielleicht verstehe ich Dich da falsch. JVM ist ja die Java
> Virtial Machine, also der virtuelle Prozessor der auf allen Systeme
> implementiert wird und auf dem Java dann läuft. So weit ich weiß, wurden
> mittlerweile schon viel mehr Sprachen auf die JVM portiert, z.B. auch
> Python.
> (Lustig wäre in diesem Zusammenhang, C++ auf die JVM zu portieren)

Zwar über einen Umweg, aber es kommt Bytecode raus...
http://nestedvm.ibex.org/
oder die MS-Variante
C++/CLI für die CLR
oder der bessere gcc aka clang für die LLVM

> Aus diesem Grunde ist es etwas seltsam von der JVM-Technik zu sprechen.
> Richtiger wäre eher, von der "Technik der virtuellen Maschinen" zu
> sprechen.

von chris (Gast)


Lesenswert?

>Zwar über einen Umweg, aber es kommt Bytecode raus...
>http://nestedvm.ibex.org/

Super! Dabei dachte ich schon, es wäre keiner auf die Idee gekommen.
Schade ist nur dass man den Cross-Compiler für MIPS Prozessoren 
installieren muss. Und es entstehen natürlich noch weitere Fragen: Gibt 
es nur das Interface für stdio oder kann man Graphik?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.