Programiersprache für Anfänger
-
ganz klar: perl
-
flamer schrieb:
Dafür wird dir jeder ehrliche Hacker empfehlen:
- Ruby
- Pythonja, für Anfänger geht beides, außer Ruby
-
asc schrieb:
Der Name ist Programm... Wenn du C++ als " Unlogisch und kompliziert" betrachtest, gilt dies erst recht für C.
erst recht? was ist an C komplizierter als an C++? C++ so kompliziert wie C plus einer gehörigen portion eigenkomplexität.
-
~fricky schrieb:
asc schrieb:
Der Name ist Programm... Wenn du C++ als " Unlogisch und kompliziert" betrachtest, gilt dies erst recht für C.
erst recht? was ist an C komplizierter als an C++? C++ so kompliziert wie C plus einer gehörigen portion eigenkomplexität.
Nur wenn man unter C++ C schreibt. Ansonsten nimmt einen C++ einiges an internen Querelen ab.
-
Der Name ist Programm... Wenn du C++ als " Unlogisch und kompliziert" betrachtest, gilt dies erst recht für C.
C++ ist für mich die Summe der C++-Konzepte, die über C hinausgehen.
Auf dem Einsteiger-Level kann man sagen, daß C eine Teilmenge von C++ ist.C ist für mich nicht wirklich eine Hochsprache, sondern eher
structured assembler. Also der Schraubenzieher, den ich auspacke
wenn die Bohrmaschine nicht um die Ecke kommt.Aber: Jedem Tierchen sein Pläsierchen...
Daran zeigt sich ein eigentümliches soziologisches Phänomen:
Überall im Internet finden sich Menschen zuhauf, die sagen daß
C++ das tollste und beste ist (it's what god used for us).Wenn sie's dann halbwegs beherrschen, meinen sie, daß sie alles wissen,
und entwickeln eine seltsame Arroganz, die zutage tritt, wenn sie
alle anderen Objektsysteme pauschal verwerfen.Dabei ist für einen Anfänger, der nützliche Programme schreiben will,
ein garbage collector eine gute Sache.
Außderdem sollten Anfänger einen guten Überblick über alle Sprachen
haben, für die Zeit, in der wir alt und schwach sein werden, denn dann werden
sie herrschen.Ich will nicht für Python in den Krieg ziehen, aber ich bin scheinbar
nicht der einzige, der's verwendet:
http://xkcd.com/353/EOD
-
flamer, kampfbereit schrieb:
asc schrieb:
Aber: Jedem Tierchen sein Pläsierchen...
Daran zeigt sich ein eigentümliches soziologisches Phänomen:
Überall im Internet finden sich Menschen zuhauf, die sagen daß
C++ das tollste und beste ist (it's what god used for us).Ist dir eigentlich aufgefallen das ich nicht C++ empfohlen, sondern nur deine Aussage in Zweifel gezogen habe? Ich werde mit sicherheit keine Sprache für einen Anfänger empfehlen ohne sein Ziel zu kennen.
C++ ist schwer und komplex, aber dann C aufzuführen halte ich für absoluten Quatsch, da Anfänger damit mindestens ebenso überfordert sind.
flamer, kampfbereit schrieb:
Wenn sie's dann halbwegs beherrschen, meinen sie, daß sie alles wissen, und entwickeln eine seltsame Arroganz, die zutage tritt, wenn sie alle anderen Objektsysteme pauschal verwerfen.
Ganz ehrlich, die arroganz gebe ich auch zurück. Gerade bei einem Namen der darauf hindeutet absichtlich zu flamen. Darauf deutet auch folgendes hin:
flamer, kampfbereit schrieb:
asc schrieb:
Der Name ist Programm... Wenn du C++ als " Unlogisch und kompliziert" betrachtest, gilt dies erst recht für C.
C++ ist für mich die Summe der C++-Konzepte, die über C hinausgehen.
Auf dem Einsteiger-Level kann man sagen, daß C eine Teilmenge von C++ ist.Und das ist die typische Arroganz von jemanden der aus der C-Schiene kommt, und das konzept von C++ nicht verstanden hat. Ja, man kann dort C schreiben (Aus kompatibilitätsgründen), dies ist dann aber C und nicht C++. Man kann C++ auch ohne C programmieren und wenn man es auf die C++ Art macht, halte ich es sogar für einfacher verständlich (weniger Zeigerarithmetik, weniger Fallstrike bei simplen Strings und Arrays...).
Zudem kann ich nur das empfehlen was ich kenne, ich habe mich hier auch niemals gegen Phyton und Co ausgelassen. Nur akzeptiere ich es tatsächlich nicht (insofern bin ich tatsächlich arrogant) C auf ein anderes Komplexitätslevel als C++ zu legen. Das was in C das wilde Schießen mit Zeigern ist, ist in C++ das Grundverständnis der Standardbibliothek, die eben dies reduziert.
Der Ursprungsposter hat nur einen Satz ohne Anwendungsfeld beschrieben, in der Hinsicht kann ich jedenfalls keine Empfehlung aussprechen. Ich weiß weder wo seine späteren Schwerpunkte (Webentwicklung, kleine oder große Desktopanwendungen, Spiele...) liegen, noch was sein entgültiges Ziel ist.
Wenn es um eine Sprache in der Anwendungsentwicklung, mit späterer Zielsetzung mittlere/große Projekte geht, würde ich wohl am ehesten zu Java oder C# tendieren. Bei kleinen Anwendungen gehen aber ebenso Scriptsprachen etc.. Im Bereich der Spieleentwicklung tendiere ich derzeit zu C++ oder C#. Im Bereich der rein serverbasierten Webentwicklung kann ich kaum eine Auskunft geben (da ist meines Erachtens vor allen PHP, Phyton & Co stark, ebenso kann aber durchaus auch Java und C# [ASP.Net] je nach Anwendungsfall gut sein. Wenn es um die Entwicklung von Webanwendungen ala Applets geht würde ich wohl Java, C# [Silverlight] oder Flash nennen...
Und wenn jemand bereit ist ins eiskalte Wasser zu springen mit dem Ziel später möglichst leicht auf viele andere Sprachen zu wechseln, selbst wenn es mit viel Erstaufwand verbunden ist, ja, dann kann ich vielleicht auch C++ ins Rennen schicken.
cu André
-
ein großer Teil der Faszination, die Programmierer für C++ empfinden, besteht m.M.n. darin, daß C++ ständig kleine Erfolgserlebnisse bereithält, wenn man wieder eines der (vielen und nicht immer logischen) Sprach-Features verstanden hat.
Ich denke z.B. da an die Mehrfach-Bedeutung von static und & (wieviele völlig verschiedene Bedeutungen hat & in C/C++ ? fünf ? Vom "und" bis zum Adreßoperator) - je nach Kontext bedeuten diese Syntax-Elemente völlig verschiedene Dinge. Das ist unlogisch und verwirrt Anfänger ungemein; dem Fortgeschrittenen dageben gibt es das Gefühl, wieder etwas durchschaut zu haben, ähnlich, wie sich Archäologen fühlen, wenn sie die Bedeutung eines antiken Schriftzeichens entschlüsselt haben, oder so, wie sich Mathematiker fühlen, wenn sie wieder ein neues Lemma durchschaut haben.
Programmiersprachen sind für Anfänger dann geeignet, wenn es eine 1:1 eindeutige Zuordnung zwischen Syntax-Elementen und Konzepten gibt. Deshalb auch kein Ruby (7 Arten der Benutzung blockähnlicher Konstrukte :D).
"The Pythonic way" ist ein gutes Beispiel für Anfänger-gerechtes Sprachdesign, aber auch weniger bekannte Sprachen wie Smalltalk.
-
asc schrieb:
Nur wenn man unter C++ C schreibt. Ansonsten nimmt einen C++ einiges an internen Querelen ab.
nenn doch mal ein konkretes beispiel. z.b. ein c++ feature, womit man eine C-eigenart umschiffen kann, ohne sich nicht mindestens 2 oder 3 neue, potentielle problemchen einzuhandeln.
-
~fricky schrieb:
nenn doch mal ein konkretes beispiel. z.b. ein c++ feature, womit man eine C-eigenart umschiffen kann, ohne sich nicht mindestens 2 oder 3 neue, potentielle problemchen einzuhandeln.
Nicht, dass ich versuchen wollen würde, Dich von der getätigten Aussage zu überzeugen (das klappt sowieso nicht), aber mich würde interessieren, wo Du hier (mindestens zwei! :D) neue Problemchen findest:
printf("%d", "hallo, welt"); // vs. cout << "hallo, welt";
-
~fricky schrieb:
nenn doch mal ein konkretes beispiel. z.b. ein c++ feature, womit man eine C-eigenart umschiffen kann, ohne sich nicht mindestens 2 oder 3 neue, potentielle problemchen einzuhandeln.
Alleine schon die normale Stringbehandlung (Inklusive Aufaddieren, Übergeben...)
#include <string> void foo(std::string & x) { x = x + x; } int main() { std::string a = "H"; std::string b = "allo"; std::string c = a + b; foo(c); }
Die Übergabe von Arrays, die Behandlung von Arraygrenzen...
usw.
cu André
-
Moin,
ANSI C ist genauso wenig schwer wie C++ oder Java, wobei ich mit
C++ nicht sooo viel am Hut hatte.
Jedoch sei gesagt, dass ich _nur_ einen Hauptschulabschluss habe.
Und wenn ich mich sogar an Assembler begeistern kann, dann könnt ihr
das so oder soGruß,
KabelKlaus
-
Dieser Autor bringt es auf den Punkt:
It can be considered: what application domain is C++ relevant for? The answer to this is that C++ might be used as a better C. But for what applications is C relevant? C is relevant for low level Unix style programming, and is not an ideal language in view of its low level nature, and flaws. C is not applicable for large project organisation: hence C++'s attempt to improve it. C++, however, has not solved C's flaws, as I once hoped it would, but painfully magnified them.
-
LordJaxom schrieb:
mich würde interessieren, wo Du hier (mindestens zwei! :D) neue Problemchen findest:
cout << "hallo, welt";
<< ist bereits Shift-Operator; die Doppelbedeutung verwirrt Anfänger.
-
Echt? Ein Anfänger lernt zuerst was ein Shift-Operator ist?
Ich habe den bis heute nicht gebraucht! Zu Assembler-Zeiten habe ich Shifts benutzt... in C++ ist mir das zum Glück erspart geblieben.
Und das oben genannte Beispiel, kommt in jedem C++-Buch VOR den Shift-Operatoren. Das kann niemanden verwirren.
-
tfa schrieb:
Dieser Autor bringt es auf den Punkt:
It can be considered: what application domain is C++ relevant for? The answer to this is that C++ might be used as a better C. But for what applications is C relevant? C is relevant for low level Unix style programming, and is not an ideal language in view of its low level nature, and flaws. C is not applicable for large project organisation: hence C++'s attempt to improve it. C++, however, has not solved C's flaws, as I once hoped it would, but painfully magnified them.
Yo, ich kann auch eine Gegenkritik schreiben. Jeder kann eine Kritik schreiben. Muß aber deshalb nichts heißen.
-
u-ser_l schrieb:
<< ist bereits Shift-Operator; die Doppelbedeutung verwirrt C-Veteranen, die sich seit 20 Jahren erfolgreich C++ widersetzen.
FTFY
-
Bulli schrieb:
Yo, ich kann auch eine Gegenkritik schreiben. Jeder kann eine Kritik schreiben. Muß aber deshalb nichts heißen.
Absolute Zustimmung. Es gibt solche Kritiken ohnehin zu jeder Sprache (Sei es nun C, Java, C++, VB...). Wenn es einen heiligen Gral an Sprache gäbe, würde es eh nur noch diese auf dem Markt geben
cu André
-
asc schrieb:
Wenn es einen heiligen Gral an Sprache gäbe, würde es eh nur noch diese auf dem Markt geben
Nein, dann würden die, die ihn gefunden haben, in einen heiligen Kreuzzug gegen die Anhänger anderer Sprachen ziehen. Moment mal ...
-
asc schrieb:
Und das ist die typische Arroganz von jemanden der aus der C-Schiene kommt, und das konzept von C++ nicht verstanden hat.
hatte ich wirklich ein bißchen hart formuliert.
asc schrieb:
Der Ursprungsposter hat nur einen Satz ohne Anwendungsfeld beschrieben, in der Hinsicht kann ich jedenfalls keine Empfehlung aussprechen.
Goethe schrieb:
Ein jeder, weil er spricht, glaubt auch über die Sprache sprechen zu können.
er hat ein anwendungsgebiet beschrieben:
er will was lernen.und da ist mir eingefallen, _wie_ lange ich die std-b von C++
studieren mußte, um "erfolgserlebnisse" zu haben.
ich würde heute anders anfangen.Wenn es um eine Sprache in der Anwendungsentwicklung, mit späterer Zielsetzung mittlere/große Projekte geht, würde ich wohl am ehesten zu Java oder C# tendieren. Bei kleinen Anwendungen gehen aber ebenso Scriptsprachen etc..
es ist einfach nicht wahr, dass "scriptsprachen" nur mehr für
kleine anwendungen was taugen.ANSI C ist genauso wenig schwer wie C++ oder Java
aber man braucht ein wenig, bis man manches durchschaut hat,
außer vielleicht bei java.
-
besseres Beispiel:
&
hat je nach Kontext wieviele verschiedene Bedeutungen in C++ ?
1. logisches "und"
2. Adreßoperator
3. unabhängige Referenzen (int& a)
4. pass-by-reference bei Argumentübergabe in Funktionsaufrufen
5. Referenzrückgabe von Funktionen(habe ich noch welche vergessen?)
das ist für Anfänger schlicht eine Menge zu lernen, und intuitiv erkennbar sind diese Bedeutungen, abgesehen vom logischen "und", auch nicht.