bnvdarklord Δημοσ. 2 Δεκεμβρίου 2015 Δημοσ. 2 Δεκεμβρίου 2015 Εδώ και ένα χρόνο περίπου ο Jonathan Blow φτιάχνει τη δική του γλώσσα προγραμματισμού. Στο youtube έχει αρκετά video που δείχνει διάφορα παραδείγματα χρήσης κτλ, αλλά κάποιος έγραψε ένα βολικό primer που περιγράφει στοιχεία που έχει ήδη και μερικά που θα αποκτήσει η γλώσσα εδώ Εμένα μου φαίνεται αρκετά ενδιαφέρουσα, με αρκετά ωραία features. Βέβαια δεν έχω αρκετή εμπειρία για να κρίνω με αυτοπεποίθηση το αν όντως είναι καλύτερη απο την C/C++ ή αν θα μπορέσει να τις αντικαταστήσει (πράγματα που υποστηρίζει ο Blow). Εσείς τι λέτε;
M2000 Δημοσ. 2 Δεκεμβρίου 2015 Δημοσ. 2 Δεκεμβρίου 2015 Δεν είναι ωραία η εμφάνιση... // A function that accepts 3 floats as parameters and returns a floatsum := (x: float, y: float, z: float) -> float { return x + y + z;};print("Sum: %\n", sum(1, 2, 3)); Μ2000 εξ ορισμού έχουμε double : Function sum {Read x, y, z =x + y + z}print format$("Sum: {0}", sum(1, 2, 3)) Μ2000 πιο απλή: def sum(x, y, z)=x + y + zprint "Sum: ";sum(1, 2, 3) Δοκίμασα και με τις ομάδες (Group στα αγγλικά εδώ) Κάνω μάλιστα Benchmark... Βέβαια η Jai είναι compiler άρα θα είναι γρηγορότερη, αλλά εδώ μας ενδιαφέρει αν δουλεύει πιο γρήγορα μια συνάρτηση εντός αντικειμένου ή εκτός. Στη Μ2000 δεν μπορούμε να περάσουμε με αναφορά στοιχείο πίνακα, αλλά όλο μαζί. Εδώ στα αγγλικά. Module A1 { Module update_position { read &v1(), k For v1(k) { .x++ : .y++ : .z++ } } Class Vector { x,y,z } Class Orientation { any1, any2 } Group Entity { Dim .positions(1024)=Vector() Dim .orientations(1024)=Orientation() } For i=0 to 1023 { update_position &Entity.Positions(), i } Print Entity.Positions(512).x}Module A2 { Class Vector { x,y,z } Class Orientation { any1, any2 } Group Entity { Dim .positions(1024)=Vector() Dim .orientations(1024)=Orientation() Module update_position { read i For .positions(i) { .x++ : .y++ : .z++ } } } For i=0 to 1023 { Entity.update_position i } Print Entity.Positions(512).x}ProfilerA1Print TimecountProfilerA2Print Timecount
Moderators Kercyn Δημοσ. 2 Δεκεμβρίου 2015 Moderators Δημοσ. 2 Δεκεμβρίου 2015 Γιατί νιώθεις την ανάγκη να γράφεις random πράγματα από τη γλώσσα σου σε ΚΑΘΕ thread; Δηλαδή σοβαρά τώρα.
defacer Δημοσ. 2 Δεκεμβρίου 2015 Δημοσ. 2 Δεκεμβρίου 2015 Ας μη πιάσουμε και εδώ την κουβέντα περί M2000 που όπως και να το κάνουμε είναι θέμα στο οποίο δύσκολα θα υπάρξουν αντικειμενικές τοποθετήσεις. FWIW και εγώ βρίσκω κουραστικό το κόλλησε-η-βελόνα promotion, ειδικά σε συνδυασμό με το ότι δε βγαίνει άκρη στην κουβέντα γιατί η απάντηση στο "πόσο κάνει 1 + 1" μοιάζει λίγο με πεντάλεπτο λόγο Ζουράρι.
M2000 Δημοσ. 2 Δεκεμβρίου 2015 Δημοσ. 2 Δεκεμβρίου 2015 Δεν είναι random...διάβασε για την Jai, Data-Oriented Structures SOA AND AOS struct Entity { Vector3 position; Quaternion orientation; // ... many other members here }; Entity all_entities[1024]; // An array of structures for (int k = 0; k < 1024; k++) update_position(&all_entities[k].position); for (int k = 0; k < 1024; k++) update_orientation(&all_entities[k].orientation); ................................ struct Entity {Vector3 positions[1024];Quaternion orientations[1024];// ... many other members here};Entity all_entities; // A structure of arraysfor (int k = 0; k < 1024; k++)update_position(&all_entities.positions[k]);for (int k = 0; k < 1024; k++)update_orientation(&all_entities.orientations[k]); και η παραλλαγή SOA Entity :: struct SOA {position : Vector3;orientation : Quaternion// .. many other members here}all_entities : [4] Entity;for k : 0..all_entities.count-1update_position(&all_entities[k].position);for k : 0..all_entities.count-1update_orientation(&all_entities[k].orientation); Είναι ενδιαφέρον το θέμα και στο δικό μου πρόγραμμα υπάρχει διαφορά στην εκτέλεση. Απλά εδώ ο τύπος μπορεί να περνάει με αναφορά στοιχείο πίνακα, πράγμα που δεν το κάνει η Μ2000. Ασφαλώς στο παράδειγμα αναφέρεται στην αναδιοργάνωση των δεδομένων για διαφορετικό διάβασμα, αλλά σημασία σε κάθε γλώσσα έχει ότι πάντα θα πρέπει κανείς να έχει μια ιδέα για το πόσο γρήγορα γίνεται κάτι. Ο κώδικάς του έχει τρομερές διαφορές και σε καμία περίπτωση δεν συμπίπτει στο δικό μου! Παρόλα αυτά το κοινό είναι ότι έχουμε ομάδες στη Μ2000 και struct στη jai και σε κάθε περίπτωση μπορεί κανείς να χρησιμοποιήσει διαφορετικό τρόπο προσπέλασης με κέρδος ή χασούρα! Αυτό το βρίσκει κανείς με μέτρηση!
defacer Δημοσ. 2 Δεκεμβρίου 2015 Δημοσ. 2 Δεκεμβρίου 2015 delaportas vs m2000. Αυτό μόνο και τέλος. 3
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα