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.
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.
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.
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.
>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.
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.
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.
> "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.
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.
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.
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.
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.
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.
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^^
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.
>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.
....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
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.
>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?