Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
08.04.2010, 17:03
Smeagol



Hey!
Ich will lernen zu programmieren. Ich hab n bisschen Fortran in der Uni gehabt und konnte da halt das Zeug programmieren, was wir durchgenommen haben, namhaft eindimensionale Bewegung einer Teilchenwelle mit/ohne Potential und son Scheiß.

Ich hab auch schon ein Projekt im Auge, hat mit Pokern zu tun. Erst mal grundlegend eine Hand in Textform beschreiben und nem Programm beibringen das zu lesen um dann Zeuchs damit zu machen.

Was für ne Sprache wär da geeignet und wo fänd ich Tutorials?

[x] in before flames

greetz&thx

--


Dieser Beitrag wurde am 08.04.2010 um 17:04 von Smeagol bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
08.04.2010, 17:53
toasty



Blitzbasic^^

nein scherz...
wenns jetzt nur um sowas wie dein kleines Projekt geht: Lite C.
wenn es dir wirklich darum geht eine Sprache zu lernen vllt. zum einstieg Lite C und dann c++ oder so...

--

zum Seitenanfang zum Seitenende Profil || Suche
002
08.04.2010, 18:00
Smeagol



kann ich das, was ich bei Lite C lern dann bei C++ weiterbenutzen, oder wär das wie ne zweite Sprache lernen?

So klein wird das Projekt insgesamt dann wohl auch nicht, da kommt noch einiges hinzu... auf ne DB zugreifen und reinschreiben, Erwartungswerte ausrechnen, Graphen zeichnen... heiei

--

zum Seitenanfang zum Seitenende Profil || Suche
003
08.04.2010, 18:09
toasty



also Lite C ist eben auch eine abwandlung von C...

...aber auf jeden Fall wird der Umstieg von Lite C auf C++ nicht so schwer sein als wenn du direkt mit C++ anfangen würdest...

das tolle an Lite C ist eben du kannst ganz einfach z.B. ein bitmap bild einbinden und damit rumprogrammieren.

am besten wäre es wenn du dir einfach mal bei einem tutorial ein bisschen quellcode durchschaust und dann entscheidest was dir besser gefällt.

c++: highscore.de
Lite C: http://www.conitec.net/litec/index_d.htm

Bei C++ wirst du eben erstmal lange in Consolenfenstern programmieren...

--

zum Seitenanfang zum Seitenende Profil || Suche
004
08.04.2010, 18:19
Smeagol



Lite C sieht für meine Zwecke und nicht-Künste gut aus, vielen Dank für den Tip toasty!

--

zum Seitenanfang zum Seitenende Profil || Suche
005
08.04.2010, 18:24
toasty



jep, bitte und viel Spaß beim Coden;)

--

zum Seitenanfang zum Seitenende Profil || Suche
006
09.04.2010, 03:25
Bluthund



Zitat:
http://www.conitec.net/litec/index_d.htm
Falls Sie es in lite-C zur wahren Meisterschaft bringen wollen, empfehle ich nach Beendigen der Workshops, ein C/C++-Buch oder ein Online-Tutorial, wie z. B. Teach Yourself C in 21 Days durchzuarbeiten.
Dass dort so ein Buch empfohlen wird sagt imho schon viel ueber die Qualitaet des Workshops aus...
Zur Referenz: Teach Yourself C++ in 21 Days

Zitat:
Ich hab n bisschen Fortran in der Uni gehabt und konnte da halt das Zeug programmieren, was wir durchgenommen haben, namhaft eindimensionale Bewegung einer Teilchenwelle mit/ohne Potential und son Scheiß.
Was heisst das genau? Konntest du die Beispiele aus dem Skript abtippen, die Beispiele auf andere Aufgaben anpassen oder selbststaendig Aufgaben, die gestellt wurden, in FORTRAN loesen?

Wenn du Programmieren lernen willst, ist die Wahl der Sprache eigentlich fast nebensaechlich. Aber ganz ohne Praxis geht es natuerlich auch nicht.
Fuer den Anfang ist sicherlich eine Sprache aus dem prozeduralen Lager nicht verkehrt, da die meisten Leute damit am wenigsten Schwierigkeiten zu haben scheinen.
Wobei man hier durchaus auch andere Beispiele findet... An der UCBerkeley wird die Einfuehrung in die Informatik und das Programmieren z.B. seit vielen Jahren in Scheme (einem der zwei grossen Lisp-Dialekte) gemacht.

Aber Programmieren heisst eben nicht nur die Syntax einer Sprache zu beherrschen. Der Kern besteht darin eine abstrakte Denkweise fuer das Loesen von Problemen zu entwickeln. Dazu kommt noch Handwerkszeug wie z.B. grundlegende Algorithmen und Datenstrukturen, so dass du nicht jedes Mal wenn du ein Problem angehst das quadratische Rad neu erfindest oder deine Arrays mit einem selbst implementierten Bubble-Sort sortierst, oder auch Muster und Programmstrukturen, so dass dein Button in seinem Click-Handler eben nicht Queries an die DB schickt.
Ohne Grundlagen geht es nicht oder um es anders auszudruecken:
Du kannst jedermann einen Hobel in die Hand zu druecken und er kann damit schon nach kurzer Zeit Spaene produzieren, aber das macht denjenigen noch lange nicht zu einem Schreiner.

Leute ohne Grundlagenwissen sind dann naemlich diejenigen, die PHP und MySQL als untrennbare Einheit betrachten und Programme im For-Case-Paradigma schreiben.
[Die oben verlinkten Sachen sind nur ein kleiner Teil der Dinge, die schief gehen koennen und die Entwicklung deiner Programme massgeblich behindern.]

C oder C++ wuerde ich aber an der Stelle direkt mal hinten anstellen. Allein die Pointer und das manuelle Verwalten von Speicher halte ich fuer jemanden, der erstmal den Fuss in die Tuer bekommen will, fuer absolut unangebracht. Damit schiessen sich selbst noch Leute, die das schon Jahre machen, gern ordentlich in die Fuesse.
Das sind sicherlich Dinge, die man auch beherrschen sollte, da das ein gutes Gefuehl dafuer gibt wie der Rechenknecht seine Arbeit tut, aber nichts womit man sich direkt zum Start herum plagen muss.

Leider kann ich dir an dieser Stelle keine 100%ige Antwort auf deine Frage liefern. Aber ich versuche zumindest ein bisschen in Wegweisung (zumal die Frage zu deinem Wissensstand noch steht):
Ich habe "damals" mit QBASIC (ein BASIC-Dialekt dessen Interpreter MS-DOS 5 bei lag; von Programmieren konnte da noch keine Rede sein, es war mehr eine Aneinanderreihung sequentieller I/O-Befehle) und spaeter Pascal/Delphi angefangen. Meine persoenliche Empfehlung waere jetzt Pascal wenn es ueber die Zeit nicht so an Praesenz verloren haette. Zum Lernen sicherlich nicht verkehrt aber fuer mehr als den hobbyistischen Einsatz wahrscheinlich eher nutzlos. Ich wuesste von niemandem, der die Sprache noch ernsthaft einsetzt (Legacy-Codebases mal aussen vor). Wobei das nicht heisst, dass die Sprache gar nicht mehr benutzt wird (siehe z.B. http://freepascal.org/).
Eine Sprache die ich dir gern empfehlen wuerde, was ich aber nicht kann, da ich selbst noch nichts wirklich damit zu tun hatte, ist Python. Ich kenne viele Leute, die grosse Stuecke darauf halten. Es gibt eine grosse Community und massig Bibliotheken fuer alles, was das Herz begehrt. Sicherlich mehr als nur einen kurzen Blick wert.
Andere Hochsprachen, die bedingt empfehlenswert sind, waeren Java oder C#. Beides sind objektorientierte Sprachen (wobei M$ versucht C# immer mehr zur Eierlegenden Wollmilchsau zu machen). Imo laeuft bei beiden ein Anfaenger Gefahr sich Unarten in Form von Anti-Patterns anzugewoehnen wenn die noetige Fuehrung fehlt (ein gutes Buch/Mentor/Vorbildung sind hier Pflicht). Beide bieten grosszuegig dimensionierte Klassenbibliotheken (Java-API & .NET Framework Class Library), die auf den Anfaenger auch eher einschuechternd und/oder verwirrend (vorallem da es leider auch Inkonsistenten gibt) wirken koennen aber halt auch viel Funktionalitaet fuer die alltaeglichen Arbeiten mitbringen.

TL;DR:
Kein C/C++ fuer den Anfang, Grundlagen (Algorithmen, Datenstrukturen) + vernuenftige (nicht esoterische Sprache) aktuelle Hochsprache lernen (prozedurales Paradigma empfohlen, aber nicht zwingend erforderlich)

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
007
09.04.2010, 10:24
LeJean



Also ich seh das anders, Bluthund.
Warum willst du jemanden gleich auf ne Sprache loslassen, in der du ohne ein vernünftiges Design über Pattern nicht wirklich weiterkommst? Warum willst du ihn gleich in die vielen OOP-Messer rennen lassen? Dass eine Sprache sich später für jemanden mit dem entsprechenden Wissen einfacher und ausdrucksstärker schreiben lässt, heisst nicht automatisch, dass sie für den Einstieg geeignet ist.

Ich hab damals im 1. Semester mit C angefangen, bin inzwischen einige Jahre weiter und an ner anderen Uni und habe mitbekommen, dass die Erstsemester hier mit Scheme einsteigen. Bevor ich in meinem Studium überhaupt zu OOP in den Vorlesungen gekommen bin, sind sicher 3 Semester vergangen - warum also gleich damit anfangen? Für Grundprinzipien halte ich überschaubare Sprachen mit wenig Syntax-Candy für besser. Und Sprachen, die weniger Designmöglichkeiten von Haus aus anbieten. Das bedeutet natürlich nicht, dass nicht zuerstmal Algorithmen & Datenstrukturen nötig sind um überhaupt was damit anfangen zu können, ich beziehe mich gerade allein auf die Wahl der Sprache.

Und ich bin auch der Meinung, dass sich ein Einsteiger nicht gleich vor Augen halten lassen muss, was er am Design (!) und nichtmal an der Syntax so falsch machen kann. Zu Designproblemen kommt jeder noch früh genug, da müssen nicht gleich die OOD-Paradigmen ausgepackt werden. Auch wenn es schön zu sehen ist, dass es noch andere Leute gibt, die Wert darauf legen -- die treffe ich nämlich viel zu selten!

Um Syntax allgemein gehts natürlich gar nicht, denn egal welche Sprache man lernt: Die Prinzipien sind schlussendlich auf jede Sprache übertragbar (es sei denn, man fängt mit Perl an) -- logische Programmiersprachen mal aussen vor gelassen. Aber da man als (angehender) Programmierer auch genug Ahnung von dem haben sollte, was hinter der Materie steckt, empfehle ich keine interpretierte Sprache zu nehmen und eine solche zu wählen, mit der man Algorithmen und Datenstrukturen zur Übung einfach selber schreiben und managen muss.

Python, Ruby usw. ist mMn eine andere Generation von Sprachen, die aber nicht unbedingt dabei hilft, die Materie zu verstehen. Wenngleich sie natürlich für den täglichen Gebrauch deutlich schneller zu deutlich einfacheren und schöneren Lösungen kommen! Da ist dann die Frage, was man will: Das grundsätzliche Verständnis von Anfang an, oder erst die Ergebnisse und dann nach und nach feststellen warum was überhaupt wie funktioniert...

--


Dieser Beitrag wurde am 09.04.2010 um 10:25 von LeJean bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
09.04.2010, 10:38
KhanRKerensky



Python ist durchaus zu empfehlen. Mit dem interaktiven Modus kann man Python auch sehr einfach ausprobieren und erkunden. Dort brauch man nur seine Befehle eingeben und die werden direkt ausgeführt. Richtig große Sachen sollte/kann man auf diese Weise natürlich nicht programmieren, aber zum testen mehr als praktisch.

/edit

Zitat:
mit der man Algorithmen und Datenstrukturen zur Übung einfach selber schreiben und managen muss.
Sowas macht man einmal in der Uni (wenn überhaupt) und dann nie wieder. Zumal man das auch in einer Sprache wie python machen kann.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book


Dieser Beitrag wurde am 09.04.2010 um 10:43 von KhanRKerensky bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
09.04.2010, 12:12
LeJean



Ich selbst bin noch nicht dazu gekommen, Python groß auszuprobieren, aber es steht auf meiner Liste.. Was du sagst macht natürlich Sinn -- wohl hängt die Wahl der "richtigen" Sprache (wenn es sowas überhaupt gibt) auch einfach arg davon ab, wohin man mit der Programmiererei will.

Letztes Jahr hab ich in der Firma ein Projekt gehabt, bei dem ich ne ganze Ecke selbst managen musste. Es ging um eine P2P-Streaming Library (C++), die über verschiedene Blockgrößen, Queue-Managements und Ausfallsicherheiten mehrere Sachen abdecken musste. Und da kommt man mit solchen Sprachen glaub ich nicht viel weiter. Ich bin weiß Gott kein Verfechter von C++, dafür kann ich's dann doch zu wenig. Eigentlich steh ich auch wohl auf (interpretierte) Sprachen, mit denen man schnell und einfach arbeiten kann.
Aber es ist halt einfach ne Frage der Grundlage. Haben wollen oder lieber erst später, liegt dann wohl bei demjenigen, der die Entscheidung trifft. Und damit entscheidet er sich vllt auch direkt in eine Richtung, was die Sprachwahl angeht.

--


Dieser Beitrag wurde am 09.04.2010 um 12:12 von LeJean bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
09.04.2010, 13:55
KhanRKerensky



Für Sachen wo die Performance wichtig ist, taugt Python meiner Meinung nach weniger, wobei ich da den Interpreter warscheinlich auch etwas unterschätze.

Für

Zitat:
Erst mal grundlegend eine Hand in Textform beschreiben und nem Programm beibringen das zu lesen um dann Zeuchs damit zu machen.
dürfte Python ideal sein.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book

zum Seitenanfang zum Seitenende Profil || Suche
011
09.04.2010, 14:14
Smeagol



Erst mal Danke für die vielen Antworten
Zu Fortran: Ich konnte die gestellten Aufgaben dann mit dem Skriptwissen selbst lösen, ohne die Musterlösung abzutippen. Habe dann auch selbst bisschen weitergetippt und mir Zeuchs ausgedacht was wir net hätten machen müssen.

Also was nu laut Gruppen-Konsens?
toasty ist für lite-c -> c++
bluthund für pascal/python/java/c#
lejean für c++
khan für python

edit: korrigiert mich wenn ich falsch lieg

ich bin verwirrt weil ich keine der sprachen kenne und dementsprechend auch keine unterschiede.

edit2: witzig dass du den bubble-sort angesprochen hast, sowas hab ich mir nämlich tatsächlich auch selbst programmiert gehabt. allerdings wars bei mir tatsächlich anders, die elemente wurden nicht geswapt sondern das maximum rausgesucht (weil ich mir vorher schon ne funktion gemacht hatte, die das maximum sucht), das mit dem untersten element swapt, und das ganze dann wiederholt, angefangen ein element weiter.

--


Dieser Beitrag wurde am 09.04.2010 um 14:19 von Smeagol bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
09.04.2010, 14:19
Bluthund



So sehr anders siehst du das garnicht, Jean :)
Ich hatte fuer die letzten beiden eigentlich bewusst mehr negative Dinge genannt (daher auch bedingt empfehlenswert). Nichtsdestotrotz muss man halt auch sehen, dass man in Java und C# mit einer Untermenge der Syntax auch erst einmal strukturiert und fast ohne OO in einem hauptsaechlich statischen Kontext (bis auf Library-Calls fuer I/O) programmieren kann.

Wir hatten hier an der FH auch C im ersten Semester (neben Bash-Scripting fuer die OS-Vorlesung). Ich halte die Sprache mit ihren Ecken und Kanten (implizite Funktionsdeklaration; ein Typsystem, das arbeitet wie ein Sack Schrauben; Pufferueberlaeufe in libc-Funktionen) aber persoenlich einfach fuer ungeeignet fuer jemanden, der einsteigen moechte. Die Leute, die noch gruen hinter den Ohren waren was Programmierung betraf, hatten mit C ordentlich zu kaempfen. Ich sass bspw. kurz vor Ende des ersten Semesters mit einem Kommilitonen zusammen vor seinem Beleg und haette ihm am liebsten gesagt "Schreib das nochmal neu". Das ist natuerlich nichts, was man jemandem sagt, der noch ein paar Tage bis zur Abgabe und SegFaults am laufenden Band hat. Selbst einige der Funktionen der libc tun Dinge, die man einfach nicht erwartet und wissen muss wenn man sie benutzt (e.g. Zerstoerung des Quellstrings durch strtok).

Irgendwann sollte natuerlich jeder Programmierer mal so nah wie moeglich am Silizium gewesen sein. Sonst haben wir irgendwann nur noch Shlemiels. Auch sollte jeder mal rein funktional programmiert haben, da das eine ganz andere Sichtweise auf das eigene Tun vermittelt.
Aber ich denke ein Top-Down-Approach ist fuer die meisten wahrscheinlich einfacher als Bottom-Up. Nicht umsonst gibt es reine Lernsprachen wie Logo oder Scratch, die mit fast schon profanen Mitteln arbeiten. Bottom-Up hat natuerlich den Vorzug einem direkt den Bezug zum Rechenknecht zu geben aber das geht halt auch mit einer steileren Lernkurve einher.

Zitat:
KhanRKerensky postete
Zitat:
mit der man Algorithmen und Datenstrukturen zur Übung einfach selber schreiben und managen muss.
Sowas macht man einmal in der Uni (wenn überhaupt) und dann nie wieder.
Einmal sollte auch reichen, um die Vorzuege/Nachteile kennenzulernen. Wenns darauf ankommt, kann man es immer noch nachschlagen mit dem Wissen, wo man denn ueberhaupt suchen soll. Aber man muss diese Dinge einfach mal gemacht (oder zumindest ausreichend beobachtet) haben, wenn man vorhat nicht nur mit auswendig gelernten Big-O, Omega und Theta um sich zu werfen.
Zitat:
Zumal man das auch in einer Sprache wie python machen kann.
ACK

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
013
09.04.2010, 14:25
Kriz



Programmieren lernen und "Programmiersprache lernen" sind zwei paar Schuhe. Programmieren lernen kann man auch gut in Pseudocode abhandeln, hier geht es ja um die Abläufe selbst und nicht das Werkzeug, welches diese Abläufe ermöglicht. Nun gut, es gibt "Lernsprachen" wie einfaches BASIC oder auch Pascal, mit denen man die Strukturen (prozeduraler) Programmierung erlernen kann. Jenseits von GOTO und IF THEN ELSE gibt's zwar auch allerlei andere Ansätze, aber jetzt mal ernsthaft... wer zum Teufel coded Scheme zuhause? Hier sollte man prozedural anfangen und nicht funktional wie Scheme es eben macht. Das kann man sich später dann in Ruhe antun.

Nun zum "Lernen von Programmiersprachen". Ich für meinen Teil habe Anfang der 1980er mit BASIC 2.0 auf der Brotkiste angefangen, dann kam 1989 AmigaBASIC auf gleichnamiger Freundin, gefolgt von Pascal auf dem Gumminasium, C und C++ auf der FH und letztendlich Java und PHP im Hometraining. Ruby, Python, C#, Ada und Delphi habe ich mir angeguckt, aber... naja... man muß nicht alles toll finden. Ich bin definitiv bei C++ hängengeblieben, mit allen Vor- und Nachteilen! Heute würde ich sagen: Ich lerne C++ von der Pike auf, um:

a) zu verstehen, wie prozedurale, objektorientierte und generische Programmierung ablaufen
b) zu verstehen, wie Speichermanagement unter voller Eigenverantwortung zu managen ist
c) zu verstehen, wie insbesondere der Polymorphismus der Objektorientierung in seiner vollen Blüte hinter den Kulissen abläuft
d) zu verstehen, wie man auch vom "hohen Roß" (HiLevel) aus in die tiefsten Tiefen des Kaninchenbaus (LoLevel) vordringen kann

Wie gesagt, daß ist meine Betrachtungsweise der Dinge. Die meisten hier wissen das. C++ ist nicht perfekt, aber die Basis für ein gesundes Verständnis von dem, was andere Sprachen von einem erwarten.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche