Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 01 Ιούλ 2012, 00:27

stamatiou έγραψε:Χμμμ, επειδη σκεφτομαι να μετακομισω στη C++, εσυ τι θα προτεινες; Δλδ που υπερισχυει η μια εναντι της αλλης;

Η C++ είναι υπερσύνολο της C. Αν πας σε C++ φρόντισε να διαβάσεις από σύγχρονο βιβλίο που να καλύπτει την τελευταία αναθεώρση (C++11) και προσπάθησε εξαρχής να αποβάλλεις τη λογική της C.

Δηλαδή, ετσίασε εξαρχής στα C++ specific features (αλλιώς κινδυνεύεις να προστεθείς κι εσύ σε ένα πολύ μεγάλο μερίδιο προγραμματιστούν που ουσιαστικά γράφουν C σε περιβάλλον C++, αφήνοντας ανεκμετάλλευτες τις έξτρα δυνατότητες της C++... απλως προετοιμάσου για περίπου 10πλάσια ποσότητα πραγμάτων που θα έχεις να μάθεις, συγκριτικά με την C).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό stamatiou » 01 Ιούλ 2012, 00:36

Έτσι θα ξεχάσω τη C;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 01 Ιούλ 2012, 00:46

stamatiou έγραψε:Έτσι θα ξεχάσω τη C;

Εξαρτάται από το πόσο καλά την έχεις εμπεδώσει.

Για μένα πάντως είναι καλύτερα από C να πας σε Java, ώστε να μάθεις απερίσπαστος αντικειμνοστρέφεια.

Η C++ είναι και αντικειμενοστρεφής, και διαδικαστική και πολλά ακόμα... είναι ας το πούμε ένας "αχταρμάς" στον οποίον είναι πολύ εύκολο να χαθείς αν δεν έχεις πρώτα ξεκαθαρίσει τις βασικές έννοιες. Αν τις έχεις ξεκαθαρίσει, τότε η C++ είναι πολύ ισχυρό εργαλείο, γιατί θα μπορείς να επιλέγεις συνειδητά που & πως θα χρησιμοποιήσεις τι και γιατί.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό stamatiou » 01 Ιούλ 2012, 11:56

Δλδ προτείνεις πριν μαθω C++ να μαθω καλή Java;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό pc_magas » 01 Ιούλ 2012, 12:54

Αναλόγως ξέρεις C καλό είναι να πας σε C++. Όπου και να πας το ίδιο είναι άπαξ και μάθεις την ιδέα της αντικειμενοστρέφειας πας παντού.
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2598
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό stamatiou » 01 Ιούλ 2012, 13:34

Off topic:
Μήπως μπορεί κάποιος να μου εξηγήσει τι ακριβώς είναι τα streams και τα buffers;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό giannosfor » 01 Ιούλ 2012, 15:25

Ωραία ερώτηση ίσως κάποιος να σου απαντήσει καλύτερα αλλά είπα να προσπαθήσω.

Buffer είναι ένα κομμάτι μνήμης που χρησιμοποιούμε ώστε να μην έχουμε πολλές "δοσοληψίες" με το δίσκο όπως είπε εύστοχα κάποιος.
Είναι προτιμότερο να διαβάσεις 1024Βytes κάθε φορά από το δίσκο και να τα διαχειρίζεσαι όπως θες εσύ παρα να διαβάζεις το καθένα ξεχωριστά.
Σκέψου αντί να μεταφέρεις ένα πιάτο κάθε φορά παίρνει ένα δίσκο και μεταφέρεις περισσότερα.

Stream είναι μία διαδρομή από bits μία πληροφορία που μεταφέρεται από κάποιον που δέχεται να δώσει πληροφορία σε αυτός που ανοίγει τη διαδρομή.
Συνήθως (θα έλεγα πάντα αλλά δε παίρνω και όρκο ) κάθε stream είναι μονόδρομο και θα πρέπει να ανοιχτούν δύο streams δύο κανάλια επικοινωνίας
αν θέλουμε να είναι αμφίδρομο. Όταν θες να διαβάσεις ένα αρχείο ανοίγεις ένα stream ή όταν κάνεις σύνδεση με ένα server πχ κατεβάζεις ένα βίντεο.
Τελευταία επεξεργασία από giannosfor και 02 Ιούλ 2012, 18:16, έχει επεξεργασθεί 1 φορά/ες συνολικά
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό stamatiou » 01 Ιούλ 2012, 15:42

Και όταν καλούμε πχ. την printf, πότε αδειάζει το buffer για να τυπωθούν τα ορίσματα;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό stamatiou » 02 Ιούλ 2012, 13:30

stamatiou έγραψε:Και όταν καλούμε πχ. την printf, πότε αδειάζει το buffer για να τυπωθούν τα ορίσματα;

Οκ,σύμφωνα με αυτό εδώ υπάρχουν 3 τύποι buffer:http://www.cplusplus.com/reference/clibrary/cstdio/setvbuf/ Επίσης αν θυμάμαι καλά, στο C Programming A Modern Approach, λέει ότι το default είναι το Line Buffering και πως το μέγεθος εξαρτάται από λειτουργικό σε λειτουργικό. Πήγα να το ψάξω αλλά δεν το βρήκα στα περιεχόμενα :P
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό stamatiou » 02 Ιούλ 2012, 13:38

Στο C Programming Language, στο κεφάλαιο για το Unix, λέει πως η open παίρνει και τρίτο όρισμα που λέγεται perms ενώ εδώ δεν υπάρχει: http://rabbit.eng.miami.edu/info/functions/unixio.html
Επίσης αν στο oflag βάλω O_WRONLY δεν επιτρέπεται το read; Επίσης αν βάλω O_RDWR τότε αν πάω να γράψω θα διαγραφούν όλα τα περιεχόμενα πριν το γράψιμο; Επίσης γιατί υάρχει επιλογή O_CREATE ενώ υπάρχει η συνάρτηση creat;
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι