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...
Basic ist keine normierte oder standardisierte Sprache. Bei C siehe Andi-C sowie Posix.
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.
"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.
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]
...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.
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
@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 ;)
perl rockt. Ich habe bisher noch nix gesehen, womit man sonst so vielseitig und flink hunderte MB große Textdaten effizient verwursten kann.
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.
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???
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.
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.
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
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
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 ....
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.
>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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.