Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Computer - ein unbekanntes Wesen ???

Pomm / 16 Antworten / Baumansicht Nickles

Hi !!

Gibt es hier Leute, die mir sagen können, ob ich das mit dem Computer jetzt endlich richtig verstanden habe ????

Also, der CPU versteht nur Maschinensprache nach Bits und Bytes geordnet. So ungefähr

00101100 10101110 10111111 10111011
01101110 10100001 10010111 01110100

( beliebige Reihenfolge gewählt )

Acht Bit sind ein Byte, ....

Was bedeuten diese Bits und Bytes ??
Na mit 8 Bit lassen sich 256 verschiedene Zeichen darstellen.
Dabei werden die Standards ANSI und ASCII benutzt.

Wandelt man nun diese Bits in Zeichen um, so erhält man Befehle, die der jeweilige Prozessor ( MAC, Intel oder AMD ) versteht, den internen Befehlssatz. Diese Befehle stellen nun den Befehlssatz gemäß Assembler dar ( etwas komplizierte Programmiersprache ) .Um das ganze etwas verständlicher zu machen, wurden die höheren Programmiersprachen entwickelt. u.a. C/C++ und Pascal. Hat man nun ein Programm z.B. in C++ verfaßt, dann muß man es noch kompilieren ( also in o.a. Maschinencode, bestehend aus 01010101, umwandeln ).

Ein Programm, das erst zur Laufzeit kompliert wird ( z.B. Basic ) bleibt im Klartext, bzw. Quelltext stehen. Man sagt auch es wird zur Laufzeit erst interpretiert.

Meine Fragen:

Stimmt das soweit ???

Wo bekomme ich denn den internen Befehlssatz für einen Intel CPU her ???

( hab mich auch noch nícht weiter darum bemüht )

Woher bekomme ich die ANSI und ASCII Zeichensätze her ??? Gibt es da auch ne Liste, die die dazugehörigen Bytes angibt und Heyadezimal und ... ???


CU Pomm

bei Antwort benachrichtigen
(Anonym) Pomm „Computer - ein unbekanntes Wesen ???“
Optionen

>Stimmt das soweit ???

zwar von hinten durch die Brust ins Auge, aber kann man so stehen lassen!

>Wo bekomme ich denn den internen Befehlssatz für einen Intel CPU
>her ???

von Intel, wenn man ganz nett fragt!

>Woher bekomme ich die ANSI und ASCII Zeichensätze her ??? Gibt es da
>auch ne Liste, die die dazugehörigen Bytes angibt und Heyadezimal
>und ... ???

die Liste(Tabelle) befand sich eigentlich in jedem Programmieranfängerbuch, das ich in den Händen hatte, sollte heute immer noch so sein!

bei Antwort benachrichtigen
Andreas42 Pomm „Computer - ein unbekanntes Wesen ???“
Optionen

Hi Pomm!

Deine einfache Betrachtung zu Bits&Bytes und Madchinensprache ist richtig.

Einige Hinweise noch (die zeigen, wie komplex das ganze ist):

Ob eine Byte-Folge im Arbeitsspeicher ein Stück Programmcode, eine Text oder Teil einer Bildinformation ist, weiss die CPU normalerweise nicht. Sie wird auch versuchen die Bildinformation als Programm auszuführen.
Frühre führte sowas dann direkt ins Nirvana: Absturz. Heute kann man der CPU per Programmanweisung mitteilen, welche Bereiche wie genutzt werden (die Speicherbereiche werden dabei in Pages/Seiten unterteilt). Wenn dann z.B. ein Programm in Seite schreiben will, die nicht beschrieben werden darf, dann löst die CPU einen Fehler aus. In Windows ist das dann der bekannte "Page Fault" bzw. "Seitenfehler/Schwerer Ausnahmefehler".
Das erklärt, was diese Fehler bedeuten und leider auch, dass man aus der Fehlermeldung nicht sehen kann, was genau schief gelaufen ist...

Neben den Compilern und den Interpretern gibt es noch eine Zwitterlösung. Programmiersprachen, die mit P-Code arbeiten. Sie verwenden auch einen Compiler, nur erzeugt der keinen Maschinencode, sondern einen "Zwischencode", den P-Code.
Der P-Code muss dann von einem P-Code-Interpreter ausgeführt werden. Oft spricht man dann von einer notwendigen "Laufzeitumgebung", die notwendig ist, um den P-Code auszuführen.
Der P-Code kann schneller ausgeführt werden, als ein "Voll-Interpretierte" Sprache, aber langsamer als echter Maschinencode. Der Vorteil ist aber, dass man nur den P-Code-Interpreter für eine neue CPU umsetzen muss und dann alle vorhanden P-Code-Programme ausführen kann (man muss sie nicht neu compilieren). Das ist "der Trick", der hinter Java steht (und ist eigentlich ein alter Hut...).

Wenn du mit Windows arbeitest, findest du in der Zubehör-Gruppe die Zeichensatztabelle. Da Windows mit dem ANSI-Zeichensatz arbeitet, ist das eine ANSI-Tabelle. (Falls sie fehlt, kann man sie nachinstallieren!)
Leider gibt es keine "Stand-ASCI-Tabelle", die als Tool mitgeliefert wird. Selbst unter DOS stand sie früher nur im Handbuch (bis Version 5).

Eine Online-Tabelle zu finden, war gar nicht so einfach. Die MetaGer-Suchmaschine (http://meta.rrzn.uni-hannover.de/) hat dann allerdings etwas gefunden, mit dem ich nicht gerechnet hatte:

www.ascii-tabelle.de

Die Seite gibt's wirklich. :-) Sie beschreibt aber nur den echten ASCII-Zeichensatz, der nur 127 Zeichen kennt!

Die IBM-ASCI-Tabelle gibt's dann hier:

http://home.t-online.de/home/dynamo/ascii/ascii0.htm

Ich hoffe, das hilft dir weiter!

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Pomm Nachtrag zu: „Computer - ein unbekanntes Wesen ???“
Optionen

Uff !!!

Jetzt hab ich mal was richtig verstanden, da kommt ihr gleich wieder mit einem neuen Hammer. Aber ich laß mich nicht entmutigen, ich bleib einfach am Ball.

Hab mir mal zuerst ein Buch über HTML und Javascript gekauft. Find ich ganz interessant, da es nicht gleich so kompilizert wie C/C++ ist und man auch gleich Resultate auf dem Bildschirm sehen kann.

Aber nochmals zu den Grundsätzen. Ich denke mir, daß bereits bestimmte Bereiche ( Adressen ) für z.B. das Bios und den Bildschirmbereich im Arbeitsspeicher reserviert sind ( diese Pages ). Welche Bereiche das sind, steht bestimmt auch irgendwo geschrieben.

Dadurch weiß die CPU bestimmt auch schon, wo sie was mit den einzelnen Bits machen soll ( wohl über die von Andreas angesprochenen Befehle )

und die Sache mit dem P-Code .... die ignoriere ich mal einfach ;-))

CU Pomm

bei Antwort benachrichtigen
(Anonym) Pomm „Uff !!! Jetzt hab ich mal was richtig verstanden, da kommt ihr gleich wieder mit...“
Optionen

>Hab mir mal zuerst ein Buch über HTML und Javascript gekauft. Find
>ich ganz interessant, da es nicht gleich so kompilizert wie C/C++
>ist und man auch gleich Resultate auf dem Bildschirm sehen kann.

HTML und Javascript, sind ja auch für etwas anderes konzipiert worden als C/C++. Ist als wenn man Äpfel mit Birnen vergleicht, ist zwar beides Obst, aber ...

bei Antwort benachrichtigen
Anonym Pomm „Uff !!! Jetzt hab ich mal was richtig verstanden, da kommt ihr gleich wieder mit...“
Optionen

>da es nicht gleich so kompilizert wie C/C++ ist und man auch gleich
>Resultate auf dem Bildschirm sehen kann.

Dann würde ich dir LOGO empfehlen, die Programmiersprache für Kinder,
wurde schon erfolgreich in Kindergärten eingesetzt!

Wieso Logo ?
LOGO ist eine klare und einfache aber dennoch mächtige Programmiersprache. Die Besonderheit von LOGO ist die sogenannte IGEL-Grafik. Igelgrafik ist eine verständliche und umfassende Sammlung von Befehlen um einen Igel zu manipulieren , der in der Mitte des MSWLogo -Igelfensters sitzt ( ). Der Igel selbst kann im Igelfenster Linien zeichnen , wenn er die entsprechenden Befehle erhält. Damit schließt IGEL-Grafik eine Lücke, die andere Programmiersprachen haben. Der Igel mit seinen Aktionen gibt dem Programmierer sofort eine Rückmeldung für fast jeden gegebenen Befehl. Dadurch wird es einfacher, programmieren zu lernen: man gibt dem Igel Befehle, wie man sie einem Zeichen-Roboter, auf dem man mitfahren kann, geben würde und sieht sofort die Auswirkung.

bei Antwort benachrichtigen
Andreas42 Pomm „Uff !!! Jetzt hab ich mal was richtig verstanden, da kommt ihr gleich wieder mit...“
Optionen

Hi Pomm!

Nicht entmutigen lassen und weiter wühlen!
;-)

Die Sache mit den Pages habe ich angeschnitten um nochmal deutlich herauszustellen, dass die CPU nicht weiss, was Daten und was Programmcode ist (und sie weiss natürlich auch nicht, ob sie Daten an einer Stelle speichern darf, ohne dabei was Wichtiges zu überschreiben - z.B. Programmcode von einem anderen Program/Treiber...).

Heute kann man daher die Speicherbereiche vor solchen "CPU-Anschlägen" schützen. Wie das genau (also in der CPU und mit welchen Befehlen) gemacht wird, kann ich dir aber nicht sagen, so tief bin ich dann doch nicht drin.
Ich weiss, das diese Schutzaufgaben heute das Betriebssystem übernimmt: es weisst einem neugeladenen Programm einen Speicherbereich zu, der Rest des Speichers ist dann geschützt. Aber das ist warscheinlich nur eine seeehr einfache Vorstellung. ;-)

Aber damit versteht man, wo die Blue-Screens, Seitenfehler&Co herkommen - leider versteht man dann auch, dass einem diese Fehlermeldungen nur etwas nützen, wenn man der Programmierer ist und gerade ein neuen Programm testet...

Den P-Code kannst du ruhig gnorieren - es ist nur gut zu wissen, dass es "Etwas" zwischen Compiler und Interpreter gibt.

Also lass dich nicht aufhalten! ;-)

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
KKND2 Pomm „Computer - ein unbekanntes Wesen ???“
Optionen

har har har, ihr beide seit ja sowaaaaas von lustig,
hey leute verpisst euch vom web und im übrigen ist der mix zwischen html und javascript der beste einstieg in die programmierung. -ja, ich weiss html ist eine formatiersprache und ich weiss auch das javascript keine richtige programmiersprache ist, wer jedoch javascript wirklich kann, der wird es auch mit java nicht allzu schwer haben (persönliche erfahrung), obwohl mir langsam diese hochsprachen aufm sack gehen und ich nur noch mit assemlber rummache.

bei Antwort benachrichtigen
(Anonym) KKND2 „har har har, ihr beide seit ja sowaaaaas von lustig, hey leute verpisst euch vom...“
Optionen

>... und ich nur noch mit assemlber rummache.

Na dann laß das nicht den Mann von der 'assemlber' erfahren, betrogene Ehemänner sind unberechenbar! Möglicherweise tut der dir
etwas an und lernt danach in der Zelle Assembler!

bei Antwort benachrichtigen
(Anonym) KKND2 „har har har, ihr beide seit ja sowaaaaas von lustig, hey leute verpisst euch vom...“
Optionen

asm forever

bei Antwort benachrichtigen
Pomm Nachtrag zu: „Computer - ein unbekanntes Wesen ???“
Optionen

Ach wie schön ist es, wenn man manche Leute einfach ignorieren kann.
Und zu dir :62.226.246.162. Falls du es noch nicht mitbekommen hast, werden bei Javascript die Grundsätze der objektorienterten Programmierung erläutert. Sicherlich nur in Grundzügen, aber für mich ein Einstieg. Zum Glück hast du schon alles von Geburt an gewusst, und musstest nichts lernen. Wie nennt man das noch ... Überheblichkeit .....

bei Antwort benachrichtigen
(Anonym) Pomm „Ach wie schön ist es, wenn man manche Leute einfach ignorieren kann. Und zu dir...“
Optionen

Ahja, wo hast denn das her?
Das mit den Grundsätzen der objektorientierten Programmierung bei JavaScript!

Wo ist denn in der Sprache eine konsequente Klassenbildung oder Polymorphie?

Nur weil man dort mit ein paar Objekten hantiert, ist es noch keine
objektorientierte Sprache, von Grundzügenvermittlung selbiger ganz zu
schweigen!
Die Scriptsprache gibt dir Grundlagen in der allg. Programmierung, das ist schon richtig! Grundlagen, die es dir später erleichtern in die Grundzüge der objektorientierten Programmierung einzusteigen.

Selbst C++ setzt nicht die Grundsätze der objektorientierten Programmierung vollständig um, das machen bislang nur sehr wenige Sprache wie Smalltalk oder Eiffel!

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „Ahja, wo hast denn das her? Das mit den Grundsätzen der objektorientierten...“
Optionen

Alles klar!
Smalltalk! Bist du Grafiker?!?!??!?
Also einer von denjenigen die Smalltalk am Mac verwenden!?!?
Salltalk Quelltext (so oder so ähnlich):

"Todays a nice day
open a window for me
lets talk
have a nice day"

haha!
Also ich bin Programmierer und kein Chatter!!!
Was bist du denn?!?!?!?!?

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „Alles klar! Smalltalk! Bist du Grafiker?!?!??!? Also einer von denjenigen die...“
Optionen

Aber hast als Programmierer noch nie was von der objektorientierten Sprache Smaltalk gehört, was?
Das intern. tätige Softwarehaus HLS Laffrenzen Software (www.hls.de) z.B. hat seit 5 Jahren weltweit eine objektorientierte Anwendung im B2B-Bereich und Warenwirtschaftssysteme am Markt, welche ausschließlich in Smaltalk entwickelt wurden!

Smaltalk ist breits seit Jahren auf mehrere Plattformen portiert worden, aber wahrscheinlich bist auch so ein "VB Entwickler (sehr große Projekte)" wie der andere hier im Board, die nicht über ihren M$ Tellerrand hinweg geschaut haben!

bei Antwort benachrichtigen
Anonym (Anonym) „Aber hast als Programmierer noch nie was von der objektorientierten Sprache...“
Optionen

Naja, auch die MS Entwickler werden demnächst in den Genuß von Smaltalk kommen können, bzw. in die MS Adaption von VisualSmaltalk für .NET!

Mir perönlich gefällt aber die jetzige Smaltalk(ObjectWorks) Entwicklungsumgebung für Windows besser, wer weiß was Microsoft wieder daraus macht, so wie bei deren Javaumsetzung (J++)!!!

bei Antwort benachrichtigen
KKND2 Pomm „Computer - ein unbekanntes Wesen ???“
Optionen

und JAVA2
ASM
ASM rulezzz

bei Antwort benachrichtigen
(Anonym) Pomm „Computer - ein unbekanntes Wesen ???“
Optionen

Also Pomm,

vergiss das alles hier, höhr nicht auf die! Lass dich nicht verwirren!
Alles was du geschreiben hast ist im ungefähren richtig!

Jede Sprache hat seine Vor- und Nachteile!
Java zum Beispiel ist fast überall einzetzbar, egal ob Rechner oder Kaffeemaschine! Leider ist Java aufgrund von Sicherheitsmechanismen und der eigenen Speicherverwaltung extrem langsam (bestes Beispiel: Netscape 6)! C++ ist hingegen sehr viel schneller! Das liegt unter anderem daran, dass der Programmierer den Speicher selbst verwalten kann. C++ wird fast überall verwendet, egal ob 3D, Textverabeitungsoftware oder das neueste Game!
JavaScript hingegen zählt zu keiner Programmiersprache. JavaScript
ist eine eben eine Script-Sprache! Es ist eben Text der Zeile für Zeile gelesen wird! Tritt während des Lesevorgangs ein Fehler auf wird die Interpretation abgebrochen! JavaScript wird somit nicht kompiliert, wobei man allerdings doch sagen kann, dass es eben genau deswegen in Echtzeit kompiliert wird und darum auch nicht gerade schnell ist!
Dann noch zu Assembler! Diese ist wohl die Hardcore Sprache unter allen Sprachen! Man kann hier förmlich dem Bit sagen wie lange es wo wartet um dann folgenden Weg zu gehen.
Ein extremer Geschwindigkeitsvorteil gegenüber allen anderen Sprachen! Aber nur im Programm!!! Die Erstellung eines Programmes in Assembler Code ist so komplex und zeitaufwendig dass es sich für ein einzelnes Programm kaum lohnt! Nur bei der Programmierung von Hardware, Betriebssystemen oder Treibern lohnt dieser Code!
Besser ist es ein Programm z.B in C++ zu schreiben dann zu Kompilieren und dann mittels Assembler noch einiges zu verbesser!

Bleib ruhig bei JavaScript! Nur das Ziel ist wichtig, nicht der Weg es zu erreichen!!!
Solange du den Willen hast dein Ziel zu erreichen, wirst du auch immer einen Weg finden!
Nachdem du dann JavaScript ein wenig kannst, gehe zu Java, dann zu C++ und dann vielleich zu Assembler...

Wow hab ich viel geschrieben!
Also,
adios!

bei Antwort benachrichtigen