Frage von Ichmagdichsarah, 165

Wie schwer ist programmieren?

Hi, ich wollt mich mal danach erkundigen :) Ich selbst kann schon leichte Sprachen, wie Php, auch C++ habe ich kurze Zeit angefangen.

Aber ich habe noch nie dieses schwierige Mathe nutzen müssen, wovon alle immer reden. Gut, in der Webentwicklung kommt das wohl auch nicht so oft vor.

Es sei denn, es kommt zu Algorythmen, was ja eigentlich doch öfters vorkommt. Aber welches Mathe benutzt man eigentlich? Welche Art? Ich habe gehört, hauptsächlich Binomische Formeln, womit ich eigentlich gut klarkomme.

Jeden Falls fallen mir Standart Befehle nicht schwer. (Bedingungen, Loops, Variablen ) Und ich wollte wissen, ob ich es hinkriegen würde? Denn ehrlich gesagt bin ich in Mathe ne Niete, aber wie gesagt mit den Binomischen Formeln komme ich klar.

Danke!

Antwort
von JuicyLuisian, 165

Programmieren ist eine Frage des Trainings. Bei mir war die größte Hürde am Ball zu bleiben und mich immer weiter dazu zu motivieren. Ich denke auch wenn man höhere Mathematik nicht spielend leicht versteht kann man gute Programme schreiben. Man sollte aber ein gewisses logisches Verständnis mitbringen um beispielsweise Algorythmen zu verstehen.

Wenn hierbei von Algorithmen die Rede ist meint man in etwa soetwas: https://de.wikipedia.org/wiki/Bubblesort

Bei diesen Algorithmus werden die Zahlen nach größe sortiert. Dabei wird immer die linke Zahl mit der Rechten verglichen und wenn nötig getauscht. Das ist einer der einfachsten Algorithmen, aber mit soetwas musst du dich in etwa herumschlagen.

Es ist es auf jedenfall Wert und bisher hab ich nur wenige (äußerst dumme) Menschen gesehen denen ich es von der logik her nicht zutrauen würde sich programmieren anzueignen.

Kommentar von Ichmagdichsarah ,

Okay, vielen Dank. Wozu braucht man so einen Algorythmus?

Kommentar von JuicyLuisian ,

Nun ja, Algorithmen sind logische Vorgehensweisen. Man benötigt sie in einfachsten Fällen um zB deine Dateien nach Namen zu sortieren (Bubblesort) und in komplexeren Fällen zB um zu berechnen wie man mit geringsten Widerstand durch die Erdkruste an seine Ölquelle kommt oder wie man aus einem Labyrinth herauskommt. Man muss dabei verstehen das Computer nur nach einen bestimmten Plan arbeiten können, während Mensch meist ihre Erfahrungen nutzen um zum Ziel zu kommen. Darauf bauen meistens Algorithmen auf.

War das in etwa verständlich erklärt? Weiß nicht genau wie man soetwas am besten beschreibt. :)

Kommentar von Ichmagdichsarah ,

Ja, das war verständlich, danke :)

Antwort
von cimbom93x, 141

Mathe und Statistik gehört nunmal zur Informatik dazu... Wenn du vorhast zu studieren oder eine ausbildung zu machen, wirst du zuerst mit Mathe & Statistik konfrontiert... Nebenbei beginnt man auch mit den Basics der Programmierung... Variablen deklarieren, If-else, while, loops etc das sind wirklich die Themen für Anfänger... Wenn du eine Empfehlung für die nächsten Themen suchst für C++ die du durcharbeiten kannst:

  • Arrays
  • Strings
  • Klassen & abstrakte Klassen
  • Operatoren
  • Vererbung & mehrfache Vererbung
  • virtuelle Methoden
  • Strings
  • Exceptions
  • ...

Das wären so die nächsten Themen die man für C++ beherschen sollte... Danach kannst du auch mit anderen Programmiersprachen anfangen (Java & co)
Gruß....

Kommentar von Ichmagdichsarah ,

Danke! C++ habe ich wie gesagt nur mal angefangen, aber schnell wieder abgebrochen, da ich mich doch der Webentwicklung zuerst zuwenden wollte :)

Kommentar von cimbom93x ,

Wenn du mit html und php anfängst, kannst du dich auch etwas mit Datenbanken beschäftigen (MySQL etc.) ... Auf die Webentwicklung kannst du auch noch das Webdesign aufbauen... Bedeutet Bildbearbeitung, Textbearbeitung, Gestaltungprinzipien, Barrierefreiheit, ... 

Kommentar von qwdfgosmd ,

Die Strings sind sogar so wichtig, dass sie zwei mal in der Liste auftauchen...

Kommentar von cimbom93x ,

Ja mein Fehler :D Anstatt Input Output Stream habe ich Strings zweimal geschrieben... Wobei alles ist wichtig wenn man später sich daamit beschäftigen will...

Kommentar von Ichmagdichsarah ,

MySql kann ich auch schon :) Mit Bildbearbeitung arbeite ich auch viel, hab aber nicht gerade spitzen Programme...

Expertenantwort
von Marbuel, Community-Experte für Computer & PC, 105

Kommt doch darauf an, was du programmierst. In vielen Dingen brauchst du überhaupt kein Mathe. Programmierst du eine 3D-Engine, dann kommst du ohne lineare Algebra wahrscheinlich nicht sehr weit. In anderen Sachen brauchst du vielleicht Kombinatorik. Das hatte ich zum Beispel mal. Und in wieder anderen Bereichen brauchst du vielleicht Kenntnisse in Physik oder Elektrotechnik. Es hängt halt immer von der Software ab. Die kann viel Fachwissen erfordern. Allerdings liegt die Komplexität ja dann nicht in der Programmierung. Wenn Mathe nicht so dein Fall ist, dann programmiere halt Dinge, wo man nicht so viel Mathe braucht. Für Web-Entwicklung spielt es nicht so die Rolle, wie du ja selbst schon gemerkt hast. Wo ist also das Problem? Willst du es allerdings lernen, dann musst du es halt tun. Es gibt aber dann nicht DAS Mathe für Programmierung. Je nach dem, was du tun willst, könntest du alles mögliche an Mathe benötigen.

Kommentar von Ichmagdichsarah ,

Okay, danke für die Antwort :)

Antwort
von grtgrt, 104

Bitte glaube mir: Schwierige Mathematik braucht man zum Programmieren nun wirklich nicht.

Es ist also kein Wunder, dass du noch nicht auf sie gestoßen bist.

Die mit Abstand schwierigste Teilaufgabe des Programmierens besteht darin, unbeabsichtigt gemachte Fehler aller Art finden zu müssen (sog. Debugging).

Dies zu erleichtern, muss man lernen, den eigenen Programmen gewisse Struktur zu geben, die notwendig sein kann, gewisse Fehler schnell zu lokalisieren.

Kommentar von grtgrt ,

Ansonsten ist noch wichtig:

Jedes Programm ist dazu da, ein gewisses Problem mit seiner Hilfe schnell zu lösen. Damit muss, wer dieses Programm zu schreiben hat, natürlich erst mal die anwendungstechnische Seite, insbesondere das zu lösende Problem, verstanden haben.

Daraus folgt: 

  • Ist das Problem mathematischer Art, muss man natürlich was von Mathematik verstehen.
  • In jedem anderen Fall, muss man so gut wie nichts von Mathematik verstehen.
Kommentar von rmnstr ,

TDD und das Debugging wird um ein Vielfaches kürzer und einfacher. :D

Kommentar von grtgrt ,

Das ist -- meiner Erfahrung nach -- nur in kleinem Ausmaß richtig. 

Aber ganz sicher helfen vorhandene Unit Tests, neu in den Code gekommene Fehler frühest möglich gewahr zu werden.

Kommentar von rmnstr ,

Man muss es halt schon auch richtig machen.

Erstens sind Unit Tests nur ein Teil von TDD (Unit Tests, Component Tests, Integration Tests, System Tests, Exploration Tests).

Zweitens sollte man zuerst den Test schreiben und danach den Production Code. (das Interface kann dann beispielsweise mit der IDE automatisch generiert werden)

Also immer erst den Test schreiben, dann den Production Code, der genau diesen Testcase abhandelt. Somit kannst du immer sicher sein, dass sämtlicher Production Code funktioniert. Und wenn mal plötzlich ein Test fehlschlägt, weiß man genau, was man davor gemacht hat. Ob das nun das Hinzufügen neuer Funktionalität war oder ein einfaches Refactoring ist ganz egal.

Natürlich sollte im Idealfall TDD von Anfang an gemacht werden. Bei einer Codebase von 200.000 LOC damit anzufangen, wird schwierig und kann es Monate dauern, bis man eine vernünftige Code Coverage erreicht hat.

Kommentar von grtgrt ,

Ich weiß, was du meinst. 

So vorzugehen setzt aber voraus, dass du vorher eine sehr konkrete, genaue Schnittstellenspezifikation erstellt (oder vorgegeben bekommen) hast. 

In keinem der vielen Projekte, an denen ich beteiligt war, hatte man derart detaillierte Spezifikationen. Selbst dann nicht, wenn vorher wirklich ausführliche Dokumente der Art "System Architecture" und "Component Specification" entstanden waren. 

Bis hinunter zu Klassenentwurf oder gar konkreten Parameterlisten der Klassen-Methoden haben diese Papiere nie gereicht. Aus gutem Grunde: Je mehr Details ein Entwurfspapier enthält, desto schneller wird es überholt sein - also gar nichts mehr nützen (da dann niemand es mehr liest).

Und speziell heute, im Zeitalter von "Agile", wird selbst solche Dokumentation noch reduziert ...

Es bleibt deswegen auch jedem Programmierer selbst überlassen, wie viel Unit Tests er schreibt. Nur wenige schreiben überhaupt welche ...

Sie arbeiten ja stets unter Termin- und Kostendruck, werden also nur welche schreiben, die ihnen selbst helfen (dass sie auch den Kollegen helfen oder gar die Wartbarkeit der entstehenden Software erhöhen würden, ist de-facto für kaum noch jemand interessant).


Kommentar von rmnstr ,

Ich habe die Erfahrung gemacht, dass eine detaillierte Spezifikation des Features ausreichend ist.

Die Implementierung wird dann beim Tasking/Designing des jeweiligen Sprints (wenn wir schon bei Agile sind) vom Team geplant und vom zuständigen Entwickler dann noch eventuell ein wenig umgeändert.

Agile Entwicklung hat als oberstes Ziel ja die Einhaltung der Termine. Im Notfall muss man dabei eben Features vom nächsten Release streichen.

Entwickler, die keinen Wert auf Wartbarkeit und Dokumentation legen, sind meiner Meinung nach keine guten Entwickler. Immer schön aufregen, wenn man mit schlechtem Code von anderen Entwicklern arbeiten muss, aber selbst auch nichts besseres produzieren. ;)

Auf lange Sicht verringert TDD übrigens Zeit und somit auch Kosten der Entwicklung. Viele kleinere Unternehmen können sich diesen Luxus nur nicht leisten, weil manche Kunden sehr früh Prototypen verlangen.

Kommentar von grtgrt ,

Was du hier sagst, ist absolut richtig.

Antwort
von 11inchClock, 78

Ich finds immer witzig wenn die Informatiker in der Uni immer erzählen wollen wie schwer Mathe in Info ist :)

Machen nur einen Bruchteil der Mathematik.

Kommentar von Ichmagdichsarah ,

Ok, danke :) Was für Mathe denn eigentlich, fallst du das weißt? :D

Kommentar von SovietPanda ,

Kannst du 1+1? Dann kann du schon das meiste. Wichtig vorallem ist die logische Denkfähigkeit. Beherscht du das nicht, bist du geliefert. Es kann Oberflächlich betrachtet noch leicht erscheinen aber ab 4 Dimensionale Arrays bist du hingeliefert. 

Kommentar von Ichmagdichsarah ,

Logisch denken kann ich ._. Kopfrechnen ist nicht meine Stärke, aber gerade das soll doch der Computer machen, oder? :D

Kommentar von Ichmagdichsarah ,

haha :D^^

Kommentar von 11inchClock ,

Das rechnen an sich ist kein Problem, aber man muss erstmal dahin kommen, dass der Computer das auch kann. Du musst dem Pc sagen was er rechnen soll. Ich finds richtig schwer, musste C++ lernen.

Mal eine theoretisch einfache Matheformel, wir mussten alle Primzahlen zwischen 0 und 1000 ausgeben lassen.. man war das ein komplizierter bis jetzt unverständlicher Code^^

Kommentar von Ichmagdichsarah ,

Ok, vielen Dank, ich werde wohl auch meine Schwierigkeiten damit haben... Aber es macht ja auch Spaß^^

Kommentar von Marbuel ,

Und kommst du dir jetzt toll vor, nur weil du viel mehr Mathe machst? :-) Ein Informatiker studiert ja schließlich Informatik und nicht Mathe. Leicht ist Mathe in keinem naturwisenschaftlichen Studium, außer vielleicht, man ist halt von Natur aus ein Mathe-Genie.

Kommentar von 11inchClock ,

Ui ein beleidigter Informatiker :-)

Blöde wenn man als Informatiker immer über die härte von Mathe klagt und dann sowas hier lesen muss hihi.

Keine passende Antwort gefunden?

Fragen Sie die Community