Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

 

Hallo zusammen,

ich hätte eine Frage zur Standardisierung von Pseudocode und würde gerne eure Meinungen dazu hören.

Mir ist bewusst, dass Pseudocode nicht kompilierbar sein soll. Aber kann jeder den Stil nach eigenen Vorstellungen anpassen oder gibt es gewisse Konventionen / Standards an die man sich halten soll?

Ein konkretes Beispiel: Der Zuweisungsoperator „:=“. Könnte man stattdessen auch einfach „=“ verwenden? Oder wäre es sogar denkbar sich an die Syntax von C# anzulehnen – solange es eben klar ist, dass man das Prinzip verstanden hat?

Wie seht ihr das? Gibt es etablierte Standards, an die man sich besser halten sollte?

Würde mich über eure Einschätzungen freuen

Merci

 

Geschrieben
vor 10 Stunden schrieb Brapchu:

Der Zuweisungsoperator ":=" ist btw Pascal Style.

"=" wäre C oder Python Style.

Wobei man sagen muss, dass Pascal (und auch einige andere Sprachen) es richtig machen. Das :=-Symbol ist das mathematische Symbol für eine Definition. Pascal benutzt dann das =-Symbol als Vergleichsoperator, was auch das korrekte Symbol für Vergleiche in der Mathematik wäre.

Da man in C nun das =-Symbol für eine Zuweisung (bzw. einer Definition) verwendet, musste man dann ein neues Symbol für Vergleiche erfinden. Nämlich ==.

Das ist aber nicht das einzige Problem mit dem =-Symbol in C. Es hat auch für viele Bugs gesorgt, da ein vergessenes Gleichheitszeichen, wie

if(i = 1) { ... }

valider Code ist und dazu führte, dass man freiwillig Code-Richtlinien einführte, um sowas zu verhindern. Man schrieb dann die Konstante auf die linke Seite, da man einer Konstante nichts zuweisen kann. Also

if(1 == i) { ... } 

 

Und Back to Topic: Ja, du kannst auch = anstatt := schreiben und dir da selber ein bisschen was ausdenken, solange es klar und verständlich bleibt, was du da vorhast und nicht zu exotisch wird. Ich persönlich würde aber entweder bei Pascal- oder C-Syntax bleiben. Wenn ich mich so recht erinnere, hat man auch bei den Programmieraufgaben in der Prüfung nie Objektorientierung gebraucht, sodass man auch auf die Punkt-Notation auch verzichten konnte.

 

 

Geschrieben
vor 3 Stunden schrieb Whiz-zarD:

 

Back to Topic: Ja, du kannst [...] dir da selber ein bisschen was ausdenken, solange es klar und verständlich bleibt

Ich denke, damit ist das wesentliche gesagt. Jeder sollte die Logik hinter Deinem Pseudocode erkennen bzw. herauslesen können, ohne dass Du dich genau an die Konventionen irgendeiner Sprache hältst.

Geschrieben

Dem bereits gesagten stimme ich vollkommen zu. Ich habe von Prüfern gehört dass es trotzdem gerne gesehen ist eine Programmiersprache zu verwenden weil die Prüfer dann nicht großartig probieren müssen nachzuvollziehen wie dein pseudo-code funktioniert, sondern sich an der Programmiersprache orientieren können.

Geschrieben (bearbeitet)
Zitat

So wie ich das sehe, hat Pseudocode den Vorteil, dass man das keine syntaktischen Fehler einbauen kann. Logikfehler fallen allerdings auch ohne Programmiersprache auf.

Jein, wenn es nicht viel Code ist wahrscheinlich. Arbeitet man  jedoch mit mehr code muss dann natürlich eine Konstante Syntax verwenden.

Bearbeitet von IAMS533
Geschrieben (bearbeitet)

Pseudocode sollte den Vorteil haben, keine Programmiersprache können zu müssen und trotzdem einen Code zu verstehen, was dieser "so macht".

Wenn ich einen Pseudocode auf die PPT Pinsel dann weiß der JAVA Entwickler ganz genau wie er den in JAVA abbildet und der PHP weiß ganz genau, wie er diesen eben in PHP abbildet.

So zumindest war die Idee. Im Endeffekt findest du im Netz Pseudocodes die eher C Lastig sein, Java lastig sind or whatever. Jeder verfällt i.wie in eine Programmiersprache leicht zurück. Aber trotzdem sollte das auch ungefähr ein nicht Programmierer verstehen können oder mit Basic Kenntnissen.

Im englischen sagt man - put it simply


 

Bearbeitet von eulersche_Zahl
Geschrieben (bearbeitet)
vor 21 Stunden schrieb ChiefMav:

Mir ist bewusst, dass Pseudocode nicht kompilierbar sein soll. Aber kann jeder den Stil nach eigenen Vorstellungen anpassen oder gibt es gewisse Konventionen / Standards an die man sich halten soll?

Vlt. noch um konkreter auf deine Frage einzugehen, weil ich mich damit auch teilweise beschäftigt habe.

Einen "wirklichen" Standard gibt es nicht. Es gibt Empfehlungen, die allerdings von Uni zu Uni abweichen können und selbst sogar Länderspezifisch sind.

z.B. findet man so etwas hier https://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html

Das wäre so der "Standard" den man ohne Probleme für das wissenschaftliche Arbeiten verwenden könnte. Allerdings habe ich mehr Abweichungen davon gesehen als diesen "Standard" :D

Wenn du in der Prüfung einen Pseudocode basteln musst, dann würde ich persönlich den "gnadenlos" in der Programmiersprache schreiben, die ich kann. Egal ob das Java ist or whatever. Der Code wird runtergeschrieben und die Prüfer sind damit schon zufrieden. War zumindest bei mir damals so.

Bearbeitet von eulersche_Zahl
Geschrieben

Im Gegensatz zu einem Struktogramm bspw. ist Pseudocode nicht normiert und daher kann man den schreiben wie man möchte. Der Sinn davon ist manchmal schwierig nachzuvollziehen, falls man danach in Python programmiert und beides durchaus äußerst ähnlich sehen kann.

Meiner Meinung nach werden die Stärken von Pseudocode dann ersichtlich, wenn in einer Sprache (danach) programmiert wird, die wesentlich mehr Codezeilen erfordert als sich die Logik erstmal in Pseudocode aufzuschreiben. 

Bei sehr kompakten und sehr einfach zu lesenden Sprachen wie Python kann man sich durchaus drüber streiten, ob und wann das Sinn macht. 

Geschrieben (bearbeitet)

Ich verfolge die Diskussion auch schon eine Weile. Bei meinen Recherchen bin ich auf Hinweis aus einer Online Bibliothek gestoßen.

Quelle:

https://onlinelibrary.wiley.com/doi/pdf/10.1002/0470029757.app1

Das es keinen Standard gibt, wurde ja bereits gesagt, aber es wurde noch nicht viel über Konventionen und Gründe dazu gesagt.

In dem Anhang zu dem Buch 

Algorithms and Networking for Computer Games 2006 John Wiley & Sons, Ltd ISBN: 0-470-01812-7Jouni Smed and Harri Hakonen

heißt es:

//Zitat Anfang:

Wir beschreiben die Algorithmen in einem Pseudocodeformat, das in den meisten Teilen den von Cormen et al. (2001) festgelegten Richtlinien genau folgt. Die Konventionen basieren auf gängigen Datenabstraktionen (z. B. Mengen, Sequenzen und Graphen) und die Kontrollstrukturen ähneln der Programmiersprache Pascal (Jensen et al. 1985). Da es unser Ziel ist, die algorithmischen Ideen hinter den Implementierungen zu enthüllen, präsentieren wir die Algorithmen in Pseudocode statt in einer bestehenden Programmiersprache. Diese Wahl wird durch die folgenden Gründe gestützt:

Obwohl gängige Programmiersprachen (z. B. C, C++, Java und Skriptsprachen) ähnliche Kontrollstrukturen aufweisen, unterscheiden sich ihre elementaren Datenstrukturen sowohl auf Schnittstellenebene als auch in der Sprachphilosophie erheblich. Wenn beispielsweise ein Algorithmus
eine Datenstruktur aus STL von C++ verwendet, hat ein Java-Programmierer drei Alternativen:
den Code so umformulieren, dass er Javas Sammlungsbibliothek verwendet,
eine maßgeschneiderte Datenstruktur schreiben,
die den Algorithmus bedient, oder eine geeignete Drittanbieterbibliothek kaufen. Abgesehen von der letzten Option
ist Programmieraufwand unvermeidlich, und indem wir eine allgemeine algorithmische Beschreibung
geben, schränken wir die Auswahlmöglichkeiten bei der Implementierung nicht ein.

// Zitat Ende:

Und ich glaube, das ist der Punkt, den wir aus Sicht von Pseudocode als allgemeines Werkzeug auch heute noch sehen können.

Natürlich gibt es vielfältige Möglichkeiten Algorithmen zu visualisieren. Eine gute Webseite dazu ist z.B.

https://algorithm-visualizer.org

Aber hier haben wir ja genau das Problem der Bindung an eine konkrete Sprache samt Laufzeitumgebung und genau das will man ja nicht haben, wenn man allgemein versucht, erst mal ein Problem aufzuschreiben.

Und diese Lücke ist es genau, die durch Pseudocode geschlossen wird, ansonsten könnte man ja direkt zu Pascal oder Python Pseudocode greifen.

Mittlerweile scheint es auch schon Lösungen zur Erzeugung von Pseudocode aus Quelltext über AI gestützte Anwendungen zu geben. Das zeigt, dass es ein Interesse an allgemein lesbare Lösungen gibt.

https://www.yeschat.ai/gpts-9t557p2vBaR-Pseudo-Coder

Wer Pseudocode in seiner Projektarbeit zeigen möchte - es gibt da wohl eine LaTex Lösung zu.

https://de.overleaf.com/learn/latex/Algorithms

Bearbeitet von tkreutz2
Ergänzung

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...