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

Μερικές διευκρινήσεις για επιλογή web programming γλώσσας


antonisid

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

Δημοσ.

Γεια σας,

 

Γνωρίζω αρκετά καλά php,mysql και C αλλά θα'θελα να μάθω κι άλλη μια γλώσσα κυρίως για εφαρμογές διαδικτύου.Διάβασα σ'ένα άλλο thread για την Python αλλά πριν καταλήξω σ'αυτήν θα θελα μερικές διευκρινήσεις: :shifty:

 

α)Καταρχάς,θα ήθελα να μου πείτε ποια η διαφορά αν χρησιμοποιήσω oop στην Php και φτιάχνω τον κώδικα με κλάσεις απ'το να κάνω το ίδιο με κάποια άλλη γλώσσα που υποστηρίζει αντεικενοστρέφεια πχ την Python.

 

β)Διάβασα επίσης ότι η Python καλύπτει και εφαρμογές desktop αλλα και mobile.Αυτό δεν είναι πρακτικό ως έναν βαθμό,να γνωρίζω δηλαδή μια web programming γλώσσα και παράλληλα να έχω την δυνατότητα και δημιουργία εκτός web εφαρμογές?Αν κάνω λάθος σ'αυτό πείτε μου.

 

γ)Κάτι πολύ βασικό.Στην Html γίνεται τόσο εύκολα import η Python όπως η Php που είναι πανεύκολο?

 

Αυτά είναι τα βασικά μου ερωτήματα και θα'θελα απαντήσεις. :whistle:

 

Επίσης αν υπάρχει κάποια άλλη πρόταση για Ruby on Rails,Perl,Java κτλ θα'ναι ευπρόσδεκτη.

 

Ευχαριστώ

Δημοσ.

Θα σου έλεγα ή να συνεχίσεις με php και να γίνεις ακόμη καλύτερος εκεί. Αλλά για να θες μια 2η γλώσσα θα χεις τους λόγους σου. Αφού ξέρεις c ίσως πήγαινε σε java ή σε καμιά c#.

Δημοσ.

Σας ευχαριστώ για τις απαντήσεις.Jquery ξέρω μιας και το πρότεινε ο orotoi.Θα μου απαντήσετε και στα ερωτήματα που έθεσα όμως? :whistle:

Δημοσ.

a. Δε ξέρω για τις διαφορές, δεν έχω δουλέψει με Python, αλλά δε νομίζω να υπάρχουν περα του κώδικα προφανώς μεγάλες διαφορές (σε ταχύτητα ή κάτι τέτοιο). Εγώ θα έμενα σε php.

 

b. Μπορείς και με php. http://devzone.zend.com/article/2654

 

c. Απο κάτι παραδείγματα που χω δεί νομίζω δεν είναι το ίδιο. Θεωρώ την Php πιο εύκολη σε αυτό. Γράφεις html, τσούπ αν θες πετάς και λίγο php μέσα (και τουμπαλιν).

Δημοσ.

Κοίτα ανοίγεις τεράστια συζήτηση.

Η Python σε συνδυασμό με ένα καλό web framework σου λύνει τα χέρια σε σχέση με το να γράφεις messy php κώδικα. Εννοείται πως ξεχνάς πρακτικές

Γράφεις html, τσούπ αν θες πετάς και λίγο php μέσα (και τουμπαλιν).

 

...

Αν θες να κάνεις τέτοια μείνε σε php. Θα έλεγα ότι το μεγαλύτερο μειονέκτημα της php όμως είναι αυτό. Ότι αφήνει τον developer ελεύθερο να δημιουργήσει messy slopy code..

Αυτό είναι και το μεγαλύτερο πλεονέκτημα της python. Ότι είναι μια όμορφη, δυναμική γλώσσα στην οποία παράγεις καθαρό κώδικα.

 

Σε κάθε περίπτωση για να είναι σωστή η σύγκριση θα πρέπει να συγκρίνουμε και την php μαζί με κάποιο php framework π.χ cakePHP, CodeIgniter.....

 

Δεν είναι και τόσο δίκαιο να συγκρίνεις δηλαδή την Php που είναι μια γλώσσα, με ένα web framework (RoR).

Αν τώρα ήδη χρησιμοποιείς cakePHP υπάρχει λόγος να στραφείς προς RoR ή python/Django ;

 

Γενικά όχι. Δεν σου προσφέρουν και πολλά παραπάνω. Είναι περισσότερο personal style choice. Επιπλέον η php έχει το μεγάλο πλεονέκτημα του τεράστιου community αλλά και ότι έχεις support σε ότι web server υπάρχει εκεί έξω.

Παρόλα αυτά, επειδή η python έχει πολύ μικρό learning curve, αλλά και επειδή όπως είπες μπορείς να φτιάξεις και desktop apps με αυτήν (όχι όμως mobile παρά μόνο σε λίγες πλατφόρμες), αλλά και επειδή είναι πολύ χρήσιμη γενικά, εγώ θα σου πρότεινα να την δοκιμάσεις.

Δημοσ.

Κοίτα ανοίγεις τεράστια συζήτηση.

Η Python σε συνδυασμό με ένα καλό web framework σου λύνει τα χέρια σε σχέση με το να γράφεις messy php κώδικα. Εννοείται πως ξεχνάς πρακτικές

 

...

Αν θες να κάνεις τέτοια μείνε σε php. Θα έλεγα ότι το μεγαλύτερο μειονέκτημα της php όμως είναι αυτό. Ότι αφήνει τον developer ελεύθερο να δημιουργήσει messy slopy code..

Αυτό είναι και το μεγαλύτερο πλεονέκτημα της python. Ότι είναι μια όμορφη, δυναμική γλώσσα στην οποία παράγεις καθαρό κώδικα.

 

Σε κάθε περίπτωση για να είναι σωστή η σύγκριση θα πρέπει να συγκρίνουμε και την php μαζί με κάποιο php framework π.χ cakePHP, CodeIgniter.....

 

Δεν είναι και τόσο δίκαιο να συγκρίνεις δηλαδή την Php που είναι μια γλώσσα, με ένα web framework (RoR).

Αν τώρα ήδη χρησιμοποιείς cakePHP υπάρχει λόγος να στραφείς προς RoR ή python/Django ;

 

Γενικά όχι. Δεν σου προσφέρουν και πολλά παραπάνω. Είναι περισσότερο personal style choice. Επιπλέον η php έχει το μεγάλο πλεονέκτημα του τεράστιου community αλλά και ότι έχεις support σε ότι web server υπάρχει εκεί έξω.

Παρόλα αυτά, επειδή η python έχει πολύ μικρό learning curve, αλλά και επειδή όπως είπες μπορείς να φτιάξεις και desktop apps με αυτήν (όχι όμως mobile παρά μόνο σε λίγες πλατφόρμες), αλλά και επειδή είναι πολύ χρήσιμη γενικά, εγώ θα σου πρότεινα να την δοκιμάσεις.

 

Έχεις κάποιο παράδειγμα για να καταλάβουμε γιατί με python δεν γράφεις messy κώδικα. Γενικά εγώ δεν έχω ασχοληθεί αλλά

φίλοι μου που εμπιστεύομαι θεωρούν ότι είναι καλό να επενδύσεις σε python αλλά και ruby.

Δημοσ.

Έχεις κάποιο παράδειγμα για να καταλάβουμε γιατί με python δεν γράφεις messy κώδικα. Γενικά εγώ δεν έχω ασχοληθεί αλλά

φίλοι μου που εμπιστεύομαι θεωρούν ότι είναι καλό να επενδύσεις σε python αλλά και ruby.

 

 

Κοίτα.

 

Η ruby πρώτα (μέσα από το RoR) και στη συνέχεια και άλλες γλώσσες έκαναν "διάσημα" concept όπως το MVC το "Dont-repeat-yourself" και το "Convention over Configuration".

 

Δεν μπορώ να κάτσω να στα αναλύσω εδώ, αλλά άμα τα κάνεις google θα βρεις άπειρη ύλη για διάβασμα.

 

Όταν γράφεις λοιπόν κώδικα με Python/Django αλλά και με RoR είσαι "υποχρεωμένος" να χρησιμοποιείς αυτές τις πρακτικές. Φυσικά αυτό είναι καλό, αν εξαιρέσεις ένα αρχικό μούδιασμα που παθαίνεις όταν ανακαλύπτεις ότι δεν μπορείς να κάνεις πλέον "χακεριές".

 

Και στην php όμως, αν χρησιμοποιήσεις κάποιο MVC web-framework όπως το cakePHP έχεις αυτά τα πλεονεκτήματα (εξάλλου το cakePHP φτιάχτηκε ακριβώς ως αντιγραφή των concepts που έγιναν γνωστά μέσα από το RoR).

Δημοσ.

Αυτό ακριβώς. Μετά από αρκετό χρόνο ενασχόλησης μου με τη RoR, ανακάλυψα πως ακόμη προτιμώ την PHP. Παρόλαυτά, δεν μπορώ να μην αναγνωρίσω πως μέσω της RoR έκανα τον κώδικα μου πολύ πιο ξεκάθαρο και δομημένο.

 

Πέραν των DRY/DIE, ReST και Convention-over-Configuration, τα 2 σημαντικότερα πράγματα που κέρδισα από το Rails, ήταν η κατανόηση διαφόρων αρχιτεκτονικών (όχι μόνο του MVC που χρησιμοποιεί το Rails), καθώς και το ότι, πλέον, ο κώδικάς μου είναι ξεκάθαρος. Πάνω πάνω οι μεταβλητές, από κάτω η επεξεργασία τους και στο τέλος η προβολή των δεδομένων. happy.gif

Δημοσ.

Διάβασε Ruby και δώσε μεγάλη βάση στο Rails. Όχι για να το χρησιμοποιήσεις, αλλά για να αρχίσεις να γράφεις πολύ καλύτερη PHP... wink.gif

Μπορείς να μου πεις πως σχετίζονται αυτα τα 2? Το θεωρώ πολύ σημαντικό!! :shifty:

 

Και κάτι ακόμα

 

Αν γνωρίζω καλά Php oop τότε ουσιαστικά μπορώ να μάθω εύκολα και γρήγορα οποιαδήποτε άλλη αντικειμενοστραφή γλώσσα?Είναι κάποιο βήμα τουλάχιστον?

Δημοσ.

Αν ξέρεις καλή php η python θα σου φανεί παιχνιδάκι. Η python έχει πολλή ζήτηση εξωτερικό, αν σε ενδιαφέρει η αγορά εργασίας.

Δημοσ.

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

 

Στην PHP, λίγο πολύ, εκεί που παράγεις το γραφικό της σελίδας σου (πχ print "<img src='";), κάπου ανάμεσα δηλώνεις μια καινούργια μεταβλητή (πχ $img_src = "photo.jpg"; print $img_src;), και, ταυτόχρονα επεξεργάζεσαι και μερικές ακόμα μεταβλητές (πχ $alt_text = $place . $date; print "alt='$alt_text'"). Αυτό στην RoR είναι απαράδεκτο. Επειδή η δομή των αρχείων και ο σχεδιασμός της βάσης γίνεται αυτόματα*, αναγκάζεσαι και δουλεύεις με μοντέλο MVC, διαχωρίζοντας έτσι το Μοντέλο (την κλάση που περιέχει όλα τα δεδομένα σου), την Προβολή (το κομμάτι του κώδικα που είναι υπεύθυνο για την απεικόνιση των δεδομένων σου) και το Controller (το κομμάτι του κώδικα στο οποίο περιγράφεται όλή η επεξεργασία των δεδομένων σου).

 

Φαντάσου το εξής παράδειγμα εφαρμογής του MVC στην PHP:

 

To file structure είναι το εξής:

 

>
/app
   /controllers
       /usersController.php
   /models
   	/users.php
   /views
   	/users.php
/index.php

 

 

Το index.php έχει 3 includes:

 

>
include "controllers/usersController.php";
include "models/users.php";
include "views/users.php";

 

 

Το models/users.php:

 

>
class User {

 var $name;
 var $age;
 var $work;

 function set_name($name) {
   $this->name = $name;
 }

 function get_property() {
   return $this->name;
 }

 function set_age($age) {
   $this->age = $age;
 }

 function get_age() {
   return $this->age;
 }

 function set_work($work) {
   $this->work= $work;
 }

 function get_work() {
   return $this->work;
 }

}

 

 

Μετά έχεις το controllers/users.php:

 

 

>
$me = new User;
 $me->set_property("name","thanocaster");
 $me->set_property("age","7");
 $me->set_property("work","πυρινικός υδραυλικός");

 $name = $me->get_propery("name")
 $age = $me->get_propery("age")
 $work = $me->get_propery("work")

 

 

Τέλος, έχεις το views/users.php:

 

 

>
$me = new User;
 Γεια σου antonis_id! Είμαι ο <?php print $name; ?>, είμαι <?php print $age; ?> χρόνια γραμμένος στο insomnia, και είμαι ένας πετυχημένος <?php print $work; ?>.

 

 

Έτσι, καταφέρνεις δυο πράγματα: Πρώτον, ο κώδικάς σου γίνεται πολύ πιο ευανάγνωστος, διότι έχεις ξεκάθαρα το κομμάτι στο οποίο γίνεται η δήλωση και το initialisation των μεταβλητών σου, το κομμάτι που γίνεται η επεξεργασία τους, και, τέλος, το κομμάτι που γίνεται η προβολή τους. Επίσης, είναι πλεόν πανεύκολο να προσθέσεις δυνατότητα διαχείρησης (CRUD) στο site σου.

 

Αν θέλεις να πάρεις μια καλή γεύση του πόσο εύκολα γίνονται κάποια πράγματα, πέρνα μια βόλτα από αυτό το αρθράκι (το part 2 εδώ). Χιντ/ερώτηση: με συμβατικό τρόπο γραφής της PHP, πόσες γραμμές κώδικα θα είχες χρησιμοποιήσει, μόνο για τα SQL Queries και την ανάθεση μεταβλητών με while statements;

 

* Λέγεται scaffolding. Τρέχεις μια εντολή από κονσόλα με παράμετρο το είδος της εφαρμογής που θέλεις να φτιάξεις, και το ίδιο το Rails, πάνω σε προκάτ templates σου φτιάχνει τη βάση και τη δομή των αρχείων. Γενικά, όταν ασχολιόμουν με το Rails, ξέχασα να γράφω SQL (άλλος ένας λόγος που επέστρεψα στην PHP είναι η δεδομένη αγάπη μου για τη MySQL). happy.gif

Αρχειοθετημένο

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

  • Δημιουργία νέου...