Αποστολέας Θέμα: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???  (Αναγνώστηκε 9231 φορές)

maCintOsh__

  • Νέος
  • *
  • Μηνύματα: 8
ΘΕΛΩ ΝΑ ΦΤΙΑΞΩ ΜΙΑ ΔΙΚΙΑ ΜΟΥ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ,  ΕΤΣΙ ΑΠΛΑ ΓΙΑ ΤΙΝ ΕΜΠΙΡΙΑ, ΓΙΑ ΜΕΝΑ ΜΟΝΟ,
ΚΑΙ ΘΕΛΩ ΝΑ ΕΙΝΑΙ Η ΓΛΩΣΣΑ ΟΠΟΣ Η "ΨΕΥΔΟΓΛΩΣΣΑ" Ο ΔΙΕΡΜΙΝΗΥΤΗΣ, ..
ΤΙ ΓΝΟΣΙΣ ΠΡΕΠΕΙ ΝΑ ΓΝΩΡΙΖΟ ΓΙΑ ΝΑ ΤΟ ΚΑΝΩ ΑΥΤΟ???

If your a good hacker, everyone knows your name. If your a great hacker, no one knows who you are.

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3510
  • to Iterate is human to Recurse divine
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #1 στις: 08 Ιούν 2007, 12:28:12 πμ »

   Τις γνώσεις που έχει ο Άλκης  ;)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

maCintOsh__

  • Νέος
  • *
  • Μηνύματα: 8
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #2 στις: 08 Ιούν 2007, 12:31:34 πμ »
ΕΣΤΟ ΜΙΑ ΠΟΛΥ ΑΠΛΗ (ΑΚΟΜΑ ΚΑΙ ΠΙΟ ΑΠΛΗ ΑΠΟ ΤΟΝ ΔΙΕΡΜΗΝΕΥΤΗ)
ΑΛΛΑ ΠΩΣ????
If your a good hacker, everyone knows your name. If your a great hacker, no one knows who you are.

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3510
  • to Iterate is human to Recurse divine
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #3 στις: 08 Ιούν 2007, 12:34:07 πμ »
  Θα πρέπει να ψάξεις υλικό για compiler construction κλπ. Αν και δεν έχω το τμήμα πληροφορικής του ΟΠΑ σε μεγάλη εκτίμηση μπορείς να βρεις αρκετό υλικό στο http://eclass.aueb.gr/TMA114/. Ξεκίνα από εδώ και βλέπεις. Πάντως γενικότερα για να ασχοληθείς με αυτόν τον τομέα πρέπει να έχεις γράψει αρκετές γραμμές κώδικα σε γλώσσες όπως C, C++ κατά τη γνώμη μου.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

maCintOsh__

  • Νέος
  • *
  • Μηνύματα: 8
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #4 στις: 08 Ιούν 2007, 12:37:51 πμ »
ΕΓΩ ΤΟ ΜΟΝΟ ΠΟΥ ΞΕΡΩ ΕΙΝΙΑ : VISUAL BASIC 6 , ΜΕΡΙΚΑ ΠΡΑΜΜΑΤΑ ΑΠΟ PYTHON , ΚΑΤΙ ΨΙΛΑ ΑΠΟ HTML.
ΑΥΤΑ  :-[ :-[
If your a good hacker, everyone knows your name. If your a great hacker, no one knows who you are.

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3510
  • to Iterate is human to Recurse divine
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #5 στις: 08 Ιούν 2007, 12:47:08 πμ »

  Για VB 6  ξέχνα το, αν είναι να κάνεις κάτι θα το κάνεις με python. Επειδή η Python υποστηρίζει κανονικές εκφράσεις (αφού το κάνει η Perl θα το κάνει και η Python) θα είναι πολύ εύκολο να φτιάξεις καταρχήν το λεκτικό κομμάτι του compiler. Δεν έχω ασχοληθεί με Python αλλά νομίζω ότι το εργαλείο Antlr υποστηρίζει και την Python. Ψάξτο και μπορεί να βρεις κάτι.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

maCintOsh__

  • Νέος
  • *
  • Μηνύματα: 8
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #6 στις: 08 Ιούν 2007, 12:52:12 πμ »
Python μου φαίνεται καλή γλωσσά , θέλω να μάθω Perl, αλλά δεν ξερώ από πού να αρχίσω, ..
Δηλαδή είναι δύσκολο να φτιάξης μια δικιά σου γλωσσά?? Η ένα μεταγλοτιστη ?
Και για τη να ξεχάσω την VB6 ? τι έχει?
Μονό το γραφικό της περιβάλλον τιν χαλάει….


If your a good hacker, everyone knows your name. If your a great hacker, no one knows who you are.

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5440
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #7 στις: 08 Ιούν 2007, 08:54:06 πμ »
Minotech,

απλοποιώντας υπερβολικά το θέμα, ας πούμε ότι υπάρχουν 3 τρόποι για να φτιάξεις μια γλώσσα:

1) Να κάνεις έναν μεταφραστή που θα μεταφράζει από τη δική σου γλώσσα σε μια άλλη. Αυτή τη φιλοσοφία ακολουθεί ο compiler της Γλωσσομάθειας, που μεταφράζει από ΓΛΩΣΣΑ σε Pascal.
Δηλαδή όπου βλέπεις ΠΡΟΓΡΑΜΜΑ το κάνεις PROGRAM, όπου ΜΕΤΑΒΛΗΤΕΣ το κάνεις VAR κτλ.
Είναι αρκετά απλό, αν η αρχική και η τελική γλώσσα είναι παρόμοιες. Ο χρόνος ανάπτυξης θα είναι πιστεύω της τάξης κάποιων εβδομάδων.

2) Να κάνεις έναν διερμηνευτή που θα μεταφράζει τη δική σου γλώσσα σε μια εσωτερική αναπαράσταση και μετά θα την εκτελεί. Αυτή τη φιλοσοφία ακολουθεί ο Διερμηνευτής της ΓΛΩΣΣΑΣ. Είναι αρκετά πιο δύσκολο, εκτός του ότι χρειάζεται να φτιάξεις κανονικό parser, πρέπει να υλοποιήσεις και το εσωτερικό περιβάλλον εκτέλεσης.
Ο χρόνος ανάπτυξης (μόνο για parsing/εκτέλεση) θα είναι πιστεύω της τάξης κάποιων μηνών.

3) Να κάνεις έναν κανονικό μεταγλωττιστή, που θα μεταφράζει από τη δική σου γλώσσα είτε σε assembly είτε σε κάποια ενδιάμεση αναπαράσταση, π.χ. jvm της Java, clr της Microsoft κτλ.
Υπάρχουν διάφορα utilities που μπορείς να χρησιμοποιήσεις, bison, flex, ή π.χ. τα abstract syntax trees του gcc ώστε να εκμεταλλεύεσαι τα backends του.
Είναι η πιο δύσκολη περίπτωση, για να κάνεις κάτι τέτοιο θα χρειαστείς πάνω από 1 χρόνο για διάβασμα μόνο και τουλάχιστον 1 χρόνο ακόμα για μια πρώτη υλοποίηση.

Δυστυχώς απ' ότι λες δεν έχεις μεγάλη εμπειρία σε προγραμματισμό για να προσπαθήσεις κάτι από τα (2) και (3). Οπότε θα σου πρότεινα να ασχοληθείς με το (1): Δοκίμασε να κάνεις ένα πρόγραμμα που θα διαβάζει ένα αρχείο με κάποιον αλγόριθμο σε ψευδογλώσσα, να το μεταφράζει στις αντίστοιχες αγγλικές λέξεις της python και μετά να το εκτελεί με την eval της python.
Το πλεονέκτημα της python έναντι της vb είναι ότι "κουβαλάει" μαζί της τον διερμηνευτή της μέσα από την συνάρτηση eval. Ενώ αν προσπαθήσεις κάτι αντίστοιχο σε vb θα πρέπει να ...μοιράζεις και την vb6 μαζί με τη γλώσσα σου.

maCintOsh__

  • Νέος
  • *
  • Μηνύματα: 8
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #8 στις: 08 Ιούν 2007, 02:24:50 μμ »
Όταν λες μεταφραστή, (1) θες να πεις ότι θα μεταφράζει την γλωσσά μου σε Pascal??
Μήπως μπορώ να φτιάξω ?? αν έχεις Link, Guides, Tutorials, αν μπορείς στύλε μου,
Και αν είναι στα ελληνικά ακόμη καλυτέρα.
Ευχαριστώ.
 :)
If your a good hacker, everyone knows your name. If your a great hacker, no one knows who you are.

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5440
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #9 στις: 08 Ιούν 2007, 03:15:19 μμ »
Διάβασε λίγο πάλι την τελευταία παράγραφό μου. Προτείνω να τα μετατρέπεις σε Python, όχι σε Pascal (αφού Python είπες ότι ξέρεις). Και την εκτέλεσή του μεταφρασμένου κώδικα μετά την κάνει η ίδια η Python.

Για συνδέσμους κτλ κάνε αναζήτηση στο google με τη φράση
source to source translator python

ΜΙΤΜ

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 103
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #10 στις: 20 Μάρ 2008, 03:11:04 μμ »
2) Να κάνεις έναν διερμηνευτή που θα μεταφράζει τη δική σου γλώσσα σε μια εσωτερική αναπαράσταση και μετά θα την εκτελεί. Αυτή τη φιλοσοφία ακολουθεί ο Διερμηνευτής της ΓΛΩΣΣΑΣ. Είναι αρκετά πιο δύσκολο, εκτός του ότι χρειάζεται να φτιάξεις κανονικό parser, πρέπει να υλοποιήσεις και το εσωτερικό περιβάλλον εκτέλεσης.
Ο χρόνος ανάπτυξης (μόνο για parsing/εκτέλεση) θα είναι πιστεύω της τάξης κάποιων μηνών.

Ποιά τα εργαλεία για την υλοποίηση της 2 επιλογής?

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5440
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #11 στις: 20 Μάρ 2008, 04:45:33 μμ »
Αν μιλάμε για τη ΓΛΩΣΣΑ, επειδή είναι αρκετά μικρή και απλή στο συντακτικό της, δε χρειάζεται κάποιο συγκεκριμένο εργαλείο, κάνει οποιαδήποτε σχεδόν γλώσσα προγραμματισμού. Με έναν recursive descent parser μερικών 100δων γραμμών έχει γίνει η συντακτική ανάλυση, και μένουν τα μηνύματα λαθών, η εκτέλεση (μερικές 1000δες γραμμές) και το interface (αρκετές 1000δες γραμμές).

Αν ρωτάς για κάτι πιο προχωρημένο (π.χ. αν θες να υλοποιήσεις τη C++) τότε προφανώς θα χρειαστείς κάποιο utility τύπου yacc ώστε να σου μεταφράσει τη γραμματική σε κώδικα ανάλυσης συντακτικού βασισμένο σε tables/states κτλ.

Αν θες λεπτομέρειες γράψε τι περίπου θες να υλοποιήσεις και σε τι γλώσσα σκέφτεσαι να το κάνεις, γιατί κάθε γλώσσα έχει τα δικά της εργαλεία.


Με την ευκαιρία, αν θελήσει ποτέ κανείς να μεταφέρει το Διερμηνευτή σε Linux, να μου πει να τον κάνω open source...

ΜΙΤΜ

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 103
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #12 στις: 21 Μάρ 2008, 10:47:45 πμ »
Δεν με ενδιαφέρει να υλοποιήσω κάποια γλώσσα προγραμματισμού τύπου C, C++. Απλά και μόνο για λόγους εκπαιδευτικούς θέλω να καταλάβω πως υλοποιήθηκε η ΓΛΩΣΣΑ. Θα με ενδιέφερε να δημιουργήσω αρχικά εναν διερμηνευτη της γλώσσας. Η υλοποίηση μπορεί να γίνει είτε σε Visual C++ είτε Visual Basic (τι προτείνεις, υπάρχει τίποτα καλύτερο).

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5440
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #13 στις: 21 Μάρ 2008, 12:05:29 μμ »
Επειδή τώρα τρέχω με την επιμόρφωση των ΠΕ19-20, μόλις ξεμπερδέψω θα ποστάρω κάμποσο κώδικα από το Διερμηνευτή.
Θέλει λίγο καθάρισμα πριν τον ποστάρω (να φύγουν κάποια σχόλια / TODO κτλ), οπότε στη χειρότερη περίπτωση θα τα ανεβάσω στις διακοπές του Πάσχα.

Επειδή η ΓΛΩΣΣΑ είναι strickly typed, από αυτές τις δύο προτείνω Visual C++.
Μάλιστα αν έχεις σκοπό να φτιάξεις και interface, και δεν σε πειράζει να χρησιμοποιήσεις WxWidgets ή Qt αντί για MFC ή Windows Forms, μπορώ να σου δώσω όλον τον κώδικα του lexer/parser και της εκτέλεσης σε Delphi ώστε απλά να τον μετατρέψεις σε C++.

ΜΙΤΜ

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 103
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #14 στις: 21 Μάρ 2008, 12:59:22 μμ »
Επειδή τώρα τρέχω με την επιμόρφωση των ΠΕ19-20, μόλις ξεμπερδέψω θα ποστάρω κάμποσο κώδικα από το Διερμηνευτή.
Θέλει λίγο καθάρισμα πριν τον ποστάρω (να φύγουν κάποια σχόλια / TODO κτλ), οπότε στη χειρότερη περίπτωση θα τα ανεβάσω στις διακοπές του Πάσχα.

Επειδή η ΓΛΩΣΣΑ είναι strickly typed, από αυτές τις δύο προτείνω Visual C++.
Μάλιστα αν έχεις σκοπό να φτιάξεις και interface, και δεν σε πειράζει να χρησιμοποιήσεις WxWidgets ή Qt αντί για MFC ή Windows Forms, μπορώ να σου δώσω όλον τον κώδικα του lexer/parser και της εκτέλεσης σε Delphi ώστε απλά να τον μετατρέψεις σε C++.

Ευχαριστώ. Θα περιμένω...

ΜΙΤΜ

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 103
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #15 στις: 21 Μάρ 2008, 05:22:46 μμ »
Το UltraGram είναι πρόγραμμα για την υλοποίηση της συντακτικής αναλυσης?

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5440
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #16 στις: 21 Μάρ 2008, 06:21:03 μμ »
Ναι, αλλά για το απλό συντακτικό της ΓΛΩΣΣΑΣ πιο πολύ θα σε μπλέξει παρά θα σε βοηθήσει.
Άσε που θα φας αρκετό χρόνο μέχρι να σκεφτείς και να ορίσεις τα rules του parser, ενώ δε χρειάζεται...

ΜΙΤΜ

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 103
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #17 στις: 21 Μάρ 2008, 06:35:50 μμ »
Θα χρησιμοποιούσα Visual Studio 2005 pro για την υλοποίηση του GUI. Το WxWidgets δεν το γνωρίζω πολύ καλά

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5440
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #18 στις: 21 Μάρ 2008, 06:52:08 μμ »
ΟΚ, αλλά με τι interface; MFC; WTL; Ή θα πας σε .NET και Windows Forms; Όλα αυτά περιλαμβάνονται στο Visual Studio...
Anyway, θα χρειαστείς κι έναν syntax editor, π.χ. http://www.scintilla.org ή αυτόν του Akelpad αν θες κάτι πιο ελαφρύ αλλά με λιγότερες δυνατότητες (richedit-based).

ΜΙΤΜ

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 103
Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
« Απάντηση #19 στις: 21 Μάρ 2008, 06:59:27 μμ »
.NET και Windows. Για ποιο λόγο ο Scintilla