PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit programmieren anfangen.. (pc verstehen:)


cyrix1
2003-10-18, 17:08:04
hoia,
also ich möchte mich auch mal langsam in die materie des programmierens einarbeiten..

aber von klein nach groß, soll heissen, ich will nicht gleich mit c++ anfangen, sondern erstmal mit einfacheren simpleren programmiersprachen und dann später auf c++ gehen..

ich habe noch keine große erfahrung darin.. gut turbo pascal in itg oder html kann ich n bisschen..(php wollte ich dann aber nicht lernen.)

aber ich möchte eher so das grundprinzip des programmiern und der arbeitsweise des pcs kennen.. also wie der pc funktioniert, was der vorteil (und unterschied zwischen 32, 16 bit) eines 64 bit systems ist... etc
compilieren etc..

und das halt dann langsam ausprobiern und testen.. zb erstmal mit assembler..
und die binären zahlen möchte ich auch mal genau kennen.. also 0=0 1=1 01=2 (oder?).. etc.

na ja mich halt eben langsam da einarbeiten und das prinzip des pcs verstehen..

kann mir da einer gute tutorials, webseiten etc oder bücher empfehlen?

wäre nett thx :)

Gast
2003-10-18, 18:08:20
[SIZE=1]Original geschrieben von cyrix1
..., sondern erstmal mit einfacheren simpleren programmiersprachen und dann später auf c++ gehen..


Klingt vernünftiger wie es manchmal ist. Manche simplen Programmiersprachen versauen einem den Programmierstil auf Dauer :)



aber ich möchte eher so das grundprinzip des programmiern und der arbeitsweise des pcs kennen.. also wie der pc funktioniert, was der vorteil (und unterschied zwischen 32, 16 bit) eines 64 bit systems ist... etc
compilieren etc..


Das wird aber kompliziert ;)
Als Student lernt man sowas an der Uni. Vielleicht solltest du dir irgendwie ein Vorlesungskript besorgen.
Alternativ hat die Ct immer gute Artikel. Falls du einen Bekannten haben solltest, der die regelmässig kaufst, kannst du dir ja interessante Artikel raussuchen (Artikelsuche auf heise.de)


und das halt dann langsam ausprobiern und testen.. zb erstmal mit assembler..


Sollte es nicht etwas einfaches zum Anfang werden?
In Assembler muss man alles von Hand zu Fuss machen :/


und die binären zahlen möchte ich auch mal genau kennen.. also 0=0 1=1 01=2 (oder?).. etc.


Naja ab und an ist das so.
Google mal nach "2er Komplement" und "IEEE Floating Point"


na ja mich halt eben langsam da einarbeiten und das prinzip des pcs verstehen..


guter Vorsatz :D

Viel Spass

Gandharva
2003-10-18, 18:58:17
würde dir zu java raten als erste programmiersprache. vb ist zwar einfach zu lernen, ich weiss aber aus eigener erfahrung das danach der umstieg auf java und c/c++/vc++ etwas schwerer fällt.
obwohl, wenn man einmal die grundlegenden praktiken des programmierens verstanden hat, ist es eigendlich nur noch eine rein syntaktische umstellung.

kauf dir ein ordendlches java-buch.
z.b. das hier:

http://www.amazon.de/exec/obidos/ASIN/3827319498/qid=1066496087/sr=1-5/ref=sr_1_11_5/302-7141627-9944813

und hier noch was zur rechnerarchitektur:

http://www.amazon.de/exec/obidos/ASIN/3528033797/qid=1066496196/sr=1-4/ref=sr_1_10_4/302-7141627-9944813

viel spass beim durcharbeiten :-)

MadMax1998
2003-10-18, 19:04:25
Das mit der Uni war eine gute Idee.Ich studiere an der Uni Stuttgart hier haben wir eine Erstsemester Vorlesung Einführung in die Informatik 1. Diese dürfte sämtliche bereiche abdecken die dich interesieren.Zu diesem Thema gibt es auch sehr viele gute Bücher.

peecee
2003-10-18, 19:08:00
Wenn ich richtig verstanden habe willst du durch Programmieren deinen PC besser verstehen ?

Java ist sicher eine gute Sprache aber wenn du das oben genannte Ziel erreichen willst, meiner Meinung nicht optimal.
Assembler wäre für dein Ziel das einzige Wahre.

mfg

Capt'N Coax
2003-10-18, 19:44:06
IMO ist Java eine sehr gute Wahl. Die API ist mächtig, Java ist sehr gut dokumentiert. Die Zeiger fallen weg (...), und man lernt saubere OOP.
Der Garbage Collector tut sein Übriges, und man kann Servlets Applets und haufenweise anderen Kram mit Java machen. Ausserdem gibts schöne Entwicklertools für ümmesüns.

Assembler ist natürlich hart, aber ich glaube garnicht so schwer wenn man die Denkweise draufhat (Ich habs nicht :)).

01 ist eigentlich 1, 10=2, aber naja, hahaha. ;) ;)
So Sachen müssen allerdings sitzen wenn du Assembler machen willst.

PS. Wieso willst du C++ machen? Nur so aus Interesse...

Nase
2003-10-18, 20:21:51
Um den Gedankengang von Capt'N Coax bzgl. Binärzahlen noch ein bisschen auszudehnen, will ich dir das näher bringen, was ich dazu gelernt habe.

Ich schreibe für dieses Beispiel eine Sequenz von 4 Zeichen, sieht schöner aus :). Erste Zahl ist binär.


0000 => 0
0001 => 1
0010 => 2
0011 => 3
0100 => 4
0101 => 5
0110 => 6
0111 => 7
1000 => 8

.... usw.

Also, in diesem Beispiel steht die erste Zahl (man fängt immer von rechts an) für die "Einer". Da es ja nur die Zahlen "0" und "1" gibt, kannst du entweder 1 oder 0 darstellen. Die zweite Stelle gibt die "Zweier" wieder. Damit wären wir schon bei der dritten Zeile meines Beispiels. Um auf den Ausgabewert "3" zu kommen, setzt man also an den Stellen für die Einer und Zweier jeweils eine 1 ein, denn 1+2 macht 3 ;). So geht das dann nun immer weiter bis zu einem maximal Wert für dieses Beispiel von 15.

Capt'N Coax
2003-10-18, 20:52:05
genau.

Um den Gedankengang von Capt'N Coax bzgl. Binärzahlen noch ein bisschen auszudehnen, will ich dir das näher bringen, was ich dazu gelernt habe.


Naja, ich wollte nicht die ganze Dualtheorie hierhin posten, sprengt wohl den Rahmen. Ich kann aber mal das Hochschulscript von FH Koeln ABT. Gummersbach ( :( ) verlinken, so oder so ähnlich sieht der Hochschulstoff dann halt aus. Is allerdings kurz gefasst, da findet man im Web sicherlich besseres Material.

Here it goes:
http://www.gm.fh-koeln.de/~koch/down/kap1.zip

Hoffe das hilft!

Zusatz:
Um beim Beispiel zu bleiben:
0011 = 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 3

Xmas
2003-10-18, 20:56:08
Original geschrieben von cyrix1
hoia,
also ich möchte mich auch mal langsam in die materie des programmierens einarbeiten..

aber von klein nach groß, soll heissen, ich will nicht gleich mit c++ anfangen, sondern erstmal mit einfacheren simpleren programmiersprachen und dann später auf c++ gehen..

ich habe noch keine große erfahrung darin.. gut turbo pascal in itg oder html kann ich n bisschen..(php wollte ich dann aber nicht lernen.)

aber ich möchte eher so das grundprinzip des programmiern und der arbeitsweise des pcs kennen.. also wie der pc funktioniert, was der vorteil (und unterschied zwischen 32, 16 bit) eines 64 bit systems ist... etc
compilieren etc..

und das halt dann langsam ausprobiern und testen.. zb erstmal mit assembler..
und die binären zahlen möchte ich auch mal genau kennen.. also 0=0 1=1 01=2 (oder?).. etc.

na ja mich halt eben langsam da einarbeiten und das prinzip des pcs verstehen..

kann mir da einer gute tutorials, webseiten etc oder bücher empfehlen?

wäre nett thx :)
Im Prinzip willst du zwei gegensätzliche Dinge. Denn eine simple Programmiersprache wird dich gerade von der eigentlichen Arbeitsweise des PCs so weit wie möglich fernhalten.

Wenn du Programmieren lernen willst, empfehle ich Python.
Wenn du lernen willst, wie ein Rechner funktioniert, lerne Assembler.

Nase
2003-10-18, 21:14:08
Wir haben in der Schule zuerst nur Pascal programmiert. Später sind wir dann dazu übergegangen, nachzuvollziehen, was bei den Programmen eigentlich im Rechner so vor sich geht. Dazu haben wir unsere Programme Schritt für Schritt in Assembler übersetzt. Puh, du glaubst garnicht was das für eine Arbeit ist, auch wenn für jeden Befehl in Pascal maximal drei Anweisungen in Assembler anfallen.
Ich würde dir auf jedenfall empfehlen, nicht direkt mit Assembler anzufangen (bzw. es ganz wegzulassen, mir hat es bis jetzt kein Stück gebracht, hab das meiste auch schon wieder vergessen :( ), sondern erstmal eine Sprache zu lernen. Im Grunde genommen kann man sagen, dass das Programmieren in allen Sprachen eh gleich ist, auch wenn die Befehle anders heissen mögen, der Vorgang wie dieses realisiert werden soll bleibt ja. Und deshalb ist es ja egal welche Sprache es sein soll, es geht letztendlich ja nur darum zu verstehen, wie und warum man ein Problem auf diese Weise am Besten löst.

cyrix1
2003-10-18, 21:16:29
joa danke mal

ich glaube auch ich widme mich erstmal java..

assembler und die ganze alten sprachen und die genau funktionsweise eines pcs kann ich auch von meinem vater lernen..
der ist elektrotechnik ingenieur und kennt sich da ganz gut aus....

joa und wenn man das später auch auf der uni beigebracht bekommt (was sicherlich effektiver ist) dann warte ich lieber nochn paar jahre bis ich das dort habe..

cyrix1
2003-10-18, 21:28:54
und zu dem binären zahlen, ich glaube ich habe das soweit vertanden..

immer von rechts nach links und immer jede stelle die man weiter nach links geht verdoppelt sich..

also einer, zweier, vierer, achter, sechzehner..

also um zb 24 darzustellen muss ich 11000 angeben..

um zb 15 zu schreiben mache ich 1111

aber eine frage, kann man die stellen von links weglassen bis die nächste 1 kommt?

also 0101
wäre 101 also =5

also quasi ne abkürzung weil 000000101 ist ja daselbe wie 101..

man ej das is ja echt easy die binären zahlen wenn das so stimmt..

Xmas
2003-10-18, 21:39:59
Original geschrieben von cyrix1
man ej das is ja echt easy die binären zahlen wenn das so stimmt..
Jap, stimmt alles :)
Nichts anderes als im Dezimalsystem auch, nur eben mit Zweier- statt Zehnerpotenzen. Dann brauchst du nur noch das Oktal- und Hexadezimalsystem, in die man Binärzahlen sehr leicht übertragen kann.

Karlsson
2003-10-18, 22:23:13
:uhippie:

cyrix1
2003-10-19, 00:01:18
Original geschrieben von Karlsquell
..sieht man ja an deiner Sig, wie man das Umrechnet...;D

hmm :)

dachte immer 1024 kb sind 1 mb :D
oder 1024 byte sind 1 kb..

Karlsson
2003-10-19, 00:18:29
:uhippie:

Stone2001
2003-10-19, 15:52:35
Original geschrieben von cyrix1
joa und wenn man das später auch auf der uni beigebracht bekommt (was sicherlich effektiver ist) dann warte ich lieber nochn paar jahre bis ich das dort habe..
ahhmmm, gehe mal nicht davon aus, das du auf der Uni richtig programmieren lernst.
Sicherlich bekommt man eine Einführung für die ein oder andere Sprache, wirklich programmieren lernt man dadurch aber nicht.

cyrix1
2003-10-19, 21:35:12
Original geschrieben von Karlsquell
Xmas möchte wohl den Unterschied zwischen kilo(=1000) und 2^10 (=1024) darstellen. Gelle? ;)

Edit: darstellen statt klarstellen


hmm ja ich wusste schon die größeneinheiten kilo=10³mega=10^6 und giga=10^9 terra=10^12 peta=10^15 etc..

aber dachte halt man sagt halt einfach beim pc kilobyte und meint damit 1024 byte anstatt richtigerweise 1000byte

es heisst dann wohl exakt kibyte.. aber im pc umgang ist wird wohl trotzdem 1kbyte=1024 byte verwendet :D

Karlsson
2003-10-20, 20:04:28
:uhippie:

cyrix1
2003-10-20, 20:20:14
jo das stimmt schon..

das die das net ehrlich angeben können und einfach immer 1000 der nächsten einheit nehmen..

meine 80 gig seagate hat auch nur wirklich 74.5 gbyte was etwa 8*10^10 also 80 milliarden bytes enspricht...

da haben sie einfach immer durch 1000 geteilt und kamen so auf 80 gbyte... schweinerei..

Xmas
2003-10-20, 23:02:14
Original geschrieben von cyrix1
jo das stimmt schon..

das die das net ehrlich angeben können und einfach immer 1000 der nächsten einheit nehmen..

meine 80 gig seagate hat auch nur wirklich 74.5 gbyte was etwa 8*10^10 also 80 milliarden bytes enspricht...

da haben sie einfach immer durch 1000 geteilt und kamen so auf 80 gbyte... schweinerei..
Wieso Schweinerei? Ist doch korrekt...

cyrix1
2003-10-20, 23:21:48
na ja schon, aber jeder der ne festplatte oder sonst einen datenspeicher kauft meint doch 1 GB=1024 MB

und das wissen die hersteller doch auch, klar ist es korrekt aber das hat sich halt so im pc umgang eingerichtet..

ich werd mich nächstes mal nach einer festplatte mit echten 120 Gibyte umschauen...(falls es sowas gibt:D)

{655321}-Hades
2003-10-21, 22:55:34
Lass dich nicht beirren...

BlitzBasic ist die einzig wahre Sprache!

Vergiss c, c++ (Java lassen wir mal außen vor, dass ist evtl. brauchbarer als dieser C-Müll), für uns Normalsterbliche ist sowas nicht empfehlenswert, für uns gibt es sinnvollere Dinge...

Sie heissen "einfach", "simpel", "optimal für kleine Spiele"....

BlitzBasic!

Karlsson
2003-10-21, 23:04:04
:uhippie:

Trap
2003-10-26, 23:57:29
Zu Basic gibt es ein berühmtes Zitat:

"It is practically imposible [sic] to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
http://www.cs.utexas.edu/users/EWD/ewd04xx/EWD498.PDF

C ist "portable high-level assembler", C++ ist eine objektorientierte Erweiterung von C, die man ganz gut benutzen kann, nachdem man die 1000 Dinge die man nicht machen sollte kennt. Java ist ein gelungener Versuch die nervigsten Probleme von C++ durch andere nervige Probleme zu ersetzen.

Programmieren und Arbeitsweise des Rechners verstehen geht nur soweit zusammen wie die Programmiersprachen der Arbeitsweise des Rechners entsprechen. Funktionale Programmiersprachen entsprechen fast überhauptnicht der Arbeitsweise der CPU. Imperative wie C oder Pascal oder auch Basic sind recht nah an der Arbeitsweise der CPU. Objektorientierte Sprachen irgendwo dazwischen.
Für eine einfache Erklärung wie eine CPU funktioniert: Google mal nach "von Neumann", das ist eins der grundlegenden Modelle nach denen auch heute noch PCs funktionieren.

{655321}-Hades
2003-10-27, 18:20:55
Original geschrieben von Trap
Zu Basic gibt es ein berühmtes Zitat:

"It is practically imposible [sic] to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
http://www.cs.utexas.edu/users/EWD/ewd04xx/EWD498.PDF




;D Arschgeiler Link ;D

Aber davon mal ab, was ist an einem konfusen Programmierstil so schlimm wenn man nicht vorhat in größere Ebenen zu gehen bei denen Sourceoptimierung dann eine Rolle spielt?

Matrix316
2003-10-27, 20:38:50
Wenn, wenn, wenn, wenn, wenn...

Und wenn doch? ;D

Zum Beispiel das "goto" geht zwar noch unter c aber wenn man 50000 gotos hat, denn wird ein Programm arg unübersichtlich. ;)

Andererseits Assembler ist zwar schnell, aber was bringt einem wenn man weiß, dass es Register und allen möglichen Krimskrams gibt und dass man die Bits hin und herschiebt? ;)

Ich meine es bringt einem überhaupt nüchts wenn man weiß wie ein PC in den untersten Ebenen funktioniert, wenn man nicht gerade SEHR Hardwarenah arbeitet oder PCs selbst herstellen will.

IMO sollte man wenn dann mit C anfangen, danach C++ und irgendwann mal Java, wenns sein muss. ;)

{655321}-Hades
2003-10-27, 23:27:07
Na, in BB hat man zwar immer noch Goto als Befehl, aber man benutzt (weil alles andere nostalgisch und komisch ist, und völlig unprofessionell) GoSub.

Aber das mal dazu....

Ich erwäge gerade ernsthaft Assembler zu lernen....

aths
2003-10-28, 11:49:18
Wie wär's mit einer vernünftigen Hochsprache? :D Assembler halte ich persönlich für einen Irrweg. Kenntnisse schaden da keineswegs, nur würde ich nicht in ernsthaft in Assembler programmieren wollen.

Haarmann
2003-10-28, 12:45:28
aths

Was ist denn ne vernünftige Hochsprache?

Allerdings gebe ich Dir recht, dass Intel x86 Assembler ein Irrweg ist, wobei das nicht am Assembler liegen muss...

Karlsson
2003-10-29, 19:38:07
:uhippie:

Trap
2003-10-29, 20:30:09
Bei den meisten Compilern für C oder C++ gibts sowas ähnliches:
void do()
{
__asm{
//Zeug

}
}

Vernünftige Hochsprache...
Ich bin mit keiner Programmiersprache die ich bis jetzt kennengelernt hab wirklich zufrieden, immer fehlt was aus den anderen Sprachen. Ich kenn C++, Pascal, Eiffel und Python...
Bald auchnoch Java, aber das ist auch nicht wirklich gut.

{655321}-Hades
2003-10-29, 21:22:33
Wie wäre es mit LISP?

Der Knüller unter den objektorientierten!

aths
2003-10-29, 21:42:29
Original geschrieben von Haarmann
aths

Was ist denn ne vernünftige Hochsprache?C++. (Würde es ohne .Net gehen, auch C#.)
Original geschrieben von Haarmann
Allerdings gebe ich Dir recht, dass Intel x86 Assembler ein Irrweg ist, wobei das nicht am Assembler liegen muss... Ich halte Assembler prinzipiell für einen Irrweg. Das Problem sollte unabhängig von der konkreten Hardware formuliert werden. Selbst wenn Assembler 50% schneller sein sollte, die Performance ist da. Wenn nicht, wartet man 6 Monate, aber setzt von Anfang an auf portierbaren Code.

Gast
2003-10-29, 22:32:03
Original geschrieben von {655321}-Hades
Wie wäre es mit LISP?

Der Knüller unter den objektorientierten!

Gibt´s Lisp denn noch?

Jetzt aber mal was anderes: Überlege gerade ernsthaft, wieder einzusteigen. Habe (lang ists her) Erfahrungen in Basic, Z80,6502,7501 Assembler, (Turbo) Pascal, (Borland) C.

Ziel ist´s Internetseiten aufzupäppeln. Was kann man da empfehlen? C#, Java(script)? Tendiere z.Zt. zu Actionscript. Hab´hier Flash 5 von Macromedia zur Verfügung. Was meint Ihr?

Karlsson
2003-10-29, 22:37:01
:uhippie: