Προς το περιεχόμενο

Ενημέρωση για τη Μ2000 (Γλώσσα προγραμματισμού)


M2000

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Δυνατότητες διαμόρφωσης οθόνης στη Μ2000 (με τις ίδιες εντολές τυπώνει και στον εκτυπωτή).

 

col.png

Επεξ/σία από M2000
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Και ένα ακόμα ωραίο παράδειγμα που φτιάχνουμε μια φόρμα html και διαβάζουμε τα στοιχεία χωρίς χρήση server...

Η απαρίθμηση γίνεται στο περιθώριο, και μπορούμε να μετακινούμε το παράθυρο χωρίς να την σταματάμε!

Μόλις πατήσουμε το Αποστολή μας επιστρέφει τις τιμές η φόρμα!

 

net1.png

 

net2.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Link.png Site: ΌνομαΧώρου-Οκνηρή Αποτίμηση

 

Προχωρημένο θέμα. Δείχνω πως αντί να περνάμε μεταβλητές περνάμε εκφράσεις για οκνηρή αποτίμηση (lazy evaluation). Δείχνω δυο τρόπους, ένας με χρήση ανώνυμης συνάρτησης και το άλλον με χρήση αντικειμένου που φέρει μια συνάρτηση (που έχουμε φτιάξει ειδικά) και η οποία αργότερα χρησιμοποιείται χωριστά..

Ουσιαστικά δεν περνάμε απλά συναρτήσεις αλλά έκφραση που χρησιμοποιεί συνάρτηση ορισμένη στο τμήμα απ΄όπου καλούμε με οκνηρή αποτίμηση, και αυτό γίνεται γιατί έχουμε δώσει το όνομα χώρου!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έβαλα στο σύστημα (έχει  Ubuntu Studio ως κύριο λειτουργικό) μια τηλεόραση με hdmi, και με 1920Χ1080p. Το ubuntu έβγαλε τις τέσσερις επιφάνειες εργασίας διπλές (Στη γραμμή εργασιών), και άμεσα είχε κάνει τη TV ως το δεξί μόνιτορ. Δηλαδή παίρνεις το παράθυρο από αριστερά και το πας στην τηλεόραση. Αν κάνεις επιλογή άλλης επιφάνειας αλλάζει και στη TV.

Έβαλα τα 7 με ubuntu στη τηλεόραση και με ctrl+F το έκανα να δείχνει σε όλη την οθόνη. Πήρε αμέσως ανάλυση 1920Χ1080. Σε κάθε οθόνη άλλο λειτουργικό αλλά το ποντίκι είναι ένα...και άμεσα αλλάζει λειτουργικό (έχω βάλει και το πρόχειρο να δουλεύει, και δουλεύει για κείμενο, όχι για εικόνες).

Δοκίμασα το πρόγραμμα της Μ2000 που φτιάχνει την οθόνη ανεξάρτητα από την ανάλυση που έχει η οθόνη:

post-370421-0-35459400-1450355729_thumb.png

 

Το πρόγραμμα φτιάχνει μια οθόνη βάσει των χαρακτήρων σε πλάτος και ύψος που ζητάμε. Και όλα τα άλλα γίνονται σαν ελβετικό ρολόϊ.

 

Στη στ=6, εναλ=Αληθής
      \\ Ανανέωση 1000   \\ με αυτή την εντολή κάνουμε τις αλλαγές να εμφανιστούν μια φορά!
      \\ δηλαδή βλέπουμε σαν να φορτώσαμε εικόνα
      \\ Αλλιώς βλέπουμε μια φλασιά! Γιατί προλαβαίνουμε να δούμε το φόντο μόνο του!
      
      Φόρμα (80 δια στ)*στ,32
      Οθόνη 5
      Πένα 14
      Για ι=0 εως Πλάτος-1 ανα στ {
            Αν εναλ τότε {
                  Τυπωσε @(ι,0,ι+στ,Ύψος,#222222,3),
            } Αλλιώς Τυπωσε @(ι,0,ι+στ,Ύψος,5,3),
            εναλ~
      }

      Για ι=2 έως Ύψος-2
            Δρομέας 0, ι
            Πένα 2 { Τύπωσε υπο }
      Επόμενο ι
      Τύπωσε @(0,2),   \\ Δρομέας 0,2
      Για ι=0 Έως 9 {
            \\ το $() λέγεται σειριακό χαρακτηριστικό διότι αλλάζει μια φορά
            \\ μέχρι να ξανα αλλάξει (ανά επίπεδο ισχύει αυτό)
            \\ στο παράδειγμα δεν κάνουμε κάποια ειδική επιλογή επιπέδου
            \\ οπότε η επιλογή είναι στο βασικό
            Τύπωσε $(ι, στ),145355, 34.23432,34.222, ~(10,2, 2-12*(ι=8)), "aaa",~(14),"bb"
            Τύπωσε 145355,"Αλφαριθμητικό",34.222, "Μικρό", 10, ι
            Τύπωσε $(0),  ' για να το επαναφέρουμε
      }
      Τύπωσε $(";Αληθές;Ψευδές;"), 0,-1, Αληθές, Ψευδές, "A">" ", "*"
      Τυπωσε $(""), Αληθές, "*οκ"
      Τύπωσε μέρος @(στήλη*2), $(6,στ*2),~(10,2),"Διπλή στήλη",$(4,στ), ~(14), 1000
      Πένα 2 { Τύπωσε υπο }
      Τύπωσε μέρος @(στήλη*2), $(6,στ*3),~(10,2),"Αυτή είναι τριπλή στήλη",$(4,στ),~(14), "ok"
      Για ι=0 εως 1 { Δρομέας 0,ι : Τύπωσε Πάνω ~(14,7,7), }
      Δρομέας 0,0
      Διπλα : Φαρδιά 1
      Πένα 15 { Αναφορά 2, "Παράδειγμα με τις εντολές Τύπωσε & Αναφορά"}
      Πένα 2 { Τύπωσε υπο }
      Κανονικά : Φαρδια
      Τύπωσε @(Στήλη(8),15, Στήλη(11),30,#222222, 2),
      Τύπωσε @(Στήλη(8),4, Στήλη(11),14,#222222, 2),
      Κείμενο$={   Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
   Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
   Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
}
      Πένα 7 {
            Αναφορά κειμενο$, Στήλη*3, 10
            Δρομέας Στήλη(8), 16
            Αναφορά κειμενο$, Στήλη*3, 14 Γραμμή 12
      }
      Πένα 13 {
            Δρομέας Στήλη(8), 15
            Αναφορά κειμενο$, Στήλη*3, 1 Γραμμή 11
           }
      Δρομέας 0,Ύψος-2
αα$=
Κομ$ \\ αναμονή για ένα πλήκτρο

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Συγχαρητήρια και μπράβο για την προσπάθεια σου. Η δημιουργία μιας γλώσσας προγραμματισμού δέν είναι εύκολη υπόθεση. Δέν είμαι φαν του να γράφω κώδικα στα Ελληνικά και απο παιδί σταμάτησα να αγοράζω βιβλία προγραμματισμού στα ελληνικά γιατί η ελληνική ορολογία είναι το μαυρό το χάλι. Συν ότι δεν είμαι και φάν της Basic αν και απο αυτή ξεκίνησα ως προγραμματιστής. Σου εύχομαι κάθε επιτυχία στο εγχείρημα σου , γιατί είναι πολύ δύσκολο και χαίρομαι να βλέπω τέτοιες προσπάθειες.

  • Like 4
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ! Προσπαθώ να κάνω κάτι που να μπορεί να γίνει η βάση για μια μετέπειτα εργασία από κάποιον άλλο! Πέρα από το περιβάλλον η ίδια η γλώσσα έχει ενδιαφέροντα πράγματα και μια απλότητα στο χειρισμό της. Είδα για παράδειγμα τη Pharo και ένα βίντεο ενός Έλληνα μάλιστα.

 https://www.youtube.com/watch?v=Ol5ivaEATLQ

Είναι κάτι ανάλογο με την Μ2000 αλλά σε Smaltalk και με  χρήση του Cairo, που σημαίνει ωραία γραφικά, παράθυρα, όλο το gui δηλαδή, και φυσικά έχει C Calls δηλαδή κλήσεις κατά το πρότυπο της χρήσης C συναρτήσεων σε βιβλιοθήκες που μπορεί να γράφτηκαν σε άλλες γλώσσες.

Και η Μ2000 μπορεί να καλεί εξωτερικά DLL, αλλά και COM αντικείμενα--τσάμπα δεν πήγε το γράψιμο σε VB6, αλλά το Cairo μου έρχεται κομμάτι δύσκολο, και ενώ υπάρχει το RichClient dll για τη δουλειά αυτή, και με αυτό γίνεται εύκολο, είναι κλειστός κώδικας και το έχω απορρίψει, και γενικά τις πολλές εξαρτήσεις τις έχω απορρίψει, για την ώρα)

 

Βλέπω ότι έχεις σε αυτά που σου αρέσουν την Μουσική!

Έχω φτιάξει σύστημα για τη μουσική παρόλο που δεν ξέρω μουσική! Δηλαδή γνωρίζω βασικά πράγματα αλλά μέχρι εκεί! Δεν παίζω μουσική. Αυτό που έφτιαξα για τη Μ2000 είναι ένας parser όπου δίνουμε σε αλφαριθμητικό την παρτιτούρα μιας φωνής (υποστηρίζει 16 φωνές) και μας παίζει τις φωνές επιλέγοντας ένα όργανο.  Για κάθε φωνή δίνουμε το τέμπο και μέσα μπορούμε να καθορίσουμε την αξία σε δεύτερα, τέταρτα, μέχρι τριακοστά δεύτερα, και της νότας, και εκτός από νότες έχουμε και παύσεις, καθώς και εντάσεις χωριστές..Όλα αυτά πάνε στο midi και η γλώσσα τα διαχειρίζεται με νήματα για τη μουσική.

Αυτό που θέλω είναι αν ξέρει κανείς να γράψει κανένα καλό κομμάτι!

 

     SCORE 3, 1000, "C5F#@2B@2C5F#@2B"
     SCORE 1, 1000, "D@2E@2C#3 @2D5@2V90 @3F#4V127"
                    '/ C C# D D# E F F# G G# A A# B  
                    '/
     PLAY 1, 19, 3, 22 ' VOICE, INSTRUMENT

 

 

Εδώ φτιάχνω τη φωνή 3 και 1 (λέγονται Score εδώ  - η γλώσσα έχει όλες τις εντολές και στις δυο γλώσσες Αγγλικά και Ελληνικά).

Όταν δίνουμε εντολή να παίξουν λέμε πιο όργανο θέλουμε από τα 128 όργανα του Midi.

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

το D@5 είναι η D  στο 1000/2^(5-1) όπου 1000 το τέμπο. Το διάστημα είναι η παύση που παίρνει και αυτή αξίες χρόνου, το V είναι η ένταση ανά φωνή από 1 έως 127, το C5 είναι η C στην 5η οκτάβα. Έχω μόνο αυτό # και όχι το b (κάνω λάθος ή βγαίνει το ίδιο σε #..με άλλο γράμμα νότας?)

 

Υπάρχει κανείς που μπορεί να γράψει μουσική με αυτό το τρόπο;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ! Προσπαθώ να κάνω κάτι που να μπορεί να γίνει η βάση για μια μετέπειτα εργασία από κάποιον άλλο! Πέρα από το περιβάλλον η ίδια η γλώσσα έχει ενδιαφέροντα πράγματα και μια απλότητα στο χειρισμό της. Είδα για παράδειγμα τη Pharo και ένα βίντεο ενός Έλληνα μάλιστα.

 https://www.youtube.com/watch?v=Ol5ivaEATLQ

Είναι κάτι ανάλογο με την Μ2000 αλλά σε Smaltalk και με  χρήση του Cairo, που σημαίνει ωραία γραφικά, παράθυρα, όλο το gui δηλαδή, και φυσικά έχει C Calls δηλαδή κλήσεις κατά το πρότυπο της χρήσης C συναρτήσεων σε βιβλιοθήκες που μπορεί να γράφτηκαν σε άλλες γλώσσες.

Και η Μ2000 μπορεί να καλεί εξωτερικά DLL, αλλά και COM αντικείμενα--τσάμπα δεν πήγε το γράψιμο σε VB6, αλλά το Cairo μου έρχεται κομμάτι δύσκολο, και ενώ υπάρχει το RichClient dll για τη δουλειά αυτή, και με αυτό γίνεται εύκολο, είναι κλειστός κώδικας και το έχω απορρίψει, και γενικά τις πολλές εξαρτήσεις τις έχω απορρίψει, για την ώρα)

 

Βλέπω ότι έχεις σε αυτά που σου αρέσουν την Μουσική!

Έχω φτιάξει σύστημα για τη μουσική παρόλο που δεν ξέρω μουσική! Δηλαδή γνωρίζω βασικά πράγματα αλλά μέχρι εκεί! Δεν παίζω μουσική. Αυτό που έφτιαξα για τη Μ2000 είναι ένας parser όπου δίνουμε σε αλφαριθμητικό την παρτιτούρα μιας φωνής (υποστηρίζει 16 φωνές) και μας παίζει τις φωνές επιλέγοντας ένα όργανο.  Για κάθε φωνή δίνουμε το τέμπο και μέσα μπορούμε να καθορίσουμε την αξία σε δεύτερα, τέταρτα, μέχρι τριακοστά δεύτερα, και της νότας, και εκτός από νότες έχουμε και παύσεις, καθώς και εντάσεις χωριστές..Όλα αυτά πάνε στο midi και η γλώσσα τα διαχειρίζεται με νήματα για τη μουσική.

Αυτό που θέλω είναι αν ξέρει κανείς να γράψει κανένα καλό κομμάτι!

 

     SCORE 3, 1000, "C5F#@2B@2C5F#@2B"

     SCORE 1, 1000, "D@2E@2C#3 @2D5@2V90 @3F#4V127"

                    '/ C C# D D# E F F# G G# A A# B  

                    '/

     PLAY 1, 19, 3, 22 ' VOICE, INSTRUMENT

 

 

Εδώ φτιάχνω τη φωνή 3 και 1 (λέγονται Score εδώ  - η γλώσσα έχει όλες τις εντολές και στις δυο γλώσσες Αγγλικά και Ελληνικά).

Όταν δίνουμε εντολή να παίξουν λέμε πιο όργανο θέλουμε από τα 128 όργανα του Midi.

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

το D@5 είναι η D  στο 1000/2^(5-1) όπου 1000 το τέμπο. Το διάστημα είναι η παύση που παίρνει και αυτή αξίες χρόνου, το V είναι η ένταση ανά φωνή από 1 έως 127, το C5 είναι η C στην 5η οκτάβα. Έχω μόνο αυτό # και όχι το b (κάνω λάθος ή βγαίνει το ίδιο σε #..με άλλο γράμμα νότας?)

 

Υπάρχει κανείς που μπορεί να γράψει μουσική με αυτό το τρόπο;

 

 

Αυτός ο Έλληνας είμαι Εγώ !!!!  :D

 

Δημήτρης Χλούπης, χάρηκα για την γνωριμία , πρέπει να είμαι ο μόνος Έλληνας που χρησιμοποιώ Pharo σε συχνή βάση αν όχι ο μόνος γενικά.

 

Το βίντεο που επισύναψες ανήκει σε μια λίστα μαθημάτω που έχω ανεβάσει στο youtube

 

https://www.youtube.com/playlist?list=PLqbtQ7OkSta0ULYAd7Qdxof851ybh-_m_

 

επίσης είμαι ένα απο τα ενεργά μέλη που βελτιώνω το βιβλίο του Pharo για αρχάριους που μπορείς να βρείς και να διαβάσεις εδώ

 

https://ci.inria.fr/pharo-contribution/view/Books/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-result/UpdatedPharoByExample.pdf

 

γενικά προσπαθώ να βοηθάω γιατι πιστεύω ότι ο Pharo είναι εύκολος στην εκμάθηση, μοντέρνος και προσφέρει ενα πολυ διαφορετικό τρόπο προγραμματισμόυ αντι να αναμασά παλιές συνταγές χωρίς να έχει πρόβλημα να συνεργαστεί με άλλες γλώσσες.

 

Όπως πολυ σωστά είπες υποστηρίζει C, έχει επίσης και την Slang που είναι κάτι σαν cython , δηλαδή είναι περίπου Smalltalk που μετράπει τον κωδικά της σε C.

 

Εγώ δημιουργώ μια "γέφυρα" που επιτρέπει να χρησιμοποιούμε βιβλιοθήκες python απο τον Pharo (αλλά με κάποιους περιορισμού) και επισης υποστηρίζει Hmtl , CSS, Javascript και Java.

 

Γενικά η κοινότητα μας είναι μικρή αλλά πολυ παθιασμένη :)

 

Ναι είμαι μουσικός , αν και ασχολούμε κυριώς με 3d graphics χρησιμοποιώντας Blender.

 

Ο κώδικα που πόσταρε μου θύμιζει όταν ήμου 9 χρονών και μάθαινα την πρώτη γλώσσα προγραμματισμού την Locomotive Basic στον Amstrad CPC 6128 έτος 1988. Είχε παρόμοιες ρουτίνες για δημιουργία μουσικής.

 

Όχι προσωπικά δεν είμαι φαν, έχω hardware synthesizers και απο software χρησιμοποιώ μόνο το Reason. O τρόπος που δουλεύω είναι πολύ άμεσος.

 

Υπάρχου πάντως κόσμος που χρησιμοποιώ γλώσσες προγραμματισμό φτιαγμένες για μουσική όπως η Csound και Supercollider. Οι οποίες έχουν φοβερές δυνατότητες.

 

ο Pharo έχει κάτι παρόμοιο μια βιβλιοθήκη που λέγεται Pharo Sound. Όχι τόσο δυνατή αλλά αρκετά ευέλικτη.

 

Η γλώσσα σου τρέχει σε macos ? γιατί εκεί δουλεύω

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν έχεις VirtualBox με οποιαδήποτε windows ναι!

Με το Wine έχω ένα παλιό και ένα νέο θέμα. Το παλιό είναι ότι η γλώσσα τρέχει αργά, κάποιες άσχετες ανανεώσεις οθόνης από το wine την χαλάει. Το νέο είναι ότι λόγω των Combining Diacritical Marks που έβαλα τελευταία να επεξεργάζεται στην εμφάνιση στην οθόνη, έχω πρόβλημα στην Τύπωσε με αριθμούς σε μη αναλογική γραφή! Δεν δουλεύει η GetStringTypeExW του Kernel32 σωστά (και δεν μπορώ να τους λύσω το πρόβλημα).

Άρα στο ερώτημά σου...η απάντηση είναι Μακάρι..αλλά δεν το γνωρίζω! Δες καλύτερα με VirtualBox..(δουλεύει σε Xp, 7, 8, 10).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν έχεις VirtualBox με οποιαδήποτε windows ναι!

Με το Wine έχω ένα παλιό και ένα νέο θέμα. Το παλιό είναι ότι η γλώσσα τρέχει αργά, κάποιες άσχετες ανανεώσεις οθόνης από το wine την χαλάει. Το νέο είναι ότι λόγω των Combining Diacritical Marks που έβαλα τελευταία να επεξεργάζεται στην εμφάνιση στην οθόνη, έχω πρόβλημα στην Τύπωσε με αριθμούς σε μη αναλογική γραφή! Δεν δουλεύει η GetStringTypeExW του Kernel32 σωστά (και δεν μπορώ να τους λύσω το πρόβλημα).

Άρα στο ερώτημά σου...η απάντηση είναι Μακάρι..αλλά δεν το γνωρίζω! Δες καλύτερα με VirtualBox..(δουλεύει σε Xp, 7, 8, 10).

 

οκ που είναι το download / website  ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είναι σε dropbox...https://www.dropbox.com/sh/xq8j8t7kbj37ms0/AABKIv4d9qXTLbEFPvfjPLb0a?dl=0

αλλά το βρίσκεις και στο Κώδικας Γλώσσας στο Blog

 

http://georgekarras.blogspot.gr/p/blog-page.htmlπερί εγκατάστασης (δεν θέλει τίποτα ιδιαίτερο...δεν χρειάζεται setup, μόνο ένα αρχείο mdb για να βγαίνει η βοήθεια)

 

FAQ http://georgekarras.blogspot.gr/p/blog-page_22.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είναι σε dropbox...https://www.dropbox.com/sh/xq8j8t7kbj37ms0/AABKIv4d9qXTLbEFPvfjPLb0a?dl=0

αλλά το βρίσκεις και στο Κώδικας Γλώσσας στο Blog

 

http://georgekarras.blogspot.gr/p/blog-page.htmlπερί εγκατάστασης (δεν θέλει τίποτα ιδιαίτερο...δεν χρειάζεται setup, μόνο ένα αρχείο mdb για να βγαίνει η βοήθεια)

 

FAQ http://georgekarras.blogspot.gr/p/blog-page_22.html

συμβουλή για να είναι πιο ωραίο και φιλικό , βάλτω στο github

 

https://github.com/

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχω κατεβάσει το GitHub...έχω κάνει το Repository στο https://github.com/M2000Interpreter/Version8

αλλά δεν μου ανεβάζει τα αρχεία από το φάκελό μου!

Ενώ έκανα commit! Δεν βλέπω πότε κάνει upload...ή Sync ή κάτι...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχω κατεβάσει το GitHub...έχω κάνει το Repository στο https://github.com/M2000Interpreter/Version8

αλλά δεν μου ανεβάζει τα αρχεία από το φάκελό μου!

Ενώ έκανα commit! Δεν βλέπω πότε κάνει upload...ή Sync ή κάτι...

 

έκανες git clone ?

έκανες git config ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.
  • Δημιουργία νέου...