Ergebnis 1 bis 20 von 385

Thema: IM IN YR LOOP\n VISIBLE FOO\n IM OUTTA YR LOOP - Der Programmierer-Spamthread #2

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ich bin mal so frei und nutze diesen Thread um meinen momentanen Ärger etwas Luft zu machen.

    Ich sitze gerade an den Vorbereitungen für meine Bachelor-Arbeit, in der ich einen Orc Interpreter in Prolog schreiben muss.
    Um mir die Arbeit des Parsings zu ersparen will ich den offiziellen Orc-Parser nutzen (in Java geschrieben, unter BSD-Lizenz verfügbar) und mit dem AST dieses Parsers weiterarbeiten.

    Augenscheinlich schien bei der Entwicklung von Orc aber niemand daran gedacht zu haben, dass ein Aussenstehender jemals auf die Idee kommen könnte mit dem AST zu arbeiten.
    Das fängt damit an, das es keine wirkliche Dokumentation gibt. Es gibt zwar eine Dokumentation per Javadoc, aber geschätzte 90-95% aller Klassen sind unkommentiert.
    Der Versuch über die Namen der Klassen und Felder ein wenig die Bedeutung zu erfahren klappt an manchen Stellen ganz gut (Left, Right, body etc..) an anderen Stellen dafür weniger.
    Was eine ConsExpr ist kann ich noch erahnen (Constant Expression?) was sich hinter den Kinderknoten "t" und "h" verrbirgt ist mir dagegen schleierhaft.

    Bleibt mir nur, simple Testprogramme zu parsen und mir den resultierenden AST anzugucken. Glücklicherweise bietet der Orc-Quellcode direkt eine Funktion um den AST als XML-Datei abzulegen. Aber wirklich verständlich wird es dadurch auch nicht...
    Folgendes Orc-Programm
    Code:
    2 + 5
    Erzeugt einen AST, dessen XML-Datei zuviele Zeichen enthält, als das ich ihn hier posten könnte. Ungeachtet des Overheads der durch XML dazu kommt...
    381.808 Zeichen in 1114 Zeilen sind ein wenig viel um den AST zu verstehen...

    Ich glaub, bevor ich den AST verstehe krieg ich davon Alpträume.. Irgendwie hätte ich von Code, der immerhin an einer Universität entwickelt wird, ein wenig mehr Dokumentation erwartet...

  2. #2
    Code (C++):
     
    for (unsigned int i = foo.Length()-1; i >= 0; --i) //...
     


    Wer findet den Bug? (Wahrscheinlich alle, ich bin nur etwas verblüfft sowas subtiles zu sehen.)

  3. #3
    Im Falle von foo.Length() == 0 wird die Schleife 2³²-, bzw. 2⁶⁴mal zu oft durchlaufen?

  4. #4
    Ne, die Schleife wird nie beendet.

  5. #5
    Ah, ja, jetzt seh ichs. Ein >= 0 auf einem unsigned int... Wahnsinn.

  6. #6
    Zitat Zitat von Kyuu Beitrag anzeigen
    Ne, die Schleife wird nie beendet.
    Weil sobald i 0 ist, es um eins reduziert wird, dadurch dann sofort den größtmöglichen Wert annimmt?

  7. #7

  8. #8
    Spaß mit verschachtelten Templates!

    Code (C++):
    std::map<size_t, std::map<std::string, std::pair<PropertyType, ParameterDefinitionList> > > m_mActions;

    führt zu
    Code:
    1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocnum(135) : warning C4503: 'std::_Tree<_Traits>::_Buynode': Die Länge des ergänzten Namens wurde überschritten. Der Name wurde gekürzt.
    1>        with
    1>        [
    1>            _Traits=std::_Tmap_traits<size_t,std::map<std::string,std::pair<DeviceManager::PropertyType,DeviceManager::ParameterDefinitionList>>,std::less<size_t>,std::allocator<std::pair<const size_t,std::map<std::string,std::pair<DeviceManager::PropertyType,DeviceManager::ParameterDefinitionList>>>>,false>
    1>        ]
    Mit komplett aufgelösten typedefs wäre es übrigens:
    Code (C++):
    std::map<size_t, std::map<std::string, std::pair<enum PropertyType, std::map<std::string, enum PropertyType> > > > m_mActions;


    Ich könnte die Warnung umgehen, indem ich noch mehr Typedefs verwend, aber dazu bin ich ehrlich gesagt zu faul.

  9. #9

  10. #10
    Hat jemand zufällig eine Google+ oder wie das heißt einladung? Würde das gerne mal ausprobieren.

  11. #11
    Zitat Zitat von Freierfall Beitrag anzeigen
    Hat jemand zufällig eine Google+ oder wie das heißt einladung? Würde das gerne mal ausprobieren.
    Bin in der Beta. Einladungen gibt es allerdings derweil keine mehr.

  12. #12
    Hab ich mal erwähnt, dass der Qt Creator als IDE wahnsinnig unhandlich ist? Deren Debuggerfrontend ist scheiße und gelegentlich verschwindet der Cursor einfach so. Dummerweise wird für ein Praktukum erwartet, dass wir damit arbeiten.

  13. #13
    Zitat Zitat von DFYX Beitrag anzeigen
    Hab ich mal erwähnt, dass der Qt Creator als IDE wahnsinnig unhandlich ist? Deren Debuggerfrontend ist scheiße und gelegentlich verschwindet der Cursor einfach so. Dummerweise wird für ein Praktukum erwartet, dass wir damit arbeiten.
    Das ist doch noch gar nichts! Wir mussten in "Logikorientierte Programmierung" Emacs verwenden, das ganze Semester über. Das sind Schmerzen!
    Aber an schlechten IDEs herrscht leider echt kein Mangel. :-/

  14. #14
    Travelling salesman ... damit wurde ich bei dem Schunk Graphentheorie (allerdings nicht in der Theorie-Verlesung, sondern bei der Methodisch-Praktischen Vorlesung) auch nicht mit verschont. Ich kann mich immer noch dran erinnern, dass ich einen Djikstra-Algorithmus und einen Ford-Fulkerson-Algorithmus implementieren musste.

  15. #15
    Zitat Zitat von nudelsalat Beitrag anzeigen
    Quantum bogosort! \o/
    Zitat Zitat
    Wikipedia: An in-joke among some computer scientists is that quantum computing could be used to effectively implement a bogosort with a time complexity of O(n). It uses true quantum randomness to randomly permute the list. The list is then inspected, and if it is not in order, the universe is destroyed.


    Aber Sleepsort ist auch Spitze! Kannte ich allerdings schon …

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •