Forum: PC-Programmierung Basic und C - Vergleichstabelle gesucht


von Jan (Gast)


Lesenswert?

Hallo,

gibt es irgendwo im Netz eine Tabelle, auf der die gängigsten 
Basic-Befehle dem entsprechenden C-Befehl gegenübergestellt sind?

Wo man sozusagen alles auf einen Blick hat, so weit das im direkten 
Vergleich möglich ist...

von tom m. (Gast)


Lesenswert?

Basic ist keine normierte oder standardisierte Sprache. Bei C siehe 
Andi-C sowie Posix.

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:

> Wo man sozusagen alles auf einen Blick hat, so weit das im direkten
> Vergleich möglich ist...

Das ist so nicht ohne weiteres möglich.
Es gibt zwar Entsprechungen, aber jeder der eine Programmiersprache 
beherrscht findet die in kurzer Zeit auch selber raus, weil sie 
eigentlich sehr naheliegend sind.

Wichtiger ist ja bei einer Portierung eines Programms von Sprache A nach 
Sprache B, dass ein Programmierer aus dem Programm die zugrundeliegende 
Idee herauslesen kann und diese in Sprache B formulieren kann, sofern 
das übrhaupt möglich ist. Dazu muss man aber sowohl A als auch B 
beherrschen.

Die Idee: Och, da nehm ich mir eine Übersetzungstabelle und ersetzt 
einfach Schlüsselwort für Schlüsselwort, führt eigentlich in den meisten 
Fällen zu den gleichen Problemen, die auch Dolmetscher habe: Nur mit 
einem Wörterbuch bewaffnet kriegt man zwar eine Übersetzung hin, die man 
eventuell noch versteht, die aber alles andere als optimal ist.

von tom m. (Gast)


Lesenswert?

Ansi-C sollte das sein sorry

von faustian (Gast)


Lesenswert?

"eventuell noch versteht, die aber alles andere als optimal ist."

Mein Luftkissenboot ist voller Aale!

Die Sache ist eben dass ein BASIC viele Sachen als Befehle integriert 
die auf einem C-System in der Library und nicht im Sprachkern sind. zB 
hast Du in einem 8051er Basic ein eingebautes "PRINT", im 8051er C (das 
idR schon einen erweiterten Sprachkern hat wg extra storage classes) 
hingegen alles was Du brauchst (sfr-Zuweisungen, Kontrollstrukturen, und 
wenns ganz hart kommt noch _asm) um dir deine IO selber zu stricken - 
oder Du nimmst eben die mitgelieferte Standardbibliothek.

Entschuldigt das uC-lastige Beispiel im PC-Forum, aber es passte gerade 
;)

Ceterum Censeo: BASIC mag seinen Charme haben aber die Grammatik ist 
ekelhaft kontextsensitiv.

von Tom M. (Gast)


Lesenswert?

faustian schrieb:
> Ceterum Censeo: BASIC mag seinen Charme haben aber die Grammatik ist
> ekelhaft kontextsensitiv.

[OT]
Quatsch, BASIC ist harmlos. Warte erstmal, bis du es mit Perl zu tun 
bekommnst... ;-)
[/OT]

von Jan (Gast)


Lesenswert?

...ok, dann mal konkret.

Qbasic kennt Schleifen, C kennt Schleifen, kann man also tabellarisch 
vergleichen.

Qbasic kennt Variablen, C kennt Variablen, kann man also tabellarisch 
vergleichen.

Qbasic kennt If-Then-Anweisungen, C kennt If-Then-Anweisungen, kann man 
also tabellarisch vergleichen.

...

Mit geht es im Grunde darum, dass C-Anfänger, die Basic-erfahren sind, 
die Umsetzung für C auf einen Blick ablesen können (bei den 
Dingen/Befehlen, die vergleichbar sind).

Sowas in der Art.

von Thomas B. (escamoteur)


Lesenswert?

Ganz einfach: Beide Sprachen sind Turing-mächtig, das heßt schon mal 
dass Du jedes Programm in beiden Sprachen realisieren kannst.

Am besten mal einen C kurzübersicht im Netz suchen, die alle 
Sprachelemente enthält.

C für sich enthält eigentlich nur Konstrukte zur Ablaufsteuerung des 
Programms, f.h. Schleifen, Verzweigungen, Variablen, Konstanten, Typen.

Darüberhinaus gibt es aber im C Standard definierte Standard libraryies, 
die dann die Funktionen für IO, Mathematik und viels mehr enthalten, was 
bei BASIC schon zum direkten Sprachumfang gehöhrt.

Ich denke eine Tabelle die Basic programmieren am besten helfen würde 
wäre eine mit den oben genannten Kontrollstrukturen sowie einer 
Erklärung wie man C Typen wie Array und structs und funktionen 
deklariert.
Dazu noch die eine Übersicht, welche Standardfunktionen man in welchem 
include-File findet.

Ob es so was fertig gibt, bewzeifel ich, aber sowas läßt sich eigentlich 
in nem halben Tag mit nem C-Tutorial aus dem Netz oder einem C Buch 
realisieren


Gruß
Tom

von faustian (Gast)


Lesenswert?

@Tom M das habe ich massenhaft :) Perl ist absolut logisch, wenn man 
sich die Syntax genauer anschaut - selbst das print ohne Komma macht 
Sinn wenn man es als indirekten Aufruf einer Methode des Filehandles 
begreift ;)

von Vlad T. (vlad_tepesch)


Lesenswert?

perl rockt.
Ich habe bisher noch nix gesehen, womit man sonst so vielseitig und 
flink hunderte MB große Textdaten effizient verwursten kann.

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> ...ok, dann mal konkret.
>
> Qbasic kennt Schleifen, C kennt Schleifen, kann man also tabellarisch
> vergleichen.
>
> Qbasic kennt Variablen, C kennt Variablen, kann man also tabellarisch
> vergleichen.
>
> Qbasic kennt If-Then-Anweisungen, C kennt If-Then-Anweisungen, kann man
> also tabellarisch vergleichen.


Sorry.
Aber wer diese Dinge nicht umsetzen kann, sollte besser die Finger von 
der Portierung eines Programms lassen.

Und das meine ich nicht böse oder scherzhaft. Das ist mein voller Ernst.

Und nein: Diese 3 Dinge mögen für dich momentan als wichtig erscheinen, 
machen aber bei einer Portierung noch nicht einmal 10% der Arbeit aus. 
D.h. wenn ich dir sage, dass eine QBASIC

   FOR I = 0 TO 10 STEP 1

     ...

   NEXT I

in C als

   for( i = 0; i < 11; ++i ) {
     ...
   }

geschrieben wird, dann hast du damit so gut wie nichts erreicht. 
Schlimmer noch, wenn du dafür ein Nachschlagewerk brauchst, dann 
solltest du den Job der Portierung abgeben. Die restlichen Dinge in 
deiner Liste sind von ähnlichem Kaliber.

Eine derartige 'Umsetztabelle' würde mehr schaden als sie Gutes tun 
würde, weil sie sugeriert, dass man sich nur an dieses simple Kochrezept 
halten muss um eine Programmportierung durchzuführen. Nichts könnte 
falscher sein (wie zb die Autoren der 'Numerical Receipes' schmerzlich 
in ihrer ersten C-Ausgabe lernen mussten)

Du kannst es drehen und wenden wie du willst:
Voraussetzung dafür, dass Jemand eine Portierung von der Sprache A nach 
Sprache B machen kann, ist das er beide Sprachen einigermassen 
beherrscht. Dann braucht er aber deine Tabelle nicht mehr.
Und: Die Probleme bei einer Portierung entstehen nicht in erster Linie 
dadurch, dass man für das Sprachkonstrukt XYZ aus A das gleichwertige 
Sprachkonstrukt GHIJ in B finden muss. Diese Denkweise ist zu naiv und 
trifft den Kern des Problems nicht.

von Jan (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Sorry.
> Aber wer diese Dinge nicht umsetzen kann, sollte besser die Finger von
> der Portierung eines Programms lassen.
>
> Und das meine ich nicht böse oder scherzhaft. Das ist mein voller Ernst.

hat hier irgendjemand von programmportierung gesprochen???

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Karl heinz Buchegger schrieb:
>> Sorry.
>> Aber wer diese Dinge nicht umsetzen kann, sollte besser die Finger von
>> der Portierung eines Programms lassen.
>>
>> Und das meine ich nicht böse oder scherzhaft. Das ist mein voller Ernst.
>
> hat hier irgendjemand von programmportierung gesprochen???

Du redest dich jetzt in einen Schlamassel hinein.

Wenn du C lernen willst, dann hör auf dir eine Umsetztabelle zurecht zu 
legen sondern lies ein C-Buch.
Denn zum lernen einer Programmiersprache ist so eine Tabelle noch 
kontraproduktiver als für einen Programmport.

von Vlad T. (vlad_tepesch)


Lesenswert?

naja eine kurze vergleichende Tabelle, welches Sprachelement so ca auf 
welches mappt ist für Umsteiger sicher hilfreich.

wenn man zB C kann und soll Pascal programmieren ist es schon hilfreich, 
wenn man weiß, dass eine Zuweisung so aussieht := oder man 
Anweisungsblöcke mit Begin End bildet.

Das kann, wenn man mit den zugrundeliegendem Programmierparadigma 
vertraut ist, sicher genauso helfen, wie ein Buch/Referenz (die man 
natürlich trotzdem braucht), nur dass man so das Gröbste schon mal auf 
einen Blick hat.

von g457 (Gast)


Lesenswert?

Ich werf mal [1] ins Feld. Wer "Basic" ∗kann∗ [0], der kann sich damit 
problemlos die Syntax von C aneignen. Wenn man dann noch [2] dazunimmt, 
dann hat man damit das nötige Handwerkszeug, um drauflos zu 
programmieren. Das ergibt zwar wahrschei^Wsicher noch keinen guten(tm) 
Code, aber es sollte für den Einstieg reichen. Und genau sowas sucht der 
TO so wie ich das verstanden hab.

HF

[0] Damit meine ich ausdrüklich nicht das durchschnittliche 
Scriptkiddie, das überglücklich ist wenn es den 'Run'-Button gefunden 
hat. Die Betonung liegt auf "kann".
[1] http://en.wikipedia.org/wiki/C_syntax
[2] http://en.wikipedia.org/wiki/ISO_C_standard_library

von Andreas F. (aferber)


Lesenswert?

Vlad Tepesch schrieb:
> wenn man zB C kann und soll Pascal programmieren ist es schon hilfreich,
> wenn man weiß, dass eine Zuweisung so aussieht := oder man
> Anweisungsblöcke mit Begin End bildet.

Und in der Tabelle stehen dann auch solche zu beachtenden Feinheiten 
drin wie dass das Semikolon in C ein Statement beendet, während es in 
Pascal zwei Statements trennt, weshalb in C ein Semikolon auch nach 
dem letzten (oder einzigen) Statement eines Blocks nötig ist, während es 
in Pascal an dieser Stelle im besten Fall überflüssig ist und in manchen 
Fällen zu einem Syntaxfehler führt?

Selbst auf den ersten Blick sich eins-zu-eins entsprechende Konstrukte 
in verschiedenen Sprachen sind in den Details oft eben doch nicht 
identisch, und deshalb ist es gefährlich, selbiges durch eine 
Übersetzungstabelle zu suggerieren.

Andreas

von Karl H. (kbuchegg)


Lesenswert?

Vlad Tepesch schrieb:

> wenn man zB C kann und soll Pascal programmieren ist es schon hilfreich,
> wenn man weiß, dass eine Zuweisung so aussieht := oder man
> Anweisungsblöcke mit Begin End bildet.

Sorry, aber das kann ich nicht nachvollziehen.
Wenn jemand in Pascal programmierern soll, dann wird er nicht umhin 
kommen, zunächst mal ein paar Stunden mit Pascal Grundlagen zu 
verbringen. Wenn er in den ersten 20 Minuten dabei nicht rauskriegt, 
dass eine Zuweisung in Pascal mittels := geschrieben wird, bzw. das 
Blöcke mittels begin / end gebildet werden, dann ist ihm nicht zu helfen 
und er sollte isch besser fragen, ob er tatsächlich C programmieren 
kann, oder ob er nur denkt, das das so ist.

Aus dieser Tabelle würde aber zb die abweichende Bedeutung des 
Pascal-schen ; nicht hervorgehen, sodass er mit einer naiven C->Pascal 
Umsetzung mächtig Schiffbruch erleiden würde. Etwas was nicht passieren 
würde, wenn er sich zunächst die Zeit nimmt und ein wenig mit Pascal 
spielt. Seine C Erfahrung wird ihm beim Durcharbeiten eines 
Pascal-Buches zu Hilfe kommen und vieles wird ihm bekannt vorkommen. 
Einiges wird aber anweichend von C sein, und genau das sind dann die 
Dinge, auf die er sich beim Durcharbeiten konzentrieren kann: Die 
bekannten Dinge werden eher überflogen, auf Ausnahmen und Abweichungen 
abgeklopft. Zur Sicherheit macht man noch die Übungsbeispiele am Ende 
jedes Kapitels (die ja dann eigentlich kein Problem darstellen dürften) 
um sicher zu gehen, dass man im überflogenen Text nichts übersehen hat 
und nach ein paar Tagen hat man sich den Grundstock einverleibt um damit 
sein eigentliches Projekt starten zu können. Zu diesem Zeitpunkt ist 
aber eine derartige Umsetztabelle schon längst obsolet und höchstens 
einem Notizzettel mit wichtigen, kleinen Feinheiten gewichen.

Pascal und C kommen beides aus dem Algol-Eck. Ihre Unterschiede sind 
mehr von der Sorte der feinen Klinge. Wenn man weiß das ein C { } sich 
in Pascal begin/end schreibt, kann man deswegen noch lange nicht Pascal 
programmieren. Und die restlichen Dinge, ach komm, dass ein if in Pascal 
einem if in C entspricht, das ist nun wirklich nicht Raketentechnik, das 
kann ich erraten, wenn ich mir als C Kenner ein Pascal Programm ansehe. 
Da muss man wirklich nicht 5 Semester studieren. Bei diesem speziellen 
Sprach-Beispiel sind es die Feinheiten die den Unterschied ausmachen.
Das muss aber nicht so sein! Auch in Forth gibt es das Schlüselwort IF. 
Und trotzdem ist der Umstieg nach Forth wesentlich krasser, weil dort 
eine völlig andere Denkweise notwendig ist.

BASCIC und C sind (je nach BASIC) nicht so unähnlich, aber doch ganz 
anders. Beiden gemeinsam sind gewisse Kontrollstrukturen die sogar 
ähnlich heißen, sich aber in den syntaktischen (und manchmal auch 
semantischen Details) Details unterscheiden, aber die Art und Weise 
(besonders in altem, zeilenbasiertem BASCI) wie programmiert wird, ist 
dann doch ganz anders.
Wer allerdings eine Tabelle braucht um ein BASIC IF

10  IF A = 5 THEN B = 8

durch das C Äquivalent

   if( a == 5 )
     b = 8;

ersetzen zu können, der macht in meinen Augen etwas grundsätzlich 
falsch.

Ich hab ja ursprünglich zu Jans Gunsten angenommen, dass er einen 
Programmport machen will. Es gibt Übersetzer, die von einer Hochsprache 
in eine andere Hochsprache übersetzen, aber auch da ist die Ansicht "da 
nehmen wir eine Tabelle" einfach zu naiv gestrickt.
Ganz schlimm wird es allerdings, wenn es gar nicht um das Portieren 
geht, sondern um das Erlernen einer Sprache. Da kommt man mit so einer 
Tabelle nicht weit. Ich denke zb an die typischen C-Anfängerfallen, dass 
in C Arrays beginnend bei 0 indiziert werden und die daraus folgenden 
typischen Konstrukte. Meines Wissens beginnt BASIC aber bei 1 (oder 
zumindest ist das konfugrierbar), womit dort typische 
Array-Funktionalitäten im Detail ganz anders aussehen. Oder 
String-Verarbeitung, oder ....

von S. B. (Gast)


Lesenswert?

Die Frage von Jan ist doch berechtigt - gerade wenn man in verschiedenen 
Programmiersprachen programmieren muß bzw. möchte, schleichen sich sehr 
schnell syntaktische Fehler ein.
Mittels Tabelle kann man das vorab vermeiden.

Hier mal was von Microsoft, die dieses Problem im Gegensatz zu anderen 
erkannt haben:
http://msdn.microsoft.com/de-de/library/zwkz3536.aspx

C, Pacal, andere Basic-Varianten kann man sich ja anhand dieser Vorgabe 
selbst erstellen.

von Paul Baumann (Gast)


Lesenswert?

>Pascal und C kommen beides aus dem Algol-Eck.

Pascal kommt aus der Algol-Ecke. Das weiß ich, weil ich zunächst mit
Algol programmiert habe. (KRS4201)

C ist in meinen Augen ein kryptisches Gewürge mit etlichen 
Stolperfallen.
Portabel ist es auch nicht richtig, weil sich zum Beispiel Quelltexte
mit der nächstfolgenden Kompilerversion nicht ohne Fehler übersetzen
lassen.

Hier hat Einer Vergleiche zwischen C und Pascal angestellt.
Dessen Schlußfolgerungen teile ich.
http://www.bernd-leitenberger.de/pascal-und-c.shtml

MfG Paul

von Karl H. (kbuchegg)


Lesenswert?

So sehr ich Bern Leitenberger für seine Kentnisse in der Raumfahrt 
schätze, seine Programmiersprachenanalyse halt ich nicht für sehr 
fundiert. Sein Artikel macht kein Hehl daraus, dass er C nicht wirklich 
kann.

Zum einen vergleicht er hier Äpfel mit Birnen. Kein C-Programmierer 
würde eine toLower Funktion in C so schreiben wie er das tut. Ausserdem 
ist seine C Version fehlerhaft. Das ist genau das, was ich weiter oben 
nur schlecht ausdrücken konnte: Wenn man eine Funktion 1:1 nur duch 
anpassen von Schlüsselwörtern von einer Sprache in eine andere 
trnasferiert kommt genau so etwas raus.

Zudem, ich hab bis jetzt nur den ersten Teil seines Aufsatzes gelesen, 
stimmt seine Erzählung der geschichtlichen Vorgänge nicht wirklich damit 
überein, wie ich sie erlebt habe. Und ich bin auch ein Programmierkind 
der frühen 80-er Jahre und hab noch mit K&R C gearbeitet, genauso wie 
ich mit Pascal gearbeitet habe und genauso wie ich Herrn Wirth bei 
seinem Vortrag gelauscht habe, als er seine brandneue Maschine, die 
Lilith und das darauf laufende Modula, im großen Hörsaal vorgestellt 
hat.
Leitenberger hat sich da so manche Argumentation aus dem Nichts aus dem 
Ärmel gezogen und präsentiert sie nur ganz kurz, damit man nur ja nicht 
zu genau hinschaut.

von Vlad T. (vlad_tepesch)


Lesenswert?

Karl heinz Buchegger schrieb:
> So sehr ich Bern Leitenberger für seine Kentnisse in der Raumfahrt
> schätze, seine Programmiersprachenanalyse halt ich nicht für sehr
> fundiert. Sein Artikel macht kein Hehl daraus, dass er C nicht wirklich
> kann.
>
> Zum einen vergleicht er hier Äpfel mit Birnen. Kein C-Programmierer
> würde eine toLower Funktion in C so schreiben wie er das tut.

Da stimme ich dir zu.

Teilweise hat er aber auch nicht ganz unrecht.
Die Sprache enthält viele unlogische oder verwirrende Elemente.

Aber wer mit einem Rambomesser, anstatt einen Taschenmesser auf die Jagd 
gehen will, muss halt dafür auch etwas besser aufpassen ;)

Dabei fällt mir das wieder ein:
http://www.parallelnetz.de/CHater.html

von Karl H. (kbuchegg)


Lesenswert?

Vlad Tepesch schrieb:

> Teilweise hat er aber auch nicht ganz unrecht.
> Die Sprache enthält viele unlogische oder verwirrende Elemente.

Volle Zustimmung (übrigens ist C++ auch nicht besser)
Aber auch in Pascal ist nicht alles eitel Wonne und Sonnenschein. Auch 
wenn er es noch so gerne so verkaufen möchte :-)

Letztenendes läuft es bei solchen Sachen immer aufs Gleiche hinaus: Die 
beste Programmiersprache ist die, die man beherrscht. Und wenn sie 
Tücken und Fallen hat: für einen Kenner sind die das Salz in der Suppe 
:-)

Im Ernst. Diese Vergleiche von Sprache A mit Sprache B haben immer etwas 
von "meiner ist länger als deiner" und drum vermeide ich es im 
Normalfall da hineingezogen zu werden.
Hier in diesem Thread hab ich mich nur deswegen zu Wort gemeldet, weil 
ich den Eindruck hatte, dass Jan mit falschen Vorstellungen an die Sache 
rangeht, wenn das Ziel "Lernen von C" lautet. Mit einer derartigen 
Gegenüberstellung alleine wird das nämlich IMHO nichts. Noch nicht mal 
ansatzweise. Und wenn man dann erst mal ein paar Stunden K&R geschmökert 
hat, dann braucht man diese Gegenüberstellung nicht mehr. Wozu also so 
etwas schreiben oder gar suchen? Vergebliche Liebesmüh für nichts.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.