Δείτε εδώ τα πιο πρόσφατα μηνύματα από όλες τις περιοχές συζητήσεων, καθώς και όλες τις υπηρεσίες της AcroBase. H εγγραφή σας είναι γρήγορη και εύκολη. |
|
Κεντρική σελίδα |
Λίστα Μελών | Games | Σημειώστε όλα τα forums ως διαβασμένα | Σημειώστε όλα τα forums ως διαβασμένα |
|
|
Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#16
|
|
|||
Για την ακρίβεια το κάνω για να δω την έκφρασή της όταν της ανακοινώσουμε ποιου διαγωνισμού ήταν το έπαθλο μουαχαχαχα
Δ.
__________________
Let's call it an accidental feature -- Larry Wall |
#17
|
#18
|
|
||||
Κώδικας:
C FORTRAN 77 version PROGRAM PGCD READ *, IX, IY PRINT *, GCD(IX, IY) STOP END INTEGER FUNCTION GCD(IX, IY) IF (IX.EQ.0) THEN GCD=0 RETURN END IF 1 IF (IX.GT.IY) THEN IX = IX - IY ELSE IY = IY - IX END IF IF (IY.GT.0) THEN GOTO 1 GCD = IX RETURN END Επίσης, το function αλλάζει τις τιμές των IX,IY στο κυρίως πρόγραμμα, επειδή περνάνε by reference (δηλαδή σε κανονικό πρόγραμμα δε θα το κάναμε ακριβώς έτσι). Τέλος, ενδιαφέρον έχει η χρήση των '.EQ.' & '.GT.' που δηλώνουν '=' και '>' αντίστοιχα. Αυτό γίνεται επειδή... τότε το character set δεν περιείχε τα =, > κλπ!
__________________
may you live in interesting times |
#19
|
|
||||
Για τον ίδιο λόγο η Pascal δε χρησιμοποιούσε άγκιστρα { } αλλά (* ... *) για τα σχόλιά της, και η C δέχεται ακόμα και σήμερα τα trigraphs (και το παραδοσιακό ANSI C standard library έχει ονόματα το πολύ 6 χαρακτήρων). (*) Ένα είναι το character set. Το EBCDIC. *φεύγει τρέχοντας* (**) (**) Η σωστή απάντηση εδώ είναι «ναι, αλλά ποιο απ'όλα;».
__________________
www.bedroomlan.org |
#20
|
|
||||
Σε Befunge 97
Η Befunge είναι μια εξαιρετικά απλή (αλλά Turing Compete) stack-based γλώσσα (όπως η Forth και η Postscript) με μία βασική διαφορά: τα προγράμματα είναι δισδιάστατα, όλες οι εντολές, σταθερές κλπ έχουν ακριβώς ένα χαρακτήρα μήκος, και ο κώδικας είναι εξαιρετικά δυσανάγνωστος. Η ειδοποιός διαφορά από κάθε άλλη γλώσσα, όμως, είναι το ότι η ροή του προγράμματος δεν κινείται από πάνω προς τα κάτω, γραμμή κατά γραμμή. Η ροή μπορεί να κινηθεί και στις τέσσερεις βασικές κατευθύνσεις (πάνω ^, κάτω v, αριστερά <, δεξιά >), να πηδήξει μία θέση (#), και να αλλάξει διεύθυνση ανάλογα με τα αποτελέσματα σύγκρισης (_ και |).
Το προγραμματιστικό ιδίωμα της Befunge επιβάλλει μικρά προγράμματα (σε εμβαδόν, μια και δεν έχουμε την έννοια της γραμμής κώδικα) που χρησιμοποιούν τις ίδιες εντολές για διαφορετικά πράγματα, ανάλογα με την κατεύθυνση της ροής εκτέλεσης. Στην Acrobase έχουμε παράδοση στη Befunge από το 1995, και έχουμε και ένα σχετικό thread εδώ. Ο Ευκλείδειος αλγόριθμος σε Befunge 97: Κώδικας:
19p:09p 0\`#v_ v p90-g91g90_v#`\g90 _v#`0:g91< p91-g90g91< @.g91< >09g.@ ^ Μια και η Befunge δεν είναι από τις πιο κατανοητές γλώσσες, χρωμάτισα τον κώδικα για να φαίνονται πιο εύκολα τα τμήματά του: (Το initialisation —αποθήκευση των τιμών του σωρού είναι πορτοκαλί) Κώδικας:
1. if x = 0 2. return y 3. if x > y 4. x = x - y 5. else: 6. y = y - x 7. if y > 0 8. go to step 3 9. return x Αυτό είναι το if x = 0. Για να το εντάξουμε σε αυτόνομο πρόγραμμα, πρέπει να αλλάξουμε λίγο την τοπολογία και να δώσουμε τιμές. Κώδικας:
25*:::**\7*+1+ v v +1+*74**::*52< >19p:09p 0\`#v_ v p90-g91g90_v#`\g90 _v#`0:g91< p91-g90g91< vg91< >09gv ^ < v 0" = DCG">:#,_$.25*,@ > Στη δεύτερη γραμμή υπολογίζουμε το Y (η ροή είναι δεξιά προς αριστερά, βουστροφιδόν για απλότητα, οικονομία, και επειδή το ιδίωμα της Befunge επιτρέπει και προτρέπει την εκτέλεση κώδικα σε κάθε κατεύθυνση): ((2 × 5) × (2 × 5) × (2 × 5) + ((4 × 7) + 1)) = 1000 + 28 + 1 = 1029. Τέλος, μαζεύουμε το αποτέλεσμα και το τυπώνουμε στη μορφή "GCD = <αριθμός>" (ακολουθούμενο από newline). Η τελευταία γραμμή εκτελείται αριστερά προς δεξιά.
__________________
www.bedroomlan.org Τελευταία επεξεργασία από το χρήστη Morgul : 23-01-09 στις 01:48 |
#21
|
|
||||
Χαχα, κι εγώ. Εγώ όμως ήμουν στο άλλο στρατόπεδο (6502). Ενώ ήξερα κώδικα μηχανής (μέχρι το '87 δεν είχα assembler, τα έγραφα όλα στο χέρι, με χαρτί και μολύβι και πίνακα opcodes) και Assembly για 6502, Z80 assembly ψιλοέμαθα το '97, από ένα βιβλίο που βρήκα δεύτερο χέρι στο Εδιμβούργο.
Πάρτε κι ένα σε original BASIC: Κώδικας:
001 REM "Original" BASIC GCD algorithm 100 INPUT X, Y 105 GOSUB 200 110 PRINT GCD 115 END 200 IF X=0 THEN GCD=0 205 IF X=0 THEN RETURN 210 IF X>Y THEN X=X-Y ELSE Y=Y-X 215 IF Y>0 THEN GOTO 210 220 GCD=X 230 RETURN Νομίζω ότι μπορείς να γλυτώσεις το ένα IF: Κώδικας:
001 REM "Original" BASIC GCD algorithm 100 INPUT X, Y 105 GOSUB 200 110 PRINT GCD 115 END 200 IF X>0 THEN GOTO 210 205 LET GCD = Y 209 RETURN 210 IF X>Y THEN LET X=X-Y ELSE LET Y=Y-X 215 IF Y>0 THEN GOTO 210 220 LET GCD=X 230 RETURN
__________________
www.bedroomlan.org |
#22
|
|
||||
Α κι εγώ του 6502 είμαι, Rodney Zaks rulez
Το GELAR το θυμάμαι από τα διάφορα προγράμματα στο περιοδικό PIXEL (τι λέμε τώρα ε; )
__________________
may you live in interesting times |
#23
|
|
||||
Για αυτό μου αρέσει η Php... Μου ξυπνάει παλιές καλές εποχές... Κώδικας PHP:
Για να τρέξει το τρέχουμε σαν Κώδικας PHP:
Αλλιώς σας το έβαζα και σε φόρμα με χαζά κειμενάκια και textboxes σε html... Ουφ... τα κατάφερα να το εμφανίσει σωστά...
__________________
Για λόγους οικονομίας έσβησε το φως στο τούνελ... Τελευταία επεξεργασία από το χρήστη Diamond : 11-12-08 στις 16:11 |
#24
|
|
||||
Επίσης τα «;» για να χωράς πάνω από ένα statement σε μια γραμμή, το «?» (PRINT), «'» (REM), το NEXT χωρίς μεταβλητή, κλπ. Αλλά μια και είπες ότι η διάλεκτος είναι Standard BASIC...
__________________
www.bedroomlan.org |
#25
|
|
||||
για κατι τετοια πρεπει η ευθανασια να γινει νομιμη παντου...
__________________
μιαπαπιαμαποιαπαπια |
#26
|
|
||||
Και τώρα, κάτι κομψό... SML
Η SML (Standard ML, όπου ML = Meta-Language) είναι μια γλώσσα που πρέπει να σκοντάφτει και να βήχει πολύ. Η γιαγιά της πρέπει να την ξεματιάζει πολύ συχνά, και η αστυνομία τη φρουρεί ακατάπαυστα γιατί δέχεται χιλιάδες απειλές.
Χρησιμοποιείται (μεταξύ άλλων) για διδασκαλία θεωρητικού προγραμματισμού, και χιλιάδες φοιτητές του Εδιμβούργου και του Cambridge έχουν υποφέρει στα χέρια της και τη βρίζουν σε κάθε ευκαιρία (ο γράφοντας είναι ένας απ' αυτούς τους άμοιρους). Είναι απατηλά όμορφη, βλέπετε. (το πρόγραμμα είναι recursive μια και η γλώσσα δε χρησιμοποιεί loops): Κώδικας:
(* Calculate the greatest common divisor of two integers. Use Euclid's algorithm. *) fun gcd (0, y) = y | gcd (x, 0) = x | gcd (x, y) = if x > y then gcd (x - y, y) else gcd (x, y - x); Κώδικας:
gcd (1071, 1029); Κώδικας:
val it = 21 : int Το ασυνήθιστο χαρακτηριστικό της ML είναι πραγματικά μοναδικό σε όσες γλώσσες έχω δει: ο parser και syntax checker ερευνά το πρόγραμμα εξαντλητικά για πιθανά λάθη σχεδίασης ή σκέψης. Αν ένα datatype χρησιμοποιεί int για να αποθηκεύσει αριθμούς, κι ένα άλλο κάνει το ίδιο, και πάμε να συγκρίνουμε αριθμούς από τα δύο datatypes, θα δεχτούμε το εξαιρετικό μήνυμα λάθους «cannot unify int with int» μέχρι να εξηγήσουμε στη γλώσσα ότι δεν πρόκειται περί απλής συνωνυμίας αλλά ταύτισης. Φοβερά ενοχλητικό, αλλά σιγουρεύει ότι όταν τελικά καταφέρουμε να φορτωθεί το πρόγραμμά μας χωρίς απελπιστικά, ενοχλητικά error messages, σχεδόν πάντα θα τρέξει σωστά. Τα μόνα bugs που περνάνε σε ένα πρόγραμμα ML που εκτελείται είναι λάθη αλγοριθμικά. Pointer errors, λάθη μετατροπών, κοινές προγραμματιστικές χαζομάρες κλπ, όλα εξαλείφονται. Για κάποιο λόγο, κάπου το 2001, πολλά χρόνια μετά το 2ο έτος μου (σίγουρα ως αποτέλεσμα του συνδρόμου Στοκχόλμης), άρχισα να τη συμπαθώ και να εκτιμώ την κομψότητά της. Αλλά αυτό το «cannot unify int with int» ακόμα το τρέμω.
__________________
www.bedroomlan.org Τελευταία επεξεργασία από το χρήστη Morgul : 12-12-08 στις 03:21 |
Οι παρακάτω χρήστες έχουν πει 'Ευχαριστώ' στον/στην Morgul για αυτό το μήνυμα: | ||
Cyberpunk (16-12-08) |
#27
|
|
||||
Κάτι εξίσου κομψό αλλά λίγο πιο ευανάγνωστο και μοντέρνο
Κώδικας:
#light open System let rec gcd x y = match y with |0 -> x |_ ->match x with |0 -> y |x -> if x>y then gcd (x-y) y else gcd x (y-x) Κώδικας:
printfn "Result = %d" (gcd 1029 1071)
__________________
μη πσικ ήνγκλαντ βέρη μπεστ |
#28
|
|
||||
__________________
www.bedroomlan.org Τελευταία επεξεργασία από το χρήστη Morgul : 23-01-09 στις 01:53 |
#29
|
|
||||
Κώδικας:
BTW LOLCODE BTW dn ime sigouros oti ola ine swsta gt dn ine akoma standard k dn ehi pou8ena documentation!!!!!1 lolz :PPpp HAI CAN HAS STDIO? I HAS A X I HAS A Y GIMMEH X GIMMEH Y IZ X LIEK 0? YARLY VISIBLE Y NOWAI IM IN YR LOOP IZ X BIGR THAN Y? KTHX LOL Y R Y NERF X LOL X R X NERF Y ENUF IZ Y BIGR THAN 0? KTHX VISIBLE X IM OUTTA YR LOOP KTHX KTHXBYE
__________________
Υπάρχουν σε όλα δύο απόψεις... Αυτή που λέω εγώ, και η σωστή! Τελευταία επεξεργασία από το χρήστη Gildor : 21-11-09 στις 12:19 |
#30
|
|
|||
pws legete h teleytaia glwssa?
|
Συνδεδεμένοι χρήστες που διαβάζουν αυτό το θέμα: 1 (0 μέλη και 1 επισκέπτες) | |
Εργαλεία Θεμάτων | |
Τρόποι εμφάνισης | |
|
|