Ruby

Ruby, Ruby on Rails, Sinatra, ...

Συντονιστές: WebDev Moderators, Super-Moderators, Ruby Moderators

Απάντηση
qtgeo
Δημοσιεύσεις: 83
Εγγραφή: 31 Αύγ 2006 19:25
Τοποθεσία: Αθήνα

Ruby

Δημοσίευση από qtgeo » 07 Μάιος 2007 15:44

Σέρφαρα λοιπόν που λέτε στο Internet και εκεί που χάζευα τσάκ νάσου και μου μπήκε κάτι στο μάτι.....

Ώπ τι είναι τούτο λέω?

Ryby?....

Όπως το πετράδι?
Τι θέλει να πεί ο ποιητής?

http://www.ruby-lang.org/en/

Τελικά αυτό που εγώ καταλαβαίνω είναι οτι ο καθένας προσπαθεί να δώσει τον προγραμματισμό απο την πλευρά του με την δική του φιλοσοφία αλλά και πάλι πιος ο λόγος αφού ΔΕΝ θέλουν και ΔΕΝ υπάρχει λόγος να γίνουν όλοι developers.
Είχα κι εγώ αυτή την αυταπάτη κάποτε ότι θα τα κατάφερνα.
Έτσι έχει μείνει ακόμα ένα παλιό project μου στο ράφι...σε Alpha version...
http://www.planet-source-code.com/vb/sc ... 1&lngWId=1
Και τί κατάλαβα....

Τέλος πάντων θέλω τις απόψεις σας στο θέμα!
Εικόνα

B Cool...But Stay Wild!

Άβαταρ μέλους
Bugman
Δημοσιεύσεις: 362
Εγγραφή: 01 Ιούλ 2003 20:39
Τοποθεσία: Πρέβεζα
Επικοινωνία:

Ruby

Δημοσίευση από Bugman » 08 Μάιος 2007 18:15

μέχρι και ο Paul Lutus, ο παλιός...προγραμματίζει σε ruby
http://www.arachnoid.com/index.html


εδώ πρόγραμμα 3D http://www.arachnoid.com/ruby/graphinity/index.html


qtgeo, και γω προπάθησα να φτιάξω κάτι που να σχετίζεται με μια "εικονική μηχανή", να ξεφεύγει δηλαδή από αυτό που λέμε γλώσσα προγραμματισμού και να συνδιάζει ένα απλό περιβάλλον εργασίας. Το περιβάλλον που έχω φτιάξει θυμίζει υπολογιστή της δεκαετίας του 80...αλλά συνδιάζει και νέα στοιχεία!

www.m2000.tk

qtgeo
Δημοσιεύσεις: 83
Εγγραφή: 31 Αύγ 2006 19:25
Τοποθεσία: Αθήνα

Ruby

Δημοσίευση από qtgeo » 08 Μάιος 2007 19:33

ΩΡΑΙΟΣ!!!!!!

Δεν φαντάζεσαι πόσο χαίρομαι όταν βλέπω τέτoια project!

Μπράβο σου!

Καλή φάση που προσπάθησες να δώσεις την ελληνική πλευρά. Τι ποιό έξυπνοι είναι οι Ιάπωνες που προγραμματίζουν σε Ιαπωνικά!

Εύγε!

P.S: Θα ασχοληθώ λίγο μου αρέσει που υπάρχουν και άλλοι που σκέφτονται και δεν ακούνε μόνο και λένε καλά είμαστε και όπως είμαστε!

RESPECT
Εικόνα

B Cool...But Stay Wild!

Άβαταρ μέλους
Bugman
Δημοσιεύσεις: 362
Εγγραφή: 01 Ιούλ 2003 20:39
Τοποθεσία: Πρέβεζα
Επικοινωνία:

Ruby

Δημοσίευση από Bugman » 08 Μάιος 2007 21:58

ευχαριστώ φίλε....
Κάποτε θα τη φτιάξω με c++....για την ώρα είναι γραμμένη σε VB5
Όλη η γλώσσα στηρίζεται σε αναδρομικές συναρτήσεις! Το κείμενό της είναι σε ASCII και η εκτέλεσή της γίνεται από συναρτήσεις IsSomething( keimeno$, Something). Αν βγάλει true, τότε το something αφαιρείται από το κείμενο....Το πιο ενδιαφέρον κομμάτι είναι εκεί που έβαλα στην γλώσσα Μ2000 αναδρομικές συναρτήσεις και πίνακες πολλών διαστάσεων! πραγματικά αυτά τα δυο τα θεωρώ διαμάντια κώδικα! Η γλώσσα Μ2000 ξεκίνησε με μια ιδέα..."το απλό είναι σωστό". Έτσι μπόρεσα να την χτίσω....προσθέτοντας εντολές και δομές!
Καλή προσπάθεια!

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Ruby

Δημοσίευση από soteres2002 » 09 Μάιος 2007 00:58

an iloppiiseis ton intepreter sou omos se C++ kalitero tha itan na akolouthiseis ena diaforetiko modelo analisis tou M2000 kodika kai oxi autos p les sto post. Tha itane sigoura pio apodotiko. Dld tha itane kalitero na grapseis mia grammatiki se bison/flex: kai pio compact kodika tha exeis, kai pio mikro ektelesimo, kai sigoura dramatiki apodosi pros to grigorotero se sxesi me auton p exeis tora. Ego tha to elega "pio afairetiko modelo analisis".

episis kati psiloasxeto: i VB exei tpt kanena tool gia na grapseis grammatikes? I ekanes ton intepreter sou from scratch?

Άβαταρ μέλους
Bugman
Δημοσιεύσεις: 362
Εγγραφή: 01 Ιούλ 2003 20:39
Τοποθεσία: Πρέβεζα
Επικοινωνία:

Ruby

Δημοσίευση από Bugman » 10 Μάιος 2007 17:56

Γεια χαρά Γιάννενα!
Εδώ ....Πρέβεζα!

Η Μ2000 δεν μετατρέπει το τελικό σε exe, αλλά από την στιγμή που έχει εγκατασταθεί τρέχει οποιοδήποτε αρχείο έχει κατάληξη gsb. Μάλιστα μπορεί κάποιος να "κλείσει" τον κώδικά του με κωδικοποίηση...που στην ουσία είναι ένα ascii αρχείο διπλού μήκους από το αρχικό...αγνώριστο έξω από την Μ2000.

Αν θα έγραφα σε c++ τον μεταφραστή της Μ2000 θα το έκανα για να μπορεί να είναι εκτελέσιμος και εκτός windows 98 και XP. Το πρόβλημα δηλαδή είναι στη συμβατότητα που χάνεται με τα χρόνια.
Σημείωσε πως η Μ2000 φτιάχνει και διαχειρίζεται mdb αρχεία..και δεν είναι σίγουρο ότι αυτό θα μπορεί να το κάνει και σε δέκα χρόνια. Αυτή η εναλλαγή λειτουργικών που προωθεί η Microsoft είναι εκνευριστική και βοηθάει μόνο τις μεγάλες εταιρείες λογισμικού που μπορούν να διαθέτουν κονδύλια για αναβαθμίσεις. Οι καλές προσπάθειες "μονοπρογραμματιστών" (αυτοι που γράφουν το δικό τους πρόγραμμα) πάνε στράφι και στο μόνο που μπορεί να χρησιμεύσουν είναι να χαρίσουν ιδέες στους μεγάλους.


Αν δεις τον κώδικα της Μ2000, θα τραβάς τα μαλλιά σου από το πόσο απλό είναι να προγραμματίζεις γλώσσες σε μορφή interpreter....

Άβαταρ μέλους
Bugman
Δημοσιεύσεις: 362
Εγγραφή: 01 Ιούλ 2003 20:39
Τοποθεσία: Πρέβεζα
Επικοινωνία:

Ruby

Δημοσίευση από Bugman » 10 Μάιος 2007 22:06

Κάπου στην αρχή παίζει η MOUT = interpret(DIS, "START")

το DIS είναι ένα picturebox
μπορεί η Interpret να κληθεί ξανά ενώ τρέχει η αρχική...και μάλιστα μπορεί να είναι το DIS η φόρμα που βρίσκεται το picturebox ή το αντικείμενο Printer

H Interpret είναι ο line interpreter ή μεταφραστής γραμμής. Υπάρχει και ο execute interpreter που τρέχει συνεχόμενες εντολές (σε πολλές γραμμές)...προγράμματα, και δομές, καθώς και να δώσει και άμεσες εντολές στον Interpreter.

Η συνάρτηση Block βγάζει ένα block κώδικα μέχρι το "}" αλλά προσέχει να μην λογαριάσει τα τυχόν "}" που μπορεί να βρίσκονται σε αλφαριθμητικές σταθερές.

βασική είναι η islabel

Κώδικας: Επιλογή όλων

Function IsLabel(a$, r$) As Integer
Dim RR%, one As Boolean
r$ = ""
If a$ = "" Then IsLabel = 0: Exit Function
a$ = LTrim$(a$)
    Do While Len(a$) > 0
        Select Case UCase(Left$(a$, 1))
        
        Case "."
            If one Then
            Exit Do
            ElseIf r$ <> "" Then
            r$ = r$ + Left$&#40;a$, 1&#41;
            a$ = Mid$&#40;a$, 2&#41;
            RR% = 1
            Else
            IsLabel = 0
            Exit Function
            End If
        Case "A" To "Z", "Α" To "Ω", "Ά", "Έ", "Ί", "Ό", "Ή", "Ώ", "Ύ", "ς"
            If one Then
            Exit Do
            Else
            r$ = r$ + Left$&#40;a$, 1&#41;
            a$ = Mid$&#40;a$, 2&#41;
            RR% = 1 'is an identifier or floating point variable
            End If
        Case "0" To "9"
           If one Then
            Exit Do
            ElseIf r$ <> "" Then
            r$ = r$ + Left$&#40;a$, 1&#41;
            a$ = Mid$&#40;a$, 2&#41;
            RR% = 1 'is an identifier or floating point variable
            Else
            Exit Do
            End If
            
        Case "$"
            If one Then Exit Do
            If r$ <> "" Then
            one = True
            RR% = 3 ' is string variable
            r$ = r$ + Left$&#40;a$, 1&#41;
            a$ = Mid$&#40;a$, 2&#41;
            Else
            Exit Do
            End If
        Case "%"
            If one Then Exit Do
            If r$ <> "" Then
            one = True
            RR% = 4 ' is integer variable
            r$ = r$ + Left$&#40;a$, 1&#41;
            a$ = Mid$&#40;a$, 2&#41;
            Else
            Exit Do
            End If
        Case "&#40;"
            If r$ <> "" Then
                Select Case RR%
                Case 1
                RR% = 5 ' float array or function
                Case 3
                RR% = 6 'string array or function
                Case 4
                RR% = 7 ' integer array
                Case Else
                Exit Do
                End Select
                r$ = r$ + Left$&#40;a$, 1&#41;
                a$ = Mid$&#40;a$, 2&#41;
            End If
            Exit Do
        Case Else
        Exit Do
        End Select
    Loop
    IsLabel = RR%
   a$ = LTrim&#40;a$&#41;

End Function

Κώδικας: Επιλογή όλων

Function interpret&#40;di As Object, b$&#41; As Boolean
Set master = di
b$ = Trim$&#40;b$&#41;
Dim w$, WW#, L%, s%, v As Long, p As Double, ss$, ohere$
Dim r1 As Long, r2 As Long
UINK$ = ""
di.FontTransparent = True
ohere$ = here$
here$ = ""
s% = Len&#40;b$&#41;
Do While Len&#40;b$&#41; <> L%
L% = Len&#40;b$&#41;
If IsSymbol&#40;b$, "&#123;"&#41; Then
If Not interpret&#40;di, block&#40;b$&#41;&#41; Then interpret = False&#58; Exit Function
If IsSymbol&#40;b$, "&#125;"&#41; Then
L% = Len&#40;b$&#41;
s% = L%
Else
interpret = False&#58; Exit Function
End If
End If
If IsSymbol&#40;b$, Chr&#40;13&#41; + Chr&#40;10&#41;&#41; Then
UINK$ = ""
s% = L%
End If
If IsSymbol&#40;b$, "&#58;"&#41; Then
s% = L%
UINK$ = ""
End If
If NOEXECUTION Then interpret = False&#58; Exit Function
Select Case IsLabel&#40;b$, w$&#41;
Case 1
    If s% = L% Then
            If IsSymbol&#40;b$, "="&#41; Then
            If GetVar&#40;w$, v&#41; Then
                If IsExp&#40;b$, p&#41; Then var&#40;v&#41; = p
            ElseIf IsExp&#40;b$, p&#41; Then
                GlobalVar w$, p
            End If
           
        Else
            Select Case UCase&#40;w$&#41;
        Dim x1 As Integer, y1 As Integer
        Dim X2 As Long, y2 As Long, SB$, nd%
            Case "SLOW", "ΑΡΓΑ"
            SLOW = True
            interpret = True
            Exit Function
            Case "FAST", "ΓΡΗΓΟΡΑ"
            SLOW = False
            interpret = True
            Exit Function
            Case "TARGET", "ΣΤΟΧΟΣ"
            If di.name <> "DIS" Then interpret = False&#58; Exit Function
                If IsLabel&#40;b$, w$&#41; = 1 Then
                    If Not GetVar&#40;w$, v&#41; Then 'getvar
                      GlobalVar w$, 0
                    x1 = GetVar&#40;w$, v&#41;
                      End If
                Else
                    interpret = False
                    Exit Function
                End If
                If Not IsSymbol&#40;b$, ","&#41; Then
                  interpret = False
                  Exit Do
                ElseIf IsStrExp&#40;b$, ss$&#41; Then  ' COMMAND
                If ss$ = "" Then interpret = False&#58; Exit Function
                x1 = 1
                y1 = 1
                X2 = -1
                y2 = -1
                nd% = 0
                SB$ = ""
                If IsSymbol&#40;b$, ","&#41; Then If IsExp&#40;b$, p&#41; Then x1 = Abs&#40;p&#41; Mod &#40;MX + 1&#41;
                If IsSymbol&#40;b$, ","&#41; Then If IsExp&#40;b$, p&#41; Then y1 = Abs&#40;p&#41; Mod &#40;MY + 1&#41;
                If IsSymbol&#40;b$, ","&#41; Then If IsExp&#40;b$, p&#41; Then X2 = CLng&#40;p&#41;
                If IsSymbol&#40;b$, ","&#41; Then If IsExp&#40;b$, p&#41; Then y2 = CLng&#40;p&#41;
                If IsSymbol&#40;b$, ","&#41; Then If IsExp&#40;b$, p&#41; Then nd% = Abs&#40;p&#41; Mod 20
                If IsSymbol&#40;b$, ","&#41; Then If Not IsStrExp&#40;b$, SB$&#41; Then interpret = False&#58; Exit Function
                Targets = False
                DoEvents
                ReDim Preserve q&#40;UBound&#40;q&#40;&#41;&#41; + 1&#41;
                q&#40;UBound&#40;q&#40;&#41;&#41; - 1&#41; = BoxTarget&#40;di, x1, y1, X2, y2, SB$, nd%, ss$&#41;
                var&#40;v&#41; = UBound&#40;q&#40;&#41;&#41; - 1
                Targets = True
                ElseIf IsExp&#40;b$, p&#41; Then
                  q&#40;var&#40;v&#41;&#41;.enable = Not &#40;p = 0&#41;
                  RTarget di, q&#40;var&#40;v&#41;&#41;
                Else
                interpret = False
                Exit Function
                End If
            Case "ΤΕΛΟς", "ΤΕΛΟΣ", "END"
            ExTarget = True&#58; INK$ = Chr&#40;27&#41;
            Case Else
            If Not Identifier&#40;di, w$, b$&#41; Then interpret = False&#58; Exit Function
            End Select
        End If
    End If

Case 3
If IsSymbol&#40;b$, "="&#41; Then
           
            If GetVar&#40;w$, v&#41; Then
                If IsStrExp&#40;b$, ss$&#41; Then var&#40;v&#41; = ss$
            ElseIf IsStrExp&#40;b$, ss$&#41; Then
                GlobalVar w$, ss$
            End If
End If
Case 4
If IsSymbol&#40;b$, "="&#41; Then
           
            If GetVar&#40;w$, v&#41; Then
                If IsExp&#40;b$, p&#41; Then var&#40;v&#41; = Int&#40;p&#41;
            ElseIf IsExp&#40;b$, p&#41; Then
                GlobalVar w$, p
            End If
End If
Case 5
If GetArray&#40;w$, r1, r2&#41; Then
p = GetArrayItem&#40;w$, r1, r2, b$&#41;
If p < 0 Then interpret = False&#58; Exit Function
On Error Resume Next
v = p
If Not IsSymbol&#40;b$, "="&#41; Then interpret = False&#58; Exit Function
If Not IsExp&#40;b$, p&#41; Then interpret = False&#58; Exit Function
arr&#40;v&#41; = p
Else
interpret = False&#58; Exit Function
End If
Case 6
If GetArray&#40;w$, r1, r2&#41; Then
p = GetArrayItem&#40;w$, r1, r2, b$&#41;
If p < 0 Then interpret = False&#58; Exit Function
On Error Resume Next
v = p
If Not IsSymbol&#40;b$, "="&#41; Then interpret = False&#58; Exit Function
If Not IsStrExp&#40;b$, ss$&#41; Then interpret = False&#58; Exit Function
arr&#40;v&#41; = ss$
Else
interpret = 0&#58; Exit Function
End If
Case 7
If GetArray&#40;w$, r1, r2&#41; Then
p = GetArrayItem&#40;w$, r1, r2, b$&#41;
If p < 0 Then interpret = False&#58; Exit Function
On Error Resume Next
v = p
If Not IsSymbol&#40;b$, "="&#41; Then interpret = False&#58; Exit Function
If Not IsExp&#40;b$, p&#41; Then interpret = False&#58; Exit Function
p = Int&#40;p&#41;
If Err.Number > 0 Then interpret = False&#58; Exit Function
arr&#40;v&#41; = p
Else
interpret = False&#58; Exit Function
End If
End Select
Loop
here$ = ohere$
interpret = b$ = ""
End Function

Απάντηση

Επιστροφή στο “Ruby & frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες