Zum Inhalt springen

KampfKatze

Mitglieder
  • Gesamte Inhalte

    81
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    2

Reputationsaktivitäten

  1. Like
    KampfKatze reagierte auf Whiz-zarD in Wie lernt man effektiv eine Programmier-Sprache?   
    Und wo genau liegt das Problem? Gehen wir mal die Schleife durch:
    i    result ------------------------------------ 0    result += 0 =>    result = result + 0 => result = 0 + 0 = 0 1    result += 1 =>    result = result + 1 => result = 0 + 1 = 1 2    result += 2 =>    result = result + 2 => result = 1 + 2 = 3 3    result += 10 =>    result = result + 10 => result = 3 + 10 = 13 4    result += 4 =>    result = result + 4 => result = 13 + 4 = 17 Auf result wird pro Schleifendurchlauf immer i dazu addiert. Die Ausnahme ist, wenn der Zähler i bei 3 ist. Dann wird 10 draufaddiert. Der += operator ist nur eine Abkürzung
    result += i ist das selbe wie
    result = result + i
  2. Like
    KampfKatze reagierte auf wisdomsoz in Wie lernt man effektiv eine Programmier-Sprache?   
    Also habe Java im Studium gemacht, du lernst es nur durch machen. Kann dir die Tage mal paar Übungen hochladen bzw. Materialien. Du musst halt nur die Logik verstehen, irgendwann hast du den Griff raus.
  3. Like
    KampfKatze reagierte auf Whiz-zarD in Wie lernt man effektiv eine Programmier-Sprache?   
    Suche unter Google nach "coding katas" und versuche sie zu bearbeiten. Eine Liste findest du z.B. hier
  4. Like
    KampfKatze reagierte auf Whiz-zarD in C# OOP Probleme   
    Wieso sollte man dich töten wollen?
    Softwareentwicklung ist nun mal ein Reifeprozess. Niemand liest nur ein Buch und kann gleich wunderbar sauberen Code schreiben. Mein Code sah zum Anfang auch mies aus und selbst Robert C. Martin, der das Buch "Clean Code" geschrieben hat, sagt von sich aus, dass er nicht die Weisheit mit Löffeln gefressen hat und es auch bei seinen Code-Beispielen sicherlich noch Verbesserungspotenzial gibt aber nur durch Ausprobieren lernt man. 
    Du hast schon richtig erkannt, dass man fürs Einlesen der Datei eine eigene Klasse benötigt. Allerdings gehört die Logik nicht in den Konstruktor. Der Konstruktor dient zur Initialisierung der Klasse. Der Name der Klasse sollte auch die Aufgabe widerspiegeln, was die Klasse tut. "DateiEinlesen" ist vielleicht gut, aber geht es vielleicht noch konkreter? Ich weiß, dass es eine CSV-Datei ist. Vielleicht eher CsvReader?  Wobei dieser Name auch wieder sehr allgemein ist. In der CSV-Datei steckt ja eine Tabelle. Welche Daten besitzt die Tabelle? Vielleicht kann man der Tabelle einen Namen geben. Eine CSV-Datei ist ja eine Art der Serialisierung. Das Verfahrung um so eine Tabelle in ein Objekt zu überführen, nennt man auch Deserialiserung. Das kann man ja erst mal im Hinterkopf behalten.
    Zuerst würde ich mir aber erst mal eine geeignete Datenstruktur überlegen. In der CSV-Datei stecken ja Daten. Ich nehme jetzt mal als Beispiel, dass die CSV-Datei Daten zu Personen beinhaltet:
    Name;Vorname;Geschlecht;Alter Doe;John;Maennlich;38 Also würde ich erst mal eine Klasse für diese Daten erstellen:
    public class Person {     public string Name { get; set; }     public string Vorname { get; set; }     public Geschlecht Geschlecht { get; set; }     public int Alter { get; set; } } public enum Geschlecht {     Maennlich     , Weiblich } Nun könnte ich mich darum kümmern, eine(!) Datei einzulesen. Ich habe eine Datenstruktur und ich weiß, dass ich eine CSV-Datei deserialisieren muss. Also könnte man die Klasse z.B. PersonCsvDeserializer nennen. In dieser Klasse soll es eine Methode geben, die Deserialize() heißt. Ich verzichte hier jetzt erst mal bewusst auf ein Interface, weil ich denke, dass es für dich bis hier hin schon kompliziert genug ist. Das Interface werde ich später noch mal erklären. Erst mal kümmern wir uns darum, was wir alles brauchen, um eine Datei zu deserialisieren. 
    Was muss die Klasse PersonCsvDeserializer alles wissen, um eine CSV-Datei deserialisieren zu können? Man könnte vielleicht im ersten Schritt auf die Idee kommen, dass die Klasse den Pfad und Dateinamen benötigt. Mit den Informationen aus dem letzten Absatz könnte ein erster Entwurf so aussehen: 
    public class PersonCsvDeserializer {     public IEnumerable<Person> Deserialize(string fileName)     {       // ...     } } Als Rückgabewert habe ich IEnumerable<Person> gewählt, weil IEnumerable<T> ein sehr allgemeines Interface ist und einen Enumerator (auf deutsch: Aufzählung; in anderen Sprachen auch Iterator genannt) zur Verfügung stellt, mit dem wir über die Daten iterieren können (mit der foreach-Schleife). Sowohl IList<T>, ICollection<T>, IDictionary<T>, Array und weitere Klassen implementieren dieses Interface und mehr als über die Daten iterieren wollen wir nicht. Wenn wir später damit mehr machen wollen, können wir es leicht mit Linq in eine Collection, List, Array oder auch in ein Dictionary umwandeln. Die Deserialize()-Methode soll also eine Aufzählung von Personen zurückliefern.
    Normalerweise macht man es anders, aber aus einfachheit behaupte ich mal frech, dass die erste Zeile in der CSV-Datei immer ein Header besitzt. In der Implementierung überspringe ich den Header per Linq mit der Skip()-Methode. Die Deserialize()-Methode soll also folgendes machen:
    Die Datei lesen Durch die Datenzeilen iterieren Pro Datenzeile ein Person-Objekt erstellen Die Person-Objekte als Aufzählung zurückliefern Der erste Entwurf könnte daher folgendermaßen aussehen:
    public class PersonCsvDeserializer {     public IEnumerable<Person> Deserialize(string fileName)     {         IList<Person> result = new List<Person>();         foreach (string line in File.ReadAllLines(fileName).Skip(1))         {             string[] elements = line.Split(';');             result.Add(new Person             {                 Name = elements[0],                 Vorname = elements[1],                 Geschlecht = (Geschlecht)Enum.Parse(typeof(Geschlecht), elements[2]),                 Alter = Convert.ToInt32(elements[3])             });         }         return result;     } } Die Methode macht zwar was sie soll, aber ist sie wirklich übersichtlich? Nicht wirklich. Wir haben hier mehrere Ebenen miteinander vermischt. Wir können also mit dem Refactoring anfangen. z.B. das
    File.ReadAllLines(fileName).Skip(1) Wofür ist das genau gut? Wenn man den gesamten Kontext kennt, weiß man es zwar aber eigentlich liegt der Code-Abschnitt eine Ebene Tiefer. Es hantiert mit Dateien und hat mit der eigentlichen Aufgabe der Deserialiserung wenig zu tun. Also sollte man diesen Teil in eine separate Methode packen:
    private IEnumerable<string> ReadDataFromFile(string fileName) {     return File.ReadAllLines(fileName).Skip(1); } Somit wandert das Skip(1) in eine tiefere Ebene und interessiert uns in der Deserialize()-Methode nicht mehr. Als nächstes fällt aber auf, dass wir ein String mit Split() in ein Array teilen und aus diesem Array dann die einzelnen Personendaten herausfischen. Diesen Vorgang nennt man auch Parsing. Also könnten wir diesen Teil auch in eine Methode auslagern:
    private Person Parse(string serializedData) {     string[] elements = serializedData.Split(';');     return new Person     {         Name = elements[0],         Vorname = elements[1],         Geschlecht = (Geschlecht)Enum.Parse(typeof(Geschlecht), elements[2]),         Alter = Convert.ToInt32(elements[3])     }; } Unsere Klasse sieht dann bis jetzt folgendermaßen aus: 
    public class PersonCsvDeserializer {     public IEnumerable<Person> Deserialize(string fileName)     {         IList<Person> result = new List<Person>();         foreach (string serializedData in ReadDataFromFile(fileName))         {             Person person = this.Parse(serializedData);             result.Add(person);         }         return result;     }     private IEnumerable<string> ReadDataFromFile(string fileName)     {         return File.ReadAllLines(fileName).Skip(1);     }     private Person Parse(string serializedData)     {         string[] elements = serializedData.Split(';');         return new Person         {             Name = elements[0],             Vorname = elements[1],             Geschlecht = (Geschlecht)Enum.Parse(typeof(Geschlecht), elements[2]),             Alter = Convert.ToInt32(elements[3])         };     } } Nun ist Deserialize() doch recht gut lesbar. Wir lesen die Daten aus der Datei, parsen die Daten und erhalten ein Person-Objekt, welches wir dann in eine Liste packen und zum Schluss geben wir die Liste zurück.
    Es gäbe hier noch weiteres Verbesserungspotenzial aber ich belasse es erst mal hierbei. Ein paar Hinweise gebe ich aber noch:
    Fehler-Handling? Was passiert, wenn z.B. die Datei nicht existiert? Ist das erzeugte Objekt List<Person> wirklich eine gute Wahl? Angenommen, wir haben es mit einer riesigen CSV-Datei (mehrere Gigabytes) zu tun, die größer ist, als unser Arbeitsspeicher. Hier schmeiße ich mal das "yield return"-Schlüsselwort in den Raum. Auch ist das indexierte Zugreifen auf das Array in der Methode Parse() nicht wirklich glücklich gelöst. Was passiert nämlich, wenn mal eine Spalte in der Datei hinzukommt? Dann muss man ja auch den Code anpassen. Das will man aber eigentlich gar nicht. Zu diskutieren wäre auch, ob die Variable fileName nicht doch besser eine Instanzvariable sein sollte, die per Konstruktor reingereicht wird. Es fällt ja auf, dass die Methoden Deserialize() und ReadDataFromFile() den Dateinamen benötigen. Also stellt fileName ja eine gewisse Abhängigkeit dar, die die Klasse benötigt, um arbeiten zu können.  Als Überlegung kannst du ja selber mal schauen, wie man mit solchen Situation umgehst.
    Um später im Hauptpgramm alle Personen zu iterieren könntest du nun folgendes schreiben:
    static void Main(string[] args) {     string sourcePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\blabla";     IEnumerable<string> fileNames = Directory.GetFiles(rootPath, "*.csv");     PersonCsvDeserializer deserializer = new PersonCsvDeserializer();     foreach(string fileName in fileNames)     {         IEnumerable<Person> persons = deserializer.Deserialize(fileName);         foreach (Person person in persons)         {             // ...         }     } } Nach dem selben Prinzip, wie bei der PersonCsvDeserializer-Klasse kannst du ja mal überlegen, wie man nun diesen Code refactoren an.
    Ab hier wird es noch etwas technischer und tiefgreifender. Ich möchte dir noch zwei Techniken zeigen, die du aber erst mal nicht umsetzen brauchst.
    "Inversion of Control" und "Dependeny Injection"
    In der Klasse PersonCsvDeserializer fällt auf, dass die Klasse von einer Datei abhängig ist aber die Daten können vielleicht aus einer Datenbank kommen oder wir schreiben die CSV-Daten direkt in eine grafische Oberfläche. Möchte man jetzt für jeden Anwendungsfall eine eigene Klasse schreiben? Eigentlich nicht. Die Abhängigkeit zur Datei muss also aufgelöst werden. Das .Net-Framework bietet ja die abstrakte Klasse TextReader, die so ziemlich alles darstellen kann. Ein Reader, der eine Datei liest oder aus einem TCP-Stream oder aus einer Datenbank, etc. Anstatt also den Dateinamen reinzureichen, könnte man auch ein TextReader reinreichen.
    Hier mal ein Beispiel, wie so eine Klasse aussehen könnte:
    public class PersonCsvDeserializer {     private TextReader reader;     private bool isHeaderSkipped;     public PersonCsvDeserializer(TextReader reader)     {         this.reader = reader;     }     public IEnumerable<Person> Deserialize()     {         string serializedData;         while ((serializedData = this.ReadNextData()) != null)         {             Person person = this.Parse(serializedData);             yield return person;         }     }     private string ReadNextData()     {         string serializedData = this.reader.ReadLine();         if (!this.isHeaderSkipped)         {             this.isHeaderSkipped = true;             return this.ReadNextData();         }         return serializedData;     }     private Person Parse(string serializedData)     {         string[] elements = serializedData.Split(';');         return new Person         {             Name = elements[0],             Vorname = elements[1],             Geschlecht = (Geschlecht)Enum.Parse(typeof(Geschlecht), elements[2]),             Alter = Convert.ToInt32(elements[3])         };     } } Die Main-Methode sieht dann so aus:
    static void Main(string[] args) {     string sourcePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\blabla";     IEnumerable<string> fileNames = Directory.GetFiles(rootPath, "*.csv");          foreach(string fileName in fileNames)     {         using (TextReader reader = File.OpenText(fileName))         {             PersonCsvDeserializer deserializer = new PersonCsvDeserializer(reader);                          IEnumerable<Person> persons = deserializer.Deserialize();             foreach (Person person in persons)             {                 // ...             }         }       } } Zugegeben, in diesem Beispiel ist die Klasse PersonCsvDeserializer etwas komplizierter geworden aber es ist jetzt egal, woher die Daten stammen, solange wir ein TextReader in den Konstruktor schieben. Das reinrechen der Abhängigkeit in den Konstruktor nennt sich auch "Dependeny Injection". In diesem Beispiel habe ich auch das yield return verwendet. Da wir jetzt nur noch maximal den Speicher für ein Person-Objekt verbrauchen, könnte die Klasse eigentlich nun unendlich viele Daten deserialisieren. Ein Problem stellt aber immer noch die Indexierung des Arrays dar aber das überlasse ich jetzt dir.
    Das Interface
    Das letzte, was ich noch schreiben wollte, wäre ein geeignetes Interface für den Deserializer. Wollen wir jetzt mehrere Deserializer schreiben oder einen Deserializer als Abhängigkeit in eine Klasse reinreichen, ist ein Interface geeignet, damit es später egal ist, um welchen Deserializer es sich handelt. Man könnte sich ja auch vorstellen, dass die Daten nicht in einer CSV-Datei stecken, sondern in einer XML-Datei. Dafür wäre folgendes Interface recht nützlich
    public interface IDeserializer<T> {     IEnumerable<T> Deserialize(); } Mit diesem Interface könnten wir sogar das hässliche using im Hauptprogramm wieder loswerden. Ich finde, das using stört im Lesefluss. Wir haben ja jetzt eine Klasse, die CSV-Daten aus unterschiedlichsten Quellen von Personen deserialisieren kann. Was hindert uns nun daran, einen weiteren Deserializer zu bauen, der aus Dateien deserialisiert? Beispiel:
    public class PersonCsvFileDeserializer : IDeserializer<Person> {     private string fileName;     public PersonCsvFileDeserializer(string fileName)      {         this.fileName = fileName;     }     public IEnumerable<Person> Deserialize()     {         using (TextReader reader = File.OpenText(fileName))         {             PersonCsvDeserializer deserializer = new PersonCsvDeserializer(reader);             return deserializer.Deserialize();         }     } } Das using wurde nach PersonCsvFileDeserializer und somit eine ebene tiefer verschoben. Wenn du Dependecy Injection verstanden hast, dann würde dir auffallen, dass die Zeile 
    PersonCsvDeserializer deserializer = new PersonCsvDeserializer(reader); eigentlich böse ist, da es eine Abhängigkeit darstellt, die wiederum in den Konstruktor gehört. Ich habe sie aber erst mal hier drinnengelassen, weil das sonst wieder bedeuten würde, dass das using wieder ins Hauptprogramm rein müsste. Eigentlich müsste man sich eine Fabrik-Methode ausdenken, die den PersonCsvFileDeserializer zusammenbaut. Die habe ich hier aber weggelassen. Die kannst du dir ja ausdenken.
    Das Hauptprogramm würde dann so aussehen:
    static void Main(string[] args) {     string sourcePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\blabla";     IEnumerable<string> fileNames = Directory.GetFiles(rootPath, "*.csv");          foreach(string fileName in fileNames)     {         PersonCsvFileDeserializer deserializer = new PersonCsvFileDeserializer(fileName);                      IEnumerable<Person> persons = deserializer.Deserialize();         foreach (Person person in persons)         {             // ...         }      } } Das wäre doch schon wieder ein Schritt übersichtlicher. 
    Wie du also siehst, haben wir allein nur für das Einlesen von den CSV-Dateien drei Klassen:
    Person PersonCsvDeserializer PersonCsvFileDeserializer und ein Interface:
    IDeserializer<T> geschrieben. Man braucht also kein mega großes Projekt, um mehrere Klassen zu schreiben. Es reicht auch schon was ganz einfaches. Man sollte sich immer bewusst machen, dass Klassen immer nur eine Aufgabe machen sollten und Methoden Teilaspekte dieser Aufgabe sind und sie sollten auch nicht mehr machen, als eine Sache. Es macht auch nichts, wenn man zum Anfang Spagetticode schreibt und diesen später nach und nach einem Refactoring unterzieht. Niemand ist perfekt und niemand schreibt perfekten Code. Man fängt also immer erst mal an und arbeitet sich Schritt für Schritt an eine geeignete und saubere Lösung. Selbst meine Lösung ist mit Sicherheit nicht perfekt und ich habe auch nicht die Weisheit mit Löffeln gefressen. Wenn du mein Beitrag richtig verfolgt haben solltest, hast du vielleicht auch gemerkt, dass ich erst mal eine Lösung geschrieben habe und sie dann nach und nach verfeinert und verbessert habe. Das Wissen kommt erst mit Erfahrung und Erfahrung sammelt man nur, indem man es ausprobiert und darüber mit anderen diskutiert. Also trau dich.
    So, das reicht auch fürs erste. Ich denke, das ist erst mal genug Input.
     
  5. Like
    KampfKatze reagierte auf Chief Wiggum in Berufsschule? Sinnlos!   
    Fakt ist: der kaufmännische Anteil an der Ausbildung ist im Rahmenlehrplan festgeschrieben.
    http://www.gesetze-im-internet.de/itktausbv/anlage_2_teil_a.html
    Wenn du daran was ändern willst: kündige deinen Job, geh in die Bundespolitik und wirke als Abgeordneter an der Bildungspolitik mit.
  6. Like
    KampfKatze hat eine Reaktion von Albi erhalten in Kündigung ohne Abmahnung   
    Als allererstes ist es mir absolut gleichgültig was irgendwelche Leute in irgendeinen Forum über mich denken.
    Es ist auch interessant zu wissen, dass man hier ohne jegliche IT-Erfahrung, was ich im übrigen habe, nichts Posten darf nach deiner Logik.
    Als nächstes, woher willst du wissen ob ich eine Ausbildung abgebrochen habe?
    Ich habe garnichts abgebrochen ich habe lediglich ein Prüfungsteil von 5 nicht bestanden und die Nach-Prüfung ist im Februar.
    Finde es interessant wie respektlos man über andere sich äußern kann weil man ja selber so viel Erfahrung hat und über andere Leute achsoviel Bescheid weiß.



    Jap, das werde ich.
     


    So und hier geht es schon weiter; ich habe hier lediglich einen Freund gefragt und bevor ich überhaupt einen Finger gerührt habe, habe ich den TE sogar gefragt ob es für in in Ordnung sei.
    Ernst nehmen muss man garnichts.
    "Angebliche Aussage" Jo weil ich, einer vom Bau Paragraphen kenne, und solch juristische Texte verfassen kann.



    Das ist schön für dich.
    Mein "angeblicher" Freund hat mir sogar geschrieben er bräuchte mehr Details und kann bzw. möchte sich nicht weiter dazu äußern.




    Sent from my iPhone using Fachinformatiker.de mobile app
  7. Like
    KampfKatze hat eine Reaktion von JimTheLion erhalten in Kündigung ohne Abmahnung   
    Als allererstes ist es mir absolut gleichgültig was irgendwelche Leute in irgendeinen Forum über mich denken.
    Es ist auch interessant zu wissen, dass man hier ohne jegliche IT-Erfahrung, was ich im übrigen habe, nichts Posten darf nach deiner Logik.
    Als nächstes, woher willst du wissen ob ich eine Ausbildung abgebrochen habe?
    Ich habe garnichts abgebrochen ich habe lediglich ein Prüfungsteil von 5 nicht bestanden und die Nach-Prüfung ist im Februar.
    Finde es interessant wie respektlos man über andere sich äußern kann weil man ja selber so viel Erfahrung hat und über andere Leute achsoviel Bescheid weiß.



    Jap, das werde ich.
     


    So und hier geht es schon weiter; ich habe hier lediglich einen Freund gefragt und bevor ich überhaupt einen Finger gerührt habe, habe ich den TE sogar gefragt ob es für in in Ordnung sei.
    Ernst nehmen muss man garnichts.
    "Angebliche Aussage" Jo weil ich, einer vom Bau Paragraphen kenne, und solch juristische Texte verfassen kann.



    Das ist schön für dich.
    Mein "angeblicher" Freund hat mir sogar geschrieben er bräuchte mehr Details und kann bzw. möchte sich nicht weiter dazu äußern.




    Sent from my iPhone using Fachinformatiker.de mobile app
  8. Like
    KampfKatze reagierte auf bigvic in Kündigung ohne Abmahnung   
    Naja, dachte nicht das jemand ernsthaft so unverschämt ist. Aber dann ist das wohl so. Bitte respektiere anderer User und unterlasse Postings in denen du anderen vorschreiben möchtest ob/was diese posten.
  9. Like
    KampfKatze hat eine Reaktion von Albi erhalten in Kündigung ohne Abmahnung   
    Ein Freund von mir ist Jurist, ich war mal so frei ihm das zu Schildern wenn es für dich in Ordnung geht

    Gruß


    Sent from my iPhone using Fachinformatiker.de mobile app
  10. Like
    KampfKatze reagierte auf Whiz-zarD in Wenn man 0 Programmierkenntnisse hätte?   
    C# hat in erster Linie nichts mit .Net zu tun. C# ist eine ECMA- und ISO-Standardisierte Sprache.
    .NET ist eine Entwicklungsplattform, die aus mehreren Komponenten besteht. z.B. WinForms, WPF, ASP.NET, ADO.NET, LINQ, Entity Framework, Common Language Runtime (CLR) etc.
    Die neue Compiler-Plattform Roslyn, von Microsoft, kompiliert den C# Code in CIL Code, der wiederrum von der CLR ausgeführt werden kann. Die CLR ist quasi so was ähnliches, wie die Java Virtual Machine. Als Alternative für .NET gibt es Mono und findet man überwiegend in der Linux-Welt, da die .NET-Welt ursprünglich nur auf Windows angesiedelt war. Inzwischen ist das .NET-Framework auch Open Source und mit .NET Core wird eine Plattformunabhängige Version entwickelt, die sowohl auf Windows, als auch auf Linux arbeitet.
    Der Grund, warum C# fast immer mit .NET in Verbindung gebracht wird, ist halt daher geschuldet, dass die C#-Entwicklung hauptsächlich in der Windows-Welt stattfindet und eben das .NET-Framework als Unterbau verwendet wird. Es kann aber jeder sein eigenen Unterbau bauen, wie es ja mit Mono gemacht wurde.
    C# kann man auch nicht mit C oder C++ vergleichen, da die Unterschiede sehr stark sind. Höchstens die Syntax kann man ein wenig miteinander vergleichen, da Microsoft sich an C/C++ orientiert hat. Objective-C ist eine Sprache von Apple, die sich aber sehr stark an der Sprache Smalltalk orientiert und sich ebenfalls von C# sehr unterscheidet. Objective-C wird hauptsächlich in der iOS-App-Entwicklung verwendet. Swift ist ebenfalls eine Programmiersprache von Apple und ist eine Alternative zu Objective-C.
    Die Bedeutung von Multithreading ist auch in allen Sprachen gleich. 
    Objektorientierte Sprachen haben aber aufgrund ihrer Eigenschaft, viele Schwierigkeiten, Multithreading leicht umzusetzen. (Seiteneffekte, Deadlocks, etc.) Darum gewinnen funktionale Sprachen immer mehr an Bedeutung, da dort diese Schwierigkeiten gar nicht existieren, da jeder Wert immutable - d.h. unveränderbar - ist. Da gibt es keine Seiteneffekte.
    Nur, weil viele Sprachen ein C in einem Namen haben, heißt es noch lange nicht, dass es Untermengen von C sind. Es sind lediglich Sprachen, die Konzepte von C übernommen haben aber eigene Konzepte drumherumgebaut haben, die sich sehr stark voneinander unterscheiden.
  11. Like
    KampfKatze reagierte auf Trail in Praktikumsplatz bekommen: wie kann ich daraus Profit schlagen?   
    @Chief Wiggum
    Bist Du eigentlich Ausbilder in dem Unternehmen in dem Du arbeitest oder hast Du auf irgendeiner Art mit Auszubildenden zu tun?
    Du hast so eine hervorragende Art, junge Menschen und angehende Auszubildenden für die IT-Berufe zu motivieren. Ich würde dich gerne bei der IHK (die genaue IHK ist mir bekannt) zum Ausbilder des Jahres 2017 vorschlagen.
  12. Like
    KampfKatze hat eine Reaktion von GlumiChan erhalten in Wenn man 0 Programmierkenntnisse hätte?   
    Vielen Dank für euere Antworten.
    Ich bin keiner, wenn ich zB jetzt C# lerne, dass ich denke "Okay, ich kann alles und brauch nichts mehr zu lernen". Nein eben nicht.
    Ich will mir das aneignen das ich nicht komplett ohne Ahnung in die Ausbildung gehe, ich werde auch während der Ausbildung weiterhin Sprachen lernen, denn ich habe ein Ziel vor Augen und das will ich auch schaffen; nämlich die Ausbildung abschließen und in dem Beruf erfolgreich werden.
    Ich werde auch nach der Ausbildung weiter lernen, denn ich will mithalten können.
    Bei uns auf dem Bau sagte man: die Ausbildung beginnt nach der Ausbildung, es wird ein Grundstein gesetzt aber nicht das Haus.
    Genauso stell ich mir das auch beim AE vor.

    Sprich:
    Ich werde jetzt C# lernen, und mich stets weiter bilden, Tipps annehmen & lernbereit bin.

    Gruß


    Sent from my iPhone using Fachinformatiker.de mobile app
  13. Like
    KampfKatze reagierte auf neinal in Praktikumsplatz bekommen: wie kann ich daraus Profit schlagen?   
    Guten Morgen,
     
    als ich einen Praktikanten (AE) hatte, hab ich im ein paar kleine Programmieraufgaben gegeben. Er war aber auch nur eine Woche da.
    Was man im Praktikum macht, hängt aber stark von der Firma und den aktuellen Aufgaben auf.
    Ich hab sowohl schon ein Praktikum damit verbracht Post zu sortieren und Rechnungsbeträge in Excel-Listen zu tippen, als auch ein Praktikum bei dem ich mitgeholfen habe, Server für Kunden aufzusetzen, Netzwerke einzurichten, Verkaufsgespräche zu führen, oder ein Praktikum, in dem ich dabei geholfen habe den Serverraum neu zu verkabeln und E-Mail-Konten von einem Kunden umzuziehen.....
    Pauschal kann man darauf also keine Antwort geben. Du wirst abwarten müssen und dann sehen, was auf dich zukommt.
    Für mich ist es immer wichtig, Zettel und Stift dabei zu haben, damit ich mir wichtitge Dinge notieren kann. Bei der Masse an Infos in der IT, kann man sich nicht alles auf Anhieb merken. Versuch einfach Interesse zu zeigen und dich einzubringen. Und lass dir Dinge erklären. Wenn du dich gut anstellst und ein gutes Unternehmen gefunden hast, darfst du dann bestimmt auch selbst Aufgaben erledigen.
     
  14. Like
    KampfKatze reagierte auf JimTheLion in Bekomme kein Praktikumsplatz. Bitte um Hilfe   
    Das war gar nicht der Punkt.
    Es geht KampfKatze darum PDF-Dateien und nicht Word-Dateien zu versenden. Als Bewerbungsunterlagen.
  15. Like
    KampfKatze hat eine Reaktion von JimTheLion erhalten in Wenn man 0 Programmierkenntnisse hätte?   
    Vielen Dank für euere Antworten.
    Ich bin keiner, wenn ich zB jetzt C# lerne, dass ich denke "Okay, ich kann alles und brauch nichts mehr zu lernen". Nein eben nicht.
    Ich will mir das aneignen das ich nicht komplett ohne Ahnung in die Ausbildung gehe, ich werde auch während der Ausbildung weiterhin Sprachen lernen, denn ich habe ein Ziel vor Augen und das will ich auch schaffen; nämlich die Ausbildung abschließen und in dem Beruf erfolgreich werden.
    Ich werde auch nach der Ausbildung weiter lernen, denn ich will mithalten können.
    Bei uns auf dem Bau sagte man: die Ausbildung beginnt nach der Ausbildung, es wird ein Grundstein gesetzt aber nicht das Haus.
    Genauso stell ich mir das auch beim AE vor.

    Sprich:
    Ich werde jetzt C# lernen, und mich stets weiter bilden, Tipps annehmen & lernbereit bin.

    Gruß


    Sent from my iPhone using Fachinformatiker.de mobile app
  16. Like
    KampfKatze reagierte auf Whiz-zarD in Wenn man 0 Programmierkenntnisse hätte?   
    Eine Ergänzung:
    Außerdem fehlt Generics komplett.
    Ich habe mir mal das Video "Einführung in Datentypen und was du in diesem Kapitel lernst" angeschaut. Der erzählt viel Stuss. Man merkt, dass er nur Halbwissen verfügt. z.B. weiß er nicht, dass Variablen nur in einem Sichtbarkeitsbereich haben und er meint, dass Variablen so lange im Speicher bleiben, bis wir sie löschen. Das ist falsch. Variablen mit einem primitiven (integrierten) Wertetyp verlieren ihre Gültigkeit, wenn der Programmfluss ihre Sichtbarkeit verliert. Variablen mit Klasseninstanzen räumt der Garbage Collector weg, wenn der Programmfluss ihre Sichtbarkeit verliert.
    Auch behauptet er, ein Integer-Wert könnte man nicht mit einem double-Wert addieren. Das ist falsch. Natürlich geht das. Das Resultat ist dann ein double-Wert. Der Unterschied zwischen double und float ist für ihn auch nur die Speichergröße. Auf die Genauigkeit geht er gar nicht ein.
    Nee, der Kurs ist selbst für 20 € noch zu teuer. Der Originalpreis von 95 € ist Wucher.
  17. Like
    KampfKatze reagierte auf neinal in Wenn man 0 Programmierkenntnisse hätte?   
    Guten Morgen,
     
    hier ist ja was los. 
    Kommt mal alle wieder runter und trinkt erstmal einen Tee
     
    Ich kann hier eigentlich alle Seiten verstehen. Aber... Ich berichte einfach mal von meiner persönlichen Erfahrung.
     
    In meiner Ausbildung gab es folgende Schüler:
    - Die, die denken sie haben die Weisheit mit dem Löffel gefressen und wissen alles. Die sind auch unbelehrbar. Da gab es auch einen der immer von "If-Schleife" gesprochen hat. Weil er das mal irgendwann, irgendwo aufgeschnappt hat. Dass das Bullshit ist, hat ihn 3 Jahre lang nicht interessiert. Weil er ja eh alles besser weiß.
    - Die, die keine Ahnung haben, was FIAE überhaupt ist, und eigentlich nur irgendwas lernen wollten -> Haben am Ende ALLE nicht bestanden.
    - Die, die schon Vorkenntnisse hatten und deshalb gemeint haben, dass ja alles total langweilig ist. Die haben auch die kompletten drei Jahre nix gemacht. Weil sie irgendwann verpasst haben, an dem Punkt, den sie noch nicht konnten, wieder auf den Zug aufzuspringen. Und das waren dann auch die Leute, die "BWL" für Blödsinn halten, in der Ausbildung. Braucht ja alles kein mensch. Und wenn man schon mal ein Netzwerk Zuhause eingerichtet hat, weiß man natürlich auch alles darüber, und kann natürlich auch nix dazu lernen. 
    - Die, die Vorkenntnisse hatten, aber NICHT der Meinung waren, schon alles zu wissen. Ich konnte auch schon einige Dinge vorher. Habe mich trotzdem dafür interessiert, was mir erzählt wurde. Weil mir bewusst war, dass ich noch einiges lernen kann.
    - Die, ohne Vorkenntnisse, die aber motiviert waren. Die haben alles an Information aufgesaugt was sie bekommen konnten. Weil sie genau wussten, dass sie keine Ahnung haben, und auf die Infos erstmal angewiesen sind.
     
    Für mich am schlimmsten, sind die Leute, die denken sie wüssten schon alles.
    Beispiel: Wir hatten in der Arbeit mal ein COBOL Seminar. Waren 9 Azubis. Zwei meinten, sie wissen alles. Und können ja eh alles. Haben die komplette Woche lieber auf Youtube gesurft, anstatt sich damit zu befassen, was überhaupt da vorne passiert. Der Seminarleiter hatte dann die Regel, wer mir der Aufgabe fertig ist, darf nach Hause gehen. Ein Kollege und ich, sind jeden Tag um 14 Uhr gegangen. Der Rest saß bis 17 Uhr da. Die zwei, die ja eh alles wissen, saßen bis 18 Uhr da. Bis der Seminarleiter keine Lust mehr hatte. Haben nie auch nur eine Aufgabe fertig bekommen. "Ist ja eh alles Quatsch". Am Ende der Woche wurde ein Test geschrieben. Die zwei hatten beide eine 5. Daraufhin haben sie unserem Ausbilder erzählt, dass es ja nur am Test lag. Weil der natürlich viel zu schwer war. Komisch, dass es 3 1er gab. Die zwei haben am Ende auch ein halbes Jahr gestritten um verkürzen zu dürfen. Um dann beide mit nem Durchschnitt von ner 4 abzuschließen. Super. Aber sie wissen und können ja alles. Aber Hauptsache in der ersten Arbeit in Deutsch (es ging um Grammatik und Rechtschreibung), hatten beide eine 6. Aber sie wissen und können ja alles. Haben ja schließlich Abitur und sind ja eh die geilsten Menschen auf der Welt.
    So kommt man im Leben aber nicht weiter. Beide studieren im Moment. Einen Job haben sie beide nicht. Weil keiner sie einstellt. Mit der Einstellung wundert mich das auch nicht.
    Ich glaube, dass ist das, wovor Chief warnen will. Klar, ist es kein Ding sich vorher schon mal irgendwie einzulesen oder was auszuprobieren. Aber das schlägt oft in den Gedanken "Erzähl mir keinen Mist, ich weiß doch schon alles" um. Und das ist das gefährliche daran. Hatten auch Schüler die gemeint haben "UML brauch ich nicht. Ich fange immer einfach an zu Programmieren". Jo. Kannste schon machen. Wird aber irgendwann nicht so leicht funktionieren. Und spätestens, wenn man mit einem Fachbereich oder ähnlichem zu tun hat, wird das nix mehr. 
     
    Ach.. und Kommentare, etc. braucht ja auch niemand. War schwer zu schreiben, muss also auch schwer zu lesen sein... [/Ironie]
  18. Like
    KampfKatze reagierte auf JimTheLion in Wenn man 0 Programmierkenntnisse hätte?   
    Von so Bezahl-Tutorials würde ich erst einmal die Finger lassen. Der Abschnitt  Was bringt mir dieser Kurs?  ist auch überaus 'meh, und weiter?'.
    Es gibt genug Möglichkeiten kostenlos zu lernen. Ich habe mit EDX sehr gute Erfahrungen gemacht. An den Kursen kann man kostenlos teilnehmen, anschließend kann man ein Zertifikat über den erfolgreichen Abschluss erwerben. Die Zertifikate würde ich einfach ignorieren, so Online-Kurse sind gut um Dinge zu lernen, aber sie beeindrucken nicht wirklich.
    https://www.edx.org/course/programming-c-microsoft-dev204x-2
    Für Java habe ich diesen Kurs: https://courses.edx.org/courses/UC3Mx/IT.1.1x/1T2015/info und den zweiten Teil mitgemacht. Hat Spaß gemacht.
    Weil die Kurse in englisch verfasst und gesprochen sind, lernt man auch gleich die relevante Fachsprache kennen.
    Um gleich das Kriterium von halycon aufzufassen:
    Bei dem Java-Kurs wird zuerst recht langsam an die einzelnen Aspekte herangeführt.
    Von Datentypen, Operationen, Ausdrücken zu den Kontrollstrukturen. Die ersten Aufgaben werden mit so einem Plugin umgesetzt bei dem man verschiedene Anweisungen in die richtige Reihenfolge bringt um die Logik zur Lösung des Problems darzustellen.
    Ab Woche 2 beginnt man dann wirklich mit Java.
     
    Sobald man denkt die Grundlagen der Sprache draufzuhaben, halte ich es für sinnvoll sich in einem Forum zu beteiligen, oder zumindest viel mitzulesen. Dort stößt man einfach oft auf die typischen Fehler und auf viele Dinge die man nicht tun sollte. + Erklärung warum andere Wege besser sind.
  19. Like
    KampfKatze reagierte auf Mackenzie in Wenn man 0 Programmierkenntnisse hätte?   
    Ich denke, man kann nicht pauschalisieren, dass eine Sprache (viel) schwerer ist, als eine andere. Letzten Endes ist alles nur syntaktischer Zucker, wo sich logische Konzepte hinter verbergen.
    Und sieh es doch mal umgekehrt: Wenn du mit einer der "schwierigeren" Sprachen einsteigst, dann ist der Umstieg für dich hinterher doch noch einfacher.
    Ich arbeite beruflich mit C# und kann dir auch entweder dies, oder Java ans Herz legen (natürlich pers. Vorlieben).
    Für C# ist Visual Studio out of the box schon eine recht angenehme Entwicklungsumgebung, die dir beim Programmieren hilft, Fehler zu finden. 
    Bei Java würde ich zur kostenlosen IntelliJ Version greifen, da ich diesen Editor für wesentlich angenehmer halte, als Eclipse. Aber hier natürlich auch wieder jedem seins.
  20. Like
    KampfKatze reagierte auf Whiz-zarD in Wenn man 0 Programmierkenntnisse hätte?   
    Das ist jetzt eine persönliche Vorliebe von mir, aber ich würde empfehlen, mit der Sprache C# anzufangen. Die Community Editon von Visual Studio ist ja kostenlos erhältlich und bietet alles, was man eigentlich so braucht. Java wäre auch möglich aber ich halte die Entwicklungsumgebungen nicht ganz für anfängertauglich.
    Ich hab das Buch zwar nicht gelesen, aber das Inhaltsverzeichnis und die Leseprobe lesen sich ganz vielversprechend und daher würde ich folgendes Buch empfehlen: Schrödinger programmiert C# Mit 750 Seiten ist es schon ein großer Brocken aber dadrinnen befinden sich sehr viele farbige Bilder und recht wenig Text auf den Seiten. Das lockert vielleicht das Lesen ein wenig auf. 
    Einige werden wohl die Sprache Python empfehlen, weil sie sehr anfängerfreundlich sein soll aber ich muss gestehen, dass ich mit dieser Sprache bis jetzt kaum etwas gemacht habe und auch keine Literatur dafür empfehlen kann.
    Bücher, wie Clean Code würde ich auch noch keinen Anfänger in die Hand drücken wollen. Das würde ich erst machen, wenn die Person auch schon gewisse Erfahrungen gesammelt hat, auf die man aufbauen kann.
  21. Like
    KampfKatze reagierte auf larsson in Wenn man 0 Programmierkenntnisse hätte?   
    Ich finde es aus mehreren Gründen wichtig, auch vor der Ausbildung schon anzufangen, sich selbst Wissen zu vermitteln.
    1. Selbststudium bedeutet nicht, dass hinterher Spaghetticode rauskommt. Es gibt sehr gutes didaktisches Material im Internet und wer bedacht vorgeht, kann dabei mehr lernen als in jeder Ausbildung. Man lernt vor allem auch mal über den Tellerrand zu blicken und bei Informationen die Spreu vom Weizen zu trennen.
    2. Kein Ausbilder kann alles vermitteln, was ein Softwareentwickler wissen sollte und die Vielfalt, die man in den Online-Communities findet, kann sehr belebend wirken. Wer sich umschaut und etwas findet, das ihn interessiert, hat vielleicht die Möglichkeit, an einem Open-Source-Projekt mitzuwirken. Bei vielen (Startup- oder "Elite"-)Unternehmen ist so eine Art Engagement heute genauso Voraussetzung wie Ehrenämter oder außerschulische Aktivitäten bei der Aufnahme in eine "Elite"-Uni.
    3. Auch während oder nach der Ausbildung sollte man sich selbstständig weiterbilden, das bringt unser schnelllebiger Beruf einfach mit sich. Je früher man sich daran gewöhnt, desto besser. Ich kenne Azubis, die sich einfach darauf verlassen, dass ihnen der Betrieb alles Notwendige beibringt und ich behaupte, das geht selten gut.
    4. Das Wichtigste zum Schluss: der persönliche Zugang zur Softwareentwicklung. Wenn man sich eigenständig mit der Materie beschäftigt, findet man erstens hoffentlich heraus, ob es einem liegt und/oder gefällt. Und zweitens hat man dabei die Möglichkeit, ohne Ausbilder u.ä. im Nacken einfach mal herumzuspielen. Es ist die Freiheit, die solche Sachen wie Facebook und Google hervorgebracht hat, um es mal etwas überspitzt zu formulieren.
    Deswegen würde ich auch von Büchern abraten und als Anfänger z.B. mal bei https://learnpythonthehardway.org/ vorbeischauen.
  22. Like
    KampfKatze reagierte auf neinal in Schulische Vorbildung: TG/IT oder BK/IT   
    Wie das Inhaltlich genau ist, weiß ich in deinem Fall nicht. Aber ich habe mein Fachabi an einer FOS gemacht. Da gibt es auch die Möglichkeit 2 Jahre zu machen -> Fachabi oder 3 Jahre -> Abi. Der Unterschied lag zum Beispiel darin, dass man für das Abitur eine zweite Fremdsprache braucht.
    Im Zweifel mal bei den beiden Schulen anrufen und einfach nachfragen. Die haben oft auch Material für sowas...
  23. Like
    KampfKatze reagierte auf Albi in Schulische Vorbildung: TG/IT oder BK/IT   
    HAHA... *räusper* Nein ganz ehrlich was das würde hier niemand machen und es ist ja toll das du noch nicht zufrieden bist und weiter gehen willst. Ich hatte damals auch nur einen Quali nach der Hauptschule, hab dann die Wirtschaftsschule gemacht um eine Mittlere Reife zu bekommen und nach längerem Hin und Her bin ich dann beim FIAE gelanden und hab meinen Traumjob gefunden
    Also um das gleich zu beantworten es reicht auch oft eine Mittlere Reife bei vielen Unternehmen um sich zu bewerben, aber klar hast du mit einem Abi oder Fachabi bessere Chancen  Wenn du das machst ist das toll, vor allem kannst du so wenn du möchtest auch noch neben dem Beruf studieren
    Also mach deine Mittlere Reife und entscheide dann ob du weitermachst, was sicher nicht verkehrt ist oder dich direkt bewirbst  Leider kann ich dir nicht sagen was der Unterschied beim BK IT und TG IT ist, beim TG denke ich halt wirst du eben das allgemeine Abi bekommen, was dir auch erlaubt Fächer zu studieren die nix mit der IT zutun haben, das Fachabi schränkt dich glaube ich auf Studiengänge mit IT bezug ein, keine Ahnung in wiefern Unternehmen hier noch mehr unterscheiden.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...