Wie kann ich sowas wie Facebook programmieren?

...komplette Frage anzeigen

10 Antworten

Das Hauptproblem bei solchen Systemen ist nicht der Client, sondern die Datenverwaltung im Backend auf den Servern. Wenn so ein System nämlich wirklich von vielen Nutzern angenommen wird, dann entstehen da tonnenweise Daten, die effizient und ausfallsicher gespeichert werden müssen, und wo insbesondere auch schnelle Such- und Ranking-Operationen durchgeführt werden müssen.

Der Server muss den Clients (also z. B. Webschnittstelle, Apps für die verschiedenen Mobile Devices usw.) Schnittstellen zur Verfügung stellen, über die dann effizient Funktionen wie "gib mir mal die Timeline", oder "hänge da einen Kommentar dran" bereitgestellt werden müssen.

Mit einer relationalen Datenbank wie MySQL o. ä. kommt man bei Projekten in so einer Dimension nicht weiter. Das wäre viel zu langsam. Da müssen eigene Datenstrukturen her, wo insbesondere auch für Ranking- und Empfehlungsaspekte passende Indizes aufgebaut/mitgeführt werden müssen. Diese Daten müssen dann noch dazu sehr effizient gespeichert werden, weil es um sehr große Datenmengen geht, wo man selbst mit heutigen Servern schnell in Speicherplatznot kommt.

Denkbar ist auf der Serverseite eine Realisierung z. B. in C++. Die Sprache eignet sich insofern gut, als dass sie einerseits objektorientiert arbeitet, zum anderen noch sehr maschinennah und damit performant ist. Die OO-Modellierung braucht man, weil dieser ganze Social-Media-Quatsch nunmal sehr gut in (geschachtelten) Objekten abbildbar ist.

Wie solche Objektstrukturen aussehen können, magst Du Dir vielleicht mal am Beispiel Twitter selbst anschauen. Die Twitter-API inklusive des nach außen sichtbaren Objektmodells ist nämlich offengelegt. Da kannst Du Dir mal anschauen, was für Daten grundsätzlich anfallen, und was für Operationen man unterstützen muss.

Das wäre im übrigen auch eine Anregung, wie Du da weiterkommen könntest: anstatt das ganze Ding von vorn bis hinten selbst bauen zu wollen, könntest Du Dich erstmal auf die Clientseite konzentrieren und z. B. versuchen, einen eigenen Client für Twitter zu entwickeln. Oder zumindest für ein paar Basisfunktionen. Da gibt es im übrigen in der Open Source durchaus teilweise auch quelloffene Implementierungen für einzelne Funktionalitäten, wo Du Dir Dinge "abgucken" könntest.

Hallo, ich bin 14 Jahre alt und meine Kenntnisse in JAVA sind eher naja...

Dann solltest du sie zunächst ausbauen, bevor du weitere Dinge lernst. Für eine Seite wie Facebook kann man im Backend wunderbar Java einsetzen. Schau mal hier. Dort habe ich einige Hinweise zum Lernen von Java zusammengefasst.

Ich möchte gerne sowas Programmieren wie Mark Zuckerberg. Ich weiß, es hört sich albern an, wodurch ich auch bis heute von meinen Mitschülern schikaniert werde, aber sowas bringt mich nicht runter, also bitte lasst das wie " du bist erst 14 und das schaffst du eh nicht" oder " glaub mir lass es lieber" sowas möchte ich nicht hören, bitte.

Grundsätzlich ist es gar nicht so schwierig, eine Seite wie Facebook aufzubauen, es ist nur viel Arbeit. Natürlich kannst du alleine nicht jede einzelne Funktion einbauen, aber zumindest die grundlegenden Dinge sollte man nach 3-4 Jahren Lernen und Erfahrung sammeln durchaus hinbekommen. Sicherlich wird das alles nicht sonderlich optimiert sein, aber als Spaßprojekt ist es in Ordnung. Als reeles Projekt solltest du dies jedoch nicht ansehen, da ich glaube, dass das aus heutiger Sicht keinen Sinn mehr machen würde und du damit wahrscheinlich keinen Erfolg haben würdest.

a.) Woher bekomme ich das ganze Wissen und wie kann ich es nachher einsetzen

Hier habe ich grundlegende Hinweise dazu gegeben. Um wirklich zum "Profi" zu werden, ist jedoch weitaus mehr Know-How erforderlich, siehe: https://www.gutefrage.net/frage/wie-viel-prozent-einer-grossen--webseite-macht-der-htmlcss-code-aus#answer-269303077

Wie du dieses Wissen einsetzen kannst, sollte dir anschließend klar sein, wenn du dir genügend Zeit zum Verstehen und Sammeln von Erfahrung genommen hast.

b.) Wie groß wird der Aufwand sein und wie lang werde ich dafür brauchen.

Das ist ganz individuell und kommt zum Einen darauf an, wie schnell du lernen und entwickeln kannst, zum Anderen, wie viel Zeit du zur Verfügung hast. Natürlich spielt auch die Menge an Funktionalitäten eine Rolle. Ich schätze, dass man für ein grundlegendes Social Network, welches jedoch gut aussieht - nicht so wie die erste Facebook-Version - ca. vier Monate bis zwei Jahre benötigt, wenn man alles from Scratch schreibt. Mit zahlreichen Frameworks, Bibliotheken und fertigen Plattformen kann man dies sogar schon in ein paar Wochen schaffen, doch wirklich selbst gemacht ist das nicht und interessant erst recht nicht. Spannend ist es immer, wenn man alles selbst macht. Dabei lernt man nämlich auch etwas.

c.) Ist android studio gut dafür

Wenn du eine App entwickeln möchtest, ja. Allerdings eignet sich Android Studio nur für Android-Apps, wie der Name schon sagt. Für die App-Entwicklung solltest du dir diese Antwort mal ansehen: https://www.gutefrage.net/frage/welche-programmiersprache-ist-die-beste-fuer-mich-----101?foundIn=list-answers-by-user#answer-264722172

Allgemein rate ich jedoch dazu, mit einer Website zu starten und erst bei Bedarf eine App zu entwickeln.

Habt noch einen schönen Tag

Den wünsche ich dir ebenfalls. Viel Erfolg und Spaß!

Auch wenn ich es immer gut finde, wenn auch die Jugend was über Programmierung lernen möchte so sehe ich hier keine Chance auf erfolg. Nicht so wie du es darstellst.

Eine Analogie wäre z.B.:

Du hast gerade ein Papierflugzeug gefaltet und möchtest nun allein eine Boeing 747 bauen.

Klingt unsinnig oder? Das selbe gilt auch für deine "Idee"/Wunsch "sowas wie Facebook" selbst zu programmieren. Bei einem realen Flugzeug sieht man immer wie kompliziert und groß das Ganze ist, bei einer Webseite nicht, dabei ist die Webseite wahrscheinlich inzwischen Komplexer als das Flugzeug....

___________________

Du möchtest aber gern Entwickeln? Das ist gut. Setzt dir aber realistische Ziel. Mit deinem jetzigen Wissen nach den Sternen zu greifen wird dich nur frustrieren, denn du WIRST scheitern.

Lerne die Grundlagen. Baue kleine Projekte und lerne. Wenn du dann in einigen Jahren mehr Verständnis für das Ganze hast, DANN und nur dann kannst du die gesamte Angelegenheit objektiv betrachten und den Aufwand abschätzen.

Aber um mal auf deine Fragen einzugehen:

a) Bücher, Internet, Kurse. Quellen für Informationen gibt es unzählige. Danach heißt es üben, testen, ausprobieren.

b) Ausgehend von deinem jetzigen Stand: Ca 5 Jahre Vollzeit (mindestens 40h pro Woche) bis du die Grundlagen wie Programmierung, Frameworks, Softwaretechnologie, Algorithmierung etc. halbwegs drin hast. Im Anschluss wohl noch einige Jahre Entwicklung.

Hilfe in Form von "Fragen stellen und Antwort bekommen" bekommst du überall im Netz. Die Seite Stackoverflow ist dabei für mich als IT-ler sehr interessant. Ist zwar auf English, aber die Sprache musst du sowieso gut beherrschen, da schließlich gefühlt 80% aller Dokumentation und, Erklärungen eh auf Englisch sin.

Hilfe in Form von "Wer will das mit mir zusammen machen": Erstmal gar nicht. Erst wenn du ein Prototyp oder zumindest eine ausgereifte Idee hat wird sich irgendein Entwickler überhaupt für deine Arbeit interessieren. Keiner investiert seine Zeit in das Traumschloss eines Kindes.

c) Android Studio ist eine IDE. Sie ist vorrangig für, "aufpassen", Android Entwicklung ausgelegt. Da du hier aber einen Webdienst aufbauen willst, bietet dir das Ganze keinen nennenswerten Vorteil. Wenn du bei Java bist kannst du einfach Eclipse oder IntelliJ IDEA nutzen.

danke für dein Kommentar. Ich weiß ich werde scheitern, aber ein Versuch ist es wert.

0

Hinter einer Seite wie Facebook stehen Millionen von Arbeitsstunden. Aber etwas einfaches in der Art kann man tatsächlich selber programmieren. Mein Rat: fang einfach mit etwas einfachem an. Welche Technologie du dafür verwendest bleibt dir überlassen. Auf der einen Seite wirst du für das sogenannte Frontend HTML und CSS Kentnisse brauchen, später auch Javascript. Im Backend kannst du Java nutzen oder auch PHP, Python, Javascript (Node.js) oder eine von vielen anderen Prgrammiersprachen. Ich persönlich bin kein Fan von Java aber das bleibt jedem selber überlassen.

Also: fang einfach an und ziehe es durch. Für ein solides Grundwissen kann ich empfehlen tatsächlich ein paar gute Bücher durchzuarbeiten. Weitergehendes Wissen findest du im Internet in Form von Artikeln, Tutorials, YouTube Videos und Foren. Das Wissen liegt sozusagen auf der Straße.

Später solltest du dich mit Frameworks beschäftigen denn so gut wie niemand programmiert so was heutezutage noch in reinem Code sondern verwendet einige der vielen Frameworks die einen bei der Programmierung unterstützen. Aber am Anfang solltest du erst mal die Grundlagen ohne Framework lernen.

Android Studio ist für so eine Aufgabe ungeeignet, das verwendest du nur um Android Apps zu programmieren.

Programmiere ist übrigens mehr als nur das Verstehen von Syntax und Strukturen eine Programmiersprache und Auswendiglernen von Funktionsaufrufen. Das ist nur der Anfang. Um ein guter Programmierer zu werden muss man viel über Design Patterns, Best Practices, Automatisiertes Testing, Entwickungsstrategien, Versionenkontrolle und noch viele andere Themen lernen. Es ist ein weites Feld das sich ständig weiterentwickelt.

Also erstens Mark Zuckerberg hat nicht ganz Facebook alleine Programmiert.

Ich habe mir selber HTML 4 beigebracht in dem ich mehre Bücher drüber gelesen hab. Jetzt haben wir in der Schule auch Info und ich kann jetzt auch Java, aber was mir hilft ist ich programmiere z.B. gerade ein Spiel und ich kenne einen Befehl oder eine variable nicht, dann guck ich schnell ins Internet und hab die Lösung. Aber ich lese auch gerne abends im Internet PDF´s oder andere Texte die Java erklären. So jetzt sollte A geklärt sein. B: Du wirst wahrscheinlich lange dafür brauchen, aber ich weiß ja nicht genau was du programmieren möchtest.Wenn du mir sagst was du machen willst kann ich dir ja vielleicht helfen. C: Ich kenne mich kaum mit Android Studio aus ich präferiere und benutze Notepad++. Man muss grundlegend auch unterscheiden zwischen App und Website. Aber so ein riesiges Programm wie Facebook kriegst du nie alleine hin ;)

Am Besten lernst du zuerst einmal die ganzen Kontrollstrukturen, danach kannst du dich weiter informieren bzgl der Programmierung. Wenn du ei e Webseite gestalten möchtest, dann empfehle ich dir auf jeden Fall am Anfang HTML und CSS. Sobald du dies beherrschs, kannstdu weiterfahren mit z.B. javascript und z.B. PHP.

Aber ich empfehle dir folgendes: Fang erstmal ein bisschen mit den Grundlageb an, da du dadurch immer wieder kleine Erfolgserlebnisse hast ....

a) Lerne am Besten PHP, CSS und Javascript. Zudem solltest du dich mit Datenbanken (MySQL) auseinandergesetzt haben. Kannst du alles in der App "Sololearn" lernen :)

b) Alleine ca. 1 - 5 Jahre; Aufwand gigantisch

c) Weiß ich leider nicht

Wenn du wirklich Motivation dazu hast, kannst du es ja machen :)

Ich kann PHP, CSS, Javascript, HTML und kenne mich mit MySQL aus, bin ungefähr so alt wie du und würde es nicht machen ;)

Seliba

Lerne erstmal HTML/Java script/PHP/CSS. Das sollte ca. 5 Jahre in Anspruch nehmen das ist ein riesen Aufwand.

Geh mal auf Facebook mach ein rechtsklick und drück auf "Seitenquelltext anzeigen" du wirst den Text hinter Facebook sehen und wirst sehen wie viel Arbeit das ist.

Also wenn du nicht mal weißt woher man das wissen bekommt dann würde ich nicht gleich so groß denken ließ ein paar Bücher über PHP JavaScript und HTML und dann klären sich deine fragen von allein

Was möchtest Du wissen?