Programmieren und Psychologie

Interessantes ohne bestimmtes Thema!

Moderator: student

rotezora
Beiträge: 10
Registriert: Fr Apr 19, 2019 10:16 am

Re: Programmieren und Psychologie

Beitrag von rotezora »

bigben
Beiträge: 2172
Registriert: Mi Okt 12, 2016 9:09 am

Re: Programmieren und Psychologie

Beitrag von bigben »

rotezora hat geschrieben: Di Mär 30, 2021 12:42 pmAlso sehe ich es richtig, dass ihr beide einen Vorteil darin seht mit C++ zu starten, weil es auch die Grundlage für andere Sprachen bildet, so etwas wie die ‘ancient language’, die mehr Arbeit braucht, aber auch zum Verständnis anderer Sprachen beiträgt...?
Beim Programmieren von Computern geht es im Wesentlichen um Abstraktion. Du kannst nicht einen Forumseintrag schreiben, indem Du Nullen und Einsen über das Telefonkabel schickst. Du brauchst dazwischen mehrere Schichten von Abstraktion. Wenn Du programmieren willst, dass Dein Computer sich mit Deinem Handy verbindet, dann muss sich irgendjemand Gedanken machen, ob das dritte übertragene Bit eine Eins oder eine Null sein soll. Sowas macht man in Assembler oder C oder C++. Beim Programmieren einer Faktorenanalyse willst Du nicht über einzelne Bits nachdenken. Du brauchst dafür eine Programmiersprache mit einem höheren Abstraktionsniveau. C++ ist der Versuch einer Sprache, alles zu sein: Das Verschieben einzelner Bits wie in C genauso zu ermöglichen wir eine hoch abstrahierte Programmierung eines Egoshooters. Seit über 40 Jahren wird C++ ständig weiterentwickelt, ständig kommen Dinge dazu, aber es werden nicht wirklich welche weggenommen, weil man unbedingt rückwärtskompatibel bleiben will. Das bläht die Sprache gewaltig auf, weshalb der "Chef" der Programmiersprache, Bjarne Stroustrup selbst empfiehlt nur die jeweils aktuellen Aspekte der Sprache tatsächlich zu nutzen. Sei Buch "The C++ Programming language" hat über tausenddreihundert Seiten. Als Einsteigerbuch in die Dinge, wie er die Sprache heute sehen würde gibt es von ihm "A Tour of C++" mit 240 Seiten. Das kann man ganz gut mal lesen.

C++ hat einen fürchterlichen Ruf, unauffindbare Fehler zu erzeugen, weil man irgendwo mal sagt, dass man jetzt ein Stück Speicherplatz braucht und dann vergisst, wieder zu sagen, dass man diesen Speicher jetzt nicht mehr braucht, oder daran gedacht hat, den Speichergebrauch wieder abzumelden und dann versehentlich doch nochmal auf den freigegebenen Speicher zugreifen will oder, oder, oder. C++ ist komplex und das macht es extrem anfällig für Sicherheitslücken. C++ programmiert man da, wo es extrem auf Speicheroptimierung und Schnelligkeit ankommt. Bei der Webprogrammierung wird die Geschwindigkeit in der Regel nicht durch Recheneffizient sondern durch Übertragungszeiten verbraucht, weshalb die Webprogrammierung nicht der Schwerpunkt für C++ ist.

Ja, Du musst viel über Computer lernen, wenn Du C++ lernen willst, aber ich empfehle das ganz bestimmt nicht.
Ich frage mich da, ob zum Einen das Ziel zu hoch gesteckt ist (braucht es nicht Jahre?)
Für das Büchlein "A Tour of C++" reichen ein paar Tage im Schwimmbad, für Meisterschaft braucht es Jahre. Das gilt aber für die meisten Dinge. Schnelle erste Erfolge hat man wahrscheinlich woanders leichter, aber mit C++ im Werkzeugkoffer the sky is the limit.
zum Anderen ob es auch umgekehrt Sinn macht: mit Python/HTML,CSS,JavaScript einsteigen und später tiefer lernen.
Das wäre meine Empfehlung. Es macht Sinn, mit einer der Mainstreamsprachen einzusteigen und nicht mit irgendwas exotischem das zwar vielleicht mehr sex appeal hat (Smalltalk, Haskell, Rust oder Elixir), wo man aber vielleicht keine Hilfe findet, wenn man mal feststeckt.

Es sei denn man macht das absichtlich und bewusst. Generationen von MIT-Absolventen haben das Denken in Programmier-Abstraktionen mit dem inzwischen online lesbaren Buch "Structure and Interpretation of Computer Programs" in Scheme gelernt. Nicht, weil man dann mit Scheme seine Brötchen verdient, sondern weil die zuständigen Professoren am MIT fanden, dass man damit das programmiererische Denken lernt, bevor man dann loszieht, eine Sprache zu lernen, die weniger für die Hochschule und mehr für die Lebenspraxis gedacht ist (z. B. C++, Java, ...).
Das Buch findest Du hier: https://mitpress.mit.edu/sites/default/ ... /book.html (oder natürlich beim Buchhändler Deines Vertrauens)
eine geeignete Programmierumgebung hier: https://racket-lang.org
Da würde ich mich nochmal über Feedback sehr freuen.
Dann versuche besser zu beschreiben, was Du damit machen willst und was Deine Erwartungen sind. Nur dann lässt sich die Welt der Programmiersprachen näher eingrenzen. Es gibt nicht gute und schlechte Sprachen, nur passende und unpassende für gegebene Bedingungen.
Ich habe gelesen, dass man mit C++ so ziemlich alles programmieren kann - das wäre ein riesen Vorteil.
Du kannst auch auf einem Holzkohlefeuer so ziemlich alles kochen. Trotzdem benutzen Köche gerne Elektroherde und Gasgrills. Oder wie ich mal in einer Diskussion über einen Programmiersprachenvergleich gelesen habe: Ich kann auch mit einem Stein eine Schraube in eine Wand schlagen.
Es scheint mir von dem, was ich gelesen habe, dass C++ nicht so viele Nachteile hat, sondern einfach aufwendig ist zu lernen.
Doch, C++ hat eine Menge Nachteile. Memory leaks, segfaults, dass man sich mit einem riesigen Toolstack vertraut machen muss bevor man Fremdlibraries benutzen kann usw. Vielleicht magst Du mal auf dieser Seite https://www.reddit.com/r/rust/comments/ ... st_vs_c_c/ den ersten Beitrag des Users matthieum anschauen. Wir verstehen beide längst nicht, was er da alles auflistet, aber Du kannst ja mal schauen, wieviele Leute geantwortet und wieviele davon widersprochen haben. Keine Programmiersprache ist gut oder böse. Es kommt immer auf den Anwendungszweck an.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
student
Beiträge: 503
Registriert: Fr Okt 07, 2016 9:52 am

Re: Programmieren und Psychologie

Beitrag von student »

Hallo RoteZora,

natürlich hat C++ einen gewissen Ruf, da hat Bigben sicher Recht. Wenn es um reine Web-Anwendungen geht, gibt es passendere Sprachen.

Warum habe ich C++ überhaupt erwähnt, inklusive meines Hinweises (starker Tobak)? Ich bin in letzter Zeit immer wieder über den Punkt "Hier hilft C++ weiter" gestolpert (ob bei Python oder auch bei Julia) und beschäftige mich seit dem mit C/C++. Was soll ich sagen? Ich bin begeistert! C/C++ zwingt den Programmierer wirklich nachzudenken um die (grenzenlosen) "Programmier-Idee" sauber umzusetzen. Das diszipliniert und bringt den Programmierer weiter. Die Belohnung ist ein absolut effizienter Code.

C++ hat eine steilere Lernkurve als manch andere Programmiersprache. Die gemachten Erfahrungen und Kenntnisse helfen dann auch bei anderen Programmiersprachen weiter.

Es ist klar, ich werden natürlich nicht alles mit C++ erledigen, sondern im Wesentlichen nur Dinge umsetzen, die besonders rechenintensiv sind oder wenn ich mit sehr großen Datenmengen (oder Datenstreams) umgehen muss. R bleibt mein Hauptwerkzeug.

Das waren meine 2-Cent...! ;) 8-)
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 2172
Registriert: Mi Okt 12, 2016 9:09 am

Re: Programmieren und Psychologie

Beitrag von bigben »

Hallo!
student hat geschrieben: Di Mär 30, 2021 2:53 pmWarum habe ich C++ überhaupt erwähnt, inklusive meines Hinweises (starker Tobak)? Ich bin in letzter Zeit immer wieder über den Punkt "Hier hilft C++ weiter" gestolpert (ob bei Python oder auch bei Julia)
In Sachen Julia erstaunt mich das. War Julia nicht mal mit dem Anspruch angetreten, ähnlich schnellen Code wie C++ erzielen zu können? Und C Funktionen direkt aufrufen zu können?
Die Belohnung ist ein absolut effizienter Code.
Geschwindigkeitsmäßig ist C++-Code der Benchmark, an dem alle anderen sich messen. Wenn man in einer anderen Sprache X -die nicht C/C++ ist- eine Routine/Funktion für R schreibt, dann kann man in C++ eben nur diese eine Funktion übersetzen. In anderen compilierten Sprachen muss immer noch mindestens der garbage collector mit übergeben werden, was für große Programme kein Ding, für eine einfache Funktion halt ineffizient ist.
In der Nische "Systemprogrammierung ohne garbage collector" stehen C/C++ auch weitgehend allein ohne nennenswerte Konkurrenz. Spontan fällt mir nur Rust als nennenswerte Konkurrenz ein und das ist noch zu jung und zu sehr in der Weiterentwicklung, um schon wirklich konkurrenzfähig zu sein. Persönlich stecke ich große Hoffnung in Rust, das bei vergleichbarer Performance weniger "gefährlich" für Normalnutzer sein sollte. Was man wohl tun müsste, um Dirk Eddenbüttel zu überreden, dass er ein RCpp vergleichbares Interface für Rust schreibt? :roll:

C++ hat eine steilere Lernkurve als manch andere Programmiersprache. Die gemachten Erfahrungen und Kenntnisse helfen dann auch bei anderen Programmiersprachen weiter.
Es ist klar, ich werden natürlich nicht alles mit C++ erledigen, ...

Hab mich vor zwei Jahren mit einem Ingenieur von der TU Dresden unterhalten der sagte, dass sein Vorgesetzter Juniorprofessor immer C++ für alles nimmt. Auch das ist also nicht nur möglich, sondern wird auch praktiziert. Mit NestedVM kann man sogar die Java Maschine in C++ programmieren und mit wasm wird auch schon der Weg bereitet, C++ im Browser laufen zu lassen. :geek:

Ich glaub trotzdem, dass C++ eine gute zweite oder dritte Programmiersprache ist. :mrgreen:

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1436
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Programmieren und Psychologie

Beitrag von EDi »

Ich würde vermutlich python nehmen - weit verbreiten, universell und recht zugänglich. Oft das backend von web-applictionen (die dann in JS geschrieben sind).

Wenn ich deine Beschreibung aber so lese, erinnert mich das aber eher an agiles Projektmanagement was du anstrebst?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
rotezora
Beiträge: 10
Registriert: Fr Apr 19, 2019 10:16 am

Re: Programmieren und Psychologie

Beitrag von rotezora »

Hallo in die Runde und Entschuldigung für die verzögerte Rückmeldung, das ist gerade super viel Input und ich muss erst einmal hinterher kommen!

Vielen Dank für den Input von euch!!

EDi du hast etwas angesprochen, wo ich auch schon langsam auf die Schliche kam. Und zwar ein ähnlicher Bereich, nämlich UX. Das schaue ich mir gerade genauer an. Das ist nicht gleich agiles Coaching, aber auch ein "Zwischenbereich". Ich denke, dass ich aber immer noch nicht nah genug an der Technik wäre, ich möchte ja gerne mit entwicklen und gestalten und nicht "nur reden". UX könnte die Lösung sein, es gibt einen kostenlosen 7-Tages-Kurs, den ich belegen kann, um eine Idee zu bekommen. Nebenher kann ich immer noch für mich Programmieren lernen und mir JavaScript aneignen.

Mir ist es eben wichtig, wirklich auch mit der Technik in Berührung zu kommen, oder sie zumindest tiefer verstehen. Das weniger in Sachen Web, wie ich zunächst dachte, sondern eher auf Software/Server/Datenbanken/Apps bezogen. Also denke ich, dass wenn ich nun mit einem Kurs starte z.B. in UX oder MySQL einen relativen raschen Einstieg in die Tech-Welt bekommen kann und dann nebenher noch Sprachen dazulernen kann.
bigben
Beiträge: 2172
Registriert: Mi Okt 12, 2016 9:09 am

Re: Programmieren und Psychologie

Beitrag von bigben »

Hi!

Also EDis Vorschlag Python könnte ich mich glatt anschließen, hatte ich auch in meinem ersten Post schon auf der Shortlist. Ich möchte aber doch noch einen weiteren Kandidaten ins Rennen schicken, der vielleicht nicht ganz so offensichtlich Mainstream ist: Go. :o :shock: In Abgrenzung von einem beliebten asiatischen Brettspielt und einem noch beliebteren englischen Verb auch Golang ("Go" language) genannt: https://golang.org/

Die Argumentation hinter diesem Vorschlag: Wenn Du Userinterfaces studieren willst und Dich mit Datenbanken beschäftigen und etwas über die Hintergründe des Netzes lernen willst, dann sind das ziemlich viele Dinge auf einmal, die Du Dir vorgenommen hast. Was Du vor allem nicht brauchst, ist dazu noch eine möglichst umfangreiche und komplizierte Sprache. Du brauchst vor allem Einfachheit und leichte Erlernbarkeit, gleichzeitig eine aktuelle Sprache, die nicht an den Anforderungen des frühen 20. sondern des frühen 21. Jahrhunderts orientiert ist. Und genau dafür wurde Go entwickelt. Nicht um die eleganteste, expressivste, tollste und nerdigste Sprache zu sein, sondern um einfach und schnell erlernbar zu sein und ein ganzes Team von Programmierern rasch auf Produktionsniveau zu bringen. Und wo hat man sich überlegt, dass eine einfach und schnell erlernbare Sprache mit einem schnellen Compiler auf moderne Probleme der Nebenläufigkeit gebraucht wird und wer hat sie dann entwickelt? Die Antwort lautet Google. Damit steht Go auf ziemlich breiten Schultern.

https://golangr.com/about-go/ schreibt:
Big and notable companies are known to be using the Go language, including Google, Dropbox, Docker, Medium, Heroku, Lyft, and Uber to name a few.
Deine erste Programmiersprache wird nicht Deine letzte sein, Go gilt hier als etwas langweilig aber verlässlich, also genau das, was man als Anfänger braucht. Der Compiler ist kostenlos, auf der oben verlinkten Homepage der Sprache gibt es Links zu Tutorials (beispielsweise, wie man MySQL mit Go verbindet), es gibt reichlich Videos bei Youtube und Amazon hat mehrere Titel für kleines Geld. Ich selbst habe noch gar keine Erfahrung damit gesammelt, kann also nur Hörensagen berichten, dafür bin ich aber auch sicher kein Fanboy. :D

Also das wäre meine Alternative zu Python, welches dadurch nicht schlechter wird, dass es auch interessante Alternativen gibt. Mit irgendwas musst Du halt anfangen und wenn es dann gar nicht passt, bist Du damit ja nicht verheiratet.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
rotezora
Beiträge: 10
Registriert: Fr Apr 19, 2019 10:16 am

Re: Programmieren und Psychologie

Beitrag von rotezora »

Hi :)

Oh wow, es gibt einfach immer noch etwas Neues zu finde. Siehe da, Go von Google :D Ich bin Fan :mrgreen: Und warum ich einfach kein Python-Fan werde, ich weiß es nicht... Wie du auch feststellst, irgendwo zu starten ist das Wichtige und mit der Zeit, wenn ich mehr Wissen habe, kann ich mich auch genauer platzieren.

Die Argumentation hinter diesem Vorschlag: Wenn Du Userinterfaces studieren willst und Dich mit Datenbanken beschäftigen und etwas über die Hintergründe des Netzes lernen willst, dann sind das ziemlich viele Dinge auf einmal, die Du Dir vorgenommen hast. Was Du vor allem nicht brauchst, ist dazu noch eine möglichst umfangreiche und komplizierte Sprache. Du brauchst vor allem Einfachheit und leichte Erlernbarkeit, gleichzeitig eine aktuelle Sprache, die nicht an den Anforderungen des frühen 20. sondern des frühen 21. Jahrhunderts orientiert ist.Und genau dafür wurde Go entwickelt.
Danke, Bernhard!
bigben
Beiträge: 2172
Registriert: Mi Okt 12, 2016 9:09 am

Re: Programmieren und Psychologie

Beitrag von bigben »

Damit neigt sich dieser Thread wohl seinem Ende zu und da er weder was mit R noch was mit Statistik zu tun hat, habe ich ihn mal ins Off topic-Forum verschoben.
Ich würde mich freuen, wenn Du Dich irgendwann in nicht allzuferner Zukunft nochmal melden würdest um zu berichten, wie es mit dem Plan weiter gegangen ist.
Ach ja, und wenn Du ein hübsches kleines Programmierprojekt brauchst, das ein real world-Problem angeht aber durch und durch anfängertauglich ist: Dein Mit-Psychologe Studentpsych hätte hier ein Problem, das sich mit Go recht einfach umsetzen lassen sollte ohne trivial zu sein: viewtopic.php?f=11&t=3137 wie man ein CSV liest, dafür gibt es Rezepte und das Heraussuchen der richtigen Daten und das Berechnen von neuen Zahlenserien und Durchschnitten etc. ergibt bestimmt klasse Übungsmaterial beim Einüben von for-Schleifen. Nur mal so als Idee für ein bisschen Empowerment damit Du bald merkst, wie die Problemlösungskompetenz durch eine Programmiersprache steigt. :D

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1436
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Programmieren und Psychologie

Beitrag von EDi »

go wäre an zweiter Stelle bei mir gekommen ;)

Allerdings sehe ich go eher im backend als im frontend / UX.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten