Προτάσεις για βιβλία 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