PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geeignete Programmiersprache für meine Bedürfnisse *und* ist mein Lernansatz richtig?


Rampage 2
2013-03-02, 16:13:18
Hallo,

Ich will mir ein Bild über das Programmieren machen und suche deswegen die geeignete Sprache dafür. Es sollte eine Sprache sein, die die Welt des Programmierens "in einer Nussschale" zeigt - ich also schnell eine Vorstellung über die positiven (z.B. fähig sein, selber Anwendungen zu schreiben) und negativen Aspekte (z.B. Frustrationen beim Arbeiten) des Programmierens bekomme, ohne mich großartig vertiefen müssen. Sie soll also nicht unbedingt einfach sein, sondern mir die richtige Vorstellung über die Natur des Programmierens geben. Ich würde eine Sprache bevorzugen, die eine gute Lernkurve hat und paradigmaunabhängig ist (mit unabhängig meine ich, dass kein Schwerpunkt auf ein bestimmtes Programmierparadigma gelegt wird).

Mir selber fällt da nur Python ein; wäre VisualBasic auch eine Alternative? Aber wie gesagt, ich will erst mal eure Vorschläge hören:)

Und dann wäre da noch was: Ich weiß nicht, ob meine Vorgehensweise richtig ist. Wenn ich etwas unternehme, dann "plane" ich erst, wie ich es schaffen will (zuallererst meistens Brainstorming) - also das Gegenteil von "Learning by doing". Ich gehe also viel mehr theoretisch als praktisch vor (das gilt allgemein für meine Lebensführung und ist nicht nur auf EDV beschränkt). Darüber hinaus bin ich ein Querdenker und habe eine hochassoziative Denkweise, was oft zu Ablenkung, Assoziationsfluten und schließlich im Mindfuck endet - ich versinke in den Details. Würde sich sowas beim Programmieren negativ auswirken?

Thx,

R2

Marscel
2013-03-02, 16:55:33
Ich will mir ein Bild über das Programmieren machen und suche deswegen die geeignete Sprache dafür. Es sollte eine Sprache sein, die die Welt des Programmierens "in einer Nussschale" zeigt - ich also schnell eine Vorstellung über die positiven (z.B. fähig sein, selber Anwendungen zu schreiben) und negativen Aspekte (z.B. Frustrationen beim Arbeiten) des Programmierens bekomme, ohne mich großartig vertiefen müssen. Sie soll also nicht unbedingt einfach sein, sondern mir die richtige Vorstellung über die Natur des Programmierens geben. Ich würde eine Sprache bevorzugen, die eine gute Lernkurve hat und paradigmaunabhängig ist (mit unabhängig meine ich, dass kein Schwerpunkt auf ein bestimmtes Programmierparadigma gelegt wird).

Kommt etwas drauf an, was dich mit "fähig sein, selber Anwendungen zu schreiben" glücklich macht. Wenn du was fensterbasiertes haben willst, hat MSVS mit VB/C#.NET mMn wirklich die kleinsten Hürden und schnellste Erfolgserlebnis. Auf Anhieb Frustiges fällt mir damit aber nichts ein.

Für gezielt Frustiges muss man sich für irgendwas entscheiden: z.B. durch C++-Projekte mit Meta-Templateprogrammierung durchsteigen, ein Open-Source C-Projekt auf Windows zum Kompilieren zu bewegen (ohne Visual Studio), sich Überlegen, wie man PHP besser machen kann... :freak:

Würde sich sowas beim Programmieren negativ auswirken?

Was heißt negativ, wenn du beim Schreiben feststellst, was für Unzulänglichkeiten du dir gerade im Großen wie im Kleinen ausgedacht hast, ist das für die Verständlichkeit und Handhabbarkeit eigentlich nur positiv.

Rampage 2
2013-03-02, 17:46:02
Kommt etwas drauf an, was dich mit "fähig sein, selber Anwendungen zu schreiben" glücklich macht. Wenn du was fensterbasiertes haben willst, hat MSVS mit VB/C#.NET mMn wirklich die kleinsten Hürden und schnellste Erfolgserlebnis. Auf Anhieb Frustiges fällt mir damit aber nichts ein.


Danke fürs Antworten:)

Ich will mich jetzt nicht für fensterbasierte oder 3D-Fullscreen-Anwendungen (etwa Spiele) entscheiden, sondern nur die Grundlagen des Programmierens begreifen - ich gehe mal davon aus, dass bestimmte Regeln und Tatsachen (fürs Programmieren) für jedes Programm (sei es nun ein Webbrowser oder ein Computerspiel) gelten;)

PatkIllA
2013-03-02, 17:52:48
ich verstehe nicht wo drauf du hinaus willst. Zur Natur des Programmieren gehört auch einiges Erfahrung, wenn du wirklich echte Anwendung schreiben willst.
Überhaupt ist die Sprache eh nur ein kleiner Teil. Ein größerer Teil ist das Framework, verfügbare Bibliotheken, Entwicklungsumgebung usw.
Auch die nervigen Dingen, wie Fehler in Fremdcode nachzuvollziehen und beheben oder noch schlimmer nicht nachvollziehbare Fehlermeldungen vom Kunden zu bekommen hat man auch nicht mal eben so ohne sich zu vertiefen.

kennst du etwas von Python oder wie kommst du darauf? ich mag ja einen Compiler und ein Typsystem, dass schon viele Fehler beim kompilieren aufdeckt und es nicht irgendwann zur Laufzeit knallt, wie bei Scriptsprachen üblich.

Ohne Erfahrung kannst du dich noch im Vorfeld eh kaum was brauchbares überlegen. Wenn man sich nach einiger Zeit nochmal anschaut, was man am Anfang geschrieben hat möchte man das sowieso gleich wieder wegschmeißen.
Zur Praxis gehört auch, dass die Anforderungen oft nicht so ganz klar sind.

Rampage 2
2013-03-02, 18:03:37
Überhaupt ist die Sprache eh nur ein kleiner Teil. Ein größerer Teil ist das Framework, verfügbare Bibliotheken, Entwicklungsumgebung usw.
Auch die nervigen Dingen, wie Fehler in Fremdcode nachzuvollziehen und beheben oder noch schlimmer nicht nachvollziehbare Fehlermeldungen vom Kunden zu bekommen hat man auch nicht mal eben so ohne sich zu vertiefen.



Okay, das habe ich jetzt verstanden;)

zu Python: laut Wikipedia wird man bei Python nicht zu einer bestimmten Vorgehensweise gezwungen:)

lumines
2013-03-02, 18:07:48
Die Grundlagen kann man mit nahezu jeder Sprache lernen, daran sollte es nicht scheitern. Protipp: Wenn du die Grundlagen einer Sprache verstanden hast, versuch das alles noch einmal in einer anderen Sprache. Statt Python dann z.B. Java. Einfach so, aus Spaß. Komplexere Sachen, die man sich erst ein bisschen anlesen muss (Objektorientierung, Architekturmuster etc.) werden dich anfangs wohl erstmal nicht interessieren und erfordern doch ein bisschen Zeit, Muse und konkrete Problemstellungen, um die Konzepte auch wirklich zu verinnerlichen.

Mit dieser Seite (http://caliban.mpiz-koeln.mpg.de/perl/index.html) habe ich vor einigen Jahren mal die ersten Schritte gemacht und tatsächlich kann man mit diesen absoluten Basics schon relativ viel anfangen.

Steck dir den Rahmen erstmal bewusst eng, in dem du dich bewegst. Das ist dann vielleicht nicht das, was du dir unter Software vorstellst, aber meiner Erfahrung nach ist es für die meisten Menschen auch nicht notwendig, im größeren Stil programmieren zu können. Ein bisschen vollkommen sprachenunabhängiges, algorithmisches Denken und die Syntax einiger Sprachen lesen zu können, kann dagegen sehr hilfreich sein.

Generell sind interpretierte Programmiersprachen wie Ruby, Perl oder Python aber für den Einstieg schon echt gut. Why’s (Poignant) Guide to Ruby (http://mislav.uniqpath.com/poignant-guide/) könnte dich auch noch interessieren.

PatkIllA
2013-03-02, 18:10:28
Generell sind interpretierte Programmiersprachen wie Ruby, Perl oder Python aber für den Einstieg schon echt gut.Was findest du denn daran so toll.
Als Entwicklungumgebung reicht ein Texteditor und eine Konsole aber sonst?
zu Python: laut Wikipedia wird man bei Python nicht zu einer bestimmten Vorgehensweise gezwungen:)In den meisten Sprachen kannst du dich für mehrere Vorgehensweisen entscheiden. IMO solltest du dich trotzdem für eine Richtung entscheiden. Ich weiß immer noch nicht, was du dir davon versprichst so ans Programmieren lernen ranzu gehen.

maximAL
2013-03-02, 18:12:09
Das klingt so, als sollte da jemand Struktur und Interpretation von Computerprogrammen lesen :smile:

lumines
2013-03-02, 18:21:33
Was findest du denn daran so toll.
Als Entwicklungumgebung reicht ein Texteditor und eine Konsole aber sonst?

Ja, was sonst. Das trifft die Sache doch gut. Warum mehr?

Ich weiß immer noch nicht, was du dir davon versprichst so ans Programmieren lernen ranzu gehen.

Er will einmal kurz eintauchen, seinen Kopf ins Wasser halten. Keine Software für Kunden basteln, mit tausend Abhängigkeiten zu irgendwelchen Third-Party-Bibliotheken mit Datenbankanbindungen über weitere tausend Ecken. Oder so.

Mein Gott, es wird ihm nicht schaden. Am Ende kann er ein bisschen String-Manipulation und hat ein paar nette Tools an der Hand, mit denen er halbwegs umgehen kann. Vielleicht mal etwas hier berechnen, da eine kleine statistische Auswertung. Ein Skript, ein Zweck, genau für eine Aufgabe zugeschnitten. So sieht oft amateurhafte Software für den Eigenbedarf aus. Das ist doch vollkommen legitim.

Monger
2013-03-02, 18:24:10
Es gibt ja echte "Schulsprachen", also Programmiersprachen die klar strukturiert und überschaubar sind. Früher waren das vor allem Pascal und Delphi, für Leute die ein bisschen näher an der Praxis sind dann manchmal VB6. Bei mir im Studium wurde z.B. viel Java gelehrt, weil Java auch tatsächlich eine sehr runde, konsequent formulierte Sprache ist die klar ihrem eigenen Paradigma folgt. Wenn man nicht speziell Windows-spezifisch was machen will, finde ich Java einen guten Einstieg.

Das Problem ist:
Eine Sprache ohne konkreten Zweck ist halt im Endeffekt witzlos. Das ist im Grunde wie mit jeder anderen Sprache: lernt man Französisch am besten aus dem Grammatikbuch, oder im täglichen Gebrauch? Ein "Business English" deckt auch ganz andere Aspekte der Sprache ab als eben der alltägliche Smalltalk, oder der sehr spezifische Sprachschatz auf der Speisekarte. Selbst die Sprache zerfällt also in sich wieder in Unterbereiche, die sich teilweise auch gegenseitig widersprechen. In der Kneipe wirst du für dein akzentfreies Oxford-English eventuell schief angeschaut, umgekehrt wirst du im Job in Probleme geraten wenn du alles zitierst was du in der Kneipe aufgeschnappt hast! ;-)

Andersrum ist der Transfer relativ einfach. Wenn du einmal eine fremde Sprache gelernt hast und sie auch anzuwenden weißt, kannst du andere Sprachen vergleichsweise leicht adaptieren - zumindest für den Bereich in dem du zu Hause bist.

Was ich damit sagen will, ist: wichtiger als die Wahl der Sprache ist die Wahl des Bereichs in dem du sie benutzen möchtest. Willst du Multi-Layer Applikationen schreiben? Server-Client oder klassische Desktop Applikationen? Oder eher Apps und Tools für den Eigenbedarf?


...
Ich gehe also viel mehr theoretisch als praktisch vor (das gilt allgemein für meine Lebensführung und ist nicht nur auf EDV beschränkt). Darüber hinaus bin ich ein Querdenker und habe eine hochassoziative Denkweise, was oft zu Ablenkung, Assoziationsfluten und schließlich im Mindfuck endet - ich versinke in den Details. Würde sich sowas beim Programmieren negativ auswirken?

Thx,

R2
Hm, geht mir ähnlich. Ich brauch immer erst das ganze Bild, bevor ich wirklich verstehe was ich da tue, und ich damit auch arbeiten kann.
Leider gibt es für Menschen wie dich und mich wenig gute Literatur, die meiste richtet sich eher an die "Learning-By-Doing" Gruppe.
Du musst halt sehr stark abstrahieren, du musst der Versuchung widerstehen, immer allen Details gleichzeitig bis zum Ende nachzugehen. Das erfordert viel Übung, und macht die Einstiegshürde relativ hoch. Aber es geht definitiv auch.

PatkIllA
2013-03-02, 18:29:36
Mein Gott, es wird ihm nicht schaden. Am Ende kann er ein bisschen String-Manipulation und hat ein paar nette Tools an der Hand, mit denen er halbwegs umgehen kann. Vielleicht mal etwas hier berechnen, da eine kleine statistische Auswertung. Ein Skript, ein Zweck, genau für eine Aufgabe zugeschnitten. So sieht oft amateurhafte Software für den Eigenbedarf aus. Das ist doch vollkommen legitim.Ich verstehe es aber gerade so, als ob nicht mal schnell ein kleines Problem per Skript lösen will.

Rampage 2
2013-03-02, 18:33:27
Das Problem ist:
Eine Sprache ohne konkreten Zweck ist halt im Endeffekt witzlos. Das ist im Grunde wie mit jeder anderen Sprache: lernt man Französisch am besten aus dem Grammatikbuch, oder im täglichen Gebrauch? Ein "Business English" deckt auch ganz andere Aspekte der Sprache ab als eben der alltägliche Smalltalk, oder der sehr spezifische Sprachschatz auf der Speisekarte. Selbst die Sprache zerfällt also in sich wieder in Unterbereiche, die sich teilweise auch gegenseitig widersprechen. In der Kneipe wirst du für dein akzentfreies Oxford-English eventuell schief angeschaut, umgekehrt wirst du im Job in Probleme geraten wenn du alles zitierst was du in der Kneipe aufgeschnappt hast! ;-)


Das trifft mein Problem aufs Wort! Ich weiß nicht, *was* ich programmieren soll, sondern will nur *wie* - also nur das Programmierenlernen ohne ein bestimmtes Ziel.

Monger
2013-03-02, 18:43:07
Das trifft mein Problem aufs Wort! Ich weiß nicht, *was* ich programmieren soll, sondern will nur *wie* - also nur das Programmierenlernen ohne ein bestimmtes Ziel.
Ja, und das ist eben ein Missverständnis. Es gibt kein allgemeines "Programmieren" Talent. Es gibt Schwerpunkte, und sicherlich Grundkenntnisse sowie vertiefende Kenntnisse.

Viele Anfänger pauken brav diese synthetischen Beispiele durch, und sobald es dann mal daran geht etwas eigenes umzusetzen, bleiben sie an tausenden Kleinigkeiten hängen. Genau diese "Kleinigkeiten" machen aber halt den Kern des Programmierens aus, also ein Ziel von A nach B zu verfolgen, und Stück für Stück konsequent alle Hindernisse auszuräumen.

Exxtreme
2013-03-02, 23:12:02
Hallo,

Ich will mir ein Bild über das Programmieren machen und suche deswegen die geeignete Sprache dafür. Es sollte eine Sprache sein, die die Welt des Programmierens "in einer Nussschale" zeigt - ich also schnell eine Vorstellung über die positiven (z.B. fähig sein, selber Anwendungen zu schreiben) und negativen Aspekte (z.B. Frustrationen beim Arbeiten) des Programmierens bekomme, ohne mich großartig vertiefen müssen. Sie soll also nicht unbedingt einfach sein, sondern mir die richtige Vorstellung über die Natur des Programmierens geben. Ich würde eine Sprache bevorzugen, die eine gute Lernkurve hat und paradigmaunabhängig ist (mit unabhängig meine ich, dass kein Schwerpunkt auf ein bestimmtes Programmierparadigma gelegt wird).



Meine Meinung:

Wenn man nah an der tatsächlichen Funktionsweise des Computers agieren will dann was Prozedurales nehmen: also C oder Pascal. Der Vorteil ist, man bekommt ein gutes Gefühl dafür wie ein Computer die Programme tatsächlich abarbeitet. Nachteil: man ist bei größeren Dingen nicht sehr produktiv, hat viele lines of code und muss schon sehr aufpassen um keine Bugs einzubauen. Man kann sich sehr gekonnt ins Knie schießen.


Das recht genaue Gegenteil sind Skript-Sprachen wie Python, Perl oder Ruby. Sie schirmen die Funktionsweise des Computers schon sehr stark vom Programmierer ab. Ich empfehle sie aber nicht zum Lernen. Man hat zwar schnell Programme erstellt, die auch starten. Nur sind diese Programmiersprachen ziemlich wischiwaschi und man hat schnell Bugs drinne, die erst zur Laufzeit des Programms offensichtlich werden. Für kleine Sachen OK, für große IMHO nicht.

Stattdessen würde ich Java/Scala oder halt die .NET-Sachen wie Visual Basic.NET oder C# empfehlen. Auch hier wird zwar der Computer abgeschirmt nur braucht man trotzdem einiges an Disziplin damit sich das Programm auch übersetzen lässt.

Zwischen diesen Extremen gibt es noch C++ und Object Pascal. Näher an der Hardware aber trotzdem durch Objektorientierung die Funktionsweise abstrahierend zugunsten der Produktivität.

Rampage 2
2013-03-03, 15:45:02
Das recht genaue Gegenteil sind Skript-Sprachen wie Python, Perl oder Ruby. Sie schirmen die Funktionsweise des Computers schon sehr stark vom Programmierer ab. Ich empfehle sie aber nicht zum Lernen. Man hat zwar schnell Programme erstellt, die auch starten. Nur sind diese Programmiersprachen ziemlich wischiwaschi und man hat schnell Bugs drinne, die erst zur Laufzeit des Programms offensichtlich werden. Für kleine Sachen OK, für große IMHO nicht.

Stattdessen würde ich Java/Scala oder halt die .NET-Sachen wie Visual Basic.NET oder C# empfehlen. Auch hier wird zwar der Computer abgeschirmt nur braucht man trotzdem einiges an Disziplin damit sich das Programm auch übersetzen lässt.


Also mit VB.NET werde ich wohl sowieso früher oder später arbeiten - um danach direkt auf C++ umzusteigen.

Die Sache mit Python ist halt, dass ich erstmal schnell die Vor- und Nachteile des Programmierens sehen will (um zu wissen, ob das Programmieren überhaupt für mich/mein Nervenkostüm geeignet ist). Ich wollte auch eigentlich gleich mit VB.NET anfangen, habe mich dann aber doch dazu entschieden, eine Sprache zu suchen, die einfacher ist und eine bessere Lernkurve hat. Letztlich kommt noch der Umstand hinzu, dass man bei Python seine Vorgehensweise selber definieren kann (zumindest verglichen mit anderen Programmiersprachen, laut Wikipedia).

Dass man mit Python nicht viel machen kann, ist mir bewusst;)

Aber zu Python habe ich auch noch eine andere Frage: Die bekannteste Implementation ist "CPython" - sie ist in der Programmiersprache "C" geschrieben. Das versteh ich jetzt nicht. Muss ich das etwa so verstehen, das über Python die Programmiersprache "C" "emuliert" wird? Dieselbe Frage könnte ich auch über "Jython" stellen - wo Python in Java geschrieben ist.

PatkIllA
2013-03-03, 16:45:15
Also mit VB.NET werde ich wohl sowieso früher oder später arbeiten - um danach direkt auf C++ umzusteigen.Dann nimm gleich eine von den beiden. Vielleicht lieber erst C++, damit dir bewusst ist was da passiert und was noch so alles abstrahiert wird.
Die Sache mit Python ist halt, dass ich erstmal schnell die Vor- und Nachteile des Programmierens sehen will (um zu wissen, ob das Programmieren überhaupt für mich/mein Nervenkostüm geeignet ist).Wenn du das wirklich beruflich machen willst, dann lernst du nicht in ein paar Tagen/Wochen was das bedeutet.
Ich wollte auch eigentlich gleich mit VB.NET anfangen, habe mich dann aber doch dazu entschieden, eine Sprache zu suchen, die einfacher ist und eine bessere Lernkurve hat.VB.NET ist auch nicht wirklich schwierig.
Letztlich kommt noch der Umstand hinzu, dass man bei Python seine Vorgehensweise selber definieren kann (zumindest verglichen mit anderen Programmiersprachen, laut Wikipedia).Da hängst du dich an was auf ohne zu wissen, was das bedeutet. Du wirst am Anfang eh objektorientiert oder prozedural programmieren.
Dass man mit Python nicht viel machen kann, ist mir bewusst;)Du kannst praktisch alles mit Python machen.
Aber zu Python habe ich auch noch eine andere Frage: Die bekannteste Implementation ist "CPython" - sie ist in der Programmiersprache "C" geschrieben. Das versteh ich jetzt nicht. Muss ich das etwa so verstehen, das über Python die Programmiersprache "C" "emuliert" wird? Dieselbe Frage könnte ich auch über "Jython" stellen - wo Python in Java geschrieben ist.Der Interpreter von Python ist ja auch nur wieder ein Programm und das muss man irgendwo mit erstellen.

Exxtreme
2013-03-03, 17:02:16
Also mit VB.NET werde ich wohl sowieso früher oder später arbeiten - um danach direkt auf C++ umzusteigen.
Den Schritt verstehe ich nicht. Ich würde direkt zu C++ gehen wenn das das Ziel sein soll. Oder zu VB.NET. Aber diesen Umweg ... ne, lohnt echt nicht.
Die Sache mit Python ist halt, dass ich erstmal schnell die Vor- und Nachteile des Programmierens sehen will (um zu wissen, ob das Programmieren überhaupt für mich/mein Nervenkostüm geeignet ist). Ich wollte auch eigentlich gleich mit VB.NET anfangen, habe mich dann aber doch dazu entschieden, eine Sprache zu suchen, die einfacher ist und eine bessere Lernkurve hat. Letztlich kommt noch der Umstand hinzu, dass man bei Python seine Vorgehensweise selber definieren kann (zumindest verglichen mit anderen Programmiersprachen, laut Wikipedia).
Python ist nicht einfacher und hat auch keine geringere Lernkurve. Sie ist für bisschen andere Zwecke gedacht als VB.NET. Ist wie beim Traktor und einem Kettcar. Beides hat 4 Räder und man kommt damit von A nach B. Das Wie ist halt entscheidend.

Also wenn das ziel VB.NET oder C++ sein soll dann direkt damit anfangen. Was machst du wenn dir Python nicht zusagt? Dann brichst du ab obwohl VB.NET vielleicht doch besser wäre? Das würdest du niemals erfahren. ;) Man lernt auch nicht zuerst Französisch um zu gucken ob Englisch was Tolles ist.
Dass man mit Python nicht viel machen kann, ist mir bewusst;)

Aber zu Python habe ich auch noch eine andere Frage: Die bekannteste Implementation ist "CPython" - sie ist in der Programmiersprache "C" geschrieben. Das versteh ich jetzt nicht. Muss ich das etwa so verstehen, das über Python die Programmiersprache "C" "emuliert" wird? Dieselbe Frage könnte ich auch über "Jython" stellen - wo Python in Java geschrieben ist.
Mit Python kann man alles machen.

Und was die Implementierungen angeht ... bei CPython ist der Python-Interpreter mit C geschrieben worden. Ein Interpreter ist auch Programm, welches in irgendeiner Sprache geschrieben worden sein muss. Jython hingegen erzeugt Java-Programme.

patermatrix
2013-03-03, 17:17:30
Den Schritt verstehe ich nicht. Ich würde direkt zu C++ gehen wenn das das Ziel sein soll. Oder zu VB.NET. Aber diesen Umweg ... ne, lohnt echt nicht.

Der TE weiss vermutlich nicht, warum er irgendeinen Teil dieser Aussage getätigt hat.

Ich würde nichts anderes als Java nehmen. Alleine schon der Dichte an freien Ressourcen und Hilfestellungen im Internet wegen.

- VB.NET hat eine sehr eigene Syntax, die wenig mit anderen Sprachen gemein hat.
- C# beschränkt ihn auf Windows und ist in Bezug auf Onlineressourcen einiges knapper als Java. Wäre aber klar Tipp #2.
- Python ist eine wunderbare Sprache, zwingt einem aber nicht wirklich zu sauberen Progammen. Zudem werden "fehlende Typen" einen Anfänger wohl überfordern.
- C/C++ bringt ihn gleich wieder vom Programmieren weg.

Das Hauptargument pro Java ist mMn aber definitiv die Fülle an Ressourcen, was ich für einen Anfänger als das wichtigste erachte. Programmieren lernen kann man mit jeder Sprache, aber je leichter einem bei Problemen geholfen wird, desto geringer ist der Anfangsfrust.

RattuS
2013-03-03, 17:51:22
C# hat derweil eine vergleichbar große Community, nicht zuletzt, weil Java immer noch eine Interface-Schlampe ist, die, gerade für Neulinge oder schnelle Projektabschlüsse, unpraktisch ist. Ohne zusätzliches Framework irgendwo unbrauchbar. Das .NET hingegen ist sauber, hervorragend dokumentiert (MSDN sei Dank) und IMO ein besserer Einstieg bei einer vergleichbar engagierten Community.

Was den Threadstarter angeht: Wenn du wirklich die "Programmierung" einsehen willst, wirst du auf maschinennaher Ebene beginnen müssen. Also z.B. ASM, COBOL oder - deinen Anforderungen eher entsprechend - C. Ist dir die Lernkurve zu gering, greif dir eine prozedurale Sprache (Skriptsprachen eignen sich hierfür auch). Vollständig objektorientierte Sprachen verschleiern IMO schon wichtige Erfahrungen in der Programmierung.

PatkIllA
2013-03-03, 17:59:45
Es gibt gefühlt eh keine Frage, die noch nicht auf Stackoverflow beantwortet wurde.
Falls doch hat man ein Problem.

An zu wenig Resourcen wird man als Anfänger in keiner populären Sprache ein Problem bekommen.

Lightning
2013-03-03, 18:12:21
Ich würde mich Exxtreme anschließen und direkt zu C(++) gehen. Er will ja einen generellen Einblick in die Programmier-Welt bekommen. Egal, ob mans jetzt mag oder nicht: Der mit Abstand meiste Code auf diesem Planeten wurde (und wird tlw. immer noch) eben darin geschrieben; dazu ist es hardwarenah und fördert das Verständnis, wie ein Rechner funktioniert. Daher würde ich das als realistischen Einblick bezeichnen.

Grundsätzlich dürften sich aber natürlich auch alle anderen der bekannten prozeduralen oder objekorientierten Sprachen eignen. Das wichtigste ist, dass man auch tatsächlich mal anfängt. ;)

del_4901
2013-03-03, 18:27:41
Die Lernkurve von C++ ist viel zu schlecht, da verliert man zu schnell die Lust weiter zu machen. Und einen Vorteil im Sinne von langzeit Zeiterspaarniss sehe ich da auch nicht. Am Ende muss man als kompetenter Programmierer eh mehrere Sprachen koennen. Von daher eignen sich alle Sprachen der .net Welt sehr gut: C#, VB, F# und viele mehr. Oder auch eine Java/Scala Kombination ist nicht zu verachten. Beide Systeme haben den Vorteil einer grossen und einheitlichen Library wo man schnell zum Ziel kommen kann. Und der ganze super Low-Level kram aendert sich eh alle paar Jahre, wenn er jetzt erst damit anfaengt, dann ist das eh schon wieder veraltet.

pest
2013-03-03, 23:21:00
Lern gleich was Richtiges nämlich C++ inkl. STL

C ist leichter verständlich und rel. kompakt aber wenn man dann auf C++ umsteigt schreibt man so einen Mischcode, weil C++ eben nicht C+Klassen ist.

universaL
2013-03-04, 11:27:44
wenn du nur mal reinschauen willst, finde ich c++, etc als zu komplex :-) dann doch eher sowas wie Python, Ruby, ...

Eine weitere, wohl ganz gute Einführung, die auch die Begriffe wie Methoden, Klassen, etc mit erklärt: http://pine.fm/LearnToProgram/

Gohan
2013-03-04, 12:11:02
Ich schmeiß einfach mal das Buch Head First Programming in den Raum:

http://www.headfirstlabs.com/books/hfprog/

Basierend auf Python 3 wird versucht, dem Leser auf eine erfrischend moderne und lustige Art und Weise das Programmieren zu vermitteln. Vielleicht genau das richtige für Ramgepage. Ich empfehle das Buch auf Englisch zu lesen, weil

a) man um Englisch in dem Beruf sowieso nicht herumkommt und
b) Die Übersetzungen der Serie meist nur halb so lustig sind ;)

Python finde ich gar nicht mal soooooo schlecht, gerade eben weil man hier in viele Richtungen experimentieren kann, was die Paradigmen angeht (Funktional, Objektorientiert usw.) und man mit der interaktiven Konsole sofort sieht, was der eigene Code bewirkt und wie er funktioniert. Außerdem sind Multi-Paradigmen sowieso im Trend ;)

Natürlich ist die Gefahr groß sich dabei einen schlechten Stil anzueignen, weil zu vieles durcheinander geworfen wird, aber da man nicht drumherum können wird auch noch andere Sprachen anzuschauen, gehört dies zum Lernprozess wohl dazu sich klar zu machen, in welcher Sprache was wie am besten umzusetzen ist. Im Anschlus kann man sich dann evtl. noch http://www.headfirstlabs.com/books/hfsd/ (Head first Software Development) antun wenn man gefallen am Programmieren gefunden hat was dann auf die Konzeption, Planung und Aufbau eingeht, als das reine Programmieren.

Und zum Abschluss dann noch http://www.headfirstlabs.com/books/hfdp/ über Design-Patterns, damit man auch sauberen Code produziert und nicht jedes mal das Rad neu erfindet ;)

Das soll jetzt keine Werbung für die Bücher sein, die haben sich aber meiner Erfahrung nach bei den Leuten den ich sie bereits empfohlen habe allgemein bewährt gemacht.

Nagelbrett
2013-03-04, 17:17:33
Der Nachteil daran, mit Python anzufangen, ist, dass man hinterher gar keine Lust mehr hat, auf etwas anderes umzusteigen ;)

Dr.Doom
2013-03-05, 17:13:54
Hallo,

Ich will mir ein Bild über das Programmieren machen und suche deswegen die geeignete Sprache dafür. Es sollte eine Sprache sein, die die Welt des Programmierens "in einer Nussschale" zeigt - ich also schnell eine Vorstellung über die positiven (z.B. fähig sein, selber Anwendungen zu schreiben) und negativen Aspekte (z.B. Frustrationen beim Arbeiten) des Programmierens bekomme, ohne mich großartig vertiefen müssen. Also dann würde ich jedenfalls NICHT irgendwas C-artiges nehmen. Oberflächliches Bild machen vom Programmieren an sich klappt dann mit Python in geringerer Zeit.
Ausserdem lernt man hier auch gleich "vorausschauendes" Programmieren, weil Python so schön voller Konventionen ist, an die man sich halten kann, aber nicht muss (haha, ich ändere einfach den Wert der Variablen, die jemand in Grossbuchstaben geschrieben hat. Halt mich doch auf... :tongue: ).

pest
2013-03-05, 20:28:25
Pythons fehlende Typüberprüfung (oder wie immer man das nennt, dass Variablen ihen yp ändern je nachdem was ich damit mache) hat mich in den Wahnsinn getrieben.

Klar man kann praktisch wie mit R oder Mathematica arbeiten aber mir war das Nichts.

Nagelbrett
2013-03-05, 20:38:05
Variablen ändern in Python eigentlich nicht ihren Typ, je nachdem was man damit macht. Du kannst z. B. keinen String mit einem Int konkatenieren ohne explizite Umwandlung. In der Beziehung ist Python also schon eher strongly typed ;)
Was du wohl meinst ist, dass man die Namen beliebig mit neuen Variablen anderer Typen belegen kann.

pest
2013-03-05, 20:41:46
Es hatte irgendwas mit numpy und den arrays zu tun. Ist schon ein paar Jahre her. Ich weiß nur, dass ich ewig gebraucht habe, bis ich festgestellt habe, dass in dem array keine floats mehr drin sind mit denen ich rechnen kann. was weiß ich, ich debugge sonst kaum

was auch nervig war dass die schleifenvariable idealerweise "_" ist. wer denkt sich sowas aus

Nagelbrett
2013-03-05, 20:47:36
was auch nervig war dass die schleifenvariable idealerweise "_" ist. wer denkt sich sowas aus
Huh? "_" verwendet man eigentlich nur bei tuple unpacking, wenn man einen der Werte nicht braucht. Also z. B. "for _, bla in ListOfTuples". Eine besondere Bedeutung hat das aber nicht und man könnte auch irgendwas anderes hinschreiben.

pest
2013-03-05, 22:13:59
wenn der inhalt der schleife unabhängig von der zählvariablen ist kommt bei beliebiger iteratorvariable außer "_" eine warnung

Nagelbrett
2013-03-05, 22:32:38
Warning? Ich vermute mal, du hast PyDev verwendet? Python selbst wirft keine Warnings :) Das ist reine Konvention, das so zu machen und wird halt von der PyDev Code Analyse so interpretiert (kann man übrigens mit #@UnusedVariable auch abschalten, wenn es einen stört). Aber das wird langsam etwas zu off-topic hier.