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

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

Δημοσ.

- Ο Schild Herbert δεν έχει καλό όνομα στους προγραμματιστές (και όχι στους θεωρητικούς) αν και έχω αγοράσει και εγώ βιβλία του.

έλα ρε, δεν έχω ακούσει κάτι τέτοιο :P, συγγράμματά του ρε χρησιμοποιούνται σε πανεπιστήμια :P

anyway, και εμάς αυτός που μας έκανε θεωρία μας το είπε ότι τα βιβλία που μας προτείνουν λένε μπούρδες ;p ότι δεν είναι αυτό ακριβώς η C++ ;PPP

 

Αυτός τώρα μας έλεγε να ρίξουμε μια ματιά σε Deitel...

Τι λέτε?

 

- Η Java δεν μου αρέσει σαν γλώσσα, ούτε η C#.

έλα όμως που αυτές οι δυο είναι και οι γλώσσες που ένας προγραμματιστής πρέπει να ξέρει ;p

  • Απαντ. 108
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Παλιά έβρισκες δουλειά και με καλά λεφτά μάλιστα... σε τίποτα "τραπεζικές εφαρμογές" παράδειγμα, όπου εκεί πρέπει να είναι άτομα με πολύ καλές γνώσεις γιατί έχεις να κάνεις με τα χρήματα του άλλου ... να μην υπάρχουν τρύπες...

 

Για τραπεζικές εφαρμογές στις Οικονομικές Επιστήμες παλιά δίδασκαν την Cobol. Πάντως η C έχει όντως πολλές δυνατότητες. Μέχρι και νέες εντολές μπορείς να δημιουργήσεις.

Δημοσ.

Καλησπέρα, μόλις γύρισα από διακοπές (καλό υπόλοιπο σε όσους είναι ακόμα, καλό χειμώνα στους υπόλοιπους :) )

 

Φίλε Timonkaipumpa, δεν έχω πολυ-καταλάβει που είναι η ένστασή σου για τη C ως ξεκίνημα για όποιον ενδιαφέρεται να ασχοληθεί επαγγελματικά με τον προγραμματισμό.

 

Όπως επίσης δεν έχω καταλάβει ποιες εννοείς "πραγματικές εφαρμογές". Π.χ. τα περισσότερα λειτουργικά συστήματα έχουν τον πυρήνα τους (και όχι μόνο) γραμμένο σε C, τα περισσότερα GUI, toolkits, βιβλιοθήκες είναι επίσης γραμμένα σε C, πάρα πολλές γλώσσες προγραμματισμού, ειδικά οι νεώτερες, είναι επίσης γραμμένες σε C. Η συντριπτική πλειοψηφία των games ήταν γραμμένη σε C πριν την C++ era, το Microsoft Office γράφτηκε αρχικά σε C πριν περάσει σε C++, ο GNU SQL Server είναι γραμμένος σε C, το GIMP χάρη του οποίου δημιουργήθηκε ολόκληρο το GTK+ API που είναι ο ακρογωνιαίος λίθος του GNOME είναι και τα 3 εξ' ολοκλήρου γραμμένα σε C και μάλιστα είναι αντικειμενοστραφή, οπότε τι ακριβώς εννοείς όταν λες "πραγματικές εφαρμογές";

 

Η C είναι η κατεξοχήν γλώσσα για να μάθει κανείς προγραμματισμό σε βάθος.

 

migf1

 

Δεν λέω... συμφωνώ στα θετικά που δίνει η ενασχόληση με την C. Ιδιαίτερα όταν αρχίζεις και βρίσκεις προβλήματα γιατί έκανες ένα free ενώ ήταν NULL ο δείκτης ή όταν χρησιμοποιείς mixed pointer notation με array notation.

 

Όμως, δεν θα σε μάθει η C προγραμματισμό. Στην θεωρία και στην κονσόλα, όλα είναι ΟΚ. Σε πραγματικές εφαρμογές είναι που μαθαίνεις και εκεί η γλώσσα που τελικά θα χρησιμοποιήσεις κρίνεται από την εκάστοτε εφαρμογή και όχι από τις δυνατότητες που προσφέρει σε εκμάθηση ή σε ευχρηστία η γλώσσα (ναι, ΟΚ... η ευχρηστία μπορεί να είναι ένας παράγοντας... αλλά εάν κρατάς documentation και καλή δόμηση τότε ξεπερνάς μεγάλα προβλήματα).

 

Έτσι, δεν νομίζω ότι το θέμα είναι C ή Python για κάποιον που θέλει να μάθει. Ακόμα και σε Fortran ή MATLAB μπορείς να μάθεις προγραμματισμό και να κάνεις πράγματα που με C θα ήθελες ολόκληρη βιβλιοθήκη σε 5 γραμμές (υπερβολή αλλά you get my point). Για κάποιον που θέλει να μάθει είναι να βρει απλά μία eye candy προσέγγιση στον προγραμματισμό και μετά να εξελίσσει το θέμα. Οι διαφορετικές γλώσσες θα έρθουν.

 

Ακόμα και επαγγελματικά... δεν μπορείς να επεκταθείς σε πολλά πεδία. Σε ένα project, άλλος θα κάνει το backend άλλος το frontend. Άλλος θα γράψει τον driver, άλλος την εφαρμογή και άλλος το user interface για όλο το project (στην περίπτωση που το τελικό αποτέλεσμα θα καταλήξει σε προϊόν).

Δημοσ.

Καλησπέρα, μόλις γύρισα από διακοπές (καλό υπόλοιπο σε όσους είναι ακόμα, καλό χειμώνα στους υπόλοιπους :) )

 

Φίλε Timonkaipumpa, δεν έχω πολυ-καταλάβει που είναι η ένστασή σου για τη C ως ξεκίνημα για όποιον ενδιαφέρεται να ασχοληθεί επαγγελματικά με τον προγραμματισμό.

 

Όπως επίσης δεν έχω καταλάβει ποιες εννοείς "πραγματικές εφαρμογές". Π.χ. τα περισσότερα λειτουργικά συστήματα έχουν τον πυρήνα τους (και όχι μόνο) γραμμένο σε C, τα περισσότερα GUI, toolkits, βιβλιοθήκες είναι επίσης γραμμένα σε C, πάρα πολλές γλώσσες προγραμματισμού, ειδικά οι νεώτερες, είναι επίσης γραμμένες σε C. Η συντριπτική πλειοψηφία των games ήταν γραμμένη σε C πριν την C++ era, το Microsoft Office γράφτηκε αρχικά σε C πριν περάσει σε C++, ο GNU SQL Server είναι γραμμένος σε C, το GIMP χάρη του οποίου δημιουργήθηκε ολόκληρο το GTK+ API που είναι ο ακρογωνιαίος λίθος του GNOME είναι και τα 3 εξ' ολοκλήρου γραμμένα σε C και μάλιστα είναι αντικειμενοστραφή, οπότε τι ακριβώς εννοείς όταν λες "πραγματικές εφαρμογές";

 

Η C είναι η κατεξοχήν γλώσσα για να μάθει κανείς προγραμματισμό σε βάθος.

 

 

 

Καλό χειμώνα και σε εσένα.

 

 

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

 

Φυσικά και η C είναι πιο κοντά σε ό,τι γίνεται "από κάτω" αλλά αυτό δεν σημαίνει ότι υπερτερεί έναντι άλλων γλωσσών ως προς την "αξία" του προγραμματισμού.

 

Όταν λέω πραγματικές εφαρμογές...

 

Όπως είπες και εσύ, σε C γραφόντουσαν τα παιχνίδια κτλ.

 

Άρα, ναι η C μπορεί να δώσει αρκετές γνώσεις για το τι γίνεται όταν λες a[5], και γιατί το a[0] = *a ή το a[1] = *(a+1) κτλ. αλλά δεν την κάνει να υπερτερεί έναντι άλλων γλωσσών ως προς την αξία της. Μία χαρά προγραμματισμό μπορεί κανείς να μάθει και με Fortran ή MATLAB π.χ. Και όταν του ζητηθεί να υλοποιήσει κάτι σε κάποια άλλη γλώσσα ή κάποια δομή τότε με λίγο διάβασμα θα μπορέσει να καταλάβει πως να χρησιμοποιήσει το όποιο API του δίνεται.

 

Φυσικά και δεν θα έχει τις γνώσεις του τι γίνεται "από κάτω" (δανειζόμενος για μία ακόμη φορά αυτό τον "όρο") αλλά θα μπορέσει να χρησιμοποιήσει το API.

Δημοσ.

Α, αυτό εννοείς... σαφώς και συμφωνώ πως ο προγραμματισμός σαν έννοια δεν είναι προνόμιο καμίας γλώσσας! Αυτό έλειπε :) Και μάλιστα η έλλειψη εγγενούς υποστήριξης για αντικειμενοστραφή προγραμματισμό στη C είναι σημαντικό μειονέκτημα σε ότι αφορά τη (μη) σφαιρικότητά της (σε αυτόν τον τομέα γλώσσες όπως η Python και η C++ είναι σαφώς πιο σφαιρικές).

 

Η C είναι όμως η μόνη γλώσσα από τις δημοφιλείς η οποία σε εξαναγκάζει να κατανοήσεις το παρασκήνιο πριν επιχειρήσεις να κάνεις πράγματα που σε άλλες γλώσσες παρέχονται έτοιμα ως στάνταρ. Η C++ για παράδειγμα δεν σε υποχρεώνει να κατασκευάσεις από την αρχή μια διπλά συνδεδεμένη λίστα και τις πράξεις της προκειμένου να τη χρησιμοποιήσεις, μιας και σου παρέχει δομές δεδομένων & πράξεις πάνω τους έτοιμες προς χρήση, μέσω των STL Containers. Ναι μεν σε αφήνει να τα φτιάξεις και μόνος σου αν το θελήσεις, αλλά αυτό ούτε αποτελεί μονόδρομο, ούτε είναι η 1η επιλογή για κάποιον που προγραμματίζει σε C++. Στη C θες δεν θες, για να χρησιμοποιήσεις μια διπλά συνδεδεμένη λίστα με τις στάνταρ βιβλιοθήκες, θα πρέπει πρώτα να την κατασκευάσεις μόνος σου, καθώς και τις πράξεις της. Και άρα να μάθεις υποχρεωτικά όλο το "από κάτω".

 

Υπό αυτή λοιπόν την έννοια θεωρώ την C σημαντική γλώσσα για όποιον σκοπεύει να ασχοληθεί σοβαρά με τον προγραμματισμό.

Δημοσ.

Παιδιά μια ερώτηση όχι ακριβώς πάνω στο δίλημμα που τέθηκε C ή Python όμως.Λοιπόν εγω γνωρίζω καλά C μπορώ να πω αλλά επειδή ασχολούμαι αρκετά με διαδίκτυο γνωρίζω php και mysql.

 

Η ερώτηση μου είναι ποια αντικειμενοστραφή γλώσσα θα μου προτείνατε να μάθω καλά ώστε να με βοηθήσει τόσο σε

α)εφαρμογές διαδικτύου

β)όσο και και σε μη web εφαρμογές.

 

Έχω κάνει ένα ξεκίνημα με Java και νομίζω έκανα καλή επιλογή.Τι λέτε?Παρακαλώ απαντήστε με επιχειρήματα γιατί είναι πολύ σημαντικό να καταλήξω κάπου με σιγουριά. :shifty:

 

Ευχαριστώ :rolleyes:

Δημοσ.

Παιδιά μια ερώτηση όχι ακριβώς πάνω στο δίλημμα που τέθηκε C ή Python όμως.Λοιπόν εγω γνωρίζω καλά C μπορώ να πω αλλά επειδή ασχολούμαι αρκετά με διαδίκτυο γνωρίζω php και mysql.

 

Η ερώτηση μου είναι ποια αντικειμενοστραφή γλώσσα θα μου προτείνατε να μάθω καλά ώστε να με βοηθήσει τόσο σε

α)εφαρμογές διαδικτύου

β)όσο και και σε μη web εφαρμογές.

 

Έχω κάνει ένα ξεκίνημα με Java και νομίζω έκανα καλή επιλογή.Τι λέτε?Παρακαλώ απαντήστε με επιχειρήματα γιατί είναι πολύ σημαντικό να καταλήξω κάπου με σιγουριά. :shifty:

 

Ευχαριστώ :rolleyes:

Μια χαρά είναι η Java που διάλεξες! Ικανότατη, δημοφιλέστατη και επαγγελματικά περιζήτητη.

Δημοσ.

Μια χαρά είναι η Java που διάλεξες! Ικανότατη, δημοφιλέστατη και επαγγελματικά περιζήτητη.

B) , ναι ψάχνω και εγώ έναν java programmer να μου φτιάξει ένα Chat Room για το σίτε μου... ya ya .... B)

 

ΥΓ: καλως ήρθες πίσω απο τις διακοπές σου.

Δημοσ. (επεξεργασμένο)

Βαθειά ανάσα και ξεκινάμε...

 

Το να λέμε πως η Python στις περισσότερες περιπτώσεις είναι ταχύτερη από τη C (με ή χωρίς cache) είναι μεγάλη υπερβολή!

 

Μπααα... αν υποθέσουμε ότι έχουμε ένα project με συγκεκριμένες προδιαγραφές (π.χ. να κάνουμε έναν monte-carlo optimizer για κάποιον παραμετρικό δείκτη χρηματηστηρίου - βλέπεις - το παίζω και στην έδρα της C) και - για να είμαστε ρεαλίστικοι - έχουμε συγκεκριμένο budget (π.χ. 3000 ευρώ). Με την C θα ψοφήσεις να γράφεις for loops (με την ψευδαίσθηση ότι είναι και γρήγορες) και στο τέλος θα καλείς συναρτησούλες που έχουν for loops μέσα σε for loops... και αν είναι 100k δεδομένα είναι εντάξει - αλλά αν ήταν δεν θα πηρωνόμασταν 3000 ευρώ. Οπότε έχοντας π.χ. 3 for loops το ένα μέσα στο άλλο χωρίς καν να το ξέρουμε (η strlen είναι ήδη ένα), καταλήγουμε να έχουμε O(n^3) (οκ-μη βαράτε-απλά προσπαθώ να make a point) το οποίο π.χ. με 100Mb δεδομένα θα είναι αργό - πόσο μάλλον με 16 ή 160 Gb. Τώρα όταν με την python έχεις μία cache σε μία γραμμή (δες εδώ built-in δομές)...

 

>>>> v="k"
>>> upper_c={}
>>> upper_c[v] = upper_c[v] if v in upper_c else v.upper() # Vale tin Argi sinartisi sou edo
>>> print upper_c[v]

 

... είναι πιθανότερο να παραμείνεις κοντά στο O(n). Και τι να πει κανείς όταν με 3 γραμμές κώδικα (celery) και το Amazon (EC2) μπορώ να τρέξω μία συνάρτηση παράλληλα σε 160 μηχανήματα (=1Gb/μηχάνημα στο παραπάνω παράδειγμα) - (reduce? οκ-μη βαράτε-απλά προσπαθώ να make a point). Για να το έκανες αυτό σε C θα ήθελες άλλες 3 βδομάδες που δεν έχεις...

 

Αν έχεις άπειρο χρόνο και χρήμα η C είναι πιό γρήγορη... αλλά πρακτικά... μπάαααα...

 

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

 

python (django), javascript (jQuery και node.js), ruby (rails)

 

Υ.Γ 1 α, και κάτι ακόμα, από ότι καταλαβαίνω η python μου ακούγεται σα νέα pascal, δηλαδή και εκπαιδευτική και εμπορική και γενικού σκοπού. Αν είναι έτσι, μόνο καλό μου φαίνεται να αποκτήσω επαφή μαζί της. Θα την ξαναβρώ μπροστά μου.

 

Pascal δεν υπάρχει. ΠΑΡΑ ΠΟΛΥ ΑΡΓΗ (στο productivity). Η python πάει "σφαίρα". Σίγουρα θα τη βρίσκεις συνέχεια μπροστά σου :)

 

Υπάρχουν διάφορες σελίδες με άτομα που ζητάνε διάφορα πράγματα... θα βρεις Projects απο 20 εως και 20.000 Euro... και παραπάνω...

μπορείς να πάρεις μικρά Projects, 400-500 Euro... το οποίο το τελειώνεις σε 10 μέρες

 

400 ευρώ αν είσαι επαγγελματίας τα "καθαρίζεις" σε 3-4 μέρες. (δες και http://www.pameekso.gr/ta-vasika-ergaleia για tips). 4000 ευρώ/μήνα τα έχεις με αρκετό άγχος και red bull

 

ΥΓ: Παλιά έβρισκες δουλειά και με καλά λεφτά μάλιστα... σε τίποτα "τραπεζικές εφαρμογές" παράδειγμα, όπου εκεί πρέπει να είναι άτομα με πολύ καλές γνώσεις γιατί έχεις να κάνεις με τα χρήματα του άλλου ... να μην υπάρχουν τρύπες...

 

Μακάρι να ξέραν τι κάνουν τα άτομα κι εκεί (δες εδώ/εδώ)... αλλά anyway... ναι - και χρησιμοποιούνε αρκετή java as well

 

- Καλό είναι ο προγραμματισμός να γίνει σε UNIX περιβάλλον, είτε C είτε Python (ή και Perl, δεν είναι κακή για αρχή).

 

100% ναί. Ubuntu και άγιος ο Θεός. Perl είναι λίγο κακή - εύκολο να τη γράψεις - δύσκολο να τη διαβάσεις

 

- Η Java δεν μου αρέσει σαν γλώσσα, ούτε η C#.

 

Ωωωω ναι!

 

- Και φυσικά όχι βιβλίο σε Ελληνική μετάφραση. Στα Αγγλικά καλύτερα.

 

Ωωωω ναι!

 

Παιδιά μια ερώτηση όχι ακριβώς πάνω στο δίλημμα που τέθηκε C ή Python όμως.Λοιπόν εγω γνωρίζω καλά C μπορώ να πω αλλά επειδή ασχολούμαι αρκετά με διαδίκτυο γνωρίζω php και mysql.

 

Μια χαρά είσαι με την php. Δοκίμασε από βάσεις ένα project-άκι σε κάθε μία από τις εξής: mongodb, neo4j και redis.

 

Έχω κάνει ένα ξεκίνημα με Java και νομίζω έκανα καλή επιλογή.Τι λέτε?

 

Δυστυχώς όχι... Η Java ήταν καλή επιλογή όταν είχες χρόνο να κάθεσαι να γράφεις κλάσεις και μλκίες. Το 2011 δεν έχεις χρόνο γι'αυτά. Δες εδώ ακριβώς τι εννοώ.

 

Μη συγκρίνετε γλώσσες σε λάθος βάση. Ελάχιστοι επαγγελματίες γράφουν πια C. Δεν υπάρχει χρόνος - αλήθεια. Το μόνο πράγμα για να αξιολογήσεις σήμερα μία γλώσσα είναι productivity. Τίποτα άλλο. Αστειευόμενος ελαφρώς:

 

>C:

int i;
for (i=0;i<10;i++) printf("Hello %d\n", i);

Java:

ObjectIterator i = collection.getObjectIterator();
while (i.hasNext()) {
  System.out.format("Hello %s\n", i.next().toString());
}

Python:

for u in users:
  facebook.createUser(u);

 

Το μόνο metric για την ποιότητα του κώδικα είναι WTFs/m. Με την Ruby και την Python είναι πολύ δύσκολο να κάνεις λάθη και ο κώδικας είναι πολύ πιο εκφραστικός = χαμηλότερο WTFs/m.

 

Τέλος αυτό που πάντα ΠΡΕΠΕΙ να κάνεις με τα προγράμματά σου για να επιβιώσεις είναι να μπορείς να κάνεις τον άλλον να κάνει WOW! Το WOW το '90 σήμαινε να παίζεις με το PC speaker και αυτό μπορούσες να το κάνεις με την Basic, το '00 σήμαινε να μπορείς να κάνεις κανένα productivity suite δηλαδή ξέρεις... το excelάκι - το e-mailάκι του κάθε επαγγελματία κ.τ.λ. Αυτό το έκανες με VBA, Java, C# κ.τ.λ. Σήμερα για να κάνει ο άλλος WOW πρέπει να έχεις social login, videos, integration με τηλέφωνο, να έχεις single click deployment στο cloud, να είναι socialy integrated, mobile, και φυσικά να είναι έτοιμο χθες. Ψάξτε λίγο τι γλώσσες παίζουν σε όλα αυτά τα links που λέω παραπάνω και θα δείτε ότι η C δεν υπάρχει. Έχει απλά τελειώσει και είναι θέμα χρόνου δυστυχώς μέχρι να μπει στο μουσείο (πέρα από linux device drivers και kernel hacking). Η php όχι μόνο δεν είναι νεκρή... αλλά ζει και βασιλεύει (παρόλο που δε μ'αρέσει, php=Personal Home Page - αυτό τα λέει όλα). Η Javascript θα σκάσει απίστευτα. Η Python είναι defacto όπως και η Ruby. Αυτή είναι η "επαγγελματική" πραγματικότητα σήμερα 2011-2012.

 

Ξέρω πολύ καλούς pointers και μου δίνει καλό background και αυτοπεπίθεση... από την άλλη τώρα τελευταία όλο μου την βγαίνουν από τα δεξιά κάτι πιτσιρίκια που το μόνο που ξέρουν είναι Symfony και μαθαίνουν Python και google apps engine overnight.

 

Εύχομαι αυτό το post να βοηθήσει πολλούς να σώσουν χρόνια.

Επεξ/σία από neverlastn
  • Like 1
Δημοσ.

Βαθειά ανάσα και ξεκινάμε...

 

Μπααα... αν υποθέσουμε ότι έχουμε ένα project με συγκεκριμένες προδιαγραφές (π.χ. να κάνουμε έναν monte-carlo optimizer για κάποιον παραμετρικό δείκτη χρηματηστηρίου - βλέπεις - το παίζω και στην έδρα της C) και - για να είμαστε ρεαλίστικοι - έχουμε συγκεκριμένο budget (π.χ. 3000 ευρώ). Με την C θα ψοφήσεις να γράφεις for loops (με την ψευδαίσθηση ότι είναι και γρήγορες) και στο τέλος θα καλείς συναρτησούλες που έχουν for loops μέσα σε for loops... και αν είναι 100k δεδομένα είναι εντάξει - αλλά αν ήταν δεν θα πηρωνόμασταν 3000 ευρώ. Οπότε έχοντας π.χ. 3 for loops το ένα μέσα στο άλλο χωρίς καν να το ξέρουμε (η strlen είναι ήδη ένα), καταλήγουμε να έχουμε O(n^3) (οκ-μη βαράτε-απλά προσπαθώ να make a point) το οποίο π.χ. με 100Mb δεδομένα θα είναι αργό - πόσο μάλλον με 16 ή 160 Gb. Τώρα όταν με την python έχεις μία cache σε μία γραμμή (δες εδώ built-in δομές)...

 

>>>> v="k"
>>> upper_c={}
>>> upper_c[v] = upper_c[v] if v in upper_c else v.upper() # Vale tin Argi sinartisi sou edo
>>> print upper_c[v]

 

... είναι πιθανότερο να παραμείνεις κοντά στο O(n). Και τι να πει κανείς όταν με 3 γραμμές κώδικα (celery) και το Amazon (EC2) μπορώ να τρέξω μία συνάρτηση παράλληλα σε 160 μηχανήματα (=1Gb/μηχάνημα στο παραπάνω παράδειγμα) - (reduce? οκ-μη βαράτε-απλά προσπαθώ να make a point). Για να το έκανες αυτό σε C θα ήθελες άλλες 3 βδομάδες που δεν έχεις...

 

Αν έχεις άπειρο χρόνο και χρήμα η C είναι πιό γρήγορη... αλλά πρακτικά... μπάαααα...

Λοιπόν, βαθιά ανάσα και ξεκινάμε :lol: Μερικά από όσα γράφεις ισχύουν κι άλλα όχι.

 

Καταρχήν, η python είναι γραμμένη σε C, που αμέσως-αμέσως σημαίνει πως ότι κάνει η Python η C μπορεί να το κάνει εξίσου καλά, συνήθως καλύτερα. Εσύ λοιπόν αυτό που συγκρίνεις (παρόλο που νομίζεις ότι κάνεις δίκαια σύγκριση) είναι ουσιαστικά ένα framework (γραμμένο σε C) με την γλώσσα που είναι γραμμένο το framework αυτό.

 

Για παράδειγμα, για τα built-in data types της Python που έφερες σαν παράδειγμα, αντί να μάθεις Python μπορείς να μάθεις glib αν βαριέσαι ή δεν ξέρεις ή δεν προλαβαίνεις (ή και τα 3) να φτιάξεις μόνος σου on-demand μόνο όσα χρειάζεται το πρόγραμμά σου και τίποτα άλλο. Ομοίως και για cache και για οτιδήποτε άλλο.

 

In real life λοιπόν, στα μεσαία και άνω projects όταν προγραμματίζεις με C πράγματα που είναι χρονοβόρα αλλιώς, τότε χρησιμοποιείς είτε έτοιμα, είτε custom frameworks (π.χ. της εταιρίας για την οποία δουλεύεις), που στην πράξη σημαίνει πως το productivity γίνεται εφάμιλλο με γλώσσες όπως η Python. Ακόμα και αντικειμενοστραφή προγραμματισμό μπορείς να κάνεις χρησιμοποιώντας μόνο C και ένα κατάλληλο framework/library (link)... όπως μπορείς να χρησιμοποιήσεις OOP wrapers/bindings από άλλες γλώσσες (όπως μπορείς να κάνεις φυσικά και με Python και με τις περισσότερες γλώσσες... αν και ο κανόνας είναι οι σύγχρονες γλώσσες να παρέχουν bindings για C/C++ και όχι το ανάποδο :P). Το μόνο drawback είναι πως αυτά δεν ανήκουν στο στάνταρ της γλώσσας, αλλά δεν μπορούμε να τα έχουμε όλα σε αυτή τη ζωή.

 

Έπειτα, είσαι σίγουρος πως θες (ή μπορείς) για παράδειγμα να κάνεις low-level προγραμματισμό με Python; Ή όταν έχεις πολύ περιορισμένους πόρους;

 

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

 

ΥΓ1. Κάτι για την strlen, που επίσης ανάφερες ως παράδειγμα, ποιος σε εμποδίζει να φτιάξεις μια δομή String που θα κρατάει σε ξεχωριστό πεδίο το μήκος, οπότε όταν το χρειάζεσαι θα γράφεις ένα απλό: s.len; που είναι Ο(1) και μάλιστα χωρίς να χρειάζεται να τερματίζεται το s με μηδενικό χαρακτήρα;(αν βαριέσαι να το φτιάξεις εσύ, υπάρχουν έτοιμα libraries :) ). Αλλά και μόνος σου να τη γράψεις μια τέτοια βιβλιοθήκη, θα το κάνεις μια μόνο φορά και μετά θα τη χρησιμοποιείς σε όλα τα υπόλοιπα προγράμματά σου.

 

ΥΓ2. btw...

>
C:

int i;
for (i=0;i<10;i++) printf("Hello %d\n", i);

>
int i=10;
while (i) printf("Hello %d\n", 10-i--);

είναι πιο... golfed :lol:

Δημοσ.
ΥΓ1. Κάτι για την strlen, που επίσης ανάφερες ως παράδειγμα, ποιος σε εμποδίζει να φτιάξεις μια δομή String που θα κρατάει σε ξεχωριστό πεδίο το μήκος

 

Ω ναί... δεν αμφιβάλω... μπορείς να αλλάξεις και την stdlib αν θέλεις και με λίγο hack στον gcc να βάλεις 4/8 bytes padding στην αρχή κάθε const char *. Αλλά γιατί να αφιερώσω αυτά τα 20 λεπτά να φτιάξω τη δομή που λες; Παρεπιπτόντως με το που αρχίζεις τις δομές string αν δεν θέλεις να γίνει πολύ ugly ο κώδικας καλύτερα να πας κατευθείαν σε C++ και std::string.

 

int i=10;

while (i) printf("Hello %d\n", 10-i--);

 

Πολύ sick - respect!!

 

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

 

Κοίτα, όλα είναι γραμμένα σε C. Η Java είναι γραμμένη σε C, το linux & τα Windows είναι γραμμένα σε C. Και η ίδια η C είναι γραμμένη σε C κι assembly. Δε βλέπω όμως να επιχειρηματολογεί κανείς για το ότι θα πρέπει να γράφουμε σε assembly.

 

Εσύ λοιπόν αυτό που συγκρίνεις (παρόλο που νομίζεις ότι κάνεις δίκαια σύγκριση) είναι ουσιαστικά ένα framework (γραμμένο σε C) με την γλώσσα που είναι γραμμένο το framework αυτό.

 

Νομίζω ότι είμαι εντάξει... γλώσσες συγκρίνουμε :D

 

Έπειτα, είσαι σίγουρος πως θες (ή μπορείς) για παράδειγμα να κάνεις low-level προγραμματισμό με Python; Ή όταν έχεις πολύ περιορισμένους πόρους;

 

Πολύ αμφιβάλω... αλλά δεν νομίζω ότι οι τύποι που κάνουν drivers για DVD-R's είναι και πάρα πολλοί σ'αυτόν τον κόσμο. Δεν υπάρχουν και τόσα πολλά με περιορισμένους πόρους πλέον. Το "time to market" κάνει drive τα πάντα (δυστυχώς για εμάς τους καλιτέχνες).

 

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

 

Συμφωνώ. Κι εγώ ο ίδιος αν μου ερχόταν χοροπηδηχτός ένας ruby-ας πάνω κάτω αυτά που λες εσύ θα του έλεγα, αλλά θα εστίαζα λίγο περισσότερο στο ότι η C είναι standard έχει τεράστοιο community και σου δίνει τον απόλυτο έλεγχο που σημαίνει απίστευτα μικρό memory fingerprint. Το μόνο πρόβλημα είναι ότι στο περιβάλλον που βρισκόμαστε στην Ελλάδα... με όλα τα πανεπιστήμια να πορώνουν τους πάντες να μάθουν C ώστε να μη χρειάζεται να μάθουν καμιά νέα γλώσσα κάποιοι κάποιοι, αυτό που πρέπει να πω είναι... για το 99% των περιπτώσεων, η αγορά τώρα θέλει αυτά που είπα παραπάνω: python, javascript, ruby και php. Είναι πιό εύκολες γλώσσες και γι'αυτό δεν τις διδάσκουν στο πανεπιστήμιο (γιατί θέλουμε να ακονίσουμε το μυαλό σας - όχι να σας καλομάθουμε από μικρά).

 

Αυτό λοιπόν για εμένα είναι το μήνυμα για εδώ και τώρα....

 

Τώρα αν έχουμε σε 2 χρόνια τόσο λαό να ξέρει και να μη φοβάται αυτές τις γλώσσες και δω ένα post του στυλ "πώς μπορώ να προγραμματίσω PIC με Ruby;" θα είμαι ο πρώτος να πώ "ΕΙΣΑΙ ΤΡΕΛΟΣ ΡΕ ΦΙΛΕ";;;

 

:D :D :D

Δημοσ.

Αdawn γενικά είτε τρολάρεις ασύστολα είτε είσαι πραγματικά τελείως άσχετος από το αντικείμενο. Την C++ δε τη δημιούργησαν γιατί η C ήταν περιορισμένων δυνατοτήτων, τη δημιούργησαν γιατί δεν υποστήριζε αντικειμενοστρεφή προγραμματισμό. Που δηλαδή γίνεται να γράφεις αντικειμενοστρεφή προγράμματα σε C αλλά δεν είναι πολύ intuitive. Aν η C δεν ήταν ισχυρή ούτε γρήγορο internet θα είχες, oύτε γρήγορα λειτουργικά συστήματα, ούτε γλώσσες όπως Java, C# (τα virtual machines τους είναι γραμμένα σε C), Python, Lua( το implementation τους είναι γραμμένο σε C). Εντάξει το καταλάβαμε ότι δε μπορείς να γράψεις κώδικα σε C γιατί είτε βαριέσαι να ασχοληθείς είτε το θεωρείς αντιπαραγωγικό, αλλά υπάρχουν κάποιοι χαμάληδες που το κάνουν για να έχεις εσύ όλα αυτά τα καλούδια.

 

neverlastn, σου λέει ότι δε γίνεται μια γλώσσα να μπει στο μουσείο από τη στιγμή που τα πάντα είναι implemented σε αυτή. Δε σου λέει να γράφεις σε αυτή ντε και καλά.

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

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