Programmierparadigmen lernen

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.
Antworten
Nebelhom
User
Beiträge: 155
Registriert: Mittwoch 19. Mai 2010, 01:31

Freitag 15. Juli 2011, 10:59

Hi,

ich habe mich in letzter Zeit ein bisschen mit anderen Programmiersprachen als Python auseinandergesetzt, weil mir ans Herz gelegt wurde dadurch andere "Programmierkonzepte" besser zu lernen. Der Erfolg war eher verhalten, weil ich programmieren eher nur als Hobby betreibe, und meist nicht weiter als das syntax lernen gekommen bin (aus zeitlichen gruenden). Eine Urlaubsphase kuendigt sich demnaechst an und ich wuerde das gerne in der Zeit nochmal in Angriff nehmen.

Um das ganze zielgerichteter anzugehen, wuerde mich jetzt interessieren, was ihr von dem Statement haltet, dass man Konzepte am besten verbunden mit anderen Sprachen lernt (z. B. Haskell und Functional Programming). Wuerdet ihr da uneingeschraenkt zustimmen oder eher doch nicht.

Falls dem nicht so ist, bin ich ganz Ohr welche Vorschlaege ihr habt.

Ach ja: Zu Erklaerung, mit Konzepten meine ich solche Sachen wie procedural programming, object oriented, functional programming und was es sonst da noch so alles gibt.

EDIT: Ok, Betreff geaendert. Wieder was gelernt :)
Zuletzt geändert von Nebelhom am Freitag 15. Juli 2011, 13:37, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Freitag 15. Juli 2011, 11:19

Deine Konzepte sind eigentlich Paradigmen, Paradigmen sind aus Konzepten zusammengebaut.

Lesenswert: http://www.info.ucl.ac.be/~pvr/paradigms.html
Und das Poster ist einfach super :)

Wenn du ein Zeitproblem hast, halte ich das Vorgehen Paradigmen anhand von Sprachen zu untersuchen/lernen fuer keine besonders gute Idee. Sprachen und ihr Umfeld kennenzulernen ist wertvoll in sich, aber wenn du es auf Paradigmen abgesehen hast, steht erstmal die Sprache im Weg.
An den (gaengigen) Paradigmen ist erstmal nicht viel dran und alle die du aufgezaehlt hast, lassen sich mehr oder weniger mit Python untersuchen. Auch wenn ich dir fuer Funktionale Programmierung eher Scheme ans Herz lege, mit der Syntax ist man schnell durch, kann sich mit Rekursion auseinander setzen und der Schritt zu Makros ist auch nicht weit.
DasIch
User
Beiträge: 2519
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 15. Juli 2011, 13:23

OOP ist - solange du bei populären Sprachen bleibst - ohnehin prozedural, daher macht es nicht viel Sinn sich damit speziell zu beschäftigen.

Ansonsten ist im wesentlichen nur funktionale Programmierung, Logische Programmierung und Konkatenative Programmierung interessant. Wenn man die wirklich lernen will, sollte man eine Programmiersprache lernen die auf dem jeweiligen Paradigma aufgebaut ist also Haskell, Lisp; Prolog und Forth oder Factor.

Funktionale Programmierung lässt sich eigentlich in Python machen allerdings hat man viele Funktionen nicht die bei FP Sprachen built-ins sind, unveränderliche Datenstrukturen fehlen und der Syntax overhead ist etwas problematisch. Konzepte wie Monads oder Makros die essentiell für FP in Haskell bzw. Lisp sind hat man ebenfalls nicht.

Dir sollte klar sein dass diese Themen ziemlich komplex sind und dementsprechend man auch Zeit investieren muss um diese wirklich zu verstehen.
Nebelhom
User
Beiträge: 155
Registriert: Mittwoch 19. Mai 2010, 01:31

Freitag 15. Juli 2011, 13:29

hey danke fuer den link! Genau sowas habe ich mir vorgestellt.

Diese ganzen LISP dialekte hatte ich mir sehr kurz angeschaut, aber nie wirklich reingelesen, weil ich mir nie 100% sicher war, mit welchem ich anfangen sollte. Es gab da wie immer verschiedene Fraktionen, alle sagen ihr dialekt ist besser aus den Gruenden x, y und z.

Wenn in Scheme der Syntax relativ schnell zu lernen ist, dann werde ich mir das mal anschauen ;)

@einen mod: Da ich ja anstatt Konzepten Paradigmen meinte, koennte man da mal den thread titel aendern zu "Programmierparadigmen"? Ich bin mir nicht sicher, ob ich das noch nachtraeglich machen kann...
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Freitag 15. Juli 2011, 13:31

Nebelhorn: das kannst du machen; einfach deinen ersten Beitrag hier editieren.
BlackJack

Freitag 15. Juli 2011, 13:32

@DasIch: Man muss ja nicht bei populären Sprachen bleiben. Sich mal ein Smalltalk, zum Beispiel Pharo, anzuschauen kann den Horizont auch erweitern.

@Nebelhom: Der Titel ist der Betreff des ersten Beitrags im Thread. Das sollte der Autor des ersten Beitrags eigentlich selbst ändern dürfen.
Nebelhom
User
Beiträge: 155
Registriert: Mittwoch 19. Mai 2010, 01:31

Freitag 15. Juli 2011, 13:36

@DasIch: Mir ist das schon bewusst. Deswegen ja der Thread, weil ich endlich mal eine Zeit sehe, zu der ich mir das intensiver anschauen kann, ohne dass mir irgendetwas wieder dazwischen kommt. Deshalb mal kurz hier nachfragen, damit die Zeit auch etwas effektiver genutzt werden kann.

Ich erwarte ja nicht, dass ich ein vielumworbenes Programmiergenie werde, dafuer habe ich den falschen Beruf gewaehlt, sondern dass ich einfach nur mit dem Programmieren etwas vorwaerts komme und man irgendwann einen Unterschied erkennen kann zwischen dem Code den ich am Anfang zusammengeschustert habe und den ich jetzt oder spaeter mal schustere ;)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 15. Juli 2011, 15:09

@Nebelhom: Ebenso wie du bin ich nur ein Hobbyprogrammierer, der sich - sofern es die freie Zeit erlaubt - mit Programmierung beschäftigt. Bei der Beschäftigung mit (für mich) neuen Sprachen ist für mich immer wichtig, wozu ich das lernen will und was ich damit dann anfange.
Inspirierend ist für mich SPOJ, wo ich einerseits haufenweise Programmieraufgaben finde, an denen ich mich abarbeiten kann und andererseits mir die Möglichkeit gegeben wird, dies in vielen Programmiersprachen zu tun. Das hat u.a. zu Abstechern nach Ruby, Lua, D und Pike geführt. Das war alles ganz nett, aber von punktuellen Dingen abgesehen nicht wirklich neu gegenüber dem, was ich aus anderen prozeduralen Sprachen schon kannte. Die Beschäftigung mit Haskell war dagegen ein echter Gewinn, weil Haskell (wie andere funktionale Sprachen vermutlich auch) einen zwingt(!) (und das ist einer der Unterschiede zu den funktionalen Möglichkeiten von Python), Algorithmen "anders" zu implementieren. Das war anfangs ungewohnt und mühselig (ist es manchmal immer noch), aber auch reizvoll.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Donnerstag 21. Juli 2011, 13:42

Wenn es mal eine ganz andere Sprache sein soll, kann ich Factor empfehlen :)

Da ich finde, dass man Programmiersprachen am besten dadurch lernt, dass man sie selbst implementiert, hatte ich hier mal einen Artikel geschrieben, wie man einen einfachen Interpreter für Factor in Python entwirft. Das ist erstaunlich einfach. Da der Text schon etwas veraltet war, sind jetzt die Pferde mit mir durchgegangen und ich habe ich noch mal neu geschrieben und erweitert. Siehe https://gist.github.com/1097091.

Stefan
Antworten