Könnt ihr mir Fragen zum Programmieren beantworten?

4 Antworten

C ist eine Programmiersprache, deren Anfänge in die spätesten 60er Jahre und die Anfänge von Unix zurückgehen. 

C++ ist "C with classes" also C mit einem Klassen/Objekt-Konzept.

JAVA ist ein Versuch auf Basis von C++ eine Sprache zu entwickeln, die die Stärken, nicht aber die Schwächen von C++ hat und in einer virtuellen Maschine schnell ausgeführt werden kann. Als Client-Sprache hat sie sich nicht wirklich durchgesetz, wohl aber als Sprache für Server-Frameworks.

C# ist Microsofts Antwort auf JAVA.

JAVA ist einfacher zu lernen als C++ und C. Ich würde damit anfangen.

Java, C, C++, ... sind alles Programmiersprachen. Sie unterscheiden sich im Wesentlichen in der Syntax. Aus eigener Erfahrung würde ich mit Java beginnen. Da die Grundfunktionen bei allen recht ähnlich sind,  wenn du einmal den Grundgedanken des Programmierens gelernt hast (du also nur die verschiedenen Befehle in den einzelnen Sprachen lernen musst), wird dir das Erlernen weiterer Programmiersprachen anschließend auch leichter fallen. Und nein, du musst natürlich nicht alle können ;) das kommt darauf an, was du programmieren möchtest. Möchtest du z.b. eine Internetseite erstellen ist html gängig, für android apps ist java wiederum sinnvoll...

Footballi90 
Fragesteller
 15.08.2015, 17:57

ich möchte Android Apps programmieren aber auch Spiele für den PC. Kannst du irgendwelche Seiten/Bücher zum lernen empfehlen? :))

0
Minaaaaa  15.08.2015, 19:09
@Footballi90

oha, das wird harte arbeit! ;) also der klassiker zum Verständnis ist wohl "Java ist auch eine Insel" von Christian Ullenboom, aufgrund des Umfangs allerdings eher als Nachschlagewerk gedacht. Ansonsten hat Oracle auf seiner Seite selbst auch ganz nette Tutorials. Mein Rat, lad dir eine Java Entwicklungsumgebung (z.B. Eclipse http://www.chip.de/downloads/Eclipse_24547633.html) runter und probier so viel wie möglich von dem neu gelernten aus, da eine Programmiersprache wie eine echte Sprache darauf basiert angewendet zu werden. Viel Spaß und viel Glück!

0
mepeisen  15.08.2015, 21:28

Sie unterscheiden sich im Wesentlichen in der Syntax.

Lustigerweise ist gerade dieses Details aus Anfängersicht völliger Blödsinn. Klar, es gibt teils gravierende Unterschiede. Aber: Bis auf ganz minimale Unterschiede unterscheiden sich alle 4 genannten ausgerechnet nicht voneinander, was ihren Grundaufbau in der Syntax angeht. Man könnte sogar noch Javascript und PHP hinzunehmen. All diese Sprachen sind mehr oder weniger aneinander angelehnt, bringen lediglich wenige ihrer Eigenheiten mit. Doch wenn man es einmal durchschaut hat, ist es relativ leicht, von einer zur anderen zu wechseln.

Ich meine damit vor allem den Vergleich zu Sprachen wie Pascal/Basic/Cobol/Fortran usw.

Erst, wenn man tiefer in die Eigenheiten der Sprachen eintaucht (etwa Präprozessor-Funktionalität, Templates vs. Generics usw.), sieht man dann als vielleicht eher Fortgeschrittener die echten Unterschiede.

Die Hauptunterschiede existieren dann vor allem auch in den Anwendungsgebieten und den dabei zur Verfügung stehenden Bibliotheken, sowie in den "unter der Haube befindlichen" Features, die ein Anfänger beim Lernen aber noch nicht so schnell zu Gesicht bekommt.

Und nein, HTML ist keine Programmiersprache. HTML ist eine Auszeichnungssprache.

Aber gut, dass du nach dem Ziel des Lernens fragst. Denn, wer eine Webseite programmieren will, sollte sich von vornherein nicht mit C beschäftigen, sondern stattdessen entweder in Richtung Java Applets bewegen oder eben HTML/Javascript/Ajax/PHP (oder wahlweise statt PHP dann Java Servlets).

0

Was ist Java, C, C++ und C#?

Über alle genannten Sprachen gibt es ausreichende Artikel in der Wikipedia! „Ausreichend“ heißt, man kann einen ersten Überblick gewinnen!

Außerdem hast du zwei sehr wichtige Sprachen vergessen: Objective-C und Swift! Die sind ebenfalls in der Wikipedia zu finden!

„Welche der Programmiersprachen sollte ich als Anfänger lernen?“

Ich schlage grundsätzlich „C“ vor, da die Sprache alles bietet, was zum Programmieren benötigt wird. Immerhin konnte und kann mit ihr noch immer ganze Betriebssysteme programmieren!

Für was sind die einzelnen Sprachen (Apps, Spiele, andere Programme zu Programmieren oder für alles)?

Bis auf Java und C#, die sich nicht zur System-Programmierung eignen, kann man mit allen Sprachen alles andere Programmieren

Wobei unterscheiden sich diese?

Syntax, Schlüsselworte … Die Details entnimmst du bitte den Wikipedia-Artikeln!

Und muss ich all die Sprachen lernen?

Kein Mensch muß „müssen“ … :-)

grtgrt  16.08.2015, 11:05

Ein ganz wesentlicher Unterschied zwischen direkten Programmiersprachen (z.B. C, C++) und den indirekten (mit denen ich Java, C#, aber auch Python meine) besteht darin, dass mit ersteren nur eine relativ kleine Standardbibliothek kommt, für letztere aber eine riesige Menge fertig implementierter Klassen mit Hilfsfunktionalität praktisch jeder Art bereitsteht. Dies macht es deutlich einfacher, Anwendungen schnell zu erstellen und vor allem auch schnell fehlerfrei zu bekommen.

Standardbibliothek zu C# ist die .NET-Bibliothek.

Die Standardbibliothek zu Java -- soweit sie nicht (als derzeit SE 8) bereits mit dem Compiler kommt -- ist JEE (die Java Enterprise Edition, die man problemlos mit jedem der gängigen Java Application Server kombinieren kann).

Zudem gibt es Dutzende ganz hervorragender Java Open Source Frameworks, deren jedes auch eine Art de-facto-Standardbibliothek darstellt. Ihr Nachteil allerdings:  Man hat die Qual der Wahl, auch wenn sie sich, meist wenigstens, problemlos mit wenigstens der offiziellen Standardbibliothek SE 8 + JEE vertragen.

Auch zu C++ gibt es eine Standardbibliothek. Die aber ist so wenig gelungen, dass ich persönlich sie nur ungerne verwende (und in großen Teilen für überflüssig erachte). Auch ist sie mir von der Abstraktionsebene her einfach zu tief angesiedelt. 

Wie die Situation für Apples OS X aussieht, kann ich nicht beurteilen, da ich stets gezwungen war, auf MS Windows oder Unix zu programmieren.

0
mepeisen  17.08.2015, 08:06
@grtgrt

dass mit ersteren nur eine relativ kleine Standardbibliothek kommt, für letztere aber eine riesige Menge fertig implementierter Klassen mit Hilfsfunktionalität praktisch jeder Art bereitsteht

Nur weil man etwas nicht kennt, bedeutet das nicht, dass es so etwas nicht gibt. Nur ein Mini-Beispiel: Boost

Es gibt im Grunde nur deswegen eine stetig wachsende Standard-Bibliothek zu Java oder .NET, weil es stetig neue Versionen gibt. Das, was man als C/C++-Standard-Bibliothek bezeichnet, basiert auf ISO-Konventionen und ist einfach Jahrzehnte alt. Es gibt da einfach keine nur eine an einer Hand abzählbare Versionen von (Beispielsweise C++98/2003, C++11, C++14). Dennoch gibt es für beides Tonnen an guten und umfangreichen Bibliotheken, für eigentlich jede denkbare Lösung.

Wer beispielsweise Apps für Handys programmieren will, befindet sich auch mit entsprechenden Sprachen von Haus aus in einem völlig anderen Umfeld, was "die Standard-Bibliothek" angeht, als einer, der reinrassiges C/C++ lernt anhand der ISO-Konventionen.

Du vergleichst da auch Äpfel mit Birnen. .NET gehört Microsoft und Microsoft alleine legt die Standards fest. Java gehörte Sun, jetzt Oracle und die alleine legen Standards fest.

C und C++ hingegen gehört der Weltgemeine sozusagen. Das ISO-Gremium, was sich um die Standardisierung kümmert, muss nicht nur viele Interessen berücksichtigen, es kann so etwas wie eine Standard-Bibliothek gar nicht monatlich erweitern und ändern, da das bedeuten würde, sich stetig mit hunderten Firmen, Compiler-Herstellern usw. abzustimmen. Die Akzeptanz wäre = 0. Also MUSS der Standard so klein bleiben, dass nur die wichtigsten Funktionalitäten abgedeckt werden.

0
wolfgang1956  16.08.2015, 13:17

Dies macht es deutlich einfacher, Anwendungen schnell zu erstellen und vor allem auch schnell fehlerfrei zu bekommen.

Das ist doch lächerlich! Wenn man nicht weiss, was wie zusammenpasst, hat man eher ein Labyrinth denn Libraries. Wer erkennt oder weiss denn schon gerade als Einsteiger, welche Klassen wofür sind? Wer weiss schon gleich zu Beginn was MVC ist oder kennt die verschiedenen Entwurfsmuster …

Ohne solide Grundlagen basierend auf C ist das sehr zu bezweifeln, weil man der Fehlermeldungen nicht Herr wird bzw. sie nicht versteht. Und wenn man dann auch noch keine Pointer-Arithmetik versteht, ist man aufgeschmissen.

Man muß sich nur die 100.000 Fragen zu Java im hiesigen Forum ansehen, wo den Eleven einfach grundlegende Basics zu Pointern fehlen … :-)

Nichts gegen Ullenbooms Java-Insel, aber die Pointer behandelt er auch etwas stiefmütterlich …

Genau deswegen habe ich mich bei der Kommentierung der Fragen „kurz“ gehalten. Wenn der Fragensteller „Weisheiten“ wissen wollte, hätte er deutlich gezielter gefragt!

0
grtgrt  16.08.2015, 15:22
@wolfgang1956

Na ja, seine Frage war ja auch >> Muss ich all diese Sprachen lernen? <<.

Meine Antwort darauf (abgeleitet aus meiner Erklärung oben): 

Mit nur einer Sprache wird ein Anfänger am weitesten kommen, wenn diese Sprache C# oder Java ist - nicht zuletzt auch deswegen, weil er dann viel Code, den er sonst selbst schreiben müsste, geschenkt bekommt.

Natürlich wird er die richtigen Klassen dort erst finden müssen. Aber das geht allemal noch schneller, als sie selbst schreiben, austesten und durch Debugging hinreichend fehlerfrei machen zu müssen. 

Auch ist es heute für Programmierer deutlich wichtiger, die Möglichkeiten der verfügbaren Klassenbibliothek zu kennen als die entsprechende Sprache bis ins letzte Detail zu beherrschen oder auch nur zu kennen.  

Mit C war das natürlich noch ganz anders.

Aber schon mit C++ steht jeder Anfänger vor dem Problem, das Notwendige vom (fast) Überflüssigen unterscheiden zu müssen, weil er sonst schnell gar nichts mehr versteht oder Code produziert, über den man sich dann nur noch wird krank lachen können. Wertvolles gelernt hätte er mit so viel Mühe dann doch nicht wirklich, oder?


0
wolfgang1956  17.08.2015, 11:38
@grtgrt

Mit nur einer Sprache wird ein Anfänger am weitesten kommen, wenn diese Sprache C# oder Java ist - nicht zuletzt auch deswegen, weil er dann viel Code, den er sonst selbst schreiben müsste, geschenkt bekommt.

Nochmal, damit es hängen bleibt:

Wenn man sich beispielsweise die Operatoren ansieht, haben C# und Java bei der allgemeinen Norm „C“ abgeschrieben. Weiters stimmen zahlreiche Schlüsselwörter überein!

Zwar „verbergen“ Java und C# die Pointer-Arithmetik vor den völligen Neueinsteigern, aber wenn man dieses wichtige Kapitel der Sprache C nicht kennt, kann man Fehlermeldungen häufig gar nicht nachvollziehen.

Auch ist es heute für Programmierer deutlich wichtiger, die Möglichkeiten der verfügbaren Klassenbibliothek zu kennen als die entsprechende Sprache bis ins letzte Detail zu beherrschen oder auch nur zu kennen.

Das ist sehr zu bezweifeln!

Hunderte von Klassenbibliotheken „erschlagen“ einen Einsteiger eher, dass sie hilfreich sind.

Wenn man keine Entwurfsmuster kennt, sind viele Klassen-Bibliotheken aus ihrem Zusammenhang gerissen und nutzlos!

Aber schon mit C++ steht jeder Anfänger vor dem Problem, das Notwendige vom (fast) Überflüssigen unterscheiden zu müssen, weil er sonst schnell gar nichts mehr versteht oder Code produziert, über den man sich dann nur noch wird krank lachen können. Wertvolles gelernt hätte er mit so viel Mühe dann doch nicht wirklich, oder?

Beim Schreibenlernen müssen die ABC-Schützen die Rechtschreibung einfach lernen! Das gilt auch für Fremdsprachen. Ebenso wie Englisch und Französisch als Sprache verschiedene Grammatiken haben, unterscheidet sich diese bei Programmiersprachen; nur nennt man dies dort wohl „Syntax“!!

C++ ist wie C eine universell ausgelegte und eine genormte Sprache. In meiner langjährigen Erfahrung habe ich noch niemals erlebt, dass Normen überflüssige Eigenschaften der Sprachen C und C++ festlegen.

Wollen Sie entscheiden was notwendig oder überflüssig ist? Kämen sie in der Mathematik auf die Idee, den Leuten ausschließlich Geometrie beibringen zu wollen, weil Algebra oder Zahlentheorie überflüssig seien?

Auch wenn das Beispielprogramm „Hello World“ einigermassen überflüssig scheint, lehrt es eines: selbst diese paar Codezeilen können schon für ein Programm ausreichen.

Es geht nicht darum, Notwendiges von Überflüssigem zu unterscheiden, sondern das Programmieren zu lernen!

0
grtgrt  17.08.2015, 19:03
@wolfgang1956

Ich gebe Ihnen ja völlig recht, dass C zu lernen den Lernenden wohl am besten mit den Grundlagen des Programmieren vertraut macht. 

Und deswegen bin ich auch der Meinung, dass sich niemand Programmierer nennen sollte, der nicht wenigstens auch C voll beherrscht.

Andererseits muss man auch sehen, dass nicht jeder, der in die Welt des Programmierens hineinschnuppern möchte, ernsthaft vor hat, sein Geld später mit Programmierung zu verdienen oder wenigstens Informatik zu studieren. 

Mit anderen Worten: Vielen, die sich ein erstes Mal dafür interessieren, wie man programmiert, wünschen sich ein schnelles, attraktiv aussehendes Erfolgserlebnis: Ein selbst geschriebenes Programm also, welches über eine graphische Benutzeroberfläche zu bedienen ist.

Wenn nun so jemand C gelernt hat, wird er jedoch schnell feststellen, dass er dann noch lange nicht in der Lage ist, seiner ersten kleinen Anwendung eine graphische Benutzeroberfläche zu geben: Als C erfunden wurde, hat man Programme noch per Command Line bedient. Eine GUI zu schreiben, erfordert deswegen auf jeden Fall die Kenntnis entweder des Windows APIs oder einer umfangreichen Code-Bibliothek, die dieses API abstrahiert (so wie etwa Microsofts MFC das tut). Das Windows API direkt zu nutzen ist nicht zu empfehlen, jede heute brauchbare GUI-Bibliothek aber ist wohl schon in C++ geschrieben, so dass sie zu verstehen und anzuwenden C nicht mehr ausreicht. Kurz: Ein Anfänger wird sich auf diesem Weg nur mit C dann ganz schnell recht verloren fühlen.

Auch mit C# oder Java ist es keineswegs leicht, eine GUI zu erstellen - aber auf jeden Fall SEHR VIEL LEICHTER als nur mit C.

Dann noch zu Ihrem Argument, dass sogar ABC-Schützen die Rechtschreibung erlernen müssen:

Ja, sie müssen in der Tat lernen, alle Worte, die sie benutzen, korrekt zu schreiben -- es handelt sich dabei aber auf keinen Fall gleich um den gesamten deutschen Sprachschatz. Und genau so habe ich das oben mit meinen "(fast) Überflüssigem" gemeint: Es bildet den Teil der Syntax und der Konstrukte von C++, der bei den ABC-Schützen dem Wortschatz entspricht, den sie erst 13 Jahre später -- wenn sie Abitur machen -- beherrschen sollten.

Kurz: Mein Ratschlag, wie man am besten erste Erfahrung mit dem Programmieren gewinnt, zielt darauf ab, relativ schnell ein Erfolgserlebnis zu haben und sofort den neuesten Stand vorhandener Programmiermöglichkeiten kennen zu lernen (in dem Umfang, wenigstens, wie unverzichtbar erscheint).

Wenn derjenige dann wirklich mal Informatik studieren sollte,  wird er in der Einführungsvorlesung ganz sicher lernen, was direkte und indirekte Adressierung von Speicher ist, wie man Speicher allokiert, dass man bei selbst allokiertem Speicher in die Gefahr gerät, über sein Ende hinaus zu schreiben, welch böse Folgen das haben muss, und Ähnliches.  

Vielleicht wird er dann ja auch in einem Praktikum mal Gelegenheit bekommen zu vergleichen, um wieviel einfacher und effizienter man Text jeder Art mittels C statt per C# oder Java manipulieren kann.

Für erste Gehversuche in die Welt der Programmierung hinein werden ihm solche Anwendungen aber eher uninteressant und allzu trocken erscheinen.                                

0