Original von Dodekahedron
Moin, ich möchte als kleines Einstiegsprojekt einen Randomizer bauen mit einfachem Interface. Welche Sprache würdet ihr mir als Laie empfehlen?
Ich würde nach wie vor als Einstieg ins Programmieren das hier empfehlen: https://www.udemy.com/unitycourse/
Es macht Spaß, es motiviert, du lernst die Konzepte der Programmierung kennen (Schleifen, Klassen, Datentypen, Variablen, Zeiger, ...) und du machst SPIELE (!!) dabei. Es kommen wirklich Spiele dabei raus, die du spielen kannst. Sicher, sehr simple Spiele, aber immerhin. Gleich dein erstes "Projekt" ist ein Nummernratealgorithmus auf Basis von binary chopping.
Wenn du Java in Eclipse lernst kannst du deinen Randomizer auch programmieren. Dauert ein paar Minuten und am Ende kriegst du ne Ausgabe in der Konsole unter deinem Programmcode.
Programmiersprache im Kurs ist C#, die Spiele-Engine ist obv. Unity. Die Konzepte lassen sich aber auf jede objektorientierte Programmiersprache übertragen.
Original von beg0r
Aber wenn jemand sagt, dass er Apps entwickeln möchte, fällt Python sowieso raus. Siehe OP. Es kommt am Ende immer drauf an, was man mit der Sprache machen möchte. Wenn jemand z.B. in Machine Learning einsteigen will, ist Python die #1.
wenn man machine learning machen will, dann gilt
#1 R
#2 C/C++
#3 Fortran
#4 Python
und das sagt jemand, der 3 Jahre im Bereich Machine Learning geforscht und publiziert hat (und jetzt im Bereich Computational Fluid Dynamics forscht und publiziert... gebrochener Lebenslauf ftw)
Okay. Für Deep Learning ist Python die #1. Die meisten Paper veröffentlichen Python Code.
Sorry, ich bin ignorant was das restliche Feld des Machine Learnings angeht. Da hast du mich kalt erwischt.
Ich finde, du solltest Python in deiner Liste höher einschätzen. Deep Learning revolutioniert grad die Welt und die wichtigsten Libraries sind alle für Python. Aber ich glaube dir, dass R einen hohen Stellenwert hat.
Mich überrascht Fortran so weit oben. Warum ist das so?
Ich weiß nur, dass Fortran relativ alt ist, mehr weiß ich darüber nicht. Wikipedia hat mir auch bei kurzem überfliegen gesagt, dass es für viel Numerik genutzt wird, aber warum? Einfach aus historischen Gründen oder gibt es konkrete Vorteile?
Mich überrascht auch, dass Fortran angeblich über Python sein soll.
Wenn man sich die Stellenanforderungen für einen Data Scientist/Data Analyst anschaut, steht da immer was von Python und R. Auf Kaggle.com werden die Competitions auch mit R und Python eingereicht.
Ich hijacke hier einfach mal.
Bin wie irgendwo vorher schon erwähnt dabei ab und an project euler probleme zu lösen. War letztens ganz glücklich die ersten 50 geschafft zu haben und nun """endlich""" bei einem mit einem dificulty-level >5% angekommen zu sein.
Folgende Aufgabenstellung:
Nun frag ich mich:
Ist mit "replacing part of the number" gemeint, dass man ebenfalls nur 2 Zahlen austauscht oder beliebig viele?
Da dort nicht exakt zwei steht gehe ich mal von aus, dass beliebig viele (>=2) gemeint sein können. Jedoch müsste ich mir dann ja irgendwo ein upper limit setzen - Wo wäre es klug das zu setzen?
Irgendwie steh' ich auf dem Schlauch
Jemand ein nicht zu offensichtlichen hint vielleicht am Start?
Edit:
Ich könnte natürlich fix die Lösung nachgoogeln, aber das möchte ich noch nicht tun.
Original von r4lphlol
Ich hijacke hier einfach mal.
Bin wie irgendwo vorher schon erwähnt dabei ab und an project euler probleme zu lösen. War letztens ganz glücklich die ersten 50 geschafft zu haben und nun """endlich""" bei einem mit einem dificulty-level >5% angekommen zu sein.
Folgende Aufgabenstellung:
Nun frag ich mich:
Ist mit "replacing part of the number" gemeint, dass man ebenfalls nur 2 Zahlen austauscht oder beliebig viele?
Da dort nicht exakt zwei steht gehe ich mal von aus, dass beliebig viele (>=2) gemeint sein können. Jedoch müsste ich mir dann ja irgendwo ein upper limit setzen - Wo wäre es klug das zu setzen?
Irgendwie steh' ich auf dem Schlauch
Jemand ein nicht zu offensichtlichen hint vielleicht am Start?
Edit:
Ich könnte natürlich fix die Lösung nachgoogeln, aber das möchte ich noch nicht tun.
Imo beliebig viele an beliebigen Stellen. Also als untere Grenze nicht >=2 sondern >=1. Im Bezug auf die obere grenze ist das Limit ja die Anzahl der Stellen der Primzahl.
@mylady:
Maschine learning besteht nicht nur aus Deep Learning! Deshalb ist Fortran auch so weit oben.
Sobald irgendwas *etwas* performance erfordert, scheidet natives Python, R aus. Unter der Haube sind deshalb viele Programmteile in C (C++ ?) geschrieben, bspw. numpy, tensorflow. Ob z.B. tensorflow jetzt C oder Python ist, ist reine definitionssache und deshalb auch Python nicht zwingend führend...
Original von Plastichamer
Imo beliebig viele an beliebigen Stellen. Also als untere Grenze nicht >=2 sondern >=1. Im Bezug auf die obere grenze ist das Limit ja die Anzahl der Stellen der Primzahl.
Ja so habe ich mir das wohl auch gedacht. Hmm, dann muss ich mir wohl erstmal eine obere Grenze von primes < 1 millionen oder whatever setzen und schauen ob man da etwas findet und dann ggf die Grenze hoch schrauben.
Es gab nämlich schon vorher auch Aufgabenstellungen, wo die Fragestellung genau so offen gestellt wurde. Da habe ich die obere Grenze dann auch willkürlich gewählt und später als ich es dann auf einem Blog nachgelesen habe erfahren, dass alles über X zu überprüfen sinnlos war, weil mathematische erklärung blablubb.
Aber vermutlich sollte ich mir nicht so lange Kopf drüber machen und es ggf erstmal mit bruteforce regeln. thx anyways
Original von febsan
@mylady:
Maschine learning besteht nicht nur aus Deep Learning! Deshalb ist Fortran auch so weit oben.
Sobald irgendwas *etwas* performance erfordert, scheidet natives Python, R aus. Unter der Haube sind deshalb viele Programmteile in C (C++ ?) geschrieben, bspw. numpy, tensorflow. Ob z.B. tensorflow jetzt C oder Python ist, ist reine definitionssache und deshalb auch Python nicht zwingend führend...
jep. Python und R sind unter der Haube Fortran und C/C++. Alle Deep Learning-Libraries in R und Python bauen auf Fortran und C/C++-Libraries für die Backpropagation auf, denn die Backpropagation macht das eigentliche Lernen. Und bei allen anderen Data Mining Sachen gilt auch: die eigentlichen Algorithmen sind immer in Fortran und C/C++ geschrieben, weil Du bei "Matrizeninversionen" einfach nicht auf die Performanz von Fortran oder C/C++ verzichten kannst. Wenn Du Zeit hast, schau mal nach, wie Scikit-learn oder nnet die Algorithmen geschrieben sind. In der obersten Schicht ist das Python/R, und dann kommt s immer zu Matrizeninversionen, die dann plötzlich in Fortran und C/C++ laufen.
TensorFlow, zb, ist Python dort, wo der User noch rumwerkelt, und dort wo s um Performanz geht C++ und CUDA (="Fortran für die Grafikkarte").
Und dieser Punkt ist eben so geil an Python und R: Du hast im Großen und Ganzen super komfortable Sprachen, die viel Blödsinn verzeihen und kannst schnell mächtige Sachen schreiben, und die 10% vom Code, die 99% der Rechenzeit verbrennen, an denen kannst Du dann performanten C/C++/Fortran-Code einhängen.
Ich habe in dieser Liste R auf Platz 1 gesetzt, weil in R cutting edge Code veröffentlicht wird. Die ganzen Großmeister der Statistik veröffentlichen ihren Shit in R, teilweise Monate bevor die entsprechenden Paper rauskommen.
Und nebenbei: seit 1970 erleben wir gerade den vierten deep-learning-Hype. Es ist bezeichnend, dass man den Kram jetzt deep-learning nennt , und nicht mehr neuronale Netze. Liegt es vielleicht daran, dass schon drei neuronale Netze-Hypes in s Leere liefen?
Dachte immer R wäre so ähnlich wie spss ein einfaches Werkzeug für Unfähige Geisteswissenschaftler, die zwar null Ahnung von Mathe oder Informatik haben aber ihren Studien auch irgendwie einen Statistiktouch verpassen wollen
Es ging um die Frage, welche Sprache man für Machine Learning lernen soll. Du argumentierst jetzt, dass die rohe Mathematik hinter TensorFlow in C++ geschrieben ist. Allerdings existieren Sprachen wie Python genau aus diesem Grund, Wissenschaftlern das Implementieren der rohen Mathematik abzunehmen. Wer anfangen möchte Module für Python zu schreiben, der sollte C oder Fortran lernen, ja. Wer Machine Learning Forschung betreiben will, der sollte R und Python lernen.
CUDA ist übrigens nicht Fortran, sondern C++.
Und nebenbei: seit 1970 erleben wir gerade den vierten deep-learning-Hype. Es ist bezeichnend, dass man den Kram jetzt deep-learning nennt , und nicht mehr neuronale Netze. Liegt es vielleicht daran, dass schon drei neuronale Netze-Hypes in s Leere liefen?
Dir ist schon aufgefallen, dass wir jetzt autonome Fahrzeuge haben, und son Scheiß? Das ist nur eins von vielen, vielen Beispielen. Und dazu haben wir die Gewissheit, dass Hardware weiter exponentiell besser wird, weil neuronale Netze massiv parallele Hardware brauchen, wo der Zusammenbruch von Moore's Law uns erstmal gar nicht stört.
Original von dak113
Dachte immer R wäre so ähnlich wie spss ein einfaches Werkzeug für Unfähige Geisteswissenschaftler, die zwar null Ahnung von Mathe oder Informatik haben aber ihren Studien auch irgendwie einen Statistiktouch verpassen wollen
unter anderem ja, auch. Aber eben auch: die cutting edge Entwicklung in der Statistik wird in R gecoded, zb kenne ich zwei Forschungsgruppen hier in Deutschland, die im Gebiet statistische Analyse des Genoms/individuelle Medizin arbeiten, und die coden ihr Zeug in R (und benutzen für die rechenintensiven Sachen die Backbones in C/C++/Fortran).
Original von beg0r
(...) Wer anfangen möchte Module für Python zu schreiben, der sollte C oder Fortran lernen, ja. Wer Machine Learning Forschung betreiben will, der sollte R und Python lernen.
CUDA ist übrigens nicht Fortran, sondern C++.
Dir ist schon aufgefallen, dass wir jetzt autonome Fahrzeuge haben, und son Scheiß? Das ist nur eins von vielen, vielen Beispielen. Und dazu haben wir die Gewissheit, dass Hardware weiter exponentiell besser wird, weil neuronale Netze massiv parallele Hardware brauchen, wo der Zusammenbruch von Moore's Law uns erstmal gar nicht stört.
Pedro Domingos zeigte in einem Paper, dass bei unendlicher Samplesize alle Machine-Learning-Algorithmen dasselbe lernen. Warum? Weil sie dieselbe Mathe benutzen. Wenn Du also wirklich was Neues machen willst, dann musst Du eine neue Mathe schreiben, wie zb 2006 Random Forests. Das war die letzte große Neuerung in der Data Science.
CUDA ist C++, ja, aber es gibt auch Fortran Portierungen. Ich arbeite mit so einer.
Und tolle selbstfahrende Autos: die Dinger können gerade mal eine weiße Linie erkennen (selbstfahren=innerhalb der weißen Linien bleiben und Abstand zum Vordermann halten). Wenn die Linie gelb wird - bei Baustellen zb - wird s zur Lotterie.
Oha, woher weißt du denn jetzt wie autonomes Fahren funktioniert?
Wenn du denkst, dass Computer Vision nicht mehr kann, als eine weiße Linie erkennen, lebst du im letzten Jahrzehnt. Höchstwahrscheinlich wird jeder einzelne Pixel klassifiziert, z.B. als Person oder befahrbare Straße. Entweder das, oder eine effizientere Weiterentwicklung dieser Idee.
Beweis dass deine Aussage falsch ist:
Wie soll das gehen, wenn autonomes Fahren nur aus "weißer Linie folgen" besteht?
Und zu Pedro Domingos ... deine Interpretation des Papers kann nicht richtig sein. Du behauptest, dass "alle Machine Learning Algorithmen dasselbe lernen". Es können definitiv nicht "alle" sein, dazu fallen mir zu viele Gegenbeispiele ein, z.b. logistische Regression vs. deep learning.
Und selbst wenn du recht hättest ... in der Praxis ist es trotzdem so, dass z.B. Computer Vision bisher nur mit Deep Learning gelöst wurde.
Original von beg0r
Oha, woher weißt du denn jetzt wie autonomes Fahren funktioniert?
Wenn du denkst, dass Computer Vision nicht mehr kann, als eine weiße Linie erkennen, lebst du im letzten Jahrzehnt. Höchstwahrscheinlich wird jeder einzelne Pixel klassifiziert, z.B. als Person oder befahrbare Straße. Entweder das, oder eine effizientere Weiterentwicklung dieser Idee.
Beweis dass deine Aussage falsch ist:
Wie soll das gehen, wenn autonomes Fahren nur aus "weißer Linie folgen" besteht?
Und zu Pedro Domingos ... deine Interpretation des Papers kann nicht richtig sein. Du behauptest, dass "alle Machine Learning Algorithmen dasselbe lernen". Es können definitiv nicht "alle" sein, dazu fallen mir zu viele Gegenbeispiele ein, z.b. logistische Regression vs. deep learning.
Und selbst wenn du recht hättest ... in der Praxis ist es trotzdem so, dass z.B. Computer Vision bisher nur mit Deep Learning gelöst wurde.
boah, alter: in deinem video passiert folgendes: das radar (das brauchst du zum abstand halten) analysiert die geschwindigkeit, den ort und die trajektorie aller autos. dann checkt die "ki", dass das rote auto entweder bremsen muss, oder es wird krachen. wenn das rote auto aber bremsen muss, dann muss der tesla bremsen, sonst rauscht der tesla rein, also gibt der tesla eine warnung und bremst. das ist ein simples radarsystem gekoppelt mit einem linearen prädiktor und einer abstandhalteregel und kein deeplearning.
logistische regression vs neural net: wenn ich in meiner regressionsformel genauso viele gewichte zum anpassen krieg, wie in einem neural net, dann krieg ich den selben interpolator hin. lies mal das paper von hornick von 1989.
computer vision probleme kann man auch mit bayesian classifiers, support vector machines, boosting und sogar mit logistischer regression und auch random forests lösen. die frage ist nur, wie du den input organisierst. nur: leute, die eben sich nicht mit der mathe auseinandersetzen wollen, und dementsprechend lieber mit python und r arbeiten, kommen gar nicht auf die idee, an der mathe was zu drehen, und dann bleiben nur neural networks übrig, als universelle black boxes.
sorry, du klingst wie n bengel, der jetzt seine bachelorarbeit in machine vision schreibt, seit drei monaten scikit learn benutzt, und glaubt neural networks sind der shit.
Logistische Regression hab ich grade deshalb als Beispiel genommen, weil Hornik's Paper es nicht miteinbezieht. Dafür fehlen nämlich die Hidden Layers. Jetzt sagst du, dass man stattdessen den Input transformieren kann. Allerdings ist so eine Transformation im Allgemeinen auch unbekannt. Das hilft uns bei schweren Problemen daher auch nicht.
Du klingst wie jemand, der sich in seiner Ehre verletzt fühlt, weil es Leute gibt, die sich speziell für Deep Learning interessieren.
leute, die eben sich nicht mit der mathe auseinandersetzen wollen, und dementsprechend lieber mit python und r arbeiten
Mit Python kann man sich viel besser auf die Mathematik konzentrieren, als wenn man Fortran/C++ benutzt.
und glaubt neural networks sind der shit.
Sind sie in einigen Bereichen ja auch. Und ansonsten sind sie ein extrem interessantes Forschungsgebiet, mit vielen Anwendungen. Und immernoch im Frühstadium.
Ich kann als Randomtrottel ohne große Kenntnisse von höherer Mathematik und komplexer Statistik mit Machine Learning Algorithmen arbeiten und neuronale Netze programmieren oder mit Tensorflow Bilder klassifizieren.
Diese Frameworks bedeuten Fortschritt, weil es nun eben auch Leuten wie mir erlaubt damit zu arbeiten und sich viel mehr Menschen für dieses Feld begeistern lassen. Auch der Programmieraufwand verringert sich erheblich.
In der Webentwicklung baut die Websites doch auch jeder mit Bootstrap und JQuery. Sind das für dich auch alles Idioten?
Super interessanter Thread! Als jemand der aus dem SAP Data Warehousing kommt, bin ich leider immer nur der Datenlieferant :-), aber lese hier immer gerne mit.
Habt ihr auch schon Anwendungen aus der Praxis umgesetzt ?
Ich habe jetzt so viel interessantes hier gelesen, dass ich jetzt schon gar nicht mehr weiß, welche Sprache nun die beste Wahl wäre.
Angenommen, mich interessieren hauptsächlich Apps. Evtl, könnte ich mir vorstellen mal eine Website als Handyapp zu codieren, sowas wie Kicktipp fürs Handy zu basteln oder ein Spiel.
Grundkenntnisse sind eigentlich nicht vorhanden.
Was wäre da am besten geeignet. Liege ich da mit Java oder C# richtig? Sind beide Zukunftssicher?