Warum Python?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wenn man wirklich tief in die Materie will sind Cs Typen unnötige Abstraktion.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

@ichbinsisyphos: Ich glaub du verstehst einige grundlegende Dinge bzgl. Programmierung nicht ganz richtig. Programmieren heißt nicht einfach nur dem Computer ein paar Befehle geben, die er dann nacheinander abarbeitet - das wäre ein eher naives Verständnis. Programmieren ist vielmehr die Beschreibung einer Problemstellung - und zwar auf eine Art und Weise die ein Rechner letztendlich verstehen kann. Wenn du verstehen willst wie ein Computer aufgebaut ist und im Inneren so arbeitet, dann ist C natürlich das richtige für dich. Eine bessere Problembeschreibung als mit Python bekommst du in C aber sicherlich nicht hin. Python verfügt halt einfach über mehr Ausdrucksmittel und damit auch über die Möglichkeit Probleme besser zu beschreiben. Wenn du 100 Wörter Englisch kannst, reicht das sicherlich um alle Probleme dieser Welt zu beschreiben. Wenn dein Wortschatz entsprechend größer ist, kannst du sie natürlich besser beschreiben. (Zuviele solltens dann auch nicht sein, da dann niemand mehr versteht was gemeint ist - das wäre dann eine Analogie zu Perl :wink:).
Dein eigentliches zu lösendes Problem ist ja beispielsweise nie zwei uint16 zu addieren - deswegen unterscheidet Python ja auch nur zwischen ganzen und nicht ganzen Zahlen (eine Unterscheidung die es so auch im "realen" Leben gibt.).

MFG HerrHagen
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

ichbinsisyphos hat geschrieben: Die neuen C++-Standards sind relativ jung. Die sind ja nicht nur deswegen noch immer so mühsam um die Leute zu quälen, sondern weil man dadurch eine größere Kontrolle über den Programmablauf hat.
Nach einer quälenden C++-Erfahrung gestern bin ich wirklich froh, normalerweise Python schreiben zu können. Die Sprache an sich ist ja nicht furchtbar, aber es gibt (um auf deinen Kritikpunkt übrigens zurückzukommen) hundertsiebenunddreißig Wege zum Ziel, über verschiedenste Bibliothekten, die einem das Leben leichter machen. Und so hatte sich der Code, den ich anpassen durfte, auch nicht zwischen Qt, C++ STL und C library entschieden, sondern locker alles durchgemischt, mit der entsprechenden Übersicht.

Im speziellen Fall ging es um XML-Behandlung. Was dort z.B. eine Funktion von 90 Zeilen Ausmaß war, hätte sich in Python/etree auf etwas wie

Code: Alles auswählen

tree = parse(filename)
el, = tree.findall('.//foo/bar')
for k, v in (line.split(':') for line in el.text.splitlines()):
    if k == 'om':
        return float(v.strip())
beschränkt.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

HerrHagen hat geschrieben:Programmieren heißt nicht einfach nur dem Computer ein paar Befehle geben, die er dann nacheinander abarbeitet - das wäre ein eher naives Verständnis. Programmieren ist vielmehr die Beschreibung einer Problemstellung - und zwar auf eine Art und Weise die ein Rechner letztendlich verstehen kann.
SICP hat geschrieben:Code should be written for humans to read, and only incidentally for machines to execute.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

ichbinsisyphos hat geschrieben:Wenn jemand zum Ziel hat ein sehr tiefes Verständnis für die Materie zu entwickeln ist aber wahrscheinlich der zwanghafte, mühsame Weg über C geschickter. Weil die Abstrahierung nicht so stark ist und man sich um das meiste selbst kümmern muss.
Mal bildlich gesprochen finde ich persönlich es wesentlich angenehmer, auf einer stabilen Brücke zu stehen und zu gucken was unter der Brücke ist, als im Wasser wild rudernd zu versuchen die Brücke zu erreichen.

Man kann sich sicherlich noch vorzüglich darüber streiten ob jetzt der Bottom-up- oder der Top-down-Ansatz erfolgversprechender ist, ich bevorzuge jedenfalls in dem Fall letzteren. Zum Ziel kommt man auf jeden Fall mit beiden (irgendwie).
BlackJack

@ichbinsisyphos: Aha, Physiker, der von Leuten die selber nie richtig Programmieren gelernt haben ein Gemisch aus C und C++, zwei sehr verschiedenen Sprachen, gezeigt bekommen hat. Und dann Informatikstudienanfängern Tipps gibt. Argh!

Ich habe selber schon Programme von Physikern gesehen. Da ist es teilweise wichtig, dass man sich wirklich gut mit der Hardware auskennt, die Speicherarchitektur kennt, um Fortran-Code zu schreiben, der bei grossen Datenmengen möglichst wenig "cache misses" verursacht, und die Fliesskommaberechnungen so zu anzuordnen, dass die Rechenungenauigkeiten möglichst klein bleiben. Und nun überleg mal bitte für wieviel Prozent der Software auf diesem Planeten dieses ganze Spezialwissen und die absolute Kontrolle über jedes Prozessorregister nötig ist!? Und wieviel Software von einer abstrakteren Sicht profitiert, die grössere, wartbarere, und stabilere Systeme erlaubt.

Das Problem bei C++ ist ja nicht, dass man sich mit der Hardware und der weitreichenden Kontrolle auseinandersetzen *kann*, sondern dass man es *muss*. Zeit die dabei draufgeht, geht einem vom Lösen des eigentlichen Problems ab.
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

BlackJack hat geschrieben:@ichbinsisyphos: Aha, Physiker, der von Leuten die selber nie richtig Programmieren gelernt haben ein Gemisch aus C und C++, zwei sehr verschiedenen Sprachen, gezeigt bekommen hat. Und dann Informatikstudienanfängern Tipps gibt. Argh!

Ich habe selber schon Programme von Physikern gesehen. Da ist es teilweise wichtig, dass man sich wirklich gut mit der Hardware auskennt, die Speicherarchitektur kennt, um Fortran-Code zu schreiben, der bei grossen Datenmengen möglichst wenig "cache misses" verursacht, und die Fliesskommaberechnungen so zu anzuordnen, dass die Rechenungenauigkeiten möglichst klein bleiben. Und nun überleg mal bitte für wieviel Prozent der Software auf diesem Planeten dieses ganze Spezialwissen und die absolute Kontrolle über jedes Prozessorregister nötig ist!? Und wieviel Software von einer abstrakteren Sicht profitiert, die grössere, wartbarere, und stabilere Systeme erlaubt.

Das Problem bei C++ ist ja nicht, dass man sich mit der Hardware und der weitreichenden Kontrolle auseinandersetzen *kann*, sondern dass man es *muss*. Zeit die dabei draufgeht, geht einem vom Lösen des eigentlichen Problems ab.
Fällt dir auf das wir einer Meinung sind? Die Sache hat einfach zwei Seiten, die man für sich abwägen sollte.

Aber bitte erinner mich nicht an Fortran :lol:
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

BlackJack hat geschrieben:Ich habe selber schon Programme von Physikern gesehen.
Das tut mir leid für dich. :D
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten