@BlackJack: Ja, gut, Wikipedia nennt das Call by Object. Aber Ich denke, wir haben die ellenlange Diskussion beide miterlebt, müssen wir nicht nochmal aufrollen
Tom_H hat geschrieben:Eigentlich hätte ich ja Pascal/Modula sagen wollen - das habe ich mir aufgrund der geringen Verbreitung verkniffen. Damit meine ich übrigens Wirth-Pascal und nicht diesen "zusammengerührten Topf", den B||L&& auf die Kunden losgelassen hat.
Also ich kenne nur das Turbo Pascal 7.0 (selbst damals wars schon heftig obsolet und die Hardware war schnell genug um den Division By Zero-Fehler zu triggern) und tatsächlich war das meine erste Programmiersprache. Ich denke aber nicht, dass sie so besonders Einsteigerfreundlich war, um ehrlich zu sein. Ich habe zwar Blöcke verstanden, aber irgendwie hat mir 'End' vs. 'End.' damals total die Probleme gemacht. Wieder so ne Sache, die man in Python nicht hat. Und wirklich gut fand ich das deklarieren der Typen nicht, das hat für mich nicht so wahnsinnig viel Sinn gemacht und sicherlich zu mehr Frustrationen geführt als es beim Debuggen geholfen hat (ergo gar nicht, denn Einsteigerprogramme sind meist nicht so komplex dass man so wahnsinnige Probleme bei der Parameterübergabe hat). Was hingegen gut war, war die IDE direkt mit Highlighting, und dann konnte das Programm blitzschnell kompiliert werden und ausgeführt werden. Mit dem ``crt``-Modul konnte man als Programmieranfänger bunten Krimskrams auf den Bildschirm zaubern. Das war schon ne feine Sache. Insofern ist Processing.js oder vielleicht noch Processing das was dem heutzutage am nähesten kommt.
Tom_H hat geschrieben:C hat den Vorteil, daß man das auf jeder Plattform (vom 50-Cent MuC/PIC bis zum Mainframe) einsetzen kann und wirklich für jeden denkbaren Fall Libraries und APIs vorhanden sind. Wenn man eine universell benutzbare Sprache lernen will, dann kommt man an C nicht vorbei. Ich mag diese Sprache garnicht und ich finde die Syntax furchtbar - aber das sind persönliche Befindlichkeiten.
Gut, das stimmt zwar, dennoch sprechen wir von Anfängern. Und die fangen in der Regel (von Arduino ausgenommen, aber das nutzt auch kein C sondern Wiring) nicht an Microcontroller zu programmieren. Sondern auf ihrem PC, mit Tastatur und sofortigem Feedback. Eventuell sogar schon in ihrem Browser (siehe Processing.js). Andererseits finde ich den Einwand zu C-Libraries nicht mehr so relevant, das war vielleicht noch 2003 ein gültiger Einwand, aber heutzutage immer weniger. Zum einen kann man C-Libraries mittels ctypes ziemlich brauchbar einbinden, zum anderen hat PyPI momentan 17982 Packages. Da sind die meisten Sachen brauchbar abgedeckt und ich würde sagen, sogar besser als in C. Nehmen wir mal so Projekte wie TurboMail, SQLAlchemy, Celery, lxml, Pygments. Zu den meisten gibt es *irgendwelche* C-Äquivalents, aber nicht annähernd so gut. Gilt natürlich auch andersrum, aber ich wünsche mir in C schon öfters einfach irgendeine Python-Library rauspacken zu können um ein Problem zu lösen.
Tom_H hat geschrieben:Ich muß mich hier von "alten Mustern" lösen. Es sind nunmal keine klassischen Stack-Maschinen mehr - in den letzten Jahrzehnten ist doch mehr als nur eine zusätzliche Abstraktionsschicht dazugekommen.
Damit ist aber immutability eine reine Konvention und keine Notwendigkeit - richtig?
Naja, wenn du Stack-Maschinen magst - Forth und seine jüngeren, klügeren Kinder Joy, Cat und Factor existieren

Letztere sind sogar ziemlich interessant wenn man die Herausforderung annimmt. Und intern ist sowohl die JVM als auch die Python-VM als Stack-Maschine implementiert. Aber wie du sagtest, es gibt obendrauf natürlich eine Menge Abstraktionen. Und natürlich, Immutability ist eine Konvention, na, vielleicht mehr als das, denn Python erlaubt ohne Tricks nicht das modifizieren von immutablen Objekten. Aber klar, der RAM in dem das Objekt abgelegt ist, ist natürlich beschreibbar
