Welche Programmiersprache für Anfänger ?

Da ist was dran. Was ich viel wichtiger finde als objektorientierte Programmierung ist MODULARE Programmierung. Damit meine ich die klare Unterteilung des Programms in kleine, selbständige und möglichst voneinander unabhängige Module mit klar definierten Aufgaben, die nur über schmale Schnittstellen miteinander kommunizieren. Bloß weil Code angeblich objektorientiert ist, heißt nämlich noch längst nicht, daß er auch nur annähernd modular ist.

Und das kann man in der Tat in C genau so gut wie in C++ oder beinahe jeder anderen Sprache bewerkstelligen.
 
asdfman schrieb:
Wenn man so geil auf Objektorientierung ist, weil es ja schon länger das Buzzword ist, auf das alle so abfahren, kann man ja immer noch in C objektorientiert programmieren.
Hat nix mit Buzzword zu tun. Ich arbeite gern mit Objekten und Klassen, weils viele Probleme einfach vereinfacht. Ich kann da irgendwie viel leichter gegenüber den zugrunde liegenden Realwelt-Problemen abstrahieren. Das heißt aber nicht, dass ich alles objektorientiert programmiere.

Außerdem beweist dein Link nur, dass sogar für Sprachen, die nicht auf OO ausgelegt sind, OO-Ansätze gesucht werden. Das hat sicherlich einen Grund, meinst du nicht?

Den Objektorientierungsfans hier möchte ich sagen "Wenn alles, was man hat ein Hammer
ist, sieht jedes Problem aus wie ein Nagel". Man sollte seine Fähigkeiten erweitern und für
jedes Problem das passende Werkzeug haben. Und Objektorientierung ist es beileibe nicht
immer.
Der gute Handwerker braucht nur 2 Werkzeuge: WD40 und Panzertape.
Ist es fest, sollte aber locker sein? WD40!
Ist es locker, sollte aber fest sein? Panzertape!

Der Punkt ist: Nur weil man etwas KANN heißt das nicht, dass man es tun muss.
Man kann z.B. einen komplett funktionsfähigen Webserver nebst eingebautem CMS und Co in JavaScript (+SQL-Datenbank) schreiben, aber in 99% der Fälle sollte man sich fragen: MUSS ich das? Tut's nicht ein LAMP-Server, dem ich die nötige Web-Logik in PHP beibring?
Man kann, die richtige Sprache vorausgesetzt, wirklich komplexe Probleme (wie klingt ein unbestimmtes Integral oder n Differentialquotient für dich?) auf vielleicht 2 Dutzend Zeilen runterbrechen (ohne externe Bibliotheken). Die Frage ist: Wie oft macht man sowas? Ich habs ein einziges Mal gebraucht....
 
Ich habs damals mit Prolog gemacht, selbes Prinzip... Lustige Sprache, macht entweder Spaß oder Kopfschmerzen. Ich hab immer überlegt, ob man in PL nicht ein wirklich schnelles RDBMS schreiben könnte...

Aber du hast gemerkt, worums mir ging: Das ist einfach kein Problem, dass man mit C lösen will, wenn man die Wahl hat.
 
Warum sagst du denn erst, OOP sei die Lösung für alle Probleme der Welt und meinst dann ja gut man sollte
doch das passende Mittel nehmen. Widersprichst dir hier ein wenig. Ich sagte nie, C sei die Antwort auf all
unsere Gebete. Nur, dass zu behaupten, es sei ein Rückschritt, wenn die Entwickler einer Sprache keine OOP
auf dem Schirm hatten zeigt, dass man einen begrenzten Horizont hat.

Mal ist OOP besser, mal ist funktioiale Programmierung besser, mal dies, mal das. Und viele verschiedene
Ansätze kennen zu lernen bedeutet keinen Rückschritt, sondern im Gegenteil eine immense Erweiterung
seiner Fähigkeiten.

Also: Lernt C, lernt Lisp, lernt alles was sinnvoll ist. Man kann eigentlich nie genug gelernt haben.
 
Zuletzt bearbeitet:
asdfman schrieb:
Warum sagst du denn erst, OOP sei die Lösung für alle Probleme der Welt und meinst dann ja gut man sollte doch das passende Mittel nehmen. Widersprichst dir hier ein wenig. Ich sagte nie, C sei die Antwort auf all unsere Gebete. Nur, dass zu behaupten, es sei ein Rückschritt, wenn die Entwickler einer Sprache keine OOP auf dem Schirm hatten zeigt, dass man einen begrenzten Horizont hat.
Ich hab nie gesagt, dass OOP die Lösung aller Probleme ist, nur dass es eben meist die angenehmste Herangehensweise ist.
Es ist z.B. schön, dass man gewisse Probleme in Sprachen wie Prolog wirklich leicht lösen kann, nur bringt einem das nix, wenn das Programm am Ende auf einer bestimmten Plattform laufen soll. Über eine Schnittstelle kann man vielleicht mal Code anderer Sprachen mit verwenden, aber das Drumrum will auch geschrieben werden, und das macht sich evtl. OO eben besser.

Mal ist OOP besser, mal ist funktioiale Programmierung besser, mal dies, mal das. Und viele verschiedene Ansätze kennen zu lernen bedeutet keinen Rückschritt, sondern im Gegenteil eine immense Erweiterung seiner Fähigkeiten.
Und? Muss ich in PHP, Java, C++, JS oder Delphi alles objektorientiert lösen? Nö, muss ich nicht. Es ist aber gut, dass man es nutzen kann. Angenommen, man fängt mit Java an, dann gewöhnt man sich irgendwann an OOP.

Also: Lernt C, lernt Lisp, lernt alles was sinnvoll ist. Man kann eigentlich nie genug gelernt haben.
Ja, aber irgendwo musst du ANFANGEN! Und genau darum geht es doch. Womit fang ich an?

Warum sollte ich in Lisp, Haskell oder Prolog anfangen? Das sind tolle und mächtige Sprachen, nur ist das Konzept Lichtjahre von den Konzepten entfernt, die in den "üblichen Verdächtigen" so nutzen.
Warum sollte ich in C anfangen? Es ist eine weit verbreitete Sprache, mit der wirklich viel performante Software geschrieben wurde, z.B. der Linux Kernel. Dafür muss ich mich, und das ist der Nachteil, mit dem Compiler/Linker rumärgern und Speichermanagement lernen.
Warum sollte ich mit Java anfangen? Es ist weit verbreitet, es hat ein angenehmes Speichermanagement, die Programme sind absolut problemlos portierbar. Schreib auf deinem Linux-PC ein Programm, dass du nem Kumpel auf dem Mac zum testen gibst und danach auf nem Android-Handy nutzt... Dafür lernste nix groß über Speicherverwaltung.
Warum sollte ich in HTML+CSS+JavaScript anfangen? Kein zickiges Speichermanagement, die Möglichkeit zu schnellen schmutzige Hacks, schnelle Erfolge,... dafür lernt man da schnell mal unsaubere Arbeitsweisen.

Ich würde eben NICHT in C anfangen. Man sollte C lernen, man brauchts eh irgendwann in der Uni, aber doch nicht als erstes. Es macht doch auch keiner Fahrschule in nem H2...
 
Daaron schrieb:
Ich hab nie gesagt, dass OOP die Lösung aller Probleme ist, nur dass es eben meist die angenehmste Herangehensweise ist.
Es ist z.B. schön, dass man gewisse Probleme in Sprachen wie Prolog wirklich leicht lösen kann, nur bringt einem das nix, wenn das Programm am Ende auf einer bestimmten Plattform laufen soll. Über eine Schnittstelle kann man vielleicht mal Code anderer Sprachen mit verwenden, aber das Drumrum will auch geschrieben werden, und das macht sich evtl. OO eben besser.

Was hat OOP mit der Plattform zu tun? O_o
 
Lesen -> verstehen...

Ich sagte, dass die wirklich hübschen Lösungen (eben z.B. deklarative Ansätze) nicht immer die sind, die man auch nutzen kann. Wenn dein Programm auf einem x-beliebigen PC laufen soll, dann kannst du nicht einfach rotzfrech in Haskell, Lisp,... schreiben. Du musst irgend eine Form von Schnittstelle drumrum packen, in einer Sprache deiner Wahl.
Ob du hier OO-Ansätze nutzt oder nicht ist dir dann selbst überlassen. Wenn du aber OO gewöhnt bist, dann wirst du auch hier bei deiner Schnittstelle OO-Ansätze nutzen wollen.
 
Daaron schrieb:
Wenn dein Programm auf einem x-beliebigen PC laufen soll, dann kannst du nicht einfach rotzfrech in Haskell, Lisp,... schreiben.

Aha, und warum nicht? O_o
Also nochmal: Was hat OOP mit der Plattform zu tun?
Oder anders: Seitwann gilt ein Paradigma als Plattformunabhängig?
 
Zuletzt bearbeitet:
Daaron schrieb:
(...) Wenn dein Programm auf einem x-beliebigen PC laufen soll, dann kannst du nicht einfach rotzfrech in Haskell, Lisp,... schreiben. (...)

Wieso denn? Was unterscheidet die Sprachen in dem Punkt von anderen?
Soweit ich weiß brauchst du um ein Java-Programm auszuführen (meistens) auch ein JRE ;)
 
Zuletzt bearbeitet:
Ne JRE kann man meist voraussetzen, ne Installation von nem Prolog-Interpreter hingegen nicht. Das ist der Trick an der Sache. Genauso kann man auch durchaus sagen, dass n Browser für Programme auf JScript-Basis vorhanden ist.
Ansonsten könnt man ja auch ungefragt allen Kram als CLI-PHP schreiben, soll der User sich doch überlegen, wie ers zum Laufen kriegt.

Zum Thema Programmieren gehört immer auch Usability. Das heißt für viele Software: Click und läuft. Muss ich vorher erst ein Handbuch durchwälzen und/oder massig zusätzliche Pakete installieren suche ich mir einen anderen Anbieter, der es "netter" verpackt. Geht nicht immer vom Profi-Anwender aus, der eh allen Kram in der Shell macht. Es wird euch überraschen, aber viele User erwarten ne hübsche GUI (und damit mein ich nicht nur so n Kram wie ncurses) und einfache Bedienung.
 
Es gibt auf jeden Fall Haskell Compiler (GHC) und für Scheme auch (MIT Scheme). Von Prolog weiß ich es jetzt
nicht. Also muss man für diese beiden Sprachen schonmal keinen Interpreter voraussetzen, wobei das selbst
wenn es keine Compiler gäbe kein Problem wäre, denn es gibt freie Interpreter, die man einfach mitliefern
kann.

Eine hübsche GUI als Frontend zu bauen ist auch kein großes Problem. Gibt ja Baukästen für GUIs und man
muss nur ein paar Zeilen schreiben, die dann an dein Prolog oder Haskell oder wasauchimmer die Befehle
weitergibt. Weiß also nicht, was dein Problem ist. Anscheinend doch wieder der begrenzte Horizont.
 
Zuletzt bearbeitet:
Viele Programme installieren auch das JRE mit oder liefern z.B. Python mit. Warum sollte man das nicht mit PHP oder meinetwegen Prolog machen können. Wirklich schlimm diese eingeschränkte Sichtweise.

Wenn ich etwas in einer bestimmten Sprache wesentlich schneller entwickeln kann verwende ich es natürlich. Und wenn es dann vielleicht einen Interpreter oder irgendwelche Bibliotheken braucht, dann kann ich ja immer noch einen Installer verwenden der dafür sorgt, dass das alles vorhanden ist.
Mit der Sprache hat das jedenfalls herzlich wenig zu tun.
 
Zuletzt bearbeitet:
Daaron schrieb:
Es wird euch überraschen, aber viele User erwarten ne hübsche GUI (und damit mein ich nicht nur so n Kram wie ncurses) und einfache Bedienung.

Es wird dich überraschen, aber viele User erwarten eine CLI-Anwendung ... :rolleyes:
Für die Usability gilt das selbe, wie für das Softwaredesign: "There's no silver bullet"

Daaron schrieb:
Ne JRE kann man meist voraussetzen, ne Installation von nem Prolog-Interpreter hingegen nicht.

Für sowas gibt es Installer ...
 
Ich bin auf diesen Thread gestoßen, weil ich genau das gegoogelt habe. Anfangs sah es ja noch ganz gut aus, aber ganz ehrlich Leute, als "potenzieller Anfänger" bin ich schon fast wieder abgeschreckt! Nehmts mir bitte nicht böse, übel und schon gar nicht persönlich, aber dieser Thread hilft Einsteigern null, weil eine "Expertendiskussion" draus geworden ist...würd mich freun wenn wir/ihr wieder btt kommen würden. Mache dazu auch gerne den Anfang ;)

Mir gehts auch darum, das ich mich nun doch so langsam mal mit dem Programmieren auseinander setzten möchte und bin auf der Suche, mit welcher Sprache ich da am geeignetsten anfangen kann. Bin bei Python und Ruby (on Rails) hängen geblieben, weil was ich so gelesen habe, sollen diese beiden wegen der "Einfachheit" für Anfänger geeignet sein. Muss dazu auch sagen, dass es mir vordergründig um Webprogrammierung geht. Evtl. auch mal die ein oder andere App fürn PC oder ein mobiles Endgerät. Würdet ihr mir Python oder Ruby dafür empfehlen? Bzw was spricht für das eine oder das andere? Mit beiden anfangen wird wohl schwierig sein und auch keinen Sinn machen ;)?! Furtano hat das ja schonmal ganz gut was zusammengefasst - danke dafür ;)! Für Ruby würde mich sowas auch interessieren.

Mir geht es z.B. als Anfänger auch darum, das ich "schnell" Erfolge sehen kann. Das sagt man eben Python und Ruby nach. Ich will jetzt nicht das Pferd von hinten aufsatteln oder das "wenn schon dann richtig" indem ich C/C++, PHP und Java bei meiner Entscheidung mit was ich anfangen will außen vor lasse. Aber ich meine, dass die zu kompliziert/tiefgründig sind und für meine Ansprüche zu hoch sind (korrigiert mich bitte wenn ich das falsch sehe). Ich will aus reinem privaten Interesse mit programmieren anfangen und werde es nicht beruflich benötigen (außer dass es mir da unterstützend hilfreich sein kann). Fahrrad fahren lern man ja auch mit Stützrädern und nicht mit den Grundlagen der Mechanik/Physik ;). Also, um dem Text mal ein Ende zu setzen ;) - mit welchen "Stützrädern" kann/sollte ich am geeignetsten mit programmieren anfangen?

Dankeschön und cya
Druc3
 
Ich würd sagen PHP und HTML.
Warum:
HTML macht schnell viel buntes Zeug und ist fehlertolerant.
PHP hat alles was eine Programmiersprache braucht und ist jetzt nicht soo kompliziert.
IDE besteht aus Notepad++/Ultraedit/... und nem xampp-Server, das kann jeder aufsetzten.

Beginn:
HelloWorld.php
Code:
<?php 
echo "Hello World!";
?>

Python ist natürlich wegen der strengen Syntax<->Lauyout-Geschichte für die Anfänger gleich ein Zwang zum "Schönschreiben". Aber schnell was schön buntes schreiben?
 
An Unis wird primär Java und C++ benutzt (wie auch beim Job), wobei der Programmier Teil sehr gering ist.
Viel eher lernst du Mathe und IT Abläufe, die Sprache selbst wird nur angeschnitten.

PHP und HTML ist eher was für eine Ausbildung zum Informatiker, da lernen sie eher nur Schul-Mathe wie Funktionen & Graphen ermitteln, Graphen darstellen etc.

Nach einem Studium wirst du auch kein Webdesign machen, sondern maßgeschneiderte Software programmieren und je nach Firma auch ins Ausland düsen - das sind die Jobs wo du Moneten erwarten kannst, aber nicht bei Webdesign.
Solche Jobs wären z.B. Wirtschafsinformatiker, Angewandte Informatik (spezi auf Wirtschaft/Biologie IT-Lösungen usw.). Reine Informatiker sind eher die allgemeinen Informatiker, die müssen sich privat spezialisieren bzw. durch die paar optionalen Studien Module.

Java würde ich empfehlen, im Vergleich zu C++ ist die Struktur doch geordneter und viel umständlicher und überflüssiger Kram wurde beseitigt. Zudem hast du mit Java auch gleich für alle Betriebsysteme inklusive mobile Erfahrung gesammelt - und genau das ist grade im Kommen. Wenn einer einen Programmierer sucht, dann einen der Java kann :D

Anfangen kannst am besten mit kleinen Programmen wie einem Taschenrechner, dann klonst du den Windows Kalender etc. So habe ich es jedenfalls gelernt und obwohl ich nur Java kannte, war es mit VB kein Problem. Gab damals in der Schule immer 15 Punkte für nix ^^
 
Zuletzt bearbeitet:
Druc3 schrieb:
Mir gehts auch darum, das ich mich nun doch so langsam mal mit dem Programmieren auseinander setzten möchte und bin auf der Suche, mit welcher Sprache ich da am geeignetsten anfangen kann. Bin bei Python und Ruby (on Rails) hängen geblieben, weil was ich so gelesen habe, sollen diese beiden wegen der "Einfachheit" für Anfänger geeignet sein. Muss dazu auch sagen, dass es mir vordergründig um Webprogrammierung geht. Evtl. auch mal die ein oder andere App fürn PC oder ein mobiles Endgerät. Würdet ihr mir Python oder Ruby dafür empfehlen? Bzw was spricht für das eine oder das andere? Mit beiden anfangen wird wohl schwierig sein und auch keinen Sinn machen ;)?! Furtano hat das ja schonmal ganz gut was zusammengefasst - danke dafür ;)! Für Ruby würde mich sowas auch interessieren.

Mir geht es z.B. als Anfänger auch darum, das ich "schnell" Erfolge sehen kann. Das sagt man eben Python und Ruby nach. Ich will jetzt nicht das Pferd von hinten aufsatteln oder das "wenn schon dann richtig" indem ich C/C++, PHP und Java bei meiner Entscheidung mit was ich anfangen will außen vor lasse. Aber ich meine, dass die zu kompliziert/tiefgründig sind und für meine Ansprüche zu hoch sind (korrigiert mich bitte wenn ich das falsch sehe). Ich will aus reinem privaten Interesse mit programmieren anfangen und werde es nicht beruflich benötigen (außer dass es mir da unterstützend hilfreich sein kann). Fahrrad fahren lern man ja auch mit Stützrädern und nicht mit den Grundlagen der Mechanik/Physik ;). Also, um dem Text mal ein Ende zu setzen ;) - mit welchen "Stützrädern" kann/sollte ich am geeignetsten mit programmieren anfangen?

Heyho, Ruby und Python nehmen sich nicht viel, sie bieten beide eine umfangreiche Standardbibliothek, es gibt für beide gute Plugins für gängige IDEs und die Performance ist ähnlich. Ich persönlich würde mich für Python entscheiden. Ich bin der Ansicht, dass Python einem Anfänger geeignete Konzepte vermittelt um später tiefer in die Entwicklung/Programmierung einzutauchen. Zudem sind Pythonquelltexte in der Regel gut les- und wartbar.

Ruby kann man natürlich auch gut lesbar schreiben, Python zwingt dich dazu. Der Umstieg von Python zu Ruby ist kein großes Problem (wie gesagt, sie nehmen sich nicht viel, haben aber dennoch feine Unterschiede).

Rob83 schrieb:
An Unis wird primär Java und C++ benutzt (wie auch beim Job), wobei der Programmier Teil sehr gering ist.
Viel eher lernst du Mathe und IT Abläufe, die Sprache selbst wird nur angeschnitten.

PHP und HTML ist eher was für eine Ausbildung zum Informatiker, da lernen sie eher nur Schul-Mathe wie Funktionen & Graphen ermitteln, Graphen darstellen etc.

Gut, dass manche Fachhoschulen dazu übergehen, spezialisierte Softwaretechnik-Studiengänge anzubieten, in denen dann auch über den Java-Tellerrand geschaut wird.

Rob83 schrieb:
Nach einem Studium wirst du auch kein Webdesign machen, sondern maßgeschneiderte Software programmieren und je nach Firma auch ins Ausland düsen - das sind die Jobs wo du Moneten erwarten kannst, aber nicht bei Webdesign.

Ich weiß nicht genau, welches Studium du meinst und warum du diese pauschale Aussage triffst - ich nehme an du sprichst von einem Informatikstudium. Dann kann ich dazu nur sagen: Einen Informatiker würde ich sowieso nichts designen lassen.

Rob83 schrieb:
Java würde ich empfehlen, im Vergleich zu C++ ist die Struktur doch geordneter und viel umständlicher und überflüssiger Kram wurde beseitigt. Zudem hast du mit Java auch gleich für alle Betriebsysteme inklusive mobile Erfahrung gesammelt - und genau das ist grade im Kommen.

Wenn ich in Java programmiere, ist das Betriebssystem darunter doch egal. Das ist doch der Vorteil von Java. Aber so sammel ich doch keine Erfahrung in der Programmierung für ein Betriebssystem?

Rob83 schrieb:
Wenn einer einen Programmierer sucht, dann einen der Java kann :D
Und die ganzen Erlang, PHP, .NET etc. Stellenausschreibungen gibt es nur aus Nächstenliebe, oder wie? :freak:
 
Wie schon frueher gesagt:

Python ist auch fuer Einsteiger eine hervorragende Sprache, da sie gut lesbar ist, mit Verstand entworfen wurde, schnell zu Ergebnissen fuehrt, vielseitig einsetzbar ist (CLI, GUI, Web, ...), nicht zum Frickeln verleitet und einer sinnvollen Philosophie folgt.
 
Grundlegend rate ich von Skritsprachen ab wenn man vor hat Informatik zu studieren um damit langfristig Geld zu verdienen und vielleicht auch mal befördert zu werden. In meinen Augen werden PHP, Ruby, Python und co meist für kleinere bis mittlere Projekte verwendet.
Weiteres hab ich die Erfahrung gemacht dass viele die neben dem Studium auf dem Gebiet tätig sind, nicht in der Lage sind wirkliche Logik zu programmieren. Ich kann nur vermuten woran es liegt, vielleicht daran dass diejenigen häufig im einfachen Webbereich tätig sind und es dort einfach wenig Logik zu programmieren gibt.
Meine Erfahrung sagt jedenfalls dass ich nicht viel zu erwarten habe was verwertbar wäre wenn jemand in einer Übungsgruppe neben der Uni PHP etc programmierert.
(Mir ist klar das gilt nicht für jeden ich geben hier nur meine Erfahrungen wieder)
Grundlegend hängt es natürlich davon ab was man langfristig machen will. Besser ist man in meinen Augen aber dran wenn man sich in das Java / C# gebiet begibt und dort seine Fähigkeiten so weit ausbaut das man in Großprojekten mitarbeiten kann. Dort gibt es einfach langfristig mehr Jobs die gut bezahlt sind.
 
Zurück
Oben