|
|
Kennt sich jemand mit C++ programmieren aus?
|
Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 19.03.2015 04:07von miles187 • | 34 Beiträge
Seit einigen Wochen versuche ich etwas über C++ zu lernen und schaue mir deswegen Videotutorials an (crashkurs c++ ). Ich lese auch darüber, z.B. mein erstes Programm- hallo welt. Ich hab ja android auf meinem tablet und da soll c++ nicht so gut geeignet sein, sondern java. Aber ich hab jetzt einen c++ compiler für android downgeladen. Meine Frage ist: Wie gehe ich das am besten an, wenn ich Hacker werden will?
Ans Team: Ich weiß, das hat gar nichts mit Satanismus zu tun, aber das ist ja die offtopic-kategorie.
Nietzsche ging sogar soweit, dass er behauptete, "der Gott, den Paulus kreiert hat, sei die Negation dessen, was Gott zu heißen verdient: deus, qualem Paulus creavit, dei negatio"
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 19.03.2015 19:08von Daelach • | 1.214 Beiträge
Kommt drauf an, was Du denn willst. Software entwickeln kann alles sein vom Zusammenklicken einer Visual-Irgendwas-Anwendung (Visual Basic ist z.B. großartig für rapid prototyping oder kleinere Tools) bis hin zur Architektur verteilter Datenbankserver, bzw. auf der anderen Seite zum direkten Ansteuern der Hardware auf Ebene der Treiber oder sogar noch darunter. Mit Video-Crashkursen wirst Du da allerdings nicht weiterkommen, das vergiß mal gleich wieder. Besorg Dir ein anständiges Lehrbuch, sei es als Papier oder als PDF.
Außerdem unterscheidet sich die Vorgehensweise auch sehr stark, je nachdem ob Du bereits eine Programmiersprache kannst und daher nur lernen mußt, wie man sich in anderen Sprachen ausdrückt, oder ob Du noch gar keine kennst. In letzterem Falle wäre es eine bessere Idee, Dich sprachunabhängig mit der Idee von Prozeduren, Funktionen, call by value / call by reference und so vertraut zu machen. Dann Kontrollstrukturen aller Art, also logische Ausdrücke / Bool'sche Algebra, if-then-else, Mehrfachauswahl, Schleifen (zählergesteuert, kopfgesteuert, fußgesteuert). Oh, und Rekursion, das ist besonders nett.
Dazu natürlich auch grundlegende Datentypen und wie die funktionieren. Hier kannste mit C genau wie mit C++ bereits einiges an Überraschungen erleben, weil diese Sprachen undefinierte Bereiche enthalten (und das mit voller Absicht) - wenn Du da reinrennst, wirst Du als Anfänger nichtmal verstehen, wieso, sondern wirst auf einen Compilerfehler tippen. Dann die wichtigsten Datenstrukturen. Bitfelder, Arrays, einfach und doppelt verkettete Listen, Bäume. Und natürlich dynamische vs. statische Speicherverwaltung und wann man was benutzt.
Sofern Du auch noch mit mehreren Ablaufteilen arbeiten willst, kommen noch Mechanismen zur Threadkommunikation und Synchronisierung dazu.
Das Meiste davon hat mit C++ nichts zu tun, sondern es geht vor allem darum, daß Du grundlegende Konzepte verstehst, und zweitrangig erst die Frage behandelst, wie man das in C++ denn ausdrückt. Kann man allerdings didaktisch auch durchaus mischen, also daß Du diese Konzepte erlernst, indem Du sie dann zugleich auch in C++ umsetzt - dann lernst Du Konzepte und "nebenher" C++, das funktioniert auch (und ist üblicherweise in Lehrbüchern auch der Ansatz).
Aber wenn Du wirklich verstehen willst, was ein Computer unter der Haube tut, dann wirst Du um Assembler nicht herumkommen, zumindest mal als eine Art Exkursion. Dafür würde ich dann aber nicht gerade x86 empfehlen und schon gar nicht moderne x86 mit ihren endlos langen Pipelines, sondern eher z.B. Z80-Assembler. Ist vom Ding her dasselbe, nur deutlich simpler und somit leichter verständlich.
Ich würd Dir übrigens von Android erstmal energisch abraten, weil Du die eigentliche Entwicklung der Software ja sowieso auf dem PC machst und am Ende nur das Programm aufs Smartphone lädst. Mit nem Smartphone und Touchdisplay programmieren ist einfach ungeeignet. Mein nächster Rat ist, laß zu Anfang die Finger von graphischen Oberflächen. Das biste zu 90% mit der Oberfläche zugange.
Installier Dir irgendein Linux, z.B. ein Livelinux auf USB (Knoppix geht da durchaus ganz gut), hau Dir den GCC und ne nette IDE drauf und programmier für den Anfang erstmal Konsolenanwendungen, also die keine Maus haben, sondern im Textmodus laufen. Eine IDE mit graphischen Debugger sollte es sein, dann kannste Schritt für Schritt durch Deine Programme durchgehen und schauen, wie sie ausgeführt werden.
~ a star is nothingness disguised as light ~
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 26.04.2015 23:29von Gelöschtes Mitglied
Ist jetzt vielleicht ein bissl spät, aber das C++-Modul an unserer FH habe ich mit 1 abgeschlossen. Bin also recht fit.
Wenn du konkrete Fragen hast, kann ich gern helfen. Aber die Herangehensweise, mit C++ "Hacken" zu lernen, erscheint mir reichlich naiv.
Hacken ist das sich Einarbeiten in und das Verstehen und Manipulieren von komplexen, (meist) technischen Systemen. C++ ist ein Hilfsmittel zur Implementierung von Software.
Du fragst nun, wie du den Umgang mit dem Skalpell erlernen sollst, damit du komplexe Hirnoperationen durchführen kannst. Selbst begabte Programmierer brauchen ein paar Semester Erfahrung und theoretisches Wissen, bis sie selbstständig komplexe Probleme lösen können. Wir wurden im Grundstudium mit wöchentlichen Aufgaben gequält, die sukzessive anspruchsvoller wurden. Programmieren lernt man nämlich nicht durch Bücher und - da hat Daelach völlig Recht - schon gar nicht durch Videos! Erfahrung ist alles. Und davon wirst du reichlich brauchen, denn du wirst Unmengen an dämlichen Fehlern machen, die dich ganze Nächte kosten. Ich würde nicht so weit gehen, dass ein Studium zwingend notwendig ist, aber du wirst sehr viel Disziplin und Zeit aufwenden müssen, wenn du wirklich anständige Programme schreiben können willst. An der Hochschule bist du gezwungen, regelmäßig auf recht hohem Niveau zu programmieren. Diesen Zwang sich selbst aufzuerlegen ist nicht einfach. Die Versuchung ist sicher groß, die ein oder andere Herausforderung zu überspringen, weil "ach, das kann ich ja später noch vertiefen, wenn ich es mal brauche". Nur fehlt genau dann die notwendige Erfahrung und der folgende Frust führt dann meist zur Aufgabe.
Es brechen viele ihr Studium ab, weil die praktische Informatik anfangs total easy aussieht, und kaum hat man geblinzelt, sind die Ansprüche schon exponentiell gestiegen.
Von C++ würde ich Anfängern eh abraten. Die Mächtigkeit von C++ übersteigt die Fähigkeiten von Anfängern bei Weitem. Dafür ist es zum Lernen nicht so geeignet wie z. B. Java. Wenn du Java erstmal auf dem Schirm hast, kannst du dir die Besonderheiten von C++ in weniger als vier Tagen selbst beibringen. Es ist für den Beginn aber völlig unnötig mit Kanonen auf Spatzen zu schießen. Mache es dir nicht schwerer als es eh schon ist. Als Anfänger hat man mit der grundlegenden Strukturen schon genug zu tun, als dass man mit Zeigern hantieren und sich um Garbage Collection und Speicherüberläufe sorgen sollte.
Im Gegensatz zu Daelach würde ich dir aber schon DRINGEND dazu raten, die Konzepte anhand einer Programmiersprache zu erlernen. Wer die Konzepte nur aus Büchern kennt, wird kein Gefühl dafür entwickeln wann er sie wie am besten anwendet. Es hilft nur Eines: Programmieren, programmieren, programmieren. Sorry, aber sonst wird das nix. Wer weiß, wie Gas und Kupplung funktionieren, kann noch lange nicht Autofahren. Ziel des Programmieren Lernens ist es nicht, die Begriffe von Operatoren und Kontrollstrukturen runterrattern zu können, sondern eine algorithmische Denkweise reifen zu lassen. Schrecke auch vor anspruchsvollen Aufgaben niemals zurück und gebe nur auf, wenn du dich wirklich klar übernommen hast. Gewöhne dir außerdem an, deinen Code von Anfang an gut zu kommentieren und die Code Conventions der jeweiligen Progrsmmiersprache einzuhalten. Es ist sehr schwierig, nach wenigen Monaten Abstand den eigenen Quellcode eines komplexeren Programms nachzuvollziehen, wenn dieser nicht ausreichend kommentiert ist.
Ich würde mich an deiner Stelle als Gaststudent an einer Fernhochschule einschreiben.
Ich halte es für ausgeschlossen, einen guten Programmierstil zu entwickeln, ohne ständiges Feedback eines erfahrenen Programmierers. Man denkt zwar immer, der eigene Code sei grandios, wird aber über enorme Probleme stolpern, sobald die Programme etwas größer werden. Wer zu lange auf niedrigem Niveau verweilt, läuft Gefahr, sich dusslige Angewohnheiten anzueignen, die er später nie (oder schwer) wieder los wird. Ich kenne da so ein paar Fälle und glaub' mir: Du willst so nicht enden! ;-)
Natürlich geht es auch im Alleingang, aber dann wirst du damit leben müssen, unterdurchschnittlich zu sein.
Ich würde den Hacker-Ansatz auch erstmal komplett auf Eis legen. Programmieren ist eine wichtige Säule, aber damit ist es längst nicht getan. Es ist sicher ganz toll mit einem Skalpell herumwirbeln zu können, aber ohne Anatomie-Kennnisse wird das ein sehr zielloses Vergnügen.
Lohnende Ziele von Angriffen sind oft Schnittstellen des Betriebssystems. Es bietet sich also auf jeden Fall an, den theoretischen Aufbau von Betriebssystemen zu erlernen und dich dann auf eine Familie (Linux/Windows/etc.) praktisch zu spezialisieren. Der Tanenbaum ist Pflichtlektüre, und zwar in der englischen Originalfassung "Modern Operating Systems". Die deutsche Übersetzung ist grauenhaft. Dann bekommst du auch ein Gespür dafür, welche Aspekte sich überhaupt angreifen lassen und was sich so damit erreichen ließe. Wer einfach nur drauflos "hacken" will, weil Hacken ja irgendwie evil und cool ist, der sollte sich lieber fertige Software besorgen und sich als Script-Kiddy seine Lolz verdienen. Als richtiger Hacker wird er nicht weit kommen. Dafür braucht es Leidenschaft für die Technik AN SICH.
Danach kannst du dann sehen, in welche Richtung du weitergehen willst. Aber das kannst du zu gegebener Zeit entscheiden. Bis du den Grundstock drauf hast, wird es eine ganze Weile dauern. Für die besinnlichen Stunden zwischendurch kann auch ein Buch oder Hochschul-Script zu IT-Sicherheit nicht schaden.
Bei mir war es zum Beispiel tatsächlich so, dass diese ganze Hacker-Romantik nicht ganz unausschlaggebend dafür war, dass ich ein Informatikstudium begonnen habe. Die Blicke über den Tellerrand führten mich dann aber zu einer neuen Leidenschaft, der 3D-Grafikprogrammierung, auf die ich mich nun spezialisiert habe. Einen Ping Flooder, Key Logger, Trojaner oder IP Spoofer könnte ich im Schlaf entwickeln, aber es reizt mich einfach nicht mehr. Warum denn auch? Ja gut, dann raucht irgendwo ein Rechner ab, oder das SWAT Team schaut vorbei. Und dann? "Hihihi, ich bin so böse!"?
Ich glaube, wer sich an solchen schädlichen Handlungen aufgeilt, hat eine ernsthafte Profilneurose an der Backe und sollte lieber mal sein eigenes System hacken. Ich glaube außerdem, ich hatte sowas nie wirklich vor. Ich wollte nur wissen wie es geht, weil es mich halt faszinierte, wie kleine, pickelige Jungs Waffengleichheit mit Geheimdiensten erreichen. Und nun da ich es weiß, wende ich mich Dingen zu, die auch einen ganz konkreten Nutzen haben. Gut, ich könnte mit der Hackerei auch irgendwas Kriminelles tun. Aber egal wie clever man sich dabei anstellt, ist das Risiko aufzufliegen, nie befriedigend auszuschließen und die zu erwartenden Strafen selbst hier in Deutschland drakonisch. Man kann natürlich auch in der Sicherheitsbranche Fuß fassen, aber das wäre mit persönlich zu langweilig.
Anders als Daelach halte ich Assembler-Kenntnisse übrigens für überflüssig, wenn du nicht gerade in die hardwarenahe Programmierung einsteigen willst. Die Funktionsweise von Prozessoren und Speicher ist im Tanenbaum recht gut beschrieben. Man muss das IMO nicht praktisch nachvollziehen, weil man es halt auch wirklich nicht braucht. Ich habe meine Assembler-Kenntnisse im Studium abseits von den Übungen nur ein einziges Mal benötigt; nämlich in der Digitaltechnik-Prüfung. Ich kann mir auch nur exotische Hacker-Szenarien vorstellen, wo Assembler dir nutzen könnte. Hacker greifen meist auf die Betriebssystem- oder Anwendungsebene zu. Im weitesten Sinne umfasst Hacken natürlich auch Reverse Engineering, die Maniplation von Automaten und Robotern und andere Geschichten, wo die Hardwareebene interessant wird. Das ist meist aber weniger gemeint.
Die Arbeitsweise des Prozessors ist nice to know, aber gar nicht so entscheidend, weil die objektorientierte Programmierung eh einen recht abstrakten Ansatz fährt. Die Fütterung der Register übernimmt der Compiler für dich. Vertiefe dich lieber in Shell Scripts, Netzerk-Gedöns oder Kryptographie. Und mach niemals irgendeinen Scheiß, bevor du ganz sicher weißt, was du tust!
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 28.04.2015 17:26von Daelach • | 1.214 Beiträge
Sowas wie die NOP-Rutsche, Heap-Spraying usw. halte ich nicht für nebensächlich. Gerade wenn man Buffer Overflows ausnutzen will, läuft es doch auf Assembler raus. Übrigens sind es insbesondere die Leute, die direkt mit objektorientierten Frameworks angefangen haben, auch diejenigen, die nicht verstehen, was unter der Haube abgeht, und die eben deswegen sowohl zu ineffizienten wie auch zu unsicherem Code neigen. Am übelsten die "Java ist ein toller Einstieg"-Fraktion.
~ a star is nothingness disguised as light ~
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 28.04.2015 19:44von Gelöschtes Mitglied
Zitat von Daelach im Beitrag #4
Sowas wie die NOP-Rutsche, Heap-Spraying usw. halte ich nicht für nebensächlich. Gerade wenn man Buffer Overflows ausnutzen will, läuft es doch auf Assembler raus.
So ein Blödsinn. Speicherüberläufe werden meist indirekt ausgelöst, indem man sich Schwächen von Software zunutze macht, die auf einer viel höheren Schicht aufsetzen. Assembler ist heute eher für die Microcontroller-Entwicklung interessant, aber doch nicht, wenn ich mir Zugang zu einem System verschaffen will (Von Chipkarten-Gedöns und anderer Exotik mal abgesehen).
Zitat von Daelach im Beitrag #4
Übrigens sind es insbesondere die Leute, die direkt mit objektorientierten Frameworks angefangen haben, auch diejenigen, die nicht verstehen, was unter der Haube abgeht,
Ja, als ob man das später nicht mehr lernen könnte.
Genauso bescheuert finde ich übrigens die verbreitete, gegenteilige Meinung, dass jeder, der nicht mit objektorientierter Programmierung angefangen hat, sein Denken für immer für diesen Ansatz verseucht hat. Vielleicht mag das ja auf irgendwelche Trottel alles zutreffen, aber wer Hacker werden will, sollte so flexibel sein, dass er mit jedem Paradigma umgehen könnte.
Zitat von Daelach im Beitrag #4
und die eben deswegen sowohl zu ineffizienten wie auch zu unsicherem Code neigen.
Totaler Quatsch. Effizienz ist ein algorithmisches Problem. Bei zeitkritischen oder rechenintensiven Anwendungen führe ich eh eine Komplexitätsanalyse durch. Um das vernünftig zu tun, sollte man studiert haben, weil das ist halt sehr mathematisch. Glücklicherweise war Effizienz noch nie so unwichtig wie heute. Früher ging es um jeden Taktschlag und jedes Kilobyte. Der moderne Ansatz ist, die Wartbarkeit in den Vordergrund zu stellen.
Und was die Codequalität angeht, kann man mit Assembler genauso einen Mist bauen wie mit jeder anderen Sprache auch. Entscheidend ist ein guter Lehrer und Talent. Nicht, womit man anfängt. Die Grundsätze guter Codequalität ändern sich ja nicht.
Zitat von Daelach im Beitrag #4
Am übelsten die "Java ist ein toller Einstieg"-Fraktion.
Weil man erst heldenhaft durch den Assembler-Schlamm gerobbt sein muss, bevor man ein ganzer Mann ist? Ich weiß immer nicht, was so mancher Laie an Assembler immer so elitär findet. Vielleicht, weil es anfangs etwas kryptisch aussieht? Ich habe Assembler nach Java gelernt und fand es kinderleicht. Auf jeden Fall leichter als Java. Aber eben auch sehr viel mechanischer, linearer und uneleganter.
Es hat auch schon seinen Grund, warum die meisten Hochschulen Java in den Grundlagen-Kursen benutzen.
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 28.04.2015 20:13von Daelach • | 1.214 Beiträge
Zitat
Speicherüberläufe werden meist indirekt ausgelöst, indem man sich Schwächen von Software zunutze macht.
Richtig. Dann gibt es oftmals z.B. einen Absturz. Weil auf einmal Daten ausgeführt werden, die kein Code sind. Will man einen Exploit haben und nicht nur einen Bluescreen, muß man demzufolge gezielt Daten schreiben, die man auch als Maschinencode ausführen kann. Da man schwer sagen kann, wo genau die Ausführung losgehen wird, hat man die sog. NOP-Rutsche erfunden. Um zu begreifen, wie die funktioniert, braucht es dann aber natürlich Assembler.
Zitat
Assembler ist heute eher für die Microcontroller-Entwicklung interessant
Längst nicht mehr, die Zeiten sind vorbei. Das macht man heute auch in C - und natürlich mit den allfälligen Buffer Overflows und wiederum den Exploits per NOP-Rutsche. Assembler nutzt man da allenfalls noch für den Startupcode, bevor man in die main-Routine springt. Immerhin hat zumindest die Automobil-IIndustrie erkannt, daß man in C weitaus mehr machen kann, als man im Normalfall sollte, und deswegen in Form des MISRA-Standards eine Menge von dem, was C kann, schlichtweg verboten. Wobei man natürlich schon die Verbote übertreten kann, so strikt ist das nicht, aber wenn man es tut, muß man technisch begründen, warum das in dem Fall die bessere Wahl ist.
Ich hab auch schon in C nahezu in Assembler-Stil programmiert und dabei die Freiheiten genutzt, die die Sprache bietet - aber nur dann, wenn das auch notwendig war. Beispielsweise für extrem hardwarenahe und zugleich zeitkritische Sachen. Aber wenn ich wirklich "dreckig" programmiere, dann weiß ich auch, wieso.
Zitat
Ja, als ob man das später nicht mehr lernen könnte.
In der Praxis findet das dann oftmals nicht wirklich statt. Genauso verfehlt halte ich es übrigens auch, wenn man Leute direkt mit C einsteigen läßt, nur weil das sehr verbreitet ist. Damit lernt man nie, wirklich strukturiert zu programmieren, und jede Menge Probleme bei an sich trivialen Umstellungen wie von 32 auf 64bit kommen daher, daß die Leute nie was anderes als die schlampige Denkweise gelernt haben, die C eben durchaus erlaubt.
Zitat
Effizienz ist ein algorithmisches Problem.
Jede Menge zäher Java-Programme belegen das Gegenteil. Nicht, daß Java zwangsläufig so lahm sein muß, schon gar nicht mit JIT-Compilern, aber da nehmen Leute eben die Beispiele aus den Lehrbüchern und setzen sie real ein - wofür sie aber nie gedacht waren. Kann man besser machen, in der Praxis wird es das aber oftmals nicht.
Zitat
Glücklicherweise war Effizienz noch nie so unwichtig wie heute.
Falsch. Rate mal, wieso Steve Jobs seinerzeit Flash aus iOS geworfen hat - weil es nicht nur Sicherheitslücken en masse hat, sondern auch noch extrem ineffizient ist und deswegen die Akkulaufzeit dramatisch reduziert. Heutige Mobilgeräte haben keine Rechenkraft wie fette Desktop-x86er. Mach dieselbe Aufgabe mit dem halben Rechenaufwand, und Du hast auch nur den halben Energieaufwand, etwas vereinfacht gesagt.
Das ist aber nicht nur bei Mobilgeräten wichtig, sondern durchaus auch bei Servern. Die kosten nämlich Geld, und umso mehr, je fetter man sie wählt. Außerdem kosten sie auch noch Energie im Betrieb, und nicht nur für sich selber, sondern auch noch für die Klimatisierung.
Zitat
Der moderne Ansatz ist, die Wartbarkeit in den Vordergrund zu stellen. Verleugnet wird das eigentlich nur von Profilneurotikern, die sich für besonders elitär und oldschool halten.
Effizienter Code muß nicht schlecht lesbar sein. Tatsächlich halte ich sogar das Gegenteil für wahr. Wenn ich Code schreibe, meide ich jedwede Ausdrücke, bei denen man nicht auf den ersten Blick sieht, was da gemacht wird. Lieber spalte ich das auf mehrere Zeilen auf, der Compiler wirft am Ende sowieso denselben Code raus und wird durch kryptische Konstrukte allenfalls an seiner eigenen Optimierung gehindert.
Zitat
Nicht, womit man anfängt.
Doch. Was ich schon an C-Code gesehen habe, das geht auf keine Kuhhaut, und 90% davon wäre gar nicht erst passiert, wenn die Leute mit einer brauchbaren Lehrsprache wie Pascal erstmal das klare Denken gelernt hätten. Das ist übrigens so in etwa der Sinn von MISRA - daß man in C auf eine recht pascalhafte Weise programmiert.
Zitat
Weil du nicht mit Java angefangen hast?
Weil ich sehe, was dabei rauskommt. Wenn man die Dinge nicht mehr von der Pike auf lernen will, weil das zu lange dauert und man ja unbedingt nach nur 6 Semestern die Leute aus dem Studium feuern will, dann bekommt man eben schlechtere Ergebnisse. Ganz besonders dann, wenn man zuvor auch schon das Abitur, je nach Bundesland, auf einen besseren Realschulabschluß reduziert hat. Dann haste am Ende Leute, die das, was sie tun sollen, nicht mehr wirklich verstehen.
Aber gut, ich will mich nicht beschweren, wenn dem so ist, denn ganz egoistisch gesehen ist für mich ist diese Entwicklung ja durchaus positiv.
Zitat
Es hat schon einen Grund, warum die meisten Hochschulen Java in den Grundlagen-Kursen benutzen.
In welchem Studiengang? In Informatik? Ja nun, Informatik ist auch nicht Codierung, sondern hat völlig andere Schwerpunkte. Einen Informatiker würde ich nicht in die Implementierung eines Projektes setzen, dafür ist er normalerweise nicht qualifiziert, sondern den würde ich eher z.B. in der Validierung beschäftigen.
~ a star is nothingness disguised as light ~
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 29.04.2015 12:37von S_J • | 455 Beiträge
Zitat von Daelach im Beitrag #6
In welchem Studiengang? In Informatik? Ja nun, Informatik ist auch nicht Codierung, sondern hat völlig andere Schwerpunkte. Einen Informatiker würde ich nicht in die Implementierung eines Projektes setzen, dafür ist er normalerweise nicht qualifiziert, sondern den würde ich eher z.B. in der Validierung beschäftigen.
Waaah, jetzt merk ich's also erst, ich hab mit meinem Fremdsemester Informatik den falschen Kurs belegt
Da hammse uns auch mit Java gequält ...
Ganz blöde Frage dann mal: Wenn die Informatiker an der Uni die wirklichen Basics nicht lernen, woher bekommt man sie denn sonst? Lehrbücher, Ausbildung?
Sogar in meiner gymnasialen Oberstufe hat man sich mittels einfacher mathematischer Formeln mal an Assembler herangetastet. Das Schöne daran ist eben, dass man jeden einzelnen Schritt im Prinzip wirklich kennt und so weiter .. wurde uns da also schon als "die Basis" vermittelt, wenn auch mit dem Hinweis, dass man sich damit heutzutage praktisch nicht mehr befasse(n brauche). Ansonsten gab es allerdings viel grafische Oberfläche, einfach, weil es für eine spielerische Herangehensweise schon schön war, auch zu "sehen", ob und dass etwas passiert. Und um if-then-else zu trainieren, und ggf. auch einfache Zählschleifen, war eine Oberfläche, in der man kleine Auto-Images eine Straße herunterfahren lassen konnte, und Verkehrsampeln "umschalten" (bei mir gab es dann immer auch mal einen Crash mit Feuer und so :D) wirklich schon ganz lustig.
Ist halt alles weit weg von "echten" Anwendungen gewesen, und ich denke, das ist es dann auch, woran es scheitert. Klar ist das nett, wenn man mal nachlesen kann, wie man sich eine Mini-Anwendung schreibt, die Einem einen komplementären DNA-Strang ausgibt o.ä. Aber ich für meinen Teil lerne einfach auch deutlich besser, wenn ich irgendeinen Bedarf daran habe oder sehe, das Gelernte auch zu verwenden. Wie sich's für mich darstellt, sind die einen Sachen so simpel, dass man sie nicht wirklich braucht, und die Dinge, die mich interessieren würden, so kompliziert, dass es wohl aussichtslos ist, das zu lernen, ohne eine gehörige Portion Zeit und Energie zu investieren. Das muss man dann schon, wie so viele Dinge, wirklich wollen, wenn dabei etwas herauskommen soll.
Wenn ich Hacken wollte, würde ich mir erstmal einen Haufen Nerds zulegen, die das schon können :D Ich glaube, Computer zum Abstürzen zu bekommen muss nicht notwendigerweise schwer sein, wenn man sich ein paar Tricks aneignet. Aber "klares Denken" (sehr schön formuliert btw :D) sollte man wohl generell einigermaßen können, wenn man mit Maschinen kommunizieren möchte.
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 29.04.2015 13:00von Gelöschtes Mitglied
Zitat von Daelach im Beitrag #6
Da man schwer sagen kann, wo genau die Ausführung losgehen wird, hat man die sog. NOP-Rutsche erfunden. Um zu begreifen, wie die funktioniert, braucht es dann aber natürlich Assembler.
Nein, man muss wissen wie die CPU arbeitet, dass es Register, Adressen und einen Stack gibt, der sich mit Nulloperationen aufblähen lässt usw.. Aber man muss ganz sicher nicht Assembler lernen. Man schleust ja keinen Assembler-Code ein, sondern bereits kompilierten Maschinencode. Ich habe ja auch Assembler gelernt, aber dadurch nichts Neues über die Arbeitsweise eines Computers erfahren, außer, dass es gut ist, dass man sich heute nicht mehr damit plagen muss. Allgemein finde ich, dass man sich so spezielle Sachen gezielt aneignen kann, wenn man sie mal brauchen sollte. Der NOP slide ist ein Klassiker, aber um ihn anwenden zu können, sollte man lieber gut in einer Hochsprache zuhause sein als in Assembler.
Assembler schadet aber natürlich nicht und ist sicher auch eine interessante Erfahrung. Dass man ihn aber braucht, um die Arbeitsweise des Computers zu verstehen, halte ich für übertrieben. Wer die Arbeit auf Prozessorebene verinnerlichen will, der soll damit rumspielen. Wer Besseres zu tun hat, der lässt es halt.
Zitat von Daelach im Beitrag #6
Längst nicht mehr, die Zeiten sind vorbei. Das macht man heute auch in C
Das kommt auf den Anwendungszweck an. Im Embedded Systems Bereich wird Effizienz nämlich wieder ziemlich wichtig und da kann es sich lohnen, kritische Passagen auf Assembler auszulagern. C bringt nun mal doch einen gewissen Overhead mit sich, der unnötig Leistung kosten kann. Ansonsten lieferst du hier aber ein schönes Beispiel für die gegenwärtige Entwicklung, dass Effizienz immer mehr an Wichtigkeit verliert.
Zitat von Daelach im Beitrag #6
In der Praxis findet das dann oftmals nicht wirklich statt. Genauso verfehlt halte ich es übrigens auch, wenn man Leute direkt mit C einsteigen läßt, nur weil das sehr verbreitet ist. Damit lernt man nie, wirklich strukturiert zu programmieren, und jede Menge Probleme bei an sich trivialen Umstellungen wie von 32 auf 64bit kommen daher, daß die Leute nie was anderes als die schlampige Denkweise gelernt haben, die C eben durchaus erlaubt.
Jede Programmiersprache erlaubt Schlampigkeiten; besonders übrigens die Scriptsprachen. Es hat aber auch seine Vorteile, z. B. mit Python zu beginnen. Ich bleibe dabei: Man kommt um einen guten Dozenten nicht herum. Dann ist es auch fast egal, mit welcher Sprache man beginnt. Die großen Schlampigkeiten fangen ja schon bei der Planung an. Wer schon die Software-Architektur vernünftig designt, Klassen- und Ablaufdiagramme anfertigt und die wichtigsten Algorithmen in Pseudocode verfasst, der wird mit der Implementierung die wenigsten Schwierigkeiten haben.
"Strukturiert programmieren" muss man ja auch im Kontext des verwendeten Paradigmas sehen. Wer an objektorientierte Programmierung so herangeht, wie er es bei der prozeduralen Programmierung gelernt hat, wird ganz sicher nicht "strukturiert programmieren".
Java halte ich für geeignet, weil es IMO den besten Kompromiss bietet.
Zitat von Daelach im Beitrag #6
Jede Menge zäher Java-Programme belegen das Gegenteil.
Das hat aber doch nichts mit effizienter/ineffizienter Programmierung zu tun, sondern damit, dass Java in der JVM läuft!
Die Performance verkackt meist an Algorithmen mit viel unnötiger Redundanz. Wie diese implementiert werden, hat dann eher einen Einfluss auf die Übersichtlichkeit, wenn man den Algorithmus wirklich vollständig und halbwegs minimal abbildet.
Zitat von Daelach im Beitrag #6
Falsch. Rate mal, wieso Steve Jobs seinerzeit Flash aus iOS geworfen hat - weil es nicht nur Sicherheitslücken en masse hat, sondern auch noch extrem ineffizient ist und deswegen die Akkulaufzeit dramatisch reduziert. Heutige Mobilgeräte haben keine Rechenkraft wie fette Desktop-x86er. Mach dieselbe Aufgabe mit dem halben Rechenaufwand, und Du hast auch nur den halben Energieaufwand, etwas vereinfacht gesagt.
Natürlich ist Effizienz für spezielle Fälle, wie Multimedia-Anwendungen, Spiele, medizinische Anwendungen, Embedded Systems usw. ungeheuer wichtig. In den aller meisten Fällen ist sie das aber nicht und man sollte die Prioritäten anders setzen.
Warum meinst du, werden heutzutage so häufig rekursive Aufrufe benutzt? Die kacken gegen iterative Alternativen völlig ab, aber sie sind eben übersichtlich. Man sieht sofort wie sie funktionieren und das erhöht die Wartbarkeit des Quellcodes. Bei der heutigen Rechenpower ist die Performance meist zweitrangig. -Auch bei mobilen Geräten.
Ich selbst bin ja nun hauptsächlich mit 3D-Grafikprogrammierung beschäftigt. Da ist Effizienz ein großes Thema, weil jede unnötige Shader-Anweisung sich doof auf die Framerate auswirken kann. Wenn man objektiv bleiben will, darf man aber nicht davon ausgehen, was man selbst so kennt und tut.
In der Anwendungsentwicklung ist es meist viel wichtiger und kostensparender, einen gut wartbaren Code zu haben, als ein paar Mikrosekunden Rechenzeit einzusparen.
Zitat von Daelach im Beitrag #6
Das ist aber nicht nur bei Mobilgeräten wichtig, sondern durchaus auch bei Servern. Die kosten nämlich Geld, und umso mehr, je fetter man sie wählt. Außerdem kosten sie auch noch Energie im Betrieb, und nicht nur für sich selber, sondern auch noch für die Klimatisierung.
Ist auch sehr speziell.
Zitat von Daelach im Beitrag #6
Effizienter Code muß nicht schlecht lesbar sein. Tatsächlich halte ich sogar das Gegenteil für wahr.
Naja, beim effizienten Code steht die Technik im Vordergrund, bei der Lesbarkeit der Mensch. Wie ich schon schrieb, schlagen rekursive Aufrufe derb auf die Performance, aber man benötigt weniger Code und sie sind für den Menschen leichter nachzuvollziehen. Man sieht es auch schön an den gängigen Sortier-Algorithmen, dass gerade die weniger Performanten, inutuitiver zu erfassen und zu implementieren sind. Das ist auch der einzige Grund, warum sie überhaupt noch verwendet werden.
Zitat von Daelach im Beitrag #6
Wenn ich Code schreibe, meide ich jedwede Ausdrücke, bei denen man nicht auf den ersten Blick sieht, was da gemacht wird. Lieber spalte ich das auf mehrere Zeilen auf, der Compiler wirft am Ende sowieso denselben Code raus und wird durch kryptische Konstrukte allenfalls an seiner eigenen Optimierung gehindert.
Es geht ja auch nicht um "Ausdrücke", sondern - wie ich schon sagte - um die Konzeption der Algorithmen. Mit ihnen steht und fällt die Übersichtlichkeit. Die Code Conventions einzuhalten und möglichst "sprechend" zu programmieren, ist eine Selbstverständlichkeit.
Zitat von Daelach im Beitrag #6
Doch. Was ich schon an C-Code gesehen habe, das geht auf keine Kuhhaut, und 90% davon wäre gar nicht erst passiert, wenn die Leute mit einer brauchbaren Lehrsprache wie Pascal erstmal das klare Denken gelernt hätten. Das ist übrigens so in etwa der Sinn von MISRA - daß man in C auf eine recht pascalhafte Weise programmiert.
Das "klare Denken" lernt man aber nicht durch eine bestimmte Programmiersprache, sondern durch das sprachunabhängige Formulieren von Algorithmen. Die Implementierung ist eigentlich recht banal; der Hinrschmalz steckt in der Planung. Jede Sprache hat doch ihre Besonderheiten auf die man individuell eingehen muss. Wenn ich mit Python oder JavaScript programmiere, gehe ich völlig anders an die Implementierung, als wenn ich mit Java oder C++ arbeite. Aber der abstraktere Part der Entwicklung ändert sich doch nicht. Du schränkst dich nur unnötig ein, wenn du schon beim Algorithmieren in einer bestimmten Sprache denkst und hast so imo eher einen Nachteil, dich auf weitere Programmiersprachen einzulassen.
Zitat von Daelach im Beitrag #6
Weil ich sehe, was dabei rauskommt.
Weißt du was ICH zu sehen meine? Du bist von der "der Weg, den ich gegangen bin, ist eh der Beste"-Fraktion. Kann das sein? ;-)
Zitat von Daelach im Beitrag #6
Wenn man die Dinge nicht mehr von der Pike auf lernen will
Naja, so ganz "von der Pike auf" ist das aber auch nicht. Da muss man natürlich den Weg gegangen sein, den ICH gegangen bin. *zwinker, zwinker*
Also Transistoren zu Flip Flops zusammensetzen, mit denen Logikgatter aufgebaut werden, um daraus arithmetische Operatorschaltungen zu basteln, die man anschließend mit Karnaugh minimiert, bis man irgendwann seinen eigenen Prozessor hat. Hey, wir haben in der theoretischen Informatik sogar gelernt, wie wir eigene Programmiersprachen entwickeln und Compiler bauen. Und was ist denn bitte ein Entwickler, der nie was von Automatentheorie gehört hat? Und du hältst Assembler für die "Pike"?
Ich gestehe mal was: Es ist für die meisten Fälle gar nicht nötig über jeden Scheiß Bescheid zu wissen. Die Systemhierarchie ist so intelligent abstrahiert, dass man sehr wenig über die unteren Ebenen wissen muss, wenn man Anwendungen entwickelt. Klar, grad beim Hacken will man genau diesen hierarchischen Aufbau auch gern mal ausnutzen. Wie tief man da gehen will, muss jeder selbst wissen. Man kann auch sehr viel machen, wenn man nur auf Anwendungsebene verbleibt. Auf gar keinen Fall muss man bei Adam und Eva anfangen und das Rad komplett neu erfinden, nur weil man als Laie in die Programmierung einsteigen will. Wer wirklich den umfassenden Überblick aus allen Perspektiven haben will, der soll Informatik studieren.
Man kann ja auch ganz philosophisch fragen, was eigentlich ursprünglicher ist: Die Hardware oder das abstrakte, algorithmische Denken? Je weiter man die Hierarchie nach oben geht, je abstrakter und geistiger es wird, desto näher ist man beim Menschen. Von dort anzufangen, halte ich eigentlich für ganz naheliegend.
Es geht natürlich Beides, aber welcher Weg der Bessere ist, halte ich schon fast für eine religiöse Frage.
Ich bin da einen Mischmasch gefahren, weil in meiner Kindheit habe ich Basic programmiert, später in der Jugend dann Pascal. An der FH kamen dann 14 weitere Programmiersprachen und die ganze Computertechnik mit hinzu. Ich hätte mit jedem Aspekt beginnen können. Ich glaube nicht, dass man sich gedanklich was verbauen kann, wie einige immer meinen. Komischerweise sind es ja auch immer die Anderen, die sich angeblich was verbaut hätten.
Zitat von Daelach im Beitrag #6
In welchem Studiengang? In Informatik? Ja nun, Informatik ist auch nicht Codierung, sondern hat völlig andere Schwerpunkte. Einen Informatiker würde ich nicht in die Implementierung eines Projektes setzen, dafür ist er normalerweise nicht qualifiziert, sondern den würde ich eher z.B. in der Validierung beschäftigen.
Ein informatiker hat schon über das gesamte Grundstudium auf einem hohen Niveau implementiert, das der Fachinformatiker oder Quereinsteiger nach 10 Jahren Berufserfahrung nicht erreicht. Ich habe zum Beispiel eine komplette 3D-Grafikengine für Browserspiele entwickelt, in nur zwei Monaten und inklusive einer kleinen Flugsimulation. Ich bezweifle, dass das jemand so hinbekommt, der nicht studiert hat, weil da auch einfach der mathematisch-theoretische Background fehlt. Drum sind in der Spielebranche und anderen anspruchsvollen SE-Gebieten auch fast nur Akademiker unterwegs. Es kann aber sein, dass an einer Universität der praktische Anteil arg zu kurz kommt. Das kann ich nicht beurteilen, weil an unserer Fachhochschule haben wir dieses Problem definitiv nicht.
Für triviale Programmieraufgaben ist der Informatiker aber überqualifiziert, das stimmt. Aber grad die Entwicklung sehr komplexer Systeme erfordert eine systematische Planung, für die studierte Informatiker nun mal am besten geeignet sind, denn das haben sie ja gelernt.
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 29.04.2015 14:05von Gelöschtes Mitglied
Zitat von S_J im Beitrag #7
Ganz blöde Frage dann mal: Wenn die Informatiker an der Uni die wirklichen Basics nicht lernen, woher bekommt man sie denn sonst? Lehrbücher, Ausbildung?
Natürlich können sie die Basics. Jedes Informatikstudium hat zwei bis drei Kurse zur "praktischen Informatik" oder "Grundlagen der Programmierung"; darüber hinaus Veranstaltungen zur technischen Informatik und Computerarchitektur.
Zitat von S_J im Beitrag #7
wenn auch mit dem Hinweis, dass man sich damit heutzutage praktisch nicht mehr befasse(n brauche).
Braucht man auch nicht. Wenn man es brauchen sollte, kann man es sich ja aneignen. Assembler lernt man an einem Tag. Es ist nicht anspruchsvoll, nur nervig und umständlich, und man kann für das Programmieren mit Hochsprachen auch nichts mitnehmen. Ob ich jetzt eine Funktion aufrufe, oder zu einer bestimmten Adresse springe, ist im Prinzip kein Unterschied. Das Letztere ist halt wesentlich unpraktischer und die besten Programmierer zeichnen sich ja sowieso dadurch aus, dass sie unfassbar faul sind. ;-)
Zitat von S_J im Beitrag #7
Ansonsten gab es allerdings viel grafische Oberfläche, einfach, weil es für eine spielerische Herangehensweise schon schön war, auch zu "sehen", ob und dass etwas passiert. Und um if-then-else zu trainieren, und ggf. auch einfache Zählschleifen, war eine Oberfläche, in der man kleine Auto-Images eine Straße herunterfahren lassen konnte, und Verkehrsampeln "umschalten" (bei mir gab es dann immer auch mal einen Crash mit Feuer und so :D) wirklich schon ganz lustig.
Ja, da kann man auch wieder eine Religionsfrage draus machen. Manche Dozenten schwören darauf, die Studenten ausschließlich mit Konsolenanwendungen zu langweilen. Andere machen es eher spielerisch und lassen die Studenten virtuelle Mäuse und Roboter durch Labyrinthe dirigieren. Viele Wege führen zum Ziel.
Zitat von S_J im Beitrag #7
Aber "klares Denken" (sehr schön formuliert btw :D) sollte man wohl generell einigermaßen können, wenn man mit Maschinen kommunizieren möchte.
Das sehe ich auch so. Letztlich geben halt doch Intelligenz und Talent den Ausschlag. Wer ein gutes, abstraktes Denkvermögen hat, der kann meinetwegen auch mit Logo anfangen. Wer nach dem Lernen einer Programmiersprache gedanklich so verhagelt ist, wie Daelach es beschreibt, hat in dem Bereich eh nix zu suchen.
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 30.04.2015 16:21von Daelach • | 1.214 Beiträge
@ IK: Soso, Du "glaubst", daß ich das nur so sehe, weil ich das so gemacht habe. Nun, hättest Du mein Vorposting gelesen, dann müßtest Du nicht glauben, denn ich habe auch erklärt, wieso ich das so sehe. Weil C als Einstieg einfach zu nachlässigem Stil führt, wenn man es nie sauber gelernt hat. Hat man sich einmal grundsätzlich angewöhnt, daß man z.B. Arithmetik von signed und unsigned, von Pointern und Integern, von Doubles und Integern mischen kann, wird man eben kaum eine klare Trennung zwischen diesen Kategorien hinbekommen. Die Folge sind dann eben die entsprechenden beliebten Fehler. Das mag bei belangloser Software mit anspruchslosen Kunden noch durchgehen - Zocker kaufen ja selbst die verbugteste Bananensoftware mit Begeisterung, da spielt Qualität keine Rolle.
Ganz besonders lustig wird es dann, wenn man auch noch von 32 auf 64 bit umstellt und in der Folge eine unter 32 bit reifgetestete Codebasis nochmal komplett von vorne testen muß, was nicht ganz billig wird.
Das sehe übrigens nicht nur ich so, sondern diese Misere hat in der Automobilindustrie ja erst zum MISRA-Programmierstandard geführt, dessen Sinn es im Groben ist, C auf sehr pascal-hafte Weise zu programmieren. Medizin und Luftfahrt haben übrigens ähnliche Standards. Weil das alles Bereiche sind, in denen Fehler eben schwerwiegendere Folgen haben können als nur ein maulende Daddelkiddies.
Wäre es so simpel, wie Du Dir das denkst, daß man doch einfach nur mal anfangen müßte, etwas klar zu denken, dann hätte man diese Standards nicht gebraucht. Die gesamte Lernpsychologie widerlegt Dich da. Lernt man etwas zu Anfang erstmal schlampig, dann ist es deutlich schwerer, das im Nachhinein wieder hinzubiegen, als wenn man es von vornherein gründlich gelernt hätte. Das ist der Sinn beim Drill auf Arbeitssicherheit in entsprechend sensitiven Bereichen, beim Musikunterricht und diversen weiteren Dingen.
Nebenbei entbehrt es nicht einer gewissen unfreiwilligen Komik, wenn Du selber schon bei viel trivialeren Dingen scheiterst, wie z.B. Dir im Nachhinein anzugewöhnen, einen einfachen Stift etwas anders über Papier zu führen, mit dem Ziel einer ansprechenderen Handschrift.
Aber wenn Du jahrelange Erfahrungen insbesondere mit den Ergebnissen von C als Einstieg auf die Gartenzwegperspektive persönlicher Befindlichkeiten eindampfen willst, dann "glaube" halt weiter. (:
~ a star is nothingness disguised as light ~
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 30.04.2015 17:57von Gelöschtes Mitglied
Zitat von Daelach im Beitrag #10
@ IK: Soso, Du "glaubst", daß ich das nur so sehe, weil ich das so gemacht habe. Nun, hättest Du mein Vorposting gelesen, dann müßtest Du nicht glauben, denn ich habe auch erklärt, wieso ich das so sehe. Weil C als Einstieg einfach zu nachlässigem Stil führt, wenn man es nie sauber gelernt hat. Hat man sich einmal grundsätzlich angewöhnt, daß man z.B. Arithmetik von signed und unsigned, von Pointern und Integern, von Doubles und Integern mischen kann, wird man eben kaum eine klare Trennung zwischen diesen Kategorien hinbekommen.
Kackst du deinem Nachbarn auch in den Vorgarten, nur weil du es kannst? Die Compiler vieler Sprachen sind nicht mal case sensitive. Na und? Es stellt sich vielleicht auch die Frage, ob man ein wenig das Mitdenken verlernt, wenn man immer all das tut, was formal erlaubt ist.
Zitat von Daelach im Beitrag #10
Nebenbei entbehrt es nicht einer gewissen unfreiwilligen Komik, wenn Du selber schon bei viel trivialeren Dingen scheiterst, wie z.B. Dir im Nachhinein anzugewöhnen, einen einfachen Stift etwas anders über Papier zu führen, mit dem Ziel einer ansprechenderen Handschrift.
Ich habe eine motorische Behinderung in der rechten Hand und bin zu meinem Pech, ja... Rechtshänder. Witzig, nicht wahr?
Allgemein habe ich das Gefühl, dass du dazu neigst, deine Kompetenzen manchmal ein bisschen überzubewerten.
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 30.04.2015 18:16von Daelach • | 1.214 Beiträge
Zitat von IK
Kackst du deinem Nachbarn auch in den Vorgarten, nur weil du es kannst?
Ich habe Dich soeben darauf hingewiesen, daß das Problem keineswegs nur in meiner subjektiven Betrachtung existiert ist, Stichwort MISRA - und im Gegensatz zu Dir habe ich auch in diversen Industrieprojekten bereits die real existierende Codebasis ohne sowas wie MISRA in der Praxis gesehen (und nicht nur "hätte, hätte, Fahrradkette"), deswegen weiß ich, wovon ich da spreche. Aber da das für Dich offensichtlich zu kompliziert zu verstehen ist, weil Du hier nicht über die Gartenzwergperspektive persönlicher Befindlichkeiten hinausdenken kannst und stattdessen sowas kommt, belassen wir es mal dabei. Denn..
Zitat
Allgemein habe ich das Gefühl, dass du dazu neigst, deine Kompetenzen ein bisschen überzubewerten.
.. bei Dir schlägt der Dunning-Kruger-Effekt voll zu. Immerhin, wenn SO der Nachwuchs aussieht, brauche ich mir keine Sorgen zu machen, mal altersbedingt aussortiert zu werden, insofern sehe ich das durchaus positiv. (:
~ a star is nothingness disguised as light ~
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 30.04.2015 20:09von S_J • | 455 Beiträge
Zitat von Instant Karma im Beitrag #13
Ah ja. Ich lasse dich mit deiner Profilneurose dann mal allein.
Ach, komm, als würdest du dich net aufplustern ^^
Nicht, dass ich sowas irgendwem krummnehmen würde, aber zumindest sollte man nicht erwarten, dass das oder auch der Verweis auf eine Note jemand Anderen dann zum Niederknien bewegt. Insbesondere, wenn das jemand ist, der vom Fach vielleicht selbst was versteht.
Da es mein Fach nicht ist, schreibe ich dir ggf. mehr Wissen über konkrete Anwendungen zu als mir selbst - was sich durchaus hin und wieder als Fehler herausstellt - aber dass man auf Effizienz verzichten könne, fand ich allgemein gesprochen zumindest seltsam. Wenn es um Geld oder Energie geht, dürfte das so gut wie nirgends so sein.
RE: Kennt sich jemand mit C++ programmieren aus?
in Offtopic Forum 30.04.2015 21:02von Gelöschtes Mitglied
Zitat von S_J im Beitrag #14
Nicht, dass ich sowas irgendwem krummnehmen würde, aber zumindest sollte man nicht erwarten, dass das oder auch der Verweis auf eine Note jemand Anderen dann zum Niederknien bewegt.
Wenn ich Hilfe von jemandem will, dann ist es mir persönlich schon wichtig, dass mein Gegenüber sich mit der Problematik, die mich beschäftigt, auch tiefer befasst hat. Ich finde das ganz pragmatisch. Als Narzisst mache ich natürlich auch kein Geheimnis daraus, wie unfassbar toll ich bin. Ich habe übrigens noch mehr 1en.
Ich wäre aber vorsichtig, in einer kontroversen Diskussion persönliche Leistungen oder "Industrieerfahrung" als Argument dafür zu nehmen, dass ich bezogen auf eine Sachfrage Recht hätte und dem Gesprächspartner eine Gartenzwergperspektive zu unterstellen. Ein argumentum ad hominem ist immer auch eine argumentative Bankrotterklärung.
Stelle ich bei jemandem sowas fest, gehe ich für gewöhnlich auf Abstand, denn ich möchte mich ja inhaltlich verständigen und nicht als Erfüllungsgehilfe für irgendwelche Macken herhalten.
Zitat von S_J im Beitrag #14
aber dass man auf Effizienz verzichten könne, fand ich allgemein gesprochen zumindest seltsam. Wenn es um Geld oder Energie geht, dürfte das so gut wie nirgends so sein.
Aber das ist ja der Punkt! Wartung IST der größte Kostenfaktor bei der Softwareentwicklung:
Man muss halt abwägen, was für den konkreten Fall wichtig ist. Ich habe auch nirgendwo behauptet, dass auf Effizienz nun frei zu scheißen ist. Sie spielt oft nur nicht mehr so die Rolle wie früher, als noch das letzte Byte aus dem RAM gequetscht werden musste als gäbe es sonst kein morgen. Dafür spielt die Wartbarkeit heute eine sehr viel größere Rolle und man kann sich den "Luxus" leisten, die Prioritäten entsprechend zu setzen, wenn es vernünftig ist. Dogmatisch an technischer Effizienz festzuhalten, ist jedenfalls NICHT vernünftig und das lernt man auch so im Studium. Der Trend hin zur objektorientierten Programmierung ist ja genau diesem modernen Ansatz geschuldet. Technisch am effizientesten wäre es wohl, alles direkt in Assembler zu implementieren. Die Entwicklung würde dann aber nicht nur ewig dauern, man könnte auch nichts mehr warten.
Es gibt noch mehr Aspekte, die häufig höher priorisiert werden als die Effizienz, wie Erweiterbarkeit und Plattformunabhängigkeit. So legen Java-Programme eine Performance hin wie der Musikantenstadl, aber sie laufen halt auch fast überall. In der Spiele- und Anwendungsentwicklung werden häufig selbstenwickelte Scriptsprachen eingesetzt, die von einem Interpreter eingelesen werden. Das ist langsam, hat aber den Vorteil, dass die Kopplung verringert wird und schnell Änderungen und Erweiterungen durchgeführt werden können, ohne dass das ganze Projekt neu kompiliert werden muss. Die Vorteile sind so gewaltig, dass man sie schon in den 80ern nicht missen wollte, z. B. bei der Entwicklung der Sierra- und LucasArts-Adventures, obwohl Rechenleistung da auch noch nicht so üppig verteilt war wie heute.
Man sollte immer eine ganzheitliche Sicht auf ein Projekt haben.
Besucher
0 Mitglieder und 58 Gäste sind Online Wir begrüßen unser neuestes Mitglied: NaturalMystic 369 |
Forum Statistiken
|
Einfach ein eigenes Xobor Forum erstellen |