Also ich würde dir Python als Programmiersprache empfehlen. Ich schreibe hauptsächlich in C und diversen Assemblern Software für eingebettete Systeme wo es auf sehr effizienten Code ankommt. Da ich hin und wieder auch Tools für mein host Betriebssystem schreiben muss um mir die Arbeit zu erleichtern
habe ich diverse Sprachen ausprobiert und muss sagen so viel Spaß wie mit Python hatte ich noch nie.
Python ist eine Programmiersprache in der man objektorientiert, prozedural und auch funktional programmieren kann. Das hat den Vorteil das man sich immer das Beste Paradigma für ein bestimmtes Problem raussuchen kann, so ist es manchmal für kleine Sachen der absolute Overkill das objektorientiert zu realisieren und prozedural führt zu "schönerem" code. Mit python hast du die Wahl und kannst auch mixen. Auch ist das Vorteilhaft beim lernen einer Programmiersprache da man damit sehr gut sehen kann was die Unterschiede zwischen den oben genannten Paradigmen sind.
Ich habe objektorientierte Programmierung mit Java gelernt und könnte dir jetzt ohne in die API nachzuschauen nicht sagen wie ich eine Datei öffne und Zeilenweise einlese, mit Python ist das einfach
Datei = open("Pfad zur Datei")
for Zeile in Datei:
# mache etwas mit dem String "Zeile"
Sowas vergisst man einfach nie
Python ist eine Skript Sprache, was aber nicht bedeutet das die weniger Leistungsfähiger als eine nicht Skript Sprache ist sondern eigentlich sind Skript Sprachen viel dynamischer. So ist in Python eine Klasse schon ein Objekt und nicht erst eine Instanz. Du kannst während der Laufzeit einer Klasse neue Attribute geben und alle Instanzen bekommen damit das Attribut. Python verwendet wie Java Bytecode der auf einer Virtuellen Maschine ausgeführt wird.
Mit Python ist es möglich auf in C geschriebene Routinenen zuzugreifen als ob dies einfach Python Module sind, damit kannst du z.B. von Python aus auf die Hardware zugreifen und Routinen die sehr schnell sein müssen kannst du somit auch in C und Assembler schreiben und dann von Python aus zugreifen.
Für Mac User ist das hier interessant:
http://pyobjc.sourceforge.net/ Damit kannst du von Python aus auf Cocoa usw zugreifen und "native" OS X Applikationen schreiben. Auch wenn du Platformübergreifend Guis erstellen möchtest kein Problem, du kannst mit wxPython
http://www.wxpython.org von Python aus auf wxWidgets
www.wxwidgets.org zugreifen. Das ist ein GUI Toolkit das ein Wrapper um native GUI Bibliotheken legt, damit benutzt dein Programm abhängig von der Plattform GTK, Win32, Cocoa, Carbon
Was auch wichtig ist sind die Entwickler Tools. Python wird mit OSX ausgeliefert, es gibt eine xCode Integration:
http://pythonmac.org/wiki/XcodeIntegration oder du kannst diese Cocoa Applikation verwenden:
http://projects.gandreas.com/pyoxide/download.php oder Eclipse mit diesem Plugin:
http://pydev.sourceforge.net/ (Beschreibung von IBM
http://www-106.ibm.com/developerworks/library/os-ecant/?ca=drs-tp2604#resources ) und noch eine IDE kannst du dir anschauen die ich eine Zeitlang verwendet habe:
http://spe.pycs.net/
Es gibt dazu noch einige Module die Leute geschrieben haben. Für Scientific Computing kann ich dir:
http://www.scipy.org/ empfehlen.
http://matplotlib.sourceforge.net/ bietet Matlab like Funktionen für python an und mit
http://www.pygame.org kannst du Spiele programmieren. Es gibt unzählig viele Module (hier eine Liste:
http://python.org/pypi?:action=index) und Python wird auch immer beliebter besonders im Wissenschaftsbereich.
Hier gibts noch einige "Success Stories":
http://python.oreilly.com/news/python_success_stories.pdf
Das nächste Interessante sind Jython und IronPython (
www.jython.org und
www.ironpython.org) Das erste ist eine Python Implementierung für Java, das bedeutet du schreibst deinen Code in Python und kannst auf die Java API zugreifen und dein ByteCode läuft dann mit der SUN JVM. Iron Python ist das gleiche nur für .NET / Mono.
Ich gebe dir hier mal einige Links die man sich anschauen sollte:
www.python.org (hier gibts links zu Tutorial, Dokumentation und vielem mehr)
www.diveintopython.org (damit hab ich python gelernt, gefällt mir sehr gut da Beispiel Code Zeile für Zeile erklärt wird)
http://www.ibiblio.org/obp/pyBiblio/pythonvideo.php (Python Video und zusätzlich interessante Dokumente)
Das oben waren alles Englischsprachige Ressourcen, hier mal einige deutsche:
http://www.python-forum.de/
http://www.python.org/doc/NonEnglish.html#german (Tutorials, Bücher)
So, zum Schluss möchte ich noch zwei Beispiele zeigen:
1.) Du hast drei Variablen a,b,c und willst die so vertauschen das a =
b, b = c und c =a ist
Java/C:
int temp = a;
a = b;
b = c;
c = temp;
Python:
(a,b,c) = (b,c,a)
2.) Du erzeugst eine Klasse die mit 4 verschiedenen Argumenten
instantieret werden kann, 1 - 4 int (die int anzahl ist variabel)
Java:
class MyClass
{
int tile;
int x = 10;
int y = 50;
int z = 100;
public MyClass(int nTile) {
tile = nTile;
}
public MyClass(int nTile, int nX) {
tile = nTile;
x = nX;
}
public MyClass(int nTile, int nX, int nY) {
tile = nTile;
x = nX;
y = nY;
}
public MyClass(int nTile, int nX, int nY, int nZ) {
tile = nTile;
x = nX;
y = nY;
z = nZ;
}
}
Python:
class MyClass:
def __init__(self, nTile, nX = 10, nY = 50, nZ = 100):
(self.tile, self.x, self.y, self.z) = (nTile, nX, nY, nZ)
Die Python Version kann sogar viel mehr. Da du den Datentyp nicht angibst ist das automatisch sowas wie ein Template/Generic d.h es ist nicht nur auf Objekte vom Typ int beschränkt.
Python hat noch viele andere Features die ich noch nicht in anderen Programmiersprachen gefunden haben, was hauptsächlich daran liegt das es total transparent ist und kaum etwas "unsichtbar" vonstatten geht.