Warum Python?
@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 ).
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
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
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
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.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.
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())
-
- 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
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.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.
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).
@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.
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.
-
- User
- Beiträge: 120
- Registriert: Montag 4. Juni 2007, 19:19
Fällt dir auf das wir einer Meinung sind? Die Sache hat einfach zwei Seiten, die man für sich abwägen sollte.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.
Aber bitte erinner mich nicht an Fortran
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Das tut mir leid für dich.BlackJack hat geschrieben:Ich habe selber schon Programme von Physikern gesehen.