Ποιά γλώσσα προγραμματισμού για web?

Γενικά θέματα για τις γλώσσες προγραμματισμού που δεν καλύπτονται από τις άλλες περιοχές της κατηγορίας.

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

Απάντηση
Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

Ποιά γλώσσα προγραμματισμού για web?

Δημοσίευση από nirvana » 22 Ιουν 2015 11:22

Καλημέρα σε όλους,

Έχω να κάνω μία προγραμματιστική ερώτηση γενικού τυπού. Παρακαλώ όποιος θέλει να πει την γνώμη του, θα το εκτιμήσω, αλλά με κανα 2 επιχειρήματα και όχι μια πρόταση του στύλ "Scala. Απλά μαμάει." μπας και βγάλουμε καμιά άκρη :)

Facts

- Είμαι web developer (υπάλληλος / κυρίως backend) και χρησιμοποιώ επαγγελματικά 3 χρόνια PHP (+Zend framework και τον τελευταίο καιρό πέρασα στο Laravel).

- Η PHP+laravel μου αρέσει πολύ. Πιστεύω ότι η PHP τα τελευταία χρόνια έχει περάσει από το μέτρια γλώσσα/ απλά παλέψιμη => πολύ καλή γλώσσα / σε συνεργασία με ένα καλό framework πάρα πολύ καλή. Το κακό είναι ότι πολλά projects σε PHP είναι παλιά και λίγο πάρταλοπρότζεκτς, με συνέπεια να είναι φτιαγμένα ψιλοχύμα, χωρίς σωστό OOP, χωρίς σωστό testing, versioning, db management, deployment κ.λ.π.

Ερώτηση

Τον επόμενο 1 - 1,5 μήνα θα έχω αρκετό ελεύθερο χρόνο και σκεφτόμουν να αρχίσω να μαθαίνω κάποια άλλη γλώσσα προγραμματισμού (για web παντα) η οποία να έχει τά παραπάνω καλούδια (καλές libs για orm, testing, migrations και γενικά καλά εργαλεία για να βάζει τους προγραμματιστές της σε κάποια καλούπια), και να τα έχει αρκετά χρόνια τώρα ώστε να φαντάζουν στην κοινότητα της το standard και όχι το extraδάκι. Τι χρησιμοποιήτε εσείς (γλώσσα+tools) και θεωρείτε ότι έχει όλα τα παραπάνω σε καλό βαθμό ώστε να επενδύσω τον χρόνο μου? Επίσης βάλτε και στην εξίσωση αν έχει καθόλου ζήτηση στην Ελλάδα (τώρα ή στο άμεσο μέλλον).

Γενικά είμαι ανάμεσα σε:
- Ruby
- Python
- Java
- Scala/Go

1) Για την Ruby με το rails έχω πάρει μία αρκετά καλή γεύση. Μου αρέσει πολύ που οι περισσότεροι χρησιμοποιούν το ιδιο framework. Είναι σχεδόν αυτό που έψαχνα, αλλά 1) πολύ αργή απ'οσο είδα λίγο και 2) το συντακτικό της μου φαινεται πολύ αφύσικο. Βασικά μου φαίνετε τόσο κακό που δεν νομίζω να ξεκινήσω με την ruby.
2) Για την Python δεν έχω τοσο μεγάλη επαφή, αλλά μου φαίνεται σαν να έχει παρόμοια πλεονεκτήματα και μειονεκτήματα με την ruby. Επίσης αργή και μέτριο συντακτικό.
3) Η Java φαίνεται ότι θα μείνει για καιρό στο προσκήνιο. Απ'ότι καταλαβαίνω τα εργαλεία που διαθέτει είναι ατελείωτα, είναι πολύ πιο γρήγορη απ'όλες τις υπόλοιπες και έχει πολλές ευκαιρίες εργασίας. Το κακό είναι η άσχημη γεύση που μου έχει αφήσει από τα ακαδημαϊκά μου χρόνια (αλλά δεν πιστεύω ότι είναι λόγος να την απορρίψω) και κυρίως ότι μου φαίνεται ΧΑΟΤΙΚΑ μεγάλη. Πραγματικά αν αποφασίσω να ψάξω λίγο την java νιώθω ότι δεν ξέρω από που να αρχίσω.
4) Scala/Go - Δεν έχω την παραμικρή επαφή για αυτές τις 2, γι'αυτό και τις έβαλα παρέα. Ξέρω μόνο ότι υπάρχει ένας ψιλοντόρος στο εξωτερικό. Είναι cool και startupαδικες γλώσσες προς το παρόν, αλλά δεν μπορώ να προβλέψω αν θα κρατήσει για καιρό.

Γενικά γέρνω προς την java αλλά πραγματικά μου έρχεται ίλιγγος από το μέγεθος. Λίγο που το έψαξα καταλαβαίνω ότι τα πιο κοινά tools είναι spring για mvc, hibernate για orm, flyway για migrations, junit για unit testing, jenkins και maven ή ant για build/deploy. Σωστά τα βρήκα? Όποιαδήποτε γνώμη ευπρόσδεκτη!

Ευχαριστώ

neaegnatia
Δημοσιεύσεις: 48
Εγγραφή: 27 Απρ 2015 12:38

Ποιά γλώσσα προγραμματισμού για web?

Δημοσίευση από neaegnatia » 22 Ιουν 2015 12:54

Πρώτα απ' όλα συμφωνώ με το Laravel+ php που χρησιμοποιείς το θεωρώ αξεπέραστο εργαλείο, το οποίο σου δίνει τα πάντα και μπορείς να κάνεις ατελείωτα πράγματα . Η υποστήριξη του community είναι ατελείωτη και με το laracasts δεν μένει τπτ αναπάντητο . Φυσικά δύστυχος ενώ το χρησιμοποιώ επίτηδες σε μικρά project για να μπορώ να μένω up to date και να μαθαίνω συνεχώς γι αυτό το απίστευτο framework πιστεύω οτι είναι πολύ μεγάλο για την ελλάδα τουλάχιστον μέχρι σήμερα.

Τώρα για το τι να διαβάσεις, θα σου έδινα μια άλλη οπτική του θέματος προσωπικά εάν θα με χαρακτήριζα σαν backend developer , μου αρέσει να είμαι ενημερωμένος για πολλά θέματα πάνω στην δουλειά μου αν και γνωρίζω ότι δεν γίνεται να είσαι σε όλα καλός (στην ελλάδα ζητάνε ένα designer- frontend -backend-ux designer με γνώσεις χειρισμού server δηλαδή έναν πολύ απλό guru με 1000 ευρώ....) θα σου έλεγα να κινηθείς στο να μάθεις node.js ή να μάθεις κάτι στο animation css3 ή angular framework.

Τώρα θα πεις ναι ρε φίλε αλλά γιατί το λές αυτό εγώ ζητάω κάτι σε backend. Εκεί θα δώσω ένα tip χωρίς να θέλω να κάνω διαφήμιση σε τίποτα , είμαι συνδρομητής στο net περιοδικό της πλατφόρμας zinio και εκεί παρέχεται μια προσφορά για δωρεάν 3ς μήνες για το frontemasters που έχει ΕΚΠΛΗΚΤΙΚΑ WORKSHOPS video για να ξεκινήσεις αλλά και πιο intemidiate.

Πρόταση μου είναι να προσπαθείς πάντα να μαθαίνεις έναν συνδυασμό front end backend .

Η java μου φαίνεται γλώσσα η οποία doesnt fit in web. Για μένα η Java είναι ότι η actionscript σε σχέση με τα css3 , και νομίζω ότι θα έχει την ίδια κατάληξη για τους ίδιους λόγους . Ελπίζω να σου έδωσα μια άλλη διάσταση :)

Άβαταρ μέλους
Kainourios
Ruby Moderator
Δημοσιεύσεις: 504
Εγγραφή: 18 Μάιος 2005 16:20
Τοποθεσία: Κορυδαλλός
Επικοινωνία:

Ποιά γλώσσα προγραμματισμού για web?

Δημοσίευση από Kainourios » 22 Ιουν 2015 14:16

Εξαρτάται τι θες να μάθεις να φτιάχνεις.

Συνήθως οι custom web applications που έχουν potentials ξεκινάνε με κάποια γρήγορη σε development time και με καλό maintainance γλώσσα (python, php, ruby, node.js) και κάποιο framework και έπειτα κάποια κομμάτια που είναι bottlenecks ανάλογα την application και τις ιδιαιτερότητες της, μεταφέρονται σε static-typed γλώσσες όπως η java, .ΝΕΤ, go, scala κλπ..

Όλες οι dynamic-typed γλώσσες πάνω κάτω την ίδια ταχύτητα έχουν και στο web δε θα δεις διαφορά μιας και δεν έχουν σημασία τα μs, τα responses είναι σε ms, το bottleneck είναι η database, υπάρχουν τρόποι για cache και optimize σε υψηλότερο επίπεδο κλπ.. Βέβαια κακό κώδικα μπορείς να γράψεις σε όλες τις γλώσσες και να παίρνει πολύ χρόνο εκτέλεσης αλλά μην κατηγορείς την γλώσσα, είναι ευθύνη του προγραμματιστή. Αν π.χ. έχεις κάποιο heavy αλγοριθμικό procedure, το γράψεις σε κάποια dynamic γλώσσα και σου αργεί δε σου φταίει η γλώσσα, φταίει η επιλογή σου.

Η δική μου αίσθηση είναι ότι σε APIs / mobile backend αυτή τη στιγμή προτιμάται node.js / Go ενώ σε custom web applications στην Ελλάδα επικρατεί το .NET και η php με κάποιο framework ενώ στο εξωτερικό επικρατεί η ruby(rails)/python(django) και σε enterprise υπάρχουν απ'όλα με προτιμότερη την java (που ήταν και είναι πάντα η πιο συνηθισμένη επιλογή στο enterprise).

Η python είναι καλή γλώσσα, είναι εύκολη και κάνει και για data science μιας και έχει πολλά έτοιμα libraries. Το μόνο που με ξενίζει είναι το diversity στις εκδόσεις της, υπάρχουν μεγάλες διαφορές μεταξύ python 2.6-2.7 με την python 3.4 και αυτό που παρατηρώ είναι ότι οι data scientists χρησιμοποιούν 2.7 μιας και μάλλον τα libraries είναι ακόμα σε αυτή την έκδοση, ενώ οι web developers πάνε σε 3.4 (αν κάνω λάθος, ας με διορθώσει κάποιος python dev).

Η ruby/rails είναι πολύ focused σε web και web applications, έχει πολλά libraries έτοιμα και updated και βρίσκεις πολύ εύκολα πώς να κάνεις κάτι. Έχει καλό community και αρκετή ζήτηση στο εξωτερικό. Στην rails 5 που θα βγει σε λιγότερο από χρόνο θα μπούνε τα websockets μέσα στο framework όπως και κάποια standards για ανάπτυξη API.

Το node.js που δεν το ανέφερες είναι επίσης ενδιαφέρον, έχει τη φιλοσοφία των microservices και του πιο modular κώδικα. Υπάρχουν πολλές απόψεις για το κατά πόσο σε συμφέρει να πας με αυτό το architecture και κατά πόσο τελικά είναι προτιμότερο και πιο εύκολο σε maintainance απ'ότι ένα monolithic MVC και αν ο glue code μεταξύ των microservices έχει κόστος... αλλά εξαρτάται πάντα από τους προγραμματιστές, την περιπλοκότητα της application κλπ. Συνήθως το προτιμούν για mobile backend και απλές εφαρμογές μιας και υποστηρίζει websockets.

Όσον αφορά τα MVC frameworks (django, laravel, rails, spring κλπ.), πάνω κάτω νομίζω πλέον έχουν αρκετά κοινά χαρακτηριστικά, σίγουρα θα βρεις κάποιο να κάνει κάτι που κάποιο άλλο δε θα το κάνει το ίδιο εύκολα και πάει λέγοντας. Αλλά όλα γίνονται πλέον με όλα οπότε είναι περισσότερο θέμα προτίμησης. Το μόνο θέμα είναι ότι αν επιλέξεις μια static γλώσσα, νομίζω ότι θα σε ξενερώσει σε σχέση με το laravel. Αυτό που έχω παρατηρήσει γενικά είναι ότι όταν μάθεις με κάποιο MVC framework, μετά σε ξενίζουν τα άλλα γιατί κάτι το έκανες με έναν τρόπο και πρέπει να το κάνεις με άλλο τρόπο σε κάποιο άλλο που δε θα σου φαίνεται το ίδιο elegant κλπ. Από την άλλη θα σ'αρέσουν κάποια άλλα elegant στοιχεία του νέου framework και πάει λέγοντας.

Τώρα μιας και είμαι rubyστας, εμένα μου φαίνεται περίεργο που προτιμάς το συντακτικό της php αντί της ruby :). Η ruby είναι σαν να γράφεις αγγλικά και έχει φτιαχτεί με έμφαση στο να γίνεται κατανοητή ακόμα και από ανθρώπους που έχουν μικρή επαφή με προγραμματισμό. Αυτό βέβαια δε σημαίνει ότι δε μπορείς να γράψεις και ακαταλαβίστικο κώδικα, αλλά σε εφαρμογές που έχει σημασία το maintainability, δεν το κάνεις.

Για μένα η ruby είναι η ιδανική γλώσσα για να ξεκινήσει προγραμματισμό κάποιος, είναι OOP όσο δεν πάει (όλα είναι αντικείμενα στην ruby) και είναι πολύ απλή και κατανοητή. Πολλοί υποστηρίζουν ότι η python είναι πιο εύκολη για κάποιον καινούριο αλλά προσωπικά διαφωνώ, κάνει enforce τα tabs που είναι πρόβλημα για έναν νέο προγραμματιστή και σαν συντακτικό έχει αρκετά σύμβολα... αλλά γούστα είναι αυτά.

Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

Ποιά γλώσσα προγραμματισμού για web?

Δημοσίευση από nirvana » 22 Ιουν 2015 15:36

Ουάου, ιδιαίτερα πλήρης η απάντηση σου Kainourios.

Με έβαλες σε σκέψεις με αυτό που λές για την ruby και το syntax. Ίσως ξεκίνησα στραβά και δεν διάβασα τα βασικά στοιχεία λεπτομέρώς. Θα το ξανακοιτάξω γιατί όντως η ruby + rails ήταν πάνω κάτω αυτό που έψαχνα. Και το laravel αντιγράφει πολλά από τα features του rails οπότε σίγουρα με βοηθάει αυτό.

Η αλήθεια είναι ότι την node.js δεν την σκεφτόμουν γιατί θεωρώ ότι είναι κάτι πολύ διαφορετικό από μια scripting programming language που ασχολούμαι τώρα, ή κάποια static-typed γλώσσα που είχα μιά επαφή στην σχολή, και δεν έχω τόσο χρόνο για να μάθω κάτι εντελώς καινούριο.

neaegnatia, δεν θα με ενδιέφερε κάτι τέτοιο (τύπου angular κ.λ.π). Είναι μία γνώση που θα ήθελα να έχω, αλλά αμφιβάλω αν θα με ενδιέφερε να ασχοληθώ επαγγελματικά.

Σας ευχαριστώ και τους 2 για τις απαντήσεις.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ποιά γλώσσα προγραμματισμού για web?

Δημοσίευση από Rapid-eraser » 22 Ιουν 2015 17:10

Το node.js είναι εκπληκτικό αλλά η αλήθεια είναι ότι θα πρέπει το project σου να κολλάει με την φιλοσοφία του. Εvent-driven, Νon-blocking I/O δύο πολύ σημαντικά πράγματα για το node.js που αλλάζουν τελείως την αρχιτεκτονική που γράφεις πράγματα. Events με τον ένα ή άλλο τρόπο μπορείς να βρεις σε όλες τις mainstream γλώσσες αλλά το θέμα του non-blocking είναι κάτι πολύ ιδιαίτερο.


Εγώ θα σου πρότεινα να παραμείνεις και να εντρυφήσεις στο framework του laravel.
Η version 5.1 είναι LTS και θα παραμείνει εν ζωή για τουλάχιστον 3 χρόνια (χωρίς να τρέμει το φυλλοκάρδι σου αν το επόμενο update ακυρώνει το προηγούμενο βλέπε angular). Μία συνδρομή στο laracasts δεν θα την μετανιώσεις ποτέ ακόμα και αν είσαι senior προγραμματιστής εκτός του ότι ο JefferyWay είναι απίστευτος τύπος μπαίνει και σε θέματα που δύσκολα θα δεις να αναλύουν αλλού πχ "n+1 select problem"

O Taylor Otwell έχει φροντίσει για την 5.1 να ξαναγράψει όλο το documentation που έχει γίνει πλέον πιο μάχιμο από ποτέ , plus του ότι φροντίζει πάντοτε να σε πιέζει για το "the laravel way"
Το ecosystem που έχει δημιουργηθεί γύρο από αυτό το framework δεν έχει να ζηλέψει σχεδόν τίποτα από ότι υπάρχει εκεί έξω. Μόνο τα requirements για php 5.5.9+ που υπάρχει δείχνει ότι προσπαθεί να ξυπνήσει τους πάντες και να πάνε ένα βήμα ακόμα πιο μπροστά.

Δεν θέλω να μπω σε μία διαδικασία σύγκρισης για το γιατί το ένα είναι καλύτερο από το άλλο καθώς πιστεύω ότι δεν οδηγεί πουθενά, και έχει ενδιαφέρον μόνο σε ακαδημαϊκό επίπεδο.
Όταν έχεις βγει στην αγορά η θεωρία από μόνη της δυστυχώς δεν γεμίζει το πορτοφόλι.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

Ποιά γλώσσα προγραμματισμού για web?

Δημοσίευση από nirvana » 22 Ιουν 2015 18:41

Ευχαριστώ για την άποψη σου. Η αλήθεια είναι ότι δεν έχω κάτι στο μυαλό μου που θα ήθελα να υλοποιήσω και να μην με καλύπτει η PHP και να χρειαστεί να πάω σε node.js.

Για να μην παρεξηγηθώ, αναφέρω ξανά ότι μου αρέσει πολύ και η php και το laravel. Και θέλω να συνεχίσω να τα χρησιμοποιώ και για προσωπικά πρότζεκτ και για επαγγελματικά. Απλά έχω λίγο χρόνο αυτό τον καιρό να μάθω και κάτι διαφορετικό και ψάχνω κατι που θα μπορούσε να μου ανοιξει λίγο τους ορίζοντες, Και γιατί όχι, άμα μου αρέσει και περισσοτερο, να παραγκώνιζα λίγο την PHP για χάρη της. BTW δεν ήξερα ότι η 5.1 είναι LTS. Ενδιαφέρον info.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ποιά γλώσσα προγραμματισμού για web?

Δημοσίευση από Rapid-eraser » 22 Ιουν 2015 18:51

Αν έχεις χρόνο να αφιερώσεις για learning curve τότε το node.js είναι ιδανική περίπτωση.

Μάλιστα ανοίγει πολλούς δρόμους συνεργασίας με το laravel (Event broadcasting+socket.io) οπότε γίνεται και ωραίος συνδυασμός.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Απάντηση

Επιστροφή στο “γλώσσες προγραμματισμού - γενικά”

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

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