Προτάσεις για βιβλία C και αλγορίθμων/κώδικα.

Ξεκίνησε από tzorvas, 16 Δεκ 2008, 12:55:32 ΜΜ

« προηγούμενο - επόμενο »

tzorvas

Καλησπέρα σας..

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

Θα ανέβω αθήνα και μπορώ να περάσω να αγοράσω από το κέντρο ..

Θα ήθελα να πάρω κάτι που να έχει όσο το δυνατόν περισσότερα παραδείγματα ή και λιγότερα αρκεί να είναι σωστά!!

Να εξηγεί..

Κυρίως να μην είναι κακογραμμένο ή έχει λάθη.. Σκέφτομαι να πάρω και κάποιο βιβλίο σε αγγλική έκδοση καθώς τα μεταφρασμένα περιέχουν πολλά λάθη.. :(

Έχετε τίποτα καλό να προτείνεται;

Ευχαριστώ πολύ σας είμαι πραγματικά υπόχρεος :)
Make World Better for all!

Τελειόφητος του 2ου Ε.Λ.Χαλκίδας

Προπτυχιακός Φοιτητής @ ICSD-University of the Aegean

alex599

Ένα πολύ καλό βιβλίο για τη γλώσσα C είναι το:"Η γλώσσα C σε βάθος" από εκδόσεις ΚΛΕΙΔΑΡΙΘΜΟΣ,συγγραφέας:Νίκος Μ.Χατζηγιαννάκης.
Αναλύει πάρα πολύ καλά τη γλώσσα και περιέχει και cd με τον compiler DEV-C++.
Από κει και πέρα ένα άλλο βιβλίο είναι το "Οδηγός της C" από εκδόσεις ΓΚΙΟΥΡΔΑΣ και συγγραφέα:SCHILDT HERBERT (μεταφρασμένο αλλά πάρα πολύ καλό.).

Ελπίζω να βοήθησα.

tzorvas

Ευχαριστώ.

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

Ίσως αγοράσω και το "Η γλώσσα C σε βάθος" καθώς το άλλο το έχω "παραγγείλει" μέσω της σχολής..

Ακόμη ο Dev $C++ δεν είναι και ότι καλύτερο :S
Make World Better for all!

Τελειόφητος του 2ου Ε.Λ.Χαλκίδας

Προπτυχιακός Φοιτητής @ ICSD-University of the Aegean

evry

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

tzorvas

Ευρι δεν το είχα ξαναακούσει ή ξαναδεί ..

Είναι όντως καλό βιβλίο;

Θα με κάλυπτε και σε προχωρημένο επίπεδο;;

Ευχαριστώ :)
Make World Better for all!

Τελειόφητος του 2ου Ε.Λ.Χαλκίδας

Προπτυχιακός Φοιτητής @ ICSD-University of the Aegean

tzorvas

Ακόμη ψάχνω βιβλία όπως το "ανάγνωση κώδικα" του σπινελη καθώς ψάχνω κάτι το οποίο θα "ανοίξει" το μυαλό μου περισσότερο, θα με βοηθήσει σε κρίσιμες στιγμες :D και θα μου δώσει κάποιες βάσεις .. Ευχαριστώ πολύ !!
Make World Better for all!

Τελειόφητος του 2ου Ε.Λ.Χαλκίδας

Προπτυχιακός Φοιτητής @ ICSD-University of the Aegean

gia_desimo

Βρες ό,τι μπορεις (σε δωρεαν) απο τα ψαχτήρια και κάν' το download... Και καλο διάβασμα! Έχει πολυ και καλο πράμα.

Δυστυχως τα πιο πολλα είναι στην Αγγλικη. Οπότε, αν τα καταφέρνεις μ' αυτη τη γλώσσα, εντάξει. Αλλοιως, θα υποχρεωθεις ν' αγοράσεις τουλάχιστον 4-5 του εμπορίου, διότι το καθένα δεν καλύπτει όλα τα θέματα.

Το ερώτημα, όμως, είναι... τί να την κάνεις τη C; Σκοπεύεις να προγραμματίζεις με το στυλ του 1970; Μια οθόνη text, όπου τα επόμενα αποτελέσματα σκρολλάρουν προς τα πάνω τα προηγούμενα; :-)


3 και η τρέχουσα μείνανε! (Ολυμπιάδες μέχρι τη σύνταξη.)

evry

Παράθεση από: gia_desimo στις 18 Δεκ 2008, 10:24:01 ΠΜ
Το ερώτημα, όμως, είναι... τί να την κάνεις τη C; Σκοπεύεις να προγραμματίζεις με το στυλ του 1970; Μια οθόνη text, όπου τα επόμενα αποτελέσματα σκρολλάρουν προς τα πάνω τα προηγούμενα; :-)

Η C δεν είναι στυλ του 70. Ακόμα γράφουν κώδικα σε C και πολλά πανεπιστήμια κάνουν C. Το ότι έχουν βγει καινούργιες γλώσσες και όλοι τρέχουν να μάθουν Java και C# δε σημαίνει ότι δεν πρέπει να ξεκινήσεις από C.
Αλήθεια όμως εσύ τι προτείνεις για όσους ζουν στη νέα χιλιετία και δεν είναι κολλημένοι ακόμα στο 70? 
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

tzorvas

Ευριπίδη έχεις κανένα σχόλιο για το βιβλίο που μου πρότεινες;;

Η C είναι απαρχαιωμένη;! Η C++ του 80 μάλλον..;!

Η C πάντως είναι πιο "δυνατή" από πολλές άλλες και δεν πιστεύω να έχει κάποιο αρνητικό.. Όσον αφορά το text μια φράση προσπαθώ να ακολουθώ ... <real mens do it in text>
Make World Better for all!

Τελειόφητος του 2ου Ε.Λ.Χαλκίδας

Προπτυχιακός Φοιτητής @ ICSD-University of the Aegean

evry


  Για να μάθεις προγραμματισμό θα ξεκινήσεις από C, ούτε από C++ ούτε φυσικά από Java ή C#. Δεν είναι δυνατόν σε ένα εισαγωγικό μάθημα προγραμματισμού να ξεκινήσεις με μια αντικειμενοστρεφή γλώσσα όπως αυτές. Και αφού ούτως ή άλλως ή σύνταξη είναι η ίδια όσον αφορά τις δομές if/for/while ξεκινάς με C και βλέπεις. Δεν είναι απαραίτητο να δουλεύεις με Printf,scanf μπορείς να χρησιμοποιείς τα cin, cout δηλαδή το C κομμάτι της C++. Ωστόσο καλό θα ήταν κατά τη γνώμη μου να ασχοληθείς και με καθαρή C και να δουλέψεις πολύ με pointers casting κλπ. Δεν υπάρχει τίποτα που να μη μπορείς να κάνεις με καθαρή C. Η C++ και η Java απλά έχουν ωραιοποιήσει τη χρήση των void pointers.
    Τώρα αν κάποιος σου πει πως ο προγραμματισμός με Java/C# κρύβει αρκετά άσχημα και δυσνόητα πράγματα της C/C++ και σου κάνει τη ζωή πιο εύκολη σίγουρα έχει δίκιο. Το θέμα όμως είναι ότι σπουδάζεις πληροφορική και θέλεις να ξέρεις για κάθε εντολή που δίνεις τι συμβαίνει από πίσω. Δεν θέλεις να σου κρύβουν τίποτα. Για αυτό θέλεις τη C.
   Τώρα για όσους πιστεύουν ότι η C είναι απαρχαιωμένη να θυμίσω ότι το Linux/Unix είναι ακόμα σε C, οπότε κάποιοι την χρησιμοποιούν ακόμα. 

   Τέλος πάντων, το βιβλίο του Roberts είναι κατά τη γνώμη μου το καλύτερο (μαζί με το  κλασσικό των Kernighan & Richie). Ο Roberts δεν είναι απλά κάποιος που κατέχει καλά τη C αλλά έχει και ερευνητική συνεισφορά στο πεδίο της διδακτικής του προγραμματισμού. Έχει καθήσει και έχει σκεφτεί δηλαδή πως θα διδάξεις κάποιες προγραμματιστικές έννοιες. Άσε που οι ασκήσεις του είναι αρκετά μαθηματικοποιημένες και όχι του στυλ Εμφάνισε την προπαίδεια κλπ.

Φυσικά υπάρχει και το βιβλίο των Deitel & Deitel το οποίο όμως απευθύνεται σε κάποιον που δεν έχει ιδέα από προγραμματισμό ωστόσο τον φτάνει σε ένα σχετικά καλό επίπεδο (για αυτό είναι και 1000 σελίδες). Απλά οι συγγραφείς το έχουν δει πολύ εμπορικά πλέον και έχουν χάσει την ποιότητα που είχαν παλιά. (Το πρώτο βιβλίο που έβγαλαν C How to Program ήταν το καλύτερο στην εποχή του (τη δική μου δηλαδή :-))

ʼρα συμπερασματικά χρειάζεσαι 2 βιβλία το ένα είναι το κλασσικό K&R (υποχρεωτικά) και αν θέλεις και ένα 2ο σαν προαιρετικό τότε πάρε του Roberts, έχει βγει και στα ελληνικά
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

Αν θυμάμαι καλά τότε (όταν πρωτοβγήκαν τα windows 3.1) έλεγαν
Real men do it only on command prompt
ή κάτι τέτοιο

Δες και αυτό   http://www.pbm.com/~lindahl/real.programmers.html
για να πάρεις μια ιδέα για την άποψη που έχουν κάποιοι για τους αληθινούς προγραμματιστές

Παράθεση από: Linkinarios στις 18 Δεκ 2008, 02:47:08 ΜΜ
. Όσον αφορά το text μια φράση προσπαθώ να ακολουθώ ... <real mens do it in text>
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Laertis

Χα που βρήκες βρε Ευριπίδη το βιογραφικό μου ; :D

Εκπληκτικό πρόγραμμα σε Fortran IV στο σύνδεσμο :

http://www.users.on.net/~farnik/wikicgi/wiki.pl?SnoopyCalendar

Υ.Γ. ΘΑ το προτιμούσα σε assembly για να θυμηθώ τις παλιές καλές μέρες  ;)


Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

mostel

Καλό βιβλίο , τόσο για Introductory ή και για experienced coders, είναι το "C βήμα προς βήμα" (C Step by Step, η αγγλική έκδοση), από την ομάδα Waite.


Εγώ C από το ελληνικό έμαθα...


Ντάξει, υπάρχει και το κλασικό των K&R , που όμως δεν είναι introductory.


Στέλιος
When you see a good move ; Look for a better one .

gia_desimo

Παίδες, παίδες!!!...

ΠαράθεσηΗ C είναι απαρχαιωμένη;! Η C++ του 80 μάλλον..;!

Η C πάντως είναι πιο "δυνατή" από πολλές άλλες και δεν πιστεύω να έχει κάποιο αρνητικό.

Σε τί είναι πιο δυνατη; Και ποιο αρνητικο δεν έχει; Μήπως προγραμματίζεις εύκολα σε παραθυρικο περιβάλλον με δαύτην; LOL!!! :-)

Η C για την εποχη της ήταν μια καλη προσπάθεια δημιουργίας ενος -ας πούμε- "αφαιρετικου επιπέδου" των assembly που κυκλοφορούσαν τότε. Επειδη, όποιος έβγαινε στην πιάτσα (τη δεκαετία του 1960) για να βγάλει το ψωμι του ως μηχανικος ΗΥ, έπρεπε να ξέρει απέξω καμια 25αρια υπολογιστες-"ιδιοκατασκευες" (δηλ. με εντελως διαφορετικο στήσιμο και εντελως διαφορετικη γλώσσα μηχανης ο καθένας)... πράγμα εξόχως σπαζοκεφαλιαστικο. Βλέπετε, δεν υπήρχε ακόμη τότε ο γνωστος σημερινος χωρισμος σε επίπεδα bare machine, bios, ΛΣ, κτλ - και οι εντολες που σήμερα φυσιολογικα ανήκουν στο hardware (άντε και στο ΛΣ για τους καθυστερημένους), τότε βρισκόντουσαν σε επίπεδο γλώσσας προγραμματισμου! (Πχ "tape rewind" της  COBOL.)

Εντάξει όλ' αυτα, αλλα η τυφλη αντιγραφη βιβλιογραφίας του 1970 διαιωνίζει εντελως μα εντελως ανόητες φήμες. Και η πλάκα είναι ότι αυτα τα γράφουν και υποτίθεται σοβαροι συγγραφεις, με σπουδες κτλ. (Για να διαφωτίσουν και τους φοιτητες τους!)

Πχ:
"Η C είναι γλώσσα ανωτέρου επιπέδου"!
Το σωστο: Είναι λίγο παραπάνω απο την assembly, ίσως η μοναδικη υπάρχουσα γλώσσα μέσου επιπέδου. "Ανωτέρου επιπέδου" με -μετρημένες- μόλις 28 εντολες (κατα ANSI) ντε γκίνεται, καρντιά μου! Εδω καλα καλα δεν μπορει να βάλει τον κέρσορα εκει που θες σε text screen!

"Η C είναι παντοδύναμη"!
Το σωστο: Όντως, σου επιτρέπει να κάνεις ό,τι θες με τον ΗΥ... αρκει να ξέρεις το στήσιμο του μηχανήματος! Δεν έχει κανένα απολύτως νόημα να στέλνεις bytes μέσω κώδικα σε C αριστερα και δεξια, αν δεν ξέρεις τί λες και σε ποιο περιφερειακο το λες! (Και σε ποια διεύθυνση του συγκεκριμένου περιφερειακου το λες.)

Αν φτάσεις, όμως, σε τέτοιο σημείο, ήδη ασχολείσαι με assembly! (Άρα, η C περιττη.)

Προσωπικα σου προτείνω ν' ασχοληθεις με Java - φυσικα αν θες να φτιάξεις προγραμματάκια με εικονίτσες, χρωματάκια, και λοιπα ωραία. Η Sun δίνει και βραβείο καναδυο μύρια δολλάρια, αν καταφέρεις να φτιάξεις ιό σε Java! :-)

Αν θες ενασχόληση με system software, μάθε καλα assembly!

Τώρα για τη C++, πολλοι λένε πως ακόμη δεν φτιάχτηκε ο 100% ικανοποιητικος C++ compiler. Τί να σου πω... Ψάξε για άρθρα πχ στο Sourceforge, να δεις τί παίζει.

Τέλος, η C καθιστα σχεδον απαγορευτικο το να φτιάξεις παραθυρικα προγράμματα. Γιατί; Διότι σε περιμένουν ακόμη δύο σετ εντολων! Του Motif και του περιβάλλοντος που θα διαλέξεις (πχ KDE)!

Αν επιμένεις, καλη υπομονη και καλη τύχη!

Το να μάθει κανεις C για εκπαιδευτικους σκοπους, εντάξει. Ίσως είναι το μόνο καλο μιας γλώσσας 28 ετων.

Παράθεσητο Linux/Unix είναι ακόμα σε C

Ναι, έ; Να με συμαπαθας, αλλα αμφιβάλλω αν είδες ποτε σου κώδικα Linux kernel!

Ειδικα το Linux για τα πισιά (που είχα την περιέργεια και την υπομονη να το ψάξω) είναι ΚΑΙ σε C! :-)

Αυτο το "και" είναι που κάνει τη διαφορα!... Ο κώδικας του πυρήνα είναι (περίπου) 60% assembly 80x86, 35% C και τα ρέστα C++.

Ασπασμους! Καλο Σ/Κ!
3 και η τρέχουσα μείνανε! (Ολυμπιάδες μέχρι τη σύνταξη.)

pgrontas

Προσωπικά ποτέ δεν με ξετρέλανε η C.
Πάντα προτιμούσα γλώσσες πιο εκφραστικές, να το πούμε, στις οποίες η ανάγνωση κώδικα είναι πιο φυσική και δεν χρειάζεται να αποκρυπτογραφήσεις τον κώδικα.
Συμφωνώ δηλαδή με την ρήση των Sussman - Abelson (http://mitpress.mit.edu/sicp/), ότι ένα πρόγραμμα είναι η τεκμηριωση για την λύση ενός προβλήματος και μόνο συγκυριακά εκτελείται στον υπολογιστή. Κατά συνέπεια η γλώσσα προγραμματισμού πρέπει να εκφράζει όσο καλύτερα γίνεται τα βήματα της λύσης.

ΑΛΛΑ

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

Έτσι για τροφή για σκέψη και συζήτηση παραθέτω τα παρακάτω links:
http://www.joelonsoftware.com/articles/LeakyAbstractions.html
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

evry

  Δεν είπε κανείς ότι αν θες να φτιάξεις κάτι εύκολα και γρήγορα θα το κάνεις σε C. Προφανώς θα επιλέξεις κάτι πιο απλό. Αυτό όμως που ισχύει είναι ότι σε C κάνεις τα πάντα, άλλες φορές εύκολα και άλλες φορές δύσκολα.
  Το σημαντικό όμως είναι η εκπαιδευτική της αξία για έναν φοιτητή πληροφορικής. Οι γνώσεις που θα πάρει από την ενασχόλησή του με τη C θα είναι τόσο ποσοτικά όσο και ποιοτικά ανώτερες από τις περισσότερες "δημοφιλείς" γλώσσες προγραμματισμού. Φυσικά θα είναι δύσκολα αλλά η γνώση δεν κατακτιέται εύκολα. Απόδειξη αυτού είναι ότι ένας που ξέρει C++ μπορεί να μάθει Java σε μια εβδομάδα (παραπάνω δεν του δίνω) ενώ ένας που ξεκίνησε με Java θα μάθει (αν μάθει ποτέ) πολύ δύσκολα καλά  C++. Αυτό είναι λογικό γιατί ενώ η μια γλώσσα σε παίρνει από το χεράκι και τα κάνει όλα για σένα, στην άλλη εσύ έχεις τον πλήρη έλεγχο, για να μην μιλήσω πιο συγκεκριμένα για δείκτες μνήμη κλπ. Φυσικά και στη Java υπάρχει το μήνυμα "Null Pointer exception" αλλά αυτό είναι μια άλλη ιστορία

Παράθεση
Πχ:
"Η C είναι γλώσσα ανωτέρου επιπέδου"!
Το σωστο: Είναι λίγο παραπάνω απο την assembly, ίσως η μοναδικη υπάρχουσα γλώσσα μέσου επιπέδου. "Ανωτέρου επιπέδου" με -μετρημένες- μόλις 28 εντολες (κατα ANSI) ντε γκίνεται, καρντιά μου! Εδω καλα καλα δεν μπορει να βάλει τον κέρσορα εκει που θες σε text screen!
δηλαδή το κριτήριό σου για μια γλώσσα προγραμματισμού είναι αν μπορεί να βάλει τον κέρσορα στην οθόνη? Μάλλον συγχέεις τις εντολές της γλώσσας προγραμματισμού με τις βιβλιοθήκες που έρχονται μαζί με τη γλώσσα. Αλλά μια και αναφέρεις τη Java για πες μας ποια εντολή της γλώσσας βάζει τον κέρσορα στην οθόνη?
Άσε μην το ψάχνεις γιατί δεν υπάρχει, η γλώσσα δεν έχει τέτοιες εντολές. Και μια και το είπες ότι η C έχει μόνο 28 εντολές αλήθεια η Java πόσες έχει?

Παράθεση
Αν φτάσεις, όμως, σε τέτοιο σημείο, ήδη ασχολείσαι με assembly! (ʼρα, η C περιττη.)
Γιατί ασχολείσαι με assembly, επειδή ο κώδικας της assembly είναι πιο μεταφέρσιμος και ευανάγνωστος?

Παράθεση
Προσωπικα σου προτείνω ν' ασχοληθεις με Java - φυσικα αν θες να φτιάξεις προγραμματάκια με εικονίτσες, χρωματάκια, και λοιπα ωραία.
Μα φυσικά, άλλωστε ειδικά το swing είναι ταχύτατο, μέχρι να ανοίξει ένα παράθυρο φτιάχνεις καφέ (όχι φίλτρου, ελληνικό στη χόβολη)
Για αυτό όσοι φτιάχνουν παιχνίδια το έχουν γυρίσει όλοι στην java.

Παράθεση
Ναι, έ; Να με συμαπαθας, αλλα αμφιβάλλω αν είδες ποτε σου κώδικα Linux kernel!
η αλήθεια είναι ότι δεν έχω δει, παραδέχομαι το λάθος μου δημοσίως

Παράθεση
Ειδικα το Linux για τα πισιά (που είχα την περιέργεια και την υπομονη να το ψάξω) είναι ΚΑΙ σε C! :-)
Αυτο το "και" είναι που κάνει τη διαφορα!... Ο κώδικας του πυρήνα είναι (περίπου) 60% assembly 80x86, 35% C και τα ρέστα C++.
Κοίτα πιστεύω ότι ο Linus Torvalds, ο δημιουργός του Linux έχει αντίθετη άποψη με σένα
Torvalds: Stick to C for kernel coding

Επίσης στην wikipedia στη λέξη Linux Kernel  λέει το παρακάτω
Linux is written in the version of the C programming language supported by GCC (which has introduced a number of extensions and changes to standard C), together with a number of short sections of code written in the assembly language

δηλαδή το μεγαλύτερο μέρος του Linux kernel είναι σε C και κάποια συγκεκριμένα κομμάτια που προφανώς έχουν σχέση με το h/w interface είναι σε Assembly.

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

alkisg

Παράθεση από: gia_desimo στις 19 Δεκ 2008, 10:50:19 ΠΜ
Μήπως προγραμματίζεις εύκολα σε παραθυρικο περιβάλλον με δαύτην;

Με Java ή C# είναι όντως πιο εύκολος ο προγραμματισμός GUI, αλλά για την ώρα η αχανής πλειοψηφία των παραθυρικών προγραμμάτων είναι γραμμένα σε C ή C++.

Παράθεση από: gia_desimo στις 19 Δεκ 2008, 10:50:19 ΠΜ
Ο κώδικας του πυρήνα είναι (περίπου) 60% assembly 80x86, 35% C και τα ρέστα C++.

Σόρρυ αλλά αυτό είναι τελείως λάθος. Παραθέτω το ορθό από εδώ:
ΠαράθεσηAccording to SLOCCount, 96.4 per cent of the code is written in C and 3.3 percent in Assembler.

Αυτά μόνο για τον kernel (επειδή αναφέρθηκε), για το λειτουργικό Gnu/Linux προφανώς τα ποσοστά θα είναι διαφορετικά.

Παράθεση από: gia_desimo στις 19 Δεκ 2008, 10:50:19 ΠΜ
Ασπασμους! Καλο Σ/Κ!

Επίσης! :)

mostel

Να μάθει C για εκπαιδευτικούς σκοπούς και μόνο ;

Σόρυ, αλλά διαφωνώ σε αυτό το point, κάθετα. Δηλαδή εσύ μου λες τώρα ότι η C υπάρχει για μουσειακούς/εκπαιδευτικούς λόγους και μόνο αυτό ;


Το λειτουργικό μου είναι σχεδόν ολόκληρο φτιαγμένο πάνω σε C (fbsd) .


Αν ήταν μόνο για εκπαιδευτικούς σκοπούς και μόνο, πώς εξηγείς, γιατί σχεδόν όλα π.χ. τα exploits (τουλάχιστον σε αυτό τον τομέα το 'χω ψάξει λίγο παραπάνω), είναι κατασκευασμένα πάνω σε C embedded with assembly ?





When you see a good move ; Look for a better one .

evry

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

Απλά στην ελληνική αγορά εργασίας σε πόσες εταιρίες θα γράψεις κώδικα σε καθαρή C? στις περισσότερες θα σου ζητήσουν VB, Java άντε και C#. Και αν σου ζητήσουν C++ θα είναι σίγουρα κάτω από το περιβάλλον του Visual Studio.
   
Παράθεση από: mostel στις 19 Δεκ 2008, 06:28:20 ΜΜ
Να μάθει C για εκπαιδευτικούς σκοπούς και μόνο ;

Σόρυ, αλλά διαφωνώ σε αυτό το point, κάθετα. Δηλαδή εσύ μου λες τώρα ότι η C υπάρχει για μουσειακούς/εκπαιδευτικούς λόγους και μόνο αυτό ;

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

mostel

Παράθεση από: evry στις 19 Δεκ 2008, 06:55:42 ΜΜ
Μάλλον με παρεξήγησες [...]


Δεν αναφερόμουν σε εσένα Evry, αλλά στον gia_desimo. Κακώς που δεν έκανα quoting!
When you see a good move ; Look for a better one .

gia_desimo

Πώπώωω, υποστηρικτες πού 'χει η C!!! :)  :)  :)

Για ν' απαντήσω σ' ένα σημαντικο θέμα:

Για μένα, μια γλώσσα είναι ανωτέρου επιπέδου (α) όταν έχει πάνω απο 100 εντολες και (β) μόνον όταν έχω αποτελέσματα αμέσως. Δηλαδη:

(i) Βρίσκω αμέσως στο εγχειρίδιο τα 4-5 βασικα υποσύνολα εντολων που πρέπει να έχει κάθε γλώσσα ανωτέρου επιπέδου ( (α)για σταθερες-μεταβλητες-πίνακες-μαθηματικες πράξεις, (β) για υπορουτίνες κι έτοιμες συναρτήσεις, (γ) για διαμορφωμένη έξοδο σε οθόνη-εκτυπωτη, (δ) για γράψιμο-διάβασμα αρχείων ).
(ii) Γράφω όσον κώδικα έχω να γράψω.
(iii) Καλω τον compiler (χωρις να μου πολυζαλίζει τον έρωτα με παραμέτρους και τέτοια) κι έχω αποτέλεσμα.

Μ' άλλα λόγια, όταν μπορω να ρίξω -σχετικα- απερίσπαστος τον χρόνο μου και την ενέργειά μου στην υλοποίηση των πραγμάτων που έχω στο μυαλο μου. Κι όχι στο να μάθω (ή να ξοδεύομαι σε βιβλία που μασάνε τα λόγια τους... για ν' αγοράσεις και τον β' τόμο!) πώς θα χαϊδεύω και θα κάνω νταχτιρντί αρχαίους και περιορισμένων δυνατοτήτων compilers, μπας και κάποτε μου κάνουν τη χάρη να δουλέψουν.

Αν, τώρα, είναι να ψάχνω με ποια παράμετρο θα καλέσω τον compiler για να κάνω ...πράξεις με δεκαδικους (βλέπε την αγάπη σας τη C), και ν' αγοράζω πέντε βιβλία των 20-25 ευρών έκαστον για να τη βρω ...στο πέμπτο, άσε!... Ευχαριστω, δεν θα πάρω αρχαιολογίες του 1970 και πάω γι' άλλα! (Μ' όλον τον σεβασμο στους κυρίους Κέρνιγκαν και Ρίτσι, να εξηγούμαστε! Αλλα τα λάθη και οι αδυναμίες πρέπει να φανερώνονται, όχι ν' αποκρύπτονται.)

Όσο για το ποσοστο της C στον πυρήνα του Linux: Κατ' εκτίμηση ήταν αυτο που αναφέρω! Βασικα χρειάζεται ένα προγραμματάκι να μετρήσει επακριβως τις εντολες... αλλα ο γράφων αυτη την εποχη αδυνατει να σκαρώσει τοιούτον τι, διότι ασχολείται με προγραμματισμο ...βρεφικου ταΐσματος!  :)

Τώρα, η Java πόσες εντολες έχει; (Που ρωτάει ο evry.) Μέτρησα πρόχειρα καμια 250αρια. (Απ' το -άθλιο- βιβλίο της Laura Lemay.)

Και με την ευκαιρία, μια που το αρχικο ερώτημα ήταν για βιβλιογραφία: Πιστεύω ότι καλα μαθήματα / καλη τεκμηρίωση για όσα συζητάμε εδω (κυρίως C και Java - ειδικα στη Java το βιβλίο του το θεωρω απαραίτητο) έχει η ιστοσελίδα του Bruce Eckel, εδω: http://www.mindviewinc.com/Index.php
Κάποτε μπορούσες να κατεβάσεις δικα του βιβλία δωρεαν σε pdf, σήμερα δεν ξέρω. Δεν έχετε παρα να δοκιμάσετε!
3 και η τρέχουσα μείνανε! (Ολυμπιάδες μέχρι τη σύνταξη.)

gia_desimo

Και μια που έρχονται διακοπες... τουλάχιστον ο γράφων θα ψιλοχαθει επι 15ήμερον απο προσώπου τερματικων, διότι στο σπίτι έχουν αλλάξει χωροχρονικως τα πάντα, για να βολευτουν τα μωρα! Οπότε, δεν μπορούμε να επικοινωνήσουμε απ' εκει!

Λοιπον, ευχες για ένα καλο 2009! Ό,τι επιθυμείτε, να το βρείτε! Μέχρι και C ανωτέρου επιπέδου, που λέει ο λόγος!  :D

(Για μένα αρκουν 2 μύρια ευρω, για να τα παρατήσω και να κάτσω ...ν' ασχοληθω με τη C με την ησυχία μου!  :) :)  Μη γελάτε, πρόκειται για υπολογισμένα πράγματα! Μένουν καμια 15αρια χρόνια μισθοι απ' το δασκαλίκι, συν -πες- 30 χρόνια ζωη στη σύνταξη, κάνουν χοντρικα ένα μύριο. Συν ακόμη ένα για τη σύζυγο που δεν δουλεύει, δύο. Τα παίρνω προκαταβολικα και παραιτούμαι!)

Ειρήνη στη Γη, ευτυχία, γαλήνη, δημιουργία, και να βάλουν τα γυαλια οι δκοι μας προγραμματιστες στην υπόλοιπη ανθρωπότητα!
3 και η τρέχουσα μείνανε! (Ολυμπιάδες μέχρι τη σύνταξη.)

p-p

“When Kepler found his long-cherished belief did not agree with the most precise observation, he accepted the uncomfortable fact. He preferred the hard truth to his dearest illusions; that is the heart of science.” - Carl Sagan

evry

Παράθεση από: gia_desimo στις 22 Δεκ 2008, 09:41:50 ΠΜ
Πώπώωω, υποστηρικτες πού 'χει η C!!! :)  :)  :)

Παράθεση
Για μένα, μια γλώσσα είναι ανωτέρου επιπέδου (α) όταν έχει πάνω απο 100 εντολες και (β) μόνον όταν έχω αποτελέσματα αμέσως.
Με την Java έχεις αποτελέσματα αμέσως, απλά με τη C έχεις καλύτερα αποτελέσματα

Παράθεση
Όσο για το ποσοστο της C στον πυρήνα του Linux: Κατ' εκτίμηση ήταν αυτο που αναφέρω! Βασικα χρειάζεται ένα προγραμματάκι να μετρήσει επακριβως τις εντολες... αλλα ο γράφων αυτη την εποχη αδυνατει να σκαρώσει τοιούτον τι, διότι ασχολείται με προγραμματισμο ...βρεφικου ταΐσματος!  :)
Τι προγραμματάκι και τι να μετρήσει? Εδώ ο ίδιος ο δημιουργός του Linux λέει ότι το μεγαλύτερο κομμάτι (πάνω από 90%) είναι σε C. Εσύ πως έχεις την εντύπωση ότι είναι σε assembly? Ξέρεις κάτι περισσότερο από τον Linus Torvalds?

Παράθεση
Τώρα, η Java πόσες εντολες έχει; (Που ρωτάει ο evry.) Μέτρησα πρόχειρα καμια 250αρια. (Απ' το -άθλιο- βιβλίο της Laura Lemay.)
οκ, για αυτό σε ρώτησα, γιατί υποψιαζόμουν ότι συγχέεις τη γλώσσα με τις βιβλιοθήκες της. Στην πραγματικότητα η Java είναι πολύ πιο φτωχή γλώσσα από τη C++. Η διαφορά είναι στις βιβλιοθήκες και στην τεκμηρίωση του API που είναι πράγματι πολύ καλή.
  Εσύ προφανώς θεώρησες ότι και οι βιβλιοθήκες γραφικής διεπαφής, io streams κλπ είναι μέσα στην γλώσσα. Όταν μιλάμε για τις εντολές της γλώσσας μιλάμε μόνο για αυτές που υπάρχουν στο specification. Αν είναι έτσι να βάλουμε στη C++ και όλες τις βιβλιοθήκες της μαζί με QT κλπ να δεις πόσες εντολές θα βγουν.


What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

tzorvas

Ευχαριστώ για τη βοήθεια παιδιά :)

Ευρυπίδη θα αγοράσω και το δεύτερο τίτλο..

Προσωπικά στους pointers θέλω πολύωρη εξάσκηση ακόμη..

Προσωπικά πιστεύω πως δεν είναι περιττό το να μάθεις C..

Το γιατί είναι πολύπλοκο και δεν μπορώ να το αναλύσω τώρα :)

Συνεχίστε τις συζητήσεις.. Καλά Χριστούγεννα να έχουμε όλοι :)

Make World Better for all!

Τελειόφητος του 2ου Ε.Λ.Χαλκίδας

Προπτυχιακός Φοιτητής @ ICSD-University of the Aegean