[linux-l] erste programmier-sprache

Oliver Bandel oliver at first.in-berlin.de
Mi Okt 2 22:52:10 CEST 2002


On Wed, Oct 02, 2002 at 09:11:37PM +0200, Thomas Knop wrote:
> * Olaf Radicke <olaf_rad at gmx.de> [02.10.02 18:24]:
> [..]
> > Die Veranstaltung hat mir aber nochmal die Problematik verdeutlicht.
> > Unenschloßene und Anfänger fragen natürlich welch Sprache sie
> > (als erste) lernen sollen und warum.
> Aus meiner Sicht ist das ziemlich egal. Es gibt viele Programmiersprachen
> aber nur extrem wenige Konzepte für die gleichen. Mir fallen drei ein:
> 1. C, Pascal, Modula-2, ... wie heißen die nochmal ?
> 2. Objectorientierte Sprachen (C++,Java,Ruby,...)
> 3. Funktionale Sprachen (Lisp, Haskel, Opal,...)

OCaml deckt alle drei Konzepte ab.

Es gibt noch die Logiksprachen. Sowas wie Prolog.

Oz deckt soweit ich weiss auch diese mit ab,
wäre also die umfangreichste Sprache, was Konzepte angeht.
Bin mir aber bzgl. funktionaler Programmierung bei Oz nicht
ganz sicher, sollte es aber auch können.



> 
> Fällt jemandem noch mehr ein?

s.o.

> Im Prinzip muss man nur einmal Programmieren
> lernen. Der Rest tangiert nach trivial.

Naja, im prinzip schon. Aber die unterschidelichen
Programmierkonzepte sind doch schon recht unterschiedlich
in der Anwendung.


> In einer meiner ersten Informatik 
> Vorlesungen sagte der Prof, daß er von einem Programmierer erwartet, daß er
> fähig ist eine Sprache in wenigen Tagen (2) zu lernen. Er hatte und hat Recht.

Stimmt nur bedingt.

Manche Sprachen kann man schon in wenigen tagen, oder Wochen
lernen. Zu mindest im Prinzip.
Aber jede Sprache hat ihre Eigenheiten, und um die richtig
zu lernen (zum Beispiel bei C: Ist es Standard-Konform,
wenn ich dies oder jenes mache, und was genau sagt der Standard?
Habe ich es hier mit "implementation defined" oder "non speciefied"
Problemen zu tun?) braucht es Jahre und ständiges dran bleiben,
damit man nicht wieder zu viel vergisst.


Und andere Sprachen sind sehr mächtig und da braucht man
doch noch etwas länger als ein paar Tage oder Wochen,
um allein erst mal zu seh'n, was die Sprache alles bietet.


> 
> Typ 1. und 2. unterscheiden sich wenig. 
> <Sarkasmus>
> Der objectorientierte Kram wurde geschaffen um Programmieren die zu
> dumm sind mit Pointern umzugehen auch in diesen Genuss kommen zu lassen.
> Voll auf Kosten von Speicher, CPU Leistung ect.
> </Sarkasmus>

Nun, nix gegen pointer. ich mag ANSI-C. :)

Und ich hasse auch "OO isz die Lösung aller Programmierprobleme"-
Quatschereien. Man kann OO auch rigide (= dumm) durchführen
und der Code wird dadurch unleserlich. Auch bei OO kommt es
eben drauf an, ob man das Problem sinnvoll in's Konzept
und die Software umbricht. Rigides OO-Predigen ist Unsinn
und hat oft geschadet (oder wurde von leuten, die wenig
Programmiererfahrung haben als letzter Strohhalm zur Rettung
aus dem Programmieralltag angesehen).

Sinnvoll eingesetzt ist es aber durchaus hilfreich.
Man kann zwar GUIs sicherlich auch anders als in OO-Stil
bauen, aber OO ist für GUIs eigentlich ganz gut einsetzbar.


> 
> Von den vielen Programmiersprachen, die ich heute kenne, gefällt mir die
> mit der ich angefangen habe am besten: Modula-2.

Ich habe mit BASIC (auf VC20 und später C64) angefangen.
Mit DATA-Zeilen war Dez-Code (dezimale Peeks/Pokes statt
Hex-Code) war dann Maschinensprache dran. Auch auf eben
genannten Rechnern.

Nach dieser doch recht frühen Kindheitsverkorksung durch
Computer mit Rechteckaugen-Ergebnissen und keinem Adonis-Körper/
Waschbrettbauch als Ergebnis habe ich dann den Weg der Analogtechnik
beschritten und erst wieder mit dem 486er meinen nächsten
Computer gehabt.

Da durfte es dann (der Uni gemäß) C sein. Als ich dann nach
einer Weile (shell hat mich nie so richtig interessiert,
aber man macht's halt minimalistisch, wenn notwendig) via
Tcl/Tk und dessen verquarzter Syntax, doch zu Perl ging
(hat mich doch ganz schön Überwindung gekostet), war ich
damit doch ganz schön froh. :)
Muss man nicht alles in C schreiben. :)

Da dachte ich doch schon, C wäre der Weisheit letzter Schluß,
als mir über kleinst-Abstecher ins Scheme-Land dann Haskell
begegnete (wow, schon cool:)) und dann auch OCaml.

Bin zwar im Moment doch sehr, sehr programmierfaul,
weil kaum thrillende projekte im programmierbereich
mir entgegenspringen, im Moment, aber wenn's
was richtig gutes, krasses, aufwendiges, komplexes
werden soll, wo man hinterher auch noch den Code
verstehen soll, dann weiß ich definitiv, daß ich
dafür OCaml einsetzen werde.

OK, hier geht's um Anfänger-Programmiersprachen.
Zum Lernen/Einsteigen wurden BASIC, Pascal, Scheme
entwickelt, und vielleicht noch ein paar Sprachen mehr.

Vielleicht ist zum Einstieg irgend ein BASIC tatsächlich
sinnvoll, damit man erst mal versteht, worum es geht.

Aber auf Dauer machen solch flache Sprachen kaum Freude.
C ist auch sehr minimalistisch, aber man kann damit eben
doch einiges machen.

und wenn man nicht nur einiges, sondern komplexe Dinge machen
will, hat man bei C abr wiederum andere Probleme, eben
daß der Code schnell chaotisch wird, daß man keine
sichere Typisierung hat, daß auch beim besten Willen
der Code doch oft sehr unterschiedlich realisiert werden kann
(personenabhämngig). Und eben solche Sachen, wie:
Was sagt der Standard dazu...

Was auf einem System läuft, muß eben in C nicht auch
auf einem anderen System laufen.
Dafür kann man halt eben auch systemspezifisch gut optimieren...


...naja, was solls.

Ciao,
   Oliver




Mehr Informationen über die Mailingliste linux-l