Πρόσκληση για συμμετοχή σε open source πρόγραμμα εκτέλεσης αλγορίθμων

Ξεκίνησε από alkisg, 02 Οκτ 2007, 12:26:44 ΠΜ

« προηγούμενο - επόμενο »

alkisg

Κάτι που λείπει από το μάθημα ΑΕΠΠ είναι ένα περιβάλλον ανάπτυξης και εκτέλεσης αλγορίθμων σε μορφή ψευδοκώδικα.

Επειδή ο ψευδοκώδικας είναι αρκετά ελεύθερος ως προς το συντακτικό, επειδή δεν έχει τύπους δεδομένων κτλ αλλά και για λόγους ευχρηστίας / μεταφερσιμότητας νομίζω ότι ένα τέτοιο εγχείρημα θα ήταν καλύτερο να γίνει σε μορφή ιστοσελίδας, με την υποστήριξη javascript και πιθανώς php.

Το interface θα είναι κάπως έτσι: http://ecco.sourceforge.net/
Το editing component που θα χρησιμοποιηθεί θα είναι το http://www.codepress.org/
Ο συντακτικός έλεγχος και η μετάφραση θα γίνεται σε javascript ή php (τον αναλαμβάνω εγώ).
Ο αλγόριθμος θα μεταφράζεται εσωτερικά σε javascript και θα εκτελείται στο πρόγραμμα περιήγησης του client με παρακολούθηση μεταβλητών και με δυνατότητα βήμα - προς - βήμα εκτέλεσης, όπως είναι στο Διερμηνευτή.
Θα υποστηρίζονται τουλάχιστον οι Firefox και IE5.5+.

Αν μαζευτούμε 5-6 άτομα μπορούμε να το έχουμε έτοιμο αρκετά σύντομα.

Επομένως, αν έχετε λίγο ελεύθερο χρόνο και γνώσεις html Ή/ΚΑΙ javascript Ή/ΚΑΙ php Ή/ΚΑΙ είστε καλοί στο design (για τα γραφικά/layout του interface), μπορείτε να δηλώσετε συμμετοχή. Δεν υπάρχει χρονικός περιορισμός, θα δουλεύουμε με ότι ρυθμό θέλουμε. Το τελικό πρόγραμμα σκέφτομαι να διατίθεται με άδεια GPL 2.0 (ίσως να το βάλουμε και στο sourceforge.net), αλλά γενικά όλα είναι υπό συζήτηση.

Επικοινωνία: Alkis τελεία Georgopoulos στο gmail τελεία com
ή απαντήστε στο παρόν θέμα.
:)

edit: Η ομάδα μέχρι στιγμής:

  • alkisg: Γενικός συντονισμός, συντακτικός έλεγχος και source to source translation.
  • charpour: Yahoo User Interface library.
  • evry: Συντακτικός έλεγχος και source to source translation.
  • gouvasg: Component συγγραφής / εκτέλεσης κώδικα.
  • nikosdimos: Interface design.
  • nikosk: Menu system.
  • pgrontas: Είσοδος / έξοδος δεδομένων.

Χρειαζόμαστε ακόμη κι άλλους javascript-άδες και designers, όσοι καλοί προσέλθετε.

pgrontas

Καλημέρα,
τελευταία φορά που προγραμμάτισα Web Based εφαρμογή (ASP, HTML, Javascript)  ήταν το 2002.
Θα με ενδιέφερε να συμμετάσχω, αλλά δεν μπορώ να πω ότι είμαι 100% γνώστης όσων αναφέρεις.
Σε περίπτωση που αυτό είναι αποδεκτό, υπολόγισε με μέσα.

Upd: To design δεν είναι το πιο δυνατό μου σημείο.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

evry


  @pgrontas  Εγώ λέω να το κάνουμε σε C#  :)

Φυσικά είμαι μέσα έστειλα και mail, και βλέπουμε
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

@evry τι να κάνουμε ο οικοδεσπότης θέλει php.

Βασικά εγώ είμαι μέσα για την ευκαιρία να ασχοληθώ λίγο σοβαρά με Javascript, η οποία νομίζω ότι είναι μια από τις πιο παρεξηγημένες γλώσσες. Πολλοί θεωρούν ότι αφορά μόνο τους web designers, αλλά έχω διαβάσει ότι μπορείς να κάνεις παπάδες. :angel:
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

nikosdimos

Καλησπέρα σας.

Να 'μαι και γώ, alkisg έκανα και εδώ ένα πόστ για να ξέρουμε ποιοί είμαστε.

Θα μπορούσα να συνεισφέρω στον τομέα του Intreface έχω μια μικρή εμπειρία σε σχεδιασμό με XHTML/CSS.

alkisg

Thank you all, νομίζω αυτό είναι η αρχή μιας ωραίας συνεργασίας. Νίκο καλωσήρθες.
Περιμένουμε τουλάχιστον έναν ακόμα, και μετά θα αρχίσουμε τον ...τμηματικό προγραμματισμό! ;)
Ελπίζω να μην βιάζεται κανείς, ο αρχικός σχεδιασμός / καταμερισμός εργασιών κτλ θα πάρει λίγο χρόνο.

Κοίταγα λίγο σήμερα τα προχωρημένα της Javascript (object prototypes, inheritance, polymorphism...) και νομίζω ότι σε πρώτη φάση μπορούν όλα να γίνουν σε Javascript, χωρίς php.
Θα δοκιμάσω να σχεδιάσω στο περίπου το πώς θα είναι ένας αλγόριθμος τη στιγμή που θα εκτελείται ώστε να δούμε καταρχάς αν γίνεται μόνο με Javascript και κατά δεύτερο πώς μπορεί να κατανεμηθεί η δουλειά.

Πάντως απ' ότι βλέπω, ο nikosdimos εννοείται αναλαμβάνει το design, ο evry κι εγώ το syntax checking / source to source translation και ο pgrontas μαζί με τους υπόλοιπους που θα έρθουν και με βοήθεια από εμένα το περιβάλλον σύνταξης (http://www.codepress.org) και εκτέλεσης (κάτι σαν το interface του Διερμηνευτή) των αλγορίθμων.

Έχουμε ακόμα θέσεις για javascriptάδες και για design/graphic-άδες, όσοι πιστοί προσέρθετε. :)

evry


   υπάρχει αντίστοιχο του codepress σε Java? το καλύτερο που έχω βρει είναι αυτό που δίνει το jedit? κάτι καλύτερο?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry


Επίσης θα ήταν πολύ δύσκολο να εμφανίζονται τα συντακτικά λάθη ενώ γράφει τον κώδικα ο μαθητής? όπως γίνεται ας πούμε στο eclipse ή στο netbeans? Βρήκα μια ευκαιρία να κάνω κάποιες ερωτήσεις που σκεφτόμουν:-)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

alkisg

Μωρέ δίκιο έχεις, η Java είναι πολύ πιο δυνατή από τη Javascript (αν και strongly typed και ίσως να μας παιδέψει περισσότερο για την ψευδογλώσσα). Αλλά έχω την εντύπωση ότι δεν την έχουν αρκετοί μαθητές και εργαστήρια εγκατεστημένη, και το να τους υποχρεώνουμε να εγκαθιστούν 10 Mb πρόγραμμα δε μου κάθεται καλά.
Δες π.χ. εδώ, δεν ξέρω πόσο αξιόπιστο είναι, αλλά αν είναι, τότε η Java πέφτει ταχύτατα σε δημοτικότητα στο web browser plugin πεδίο. Αν βγάλεις και την άχρηστη MS-JVM από τα στατιστικά, τότε 1 στους 3 μόνο την έχουν εγκατεστημένη...

Για τα συντακτικά λάθη: δε νομίζω η ταχύτητα εκτέλεσης της Javascript να το επιτρέπει. Μερικοί έλεγχοι που μπορεί να υλοποιηθούν με regex (π.χ. όσο χωρίς τέλος_επανάληψης) οκ, αλλά δεν θα πιάνονται όλα τα συντακτικά λάθη.
Αν είναι να έχεις τέτοιες απαιτήσεις πάντως δεν θα βολέψει το web-based, να κάνουμε ένα plugin για το eclipse και να τελειώνουμε! :P ;) :)

gouvasg

Γεώργιος Γκούβας
Μηχ. Η/Υ-Σ
www.gouvas.eu

alkisg

@gouvasg: καλωσόρισες Γιώργο, αναλαμβάνεις τον highlighter για το codepress! ;)
Γενικά διορίζεσαι υπεύθυνος του codepress, οπότε αργότερα στην εκτέλεση θα πρέπει να το κάνεις και readonly με μια πράσινη γραμμή να δείχνει το σημείο εκτέλεσης.
Θα σου στείλω σε mail τον highlighter ψευδοκώδικα που έχω φτιάξει σε php μήπως σε βοηθήσει.

@pgrontas: Αν μπορείς σκέψου μια λύση στο θέμα με τα δεδομένα:
Κώδικας: Ψευδογλώσσα
Αλγόριθμος Δοκιμή
//Δεδομένα: Α, Ν//

Όπου το Α χωρίς να το γνωρίζουμε συντακτικά, είναι δισδιάστατος πίνακας... Πώς θα ζητήσουμε από το χρήστη να εισάγει τα στοιχεία του Α πριν ξεκινήσουμε την εκτέλεση του αλγορίθμου;
Αναλαμβάνεις δηλαδή το θέμα της εισόδου των //Δεδομένα//, είτε πρόκειται για πίνακες (1d / 2d - όχι παραπάνω) είτε απλές μεταβλητές.

Σκεφτόμουν κάτι σαν το "εισαγωγή πίνακα" σε κειμενογράφους όπως ο fckeditor... Ένας διάλογος δηλαδή που να ρωτάει το χρήστη ΤΙ είναι η κάθε μεταβλητή, και αν είναι πίνακας πόσες γραμμές/στήλες έχει, και να ετοιμάζει μετά δυναμικά ένα παράθυρο με ένα html table με στήλες και γραμμές για να συμπληρώσει τις τιμές ο χρήστης, πριν αρχίσει η εκτέλεση του αλγορίθμου.

edit: Δηλαδή κάτι σαν τη συνημμένη εικόνα. Για μονοδιάστατους πίνακες απλά κρατάμε στήλες = 1, ενώ για απλές μεταβλητές ξετσεκάρουμε το "[v] Η μεταβλητή τάδε είναι πίνακας".

pgrontas

Αλκη, διόρθωσε με αν κατάλαβα λάθος,
για κάθε ένα από τα ονόματα που υπάρχουν στα δεδομένα ο χρήστης (αφού έχει επιλεγεί εκτέλεση του αλγορίθμου, αλλά πριν ξεκινήσει) θα ερωτάται για το είδος (πίνακας, ή απλή μεταβλητή) και την τιμή του.
Σε περίπτωση πίνακα πρέπει να επιλέξει και τις διαστάσεις (τι γίνεται αν υπάρχουν τα Ν και Μ και ο χρήστης δώσει διαφορετικές τιμές στην διάσταση) και να δώσει και τα στοιχεία (ελέγχοντας ότι είναι ίδιου τύπου με το πρώτο?).
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

alkisg

Σωστά όλα. Καλύτερα να τσεκάρει το "[v] Είναι πίνακας" μόνο αν είναι πίνακας, ώστε να μην τον κουράζουμε στις απλές μεταβλητές.
Αν υπάρχει Ν και Μ να δημιουργούνται οι αντίστοιχες γραμμές / στήλες.
Μπορεί να γίνεται τελείως δυναμικά, δηλαδή με το που αλλάζει ο χρήστης το Μ να προστίθεται/αφαιρείται μια στήλη ακόμα. Είναι λίγο προχωρημένη javascript, όπου θες βοήθεια πες μου.
Π.χ. δες ένα component εδώ που είναι βέβαια πολύ πιο προχωρημένο από το απλό που θέλουμε εμείς: http://scbr.com/docs/products/dhtmlxGrid/

Το δικό μας δε νομίζω να βγει πάνω από 100 γραμμές κώδικα. Κάνε αρχή από εδώ:
http://www.mredkj.com/tutorials/tableaddrow.html

evry


   Μάλλον δεν έγινα κατανοητός, δεν εννοούσα να το κάνουμε σε Java, απλά επειδή εγώ προσπαθώ να κάνω κάτι αντίστοιχο σε Java, για αυτό ρώτησα. Εννοείται από τη στιγμή που θα είναι web-based να το κάνουμε php ή javascript. Εγώ ρώτησα πληροφοριακά για μένα.

  Σχετικά με τον highligher, αν κατάλαβα καλά παίρνουμε το codepress, και απλά αλλάζουμε τα keywords στην ελληνική γλώσσα έτσι?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

alkisg

Σόρρυ Ευριπίδη, όντως δεν σε κατάλαβα.

Syntax editining component: εκτός από το πολύ καλό jedit, έχω δει τον java wrapper για το http://www.scintilla.org: http://sourceforge.net/projects/jintilla/

Για real time syntax checking: αυτός συνήθως γίνεται από κανονικό parser σε ένα background thread. Recursive descent όπως του Διερμηνευτή δεν κάνουν, γιατί αυτοί επισημαίνουν μόνο το πρώτο λάθος, χρειάζεται μη αναδρομικός, π.χ. με bison/flex και τέτοια. Και φυσικά το syntax editing component χρειάζεται να υποστηρίζει curly underlining.

Για τον highlighter: δεν αλλάζουμε απλά τις λέξεις, χρειάζεται λεκτικός αναλυτής (συνήθως - δεν έχω δει τις λεπτομέρειες του codepress). Μικρός είναι, έστειλα έναν που έχω φτιάξει σε php στο Γιώργο μήπως τον βοηθήσει.

Πάντως σοβαρά καλύτερα να κάνεις plugin για το Eclipse παρά να ξανα-ανακαλύπτεις τον τροχό εξ' αρχής. Ή, αν δουλέψεις σε C++, plugin για το visual studio ή το codeblocks.

Υ.Γ. για τα δεδομένα: αν μπορούσαμε να προτείνουμε να διορθωθούν στο βιβλίο οι δηλώσεις και να γίνουν //Δεδομένα: Μ, Ν, table[Μ, Ν]// θα γλυτώναμε πολύ κόπο...  :-\