Archiv der Kategorie: Programmieren lernen

Der Unterschied zwischen einem FTP Server und GIT

Vielen wird es wohl ähnlich ergangen sein. Wenn man als Neuling anfängt ein paar Websites zu bearbeiten, wird man relativ schnell mit FTP Bekanntschaft machen. Das File Transfer Protokoll ermöglicht es, einfach Dateien vom eigenen Rechner auf einen Server hochzuladen. FTP ist einfach zu bedienen, und funktioniert auch, solange man alleine an einem Projekt arbeitet. Wenn aber dieser Neuling nun in eine Gruppe kommt, wo mehrere Leute gleichzeitig an einem Code arbeiten, ist meist Schluss mit FTP. Dann muss man sich mit so kompliziertem Zeug wie GIT anfreunden.

Viele Neulinge stänkern dann erst mal. „Aber mit FTP hat es doch bei mir auch wunderbar funktioniert. Weshalb nun plötzlich so ein kompliziertes Tool?“ GIT ist tatsächlich ein komplizierteres Tool als FTP und der Unterschied ist erst mal nicht so offensichtlich. Den will ich Euch heute erklären.

Die Grenzen von FTP

Wenn man vom eigenen Rechner via FTP auf einen Webserver eine Datei oder mehrere hochlädt, wird die alte Datei einfach überschrieben. Klingt erst mal logisch, ist ja auf dem lokalen Rechner genau so. Doch wenn mehrere Leute an einer Website arbeiten kann das zu einem heillosen durcheinander führen. Ein Beispiel: Entwickler eins macht in einer Datei eine Änderung… informiert aber nicht gleich das Team. Er lädt die Datei auf den Server hoch. Dann kommt Entwickler zwei und will auch ein paar Änderungen machen. Nur hat er noch eine Datei ohne die Änderungen von Entwickler eins. Wenn nun Entwickler zwei seine Änderungen auf den Server hochlädt, sind die Änderungen von Entwickler eins einfach überschrieben. Dieses Problem schlägt schon bei ganz kleinen Teams zu, weshalb eigentlich alle Entwicklungsteams auf eine Versionskontrolle (GIT ist eine von vielen) setzen.

GIT speichert Change sets, keine komplette Dateien

Der eigentliche Unterschied zwischen einem FTP Server und GIT liegt im Hintergrund verborgen. Im Unterschied zu einem FTP Server speichert GIT nämlich die Änderungen in sog. Change sets. Das sieht dann ungefähr so aus:

Initial commitVersion 1
Changeset 1Version 2
Changeset 2Version 3
Changeset 3Version 4
Stark vereinfachte Darstellung einer Versionskontrolle

Wenn man also etas via GIT auf ein Repository (wie man die Ablage nennt) hochlädt, dann erstellt GIT erst auf dem eigenen Rechner ein Change set. Dieses wird dann an den Server übermittelt. Die Change Sets funktionieren Zeilenbasiert. An folgendem Screenshot kann man das sehr gut erkennen:

Ein Change Set auf GitHube
Darstellung eines Change Sets auf GitHub.com Hier zu sehen Code von Apache Openmeetings

Die Dateien die man also in Git erhält, sind immer aus vielen einzelnen Change sets zusammengezimmert worden.

Dieses System eröffnet ganz andere Möglichkeiten. Zum einen können so Fehler einfach zurückgespult werden. Zum anderen ist es möglich, Änderungen eines anderen Entwicklers in den eigenen Quellcode einzubauen auch wenn man selbst schon Änderungen gemacht hat.

GIT ist zwar komplizierter zu bedienen, vereinfacht aber letztendlich vieles. Selbst das kleine Einmann Projekt profitiert davon. Insbesondere wenn man was einbauen wollte, und erst zu spät bemerkt, dass es nicht funktioniert. Mit GIT kann man die Änderung einfach zurückrollen und hat somit eine laufende Website.

Programmieren lernen, aber wie?

Immer wieder werde ich gefragt, wie ich überhaupt programmieren lernte. Alles im Selbststudium, das ist doch gar nicht möglich. Doch das ist möglich, wenn auch nicht so einfach wie manche immer behaupten. Für viele Menschen ist programmieren ein Mysterium und wie es Mysterien so an sich haben, geht auch vom programmieren eine Faszination aus.

Um es gleich mal vorweg zu nehmen, all die Kiddies, die jetzt glauben, man könne Informatik mit dem vergleichen was so ein durchschnitts Jugendlicher vor einem Computer macht, vergesst es! Programmieren hat nichts mit Gamen und schon gar nicht mit YouTube Video kucken zu tun. Und ja, es ist schon wahr, nicht jeder ist für das Programmieren geschaffen. Es erfordert abstraktes und logisches Denken und vor allem (und das ist noch viel wichtiger) viel, nein verdammt viel Geduld. Neven aus Stahlseilen sind hier Pflicht. Denn es kommt vor, dass du mehrere Stunden an einem Fehler sitzt. Mein persönlicher Rekord lag bei 30h, und es war am Schluss ein Komma das ein Kollege vergessen hatte. Jeder Programmierer kann dir da seine eigenen Geschichten erzählen.

Dazu solltest du einen Hang zur Genauigkeit haben und den willen Sachen richtig zu machen. Oft ist dieses „Richtig machen“ den längeren Weg. Aber man tut gut daran diesen zu gehen, denn die Abkürzungen (durty hacks wie man sie nennt) bringen später meist Probleme. Viele lernen das erst nach schmerzlichen Erfahrungen, andere lernen es gar nie. Mit anderen Worten, Programmieren ist nicht der geile Job, den man aus dem Fernsehen kennt, sondern grösstenteils einfach üble Fleissarbeit.

Ich konnte Euch damit noch nicht vertreiben? Eigentlich ziemlich schade, denn sonst hätte ich das Tutorial gar nicht schreiben müssen. Wobei ein Tutorial soll das hier gar nicht werden. Denn solche gibt es schon genug. Ich möchte Euch eher so das Grundrüstzeug auf den Weg geben, um los zu legen.

Viele stellen sich programmieren lernen eh falsch vor. Sie glauben, man liest da irgend ein schlaues Buch und prügelt sich den Inhalt in den Kopf, und danach könne man programmieren. Programmieren lernen heisst learning by doing. Man beginnt ganz am Anfang schon mit kleinen Programmen. Mittels Nachschlagewerken und einer guten Portion Geduld und Logik kann man sich bereits ein Programm zusammenschustern. Dennoch ist der Weg voll von Stolperfallen, und genau diese will ich in meiner Blogserie behandeln. Viele Informationen die ich euch nenne, erscheinen vielleicht gar nicht so wichtig. Lest es Euch trotzdem durch, Ihr erhaltet viele Informationen, die euch später jede Menge Zeit ersparen.

Wir werden mit der Website Programmierung anfangen und uns dann langsam hoch arbeiten. Ich wünsche Euch bei den Tutorials viel Spass