====== Basiswissen ====== ===== Üben, quälen, üben, quälen ===== Jeder Programmierer kennt die quälenden Stunden wenn man das Handwerk lernt und man irgendetwas nicht begreift. Das Einzige was hilft ist üben, lesen, üben, quälen, üben, mit jemanden darüber reden, üben, schlafen, üben und dann das Ganze wiederholen. ===== Testen, testen, testen, testen ===== Selbst erfahrene Programmierer machen einfache Fehler, deshalb ist das A und O testen. Überschlagsmässig kann man sich merken, dass man 20% der Zeit programmiert und 80% davon testet. ===== Unterschiede User, EDV-TechnikerIn, AdministratorInnen, ProgrammiererIn, InformatikerIn ===== Die Übergänge sind natürlich fließend und die Einteilung ist äusserst grob * User benutzen die bereitgestellten Systeme * EDV-TechnikerInnen installieren Programme und lösen Probleme an einem PC * AdministratorInnen installieren Programme auf einem oder mehreren Servern oder PCs und lösen Probleme auf diesen. Sie verwalten ein Netzwerk * ProgrammierInnen lösen Probleme (durch -nona- programmieren), die Ergebnisse nutzen AdministratorInnen und EDV-TechnikerInnen wiederum * InformatikerInnen lösen nicht nur Probleme. Sie suchen nach dem bestmöglichen Weg ein Problem zu lösen ===== Wahl der Programmiersprache ===== Die Wahl der Programmiersprache hängt vom Projekt ab. Für ein Webprojekt wird man nicht C++ verwenden, sondern eher PHP oder Python, Javascript und Ajax. Anders herum wird man für ein Ressourcenhungriges Problem C++, Go oder eventuell Java verwenden. Entscheidungskriterien gibt es viele und hängen vom zu lösenden Problem, der Projektgrösse, der Präferenz des Programmierers und vielen weiteren Faktoren ab. ===== Verwendete Sprache im Quelltext ===== Man sollte sich englisch angewöhnen. Die meisten Beispiele findet man auf englisch. Benötigt man Hilfe findet man die oft auf englisch. Die programmierende Welt hat sich auf englisch geeinigt. \\ Da diese Seite in deutsch gehalten ist, sind die Kommentare ebenso in deutsch gehalten. ===== Quelltext ===== Der Quelltext ist der für **menschen lesbare Code**, welcher meist in einer (bzw. mehreren) **Textdateien** vorliegt. Dieser Quelltext wird dann interpretiert oder kompiliert um tatsächlich von einer Maschine ausgeführt werden zu können. ===== Syntax und Semantik ===== Jede Programmiersprache unterliegt einer gewissen **Syntax**. Damit ist gemeint welche Zeichenfolge zugelassen wird bzw. welche Zeichenfolge gültig ist. Umgelegt auf menschliche Sprache ist das, etwas hinkend formuliert, die **Grammatik**. Programmiersprachen sind da sehr strikt. Ist ein Zeichen falsch oder an der falschen Stelle kann das Programm nicht ausgeführt werden. Computer sind wahnsinnig schnell, aber wahnsinnige Idioten. \\ Die **Semantik** hingegen ist das, was das Programm machen soll. Will man einen Taschenrechner programmieren, es kommt aber eine Tabellenkalkulation raus kann das syntaktisch vollkommen korrekt sein, semantisch liegt es aber weit daneben. Semantische Korrektheit ist die **eigentliche Schwierigkeit** beim Programmieren. Man muss das Problem genau kennen, um es semantisch richtig lösen zu können. Viele Projekte gehen den Bach runter, weil sich Programmierer und Auftraggeber schlecht verständigt haben. ===== Kompilieren oder Interpretieren ===== Bei manchen Programmiersprachen wird der Quelltext eingelesen, analysiert und ausgeführt. Diesen Vorgang nennt man **Interpretation**. \\ Der Vorteil ist, dass es einfacher ist, da der Kompilierungsprozess weg gelassen wird. \\ Der Nachteil ist die meist langsamere Geschwindigkeit. \\ Beispiele für Interpretierte Sprachen sind: HTML, Perl, PHP, Python, Ruby \\ Wird allerdings der Quelltext in eine maschinenlesbare Form (Die Nullen und Einsen sind gemeint) übersetzt, spricht man von **kompilieren**. Beispiele für kompilierbare Sprachen sind: C/C++, C#, Go, Java, Perl, Python. Wobei C#, Java, Perl, Python zuerst in Bytecode übersetzt werden. ===== Primitive Datentypen ===== === Integer === Als Integer werden ganze Zahlen bezeichnet, also ...-2, -1, 0, 1, 2... Oft wird unterschieden zwischen der Grösse derartiger Zahlen. Zum Beispiel bei **Java**: byte, short, int, long === Float/Double === Kommazahlen werden float oder double genannt. Je nach Genauigkeit wird float (weniger genau) oder double verwendet (genauer). Da ein Computer ein diskretes System ist, kann eine Kommazahl nie ganz genau, sondern nur mit einer bestimmten Genauigkeit, dargstellt werden. === Boolean === Variablen, die wahr oder falsch sein können, werden bool'sche Variablen genannt. bool oder boolean ist meist der primitive Datentyp. === Character === Das ist ein einzelnes Zeichen, wie beispielsweise 'a', '4', 'G', '\n'... === Strings === Zeichenketten werden auch Strings genannt. "Hallo Welt", "Werner", ...