Programmieren lernen

    • Original von Ark
      Original von Stan
      Man sollte die Grundlagen mit einer Sprache wie C lernen (also schleifen etc) [...]
      Man sollte also schon Erfahrung mit Datenstrukturn usw mitbringen ;)

      Da nennst du Dinge, die ich eher nur "zufällig" in einer konkreten Programmiersprache lehren würde. Die eigentlichen Ideen hinter Iterationen, Rekursionen, Folgen, Mengen, verketteten Listen, Bäumen usw. sind eher informationstechnischer Natur und sollten meines Erachtens unabhängig von einer Programmiersprache begriffen/erklärt werden, also mit Stift und Papier. ;)


      Das ist mir schon klar, aber nur ist es IMO besser das ganze gleich in der Syntax einer Programmiersprache zu schreiben, nach dem man es in der Theorie gelernt hat. Klar man kann das ganze mit einer menge "Pseudocode" hinschreiben, aber sehen, was man gemacht hat tut man doch nur mit einer konkreten Programmierprache ;). Und dazu ist C meiner Meinung nach am besten geeignet. Der ganze Aufbau ist einfach und übersichtlich.
      James
      [Blockierte Grafik: http://dl.dropbox.com/u/24753690/stuff/forenlinks/rocketsign.png]
      Team Rocket - so schnell wie das Licht,
      gebt lieber auf und bekämpft uns nicht!

      join #teamrocket @iz-smart.net
    • Jep, C ist eine relativ schöne Sprache für Low-Level Programmierung, da sie relativ klein, simpel und kompakt ist. Das Problem für Anfänger ist meiner Meinung nach allerdings das String-Handling, das in C sehr nervig, aufwändig und fehleranfällig ist, sowie das manuelle Speichermanagement. Man kann sich ja genauso gut am Anfang auf ein Subset von z.B.: Python beschränken - ohne OOP, Metaprogrammierung, ...
      Damit wird man wesentlich schneller als mit C zu sichtbaren Ergebnissen kommen und man wird das Programmieren nicht so leicht aufgeben wie mit C.
    • Was meinst du mit sichtbarem Ergebniss? Meinst du ein Programm mit grafischer Oberfläche? Naja ich weiß nicht ob es mit Phyton einfacher ist als in C, da ich mich noch nie damit befasst habe. Aber eine Grapische oberfläche ist im Prinzip ja nebensache, beim lernen. Später wenn man ein Projekt macht, ist eine Graphische Oberfläche natürlich pflicht, weil es leichter zuhandhaben ist als ein Konsolenprogramm. Und wenn man das Programmieren aufgibt, nur weil man keine schöne Oberfläche hat, dann braucht man IMO gar nicht erst beginnen zu programmieren! Wenn du was anderes meinst, tuts mir leid, aber verrat mir was du meinst ^^

      Ok stimmt das String-Handling ist in C wirklich nicht das gelbe vom Ei!
      James
      [Blockierte Grafik: http://dl.dropbox.com/u/24753690/stuff/forenlinks/rocketsign.png]
      Team Rocket - so schnell wie das Licht,
      gebt lieber auf und bekämpft uns nicht!

      join #teamrocket @iz-smart.net
    • Mal ganz davon abgesehen, dass sich die "Experten" darum streiten, ob es sinnvoll ist oder nicht erst C oder erst C++ zu lernen...
      Ich persönlich würde mich wohl auch zu denjenigen stellen, die direkt C++ empfehlen würden, ohne erst C zu lernen. Es gibt einfach zu viele neue Konzepte und Möglichkeiten in C++, die ein Zugreifen auf "veraltete" C-Funktionen überflüssig machen.
      Allerdings würde ich persönlich wohl mit C++ auch noch warten, da nächstes Jahr die neue Version C++09x herauskommt, die viele Neuerungen enthalten wird und das ja auch schon sehr betagte C++ an moderne Verhältnisse anpassen soll.
      Aber auch mit C/C++ kommt man recht schnell zu einem Ergebnis.
      Folgender Kode gibt z.B. einen String "Hallo Welt" aus (in C++):

      Quellcode

      1. #include <iostream>
      2. int main() {
      3. std::cout << "Hallo Welt" << std::endl;
      4. return 0;
      5. }
      Folgender Kode macht dasselbe in Java (gespeichert als Hallo.java):

      Quellcode

      1. public class Hallo {
      2. public static void main(String[] args) {
      3. System.out.println("Hallo Welt");
      4. }
      5. }
      Ich kenne mich mit Python nicht aus, weiß also nicht ob es sehr viel kürzer wäre ein "sichtbares Ergebnis" zu bringen.
      Aber wenn das Gerüst erstmal steht (also der Kode oben), dann kann man den Rest einfach direkt dadrunter schreiben (ist dann zwar nicht sehr schön objektorientiert, aber es funktioniert...)
    • @Stan:
      Mit sichtbaren Ergebnissen meine ich nicht nur GUIs, sondern allgemein brauchbare Programme. Mit Python ist es relativ einfach zum Beispiel einen HTTP-Request abzusetzen und den Inhalt einer Homepage nach irgendwelchen String-Teilen zu durchsuchen, eine einfache Datenbank-Anbindung zu machen oder halt einfache GUI-Anwendungen zu schreiben.
      In C verbringt man mal ein gutes Stück mit dem Erlernen von Pointern, Speichermanagement und dem Stringhandling - Dinge die eigentlich vollkommen uninteressant sind, wenn man eigentlich nur ein fertiges Programm haben will, das sein Problem löst. Erst wenn man das gemeistert hat, darf man sich, wenn man Windows verwendet, mit der WinAPI herumschlagen, die im Vergleich zu POSIX wohl alles andere als simpel und einfach zu verwenden ist.
      Wenn man salopp gesagt ein halbes Jahr damit verbringt strncat und Konsorten nachzuprogrammieren, damit man String-Handling samt eventuellen Gefahren endlich versteht wird man nun mal leichter die Motivation verlieren als wenn man nach einem halben Jahr zB.: ein kleines Notification-Tray-Programm schreiben kann, das diverse Webcomics nach Updates prüft.