Zum Inhalt springen

Whiz-zarD

Mitglieder
  • Gesamte Inhalte

    2083
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    51

Alle Inhalte von Whiz-zarD

  1. Kümmere dich erstmal um deine Umschulung. IT-Sicherheit muss nicht unbedingt was mit Softwareentwicklung zu tun haben.
  2. Gegenfrage: Warum sollte man sie nicht benötigen?
  3. Natürlich ist sie erfolgreich, denn das Programm hat dir nichts gegenteiliges mitgeteilt. Hätte es nicht geklappt, hättest du ein "null" auf der Konsole ausgewiesen bekommen. Mit dem new-Operator befehligst du dem Gargabe Collector eine Instanz deiner Klasse zu erzeugen. D.h. der Gargabe Collector reserviert für dich den Speicher und gibt diesen auch wieder frei, wenn es keine Referenzen mehr auf dieses Objekt gibt. Die Referenz des Objektes speicherst du dann in dein Array. Um etwas weiter auszuholen, wie die Speicherverwaltung funktioniert: Es gibt erstmal zwei Arten von Datentypen: Wertetypen und Referenztypen. Wertetypen sind z.B. int, double, decimal, float, ... Sie haben eine definierte Größe. Referenztypen sind unsere Objekte. Sie haben eine variable größe. Je nachdem wie wir die Klassen schreiben. Dann gibt es zwei Arten von Speicherbereichen: Stack und Heap. Der Stack ist der Bereich, wo deine lokalen Variablen, je nach Zuständigkeitsbereich, abgelegt werden. Beispiel: public void Methode() { // i ist in der gesamten Methode sichtbar // da sie direkt im Methoden-Block deklariert wurde int i = 0; for(int x = 0; x < 100; x++) { int j = 0; // x und j sind nur im Block der for-Schleife sichtbar } } Wenn man Methode() aufruft, dann wird für die Methode die Variable i auf den Stack gespeichert. Für die for-Schleife werden die Variablen x und j gespeichert. Innerhalb der Schleife haben wir Zugriff auf i, da die Schleife innerhalb des Zustänidgkeitsbereich der Methode liegt. Ist die Schleife dann durch, dann können die Variablen die innerhalb der for-Schleife deklariert worden sind, wieder entfernt werden (x und j), weil wir sie nicht mehr brauchen und alles, was außerhalb der Schleife ist, kann nicht darauf zugreifen. Der Name "Stack" kommt daher, dass die Variablen immer auf einen Stapel gelegt werden. Dies ist möglich, weil die Größe einer Variable immer bekannt ist. Auch von Objekten, obwohl ich doch schrieb, dass sie unterschiedlich groß sind. Wieso das so ist, sehen wir gleich. Der Heap ist für die Objekte zuständig. Wenn wir also ein Objekt mittels dem new-Operator erzeugen, ermittelt der Garbage Collector, wie groß ein Objekt ist und sucht im Heap einen geeigneten Speicherbereich und gibt uns eine sog. Referenz zurück. Die Referenz nicht der Wert des Objektes, sondern eine Speicheradresse. Also die Adresse im Speicher, wo auch unser Objekt liegt. Die Adresse ist je nach 32- oder 64-Bit-Anwendung auch 32- oder 64-Bit lang und somit schließt sich auch der Kreis um den Stack. Wenn wir also nun: var player = new PlayerCharacter(); aufrufen, dann wird im Stack eine Variable mit dem Namen player gespeichert, die als Wert eine Speicheradresse besitzt. Etwas ähnliches passiert auch mit deinem Array. Genaugenommen speicherst du also nicht die Objekte in einem Array, sondern lediglich nur die Referenzen und durch die geschickte Syntax ist dann eine sog. explizite Deferenzierung, wie unter C/C++ nicht nötig, denn die Deferenzierung wurde mit Hilfe der sog. Punkt-Notation gelöst. Wenn du jetzt schreibst: Console.WriteLine(playerArray[0].Name); Wird mit dem Punkt (.) hinter playerArray[0] die Adresse dereferenziert. D.h. wir haben dann Zugriff auf die Eigenschaften/Methoden des Objektes. Mit der Dereferenzierung teilen wir also mit, dass wir den Inhalt des Speicherbereichs haben wollen. Ich hoffe, dass es erstmal so verständlich. Dass die Konsole "ProjektTerra.PlayerCharacter" ausgibt ist auch richtig. Die Methode WriteLine() ruft von deinem Objekt wiederrum die ToString()-Methode auf. Diese Methode steht jeder Klasse zur Verfügung und die Standard-Implementierung ist halt, dass der vollqualifizierte Name der Klasse zurückgegeben wird. Mit Hilfe des Schlüsselwortes override kannst du aber diese auch überschreiben: public class PlayerCharacter { public override string ToString() { // Deine Implementierung } }
  4. Die Frage ist, was willst du machen? Ein Studium ist nun mal keine Berufsausbildung. FHs und Unis sind Forschungseinrichtungen. Du lernst dort, wie man forscht. Zwar sind FHs praxisorientierter aber selbst dort wirst du nicht lernen, wie man einen Server oder ein Netzwerk einrichtet, sondern du lernst dort erstmal solide Grundlagen, die du für die Forschung benötigst. Also sowas wie lineare Algebra, Algorithmen und Datenstrukturen und theoretische Informatik, wobei in der theoretischen Informatik es weniger um Softwareentwicklung geht, sondern um die Beweisführung von Algorithmen. Vieles, was man in einem Studium lernt, wird man aber in der Praxis nicht gebrauchen.
  5. Möchtest du weiter als FISI arbeiten? Dann nein, ein Studium wäre nichts für dich.
  6. Gerade bei No Mans Sky hat das Team aber selber Schuld, weil sie selber einen Hype entwacht haben, den sie nicht gerecht wurden. Welche Mentalität? Es ging immer ums Geld. Warum kam es in den 80ern zum video game crash? Weil der Markt mit inkompatiblen Konsolen überschwemmt wurde, die alle ihre eigene Spielebibliothek hatten, die überwiegend aus schlechten Kopien der Arcade-Spielen bestanden. E.T. war nur die Spitze des Eisberges. Man hat Schrott am laufenden Band produziert. Viele scheinen auch die 90er zu romantisieren aber die Welt der Videospiele bestand mehr als aus Bullfrog, Blizzard, Westwood und id Software. Erinnert sich keiner mehr um die große Diskussion um die geschönten Screenshots? Das war ein großer Eklat in den 90ern und vom Sexismus will ich erst gar nicht sprechen. Nee, sorry, da sind wir schon ein großes Stück weiter, auch wenn der Sexismus in der Branche immer noch sehr hoch ist. Ich denke sowieso, dass es kurz oder lang wieder zu einem Crash kommen wird. Vielleicht nicht so heftig, wie in den 80ern und vielleicht sind wir da schon drinnen aber dass die Produktionskosten enorm in die Höhe steigen, zeigt, dass die derzeitige Entwicklung von Videospielen nicht haltbar ist. Mit Microtransactions hat man versucht, dagegen zu wirken aber das kam nicht gut an. Schon in den 90ern versuchte man es auch mit product placement aber dies kommt bei Spielern ebenfalls nicht gut an. Also wird man in Zukunft immer weniger größere Franchises sehen und irgendwann wird auch mal ein Call of Duty oder Assassins's Creed ausgelutscht sein. Ich denke, wir werden uns wieder mit simpleren Spielen begnügen müssen und seien wir doch mal ehrlich: Open World-Spiele sind jetzt auch nicht so der Hit. Ja, man kann sich vielleicht durch eine große Stadt bewegen aber sie ist komplett statisch und langweilig.
  7. Das eine schließt das andere doch nicht aus. Team-Building kann auch bedeuten zusammen Spaß zu haben. Sich auch privat näher kennenzulernen und je mehr man sich kennt, desto mehr Empathie kann man für den anderen aufbringen, was wiederum wichtig für die Zusammenhaltung des Teams ist.
  8. https://www.fh-wedel.de/bewerben/bachelor/computer-games-technology/ Ist zwar eine private FH und auch nicht gerade Günstig (weil Land Schleswig-Holstein meint, Fördergelder kürzen zu müssen) aber sie legt dennoch Wert auf Qualität und steht auch im engen Kontakt mit vielen großen Firmen rund um Hamburg.
  9. Richtig. Du kannst folgendes schreiben: var players = new Player[] { new PlayerCharacter(), new PlayerCharacter(), new PlayerCharacter() }; Und schon hättest du ein Array mit 3 Spielern. Mit dem new-Operator wird ein Objekt im Arbeitsspeicher (genaugenommen im sog. Heap) angelegt. Jedes Objekt hat somit seinen eigenen Speicherbereich und ist deswegen unabhängig von den anderen Objekten. Wenn wir also mit players[0] und players[1] auf die Objekte zugreifen wollen, haben wir unterschiedliche Objekte vom selben Typ.
  10. Bis auf Abschlussarbeiten wirst du nichts konkretes finden. Es hat schon seine Gründe, warum der Ausbildungsrahmenplan so allgemein verfasst wurde. Jedes Unternehmen ist anders und setzt einen anderen Fokus. Eine Firma entwickelt vielleicht mehr Stored Procedures in der Datenbank und dann liegt der Fokus mehr auf SQL, eine andere Firma verwendet vielleicht eine NoSQL-Datenbank und da kann durchaus kein SQL verwendet worden sein. etc. Der Ausbildungsrahmenplan bietet nur einen groben Überblick, was alles gelehrt werden sollte. Die Firmen können aber dennoch davon etwas abweichen. Welche Programmiersprachen gelehrt werden soll, wird ja auch nicht vorgegeben, da man nicht davon ausgehen kann, falls es vorgeschrieben wird, die Firma auch das Know-How besitzt. Wenn du also die Abschlussarbeiten anschaust und die Aufgaben lösen kannst, dann bist du doch gut dabei und ja, mich als Ausbilder kotzt es mich auch an, dass der Fokus eher auf dem Kaufmann liegt, da es heutzutage nicht mehr der Realität entspricht. Zum Thema "Gutes Verständnis von Objektorientierung und Datenmodellierung": Ich würde behaupten, dass selbst die meisten erfahrenen Softwareentwickler Objektorientierung nicht richtig verstanden haben. Der Vorteil von Objektorientierung liegt in der Umkehrung der Abhängigkeit und nicht, wie vielfach behauptet wird, in der Vererbung und Polymorphie, denn das kann auch C, auch wenn es nicht so komfortabel ist. Bei Datenmodellierung sehe ich auch, dass viele es falsch angehen. Oft wird Datenmodellierung gleichgesetzt mit "ER-Modell erstellen". So sehe ich das auch immer in hier den vorgestellten Abschlussprojekten. Objektorientierung und relationale Datenbanken passen aber nicht so recht zusammen. Deswegen muss man umständlich mit einem O/R-Mapper hin- und hermappen. Mit einer Datenbank, die zur Objektorientierung passt, wie z.B. dokumenbasierte Datenbanken, ist so ein Mapping nicht nötig und bietet sogar auch Vorteile. Warum stellt man also die Datenbank so in den Vordergrund? Die Datenbank ist doch nur für die Persistenz zuständig und es sollte doch egal sein, wie die Datenbank die Daten speichert. Wenn ich eine Liste von Key-Value-Pairs in die Datenbank speichern möchte, dann möchte ich das tun und sie nicht umständlich in eine Tabelle umwandeln. Ob man jetzt für einen Job geeignet ist, oder nicht, wird dir auch keiner beantworten können. Wenn aber ein Junior-Entwickler mit Wissen in Angular gesucht wird und man hat Wissen in Angular, dann ist man schon ein potenzieller Kandidat und wenn der Rest einen zusagt, dann sollte man sich einfach bewerben. Mehr als Nein können sie ja nicht sagen.
  11. Nein... Es ist einfach nur die größe der kleinesten Festplatte. Was ist daran so schwer zu verstehen?
  12. Ich denke, das kommt sehr stark auf die Firma an. Wenn man ein freundschaftliches Verhältnis zu den Arbeitskollegen und zum Chef hat und es auch kein Zwang und Druck gibt, sodass da auch überhaupt nichts bei rumkommen könnte und auch alles freiwillig ist und auch kommen und gehen kann, wann man will, warum nicht? Sobald aber der Chef ein Ziel vorraussetz, dann nein.
  13. Bei uns gilt weiterhin, solange Home Office zu machen, wie möglich. Da wir unseren Prozess an Scrum angelehnt haben, machen wir jeden Morgen ein Daily Meeting. Das haben wir auch vor Corona gemacht und wurde halt jetzt nur virtuell. Da berichtet halt jeder, was er den gestrigen Tag gemacht hat, was man plant am heutigen zu Tag zu machen und ob man Probleme hat, die man dann kurz anspricht. Unsere Chefs lassen uns schalten und walten, wie wir es für richtig halten, solange die Arbeit gemacht wird. Unser Sprint dauert zwei Wochen. Danach wird sind dann zusammengesetzt und die nächsten zwei Wochen geplant. Jeder weiß dann, was zu tun ist und dann werden halt die Aufgaben abgearbeitet. Zwischen Junior- und Senior-Entwickler gibt es auch bei uns keinen Unterschied. Die einzige Ausnahme habe ich mit unseren Azubis. Da ich der Ausbilder bin, hab ich mit denen vereinbart, ein kurzes Meeting am Ende des Tages zu halten, um ein kurzes Feedback zu bekommen, da man sich ja im Home Office nicht sieht. Dies ist aber keine Leistungskontrolle, sondern einfach noch mal ein kurzes Gespräch, ob sie auf Probleme gestoßen sind, die man noch mal kurz bespricht. z.B. wenn man schwierigkeiten hat, ein Ticket abzuschließen. Das ist bei uns nicht ganz so einfach oder Probleme hat, bei unserem hysterisch gewachsenen Programmcode den Überblick zu behalten. Bei uns gibt es auch im Home Office Gleitzeit aber es hat sich so ergeben, dass jeder einen geregelten Tagesrythmus hat, den man inzwischen auch kennt und wenn sich da irgendwas abweichen sollte, weil man z.B. nur einen halben Tag arbeiten möchte, wird das kurz im Daily meeting erwähnt, damit das Team bescheid weiß und bei Fragen ggf. frühzeitiger fragen.
  14. Ein Char ist ein Byte. Also eine Zahl von 0 bis 255 (bzw. von -128 bis 127). In der Informatik ist alles eine Zahl. Allerdings repräsentiert jede Zahl auch ein Zeichen. Welche Zahl welches Zeichen repräsentiert findet man in der ASCII-Tabelle. z.B. hat der Buchstabe A den Wert 65. In der folgenden Codezeile würde er also zwei Mal A ausgeben. printf("%c %c", 'A', 65); Die Angabe "100" (100 in Anführungszeichen) ist kein Char, sondern ein String bzw. im Falle von C ein Array von Char. Dieser String besteht aus 3 chars ('1', '0', '0'). Also 3 Bytes. Dass ein Char ein Byte ist, ist auch historisch betrachtet korrekt, da ein Byte die Speichermenge kennzeichnet, die benötigt wird, um ein Zeichen darzustellen. In unserem Fall 8 Bits aber es gab in der Vergangenheit Systeme, die z.B. 6 oder 12 Bits benötigten. Also war bei diesen Systemen 6 oder 12 Bits ein Byte.
  15. Was kommt im Alphabet nach p?
  16. Zumal ein Studium- oder Ausbildungsabschluss auch kein Garant ist, dass man wirklich kompentent ist. Ich hab vielfach mit Entwicklern zu tun, die zwar vor 20 Jahren ihren Diplom in Informatik gemacht haben aber sich dann nicht mehr weiterentwickelt haben. Das sind dann Fachidiotenidioten, die viel weiter von moderner Softwareentwicklung weg sind, als so manche Quereinsteiger.
  17. Was meinst du, wofür das p in Cp, Dp, etc. steht? Es sind die Paritätsdaten. A1, A2, etc. sind die Nutzdaten. Das ist ja der Witz an RAID. Die Daten werden in gleichgroßen Blöcken gleichmäßig auf den Festplatten verteilt.
  18. Was heißt berechnung von mir oder dem Link? Der Link sagt doch auch nichts anderes, als das was ich geschrieben habe. 🤨 Du musst doch nur auswendig lernen, welches RAID was macht. Der Rest kommt doch von alleine. Also ist es eine Zusammenfassung (RAID 0), eine Spiegelung (RAID 1) oder beides (RAID 10)? Werden die Paritätsdaten auf eine HDD (RAID 5) oder auf zwei HDDs (RAID 6) gespeichert? Wenn unterschiedlich große HDDs verwendet werden, wird immer von der kleinsten ausgegangen.
  19. Schon was von Bits und Bytes gehört? Ein Char ist ein Byte.
  20. Der Witz ist doch, dass RestAPIs unabhängig von der tatsächlichen Anwendungen sind. Es ist egal, ob es eine SPA, Android/iOS-App oder eine Windows/Linux-Desktop-Anwendung ist. Das nehmen, womit man das meiste Know-How hat. Es ist völlig egal, ob man nun Java, C#, NodeJS, Python, etc. und das dazugehörige Framework nimmt. Alle sind dafür gut geeignet. Datenbanken sind nur ein Detail, die unabhängig von der verwendeten Sprache und von RestAPIs sind. Also völlig irrelevant. Kann ja auch sein, dass an einer Stelle eine dokumentenbasierte Datenbank (z.B. MongoDB) sinnvoller ist und an einer anderen Stelle eine relationale Datenbank.
  21. Ich verstehe deine Frage nicht so recht. Du erzeugst ja ein Array mit Strings. Also in diesem Array sind Strings enthalten. Natürlich kannst du auch ein Array rückwärts durchlaufen aber in der Regel kommt das nicht so häufig vor und es gibt auch andere Wege, wie man ein Array rückwärts durchlaufen kann. z.B. mittels LINQ. Anstatt: for(int i = newText.Length-1; i >= 0; i--) { Console.Write(newText[i]); } Kannst du auch folgendes schreiben: Console.WriteLine(new string(newText.Reverse().ToArray())); Reverse() ist eine Erweiterungsmethode aus der LINQ-Bibliothek. Es dreht die Sequenz um, die man dann in ein Array umwandeln muss, da der Konstruktor von string ein Array von Char erwartet. (ToArray() ist ebenfalls eine Erweiterungsmethode aus LINQ).
  22. Wenn du mit einem Indexer auf den Inhalt einer Arrays zugreifen möchtest, dann fängt die Zählung bei 0 an und nicht bei 1. Die Variable x hat bei der Initialisierung den Wert von names.length (in deinem Fall 6) aber das 's' von "Hannes" hat den Index 5. Beim Index 6 greift er nun ins Leere und du bekommst dann die IndexOutOfRangeException.
  23. uVal wird nicht um 1 erhöht. uVal ist 1. Bzw. uVal wird um 2 erhöht. Da es aber einen Überlauf gibt, fängt er wieder bei 0 an.
  24. hh ist signed char und h ist short int. https://www.cplusplus.com/reference/cstdio/printf/
  25. Das findest du auch in Deutschland überwiegend. Obwohl der Beruf Fachinformatiker schon seit 1997 existiert, hat ihn selbst in Deutschland immer noch kaum jemand auf dem Zettel. Auch scheint die Anzahl der Anwendungsentwickler im Vergleich zu den Systemintegratoren klein zu sein. Gefühlt sind selbst hier im Forum zu 85% Systemintegratoren.

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...