Raspberry Pi: Einstieg in die Programmierwelt

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe RPi-Community,

    ich spiele schon seit geraumer Zeit mit dem Gedanken, in die Welt der Informatik einzusteigen.

    Nur: Ich bin etwas skeptisch in Betracht dessen, wie ich überhaupt anfangen soll. Bitte seid mir nicht böse, falls sich die eigentliche Kernfrage womöglich wiederholt, nun gibt es aber so viele Webseiten im Netz, die alle etwas Anderes behaupten. Das verwirrt mich total. Darum würde ich es wirklich toll finden, wenn ihr mir ein wenig auf die Sprünge helfen könntet.

    Vor einigen Tagen bin ich über den Raspberry Pi gestolpert, der mich sofort fasziniert hat. Nicht nur der Gedanke daran, dass er so billig ist, sondern dass man mithilfe dieses kleinen Gerätes unzählige Möglichkeiten zur Verwirklichung eigener Ideen und Projekte hat. Wahnsinn. Dementsprechend würde ich mir einen anschaffen wollen, um mit dem Programmieren langsam anzufangen. Was könntet ihr mir hier vorschlagen? Wie sollte ich nach dem Kauf vorgehen als absoluter IT-Laie?

    Zu mir: 16-jähriger Junge, der unteranderem an Naturwissenschaften und (Computer-)Technik sehr interessiert ist. Bin zudem mit Photoshop und Windows mehr als vertraut und bastel gerne an meinem Computer oder anderem Zeugs herum. Übrigens, finde Ubuntu grundsätzlich viel besser als Windows, weshalb ich lieber mit diesem Betriebssystem anfangen würde. Hab auch gelesen, dass es sich für Anfänger auch eher empfiehlt. :)

    Natürlich habe ich auch einige Ziele im Sinn, die ich gerne irgendwann erreichen möchte:

    • Erstellen (Skripten) kompletter Webseiten von Nullauf mithilfe von PHP oder Java und dazu geeigneten Programmen (z.B. Photoshop, Dreamweaver)
    • Umsetzung spontaner Ideen und Problemlösung am Computer mithilfe von Programmiersprachen
    • Spieleprogrammierung (ein Bekannter meinte, dass C++ am Besten hierfür geeignet sei, stimmt dies?)
    • Ein wenig Know-How für ein mögliches IT-Studium in einigen Jahren


    Ich weiß, es sind viele Vorsätze für die nächste Zeit, aber ich bin lernbereit und wissenshungrig, d.h. ich weiß schon, was da auf mich zukommt. :D

    Schlussendlich, ich würde mich wirklich freuen, wenn ihr euch die Zeit zum Lesen des Romans da oben nehmen könntet. Hab mir eben wirklich meine Daumen am Smartphone zu Tode getippt, weil ich momentan noch im Urlaub bin. Ich freue mich wirklich über alle Antworten! :)


    Sommerliche Grüße
    Chris

    Einmal editiert, zuletzt von Crexsus (16. Juli 2013 um 18:57)

  • Anbei was mir so dazu einfällt:

    1) Alles was Du auf der Pi machen willst kannst Du auch auf einem Ubuntu Rechner machen. D.h. allein dazu brauchst Du keine Pi.
    2) Wenn Du allerdings irgendwelche Projekte durchführen willst (Siehe Projekt Forum) geht das nur mit der kleinen Pi.
    3) Ausserdem bietet die Pi auch diverse Möglichkeiten externe Geräte zu steuen und das wird gerne von Leuten gemacht, die mit einem Lötkolben umgehen können.
    4) Die Fähigkeiten der Pi sind begrenzt - speziell auch wenn Du über ein GUI arbeiten willst (z.B. IDEs benutzen). Da ist ein größerer Rechner besser.
    5) Die Pi ist ein abgeschotteter Bereich und Du vermurkst nicht Dein Ubuntu falls mal was schiefgeht. Allerdings kann man dazu auch VMs unter Ubuntu laufen lassen (KVM, VMware, VirtualBox, ...) und unter Windows mit HyperV

    • Offizieller Beitrag

    Ich als Lesebegeisteter, mag einen solchen langen und ausführlichen Post, auch wenn er primär nix mit dem Pi zu tun hat.

    Jeder Programmieranfänger steht vor dem selben Problem: Ich will, aber wie? Das was man benötigt ist ein persönliches Projekt, was einen bei der Stange hält. Etwas, was für andere total lapidar sein kann aber einem selber einen persönlichen Benefit bringt. Dafür ist der Pi mehr als geeignet. Ob es nun das Blinken einer LED, das Aktivieren einer Funksteckdose oder das Betreiben eines Servomotors ist. Programmieren kannst du auf jedem System lernen, der Pi hat den Vorteil das man für wenig Geld "Anbauteile" kriegt (Bewegungssensoren, LED's, Displays etc)

    Finde etwas was dich begeistert, etwas was dich (notfalls) stundenlang vor den Computer fesselt, egal ob es schon 1000 mal gemacht und dokumentiert wurde. Dein Weg ist der Richtige.

    Dabei ist die Programmiersprache erst einmal nebensächlich. Die Logik ist immer die selbe.
    Natürlich hat jeder Programmierer hier seine Lieblingssprache, meine ist Python und ich empfehle sie auch uneingeschränkt. Die Vorteile liegen (für mich) auf der Hand: viele Bibliotheken, klare Syntax, zwang zur Struktur, multi-Plattform.
    Seltsamerweise will jeder 2. Spiele programmieren...aber wer will das nicht....mit seinem 3D gerenderten Recken die Mächte des Bösen besiegen...... ;)
    Ehrlich, vergiss es....für den Anfang. Ein hohes Ziel ist immer ein Ansporn, ein zu hohes ist demotivierend.

    Ansonsten, kann ich moch framp nur anschliessen, mittels VM's kannst du testen, probieren, zerstören, wieder aufbauen ohne wirklichen Schaden zu verursachen

  • Spieleprogrammierung (ein Bekannter meinte, dass C++ am Besten hierfür geeignet sei, stimmt dies?)
    Tu dir selbst einen gefallen und fange nicht mit C++ an, Python oder Java sind für Anfänger besser. Spiele kann man damit auch machen. (Bei einem Spiel kommt es eigentlich auch mehr auf eine Idee an als auf die Sprache, es sein du möchtest einen 3D-Shooter machen)

    Ein wenig Know-How für ein mögliches IT-Studium in einigen Jahren
    Im Studium beginnt man meistens mit Java.

  • C++ ist eine eher schwierige Sprache. Die Fehlermeldungen beim Kompilieren sind oft überhaupt nicht Aussagekräftig. Dies gilt besonders wenn man Bibliotheken benutzt. Auch ist das Konzept von Pointern für Anfänger schwer zu erlernen. Auch bietet C++ für einen Anfäger zu viel: Macros, Templates, Mehrfachvererbung, ... Bei all diesen Sachen verliert man leicht den Überblick, vorallen wenn man dann im Internet einen Quellcode findet der Sprachkonstrukte benutzt die man selbst nicht kennt.

  • Wow, vielen lieben Dank für all die aufschlussreichen Antworten!

    Ich denke, dass ich mich die nächste Zeit mit Python auseinandersetzen werde, habe auch schon zwei Bücher im Visier (wen's interessiert: "Einstieg in Python: Ideal für Programmieranfänger geeignet" - Galileo Computing, "Programmieren lernen mit Python" - Allen B. Downey). Hierbei bleibe ich vorerst beim Deutschen, wobei ja die internationale Sprache in dem Bereich Englisch ist. Gibt sicher auch tolle englische Handbücher zu Python und auch all den anderen Programmiersprachen. Für den Anfang sollten die Beiden aber eigentlich reichen.

    Sollte ich den Pi eigentlich schon vor dem ganzen Lernen anschaffen oder erst nachdem ich schon einige Grundlagen draufhabe? Prinzipiell könnte ich auch an einem normalen Rechner arbeiten, aber ich habe das Gefühl, dass die Arbeit auf dem Pi mehr als doppelt so spaßig sein wird. Wie seht ihr es? :D

    Eine letzte Frage habe ich aber noch: Wie schwer ist es, eine neue Sprache zu erlernen, nachdem man schon eine kann? In meinem Fall würde ich mich gerne irgendwann auch an C++ (Spieleprogrammierung) und PHP (Webdesign) ranwagen. Inwiefen ähneln sich hier alle Sprachen?


    Liebe Grüße
    Chris

    Einmal editiert, zuletzt von Crexsus (17. Juli 2013 um 21:56)

    • Offizieller Beitrag

    Dann werf ich mal a byte of python als Buchtip in den Raum (gibts auch in deutsch ;) ) Wie ich geschrieben habe, mit einem Projekt ist man morivierter. Wie schwer dir der Wechsel auf eine andere Sprache fällt kann dir hier keiner sagen. Lern erst mal eine und sieh dann weiter.

  • C++ ist ein Superset von C und erlaubt als wesentlichen Unterschied zusätzlich objectorientiert zu programmieren. C wie auch viele andere Sprachen ist eine reine funktionale Sprache.

    Es hat sich gezeigt dass objectorientierte Sprachen diverse Vorteile gegenüber rein funktionalen Sprachen haben. Nicht umsonst wurde in ursprünglich funktionale Sprachen wie C und Perl die Objectorientierunsfähigkeit nachträglich mehr oder weniger gut eingebaut.

    Deshalb empfehle ich sofort mit einer objectorientierten Sprache anzufangen damit Du das objectorientierte Paradigma kennenlernst und verinnerlichst. Viele Programmierer haben - aufgewachsen mit funktionalen Programmiersprachen, ziemliche Probleme auf objectorientierte Sprachen umzusteigen.

    Eigentlich wäre Smalltalk dazu die richtige Sprache. Die ist aber leider nicht mehr sehr verbreitet. Deshalb würde ich mit Java oder Python anfangen und bei Python sofort auf OO (objectorientierte) Konstrukte achten und die nutzen, denn auch in Python kann man leider auch nur funktional programmieren. Bei Java wirst Du sehr viel eher mit OO Konzepten konfrontiert. Allerdings ist Java eine Compilersprache die verschiedene Dinge komplizierter machen. C++ ist C mit Oberbau für OO und hat ziemlich hässliche syntaktische und semantische Spitzfindigkeiten, die einem Einsteiger nur Probleme bereiten. Du bist dann mehr damit beschäftigt syntaktische und semantische Probleme zu lösen als eine eigentliche Aufgabenstellung. Zum Einsteigen würde ich die Finger von C++ lassen.

    • Offizieller Beitrag

    du sprichst mir aus der seele framp, selbst nach all den Jahren Programmieren die ich nun hinter mir habe, werd ich mit OO nicht wirklich warm und muss mich jedes mal auf neue dazu zwingen ;).

    Also wenn programmieren, dann fang gleich mit dem OO Paradigma an.

  • @Lernen weiterer Sprachen:
    Vieles ist in vielen Sprachen nahezugleich - im Detail (der Syntax) liegen die unterschiede - aber das kann man dann sehr flott lernen

    @Welche Sprache
    Der Vorschlag Python ist finde ich auch ein sehr guter Ansatz. Ich studier selbst Informatik und wir haben in den ersten 2 Semestern mit C# angefangen, und nun im Rahmen eines Seminars unteranderem auch mit Python gearbeitet. Meiner Meinung nach hätte Python auch gut einen Platz im ersten Semester gehabt :P
    Soweit ich weiß, ist das bei uns mittlerweile sogar teils der Fall, da man bei uns im ersten Semster ein Hard- und Software-Projekt hat, dass mit einem RPi realisiert wird.

    Zum Lernen als kompletter Anfänger (und ggf um dein Englisch in Schuss zu bringen ;) ) empfehle ich Codecadamy.com - dort hast du ein sehr langes Python-Tutorial, was alle grundlegenden Bereiche abdeckt . Bücher sind nie verkehrt, aber bevor du dafür Geld ausgibst, guck dir das an, oder eines der anderen vielzähligen Tuts im Internet

  • Danke für die Antworten.

    Ich habe mich gestern mal auf Codecadamy.com durch die Python-Syntax durchgearbeitet und muss sagen - wow, sehr klare Syntax im Vergleich zu anderen Sprachen. Am Beispiel "Hello World" erkennt man es wohl am Besten. Schlichtweg

    print "Hello World" (Python)

    ist im Vergleich zu z.B. Java mit

    public class HelloWorld
    {
    public static void main (String[] args)
    {
    System.out.println("Hello World");
    }
    }

    schon ein deutlicher Augenschmaus.

    Aber ist Python wirklich besser für den Anfang mit dem Pi und für die Zukunft geeignet? Wenn ich auch einmal größere Programme schreiben möchte? Habe mich mal aus Neugier informiert, wie der Stand der Dinge auf dem Arbeitsmarkt aussieht. Wieviele Jobangebote Java-Developer erhalten im Vergleich zu den Developern, die Python als ihre Programmiersprache sehen... die Differenz ist gewaltig! Da würd ich mich als jemand, der mit Python arbeitet total benachteiligt fühlen.

    Natürlich ist die Sprache für den Anfang irrelevant. Aber wenn ich eine lerne, dann auch mit gutem Gewissen, später in der Berufswahl nicht benachteiligt zu sein (mal abgesehen vom Programmieren als Hobby).

    Einmal editiert, zuletzt von Crexsus (19. Juli 2013 um 22:10)

  • Mach dir darüber keine Sorgen.

    Weisst du was gefragt ist wenn einen Job suchst?

    Es ist wichtiger die Konzepte hinter den Sprachen zu verstehen.

    Ich selbst habe mit Delphi angefangen. Das nutzen heute sehr wenige Leute. Dennoch verspüre ich auch kein bedauern mit Delphi und nicht mit Java angefangen zu haben. Java habe ich später auch gelernt und ich persöhnlich mag es. Geld verdiene ich derzeit (neben dem Studium) allerdings mit SQL.

    Mein Rat: Python ist für den Anfang nicht schlecht. Und das Ganze "Welche Sprache soll ich nehmen?" ist viel zu überbewertet.

  • Moin ...

    ich halte ebenfalls die Sprache in der Tat sekundär.
    Vielleicht ein bisschen zum Hintergrund: ich hab vor vielen Jahren als Admin für UNIX-Systeme, danach als Entwickler mit C in der Qualitätssicherung mit SINIX gearbeitet und nebenbei mit Microassembler und C auf den ersten PCs angefangen zu programmieren.
    Grundlage war damals eine mehrjährige Ausbildung zum Technik-Informatiker (gibts heut nicht mehr) - so ein Zwischending zwischen Techniker und Informatiker. Auch in diese Ausbildung wurde neben Mainframes ausschliesslich auf Assembler und C auf x86 Basis gesetzt.
    Nach drei Jahren bei Nixdorf habe ich mich dann als freiberuflicher Systemberater und Entwickler selbstständig gemacht.

    Ich muss sagen, ich habe es nie bereut und bin heute noch begeisterter Assembler- und eingefleischter C-Fan.

    Ich hab in den letzten Jahrzehnten alles mögliche und unmögliche ausprobiert, was so an Programmiersprachen exisitiert und bin nach un nach daran auch ein Stück gewachsen.
    Basic, Java, C++ von Lattice bis Borland, C# usw. oder Script-Sprachen wie TCL/TK, PHP ... ich hab mir einiges angeschaut, mein Herz - wenn man es so nennen mag - hängt aber nach wie vor an C und Assembler und mein Betriebssystem ist und bleibt Unix/Linux, obwohl ich auch da schon so einiges einsetzen musste oder ausprobiert habe.

    Der Vorteil von Hochsprachen wie C++/C# oder Script-Sprachen wie tcl/tk, Python oder PHP liegt meiner Meinung darin, dass sie relativ logisch aufgebaut und m.E. auch eher leicht erlernbar sind.
    Der objektorientierte Ansatz hat imho mittlerweile auch seine Daseinsberechtigung, obwohl dadurch die Programme "unnötig" aufgebläht und teilweise unleserlich werden.
    BTW: man kann auch in C ansatzweise objektorientiert programmieren, ohne c++ zu verwenden ... aber das nur am Rande.

    Der Nachteil solcher Sprachen liegt m.E. unter anderem darin, dass sie gerne zu einem "schlampigen" Programmierstil verführen.
    den zweiten Nachteil, den ich sehe, ist, dass man schnell die Hardware aus dem Auge verliert. Im Grunde genommen beschäftigt man sich imho als Entwickler ausschliesslich mit der Lösung eines Problems, ohne im Auge zu behalten, ob die darunter liegende Hardware überhaupt für meine Anforderungen ausreicht.
    Das Ergebnis sieht man in der Entwicklung der letzten Jahre - die Rechner brauchten immer leistungsfähigere Prozessoren, mehr Speicher, grössere Platten ... obwohl - das ist allerdings jetzt meine Theorie und muss nicht unbedingt den Tatsachen entsprechen - die meisten Benutzer auch nicht mehr mit ihren PCs und Laptops machen, als zu Zeiten von Windows 3.11 (Ausnahme vllt. DVDs und MP3s).

    Doch zurück zu den Sprachen: ich plädiere in der Regel dazu, eher eine hardware-nahe Sprache zum Einstieg zu erlernen, allein schon deshalb, um zu verstehen was man da eigentlich tut.
    Ein falsches Byte in Assembler, eine fehlerhafte Anweisung in C - möglichst noch als root ausgeführt - kann da das ganze System lahmlegen. Und da sieht man eher zweimal hin und überlegt schon sehr genau, was man da gerade vorhat.

    Aus meiner Sicht kann man sich dadurch eine solide Verständnis-Grundlage schaffen. Alle anderen Sprachen sind dann nur noch Dialekte, die man dann m.E. ziemlich leicht erlernen kann.

    Ich zumindest habe in jedem neuen Projekt wieder etwas neues gelernt und hatte keine grösseren Probleme, ob es jetzt Datenbank-Anwendungen im TK-Bereich waren, Tests von Netztelementen bei TK-Anbietern, Firmware für DSL-Router oder Kernel-Treiber für UNIX-Systeme.

    Allerdings muss aus meiner Sicht immer eines vorhanden sein: Spass an der Software-Entwicklung.
    Es nutzt imho nichts, wenn Du jetzt - wegen der Karriereaussicht - irgendeine Trend-Programmiersprache lernst.
    Such Dir eine Sprache aus die Dir sympathisch ist, die Dir liegt und bei der Du Freude hast, wenn Du damit arbeitest.
    Alles andere wird sich aus meiner Sicht von ganz allein ergeben. Denn wenn Du schon mit Abneigung zu Deinem Arbeitsplatz gehst, wirst Du vielleicht noch ein guter Coder - aber imho niemals ein guter Entwickler und/oder Designer.

    Was jetzt den RPi betrifft, so ist der imho nicht unbedingt die erste Wahl zum Erlernen einer Programmiersprache.
    Allein schon die grottenlahme Compilierung ist m.E. da eher kontraproduktiv, mit Symbolen debuggen ist quälend langsam.
    Um mal was für den RPi zusammen zu basteln, mag das ausreichen, aber zum Lernen, das nebenbei ja auch ein wenig Spass machen soll, ist er sicher nicht die Plattform.

    Ich für meinen Teil finde den RPi deshalb so faszinierend, weil er eine für mich gelungene Mischung aus PC und Mikrokontroller ist.

    Der Trend könnte in den nächsten Jahren und Jahrzehnten eher in Richtung verteilter, kleiner Rechner gehen. Irgendwie habe ich das Gefühl, dass die Leute lieber Smartphone und Tablet nutzen als Laptop oder gar PC.
    So gesehen ist der RPi vermutlich ein guter Einstieg, aber - wie schon gesagt - nicht unbedingt eine Entwicklungs-Maschine.

    So, Schluss ...
    genug gelabert ...

    Schönen Abend noch und viele Grüsse aus einer süddeutschen Tropennacht,
    -ds-

    Kleine Bemerkung am Rande vielleicht noch: es ist mir nie passiert, dass ich bei einer Auftragsbewerbung abgelehnt wurde, nur weil ich gesagt habe, dass ich C# oder irgendeine Sprache nicht beherrsche.

  • Den letzten Post mag ich auch unterschreiben.
    Ich bin jetzt nicht wirklich alt und ein erfahrener IT-Berater, aber habe schon bei verschiedenen Unternehmen, Forschungseinrichtungen, etc. gearbeitet im Bio/IT-Bereich.

    Welche Sprache du kannst, ist komplett zweitrangig. Du solltest vielleicht in jeden Stil(Funktional, objektorientiert, skriptig) 2-3 Monate richtig gearbeitet haben, aber danach wechselst du Sprachen relativ schnell.

    Natürlich ist ein R-Entwickler mit 5 Jahren Erfahrungen besser als ich, aber bei den meisten Sprachen geht es nur um ein bisschen Syntax lernen.
    C am Anfang halte ich für schwierig, es bedarf einfach mehr Denkaufwand aber je nachdem in welchem Bereich du arbeiten wirst, wirst du es auch in den nächsten X Jahren noch können müssen.
    Die meisten Anwendungen kannst du vermutlich in jeder Sprache schreiben, aber wenn du halt merkst, dass die Speicherverwaltung ab 8 GB und vielen 30+ Cores in Python bescheiden ist, dann wünscht du dir halt C, schnaufst durch und springst in das Becken.

    Nach einigen schmerzhaften Tagen lief mein Code in 3 GB RAM auf 8 Cores um den Faktor 10x schneller, spaß macht C schreiben trotzdem (mir) nicht.

    Python hat für Anfänger den großen Vorteil (ich sehs immer wieder bei Kollegen)
    Es ist laufender Pseudocode --> du überlegst dir was --> es läuft.

    Das einzigste was ich wirklich nicht empfehlen würde (und jetzt hauen mich die Mathekollegen): fasse nichts funktionales (Erlang, Haskell,...) an bevor du es nicht wirklich brauchst.
    Nicht mal zum Spaß ;)


    • Erstellen (Skripten) kompletter Webseiten von Nullauf mithilfe von PHP oder Java und dazu geeigneten Programmen (z.B. Photoshop, Dreamweaver)


    Webseiten mit Java...nix für Anfänger. Das machen die Buisnesskasper.
    Photoshop und Dreamweaver würde ich auch weglassen. Lern ein bisschen html, CSS und nimm dir Vorlagen alla Twitter Bootstrap.

    Einmal editiert, zuletzt von agitase (20. Juli 2013 um 12:27)

  • Welche Programmiersprachen (es wird defintiv nicht eine sein) Du spaeter benutzen wirst haengt ziemlich davon ab in welchem Bereich Du arbeiten wirst. Da Du das aber sicherlich noch nicht weisst solltest Du Dich wie schon gesagt mit einer OO Sprache und einer prozeduralen Sprache vertraut machen. Funktionale Sprachen sind immer noch Exoten (Ausser Du willst an einer Uni bleiben). Bei OO Sprache aber darauf achten auch wirklich OO Konstrukte zu benutzen. Man kann selbst in Java sowie der Mutter aller OO Sprachen, dem Smalltalk, prozedural programmieren. Dann noch jeweils eine Compiler- und eine interpretierte Sprache. Damit kannst Du dann später immer nach Bedarf neue Programmiersprachen lernen, denn die Unterschiede sind dann nur noch zum Grossteil im syntaktischen Bereich. Ergo bist Du mit Java und Python gut gerüstet.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!