gulli:board Logo

Anzeige


  Antwort
HelloWorld
Mitglied
 
Benutzerbild von HelloWorld
 
Registrierungsdatum: Apr 2003
Beiträge: 4.090
Re: Anfänger! Welche Programmiersprache?

Zitat:
Zitat von smoker-zero 
ich wollte nun auch mal meinen senf dazu geben.
Ja ganz recht: Senf . Anders kann man den Quatsch nicht nennen den Du da schreibst...
Alt 10. 07. 2006, 03:16 HelloWorld is offline Mit Zitat antworten #176
tuxianer
Mitglied
 
Registrierungsdatum: Sep 2005
Beiträge: 66
Re: Anfänger! Welche Programmiersprache?

h,
ich schwanke immer noch zwichen c# c++ und delphi...was soll ich nehmen???
Alt 15. 07. 2006, 21:28 tuxianer is offline Mit Zitat antworten #177
PSP_FAN
Mitglied
 
Registrierungsdatum: Jun 2006
Beiträge: 74
Re: Anfänger! Welche Programmiersprache?

Blitz Basic
ist eine der einfachsten Sprachen die mir bekannt ist. Sie ist idiotensicher und man benötigt nicht mehr als einen Tag konzntriertes lesen und man hat sein erstes Spiel fertig was auch schön bunte Bilder hat usw. Allerdings langweilt es bald weil so vieles einfach automatisch geht so das nich viel Freiheit für einen eigenen Programmierstil bleibt.
Alt 31. 07. 2006, 15:47 PSP_FAN is offline Mit Zitat antworten #178
vadda
Mitglied
 
Registrierungsdatum: Dec 2005
Beiträge: 14
Re: Anfänger! Welche Programmiersprache?

naja sind wir mal ehrlich ... java und nichts anderes !
Alt 16. 09. 2006, 23:55 vadda is offline Mit Zitat antworten #179
Eichhoernchen
Lesen, denken dann fragen
 
Benutzerbild von Eichhoernchen
 
Registrierungsdatum: Jul 2004
Ort: 4303,72 KM vom NPol
Beiträge: 1.380
Re: Anfänger! Welche Programmiersprache?

delphi

Warum?
Ganz einfach, Delphi hat wohl die beste Entwicklungumgebung und zusammen mit der VCL ist es jedem Anfänger möglich ganz schnell Programme zu entwickeln.
Aber auch für erfahrene ist Delphi klasse, man kann alles damit machen, was man auch mit anderen Sprachen machen kann und der größte Vorteil ist wohl der sonderzeichen arme Syntax.
Alt 17. 09. 2006, 00:41 Eichhoernchen is offline Mit Zitat antworten #180
deleted user
 
Beiträge: n/a
Re: Anfänger! Welche Programmiersprache?

Zitat:
Zitat von Eichhoernchen 
delphi

Warum?
Ganz einfach, Delphi hat wohl die beste Entwicklungumgebung und zusammen mit der VCL ist es jedem Anfänger möglich ganz schnell Programme zu entwickeln.
Aber auch für erfahrene ist Delphi klasse, man kann alles damit machen, was man auch mit anderen Sprachen machen kann und der größte Vorteil ist wohl der sonderzeichen arme Syntax.

delphi ist so ziemlich die überflüssigste sprache die es gibt. sie ist höchstens für kleine bequeme windows programme geeignet. die sprache hat weder die produktivität von visual basic/c#/.net noch die leistungsstärke von C/C++ noch die vorzüge von plattformunabhängigkeit und eleganz wie java. insgesamt ist die sprache was für spezielle nischen oder für leute die auf die borland ide stehen. ansonsten -> müll!
Alt 17. 09. 2006, 01:00 Mit Zitat antworten #181
Eichhoernchen
Lesen, denken dann fragen
 
Benutzerbild von Eichhoernchen
 
Registrierungsdatum: Jul 2004
Ort: 4303,72 KM vom NPol
Beiträge: 1.380
Re: Anfänger! Welche Programmiersprache?

Wenn du das so behauptest, dann beleg es bitte... man kann mit Delphi, Pascal sehr wohl auch für nicht Windows Betriebssysteme programme schreiben. Kylix, open pascal, Lazarus.
Und ich würde sagen ich kann alles machen was ich auch mit C++ und co machen kann außer vielleicht Treiber.
Alt 17. 09. 2006, 08:42 Eichhoernchen is offline Mit Zitat antworten #182
deleted user
 
Beiträge: n/a
Re: Anfänger! Welche Programmiersprache?

Zitat:
Zitat von Eichhoernchen 
Wenn du das so behauptest, dann beleg es bitte... man kann mit Delphi, Pascal sehr wohl auch für nicht Windows Betriebssysteme programme schreiben. Kylix, open pascal, Lazarus.
Und ich würde sagen ich kann alles machen was ich auch mit C++ und co machen kann außer vielleicht Treiber.

belege gibts zu hauf im netz. delphi und seine ide sind einsteigersprachen in schulen. damit kann man sich schnell ein paar bunte fenster zusammenklicken. die industrie setzt aber c/c++, java und c# bzw. vb.net ein. genau wie die meisten opensource projekte. es gibt nur wenige projekte in denen deplhi eingesetzt wird. frag dich mal warum? delphi hat längst nicht die power von c++. metaprogrammierung unter delphi ein witz. nichts vergleichbares zur c++ stl. kein integration mit .net. keine abbildung auf die clr und die cli. keine große anzahl an guten libs. keine riesige cl wie java. keine große anzahl an guten büchern. keine richtige crossplatforming eigenschaft wie java. multiple inheritance nur beschränkt vorhanden. zeigerarithmetik beschissen, weil nicht natürlich.

ich habe übrigens nicht behauptet das delphi nur wine ist. ich habe behauptet das delphi eine unnütze sprache ist. sie hat keine vorteile gegenüber den anderen von mir genannten sprachen. deshalb ein fall für die mülltonne - höchstens für lehrzwecke geeignet.
Alt 17. 09. 2006, 16:46 Mit Zitat antworten #183
ghosthunter
Mitglied
 
Registrierungsdatum: Jul 2000
Beiträge: 2.723
Re: Anfänger! Welche Programmiersprache?

Zitat:
belege gibts zu hauf im netz. delphi und seine ide sind einsteigersprachen in schulen. damit kann man sich schnell ein paar bunte fenster zusammenklicken. die industrie setzt aber c/c++, java und c# bzw. vb.net ein. genau wie die meisten opensource projekte.
Also das ist nun kompletter Blödsinn was Du das schreibst. Und dann noch C#, ich kann Dir etliche C# Beispiele nennen die 100% nicht mit MONO laufen. Also auch kompletter Blödsinn.

Mit der Industrie meinste sehr wohl MS Es gibt sehr viele Firmen die setzen auf Delphi. Und ich glaube sehr wohl das auch Du unter Windows eine Menge an Delphi Programmen einsetzt. Davon gibt es sehr viele.

Auch gibt es etliche Delphi Opensource, Aber als Delphi Hasser kann man die logo nicht kennen.


Zitat:
ich habe übrigens nicht behauptet das delphi nur wine ist. ich habe behauptet das delphi eine unnütze sprache ist. sie hat keine vorteile gegenüber den anderen von mir genannten sprachen. deshalb ein fall für die mülltonne - höchstens für lehrzwecke geeignet.

Oh man Vorteile Nachteile. Auch zeige mir mal das man z.b Linux Programme mit Windows nutzen kann.
Wenn überhaupt dann nur angepasst an Cygwin, welche eine Linux Umgebung emuliert. Also bevor Du solch ein Blödsinn behauptest, informiere Dich doch erstmal.

Also erzähle mir nicht das C/C++/C# überall zu nutzen seien. Das ist kompletter Schwachsinn. Das geht nachher nur mit vielen Anpassungen.

Selbst JAVA Programme, wenn die speziell für Linux geschrieben sind, laufen die eventuell mit viel Glück unter Cygwin.

Z.b wollte Jörg Schilling seine cdrtools an Visual C++ anpassen, das hat bis heute noch nicht geklappt.

Fazit: Vor dem meckern Gehirn einschalten
Alt 17. 09. 2006, 17:01 ghosthunter is offline Mit Zitat antworten #184
Eichhoernchen
Lesen, denken dann fragen
 
Benutzerbild von Eichhoernchen
 
Registrierungsdatum: Jul 2004
Ort: 4303,72 KM vom NPol
Beiträge: 1.380
Re: Anfänger! Welche Programmiersprache?

Na, ist natürlich immer die Frage, was man machen will.
BTW, der Thread Titel: "Anfänger! Welche Programmiersprache?"
Trotzdem möchte ich mal behaupten, das du fast jedes OS Projekt, dass in C++ geschrieben wurde auf Delphi Portieren könntest ohne Probleme zu haben.
Alt 17. 09. 2006, 17:05 Eichhoernchen is offline Mit Zitat antworten #185
deleted user
 
Beiträge: n/a
Re: Anfänger! Welche Programmiersprache?

Zitat:
Zitat von ghosthunter 
Also das ist nun kompletter Blödsinn was Du das schreibst.

wenn du meinst. bloß doof das dir zu meinen argumenten nicht mehr als ein paar banale sätze einfallen

Zitat:
Zitat von ghosthunter 
Und dann noch C#, ich kann Dir etliche C# Beispiele nennen die 100% nicht mit MONO laufen. Also auch kompletter Blödsinn.

lesen bildet! wo hab ich geschrieben das c# mit mono laufen tut? aber schön das du irgendwelche eigenen feststellungen aufzählst und diese dann selbst eindrucksvoll untermauerst

Zitat:
Zitat von ghosthunter 
Mit der Industrie meinste sehr wohl MS Es gibt sehr viele Firmen die setzen auf Delphi. Und ich glaube sehr wohl das auch Du unter Windows eine Menge an Delphi Programmen einsetzt. Davon gibt es sehr viele.

Auch gibt es etliche Delphi Opensource, Aber als Delphi Hasser kann man die logo nicht kennen.

nö, natürlich gibt es noch einige delphi progs. aber längst nicht so viele wie du das gerne hättest. habe auch nicht behauptet das es keine delphi progs gibt. wie gesagt, genaues lesen bildet

mit industrie meine ich nicht nur ms. soll ich mal ne liste mit progs aufmachen die mit c++ geschrieben wurden und eine mit delphi. egal ob ms oder linux. wir können mal sehen wer hier am ende haushoch vorne liegt. wird dich womöglich überraschen

Zitat:
Zitat von ghosthunter 
Oh man Vorteile Nachteile. Auch zeige mir mal das man z.b Linux Programme mit Windows nutzen kann.
Wenn überhaupt dann nur angepasst an Cygwin, welche eine Linux Umgebung emuliert. Also bevor Du solch ein Blödsinn behauptest, informiere Dich doch erstmal.

schon wieder irgend ein geblabber von dir. du redest hier irgendwas von linux und windows. hat das auch etwas mit meinem vorposting zu tun? ich habe geschrieben das java plattformunabhängig ist und nicht c oder c++ oder c#. wie war das noch mal mit dem lesen?

Zitat:
Zitat von ghosthunter 
Also erzähle mir nicht das C/C++/C# überall zu nutzen seien. Das ist kompletter Schwachsinn. Das geht nachher nur mit vielen Anpassungen.

Selbst JAVA Programme, wenn die speziell für Linux geschrieben sind, laufen die eventuell mit viel Glück unter Cygwin.

Z.b wollte Jörg Schilling seine cdrtools an Visual C++ anpassen, das hat bis heute noch nicht geklappt.

Fazit: Vor dem meckern Gehirn einschalten

mein fazit ist, das du auf meine argumente gar nicht eingegangen bist. stattdessen hast du mir hier irgendwas vom pferd erzählt, meine worte nach belieben so verdreht das sie flasch sind und dann auch noch klugscheißerisch verbessert. vielleicht solltest du dein Gehirn das nächste mal genau wie deinen rechner online bringen bevor du so einen beitrag loslässt. sonst bestätigst du noch die intelligenz von delphi programmierern. und nach deinem beitrag würde mein fazit dazu nicht sehr positiv ausfallen
Alt 17. 09. 2006, 17:23 Mit Zitat antworten #186
deleted user
 
Beiträge: n/a
Re: Anfänger! Welche Programmiersprache?

Zitat:
Zitat von Eichhoernchen 
Na, ist natürlich immer die Frage, was man machen will.
BTW, der Thread Titel: "Anfänger! Welche Programmiersprache?"
Trotzdem möchte ich mal behaupten, das du fast jedes OS Projekt, dass in C++ geschrieben wurde auf Delphi Portieren könntest ohne Probleme zu haben.

das ist schon ein vernünftigeres posting! ja, es hängt davon ab was man machen will. ja, vieles kann man auch mit delphi machen. nein ich habe nichts dagegen wenn man deplhi einsetzt.

ich habe nur meine meinung vertreten. delphi ist für mich nicht relevant. aus den gegebenen gründen. mehr wollte ich nicht zum ausduck bringen.
Alt 17. 09. 2006, 17:27 Mit Zitat antworten #187
PsY2
Mitglied
 
Registrierungsdatum: Feb 2006
Beiträge: 774
Re: Anfänger! Welche Programmiersprache?

Hi
Also ich wollte auch mit Programmieren anfange xD
Blos wat Soll ich nehmen?
Ich bin in sachen Programieren eigentlich totaler Newby aber Flash 8 kann ich minimum.
Ich würde gerne in richtung Spiele Programierung und PSP Sagen Programieren
Aber bitte nicht wieder bla bal is besser ,, Nein blabla is schlechter xD

Also ihr könntet mir ja ne Liste Vorschlagen wie ich was lernen sollte.
Also games :
Kp dummes beispiel : 1 . Java dann C dann irgentwass
aber Beachtet ich bin 13 und will einfach anfangen ^^
Alt 18. 09. 2006, 15:20 PsY2 is offline Mit Zitat antworten #188
SoulSpirit
Parasit
 
Benutzerbild von SoulSpirit
 
Registrierungsdatum: Aug 2004
Beiträge: 2.172
Re: Anfänger! Welche Programmiersprache?

noch besser, du könntest dir die mühe machen genau diesen thread hier durchzulesen. und falls dann noch unklarheiten da sind einfach mal die boardsuche benützen
Alt 18. 09. 2006, 15:50 SoulSpirit is offline Mit Zitat antworten #189
PsY2
Mitglied
 
Registrierungsdatum: Feb 2006
Beiträge: 774
Re: Anfänger! Welche Programmiersprache?

Sorry aber ich hab immoment 0 Zeit 8 Seiten zulesen wegen Schule
Ich würds gerne machen wie gesacht 0 Time
Kannste mir nicht einfach ein programm sagen wass ich dann auch gleich mit TUT und Prog von Gulli Saugen kann ?
Alt 18. 09. 2006, 16:19 PsY2 is offline Mit Zitat antworten #190
ulli3000
Mitglied
 
Registrierungsdatum: Dec 2003
Beiträge: 356
Re: Anfänger! Welche Programmiersprache?

Probiere es doch einfach mal aus. Es gibt sehr viele Programmiersprache kostenlos.
Microsoft bietet so z.b seine Compiler VC++ 2005 in einer Express Version kostenlos an. Kannste hier in Freeware irgendwo finden

Auch Borland macht das: www.turboexplorer.com.
Borland bietet neben Delphi auch C# und einen C++ Compiler an.
Downloade Dir die Sachen einfach und probiere es selber aus.

Denn ohne Änderungen läuft ein Source eh nicht auf unterschiedlichen Systemen.
Alt 18. 09. 2006, 19:03 ulli3000 is offline Mit Zitat antworten #191
aLBERT42
Mitglied
 
Registrierungsdatum: Jul 2003
Beiträge: 19
Smile Re: Anfänger! Welche Programmiersprache?

Hallo

Ich verstehe gar nicht, warum hier ein System gar nicht bisher richtig zur Sprache kam. Überhaupt im ganzen Thread wurde es überhaupt ein einziges Mal genannt (Danke Eichhoernchen!).

Ich rede von Lazarus: http://www.lazarus.freepascal.org/
Lazarus an sich ist eine IDE, die zusätzlich ein Grafikframework mitbringt (LCL), wodurch man sehr leicht GUI (Fenster-) Programme schreiben kann, in dem man sich quasi seine Oberfläche zusammenklickt und dann nur noch den Code dahinter schreibt.
Ganz grob gesagt ist Lazarus die freie Open Source und Plattformunabhängige Variante von Delphi. Das sind gleich 2 sehr herausragende Eigenschaften.
Lazarus selbst benutzt als Compiler Free Pascal: http://www.freepascal.org/
Free Pascal ist ein Object Pascal Compiler, der sogar den Object Pascal Standard besser als der Borland Compiler (der in Delphi) unterstützt und halt auch komplett plattformunabhängig und frei ist.
Den Download des kompletten Lazarus-Systems gibt es hier: http://sourceforge.net/project/showf...group_id=89339
Dort lädt man sich im Falle von Windows die aktuelle Install-EXE runter und startet sie.
Unter Linux ist es noch einfacher die Installation (eine vernünftige Distribution vorausgesetzt), bei Gentoo beispielsweise tippt man einfach nur ein: emerge lazarus

Da die Programmiersprache hinter Lazarus Object Pascal ist und LCL in Anlehnung an die VCL (die entsprechende Grafik-Bibliothek von Delphi) geschrieben wurde, sind Delphi Programme nahezu kompatibel zu Lazarus. Wenn man Lazarus lernen möchte als Anfänger, ist man also mit einem Delphi-Anfängerbuch bestens bedient. Erst wenn es um sehr spezielle Sachen geht helfen einem die Lazarus-Entwickler gerne weiter.

Außerdem findet man im Wiki, im Forum und in der Mailingliste von Lazarus auch Hilfe. Im Wiki findest du auch ein paar Beispiele.
Hier sind z.B. ein paar sehr einfache Beispiele von mir selbst (jeder mit minimalen Kenntnissen über imperative Programmierung sollte das Beispiel vom Code her verstehen; dieses nötige Wissen, wenn man wirklich bisher noch gar nichts gemacht hat, sollte man innerhalb ein paar Tagen lernen können, wenn nicht kürzer):
Hier ein einfaches Spiel: http://www.az2000.de/projects/robot2/
Hier noch einfachere Beispiele (allerdings eher unschön programmiert): http://www.az2000.de/projects/lazarus_samples/

Soviel zu Lazarus, ein sehr interessantes System, besonders für Anfänger.

--------

Der Vollständigkeit halber möchte ich hier noch ein C++-Tutorial mal nennen, welches ich geschrieben habe. Ich habe dabei besonders Wert gelegt, dem Leser ein Wenig die Denkweise eines Programmierers zu vermitteln. Häufig hat ein Programmieranfänger das Problem, dass er gar nicht richtig weiß, wie er an irgendwelche Probleme drangehen soll. Selbst wenn man bereits ein paar Befehle beherrscht und so die Grundstrukturen wie eine if-Abfrage oder eine Schleife verstanden hat, weiß nicht genau, wie man das nun zusammenwürfeln muss, damit etwas Sinnvolles dabei rauskommt. Das ist eine spezielle Denkweise, eine algorithmische Denkweise, die man erst einmal lernen muss, wobei man hier schlecht irgendwelche Regeln dafür auflisten muss. Das ist einfach etwas, welches man nur durch Erfahrung und Übung lernt. Ich habe diesen Denkprozess versucht anhand eines Beispiels (eines sehr einfachen Spiels) zu verdeutlichen:
http://www.az2000.de/projects/cpp_tut/

------

Noch etwas zur weiteren Erklärung über Programmiersprachen:

Es wurde gesagt, dass es keinen Unterschied macht, welche Programmiersprache man lernt, da diese sowieso alle relativ ähnlich sind und sich hauptsächlich nur im Syntax unterschieden.
Dies stimmt nur bedingt.

Die meisten (ich glaube alle) hier genannten Programmiersprachen sind so genannte imperative Sprachen. Imperative Sprachen kennzeichnen sich dadurch aus, dass bei ihnen jeder Befehl in einer Prozedur Schritt für Schritt abgearbeitet wird. Imperative Sprachen sind die am häufigsten verwendete Sprachen, was geschichtliche Hintergründe hat. Die Kategorie der imperativen Sprachen teilt sich weiter auf in die sogenannten Objectorientierten Sprachen (die meisten hier genannten Sprachen fallen auch in diese Kategorie, wie z.B. Object Pascal, C++ und Java). Bei den Objektorientieren Sprachen hantiert man halt, wie der Name schon sagt, viel mit Objekten rum. Aber auch hier kann man nicht unbedingt sagen, dass diese Sprachen alle vom Prinzip her gleich sind. Viele Sprachen geben an, komplett Objektorientiert zu sein. Visual Basic beispielsweise hantiert auch viel mit Objekten, aber nicht nur. Außerdem gibt es keine Vererbung in Visual Basic (neue Objekttypen (man nennt diese Klassen), die die Eigenschaften von einem allgemeineren Objekttyp erbt; z.B. ist ein Auto ein spezielleres Fahrzeug). C++ hat da schon mehr Features, allerdings ist noch lange nicht alles ein Objekt, es gibt sogar Variablentypen noch in C++, die keine Objekte sind (die primitiven Datentypen wie z.B. Zahlen). Java geht noch ein bisschen weiter, hat aber teilweise Features auch wieder nicht, die C++ dafür hat (z.B. die Mehrfachvererbung; allerdings hier muss man dazu sagen, dass Java als Alternative dafür andere Mittel hat, nämliche die Interfaces). Object Pascal kann man als Mischung von C++ und Java ansehen. Es geht aber auch trotzdem noch sehr viel extremer, man gucke sich dazu mal Ruby oder Python an. Und es geht auch immer noch weiter, z.B. Smalltalk ist da sehr interessant.
Je nach Eigenschaften der Programmiersprache ist es auf jeden Fall eine andere Art, wie man die Sachen programmiert; das ist es, wodrauf ich hiermit hinauswollte.

Bisher habe ich aber lediglich über imperative Sprachen geredet.
Viel interessanter sind dann auch noch die sogenannten funktionalen Sprachen wie z.B. Haskell, ML oder Lisp. Gerade Haskell kann ich sehr empfehlen. Funktionale Sprachen richten sich stark an die Mathematik, es ist alles sehr formell definiert. Es gibt auch in der eigentlichen Hinsicht keine Prozeduren oder vordefinierte Arbeitsabläufe. Das gesamte Programm besteht eigentlich lediglich aus Definitionen (evtl. Parameterabhängig; das ist dann das, was man als Funktion bezeichnet). Diese können auch rekursiv sein, wodurch man komplexe Sachen dann darstellen kann. Es ist schwer, die Denkweise dahinter genauer zu vermitteln. Es ist ein Programmieren auf einer höheren Ebene als das imperative Programmieren. Viele Probleme lassen sich mit funktionalen Programmiersprachen viel eleganter und kürzer formulieren. Diese Kategorie der Funktionalen Sprachen zerfällt ihn die Kategorie der rein (pure) funktionalen Sprachen, dazu gehört z.B. Haskell. Diese reinen funktionalen Sprachen zeichnen sich dadurch aus, dass bei ihnen jede Funktion immer den gleichen Rückgabewert hat - es ist nicht möglich das zu umgehen. Dynamische Programmierung ist natürlich trotzdem möglich, da die Benutzereingabe sehr ellegant gekapselt ist (bestimmte Ausgabe-Aktionen sind dann die Rückgabewerte von Funktionen; der Rückgabetyp einer solchen Funktion ist dann ein IO-Wert). Man gucke sich hierzu einfach mal ein paar Beispiele an. Es gibt auch nicht-reine Programmiersprachen, die diese strenge Eigenschaft nicht haben. Ein Beispiel hierfür ist OCaml, eine Art Mischung einer objektorientierten Sprache und einer funktionalen Sprache (und zwar ML) (falls ihr mldonkey kennt; das wurde in OCaml geschrieben).

Darüber hinaus gibt es auch noch die logischen Programmiersprachen. Diese könnte man auch als Teilgebiet der funktionalen Programmiersprachen auffassen, allerdings ist die Denkweise noch eine etwas andere. Hier besteht das gesamte Programm quasi aus logischen Definitionen. Man kann nun eine gewisse logische Anfrage an das System machen und der PC versucht dann, auf Basis der logischen Definitionen im Programm eine Aussage zu machen, ob die Aussage deiner Anfrage wahr oder falsch ist. Die Aussage deiner Anfrage kann auch Variablen enthalten (z.B. kann man die Anfrage "2 + x = 6" stellen) und es wird dann versucht die logischen Definitionen soweit abzuleiten, um 1. rauszufinden, ob die Anfrage aufgelöst werden kann (also ob es eine Lösung gibt) und wenn ja, die Lösungen zu geben (in dem Beispiel wäre die einzige Lösung die Zahl 4; wenn man statt des = ein > geschrieben hätte, hätte man allerdings unendlich viele Lösungen, nämlich alle Zahlen größer 4).
Ein Beispiel einer logischen Sprache ist Prolog.

Wenn auch die logischen Programmiersprachen eher nicht für Anwendungsprogrammierung genutzt wird sondern nur für Spezialanwendungen (z.B. Expertensysteme), werden die funktionalen Sprachen durchaus effektiv genutzt - sogar der Arbeitsaufwand wird häufig veringert.

------------------------

Soweit nun erstmal genug.
Ich bleibe dabei, als Anfänger ist Lazarus am besten.
Wenn man ein Blick in die funktionale Welt werfen möchte (für Mathematikbegeisterte besonders interessant, aber auch sonst), kann ich Haskell empfehlen.

Viele Grüße,
Albert
Alt 18. 09. 2006, 19:26 aLBERT42 is offline Mit Zitat antworten #192
Snooker
Moderator
 
Benutzerbild von Snooker
 
Registrierungsdatum: Jun 2003
Beiträge: 4.714
Re: Anfänger! Welche Programmiersprache?

Warum es nicht zur Sprache kam? Ein Grund könnte z.B. sein dass es nach wie vor egal ist mit welcher Programmiersprache man anfängt! Das ist das erlernen einer Programmirsprache und des Umgangs mit ihr. Das hat genau genommen rein GAR NICHTS mit Programmieren lernen zu tun.
Die Implementierung ist einer der letzten Schritte beim Programmieren. Und ALLES was davor geschieht ist völlig unabhängig von irgendeiner Programmiersprache zu lösen.

Wer Programmieren kann kommt mit so ziemlich jeder Programmiersprache zurecht (Einarbeitung ist natürlich nötig). Wer es dagegen nicht kann wird mit KEINER Programmiersprache etwas Vernünftiges auf die Beine stellen.

Da das alles hier schon mehrfach erwähnt wurde und durch Lobhudeleien auf Programmiersprache A oder B nicht weniger wahr ist, könnte für meinen Geschmack eigentlich dicht gemacht werden. Wir drehen uns hier seit Dutzenden Postings nur noch im Kreis.
Alt 18. 09. 2006, 22:08 Snooker is offline Mit Zitat antworten #193
aLBERT42
Mitglied
 
Registrierungsdatum: Jul 2003
Beiträge: 19
Re: Anfänger! Welche Programmiersprache?

Das stimmt nicht so ganz.

Das Design eines Programmes hängt sehr wohl davon ab, mit welcher Programmiersprache es später implementiert werden soll. Das war auch gerade eine Sache, die ich hoffte mit meiner Erklärung deutlich zu machen.
Das Design eines Programmes sieht bei einer funktionalen Sprache beispielsweise völlig anders aus als bei einer imperativen Sprache.

Du hast natürlich Recht, wenn man nur einen kleinen Kreis von Programmiersprachen betrachtet, der Unterschied zwischen C++, Object Pascal und Java ist nicht allzu groß.

Aber nur weil dieser Unterschied nicht groß ist, dachte ich nicht, dass es nicht Wert wäre, einen Hinweis zu Lazarus zu geben. Die IDE ist für einen Anfänger nicht überladen und auch sonst ist das System einfach zu bedienen. Dies ist ein Punkt, der gerade für einen Anfänger wichtig ist.
Und es spielt finde ich schon eine Rolle, mit welcher Programmiersprache man anfängt. Mit manchen ist es sicherlich leichter als mit anderen. Und außerdem ist Übung das allerwichtigste beim Programmieren Lernen, von daher spielt es schon eine Rolle, mit welcher Programmiersprache man hierbei übt.

Und es gibt außerdem dann auch Leute, denen funktionale Programmierung sehr leicht fällt, die aber nicht so gut mit imperativer Programmierung klar kommen. Es ist schließlich eine ganz andere Denkweise hinter diesen beiden Paradigmen.
Alt 18. 09. 2006, 23:12 aLBERT42 is offline Mit Zitat antworten #194
StarShaper Spender
Cowboy-Programmierer
 
Benutzerbild von StarShaper
 
Registrierungsdatum: Dec 2004
Beiträge: 1.670
Re: Anfänger! Welche Programmiersprache?

Zitat:
Zitat von aLBERT42 
Noch etwas zur weiteren Erklärung über Programmiersprachen:

[...]

Mir gefällt dein Text im großen und ganzen soweit ganz gut. Auch an deinen Quellcodes auf deiner verlinkten Seite kann man nichts aussetzen. Obwohl das Programm trotz C++ sehr prozedural strukturiert ist. Streng genommen ist es ein C-Programm. Allerdings widerspreche ich deiner Auffassung das die funktionale Programmierung sich auf einer höheren Ebene abspielt. Ich würde es eher als eine parallele Ebene bezeichnen. Zudem ist es möglich auch funktional in imperativen Sprachen zu programmieren. So stellt C++ einige Bibliotheken zur Verfügung mit denen Lambda Funktionen und abstrakte Funktionen deklariert werden können. Auch ist es bedingt mittels Zeigerarithmetik in C möglich. So gesehen kann man auch von Hybridsprachen sprechen. Natürlich ist das nicht vollständig mit einer natürlichen funktionalen Sprache wie LISP vergleichbar. Der Erfolg von imperativen Programmiersprachen ist ihre bedingte Abbildung der Architektur des Von-Neumann-Rechners auf sich selbst.

Jedes Programmierparadigma hat Vor- und Nachteile. Je nachdem welches konkrete Problem gelöst werden soll. Differentialrechnungen können in LISP sehr viel bequemer implementiert werden als in vielen anderen Sprachen. Neben der Produktivität spielt auch Leistung eine Rolle. Datenbank Anwendungen sind hingegen in LISP nur bedingt sinnvoll zu programmieren. Letztlich sind alle Probleme jedoch in jeder Sprache lösbar, weil unabhängig von der Sprache ihre Semantik keine Erweiterung der Turingmaschine ist. Programmierparadigmen bleiben stets abstrakte Konstrukte die die eigentliche reale Architektur abstrahieren. Die Mathematik selbst ist ein abstraktes Konstrukt. Sie untersucht selbst geschaffene abstrakte Strukturen auf ihre Eigenschaften und Muster. Im realen Kontext ist sie nicht greifbar, genau wie eine Programmiersprache.

In diesem Zusammenhang ist der Weg von der Turingmaschine zum Quantencomputer als zukunftsweisend anzusehen. Den hier bricht die lange Historie dominiert von der Von-Neumann-Architektur. In ihr waren die quantenmechanischen Effekte bei gegewärtiger Miniaturisierung unbedeutend solange man sich nicht auf atomarer bzw. subatomaren Ebene bewegt. Dieser Grenze nähert man sich bekannterweise mit großen Schritten.
Obwohl auch ein Quantencomputer prinzipiell nichtdeterministisch ist und im engeren Sinne eine Abwandlung der klassischen Maschine ist, so ist eine Quanten-Turingmaschine im Gegensatz zur bekannten Turingmaschine beispielsweise in der Lage einen Quantenalgorithmus für das Faktorisierungsproblem in Polynomialzeit zu lösen. Der Kontrast von Quantenbits zu den klassischen Bits ist gigantisch. Im Vordergrund eines jeden heutigen Rechners steht schon seit 40 Jahren der elektronische Transistor. Und aufbauend auf der realen Eigenschaft dieser Funktionsweise ist jedes ausgeführte Programm, egal in welcher höheren Programmiersprache geschrieben, eine binäre Repräsentation die von einem binären Programm ohne Anwenderinteraktion erzeugt wird. Hier wird die Abstraktion von Programmierparadigmen sehr deutlich. Insofern kann man von fließenden Übergängen und einer Interoperabiliät dieser Paradigmen sprechen. Sie bleiben unabhängig von ihren Unterschieden menschliche Konstrukte, die letztenendes auf dieselbe Basis zurückgeführt werden. Diese Basis ändert sich erstmals mit dem Modell eines Quantencomputers. Und mit diesem Modell auch die Art und Weise wie wir alle programmieren .

cu
Alt 19. 09. 2006, 04:03 StarShaper is offline Mit Zitat antworten #195
aLBERT42
Mitglied
 
Registrierungsdatum: Jul 2003
Beiträge: 19
Smile Re: Anfänger! Welche Programmiersprache?

OK, gut, habe es vielleicht ein klein wenig übertrieben und stimme dir mit deinen Bemerkungen voll zu.

Zitat:
Letztlich sind alle Probleme jedoch in jeder Sprache lösbar, ...
Gerade das stimmt natürlich. Allerdings werden manche Sachen unterschiedlich halt gelöst. Ganz im Endeffekt erstellt der Haskell-Compiler z.B. natürlich imperativen Maschienencode, aber in Haskell selbst benutzt man andere Techniken und denkt über manche Sachen anders nach.
Funktionale Sprachen sind vielleicht nicht direkt auf einer höheren Ebene, aber ich finde, manches lässt sich einfach elleganter in ihnen lösen.

Es gibt da immer dieses schöne Beispiel der unendlichen Listen (so etwas wird es auch niemals in imperativen Sprachen geben können, da umgangssprachlich gesprochen die Aufschlüsselung "genau falschrum" ist), die in Haskell immer wieder benutzt werden. Hiermit lässt sich beispielsweise auf sehr elegante Weise eine Liste aller Primzahlen mit Hilfe einem unendlich großen Sieb (des Eratosthenes) definieren. Das würde so aussehen:
Code:
primes :: [Int] primes = sieve [2..] where sieve (x:xs) = x : sieve [y | y <- xs, y `mod` x > 0]
Zu Erklärung:
In der ersten Zeile steht quasi die Deklaration, im Prinzip die Typfestlegung. Int ist dabei eine Ganzzahl. [Int] ist eine Liste von Int. Primes ist also eine Liste von Zahlen.
Dadrunter steht die eigentliche Definition. sieve soll unsere Siebfunktion sein, die halt den Rest nach dem Raussieben zurückgeben soll. [2..] ist eine unendliche Liste und zwar alle natürlichen Zahlen ab der 2.
Das where markiert sozusagen den Beginn der lokalen Definitionen, also der Definitionen nur für die aktuelle Definition. Hier definieren wir nun die sieve-Funktion.
Wie das in einer funktionalen Sprache üblich ist, ist diese Definition natürlich rekursiv. (x:xs) ist dabei der Parameter von sieve. Wohlgemerkt hat man hierbei nun die 2 Variablen x und xs direkt dadrin benutzt. Es wird bei dem Aufruf einer Funktion immer ein Art Pattern Matching durchgeführt, welche Definition einer Funktion zu einem Angegebenen Wert passt. Dieses : fügt das linksstehende Element in die rechtsstehende Liste an den Anfang hinzu und gibt das Resultat zurück. Da dies nun direkt mein Parameter ist, ist die sieve-Funktion also nicht für eine leere Liste als Parameter definiert. Wenn ich der sieve-Funktion beispielsweise den Parameter [1,2,3] gebe, habe ich also nach dem Pattern Matching x=1 und xs=[2,3]. Nun zur eigentlichen Definition von sieve:
Das Resultat ist wieder eine Liste, bei der das Anfangselement das x ist und die restliche Liste ist nun das Sieb erneut angewendet auf den Rest, der entsteht, wenn ich nun alle Vielfachen des x überall in xs streiche. Genau das erhalte ich durch [y | y <- xs, y `mod` x > 0]. Diese Definition bedeutet "die Liste aller y, wobei y aus xs ist und x kein Teiler von y ist".
Ein Beispiel für eine endliche Liste (wir werden dadran sehen, dass sieve für alle endlichen Listen undefiniert ist):
Hier nun die Aufschlüsselung:
sieve [2,3,4] = 2 : sieve [3] = 2 : 3 : sieve [] = undefiniert
Allerdings bei unendlichen Listen:
sieve [2..] = 2 : sieve [3,5,7,9,......] = 2 : 3 : sieve [5,7,11,13,17,19,23,25,29,31,35,.......] = ........
Man sieht, dass das Gewünschte dabei herauskommt.

Man kann dieses Beispiel selbst mit GHCi leicht testen. Wenn ich nun direkt primes abfrage, wird das Programm unendlich lange mir immer weiter die Zahlen ausgeben, bis man es abbricht. Ich kann allerdings auch leicht die ersten 100 Primzahlen ausgeben. Hierzu definiere ich mir eine kleine Hilfsfunktion, die ich left nenne (es gibt bestimmt bereits so eine Funktion, aber ich nutze Haskell leider zu selten um die auswendig zu wissen):
Code:
left 0 list = [] left n (x:xs) = x : left (n-1) xs
left bekommt 2 Parameter, eine Zahl n und eine Liste. left gibt mir genau die ersten n Elemente der übergebenen Liste zurück. Die Definition sollte klar sein.
Und nun das Ergebnis:
Code:
$ ghci Math.hs ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.4.2, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base-1.0 ... linking ... done. Compiling Main ( Math.hs, interpreted ) Ok, modules loaded: Main. *Main> left 100 primes [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83, 89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167, 173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257, 263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353, 359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449, 457,461,463,467,479,487,491,499,503,509,521,523,541] *Main>

Wodrauf ich eigentlich hinaus will: Obwohl hier mit unendlichen Listen hantiert wird, landet das Programm nicht in einer Endlosschleife. Die gleiche Definition in einer beliebigen imperativen Sprache würde das tun.
Beispiel (Java; habe den nachstehenden Code nicht getestet und programmiere sonst auch nie in Java, ich hoffe es ist trotzdem ungefähr richtig):
Code:
LinkedList numbers(int start) { LinkedList result = new LinkedList(); result.add(start); result.addAll(numbers(start+1)); return result; } LinkedList primes() { return sieve(numbers(2)); } LinkedList sieve(LinkedList list) { LinkedList result = new LinkedList(); int n = list.getFirst(); result.add(n); LinkedList tmp = new LinkedList(); for (int x : list) { if(x % n > 0) tmp.add(x); } result.addAll(sieve(tmp)); return result; } LinkedList left(int n, LinkedList list) { if(n == 0) then return new LinkedList(); LinkedList result = new LinkedList(); result.addAll(left(n-1, list)); result.add(list[n]); return result; }
Der Code ist in etwa auf die gleiche Weise implementiert wie der in Haskell. (Hinzugekommen ist noch die Funktion numbers, die alle Zahlen ab n zurückgibt.) Trotzdem wird es nicht funktionieren, wenn man jetzt left(100, primes()) abfragt, unter Haskell funktioniert der gleiche Code aber.

Es folgt, dass die ganze Ausführung bei Haskell anders ablaufen muss als bei imperativen Sprachen wie Java und eben nicht nur der Syntax ein bisschen anders ist.

Ein bisschen zur Erklärung wie Haskell es genau macht:
Wenn Haskell z.B. den Ausdruck 'left 3 primes' auflösen soll, macht er das Schrittweise, aber genau andersrum als eine imperative Sprache. Eine imperative Spr