Το Στέκι των Πληροφορικών

Γενικά => Γενικά Παιδαγωγικά, Επιστημονικά και Τεχνικά Θέματα => Επιστημονικά Θέματα => Μήνυμα ξεκίνησε από: maCintOsh__ στις 08 Ιουν 2007, 12:05:52 ΠΜ

Τίτλος: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: maCintOsh__ στις 08 Ιουν 2007, 12:05:52 ΠΜ
ΘΕΛΩ ΝΑ ΦΤΙΑΞΩ ΜΙΑ ΔΙΚΙΑ ΜΟΥ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ,  ΕΤΣΙ ΑΠΛΑ ΓΙΑ ΤΙΝ ΕΜΠΙΡΙΑ, ΓΙΑ ΜΕΝΑ ΜΟΝΟ,
ΚΑΙ ΘΕΛΩ ΝΑ ΕΙΝΑΙ Η ΓΛΩΣΣΑ ΟΠΟΣ Η "ΨΕΥΔΟΓΛΩΣΣΑ" Ο ΔΙΕΡΜΙΝΗΥΤΗΣ, ..
ΤΙ ΓΝΟΣΙΣ ΠΡΕΠΕΙ ΝΑ ΓΝΩΡΙΖΟ ΓΙΑ ΝΑ ΤΟ ΚΑΝΩ ΑΥΤΟ???

Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: evry στις 08 Ιουν 2007, 12:28:12 ΠΜ

   Τις γνώσεις που έχει ο Άλκης  ;)
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: maCintOsh__ στις 08 Ιουν 2007, 12:31:34 ΠΜ
ΕΣΤΟ ΜΙΑ ΠΟΛΥ ΑΠΛΗ (ΑΚΟΜΑ ΚΑΙ ΠΙΟ ΑΠΛΗ ΑΠΟ ΤΟΝ ΔΙΕΡΜΗΝΕΥΤΗ)
ΑΛΛΑ ΠΩΣ????
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: evry στις 08 Ιουν 2007, 12:34:07 ΠΜ
  Θα πρέπει να ψάξεις υλικό για compiler construction κλπ. Αν και δεν έχω το τμήμα πληροφορικής του ΟΠΑ σε μεγάλη εκτίμηση μπορείς να βρεις αρκετό υλικό στο http://eclass.aueb.gr/TMA114/ (http://eclass.aueb.gr/TMA114/). Ξεκίνα από εδώ και βλέπεις. Πάντως γενικότερα για να ασχοληθείς με αυτόν τον τομέα πρέπει να έχεις γράψει αρκετές γραμμές κώδικα σε γλώσσες όπως C, C++ κατά τη γνώμη μου.
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: maCintOsh__ στις 08 Ιουν 2007, 12:37:51 ΠΜ
ΕΓΩ ΤΟ ΜΟΝΟ ΠΟΥ ΞΕΡΩ ΕΙΝΙΑ : VISUAL BASIC 6 , ΜΕΡΙΚΑ ΠΡΑΜΜΑΤΑ ΑΠΟ PYTHON , ΚΑΤΙ ΨΙΛΑ ΑΠΟ HTML.
ΑΥΤΑ  :-[ :-[
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: evry στις 08 Ιουν 2007, 12:47:08 ΠΜ

  Για VB 6  ξέχνα το, αν είναι να κάνεις κάτι θα το κάνεις με python. Επειδή η Python υποστηρίζει κανονικές εκφράσεις (αφού το κάνει η Perl θα το κάνει και η Python) θα είναι πολύ εύκολο να φτιάξεις καταρχήν το λεκτικό κομμάτι του compiler. Δεν έχω ασχοληθεί με Python αλλά νομίζω ότι το εργαλείο Antlr υποστηρίζει και την Python. Ψάξτο και μπορεί να βρεις κάτι.
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: maCintOsh__ στις 08 Ιουν 2007, 12:52:12 ΠΜ
Python μου φαίνεται καλή γλωσσά , θέλω να μάθω Perl, αλλά δεν ξερώ από πού να αρχίσω, ..
Δηλαδή είναι δύσκολο να φτιάξης μια δικιά σου γλωσσά?? Η ένα μεταγλοτιστη ?
Και για τη να ξεχάσω την VB6 ? τι έχει?
Μονό το γραφικό της περιβάλλον τιν χαλάει….


Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: alkisg στις 08 Ιουν 2007, 08:54:06 ΠΜ
Minotech,

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

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

2) Να κάνεις έναν διερμηνευτή που θα μεταφράζει τη δική σου γλώσσα σε μια εσωτερική αναπαράσταση και μετά θα την εκτελεί. Αυτή τη φιλοσοφία ακολουθεί ο Διερμηνευτής της ΓΛΩΣΣΑΣ (https://alkisg.mysch.gr). Είναι αρκετά πιο δύσκολο, εκτός του ότι χρειάζεται να φτιάξεις κανονικό 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__ στις 08 Ιουν 2007, 02:24:50 ΜΜ
Όταν λες μεταφραστή, (1) θες να πεις ότι θα μεταφράζει την γλωσσά μου σε Pascal??
Μήπως μπορώ να φτιάξω ?? αν έχεις Link, Guides, Tutorials, αν μπορείς στύλε μου,
Και αν είναι στα ελληνικά ακόμη καλυτέρα.
Ευχαριστώ.
:)
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: alkisg στις 08 Ιουν 2007, 03:15:19 ΜΜ
Διάβασε λίγο πάλι την τελευταία παράγραφό μου. Προτείνω να τα μετατρέπεις σε Python, όχι σε Pascal (αφού Python είπες ότι ξέρεις). Και την εκτέλεσή του μεταφρασμένου κώδικα μετά την κάνει η ίδια η Python.

Για συνδέσμους κτλ κάνε αναζήτηση στο google με τη φράση
source to source translator python
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: ΜΙΤΜ στις 20 Μαρ 2008, 03:11:04 ΜΜ
Παράθεση από: alkisg στις 08 Ιουν 2007, 08:54:06 ΠΜ
2) Να κάνεις έναν διερμηνευτή που θα μεταφράζει τη δική σου γλώσσα σε μια εσωτερική αναπαράσταση και μετά θα την εκτελεί. Αυτή τη φιλοσοφία ακολουθεί ο Διερμηνευτής της ΓΛΩΣΣΑΣ (https://alkisg.mysch.gr). Είναι αρκετά πιο δύσκολο, εκτός του ότι χρειάζεται να φτιάξεις κανονικό parser, πρέπει να υλοποιήσεις και το εσωτερικό περιβάλλον εκτέλεσης.
Ο χρόνος ανάπτυξης (μόνο για parsing/εκτέλεση) θα είναι πιστεύω της τάξης κάποιων μηνών.

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

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

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


Με την ευκαιρία, αν θελήσει ποτέ κανείς να μεταφέρει το Διερμηνευτή σε Linux, να μου πει να τον κάνω open source...
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: ΜΙΤΜ στις 21 Μαρ 2008, 10:47:45 ΠΜ
Δεν με ενδιαφέρει να υλοποιήσω κάποια γλώσσα προγραμματισμού τύπου C, C++. Απλά και μόνο για λόγους εκπαιδευτικούς θέλω να καταλάβω πως υλοποιήθηκε η ΓΛΩΣΣΑ. Θα με ενδιέφερε να δημιουργήσω αρχικά εναν διερμηνευτη της γλώσσας. Η υλοποίηση μπορεί να γίνει είτε σε Visual C++ είτε Visual Basic (τι προτείνεις, υπάρχει τίποτα καλύτερο).
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: alkisg στις 21 Μαρ 2008, 12:05:29 ΜΜ
Επειδή τώρα τρέχω με την επιμόρφωση των ΠΕ19-20, μόλις ξεμπερδέψω θα ποστάρω κάμποσο κώδικα από το Διερμηνευτή.
Θέλει λίγο καθάρισμα πριν τον ποστάρω (να φύγουν κάποια σχόλια / TODO κτλ), οπότε στη χειρότερη περίπτωση θα τα ανεβάσω στις διακοπές του Πάσχα.

Επειδή η ΓΛΩΣΣΑ είναι strickly typed, από αυτές τις δύο προτείνω Visual C++.
Μάλιστα αν έχεις σκοπό να φτιάξεις και interface, και δεν σε πειράζει να χρησιμοποιήσεις WxWidgets ή Qt αντί για MFC ή Windows Forms, μπορώ να σου δώσω όλον τον κώδικα του lexer/parser και της εκτέλεσης σε Delphi ώστε απλά να τον μετατρέψεις σε C++.
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: ΜΙΤΜ στις 21 Μαρ 2008, 12:59:22 ΜΜ
Παράθεση από: alkisg στις 21 Μαρ 2008, 12:05:29 ΜΜ
Επειδή τώρα τρέχω με την επιμόρφωση των ΠΕ19-20, μόλις ξεμπερδέψω θα ποστάρω κάμποσο κώδικα από το Διερμηνευτή.
Θέλει λίγο καθάρισμα πριν τον ποστάρω (να φύγουν κάποια σχόλια / TODO κτλ), οπότε στη χειρότερη περίπτωση θα τα ανεβάσω στις διακοπές του Πάσχα.

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

Ευχαριστώ. Θα περιμένω...
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: ΜΙΤΜ στις 21 Μαρ 2008, 05:22:46 ΜΜ
Το UltraGram είναι πρόγραμμα για την υλοποίηση της συντακτικής αναλυσης?
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: alkisg στις 21 Μαρ 2008, 06:21:03 ΜΜ
Ναι, αλλά για το απλό συντακτικό της ΓΛΩΣΣΑΣ πιο πολύ θα σε μπλέξει παρά θα σε βοηθήσει.
Άσε που θα φας αρκετό χρόνο μέχρι να σκεφτείς και να ορίσεις τα rules του parser, ενώ δε χρειάζεται...
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: ΜΙΤΜ στις 21 Μαρ 2008, 06:35:50 ΜΜ
Θα χρησιμοποιούσα Visual Studio 2005 pro για την υλοποίηση του GUI. Το WxWidgets δεν το γνωρίζω πολύ καλά
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: alkisg στις 21 Μαρ 2008, 06:52:08 ΜΜ
ΟΚ, αλλά με τι interface; MFC; WTL; Ή θα πας σε .NET και Windows Forms; Όλα αυτά περιλαμβάνονται στο Visual Studio...
Anyway, θα χρειαστείς κι έναν syntax editor, π.χ. http://www.scintilla.org ή αυτόν του Akelpad αν θες κάτι πιο ελαφρύ αλλά με λιγότερες δυνατότητες (richedit-based).
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: ΜΙΤΜ στις 21 Μαρ 2008, 06:59:27 ΜΜ
.NET και Windows. Για ποιο λόγο ο Scintilla
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: Tony__Dim στις 25 Οκτ 2022, 01:51:37 ΠΜ
?
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: Foto στις 26 Οκτ 2022, 11:40:51 ΠΜ
Ο Bill Gates ξεκίνησε με μια απλή Basic, διερμηνευτή, με πράξεις ακεραίων μόνο.

Παραδείγματα για διερμηνευτή με AST υπάρχουν εδώ  
https://rosettacode.org/wiki/Compiler/AST_interpreter
Η δομή AST βολεύει και για άμεση εκτέλεση.
Στο σύνδεσμο υπάρχουν υλοποιήσεις σε διάφορες γλώσσες. Δεν είναι τόσο τρομακτικό όπως τα περιγράφει ο Alkis, για κάτι απλό. Υποτίθεται ότι ο διερμηνευτής θα παίρνει ένα αρχείο εισόδου, το πρόγραμμα και θα το εκτελεί. Στις εντολές του προγράμματος θα υπάρχουν εντολές εξόδου όπως η Γράψε, για να έχουμε αποτελέσματα στη κονσόλα. Μέχρι εκεί η δυσκολία δεν είναι μεγάλη. 
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: Tony__Dim στις 26 Οκτ 2022, 04:49:19 ΜΜ
?
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: Foto στις 26 Οκτ 2022, 06:46:16 ΜΜ
Λογικά τις σημειώσεις πρέπει να τις φιλτράρεις πριν την μετάφραση. Αυτό δεν είναι δύσκολο!
Τίτλος: Απ: ΠΩΣ ΜΠΟΡΩ ΝΑ ΦΤΙΑΞΩ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ???
Αποστολή από: Foto στις 27 Οκτ 2022, 01:31:16 ΜΜ
Είδα το βίντεο με τη GLP Python. Οι εντολές με το γράμμα ζ είναι εντελώς λάθος προσέγγιση!
Τα αλφαριθμητικά ξεχωρίζουν έτσι:
https://www.w3schools.com/python/python_strings.asp
Οι σημειώσεις ξεχωρίζουν έτσι:
https://www.w3schools.com/python/python_comments.asp
Άρα διατρέχεις όλο το κείμενο και αφήνεις τμήματα που είναι σημειώσεις ή αλφαριθμητικά. Στα ενδιάμεσα τμήματα που είναι οτιδήποτε άλλο, εκτός από σημειώσεις και αλφαριθμητικά, κάνεις τις αλλαγές που θες.
Δοκίμασε να φτιάξεις έναν τέτοιο αλγόριθμο. Δεν είναι δύσκολος!