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

Προγραμματισμός και Linux - ξεκίνημα.


SpyrosR

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

Καλησπέρα.

 

Ξεκαθαρίζω πως επέλεξα το Linux section γιατί θεωρώ πως είναι καταλληλότεροι οι εδώ θαμώνες για το θέμα μου, παρά τα παιδιά στο forum 'Προγραμματισμός'. Αν κρίνετε πως ταιριάζει καλύτερα στο άλλο, παρακαλώ να μετακινηθεί.

 

Είχα ξεκινήσει πριν περίπου 6 χρόνια το 'ταξίδι' στον προγραμματισμό με τη C++ για πρώτη γλώσσα (όχι δε κάνω πλάκα :fear:), αλλά ελάχιστα αργότερα την εγκατέλειψα, καθώς τα ενδιαφέροντά μου στράφηκαν γύρω από το web (xHTML, CSS, PHP, SQL). Φυσικά την έχω ξεχάσει τελείως, και ο μόνος λόγος που ίσως να μπορώ να συντάξω μια for loop είναι... επειδή η PHP είναι C-based και μοιάζουν αρκετά. Τον τελευταίο καιρό μου έχει ξαναμπεί το μικρόβιο για desktop προγραμματισμό, οπότε άρχισα να ψάχνομαι... ανεξαρτήτως OS ενδιαφέρομαι, αλλά με νοιάζει υπερβολικά περισσότερο το Linux μιας και αυτό χρησιμοποιώ αποκλειστικά. Άλλωστε προτιμώ την ιδέα της 'κοινότητας' παρά τη σχέση μαγαζί-πελάτης που υπάρχει σε commercial OSs.

 

Μετά από λίγο ψάξιμο, έχω καταλήξει στις εξής τρεις γλώσσες:

 

  • C
  • Python
  • HASKELL

 

Τη C τη θέλω επειδή έχω μάθει το στυλ της (λόγω C++ παλιότερα και PHP) και... 'την αγαπώ'. Μου κάθεται πολύ καλύτερα να βλέπω κώδικα C από οτιδήποτε άλλο. Αλλά τη θεωρώ υπερβολικά πολύπλοκη (και 'παλιά' - δεν έχει καν strings) για απλά projects, δε ξέρω κατά πόσο θα με εξυπηρετούσε.

 

Η Python απ' την άλλη, τη βλέπω ως τη "στάνταρ" γλώσσα για Linux. Όλο και περισσότεροι τη χρησιμοποιούν. Απλά με ανησυχεί μήπως ως interpreted γλώσσα, όπως είναι κι η PHP, έχει σημαντικά χαμηλότερη ταχύτητα εκτέλεσης από μια compiled.

 

Haskell, για πειραματισμό. Δε ξέρω αν έχει έρθει η εποχή για functional κώδικα, ή... αν μπορώ εγώ να την καταφέρω. Θα χρησίμευε για καθημερινό προγραμματισμό; Δε νομίζω να υπάρχει και το GTK+ σ' αυτή τη γλώσσα.

 

Θα ήθελα όσοι έχουν σχέση και με τους δύο κόσμους (προγραμματισμός + Linux) να βοηθήσουν. Τι ισχύει για τους παραπάνω 'φόβους' μου; Με ποια γλώσσα θα μου προτείνατε να ασχοληθώ, λαμβάνοντας υπόψιν την πρωτύτερη εμπειρία μου; Αξίζει να είμαι 'σαν εξωγήινος' για κάνα εξάμηνο προσπαθώντας να μάθω functional, ή καλύτερα κάτι συμβατικό;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγω θα ξεκικουνσα προγραμματισμό σε C++ με Qt Creator

http://www.qtsoftware.com/products/developer-tools?currentflipperobject=821c7594d32e33932297b1e065a976b8

 

Κοιτατε περιβαλλον προγραμματισμου :

screenshot-qt-creator-editor

 

Και λογω qt θα μπορεις να φτιαχνεις εφαρμογες οχι μονο για linux/windows αλλα και για nokia ;)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Παραθέτω ένα αντίστοιχο θέμα που είχα κάνει για python για τις απαντήσεις που μου δώσανε.

http://www.insomnia.gr/forum/showthread.php?t=298086

 

Επίσης όσο διάβασα από το dive into python, διαρκώς επισήμαινε τους παραλληλισμούς και τις διαφορές με άλλες γλώσσες (και τη C) πράγμα που εμένα με κούραζε, εφόσον δεν είχα γνώση καμίας, αλλά μάλλον θα σε βοηθήσει

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Soturin, περισσότερο κακό έκανες. :P

 

Το διάβασα αλλά πιο πολύ μπλέχτηκα. Λέει ο mikeXx, με την Python παίρνεις πακέτο ένα -90% performance σε σχέση με τη C; Καθόλου καλό. Δε διαφωνώ πως ίσως με μια σύγχρονη CPU να μην έχει τόση σημασία, αλλά με παρόμοια λογική κυκλοφόρησε η M$ τα Vista. Θεωρώ πως πρέπει να υλοποιούμε λύσεις που να εκμεταλλεύονται στο έπακρο μια CPU, όχι να τη χαραμίζουν. Απ' την άλλη ο apoikos με κάνει να σκέφτομαι ότι είναι μια "σωστή" γλώσσα, κι αυτό είναι σπάνιο με τόσο σκουπίδι που υπάρχει εκεί έξω. :o

 

Θα διαβάσω το 'Dive into Python' και ξαναγυρίζω δριμύτερος. :-)

 

Τη Haskell την αποκλείουμε τελείως για χρήση πέραν των πειραματισμών;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Soturin, περισσότερο κακό έκανες. :P

 

Το διάβασα αλλά πιο πολύ μπλέχτηκα. Λέει ο mikeXx, με την Python παίρνεις πακέτο ένα -90% performance σε σχέση με τη C; Καθόλου καλό. Δε διαφωνώ πως ίσως με μια σύγχρονη CPU να μην έχει τόση σημασία, αλλά με παρόμοια λογική κυκλοφόρησε η M$ τα Vista. Θεωρώ πως πρέπει να υλοποιούμε λύσεις που να εκμεταλλεύονται στο έπακρο μια CPU, όχι να τη χαραμίζουν. Απ' την άλλη ο apoikos με κάνει να σκέφτομαι ότι είναι μια "σωστή" γλώσσα, κι αυτό είναι σπάνιο με τόσο σκουπίδι που υπάρχει εκεί έξω. :o

 

Θα διαβάσω το 'Dive into Python' και ξαναγυρίζω δριμύτερος. :-)

 

Τη Haskell την αποκλείουμε τελείως για χρήση πέραν των πειραματισμών;

 

Για everyday projects η Python δεν παίζεται! Ψάξε και για κανένα άλλο ebook (προτείνω Core Python Programming με κλειστά τα μάτια). Και όσο για την απόδοση, τα critical procedures μπορείς να τα γράψεις σε C και να τα καλέσεις μέσω Python! Άλλη φάση! Και από βιβλιοθήκες, ότι μπορείς να φανταστείς.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το διάβασα αλλά πιο πολύ μπλέχτηκα. Λέει ο mikeXx, με την Python παίρνεις πακέτο ένα -90% performance σε σχέση με τη C; Καθόλου καλό. Δε διαφωνώ πως ίσως με μια σύγχρονη CPU να μην έχει τόση σημασία, αλλά με παρόμοια λογική κυκλοφόρησε η M$ τα Vista. Θεωρώ πως πρέπει να υλοποιούμε λύσεις που να εκμεταλλεύονται στο έπακρο μια CPU, όχι να τη χαραμίζουν.

 

Δεν συγκρίνονται όμοια πράγματα, γι αυτό το συμπεράσμα είναι άδικο.

 

Πριν επιλέξεις θα πρέπει να σκεφτείς αν για σένα και για τις εφαρμογές που θα φτιάξεις είναι πιο σημαντικά οι πολύ μεγαλύτερες επιδόσεις και η καλύτερη οικονομία πόρων που μπορεί να προσφέρει και ο έλεγχος που απαιτεί (δίκοπο μαχαίρι) η C, από τον πολύ μικρότερο χρόνο ανάπτυξης, το ευκολότερο debugging, και την μεγαλύτερη αναγνωσιμότητα στον κώδικά που σχεδόν σίγουρα θα προσφέρει η Python.

 

Η python και άλλες παρόμοιες γλώσσες μπορεί από μια άποψη να χαραμίζουν υπολογιστικούς πόρους, όμως από μια άλλη άποψη η C χαραμίζει ανθρώπινους πόρους, οι οποίοι συνήθως είναι πιο πολύτιμοι.

 

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

 

Από functional γλώσσες δεν έχω την παραμικρή ιδέα δυστυχώς.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Haskell, για πειραματισμό. Δε ξέρω αν έχει έρθει η εποχή για functional κώδικα, ή... αν μπορώ εγώ να την καταφέρω. Θα χρησίμευε για καθημερινό προγραμματισμό; Δε νομίζω να υπάρχει και το GTK+ σ' αυτή τη γλώσσα.

 

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σκεφτόμουνα και εγώ πολύ τελευταία τον προγραμματισμό σε linux και μια και ανοίχτηκε αυτό το thread είπα να ποστάρω. Οι δικες μου γνώσεις είναι σε c/c++ και θα ήθελα άμα μπορείτε να μου προτείνεται ένα καλο ebook,tutorial για προγραμματισμό σε linux.Μου αρέσει πολύ η ιδέα να προσφέρω στην κοινότητα, αν και οι γνώσεις μου δεν είναι τρελες αυτή τι στιγμή αλλα το linux είμαι σίγουρος ότι θα με έμπνευση.

 

*Edit:

Από όσο είδα λίγο το Qt μου φαίνεται είναι αυτό που θέλω, οποτε αν έχετε κάτι καλο να διαβάσω για Qt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Soturin, περισσότερο κακό έκανες. :P

 

sorry man :o

 

:lol:

 

 

Τη Haskell την αποκλείουμε τελείως για χρήση πέραν των πειραματισμών;

Aν δεν κάνω λάθος ο apoikos κάτι ξέρει, εκτός αν ήταν απλά έμμεσα σχόλια (γιατί με αφορμή τον xmonad την ανέφερε).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θα ήθελα να πω το εξής. Από τη στιγμή που δεν θέλεις να μάθεις τώρα development και αφού έχεις μια επαφή, η γλώσσα με την οποία θα επιλέξεις να ασχοληθείς πρέπει να είναι σε σχέση με το τι θέλεις να γράψεις. Αν θέλεις να γράψεις kernel θα ασχοληθείς με C, αν θέλεις να γράψεις μικρά προγραμματάκια που θα σου κάνουν τις καθημερινές δουλειές πιό εύκολες, θα γράψεις python/perl/haskell/bash κτλ κτλ. Αν θέλεις να γράφεις προγράμματα με GUI πιο μεγάλα και πολύπλοκα απ' ότι μικρά scripts τότε διαλέγεις και παίρνεις: C/C++ (για GTK/Qt), tcl, και πάλι python (tkinter) και η λίστα μεγαλώνει. Διάλεξε τι θέλεις να γράψεις και τα υπόλοιπα είναι διαδικαστικά. Αν πάλι θέλεις να αποκτήσεις γενικές γνώσεις και να μπορείς να αντιμετωπίζεις το 80% του κώδικα που θα βρεις μπροστά σου τότε πρέπει να μάθεις αρκετές γλώσσες αλλά οπωσδήποτε C και μία scripting γλώσσα (python ή perl) καθώς και shell scripting, τομέας στον οποίο έχει επικρατήσει το bash. Όσο περισσότερο μαθαίνεις μία γλώσσα, θα βρεις και τον τομέα που σου αρέσει και μετά θα βρεις την άκρη μόνος σου.

Για IDE επειδή κάποια πρόταση είδα πιο πάνω, το eclipse θεωρώ οτι είναι το καλύτερο από τα έτοιμα αν και συνεχίζω να πιστεύω ότι αν επενδύσεις το χρόνο και ασχοληθείς με το configuration του vim, αυτό με το (cscope και το astyle για C) είναι η καλύτερη λύση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

κύριε μ´όλο το σεβασμό

ένα μικρό συμπλήρωμα :o

 

το "γραφικό" μέρος της tcl είναι το tk και συνήθως αναφέρονται ως tcl/tk

 

Examples of Tk Widgets

http://pages.cpsc.ucalgary.ca/~saul/personal/archives/Tcl-Tk_stuff/tcl_examples/

 

tinker είναι το tk "φτιαγμένο" για python

 

Η python και άλλες παρόμοιες γλώσσες μπορεί από μια άποψη να χαραμίζουν υπολογιστικούς πόρους, όμως από μια άλλη άποψη η C χαραμίζει ανθρώπινους πόρους, οι οποίοι συνήθως είναι πιο πολύτιμοι.

 

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

συμφωνώ με τον nske

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

Η εκμάθηση μιας συναρτησιακής γλώσσας, και ιδιαίτερα μιας τόσο ιδιότροπης (με την καλή έννοια) όσο η Haskell, σίγουρα θέλει το χρόνο και την υπομονή της, μιας και θα απέχει αρκετά από αυτά που έχεις συνηθίσει. Επιπλέον πολλά πράγματα στη Haskell βγάζουν περισσότερο νόημα αν κατανοήσεις το θεωρητικό υπόβαθρο από πίσω (lambda calculus, type theory, κλπ), αφού η γλώσσα σχεδιάστηκε πρωτίστως για έρευνα στα πεδία αυτά. Παρ' όλ' αυτά, δεν είναι απαραίτητο κάτι τέτοιο, και υπάρχουν αρκετά βιβλία που έχουν μια αρκετά πρακτική προσέγγιση στα "εξωτικά" features της γλώσσας. Αρκετά καλό φαίνεται το real world haskell (έχω διαβάσει μόνο μέρος του οπότε δεν έχω πλήρη άποψη).

 

Υπάρχει μια έλλειψη βιβλιοθηκών στη Haskell, αλλά bindings για GTK+ υπάρχουν, καθώς και ορισμένα project με αρκετά ανορθόδοξες προσεγγίσεις στον γραφικό προγραμματισμό. Μια εκτενής λίστα βρίσκεται στο wiki.

 

Τίθεται το ζήτημα βέβαια, σε ποια γλώσσα να δώσεις περισσότερο βάρος, αλλά κι αυτό εξαρτάται από το είδος των εφαρμογών που σε ενδιαφέρει να αναπτύξεις. Το κριτήριο της "ταχύτητας" όπως το περιγράφεις δεν είναι καθόλου καλό μέτρο πάντως, με τη λογική αυτή θα 'πρεπε να γράφεις τα πάντα σε assembly. Η διαφορά ταχύτητας της python ή της haskell δεν είναι παρατηρήσιμη στην πλειοψηφία των εφαρμογών.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τέτοιου είδους threads με σκοτώνουν!

Ασχολούμαι κάμποσο καιρό με την C (σε linux πάντα) και έχω κατανοήσει κάποιοες βασικές έννοιες αλλά και έχω εξοικειωθεί με την σύνταξή της (<3 :)).

Τώρα, διαβάζοντας όλα αυτά για την python, μου γεννήθηκε η εξής απορία:

Να συνεχίζει κανείς να ασχολείται με ANSI C ή να το γυρίσει σε μια python, όπου θα μπορέσει σχετικά πιο εύκολα να δει αποτελέσματα;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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