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

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

Δημοσ.

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

 

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

 

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. Σωστά τα βρήκα? Όποιαδήποτε γνώμη ευπρόσδεκτη! 

 

Ευχαριστώ

 

Δημοσ.

Γεια σου φίλε, από μένα Νode.js, αν και δεν είναι μέσα στις επιλογές σου. Ασχολούμαι το τελευταίο τετράμηνο και με εχει εντυπωσιάσει σε αρκετά πράγματα.

 

- Καταρχάς το non-blocking I/O το κάνει εξαιρετικά γρήγορο, ίσως σου πάρει κάποιο χρόνο να συνηθίσεις την ιδέα του callback, ειδικά αν δεν έχεις ξαναδουλέψει με Javascript, αλλά όταν αρχίσεις να καταλαβαίνεις τι γίνεται, θα αρχίσεις να το απολαμβάνεις.

 

- Σαν web developer επίσης θα έχεις καταλάβει πόσο διαδεδομένη είναι η Javascript, με το Νode έχεις τη δυνατότητα να έχεις ίδια γλώσσα σε frontend και backend και ακόμα και να μοιράζεσαι κώδικα.

 

- To community είναι πολύ μεγάλο και μεγαλώνει και υπάρχουν πακέτα στο npm για τα πάντα που τα εγκαθιστάς στο project σου με ένα κλικ. Για frameworks, επίσης υπάρχουν αρκετά με το Express να είναι το πιο γνωστό και δικαίως αφού είναι πολύ απλό και δυνατό. Το Express δεν είναι αυστηρά MVC αλλά θα δεις ότι μπορείς να του δώσεις μια τέτοια μορφή και τα περισσότερα πρότζεκτ που θα βρίσκεις θα ακολουθούν τους ίδιους κανόνες.

 

- Είναι από τα βασικά runtimes σε πολλές PaaS πλατφόρμες (Heroku, Bluemix, κλπ) και το να ξεκινήσεις έτσι κάτι είναι πανεύκολο.

 

- Για πόσο ζήτηση έχει στην Ελλάδα δεν έχω ιδέα, αλλά στο εξωτερικό που βρίσκομαι εγώ, ζητούνε ασταμάτητα και πολλοί μεταφέρουν τα ΑΡΙ τους σε Node. Ακόμα, υπάρχουν πάρα πολλοί ρόλοι σαν full-stack developer μαζί με Angular ή Backbone και ακόμα και για frontend μόνο το ζητάνε σαν έξτρα. Ειδικά σε startup έχει αρχίσει και αντικαθιστά σε πολλά πρότζεκτ τη Ruby.

 

Αυτά σαν πολύ βασικά, μπορείς να ψάξεις φυσικά και ονλάιν και αν έχεις καμιά απορία ρώτα κι εδώ :)

  • Like 2
Δημοσ.

Γεια σου φίλε, από μένα Νode.js, αν και δεν είναι μέσα στις επιλογές σου. Ασχολούμαι το τελευταίο τετράμηνο και με εχει εντυπωσιάσει σε αρκετά πράγματα.

 

- Καταρχάς το non-blocking I/O το κάνει εξαιρετικά γρήγορο, ίσως σου πάρει κάποιο χρόνο να συνηθίσεις την ιδέα του callback, ειδικά αν δεν έχεις ξαναδουλέψει με Javascript, αλλά όταν αρχίσεις να καταλαβαίνεις τι γίνεται, θα αρχίσεις να το απολαμβάνεις.

 

- Σαν web developer επίσης θα έχεις καταλάβει πόσο διαδεδομένη είναι η Javascript, με το Νode έχεις τη δυνατότητα να έχεις ίδια γλώσσα σε frontend και backend και ακόμα και να μοιράζεσαι κώδικα.

 

- To community είναι πολύ μεγάλο και μεγαλώνει και υπάρχουν πακέτα στο npm για τα πάντα που τα εγκαθιστάς στο project σου με ένα κλικ. Για frameworks, επίσης υπάρχουν αρκετά με το Express να είναι το πιο γνωστό και δικαίως αφού είναι πολύ απλό και δυνατό. Το Express δεν είναι αυστηρά MVC αλλά θα δεις ότι μπορείς να του δώσεις μια τέτοια μορφή και τα περισσότερα πρότζεκτ που θα βρίσκεις θα ακολουθούν τους ίδιους κανόνες.

 

- Είναι από τα βασικά runtimes σε πολλές PaaS πλατφόρμες (Heroku, Bluemix, κλπ) και το να ξεκινήσεις έτσι κάτι είναι πανεύκολο.

 

- Για πόσο ζήτηση έχει στην Ελλάδα δεν έχω ιδέα, αλλά στο εξωτερικό που βρίσκομαι εγώ, ζητούνε ασταμάτητα και πολλοί μεταφέρουν τα ΑΡΙ τους σε Node. Ακόμα, υπάρχουν πάρα πολλοί ρόλοι σαν full-stack developer μαζί με Angular ή Backbone και ακόμα και για frontend μόνο το ζητάνε σαν έξτρα. Ειδικά σε startup έχει αρχίσει και αντικαθιστά σε πολλά πρότζεκτ τη Ruby.

 

Αυτά σαν πολύ βασικά, μπορείς να ψάξεις φυσικά και ονλάιν και αν έχεις καμιά απορία ρώτα κι εδώ :)

a.k.a MEAN stack

Δημοσ.

Όχι απαραίτητα ΜΕΑΝ, αλλά ισχύει ότι αυτό ξεχωρίζει σαν opinionated template που θέλει και ο ΟΡ. Πάντως το Node.js σαν πλατφόρμα είναι αρκετά ευέλικτο γενικά και όχι όσο opinionated όσο η Ruby on rails πχ.

 

Απλά σημείωση γιατί πολύς κόσμος νομίζει ότι όλα τα πρότζεκτ σε Node χρησιμοποιούν NoSQL :P

Δημοσ.

Από αυτά που λες η πιο ταιριαστή επιλογή μου φαίνεται Ruby/Rails, με μειονεκτήματα ότι α) δε σου αρέσει οπτικά (αλλά αυτό προσωπικά δεν το θεωρώ σημαντικό) και β) από προσωπική εμπειρία μένω με την εντύπωση ότι Rails = το παράδειγμα προς αποφυγή όσον αφορά το θέμα της κατανόησης του software design (αλλά με χρονικό ορίζοντα που μετριέται σε μήνες δε νομίζω πως αυτό είναι που ψάχνεις εδώ).

 

Το ότι Ruby == slow δε βλέπω γιατί έχει σημασία. Δεν ετοιμάζεσαι για αγώνες ταχύτητας.

Δημοσ.

Εγώ θα σου πρότεινα να πας ή με το Environment του Spring Framework και ιδιαίτερα Spring Boot + (Spring Data, Spring WebMVC ktl). Μπορείς να χρησιμοποιήσεις και Groovy αν και τώρα με την Java 8 δεν κερδίζεις και πάρα πολλά. Επίσης το Spring Boot κάνει Hot Deploy και τα classes όπως το Grails πράγμα που τα σπάει για development.

 

Για build τα περισσότερα έχουν γραφτεί με Maven, αλλά το μέλλον είναι το Gradle το οποίο είναι σαφέστερα πιό εύκολο και πολύ πιο ευέλικτο εργαλείο. Το Spring Framework/Boot χρησιμοποιεί στοχευμένες τεχνολογίες (Hibernate, Flyway, Gradle etc) και έτσι δεν θα χαθείς με το χάος των επιλογών. Για front-end θα σου πρότεινα AngularJS(ή React) + Coffeescript καθώς να μάθεις να παίζεις με Gulp.js, Bower και NPM.

 

Εδώ https://start.spring.io/μπορείς να φτιάξεις ενδεικτικά starter projects και να μπείς γρήγορα στο νόημα.

 

Η εναλλακτικά Play Framework με Scala (πιο δύσκολο option) αλλά πολύς ντόρος...έτσι και βρείς καμια remote δουλειά θα πληρώνουν το βάρος σου σε χρυσάφι αν το ξέρεις :P. Αλλά Ελλάδα ξέχνα το..."Scala? τι'ειν τούτο...φέρε να γράψουμε servlets και JSP's :p")

Δημοσ.

Για full stack web development το Node.js είναι απ τις καλύτερες επιλογές αφου ορισμένες βιβλιοθήκες μπορούν να χρησιμοποιηθούν και στο front αλλα και στο back-end. Επίσης θα έχεις μία γλώσσα και για τα 2.

  • 2 εβδομάδες αργότερα...
Δημοσ.

Nodejs από εμένα . Το web γίνεται όλο και πιο real-time οπότε σιγά σιγά βλέπω την PHP να χάνει έδαφος . Η ιδέα της JavaScript σε front και back end είναι πολύ καλή και κερδίζει συνεχώς έδαφος. Σε συνδιασμό με mongoDB,socket.io και express μπορείς να κάνεις τα πάντα εύκολα και αποδοτικά με κλεφτές ματιές στο AngularJS :)

Δημοσ.

Angular.js κατ εμέ που είναι ολόκληρο framework, με Bootstrap και ASP.NET MVC αν θες πραγματικά να μάθεις cutting edge που μπορείς να κάνεις παπάδες.

 

node.js δεν βλέπω που η χρήση της. Είναι για να τρέχεις javascript χωρίς browser και κατά κόρον για να τρέχεις web servers.

Δημοσ.

 

node.js δεν βλέπω που η χρήση της. Είναι για να τρέχεις javascript χωρίς browser και κατά κόρον για να τρέχεις web servers.

 

Το προτιμούν πολλοί γιατί μαθαίνεις μόνο Javascript για front και back end καθώς για για την DB (MongoDB etc), αντί για π.χ. JS+Java+SQL, αν και είναι υπερτράτζικ η JS, ένας pre-processor όπως Typescript, Coffeescript την κάνει πολύ πιό ανεκτή.

Δημοσ.

Το δυνατό  σημείο του nodejs έιναι ότι γράφεις non-blocking code (δε περιμένεις) αλλά μετα έχεις να ανησυχείς για θέματα ασφαλείας στο σερβερ. Επίσης αν δε κάνω λάθος η mongo δεν είναι document-oriented?(δηλαδή δεν είναι για όλες τις χρήσεις όπως ένα στανταρ RDBMS ).

Δημοσ.

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

Καλύτερα να αφιερώνουμε το χρόνο στο δημιουργικό κομμάτι της εφαρμογής.

π.χ.
Γιατί δηλαδή κάποιος να κάτσει να γράψει ένα νέο control, αντί να χρησιμοποιήσει π.χ την εργαλειοθήκη Kendo για ολόκληρο το UΙ;
Και αν θέλει να προχωρίσει πιο πολύ, AngularJS είναι ίσως το πιο ολοκληρωμένο framework για να κάνει αυτό που θέλει.

Και κάθετε να κάνει τα υδραυλικά σε PHP, ASP.NET MVC ακόμα και JSP μόνο. (ως προγραμματισμό)
 

Δημοσ.

Το δυνατό  σημείο του nodejs έιναι ότι γράφεις non-blocking code (δε περιμένεις) αλλά μετα έχεις να ανησυχείς για θέματα ασφαλείας στο σερβερ.

 

To ίδιο μπορείς να κάνεις πλέον και με Java Frameworks αλλά και το Play Framework (Scala)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...