Tassos10 έγραψε:
Μάλιστα, μεγάλε είναι πάρα πολύ ενδιαφέρον αυτά που μας λες. Εγώ δε γνώριζα καν για τον cPython και πως η Python φτιάχτηκε για να απλοποίηση την C ( αν και το υποψιαζόμουν ).
Αλλά είναι άλλη η cPython και άλλη η Python; ( Έτσι όπως μας τα λες παραπάνω υποψιάζομαι πως διαφέρει )
Και μπορείς να συνδυάσεις Python με C σχετικά εύκολα;
O όρισμός της γλώσσας είναι η μορφή και ο κώδικας που βλέπεις εσύ ως python. Απο μόνος του όμως ο ορισμός δεν κάνεις τίποτα απλά σου λέει τι είναι τι, το πρόγραμμα καθαυτό της γλώσσα δηλαδή το VM , interpreter , standard libraries κτλ είναι αυτό που ονομάζουμε implementation ή αλλιώς "υλοποίηση". Έτσι λοιπόν ο Python που έχει φτιαχτεί με C ονομάζεται cpython , αυτό που δημιουργήθηκε με java - jython , αυτός που δημιουργήθηκε με .net ironpython, κτλ .
Αν γνωρίζεις τον python καλα και τα εργαλεία του και την C ναι ο συνδυασμός είναι αρκετά εύκολος για αυτό είναι και τόσο δημοφιλής ο cpython. Για να σου δώσω μια εικόνα, το 50% του cpython είναι γραμμένο σε C , ένα μεγάλο ποσοστό των βιβλιοθήκων απο τρίτους είναι επίσης C βιβλιοθήκες. Όποτε μπορείς να πείς οτι η C και Python συνεργάζονται άνετα.
Αν μπορείς κατατόπισες μας, είναι πολύ ενδιαφέροντα αυτά.
Επίσης εγώ για ctypes, Python C API , cython δε γνωρίζω τίποτα.
Google is your best friend
To Python C Api , είναι ένα σύνολο C εντολών (functions) που επιτρέπουν στην c να μιλάει στον cpython και αντίστροφα.
Το ctypes κανεις το ίδιο πράγμα αλλά επείδη δουλεύει με δυναμικές βιβλιοθήκες C , δηλαδή βιβλιοθήκες C που υπάρχουν ήδη στο συστημα σου , σου δίνει την δυνατότητα να μην χρειαστεί να γράψεις ουτε μια σειρά κώδικα σε C. Tα κάνεις όλα με Python.Αλλά είναι πολυ πιο αργό επείδη κάνει το όλο wrapping real time .
το Cython είναι μεση λύση, οπως το Python C API , θέλει να μεταγλωτίσεις τις βιβλιοθήκες C που θα χρησιμοποιήσεις με cpython αλλά αντίθετως τα κάνεις όλα με Python syntax και κάποιες επιλέον επεκτάσεις στην σύνταξη του Python για να μπορεί να κάνει ότι κάνει και η c. Όποτε έχει και μεγάλη ταχύτητα και δεν γράφεις C.
Υπόψην ότι υποστηρίζεται και η C++ με όλες τις παραπάνω λύσεις.
Και από εκεί και πέρα εξαρτάται το implementation , px ο jython τρέχει βιβλιοθήκες java σαν να είναι βιβλιοθήκες Python χωρίς έξτρα δουλειά, το ανάλογο κάνεις και ο ironpython για C#, κτλ .
Και οπότε υπάρχουν πίνακες και στην Python, είναι σαν τις λίστες απλώς όμως με στανταρ χώρο που ορίζετε από την αρχή; Και κυρίως χρησιμοποιούνται στους χαρακτήρες ή τα strings ;
άμα δεις το λινκ σου δείχνει οτι μπορείς να προσθέσεις και να αφαιρέσεις , εξάλλου και στην C αν χρησημοποιείς δείκτες η ποσότητα χώρου δεν είνα στάνταρ . Επίσης είναι συγκεκριμένος ο τύπος των δεδομένω απο την αρχή της δημιουργίας του όπως αντιλαμβάνεσαι είναι το ανάλογο της C, χωρίς τον πονοκέφαλο των δεικτών.
Υπόψην οτι στα λέω πολύ περιληπτικά, υπάρχουν και βιβλιοθήκες τρίτων όπως το numpy που δίνει τεράστια πληθώρα τύπων δεδομένων που σε κάποια σημεία μοίαζον με την C και το ίδιο σημβαίνει και με την C. Γενικά ο προγραμματισμός είναι ένα πολύ βαθή αντικείμενο.
Να επισημάνω εδώ ότι τα παραπάνω δεν ίσχύουν μόνο για Python , όλες οι γλώσσες έχω τρόπους επικοινωνίας μεταξύς τους , πχ εγώ φτιάχνω ένα τρόπο επικοινωνία της γλώσσας pharo με τον Python, και πολλά προγράμματα είναι φτιαγμένα σε πολλές γλώσσες.
Ευχαριστούμε πάρα πάρα πολύ.
ότι απορία έχεις ρώτα μου , χαρά μου να βοηθάω Έλληνες στην κατανόηση της τεχνολογίας γιατί ότι διδάσκεται στα σχολεία είναι το μαύρο χάλι.
Γνώσεις ⇛ Linux: Λίγα πράγματα┃ Προγραμματισμός: Pharo, Python, C++ , Delphi ┃ Αγγλικά: Πολύ Καλά
Ubuntu 14.04 64 bit
16 GB Ram
NVIDIA GTX 650 1 GB