ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ – ΤΜΗΜΑ ΠΛΑΡΟΦΟΡΙΚΗΣ ΕΠΛ371 –ΠρογραμματισμόςΣυστημάτων ΕΥΘΥΜΙΑ ΠΑΠΑΔΟΠΟΥΛΟΥ ΞΑΝΘΗ ΜΑΡΚΟΥ ΡΕΑ ΑΡΧΑΙΟΥ.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τι είναι ο προγραμματισμός
Advertisements

Το αλφαριθμητικό (string)
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
• Php • Joomla • Joomla Module • Παρουσίαση του συστήματος μας.
5η Συνάντηση Εκπαιδευτικών Πληροφορικής στη Δυτική Μακεδονία Πτολεμαΐδα, 29 Σεπτ 2005 Δημιουργία Δυναμικών Ιστοσελίδων με PHP και Dreamweaver MX Στυλιάδης.
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
MySQL + Γλώσσα Προγραμματισμού
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 2: Πίνακες και δυναμικά δεδομένα στη FORTRAN 90 Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ.
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΜΑΘ-3122/106 Προγραμματισμός
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
22/11/2004Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Εισαγωγή Γρηγοριάδης ΒασίλειοςΑΜ:753
PL/SQL.
Μέλη ομάδας Μαρία Στυλιανού Νίκος Οδυσσέως Γεωργία Χριστοδουλίδου
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μέλη ομάδας: Χρυσή Σέα Νικόλας Κλεάνθους Στέφανος Γεωργίου.
ΗΜΥ 100 Εισαγωγή στην Τεχνολογία 7 Νοεμβρίου 2008 Στυλιανή Πετρούδη ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ολυμπιάδα Πληροφορικής
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Τμήμα Πληροφορικής Πανεπιστημίου Κύπρου ΕΠΛ 371 – Προγραμματισμός Συστημάτων Ονόματα: Αντώνης Μαυρής, Γιώργος Ματθαίου, Χρίστος Κυριάκου Ταυτότητες: ,
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
PHP/MYSQL ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΟΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ ΤΥΡΟΛΟΓΟΥ ΓΛΥΚΕΡΙΑ ΑΜ 875 ΡΙΖΟΥ ΔΕΣΠΟΙΝΑ ΑΜ 816.
Google's Google App Engine and Google's Datastore API Andreas Manoli.
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
P ERL One of the most respectable general-purpose scripting languages Δημητρίου Νίκος Δημητρίου Θεόδωρος Ζαβού Έλλη.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Εισαγωγή στη JAVΑ (μέρος Α’)
Κουλίνας Μιχαήλ Α.Μ.:774 Μπουρνάζης Χρήστος Α.Μ.:792 Ρογκάκος Γεώργιος Α.Μ.:817.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
32η Συνάντηση Εκπαιδευτικών στη Δυτική Μακεδονία σε Θέματα Τ. Π. Ε
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ – FILE & PROCESS HANDLING Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Μάθημα 9 Λίγο απ’ όλα! HTML 5 Advanced PHP XML. HTML 5 Πρόκειται για μια νέα έκδοση της HTML που συμπληρώνει τις δυνατότητες της γλώσσας με κάποια Tags.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Εισαγωγή στον οντοκεντρικό προγραμματισμό (βασική εισαγωγή στο περιβάλλον εργασίας)» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης,
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Εισαγωγή στην Python.
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
Great Sand Dunes Η χρονογραμμή που ακολουθεί βασίστηκε στο πρότυπο της Christy Keeler ( Πηγές περιεχομένου.
3. Βασικά στοιχεία γλώσσας προγραμματισμού
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
Οδηγίες Εγκατάστασης της MySQL
2ο ΓΥΜΝΑΣΙΟ ΣΗΤΕΙΑΣ - ΤΑΞΗ Γ'
Εισαγωγή στην υλοποίηση δικτυακού τόπου
Εισαγωγή στη Java (Μέρος Α’)
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ – ΤΜΗΜΑ ΠΛΑΡΟΦΟΡΙΚΗΣ ΕΠΛ371 –ΠρογραμματισμόςΣυστημάτων ΕΥΘΥΜΙΑ ΠΑΠΑΔΟΠΟΥΛΟΥ ΞΑΝΘΗ ΜΑΡΚΟΥ ΡΕΑ ΑΡΧΑΙΟΥ

 Σχεδιαστής: Yakihiro «Matz» Matsumoto  Προέρχεται: Ιαπωνία την δεκαετία Φεβρουαρίου 1993  Υποψήφια ονόματα: ‘Coral’, ‘Ruby’  Επηρεάστηκε: Perl, Python, CLU, Smalltalk, Scheme, Eiffel κ.τ.λ.  Εναλλακτικές υλοποιήσεις: YARV, Jruby, Rubinius, IronRuby και MacRuby  Δημοσιευμένες εκδόσεις: o Ruby 0, Δεκεμβρίου 1995 o Ruby 1, Δεκεμβρίου 1996 o Ruby 1, o … o Ruby 1,8,5 o Ruby 1,9,1- 30 Ιανουαρίου 2009

 Java Virtual Machine (JVM) με τις ευλογίες της Sun  Windows χάρις στην ανάπτυξη της Microsoft  “Έξυπνα” κινητά τηλέφωνα (lRuby 1.9) Symbian, iPhone, Windows Mobile και RIM Black Berry χάρις στο Rhomobile  Linux  Mac OS  Palms  Unix, Dos, BeOS, OS/2

 Μαθαίνεται εύκολα αν υπάρχουν βασικές γνώσεις προγραμματισμού / Είναι μια γλώσσα με την οποία μπορεί κάποιος να ξεκινήσει  Εύχρηστο και γρήγορο εργαλείο  Απλότητα, περιεκτικότητα στον κώδικα /Απλή επεξεργασία των strings  Κατανοητός κώδικας, ξεκάθαρος και κομψός (ευκολία για τους προγραμματιστές)  Portability  Multithreading  Συνδυάζει πολλά χαρακτηριστικά από άλλες γλώσσες όπως Eiffel, Perl, Python και C++  Garbage Collector: Αποφεύγουμε τα διάφορα προβλήματα δέσμευσης μνήμης  Βγάζει κατάλληλα δυναμικά μηνύματα: π.χ πράξεις με NULL (nil)  ΔΩΡΕΑΝ ΕΓΚΑΤΑΣΤΑΣΗ – Open Source

Λόγω του ότι δεν υπήρχε η διάδοση που υπάρχει σήμερα για την συγκεκριμένη γλώσσα:  Το documentation για το API που υπάρχει αυτή τη στιγμή δεν είναι αρκετά βοηθητικό  Απόδοση: Χειρότερη σε σχέση με άλλες γλώσσες  Δεν μπορεί να ανταποκριθεί σε μεγάλης κλίμακας επιχειρηματικές εφαρμογές  Πιο αργή από PHP, ASP, Java

 Μπορούμε να κατεβάσουμε και να εγκαταστήσουμε πολύ εύκολα τη Ruby από την επίσημη της ιστοσελίδα ◦ Είναι εγκατεστημένη by default σε κάποια λειτουργικά (MAC OS X & Linux)  Βοηθητικά εργαλεία της Ruby ◦ irb (interactive Ruby) : Διαδραστικός μεταφραστής ◦ ruby (Ruby interpreter) : Ο κλασικός μεταφραστής για την ruby ◦ ri (Ruby information) : Εργαλεία για την αναζήτηση πληροφοριών σχετικά με μια κλάση, μέθοδο κ.τ.λ.

 Υπάρχουν 3 διαφορετικοί τρόποι να τρέξουμε ένα πρόγραμμα σε ruby ◦ Τρέχουμε το αρχείο με την εντολή ruby ◦ Τρέχουμε το αρχείο ως εκτελέσιμο αφού πρώτα τροποποιήσουμε τα δικαιώματα του ◦ Με το IRB Πιο κάτω παρουσιάζονται οι 2 τρόποι από τους 3 το κλασσικό παράδειγμα “Hello World”

 Γράφουμε τον κώδικα σε ένα αρχείο helloWorld.rb  Με την εκτέλεση της εντολής ruby helloWorld.rb εκτελούμε το πρόγραμμά μας #We can write comments this way puts "Hello World” >ruby helloWorld.rb Hello World >

 Μέσα στο αρχείο εισάγουμε το μονοπάτι που ορίζει τι θα εκτελεστεί  Γράφουμε τον κώδικα σε ένα αρχείο helloWorld.rb  Αλλάζουμε τα δικαιώματα του αρχείου για να μπορεί να εκτελεστεί  Τρέχουμε το εκτελέσιμο αρχείο #!/usr/bin/env ruby #We can write comments this way puts "Hello World“ >chmod 777 helloWorld.rb >./helloWorld.rb Hello World >

 Είναι γλώσσα που χρησιμοποιεί αντικειμενοστρεφή προγραμματισμό – Τα πάντα είναι αντικείμενα  Δεν έχουμε ρητή δήλωση μεταβλητών - Από μόνη της καταλαβαίνει τον τύπο των μεταβλητών.  ευκολία για προγραμματιστή  μπορεί να οδηγήσει σε λάθη όσο αφορά τα ονόματα μεταβλητών  Δεν χρειάζεται δυναμική δέσμευση μνήμης, γίνεται αυτόματα από την ίδια τη γλώσσα σύμφωνα με τις ανάγκες του προγράμματος  Παρέχει exception handling

Παραδείγματα σχετικά με τη σύνταξη της Ruby

#!/usr/bin/env ruby def fact(n) if n == 0 1 else n * fact(n-1) end puts "The factorial of #{ARGV[0].to_i} is: #{fact(ARGV[0].to_i)}\n" >ruby factorial.rb 5 The factorial of 5 is 120  Tο return statement δεν χρειάζεται γιατί η Ruby επιστρέφει το τελευταίο πράγμα που υπολογίζεται στην συνάρτηση. Μπορεί να χρησιμοποιηθεί όμως.

#!/usr/bin/env ruby def calculate() s=0 for i in do s=s + i end av=s/100 return s, av end sum,average=calculate print "Sum: #{sum}\n" print "Average: #{average}\n" >ruby multibleValues.rb Sum: 5050 Average: 50  Επιστρέφει ένα πίνακα που περιέχει τις τιμές των μεταβλητών που θα επιστραφούν από τη συνάρτηση

class Bird def fly puts "I'm flying..." end class Parrot<Bird def speak puts "I can speak too!" end class Penguin<Bird def fly puts "Sorry. I'd rather swim." end pigeon=Bird.new pigeon.fly myParrot=Parrot.new myParrot.fly myParrot.speak myPenguin=Penguin.new myPenguin.fly >ruby inheritance.rb I'm flying... I can speak too! Sorry. I'd rather swim.

>ruby arrays.rb foo bar 1:2:3:foo:bar foo bar 123foobar123foobar foo foo oo > #!/usr/bin/env ruby array = [1, 2, "3"] array=array + ["foo", "bar"] puts array array = array.join(":") puts array array=array.split(":") puts array array=array * 2 print "#{array}\n" word="foo" puts word word = word + " oo" puts word

>ruby strings.rb guess? baz Sorry, you lose. guess? quux You win! The word was quux. > #!/usr/bin/env ruby words = ['foobar', 'baz', 'quux'] secret = words[rand(3)] print "guess? " while guess = STDIN.gets guess.chop! if guess == secret puts "You win!" break else puts "Sorry, you lose." end print "guess? " end puts "The word was ", secret, "."

#!/usr/bin/env ruby def openFile(filename ) begin f= File.open(filename) rescue puts "An error occured while opening the file" ensure puts"Always executes" end openFile("text.txt") >ruby exceptionHandler.rb Always executes >  Σε περίπτωση που το αρχείο δεν ανοίξει ή δεν υπάρχει τότε με το rescue θα τυπωθεί το κατάλληλο μήνυμα. Το ensure εκτελείται πάντα.

Παραδείγματα που δείχνουν τις δυνατότητες της Ruby και σε ποιες εφαρμογές προτιμάται

#!/usr/bin/ruby require 'mysql' mysql = Mysql.init() mysql.connect('localhost') mysql.select_db('test') mysql.query("DROP TABLE IF EXISTS rocks") mysql.query("CREATE TABLE rocks (id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), rockname CHAR(20) NOT NULL);") mysql.query("INSERT INTO rocks (rockname) values('Granite');") mysql.query("INSERT INTO rocks (rockname) values('Coal');") mysql.query("INSERT INTO rocks (rockname) values('Quartz');") mysql.close()

require 'tk' root = TkRoot.new do title "Hello world!" minsize(250,250) end TkLabel.new(root) do text 'Hello world!' background 'blue' pack { padx 15; pady 15; side ‘left’} end Tk.mainloop

require 'rubygems' require 'ramaze' class MainController < Ramaze::Controller def index "Hello Word, this is my first site!" end end Ramaze.start Χρειάζεται να γίνει εγκατάσταση της ramaze μέσω gems >gem install ramaze ή >gem install manveru- ramaze -- source=

#!/usr/bin/env ruby require 'socket' #library declaration #function that establishes the connection with a webpage def openCon(page) if %r{([^/]+)/(.*)}i =~ page #splitting the page to domain and path $domain,path = $1, $2 end begin t = TCPSocket.new($domain, 80) #creating a connection to socket 80 with the address of the domain rescue puts "error: #{$!}" else t.print "GET /"+path+" HTTP/1.0\n\n”#gets the text from the path answer = t.gets(nil) t.close end

answer.gsub!("<","\n<") answer.gsub!("> \n<") old = File.open("links.dat.tmp", File::WRONLY|File::TRUNC|File::CREAT) old.print answer old.close findUrls("links.dat.tmp", page) end #function to find the urls in the text of the url that is in the file def findUrls(fileName, page) read = File.open(fileName) if %r{http/ ok}i =~ read.gets #checks if the page was opened correct #finds the urls which are in the text and does the appropriate format while read.gets do if %r{a\s+href=\"([^\/]+\/)(\/*)(.*[^\.html]\.html)\"[^>]*>}i =~ $_ ||%r{ ]*>}i =~ $_ cuturl=$3 if %r{(^www\..*)}i =~ cuturl url=$1

else url=$domain+"/"+ cuturl end flag = findInArrayUrl($arrayWeb, url) if flag ==1#if the url isn't in the array to be opened it is inserted in the array $arrayWeb=$arrayWeb+[url]; end else flagB = findInArrayUrl($arrayWebBroken, page) if flagB==1 #if the page was't opened correct puts it in the broken urls $arrayWebBroken =$arrayWebBroken +[page] end return $arrayWeb.length end

#function to check if the urls exist in the array with which it is called def findInArrayUrl (array, p) f=1 for i in 0..array.length-1 if array[i]==p f=0 break end return f end ############################## #main ############################# #gets the depth. If uncorrect prints the appropriate message if ARGV.length!=1 puts "Error! Wrong number of arguments!!“ else $depth= ARGV[0].to_i

countDepth = 0 count=0 i = 0 #initializing the crawler webpage=" $arrayWeb=[webpage] $arrayWebBroken = ["BROKEN URL"] urlD = 1 #it finds the urls and opens them until the given depth while countDepth <= $depth do while count < urlD do urlDepth = openCon($arrayWeb[count]) count = count +1 end urlD=urlDepth puts urlD countDepth = countDepth +1 end

#puts the broken urls in a file broken = File.open("brokenurls.dat", File::WRONLY|File::TRUNC|File::CREAT) broken.puts $arrayWebBroken broken.close #puts the urls that were opened in a file urlFile = File.open("urlFile.dat", File::WRONLY|File::TRUNC|File::CREAT) urlFile.puts $arrayWeb urlFile.close end

 Βιβλιογραφία o Αύξηση διαθέσιμων τίτλων σχετικά με την Ruby  Απόδοση o Αναμένεται εκθετική βελτίωση σε θέματα απόδοσης  Υποστήριξη Μεγάλες εταιρίες αρχίζουν να δείχνουν ενδιαφέρον για αυτή o Sun o IBM

 Η Ruby είναι μια εύκολη γλώσσα με απλή σύνταξη  Συνδυάζει script language και object oriented συνεπώς παράγουμε μικρό σε μέγεθος κώδικα και εύκολα συντηρήσιμο  Χρησιμοποιώντας τις κατάλληλες βιβλιοθήκες μπορούμε να υλοποιήσουμε κώδικα για ένα μεγάλο αριθμό εφαρμογών  Έχει μελλοντική εξέλιξη

   rubysocks/l-rubysocks-a4.pdf rubysocks/l-rubysocks-a4.pdf    ndex.htm ndex.htm  RoR RoR   ng.htm ng.htm 

ΕΥΧΑΡΙΣΤΟΥΜΕ...