# Anfänger Programmiersprache

## ixo

Hallo, ich benötige 'mal ein paar Tips.

Mein Sohnemann (fast 14 Jahre alt, nicht ganz doof) sollte sich am Computer 'mal mit etwas sinnvollerem als Spiele beschäftigen, z.B. ein bisschen programmieren lernen.

Gibt es unter Linux eine Sprache für den Anfang, die folgenden Bedingungen genügt:

einfache Sprache wie Basic o.ä.

Dokumentation in Deutsch verfügbar (frei)

Strukturiert, mit Deklarationen

. . .

Würde es Sinn machen, ihn gleich auf so etwas wie z.B. Ruby zu hetzen??

(Ich selbst beherrsche perl, C, C++, Shell Script und aus alten Zeiten noch ein dutzend weiterer Sprachen (halb vergessen).)

Grüße, ixo

----------

## l3u

Wenn's was gescheites sein soll, gleich C (die Kurve hab ich leider nie gekriegt und kann's bis heute nicht), ansonsten vielleicht python? Von Perl würd ich die Finger lassen, das ist zu ... anders als die anderen (aber trotzdem oder gerade deswegen meine Lieblingssprache ;-)

----------

## ixo

Ich habe 'mal Vorlesungen in C gehalten, allerdings K&R C (kein ANSI). C finde ich für den Anfang schon ein bisschen schwer und frustierend. Auf Dauer sollte man sich dann sowieso Richtung C++ bewegen, das wird dann doch wesentlich übersichtlicher.

perl ist ein Chaos Sprache. Damit werde ich ihn definitiv nicht maltretieren.

In phyton finde ich die Syntax (mit dem Einrücken) irgendwie krank. Außerdem kann ich das selbst nicht.

Wenn ich schon was neues lernen muss, dann wohl doch lieber Ruby.

Ich sehe mir gerade "Ruby in 20 Minutes" an. Das macht einen recht ordentlichen Eindruck auf mich. Ruby ist allerdings sehr objektorientiert - keine Ahnung, ob man das ohne Hintergrund sofort schnackelt.

----------

## franzf

Ich würde gleich objektorientiert anfangen. Auch wenn ich die Sprache nicht recht gern mag: Java. Da muss man sich keine Sorgen um Speicherlecks, Referenzen, Pointer usw. machen. Ich mags zwar nicht wenn man mich einschränkt  :Wink:  aber für den Anfang ist es einfach sicherer.

----------

## SinoTech

 *franzf wrote:*   

> Ich würde gleich objektorientiert anfangen. Auch wenn ich die Sprache nicht recht gern mag: Java. Da muss man sich keine Sorgen um Speicherlecks, Referenzen, Pointer usw. machen. Ich mags zwar nicht wenn man mich einschränkt  aber für den Anfang ist es einfach sicherer.

 

Da stimme ich dir voll und ganz zu. Ich persönlich mag Java auch nicht so sonderlich, aber für den Anfang auf jeden Fall nicht zu verachten.

Vorteile:

- Von der Syntax her fast wie C/C++ (also die gesamten Basis sachen wie bedingte Anweisungen, Schleifen, Variablen typen, ...)

- Man kommt relativ zügig zur GUI Programmierung (Wenn man was graphisches zeigen kann macht das lernen doch direkt vielmehr Spaß  :Wink: )

- Ansonsten, wie schon von franzf gesagt, muss man sich nicht um Speicherlecks etc. kümmern. Java meckert direkt bei einem Fehler (zum Beispiel bei einem "null" pointer) und gibt auch schön brav die Stelle aus an der das passiert ist  :Wink: 

- ...

Ach ja, und ausserdem wird von Java von Anfang an der Object Orientierte Ansatz verfolgt, was ich auch nicht verkehrt finde (wobei ich dieses "ausschließlich objekt orientiert" bei Java teilweise doch etwas nervig finde).

Cheers,

Sino

----------

## Mr. Anderson

Java 1!!1!!11

*räupser*

Ja, also Java empfehle ich inzwischen zum Einstieg, weil es recht einfach ist, gut dokumentiert und inzwischen frei wurde bzw. wird und sogar den Segen von Stallman bekommen hat. Und: Java hat Ähnlichkeiten zu C++ ("Java ist C++--") und ist ähnlich weit verbreitet und im Einsatz.

----------

## schmutzfinger

Vor Java würde ich Ruby empfehlen.

Deutsche Doku:

http://home.vr-web.de/juergen.katins/ruby/buch/http://www.ruby-doc.org/docs/Einfuhrung_in_Ruby/

die API Docs sind glaube ich nur auf Englisch verfügbar.. vielleicht hat jemand Array/String/Hash und sowas übersetzt aber alles gibts wohl nicht auf Deutsch.

----------

## ixo

Java   :Rolling Eyes: 

Also ich weiß nicht. Ich habe mir das vor 2 Jahren 'mal angesehen - nicht weil ich's lernen mußte, nur so nach dem Motto "schad' ja nichts" und weil ich viel mit Java Programmierern zu tun hatte.

Die Syntax ist ja nicht besonders schwer (gerade wenn man von C++ kommt), aber man muss ein Million Bibliotheken kennen, um irgendetwas hinzubekommen (hab' ich mir auch von Java Programmieren bestätigen lassen). Die ständigen Exceptions für jeden Scheiß machen den Code auch nicht gerade lesbar. Für den Anfang stelle ich mir das auch ehr abschrecken vor.   :Question: 

Der Knabe hat noch keine Zeile programmiert!

----------

## SinoTech

 *ixo wrote:*   

> Java  
> 
> Also ich weiß nicht. Ich habe mir das vor 2 Jahren 'mal angesehen - nicht weil ich's lernen mußte, nur so nach dem Motto "schad' ja nichts" und weil ich viel mit Java Programmierern zu tun hatte.
> 
> Die Syntax ist ja nicht besonders schwer (gerade wenn man von C++ kommt), aber man muss ein Million Bibliotheken kennen, um irgendetwas hinzubekommen (hab' ich mir auch von Java Programmieren bestätigen lassen). Die ständigen Exceptions für jeden Scheiß machen den Code auch nicht gerade lesbar. Für den Anfang stelle ich mir das auch ehr abschrecken vor.  
> ...

 

Mit den Bibliotheken die in der SDK dabei sind, kannst du schon alles machen. Das einzige was du machen musst sind die "import"-statements in den Code tippen, aber ...

1. Musst du sowas in fast jeder Programmiersprache machen (in C++ sind es beispielsweise die Header Files)

2. Nehmen dir das manche Entwicklungsumgebungen schon ab (In Netbeans beispielsweise einfach <STRG> + <ALT> + f drücken).

Ansonsten nervt dieses Exception handling zwar (jeden scheiß muss man abfangen  :Sad: ), ist aber nicht der Welt Untergang. Mal davon abgesehen das du, wenn du noch nichts kannst, auch nicht in Situation kommen wirsd in denen du Exceptions abfangen musst (die IOException bei der Ein-/Ausgabe in Dateien wird wohl die erste sein die er überhaupt abfangen muss, und bis dahin hat er schon einen kleinen Weg vor sich)

Cheers,

Sino

----------

## nikaya

Ich würde dem Junior erst eine Skriptsprache empfehlen.Da Du Python nicht so magst wäre Ruby ein guter Kandidat.

Vorteil bei Skriptsprachen ist imho dass im Interpreter Codeschnipsel sofort getestet werden können,sowie die relativ leichte Syntax.

----------

## franzf

Noch eins:

Wenn man nur in Qt programmiert (also keine Standard-Klassen verwendet) braucht man sich keine Sorgen um Speicherlecks zu machen: Qt nesitzt einen Garbage-Collector!

Ebenso übrigens auch wxWidgets.

Die Kenntnis um die Regeln für den Umgang mit Zeigern und Referenzen bleibt allerdings weiterhin.

----------

## ixo

 *franzf wrote:*   

> 
> 
> Die Kenntnis um die Regeln für den Umgang mit Zeigern und Referenzen bleibt allerdings weiterhin.

 

Das ist etwas, was ich gerade an C/C++ gut fände. Er soll schließlich auch ein bisschen verstehen, wie so ein Rechner intern funktioniert und was eigentlich passiert. Wenn das bei Ruby noch einigermaßen erhalten bleibt, begrüße ich das nur.

[meckermodus]

Ich habe bei einigen Java Programmierern erlebt, dass sie keine Ahnung haben, was in ihren Containern eigentlich passiert und sie deshalb grauenhaft inperformantes Zeugs schreiben. Ein wenig Assembler wäre gar nicht schlecht für so manchen "Profi". Aber die Zeiten (6502 bei mir) sind wohl allmählich vorbei   :Wink:  )

[/meckermodus]

----------

## sirro

 *franzf wrote:*   

> Noch eins:
> 
> Wenn man nur in Qt programmiert (also keine Standard-Klassen verwendet) braucht man sich keine Sorgen um Speicherlecks zu machen: Qt nesitzt einen Garbage-Collector!

 

Ein Garbage-Collector ist das aber nicht.

Qt merkt sich z.B. Parent-Beziehungen und gibt Kind-Widgets beim löschen des Eltern-Widgets frei. Aber erstell mal einige 100000 grosse QStrings und nutze sie nicht, dann wirst du sehen, dass sich auch bei Qt-Klassen nicht um automatische Speicherbereinigung gekümmert wird...

Diese Verwaltung ist zwar praktisch und wichtig, aber keine anständige Speicherbereinigung.

----------

## Vortex375

Ich geb hier noch ne Stimme für python ab. python hat gegenüber java vorallem den Vorteil, dass es ohne VM auskommt und der geschriebene Code trotzdem auf zahlreichen Systemen und Archtitekturen lauffähig ist.

Ich fand python _sehr_ einfach zu lernen. Ich hatte so gut wie keine Programmierkenntnisse, als ich angefangen habe python zu lernen (ist so etwa ein Dreivierteljahr her). Die Tutorials waren gut; so gut, dass ich nie dachte "Hä? Was ist das?, Wozu macht man das?, Warum macht man das so?". Es war einfach alles logisch erschließbar, nichts erschien unnötig oder komisch.

Und zu java:

 *Quote:*   

> Da muss man sich keine Sorgen um Speicherlecks, Referenzen, Pointer usw. machen.

 

Das muss man in python auch nicht.

 *Quote:*   

> Man kommt relativ zügig zur GUI Programmierung (Wenn man was graphisches zeigen kann macht das lernen doch direkt vielmehr Spaß )

 

Naja, aber so ziemlich alle in java Programmierten gui-Anwendungen, die ich kenne (das sind hauptsächlich azureus und eclipse) sind entweder ziemlich lahmarschig oder verhalten sich irgendwie "komisch".

Mit python ist GUI-Programmierung auch sehr einfach. Vorallem aber gibt es python-Bindings für alle gängigen GUI-Toolkits (gtk+, wxWindows, Qt3 (schlecht Dokumentiert, nicht zu empfehlen), Qt4).

----------

## SinoTech

 *Vortex375 wrote:*   

> 
> 
> [...]
> 
>  *Quote:*   Man kommt relativ zügig zur GUI Programmierung (Wenn man was graphisches zeigen kann macht das lernen doch direkt vielmehr Spaß ) 
> ...

 

Da gebe ich dir vollkommen recht. Ausserdem finde ich die ganzen Manager (weiß grad nicht wie man die nennt) wie BorderLayout und Co. ziemlich umständlich in der Benutzung. Trotzdem bleibt Java meine erste Wahl wenn es darum geht Programmieren zu lernen.

Cheers,

Sino

----------

## firefly

Ich werde auch mal meine senf dazu geben  :Wink: .

Ich habe da eine kleine Frage, was versteht ihr unter "Programmieren lernen"?

Wenn Ihr der Meinung seit, das man Programmieren lernt, indem man die Syntax einer Programmiersprache beherscht, dann seit Ihr auf dem Holzweg.

Programmieren heißt, ein gestelltes Problem in eine für den Computer berechenbare Form zu bringen(Und hier meine ich nicht den Maschinencode). Und da ist die Syntax einer Programmiersprache wurscht. Wenn man einmal einen Algorithmus für ein Problem ausgearbeitet hat, dann kann man diesen Algorithmus mit jeder Programmiersprache implementieren.

Für den Anfänger ist es zum teil schon sinnvoll eine Programmiersprache(z.b. java) bzw. ein Framework(z.b. Klassenbibliothek von der java-sdk) zu verwenden, wo er sich am Anfang nicht so sehr gedanken machen muss, das beim Programmende alle dynamischen Elemente wieder sauber freigegeben werden.

Und da sind Sprachen/Frameworks wie Java,  .Net und deren unterstützten "Sharp-"Sprachen oder Skriptsprachen klar im Vorteil.

----------

## franzf

 *firefly wrote:*   

> Programmieren heißt, ein gestelltes Problem in eine für den Computer berechenbare Form zu bringen(Und hier meine ich nicht den Maschinencode). Und da ist die Syntax einer Programmiersprache wurscht. Wenn man einmal einen Algorithmus für ein Problem ausgearbeitet hat, dann kann man diesen Algorithmus mit jeder Programmiersprache implementieren.

 

Ich würde es keinem 14-jährigen zumuten, erst vollkommen abstrakt die Grundlagen der Softwarentwicklung zu erlernen! Grausam, der Gedanke  :Wink: 

Es ist sicher angenehmer, eine Aufgabe zu stellen und allgemeine Zusammenhänge daran fest zu machen.

Von dem her ist der Einstieg ins Programmieren sicher schöner über das praktische Erlernen eine Sprache, z.B. Java. Durch die ähnliche Syntax kann man später bequem C/C++ ansteuern, ohne großem Mehraufwand.

----------

## ixo

Genau.

Er soll relativ schnell Erfolgserlebnisse haben und einige "Probleme" lösen können. Ansonsten verliert er sowieso bald die Lust und das war's dann. Gleichzeitig sollte es aber auch eine Sprache sein, die eine gewisse Basis für weiteres (was auch immer) schafft.

Java ist da aus meiner Erfahrung / Einschätzung eher ein Killer (des Spasses an der Sache). Wahrscheinlich ist ein Skriptsprache nicht falsch.

Nachdem ich mir ruby ein wenig angesehen habe, neige ich ihr immer mehr zu - auch wenn ich bisher keine Doku auf deutsch gefunden habe. (Sollte keine allzu große Hürde sein.) Ruby scheint mir relativ schnell Erfolge zu bieten aber auch ausgefeilte weitergehende Konzepte zu besitzen.

(Außerdem überlege ich mir gerade, ob ich für meine größeren Projektchen nicht auch auf ruby umsteige   :Rolling Eyes:  )

----------

## psyqil

 *ixo wrote:*   

> auch wenn ich bisher keine Doku auf deutsch gefunden habe

 Hast Du denn schon mal elf Posts nach oben geschaut?  :Razz: 

----------

## ixo

Wie immer unfair   :Cool: 

Wer lesen kann ist klar im Vorteil.  :Laughing: 

----------

## ixo

Ahm, noch zwei Fragen, falls es hier jemanden gibt, der Ruby beherrscht (die sind wichtig für mich).

Wenn man in Ruby mehrere Threads erzeugt, laufen / verteilen die sich dann auf mehrere Prozessoren / Cores? (Laut Doku laufen sie innerhalb des Ruby Interpreters.)

Kann man Hashes wie in perl an ein dbm File binden (für sehr große Hashes, um nicht aus dem Speicher zu laufen). Oder gibt es eine andere, vergleichbare Möglichkeit?

Danke, ixo

----------

## SinoTech

 *franzf wrote:*   

>  *firefly wrote:*   Programmieren heißt, ein gestelltes Problem in eine für den Computer berechenbare Form zu bringen(Und hier meine ich nicht den Maschinencode). Und da ist die Syntax einer Programmiersprache wurscht. Wenn man einmal einen Algorithmus für ein Problem ausgearbeitet hat, dann kann man diesen Algorithmus mit jeder Programmiersprache implementieren. 
> 
> Ich würde es keinem 14-jährigen zumuten, erst vollkommen abstrakt die Grundlagen der Softwarentwicklung zu erlernen! Grausam, der Gedanke 
> 
> Es ist sicher angenehmer, eine Aufgabe zu stellen und allgemeine Zusammenhänge daran fest zu machen.
> ...

 

Da stimme ich dir zu. Ausserdem heißt für mich "programmieren" nicht nur dumpf einen Algorithmus zu implementieren, sondern auch ...

- Wissen welche möglichkeiten einem die Programmiersprache zur Verfügung stellt, so das ich möglichst effizient implementieren kann.

- Wie man Code zu kommentieren und dokumentieren hat, so das er leicht verständlich ist (und ich musste leider erst küzlich feststellen das das bei weitem nicht jeder weiß).

- Wissen wie man zu implementieren hat (zum Beispiel das man den Objektorietierten Ansatz verstehen sollte, das man Muster kennt die man einsetzen kann, ...). 

Hatte da erst kürzlich bei einem kollegen von mir gesehen (der macht jetzt übrigens gerade seinen Master   :Shocked: ) das er globale Variablen dazu benutzt, um Resultate einer Operation als Input für eine  andere operation zu übergeben  :Shocked: .

Entwurfsmuster und Co sind natürlich für einen absoluten Anfänger erstmal Tabu (das würde ihm nur den Spaß verderben). Insofern erstmal mit ein paar kleinen Aufgaben anfangen, damit er die Programmiersprache kennen lernt (welche auch immer das sein mag).

Cheers,

Sino

----------

## schmutzfinger

 *ixo wrote:*   

> 
> 
> Wenn man in Ruby mehrere Threads erzeugt, laufen / verteilen die sich dann auf mehrere Prozessoren / Cores? (Laut Doku laufen sie innerhalb des Ruby Interpreters.)
> 
> Kann man Hashes wie in perl an ein dbm File binden (für sehr große Hashes, um nicht aus dem Speicher zu laufen). Oder gibt es eine andere, vergleichbare Möglichkeit?
> ...

 

1. kA habe mit ruby nie mit threads gearbeitet, ich habe es nur gelernt weil ich ne Webanwendung schreiben wollte und rails einfach nur überzeugt hat, aber seit ich es kenne verwende ich es immer öfter auch für kleine Scripte, die ich früher mit perl gemacht hätte

2. meinst du vielleicht Marshal in Kombination mit File?

----------

## SvenFischer

Wenn Der Sohnmann mal wieder Mist gebaut hast und Du ihm eines auswischen willst, dann nimm brainfuck

 :Twisted Evil: 

----------

## der_flo

ne .net-sprache, am besten c#, falls windows in frage kommt. da ist mittlererweile richtig viel kostenlos zu haben. außerdem ist die ide von ms wirklich gut (auch die hilfe).

ansonsten würde ich auf jeden fall java (+eclipse) empfehlen.

aber meiner meinung nach ist einfach die ide beim lernen der springende punkt (für einen 14-jährigen). und da schauts unter linux wirklich scheiße aus, bis auf eclipse eben. da ist am ehesten noch hilfe etc. integriert.

an skriptsprachen muss ich immer bemängeln, dass sie keinen guten programmierer erziehen. fehlende typisierung usw. sind richtig problematisch, wenn man sich später einer vernünftigen programmiersprache zuwendet.

wegen c: natürlich wäre das der königsweg. allerdings ist das die sprache, mit der man wohl am langsamsten _sichtbare_ fortschritte macht. und das its ja der springende punkt für so junge leute. die wollen sofort irgendwelche verrückten oberflächen designen, im hintergrund muss ein mp3 laufen und in nem eck am besten noch ne 3d-animation.

ciao,

der flo

----------

## Rene-dev

Was ist mit PHP?

da sind "oberflächen" relativ leicht zu programieren, und man lernt gleich noch HTML oder sogar CSS,

eventuell sogar MySQL.

Hat nur den nachteil dass man einen webserver aufsetzen/mieten muss.

Rene

----------

## der_flo

 *Rene-dev wrote:*   

> Was ist mit PHP?
> 
> da sind "oberflächen" relativ leicht zu programieren, und man lernt gleich noch HTML oder sogar CSS,
> 
> eventuell sogar MySQL.
> ...

 

ist halt ne böse skriptsprache. aber am schnellsten würde das auf jeden fall gehen. kann mir auch gut vorstellen, dass das einen jungen kerl spass macht.

nichtsdestotrotz ist früher oder später eine "echte" programmiersprache (ggf. zu einer skriptsprache) absolute pflicht.

ciao,

der flo

----------

## ixo

 *schmutzfinger wrote:*   

>  *ixo wrote:*   
> 
> Wenn man in Ruby mehrere Threads erzeugt, laufen / verteilen die sich dann auf mehrere Prozessoren / Cores? (Laut Doku laufen sie innerhalb des Ruby Interpreters.)
> 
> Kann man Hashes wie in perl an ein dbm File binden (für sehr große Hashes, um nicht aus dem Speicher zu laufen). Oder gibt es eine andere, vergleichbare Möglichkeit?
> ...

 

zu 1: Momentan habe ich ein OSS Projekt, welches in perl sehr viel mit fork/exec arbeitet, um Last auf mehrere Prozessoren zu verteilen. Das wäre mit threads natürlich wesentlich eleganter zu machen. (Threads in perl sind für das was ich machen will, nicht wirklich geeignet.)

zu 2. Was ich benötige ist ein File, in dem ich Datensätze (variable Länge) über einen Index wiederfinden kann. Für so etwas gibt es in C z.B. die Berkeley DB (ehemals hießen die unter Unix dbm files). In perl kann man einen Hash sehr einfach an so ein db(m) File hängen, ohne sich ansonsten um irgendetwas kümmern zu müssen. Soweit ich das (mit meinen bisher mickrigen Ruby Kenntnissen) beurteilen kann, geht es bei Marshall nicht darum!?

----------

## hoschi

Einigen wir uns auf C++, Java, Ruby oder einfach mal Shell-Scripts  :Wink: 

----------

## ixo

Oh Gott, so viele Meinungen   :Exclamation: 

Ich geb als Erziehungsberechtigter (  :Twisted Evil:  ) 'mal meinen Senf dazu:

@SinoTech

 *Quote:*   

> Entwurfsmuster und Co sind natürlich für einen absoluten Anfänger erstmal Tabu (das würde ihm nur den Spaß verderben). Insofern erstmal mit ein paar kleinen Aufgaben anfangen, damit er die Programmiersprache kennen lernt (welche auch immer das sein mag).

 

Genau. Es muss einfach sein und Spass machen. Er soll ja auch nicht zum Chefprogrammierer ausgebildet werden, sondern sich lediglich mit der Sache beschäftigen. Wenn er dann Spass dran finden sollte, dann sollte er die Möglichkeit haben, mit der Sprache auch etwas halbwegs brauchbares anzufangen.

@SvenFischer

Brainfuck kenne ich auch. Der arme Kerl muss, seit er mit mir zum Aikido geht, schon genug leiden   :Embarassed:  , daher lieber nicht brainfuck   :Smile: 

@QuarterPounder

 *Quote:*   

> ne .net-sprache, am besten c#, falls windows in frage kommt. da ist mittlererweile richtig viel kostenlos zu haben. außerdem ist die ide von ms wirklich gut (auch die hilfe). 
> 
>  ansonsten würde ich auf jeden fall java (+eclipse) empfehlen. 
> 
>  aber meiner meinung nach ist einfach die ide beim lernen der springende punkt (für einen 14-jährigen). und da schauts unter linux wirklich scheiße aus, bis auf eclipse eben. da ist am ehesten noch hilfe etc. integriert. 

 

Der arme Kerl soll lernen, wie man eine Schleife programmiert (etwas vereinfacht gesagt). Wenn er erst zwanzig Entwicklungsumgebungen verstehen soll, hat er die Lust schon verloren, bevor er angefangen ist. Außerdem bin ich - vorsichtigt gesagt - kein M$ Fan.

 *Quote:*   

> an skriptsprachen muss ich immer bemängeln, dass sie keinen guten programmierer erziehen. fehlende typisierung usw. sind richtig problematisch, wenn man sich später einer vernünftigen programmiersprache zuwendet. 
> 
>  wegen c: natürlich wäre das der königsweg. allerdings ist das die sprache, mit der man wohl am langsamsten _sichtbare_ fortschritte macht. und das its ja der springende punkt für so junge leute. die wollen sofort irgendwelche verrückten oberflächen designen, im hintergrund muss ein mp3 laufen und in nem eck am besten noch ne 3d-animation. 

 

Ich will ihn nicht zu einem guten Programmierer erziehen, sondern überhaupt an das Programmieren heranführen. Fehlende Typisierung hat den Nachteil, dass sie fehlt, und den Vorteil, dass es erst 'mal einfacher wird. C ist m.E. für den Anfang zu schwer. Einem 14 jährigen mit so etwas anfangen zu lassen (zusätzlich zu Schule und allen anderen Kram, den er am Hals hat), würde wohl sehr schnell zum Aufgeben (kein Bock) führen.

btw, ich habe mit Casio Taschenrechner, dann Commodore Basic (unstrukturiert), dann Assembler (selbst nach Hex übersetzt mangels Assemblerprogramm) begonnen und später trotzdem (gut besuchte) Vorlesungen in C und C++ an der Uni gehalten.

@Rene-dev

PHP lernen heißt doch, dass ich mit Apache, html und Browsern klarkommen muss. Das finde ich als Einstiegshürde zu hoch.

----------

## franzf

Scripten ist für den Anfang vllt gar nicht so dumm. Da kommt man schnell zu Ergebnissen.

Wenn er daran Spaß hat und es sich zeigt dass er recht begabt ist kannste ihm ja eine höhere Programmiersprache "vorführen", ob er darauf Lust hat.

In dem Alter ist man zwar Jung  :Very Happy:  aber man ist nicht zwangsläufig Arm an Entscheidungskraft. Bei guter Erziehung (was ich hoffe) weiß er sicher was er will.

Einfach mal sachte heranführen und staunen zu was junge Hirne oft fähig sind  :Wink: 

Und von wegen "keine guten IDEs unter Linux":

C++:    CodeBlocks

Python: Eric3

C++/Java/Scripten/einfach alles: KDevelop

Wie schon erwähnt: Eclipse

Diverse Aufsätze für Vim / Emacs.

Das sollte für den Anfang reichen.

Ich selbst nehm recht gern Kate, aber die "Editor-Frage" ist ein anderes Problem.

----------

## ixo

Der Editor ist natürlich auch eine Hürde.

Ich selbst schreibe meist mit vi oder lieber mit emacs, neuerdings auch manchmal mit kate (gefällt mir nicht schlecht).

Ich denke, kate ist direkt verwendbar (ohne etwas lernen zu müssen wie bei emacs oder vi) und wird wohl die erste Wahl werden.

Gruss, ixo

----------

## sirro

Ruby-Threads sind meines Wissens keine "richtigen" Threads, sie können also nicht auf Kerne/Prozessoren verteilt werden...

Vielleicht wäre MPI eine Lösung für dich, aber das kommt natürlich ganz drauf an wofür du die Prozesse brauchst.

 *ixo wrote:*   

> Der arme Kerl soll lernen, wie man eine Schleife programmiert (etwas vereinfacht gesagt). Wenn er erst zwanzig Entwicklungsumgebungen verstehen soll, hat er die Lust schon verloren, bevor er angefangen ist. Außerdem bin ich - vorsichtigt gesagt - kein M$ Fan. 

 

Bei einer guten IDE gibt es nicht viel zu verstehen. Einfach das Projekt erzeugen und man kann loslegen. Dafür hilft die IDE beim Arbeiten mit Klassen durch Autovervollständigung und sonstigen hilfreichen Kram. Für Java finde ich Netbeans wirklich gut. Für C(++) hänge ich allerdings noch immer bei Kate.

----------

## ixo

 *sirro wrote:*   

> Ruby-Threads sind meines Wissens keine "richtigen" Threads, sie können also nicht auf Kerne/Prozessoren verteilt werden...
> 
> Vielleicht wäre MPI eine Lösung für dich, aber das kommt natürlich ganz drauf an wofür du die Prozesse brauchst.
> 
> 

 

Ruby Threads sind laut Dokumentation keine "richtigen" Threads sondern laufen innhalb des Ruby Interpreters. Die Frage ist, ob der Ruby Interpreter selbst multithreaded laufen kann und damit mehrere Prozessoren beschäftigt?!

----------

## schmutzfinger

Es gibt für Ruby Berkley DB libs dev-ruby/ruby-bdb. Habs noch nie benutzt aber ich würde unterstellen wenn es mit Perl einfach ist dann mit Ruby sicherlich auch.

----------

## mondauge

Also eine Sprache, die mir den Einstieg sehr leicht gemacht hat, war Delphi. Zugegeben.. Delphi ist für Windows, aber es gibt auch nen Port für Linux namens Kylix. Ich hab Kylix selbst nie getestet, von daher kann es natürlich sein, dass das ne kommerzielle Sprache ist und dass man für den Compiler was löhnen muss.

Ansonsten finde ich Perl auch nicht schlecht. Ich verwende Perl seit vielen Jahren und habe schon zahlreiche komplexe Skripte (einschließlich Perl/CGI Skripte) damit entwickelt. Eine Chaossprache ist das also nicht.

gruß,

mondauge

----------

## ixo

Ok, Chaossprache ist vielleicht übertrieben.

Ich pflege seit einigen Jahren ein OSS Projekte (~400kb) in perl, welches ich objektorientiert in perl programmiert habe. Das ist schon etwas unübersichtlich; insbesondere geht die Unterstützung für OO Programmierung in perl gegen Null. Außerdem erlaubt perl auch beliebig unübersichtlichen Code - sicherlich zu Beginn (wenn man sowieso nicht weiß, was man tut) ein Risiko. Daher die Bemerkung (bitte richtig einordnen).

Gruß, ixo

----------

## Carlo

 *ixo wrote:*   

> In phyton finde ich die Syntax (mit dem Einrücken) irgendwie krank.

 

U.a. gerade wg. dieser disziplinierend wirkenden Syntax ist Python sehr gut für Anfänger geeignet. Java und Ruby sind auch keine schlechte Wahl.

 *Rene-dev wrote:*   

> Was ist mit PHP?

 

Keine Namensräume, üble API. Wenn du jemandem einen schlechten Programmierstil beibringen willst, ist PHP gut geeignet.

 *mondauge wrote:*   

> Also eine Sprache, die mir den Einstieg sehr leicht gemacht hat, war Delphi. Zugegeben.. Delphi ist für Windows, aber es gibt auch nen Port für Linux namens Kylix. Ich hab Kylix selbst nie getestet, von daher kann es natürlich sein, dass das ne kommerzielle Sprache ist und dass man für den Compiler

 

Ich habe irgendwo noch eine Kylix-CD/Lizenz rumliegen. Das Ding war von Anfang an unausgereift und ist seit Jahren tot, toter geht's gar nicht mehr. Bitte laß es in Frieden ruhen.

Wenn es Pascal - welches bekanntermaßen als Lehrsprache erdacht wurde - sein soll, dann Delphi oder Freepascal. Zukunftsweisend halte ich, mangels Anwenderbasis, keines von beiden.

----------

## blice

Es wundert mich ein wenig, daß jeder der heute Programmieren kann, offen sagt er sei bei BASIC angefangen, aber nicht auf die Idee kommt, BASIC zu empfehlen.

Mit 14 hab ich schon z80 assembler gecodet, gerade die jungen Köpfe sind extrem lernfähig (bis die mädels interessanter werden).

Delphi ist unter Linux das kommerzielle Kylix, es gibt aber auch sehr mächtige TurboPascal alternativen, wie zb FreePascal [ http://www.freepascal.org/ ].

Basic als die "einfachste" Sprache gibt es auch für Linux. zb hier : http://en.wikipedia.org/wiki/GFA_BASIC

Natürlich gibt es auch wie in Dos-Zeiten auch Assembler : zb hier http://www.lcs-chemie.de/assemb.htm

Ich persönlich liebe Java und  Php.  C++ hab ich nie verstanden, das ist keine hochsprache das ist ein Graus.

Ruby hab ich mir gerade mal gemerged, klingt ganz nett (qt / gtk-2 bindings).

Zur heutigen Zeit würde ich deinem Sohn empfehlen sich mit Webseiten zu beschäftigen, also php,xhtml,css,java,ajax,flash  .  Grade mit php+gd2 bzw java hat man ganz schnell erfolge, die auch was fürs auge bieten können (siehe Hier:  http://blice.de/boprojekte/bidd/index.php )

----------

## .maverick

Ich würde Java nicht als Anfängersprache empfehlen, gerade weil es eine so C-ige Syntax hat. Nachher fängt er dann mit C++ an und schreibt darin Java-Code...

Ich würde Python empfehlen. Ruby macht zwar auch Spaß, aber das disziplinierende an der Pythonsyntax ist schon hilfreich.

Das beide objektorientierte Programmierung ermöglichen halte ich jetzt nicht für das Killerargument schlechthin, die wird völlig überbewertet.

Wichtig finde ich auf jeden Fall, dass die Syntax "außergewöhnlich" ist, denn sonst erlernt er keine andere Sprache mehr ordentlich, weil er quasi überall nur in seiner ersten Sprache programmiert.

----------

## firefly

 *blice wrote:*   

> Ich persönlich liebe Java und  Php.  C++ hab ich nie verstanden, das ist keine hochsprache das ist ein Graus.

 

Wenn für dich C++ keine Hochsprache ist, dann ist java auch keine. Denn die Sprache an sich(Syntax, keywords) ist bei beiden Sprachen nahezu identisch. Bzw. was verstehst du unter einer Hochsprache?

Alle Programmiersprachen, welche eine abstraktion zu der verwendeten Harware liefern, fallen unter den Begriff Hochsprache eigentlich heißt es ja höhere Programmiersprachen.

----------

## anello

Ich würde auch wie schon viele hier python empfehlen. Ist eine sehr einfache Sprache mit der man mit wenig Code schon viel erreichen kann. Ich finde die Syntax auch nicht so schlimm, man muss sich halt dran gewöhnen, aber das muss man mit allen Sprachen die man zum erstenmal erlernt, schlieslich hat der Sohnemann ja noch keine Programmiererfahrung und daher auch keine vorlieben.

----------

## hoschi

Ich wuerde soweit gehen und C/C++ als die Definition einer Hochsprache ansehen.

----------

## .maverick

Es gibt kein C/C++ ...

----------

## Mr. Anderson

Zumindest ich zähle C in der heutigen Landschaft der Programmiersprachen nicht zu den Hochsprachen.

----------

## sirro

 *ixo wrote:*   

> Ruby Threads sind laut Dokumentation keine "richtigen" Threads sondern laufen innhalb des Ruby Interpreters. Die Frage ist, ob der Ruby Interpreter selbst multithreaded laufen kann und damit mehrere Prozessoren beschäftigt?!

 

Naja, was soll denn auf die Prozessoren verteilt werden wenn nicht die Threads? Alles andere (z.B. Verwaltungsaufgaben ala Speicherbereinigung) dürfte vom Geschwindigkeitszuwachs gegen 0 gehen.

----------

## oscarwild

Also zu dem Thema gibts wohl so viele Meinungen wie es Leute gibt. Eindeutig beantworten kann man die Frage nicht, denn es kommt immer ganz auf den Einsatzbereich an, mitunter kann man sogar Visual Basic sinnvoll einsetzen  :Smile: 

Ich empfehle für den Einstieg C++ in der Kombination mit Qt.

Das gibt

- schnell ansehnliche Ergebnisse,

- die Grundlagen der Objektorientierung lassen in dieser Kombination sich damit sehr anschaulich erlernen, und

- C++ ist eine wirklich brauchbare und solide Sprache.

Einziger Haken: die englische Dokumentation - andererseits lernt der Jung dann auch noch fachübergreifend!

Zum Thema Programmieren lernen möchte ich Euch diesen Text nicht vorenthalten: Lernen Sie programmieren in zehn Jahren!

 *.maverick wrote:*   

> Es gibt kein C/C++ ...

 

Oh doch, sieht man leider viel zu oft!  :Laughing: 

----------

## Fauli

 *.maverick wrote:*   

> Es gibt kein C/C++ ...

 Doch! Kommt 1 bei raus (es sei denn C ist 0).  :Wink: 

Aber jetzt mal ernsthaft:

Viel wichtiger als die Frage nach der richtigen Programmiersprache ist doch, ein interessantes "Projekt" zu finden, an dem zu arbeiten/lernen man nicht nach kurzer Zeit die Lust verliert und das man nach und nach, je nach Lernstand, ausbauen kann.

Ob es dann Python, Java, PHP, JavaScript, C++ oder Wasweißich ist, ist doch eher nebensächlich. Die Grundkonzepte sind gleich, und wenn man sie in einer Programmiersprache mal verstanden hat, kann man sie leicht auf andere Programmiersprachen übertragen.

----------

## .maverick

 *oscarwild wrote:*   

> Ich empfehle für den Einstieg C++ in der Kombination mit Qt.
> 
> Das gibt
> 
> - schnell ansehnliche Ergebnisse,
> ...

 

Wieso mit Qt? Wenn jemand C++ lernt, dann sollte es ISO-C++ sein (um z.B. die STL richtig nutzen zu können).

Wobei ich C++ für den Anfang doch für etwas zu hart halte. Die Fehlermeldungen sind oft nicht besonders ausdrucksstark und für mich war am Anfang auch das Bauen der Programme ein Problem.

 *oscarwild wrote:*   

> 
> 
>  *.maverick wrote:*   Es gibt kein C/C++ ... 
> 
> Oh doch, sieht man leider viel zu oft! 

 

Allerdings. Aber die Verwendung des Begriffes rechtfertigt das trotzdem nicht  :Wink: 

----------

## .maverick

 *Fauli wrote:*   

> Ob es dann Python, Java, PHP, JavaScript, C++ oder Wasweißich ist, ist doch eher nebensächlich. Die Grundkonzepte sind gleich, und wenn man sie in einer Programmiersprache mal verstanden hat, kann man sie leicht auf andere Programmiersprachen übertragen.

 Naja, er soll ja programmieren lernen, nicht Informatik. Und die Programmierung unterscheidet sich schon in den verschiedenen Sprachen sehr stark.

----------

## firefly

 *.maverick wrote:*   

>  *Fauli wrote:*   Ob es dann Python, Java, PHP, JavaScript, C++ oder Wasweißich ist, ist doch eher nebensächlich. Die Grundkonzepte sind gleich, und wenn man sie in einer Programmiersprache mal verstanden hat, kann man sie leicht auf andere Programmiersprachen übertragen. Naja, er soll ja programmieren lernen, nicht Informatik. Und die Programmierung unterscheidet sich schon in den verschiedenen Sprachen sehr stark.

 

Nach deiner Aussage heißt "Programmieren lernen", wenn man eine Programmiersprache lernt?

Nur weil man die Syntax einer Programmiersprache kennt, kann man noch lange nicht Programmieren.

Was du unter Programmierung verstehst ist eher Codierung. Sprich einen bereist vollständig beschriebenen Algorithmus(eventuell mit Hilfe einer META/Pseudo-Programmier Sprache) unter Verwendung der von der Programmiersprache bereitgestellten sprachlichen Mitteln zu implementieren.

----------

## .maverick

Nee, ich denke ich habe schon dieselbe Auffassung wie du was "programmieren können" angeht. Aber man programmiert in verschiedenen Sprachen nun einmal anders und man lernt zu Anfang doch eine Programmiersprache. Man lernt, seine Probleme in dieser Sprache zu formulieren. Lernt man weitere Sprachen (die möglichst verschieden sein sollten), so erweitern sich natürlich die Möglichkeiten, oft auch mit Wirkung auf die vorigen Sprachen. Zum Beispiel kann ich nun, nachdem ich mit Haskell angefangen habe weitaus bessere Metaprogramme in C++ schreiben. Dennoch schreibe ich kein Haskell in C++-Templates, sondern habe nur neue Möglichkeiten gefunden, Probleme mit den Einschränkungen der Effektfreiheit zu formulieren.

Habe ich es deutlicher gemacht?

----------

## firefly

jetzt schon aber nicht in deiner 1. Aussage.

----------

## oscarwild

 *.maverick wrote:*   

> Wieso mit Qt? Wenn jemand C++ lernt, dann sollte es ISO-C++ sein (um z.B. die STL richtig nutzen zu können).

 

Nun - wie ich schon sagte: schnell ansehnliche Ergebnisse. Und die sind mit Qt erreichbar, sogar ohne unsauber programmieren zu müssen.

Ein Fenster mit Schaltflächen dürfte für einen Anfänger deutlich motivierender sein, als die Ausgabe von "Hallo Welt" auf der Konsole.

Bzgl. ISO-C++: worin siehst Du den Widerspruch zu Qt? Qt ist schließlich kein C++-Dialekt, sondern ein Framework, und bringt sicher z.B. denn Sinn von Vererbung schneller nahe, als die typisch-öden Lehrbuchbeispiele mit den Klassen "Auto", "LKW" und deren Basisklasse "Fahrzeug", nach denen sich der Lernende fragt: "Schön und gut, aber was hab ich jetzt davon?"

 *.maverick wrote:*   

> Aber die Verwendung des Begriffes rechtfertigt das trotzdem nicht 

 

Schon klar worauf Du raus willst  :Smile: 

Allerdings war C++ zuerst mal ein reiner Aufsatz auf C, und beinhaltet auch noch heute den C-Syntax vollständig, inkl. der historsichen Inkonsitenzen von C (ok, mit kleinen Abweichungen).

Nicht zu vergessen: Objektorientierung ist keine Eigenschaft von C++, sondern ein Konzept, das ohne weiteres auch unter C funktioniert (wenn auch deutlich unkomfortabler).

----------

## Treborius

ich würde auch zu c++ über qt tendieren, weil :

- ich musste in den letzten 3 monaten ein qt-programm aufsetzen, ohne

je was von qt gehört zu haben (ausser das es eine dep von kde ist   :Cool: )

war ich nach einem monat drin ...

- man kommt auch mit den anderen sachen von C++ in verbindung

(STL, OOP, usw..)

- qt finde ich ziemlich konsistent (etwas was ich an java liebe, obwohl ich java hasse)

- mit 4 zeilen hat man nen fenster  :Smile: 

und der kleine kann immer auf die sachen zurückgreifen, die er vielleicht später mal haben will

(pures C, C++ new overloading und sowas lustiges) man gibt ihm wenigsten die chance

mit 18 programmiert er dann seinen kernel, weil er weiss das es nur eine riesige

```

while(1)

{

}

```

schleife ist  :Razz: 

----------

## Inte

Ist mir die Woche in die Hände gefallen ...

Python für Kids - 2. Auflage

Gregor Lingl / Oktober 2006

19,95

Ich war überrascht, wie einfach und motivierend die Grundlagen vermittelt werden. Weitere Infos gibt's unter: http://www.python4kids.net

----------

## franzf

Seit kurzem gibt es Python - Das umfassende Handbuch aus dem Hause Galileo Computing auch als openbook  :Smile: 

[ print ] 

[ download ]

[ alle openbooks ]

Mit über 800 Seiten ist das wirklich recht umfassend!

Das Linux-Buch fand ich auch ganz nett, wenngleich die ersten Seiten für einen PC-Laien ziemlich übel enden können  :Very Happy: 

Grüße

Franz

----------

## SkaaliaN

 *franzf wrote:*   

> Seit kurzem gibt es Python - Das umfassende Handbuch aus dem Hause Galileo Computing auch als openbook 
> 
> [ print ] 
> 
> [ download ]
> ...

 

Danke für die Info! Werde ich mir auf jeden Fall mal ansehen!

----------

## Knieper

 *franzf wrote:*   

> Das Linux-Buch fand ich auch ganz nett, wenngleich die ersten Seiten für einen PC-Laien ziemlich übel enden können 

 

Da sind teilweise ganz schoene Klopper drin. Mein Lieblingsbeispiel (C von A bis Z):

 *Quote:*   

> 
> 
> Einige Vorteile von CGI-Anwendungen, die in C erstellt wurden, sollen aber doch erwähnt werden:
> 
> [...]
> ...

 

----------

